Страница 2 из 2

Re: Отправить HEX файл с Com порта в среде Delphi

Добавлено: Вт янв 07, 2014 16:10:00
elektrik26rus
попробую изложить иначе, выдержка из документа, широковещательный запрос наличия кнтролеров в сети, далее следует таблица такого вида 10H 02H 04H 10H 03H (контрольная сумма 1 байт)

собственно сам документ

Re: Отправить HEX файл с Com порта в среде Delphi

Добавлено: Вт янв 07, 2014 16:23:03
Мурик
Там ясно написано что данные передаются в двоичном коде, а не в строковом.
Примечание: * Все виды обмена в сети "Транзит" осуществляются в двоичном коде. В связи с этим возможно появления кода 10Н в тексте сообщения. Чтобы исключить неправильное толкование кода 10Н (как авторегистра), вместо 1 байта 10H, передаются 2 байта 10Н, 10Н. При приеме один из данных байтов отбрасывается (т.е. такая двухбайтовая комбинация трактуется как 1 байт).
Поэтому вам нужно отправлять не строки, а бинарные данные.
Контрольная сума вычисляется скорее всего по алгоритму CRC8, но могут быть и другие варианты.

Re: Отправить HEX файл с Com порта в среде Delphi

Добавлено: Пт янв 17, 2014 13:52:54
Alexeyslav
Вам нужно забыть про функции WriteStr и ReadStr вместо них использовать WriteBuff и ReadBuff - именно они работают с двоичными данными. И в дальнейшем интерпретировать данные НЕ КАК СИМВОЛЫ, а исключительно как числа размерностью в байт - именно ими оперирует СОМ-порт. Так уж совпало, что символы раньше совпадали с размерностью байта, но сейчас это уже не так и возможен целый спектр проблем когда вы пытаетесь оперировать с байтами как со строками.

И еще одно немаловажное замечание. По поводу написания чисел - в программистской практике сложилось так что 16-ричные числа пишутся в форме например 0x2A, если записать число как 0b00101010 - это будет двоичное представление числа 42. Эту же форму представления прекрасно "хавает" процедура преобразования строки в число.

Когда начнёте наконец рассматривать передаваемые данные как числа, то множество вопросов отпадут сами собой.

Re: Отправить HEX файл с Com порта в среде Delphi

Добавлено: Пн фев 17, 2014 21:59:32
O_l_e_g
существует функция CreateFile (win API) позволяет открывать не только файлы но и устройства. В дальнейшем с данным устройством работа ведется как с открытым файлом