Отправить HEX файл с Com порта в среде Delphi
Отправить HEX файл с Com порта в среде Delphi
Итак, товарисчи, столкнулся с неоднозначной проблеммой: Надо через ком порт посылать байты в хексе. Дело в том, что через библиотеку Cport он может слать строку в ком порт, но шлёт он её весело, в Ascii кодировке, а мне нужно в хексовых байтах. Произвёл изврат, конвертнул в хекс, но есть одна незадача, Стартовый бит 0x10 (16 в десятичной), а в кодировке AScii это команда Syn (по образцу 72 года который не менялся по нынешний день). Вопрос, как выжать этот стартовый бит из всей кучи ?
- Реклама
Re: Отправить HEX файл с Com порта в среде Delphi
а что такое хексовые байты?
Re: Отправить HEX файл с Com порта в среде Delphi
3E F2 1A и т.д.
в Ascii он тупо рисует строку в ком.порт
в Ascii он тупо рисует строку в ком.порт
Re: Отправить HEX файл с Com порта в среде Delphi
а Вам надо чтобы просто байты передавались без всяких преобразований?
Re: Отправить HEX файл с Com порта в среде Delphi
В ком порт данные шлются в хексе без всяких проблем, а в аски их преобразует уже сам терминал и выводит на экран в виде букв. Если уж капнуть чуть глубже, то данные передаются в бинарном виде, так что смело отправляй свой хекс в ком порт.
- Реклама
Re: Отправить HEX файл с Com порта в среде Delphi
Ну, COM порту глубоко всё равно, что Вы посылаете : HEX, ASCII, DEC и т.д. для него это в сущности последовательность сигналов, так что HEX или ASCII - это только програмные преобразования, порт послыает всё равно одно и то же. Если у вас цель просто посылать 8-битные байты, то попробуйте использовать класс FPort (вообще описан у Агурова, но можно посмотреть здесь http://kladovka.net.ru/delphibase/?acti ... m&id=10452). Там в процедуру записи в порт в качестве параметров передаётся массив байт, а представить их в HEX в интерфейсе, думаю, не проблема.
If it was so, it might be; and if it were so, it would be; but as it isn't, it ain't. That's logic.
Re: Отправить HEX файл с Com порта в среде Delphi
если вы используете эту библиотеку, то используйте метод write для записи в порт.
Re: Отправить HEX файл с Com порта в среде Delphi
использую именно Cport.
У меня вопрос, отсылать строку в каком виде:
{E1 2F AA;}
{E12FAA;}
{
E1;
2F;
AA;
}
У меня вопрос, отсылать строку в каком виде:
{E1 2F AA;}
{E12FAA;}
{
E1;
2F;
AA;
}
Re: Отправить HEX файл с Com порта в среде Delphi
Вот как делал я:
в таоем случае будет :
Если нужна сама библиотека BComPort могу выслать.
Код: Выделить всё
BComPort1.WriteStr(Chr($80)+Chr(35)+Chr(100));в таоем случае будет :
Код: Выделить всё
BComPort1.WriteStr(Chr($E1)+Chr($2F)+Chr($AA));Если нужна сама библиотека BComPort могу выслать.
Re: Отправить HEX файл с Com порта в среде Delphi
Посмотрел его исходники.
В чём проблема то? Надо отправить в порт именно строку (уйдут коды символов) - используй метод WriteStr, если именно сами байты - метод Write.
В чём проблема то? Надо отправить в порт именно строку (уйдут коды символов) - используй метод WriteStr, если именно сами байты - метод Write.
Re: Отправить HEX файл с Com порта в среде Delphi
krant писал(а):У меня вопрос, отсылать строку в каком виде:
{E1 2F AA;}
{E12FAA;}
{
E1;
2F;
AA;
}
отсылать в таком виде, в котором ее будет удобнее обрабатывать в приемнике
Re: Отправить HEX файл с Com порта в среде Delphi
E1 2F AA - это что? это символы "E", "1", ... или это числа 225, 47, 170?
Чувствую, что второе. Тогда загоняйте их в буфер и используйте метод Write. Не знаете как - спрашивайте конкретней, откуда они берутся и т.д.
Чувствую, что второе. Тогда загоняйте их в буфер и используйте метод Write. Не знаете как - спрашивайте конкретней, откуда они берутся и т.д.
Re: Отправить HEX файл с Com порта в среде Delphi
Спасибо всем котам, заработало. Отдельное спасибо Bullet'у за предооставленный кусочек живого кода.
Библиотека CPort 3.1 , всё супер, команды проходят.
Код: Выделить всё
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
Эмм.. А не проще так:
Код: Выделить всё
ComPort1.Write(@testMessage, Length(testMessage));Re: Отправить HEX файл с Com порта в среде Delphi
Завтра попробую на работе, сейчас железа под рукой нету.
-
elektrik26rus
- Родился
- Сообщения: 3
- Зарегистрирован: Вс янв 05, 2014 08:43:03
Re: Отправить HEX файл с Com порта в среде Delphi
здраствуйте товарисчи коты есть у меня такая задачка нужно послать запрос через ком порт контролеру и получить от него ответ полученый ответ вывести на экран а именно послать запрос такого вида 10H 02H (текст сообщения нез наю что должно быть сдесь но думаю что 04H) 10H 03H (здесь контрольная суммачто это я тоже не знаю) в ответ на данный запрос должен придти ответ такого вида 10H 02H 04H(2 байта данных с номерами присутствующих в сети контролеров)10H 03H(и всё таже контрольная сумма) дело в том что с паяльником я знаком достаточно а вот в програмировании не силён задача такова есть 15 контролеров обьеденённых в локальную кольцевую сеть транзит по стандарту ирпс соорудил устройство которое преобразует сигналы ирпс в rs-232 хочу написать маленькую програмку для общения пк с сетью транзит
Re: Отправить HEX файл с Com порта в среде Delphi
Постановка задачи интересная : я не знаю, что должно передаваться и приходить в ответ, так что напишите мне прогу, которая будет знать это вместо меня. Задача для телепатов в ранге не ниже магистра. И ещё : не приходилось видеть клавиатуру, на которой, как у автора, отсутствуют знаки препинания.
В общем, задачка на вынос мозга.
В общем, задачка на вынос мозга.
-
Alkul
- Держит паяльник хвостом
- Сообщения: 933
- Зарегистрирован: Ср апр 13, 2011 11:09:20
- Откуда: Екатеринбург
Re: Отправить HEX файл с Com порта в среде Delphi
Так пишите. В чем проблема-то?elektrik26rus писал(а):хочу написать маленькую програмку для общения пк с сетью транзит
-
elektrik26rus
- Родился
- Сообщения: 3
- Зарегистрирован: Вс янв 05, 2014 08:43:03
Re: Отправить HEX файл с Com порта в среде Delphi
в том и проблема, как hex а точнее в каком виде послать в порт, в ответ приходят данные всё в томже формате, к примеру при нажатии кнопки строка с хекс кодом отправляется контролеру,в свою очередь контролер оправляет ответ, как этот ответ преобразовать в понятный вид например контролер передал сетевой номер 2, который отобразится в поле выбора, я не пытаюсь когото просить писать мне прогу в том то и дело хочу сам понять как это делать, но без помощи знающих людей никак не обойтись
Re: Отправить HEX файл с Com порта в среде Delphi
Точно ли строка?elektrik26rus писал(а):строка с хекс кодом отправляется контролеру
Скорее всего отправляются бинарные данные, а не строковые. Но это нужно уточнить.


