Страница 1 из 2
Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 19:24:55
krant
Итак, товарисчи, столкнулся с неоднозначной проблеммой: Надо через ком порт посылать байты в хексе. Дело в том, что через библиотеку Cport он может слать строку в ком порт, но шлёт он её весело, в Ascii кодировке, а мне нужно в хексовых байтах. Произвёл изврат, конвертнул в хекс, но есть одна незадача, Стартовый бит 0x10 (16 в десятичной), а в кодировке AScii это команда Syn (по образцу 72 года который не менялся по нынешний день). Вопрос, как выжать этот стартовый бит из всей кучи ?
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 19:40:05
lix
а что такое хексовые байты?
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 19:44:51
krant
3E F2 1A и т.д.
в Ascii он тупо рисует строку в ком.порт
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 19:48:48
lix
а Вам надо чтобы просто байты передавались без всяких преобразований?
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 20:02:55
Bullet
В ком порт данные шлются в хексе без всяких проблем, а в аски их преобразует уже сам терминал и выводит на экран в виде букв. Если уж капнуть чуть глубже, то данные передаются в бинарном виде, так что смело отправляй свой хекс в ком порт.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 20:05:08
vanili
Ну, COM порту глубоко всё равно, что Вы посылаете : HEX, ASCII, DEC и т.д. для него это в сущности последовательность сигналов, так что HEX или ASCII - это только програмные преобразования, порт послыает всё равно одно и то же. Если у вас цель просто посылать 8-битные байты, то попробуйте использовать класс FPort (вообще описан у Агурова, но можно посмотреть здесь
http://kladovka.net.ru/delphibase/?acti ... m&id=10452). Там в процедуру записи в порт в качестве параметров передаётся массив байт, а представить их в HEX в интерфейсе, думаю, не проблема.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 20:18:21
lix
если вы используете
эту библиотеку, то используйте метод write для записи в порт.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 20:48:55
krant
использую именно Cport.
У меня вопрос, отсылать строку в каком виде:
{E1 2F AA;}
{E12FAA;}
{
E1;
2F;
AA;
}
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 21:13:47
Bullet
Вот как делал я:
Код: Выделить всё
BComPort1.WriteStr(Chr($80)+Chr(35)+Chr(100));
в таоем случае будет :
Код: Выделить всё
BComPort1.WriteStr(Chr($E1)+Chr($2F)+Chr($AA));
Если нужна сама библиотека BComPort могу выслать.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн май 17, 2010 21:21:39
ploop
Посмотрел его исходники.
В чём проблема то? Надо отправить в порт именно строку (уйдут коды символов) - используй метод WriteStr, если именно сами байты - метод Write.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вт май 18, 2010 05:30:17
lix
krant писал(а):У меня вопрос, отсылать строку в каком виде:
{E1 2F AA;}
{E12FAA;}
{
E1;
2F;
AA;
}
отсылать в таком виде, в котором ее будет удобнее обрабатывать в приемнике
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вт май 18, 2010 07:53:47
ploop
E1 2F AA - это что? это символы "E", "1", ... или это числа 225, 47, 170?
Чувствую, что второе. Тогда загоняйте их в буфер и используйте метод Write. Не знаете как - спрашивайте конкретней, откуда они берутся и т.д.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вт май 18, 2010 11:32:04
krant
Спасибо всем котам, заработало. Отдельное спасибо Bullet'у за предооставленный кусочек живого кода.
Код: Выделить всё
Var
testMessage: array[1..10] of byte=($10,$27,$5D,$DE,$00,$00,$00,$5A,$10,$FE);
/////////////
ComPort1.Open;
for K:=1 to 10 do
ComPort1.WriteStr(Chr(testMessage[K]));
Библиотека CPort 3.1 , всё супер, команды проходят.

Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вт май 18, 2010 11:47:30
ploop
Эмм.. А не проще так:
Код: Выделить всё
ComPort1.Write(@testMessage, Length(testMessage));
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вт май 18, 2010 17:31:57
krant
Завтра попробую на работе, сейчас железа под рукой нету.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вс янв 05, 2014 09:28:44
elektrik26rus
здраствуйте товарисчи коты есть у меня такая задачка нужно послать запрос через ком порт контролеру и получить от него ответ полученый ответ вывести на экран а именно послать запрос такого вида 10H 02H (текст сообщения нез наю что должно быть сдесь но думаю что 04H) 10H 03H (здесь контрольная суммачто это я тоже не знаю) в ответ на данный запрос должен придти ответ такого вида 10H 02H 04H(2 байта данных с номерами присутствующих в сети контролеров)10H 03H(и всё таже контрольная сумма) дело в том что с паяльником я знаком достаточно а вот в програмировании не силён задача такова есть 15 контролеров обьеденённых в локальную кольцевую сеть транзит по стандарту ирпс соорудил устройство которое преобразует сигналы ирпс в rs-232 хочу написать маленькую програмку для общения пк с сетью транзит
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн янв 06, 2014 12:34:39
Jack_A
Постановка задачи интересная : я не знаю, что должно передаваться и приходить в ответ, так что напишите мне прогу, которая будет знать это вместо меня. Задача для телепатов в ранге не ниже магистра. И ещё : не приходилось видеть клавиатуру, на которой, как у автора, отсутствуют знаки препинания.
В общем, задачка на вынос мозга.
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Пн янв 06, 2014 20:45:34
Alkul
elektrik26rus писал(а):хочу написать маленькую програмку для общения пк с сетью транзит
Так пишите. В чем проблема-то?
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вт янв 07, 2014 15:20:44
elektrik26rus
в том и проблема, как hex а точнее в каком виде послать в порт, в ответ приходят данные всё в томже формате, к примеру при нажатии кнопки строка с хекс кодом отправляется контролеру,в свою очередь контролер оправляет ответ, как этот ответ преобразовать в понятный вид например контролер передал сетевой номер 2, который отобразится в поле выбора, я не пытаюсь когото просить писать мне прогу в том то и дело хочу сам понять как это делать, но без помощи знающих людей никак не обойтись
Re: Отправить HEX файл с Com порта в среде Delphi
Добавлено: Вт янв 07, 2014 15:55:08
Мурик
elektrik26rus писал(а):строка с хекс кодом отправляется контролеру
Точно ли строка?
Скорее всего отправляются бинарные данные, а не строковые. Но это нужно уточнить.