попробую изложить иначе, выдержка из документа, широковещательный запрос наличия кнтролеров в сети, далее следует таблица такого вида 10H 02H 04H 10H 03H (контрольная сумма 1 байт)
собственно сам документ
Отправить HEX файл с Com порта в среде Delphi
-
elektrik26rus
- Родился
- Сообщения: 3
- Зарегистрирован: Вс янв 05, 2014 08:43:03
Re: Отправить HEX файл с Com порта в среде Delphi
- Вложения
-
- Tranzit.doc
- (180.5 КБ) 437 скачиваний
- Реклама
Re: Отправить HEX файл с Com порта в среде Delphi
Там ясно написано что данные передаются в двоичном коде, а не в строковом.
Контрольная сума вычисляется скорее всего по алгоритму CRC8, но могут быть и другие варианты.
Поэтому вам нужно отправлять не строки, а бинарные данные.Примечание: * Все виды обмена в сети "Транзит" осуществляются в двоичном коде. В связи с этим возможно появления кода 10Н в тексте сообщения. Чтобы исключить неправильное толкование кода 10Н (как авторегистра), вместо 1 байта 10H, передаются 2 байта 10Н, 10Н. При приеме один из данных байтов отбрасывается (т.е. такая двухбайтовая комбинация трактуется как 1 байт).
Контрольная сума вычисляется скорее всего по алгоритму CRC8, но могут быть и другие варианты.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Отправить HEX файл с Com порта в среде Delphi
Вам нужно забыть про функции WriteStr и ReadStr вместо них использовать WriteBuff и ReadBuff - именно они работают с двоичными данными. И в дальнейшем интерпретировать данные НЕ КАК СИМВОЛЫ, а исключительно как числа размерностью в байт - именно ими оперирует СОМ-порт. Так уж совпало, что символы раньше совпадали с размерностью байта, но сейчас это уже не так и возможен целый спектр проблем когда вы пытаетесь оперировать с байтами как со строками.
И еще одно немаловажное замечание. По поводу написания чисел - в программистской практике сложилось так что 16-ричные числа пишутся в форме например 0x2A, если записать число как 0b00101010 - это будет двоичное представление числа 42. Эту же форму представления прекрасно "хавает" процедура преобразования строки в число.
Когда начнёте наконец рассматривать передаваемые данные как числа, то множество вопросов отпадут сами собой.
И еще одно немаловажное замечание. По поводу написания чисел - в программистской практике сложилось так что 16-ричные числа пишутся в форме например 0x2A, если записать число как 0b00101010 - это будет двоичное представление числа 42. Эту же форму представления прекрасно "хавает" процедура преобразования строки в число.
Когда начнёте наконец рассматривать передаваемые данные как числа, то множество вопросов отпадут сами собой.
Re: Отправить HEX файл с Com порта в среде Delphi
существует функция CreateFile (win API) позволяет открывать не только файлы но и устройства. В дальнейшем с данным устройством работа ведется как с открытым файлом

