Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.227.69] |
|
Страницы: (6) [1] 2 3 ... 5 6 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Помогите!!! начал разбираться с работой с ком портами попал в руки прибор который работает по протоколу ModBus RTU. настряпал вот такую програмку но она не работает!!!
Я так и не могу прочитать данных с порта помогите плиз!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! исходник на билдере здесь: vortekc.narod.ru/MyModBus.zip или может кто знает фриварный компонент для работы с ModBus |
Сообщ.
#2
,
|
|
|
В чем его(ModBus'а) основные особенности?
|
Сообщ.
#3
,
|
|
|
Пример команды чтения 4 канала второй страницы (10 канал, 9 адрес) побайтно:
адрес устр,4,0,9,0,1,CRCL,CRCH . адрес устр,команд чтения, колличество байт2, DATAH,DATAL,CRCL,CRCH Чтение ведётся не более 6 регыстров за 1 раз Всё это в RTU формате. Помогите разобратся. Заранее признателен Александр |
Сообщ.
#4
,
|
|
|
Я не об этом. В чем сложность реализации?
Сколько регистров и каков порядок байтов в слове - значения не имеет. |
Сообщ.
#5
,
|
|
|
trainer
Исходник на билдере здесь: vortekc.narod.ru/MyModBus.zip Sori, архив был повреждён (исправлен) Может есть компоненты ModBus под Делфи или Билдер Не могу записать в порт . Если есть пример буду признателен. Александр. |
Сообщ.
#6
,
|
|
|
Сегодня или завтра подготовлю публичную версию своей DLL для работы с COM-портом и выложу гле-нибудь.
|
Сообщ.
#7
,
|
|
|
Буду очень признателен.
Сообщи мне где выложиш. Удачи. Александр |
Сообщ.
#8
,
|
|
|
Да прямо здесь и выложу.
Архив WinRAR 2.90 ----------------- Пардоньте, забыл вписать коды ошибок. Вложен новый файл. Прикреплённый файлTrComPort.rar (28.46 Кбайт, скачиваний: 8198) |
Сообщ.
#9
,
|
|
|
ОК. Скачал, огромное спасибо.
Коментарии принимаются? Если да то немножко попозже. Удачи. Александр. |
Сообщ.
#10
,
|
|||
|
Непременно
|
Сообщ.
#11
,
|
|
|
Спасибо всё работает. Замечаний оссобых нет кроме нескольких опечаток в ReadMe.txt в примерах на С++ там пару констант немножко не так обозвал Но это не очень важно А так всё работает!!! Может что поже вылезет тогда сообщу
Да, ты случайно не знаешь как мне быть с такой проблемкой: я вот получаю массив с ответом от прибора, но нужнные данные только два элемента скажем 3 и 4. Тоесть 3 это младший байт слова а 4 соответственно старший. Вот как мне их склеить и получить число записанное этими двумя байтами? Зарание спасибо!!!! |
Сообщ.
#12
,
|
|||
|
Ну это вариантов много, например: BYTE buffer[n]; WORD value = *((WORD *)(buffer+2));// это если считать как все нормальные люди(3-ий - это смещение 2) Добавлено в
Я его на скорую руку писАл.
|
Сообщ.
#13
,
|
|
|
Может это и ламерский вопрос но всё же: почему в результате ниже следующей операции компилятор мне выдаёт значение value = 58369 вместо нужных 484?
buff[0]=0x1; buff[1]=0xE4; WORD value =*((WORD *) (buff)); |
Сообщ.
#14
,
|
|||||
|
Потому, что порядок не тот. Не:
А наоборот: 3 - старший, 4-младший .
Тогда:WORD value = ((byte[2]<<8)|byte[3])&0xffff; |
Сообщ.
#15
,
|
|
|
Спасибо, но я тут сам немножко подумал и решил зделать с помошью асма
mov ah,rd_buffer[3]; mov al,rd_buffer[4; mov Chislo,ax; Ну вот теперь у меня вроде всё работает, но есть проблемка я же всёравно не понимаю как оно доконца работает. Поделись пожалуйста исходниками своей библиотеки. Уж очень разобраться охота. Зарание благодарен Саша! |