Связь через последовательный порт - PullRequest
0 голосов
/ 05 июня 2009

Я хочу отправить данные в шестнадцатеричном формате (0x01) или (0xff) на порт, к которому подключен кабель rs232. Я использую элемент управления MSCOMM в VC ++ 6.0. Это правильный способ отправки шестнадцатеричных данных. Это код, который у меня есть.

CString output;
UCHAR data1,data2;
data1=0x01;
output.Format("%x",data1);
m_mscom.SetOutput(COleVariant(output));
data2=0xff;
output.Format("%x",data2);
m_mscom.SetOutput(COleVariant(output));

Если это не правильно, скажите, пожалуйста, как отправить данные шестнадцатеричного формата в порт.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 05 июня 2009

Если ваши данные представляют собой просто шестнадцатеричное значение, которое вы хотите отправить (в отличие от строки в шестнадцатеричном формате), вы, вероятно, захотите использовать «% c», а не «% x». При заданном значении данных (например, 0x65) «% x» будет выдавать два байта на последовательном порту: «6» (значение 54 ascii) и «5» (значение 53 ascii). "% c" выдаст один байт на последовательный порт: 'e' (значение ascii 100 или 0x65).

Что касается отправки данных на последовательный порт в C, взгляните на CSerial или CSerialPort : они могут немного упростить для вас вещи (обратите внимание, что я не Я использую их, как правило, я делаю приложения с последовательным портом в Python с модулем pyserial или в wxWidgets с библиотекой ctb ).

Редактировать: еще один, который довольно хорошо (я использовал его раньше, но не смог найти ссылку, когда я писал оригинальный пост) это CSerialFile , часть WFC библиотеки. Как я уже сказал, я обычно использую wxWidgets, но если вы используете базовые классы Microsoft, CSerialFile делает последовательный доступ очень простым.

0 голосов
/ 05 июня 2009

Я не знаком с MSCOM, но похоже, что он не будет работать. Format может вместо этого переформатировать данные в строковое представление ASCII.

В качестве альтернативы, вы можете просто использовать любой последовательный порт в качестве «файла» в Windows. Посмотрите на Windows API для открытия файлов, и вы увидите, что вы можете обращаться к определенным устройствам как к файлам, используя вместо этого имя файла, например «COM1:».

Затем вы можете читать / записывать его как файл.

...