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

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
elektrik26rus
Родился
Сообщения: 3
Зарегистрирован: Вс янв 05, 2014 08:43:03

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

Сообщение elektrik26rus »

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

собственно сам документ
Вложения
Tranzit.doc
(180.5 КБ) 437 скачиваний
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Там ясно написано что данные передаются в двоичном коде, а не в строковом.
Примечание: * Все виды обмена в сети "Транзит" осуществляются в двоичном коде. В связи с этим возможно появления кода 10Н в тексте сообщения. Чтобы исключить неправильное толкование кода 10Н (как авторегистра), вместо 1 байта 10H, передаются 2 байта 10Н, 10Н. При приеме один из данных байтов отбрасывается (т.е. такая двухбайтовая комбинация трактуется как 1 байт).
Поэтому вам нужно отправлять не строки, а бинарные данные.
Контрольная сума вычисляется скорее всего по алгоритму CRC8, но могут быть и другие варианты.
Реклама
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

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

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

Когда начнёте наконец рассматривать передаваемые данные как числа, то множество вопросов отпадут сами собой.
O_l_e_g
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт дек 27, 2011 01:13:21

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

Сообщение O_l_e_g »

существует функция CreateFile (win API) позволяет открывать не только файлы но и устройства. В дальнейшем с данным устройством работа ведется как с открытым файлом
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Интеграция с ПК»