2009-06-05 4 views
0

Я хочу отправить данные в формате hex (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)); 

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

Спасибо заранее

ответ

0

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

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

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

1

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

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

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

+0

Что такое wxWidgets? Как это полезно? –

+0

wxWidgets - это графическая библиотека (в основном для C++), которая является бесплатным и открытым исходным кодом. Я нахожу его дизайн лучше, чем классы Microsoft Foundation (которые, похоже, слишком тесно связаны с API C, а не как библиотека C++). У библиотек wxWidgets есть дополнительное преимущество в том, что исходный код будет компилироваться без изменений для Windows, Linux и Mac, поэтому ваше приложение станет кросс-платформенным бесплатно! – DrAl

 Смежные вопросы

  • Нет связанных вопросов^_^