#c# #delphi
#c# #delphi
Вопрос:
Я использую Visual Studio 2008 (C #) или Delphi CodeGear и создал программу, которая взаимодействует с устройством последовательного com-порта. Устройство отправляет мне данные в шестнадцатеричном формате, и я их читаю.Реальный пример — 40 32 00 D2 01 A6 B2 Первый байт «40» — это номер устройства. Второй байт «32» — это то, какая кнопка устройства была нажата. и т.д….
Мой вопрос в том, как искать байты отдельно.Когда я получаю 40 32 00 D2 01 A6 B2, я должен сказать, что это устройство ‘1’ (например) и на нем была нажата кнопка ‘2’ (например). Если кто-нибудь знает, как это сделать, я был бы очень благодарен за некоторую помощь.Спасибо
Комментарии:
1. Вы говорите, что «прочитали это». Как вы это читаете (в каком формате — строка, массив байтов, ??)?
2. Можете ли вы опубликовать некоторый код (только ту часть, где вы считываете входящие данные).
Ответ №1:
Я нашел этот код и использую его :
void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//determine the mode the user selected (binary/string)
switch (CurrentTransmissionType)
{
//user chose string
case TransmissionType.Text:
//read data waiting in the buffer
string msg = comPort.ReadExisting();
//display the data to the user
DisplayData(MessageType.Incoming, msg "n");
break;
//user chose binary
case TransmissionType.Hex:
//retrieve number of bytes in the buffer
int bytes = comPort.BytesToRead;
//create a byte array to hold the awaiting data
byte[] comBuffer = new byte[bytes];
//read the data and store it
comPort.Read(comBuffer, 0, bytes);
//display the data to the user
DisplayData(MessageType.Incoming, ByteToHex(comBuffer) "n");
break;
default:
//read data waiting in the buffer
string str = comPort.ReadExisting();
//display the data to the user
DisplayData(MessageType.Incoming, str "n");
break;
}
}
И я получаю это «40 32 00 D2 01 A6 B2» (шестнадцатеричный формат) Я хочу, чтобы этот первый байт означал, что это устройство имеет номер 1, второй байт означает, что нажата кнопка с номером N и т.д. ….
Комментарии:
1. Выберите код, нажмите
{}
кнопку над редактором илиCtrl K
.2. В качестве альтернативы:
<pre><code> your block of code </code></pre>
.