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

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
krant
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

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

Сообщение krant »

Итак, товарисчи, столкнулся с неоднозначной проблеммой: Надо через ком порт посылать байты в хексе. Дело в том, что через библиотеку Cport он может слать строку в ком порт, но шлёт он её весело, в Ascii кодировке, а мне нужно в хексовых байтах. Произвёл изврат, конвертнул в хекс, но есть одна незадача, Стартовый бит 0x10 (16 в десятичной), а в кодировке AScii это команда Syn (по образцу 72 года который не менялся по нынешний день). Вопрос, как выжать этот стартовый бит из всей кучи ?
Реклама
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

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

Сообщение lix »

а что такое хексовые байты?
Реклама
krant
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

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

Сообщение krant »

3E F2 1A и т.д.
в Ascii он тупо рисует строку в ком.порт
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

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

Сообщение lix »

а Вам надо чтобы просто байты передавались без всяких преобразований?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Bullet
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пт июл 04, 2008 19:29:15
Откуда: Мурманск

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

Сообщение Bullet »

В ком порт данные шлются в хексе без всяких проблем, а в аски их преобразует уже сам терминал и выводит на экран в виде букв. Если уж капнуть чуть глубже, то данные передаются в бинарном виде, так что смело отправляй свой хекс в ком порт.
Реклама
Аватара пользователя
vanili
Родился
Сообщения: 14
Зарегистрирован: Сб янв 30, 2010 00:43:01

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

Сообщение vanili »

Ну, 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.
Реклама
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

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

Сообщение lix »

если вы используете эту библиотеку, то используйте метод write для записи в порт.
krant
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

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

Сообщение krant »

использую именно Cport.

У меня вопрос, отсылать строку в каком виде:
{E1 2F AA;}
{E12FAA;}
{
E1;
2F;
AA;
}
Аватара пользователя
Bullet
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пт июл 04, 2008 19:29:15
Откуда: Мурманск

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

Сообщение Bullet »

Вот как делал я:

Код: Выделить всё

BComPort1.WriteStr(Chr($80)+Chr(35)+Chr(100));

в таоем случае будет :

Код: Выделить всё

BComPort1.WriteStr(Chr($E1)+Chr($2F)+Chr($AA));

Если нужна сама библиотека BComPort могу выслать.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Посмотрел его исходники.
В чём проблема то? Надо отправить в порт именно строку (уйдут коды символов) - используй метод WriteStr, если именно сами байты - метод Write.
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

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

Сообщение lix »

krant писал(а):У меня вопрос, отсылать строку в каком виде:
{E1 2F AA;}
{E12FAA;}
{
E1;
2F;
AA;
}


отсылать в таком виде, в котором ее будет удобнее обрабатывать в приемнике
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

E1 2F AA - это что? это символы "E", "1", ... или это числа 225, 47, 170?
Чувствую, что второе. Тогда загоняйте их в буфер и используйте метод Write. Не знаете как - спрашивайте конкретней, откуда они берутся и т.д.
krant
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

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

Сообщение 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 , всё супер, команды проходят. :beer:
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Эмм.. А не проще так:

Код: Выделить всё

ComPort1.Write(@testMessage, Length(testMessage));
krant
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт окт 25, 2007 11:00:10
Откуда: Russland

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

Сообщение krant »

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

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

Сообщение elektrik26rus »

здраствуйте товарисчи коты есть у меня такая задачка нужно послать запрос через ком порт контролеру и получить от него ответ полученый ответ вывести на экран а именно послать запрос такого вида 10H 02H (текст сообщения нез наю что должно быть сдесь но думаю что 04H) 10H 03H (здесь контрольная суммачто это я тоже не знаю) в ответ на данный запрос должен придти ответ такого вида 10H 02H 04H(2 байта данных с номерами присутствующих в сети контролеров)10H 03H(и всё таже контрольная сумма) дело в том что с паяльником я знаком достаточно а вот в програмировании не силён задача такова есть 15 контролеров обьеденённых в локальную кольцевую сеть транзит по стандарту ирпс соорудил устройство которое преобразует сигналы ирпс в rs-232 хочу написать маленькую програмку для общения пк с сетью транзит
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6308
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Постановка задачи интересная : я не знаю, что должно передаваться и приходить в ответ, так что напишите мне прогу, которая будет знать это вместо меня. Задача для телепатов в ранге не ниже магистра. И ещё : не приходилось видеть клавиатуру, на которой, как у автора, отсутствуют знаки препинания.
В общем, задачка на вынос мозга.
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

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

Сообщение Alkul »

elektrik26rus писал(а):хочу написать маленькую програмку для общения пк с сетью транзит
Так пишите. В чем проблема-то?
elektrik26rus
Родился
Сообщения: 3
Зарегистрирован: Вс янв 05, 2014 08:43:03

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

Сообщение elektrik26rus »

в том и проблема, как hex а точнее в каком виде послать в порт, в ответ приходят данные всё в томже формате, к примеру при нажатии кнопки строка с хекс кодом отправляется контролеру,в свою очередь контролер оправляет ответ, как этот ответ преобразовать в понятный вид например контролер передал сетевой номер 2, который отобразится в поле выбора, я не пытаюсь когото просить писать мне прогу в том то и дело хочу сам понять как это делать, но без помощи знающих людей никак не обойтись
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

elektrik26rus писал(а):строка с хекс кодом отправляется контролеру
Точно ли строка?
Скорее всего отправляются бинарные данные, а не строковые. Но это нужно уточнить.
Ответить

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