C # Delphi ComPort Связь

2

Я использую Visual Studio 2008 (С#) или Delphi CodeGear и создаю программу, которая связывается с устройством последовательного COM-порта. Устройство отправит мне данные в шестнадцатеричном формате, и я прочитал его. Пример: 40 32 00 D2 01 A6 B2 Первый байт "40" - это номер устройства. Второй байт "32" - это кнопка кнопки устройства. и т.д....

Мой вопрос в том, как смотреть байты отдельно. Когда я получаю 40 32 00 D2 01 A6 B2 я должен сказать, что это устройство "1" (например), и на нем была нажата кнопка "2" (например). Если кто-то знает, как это сделать, я был бы очень благодарен за помощь. Спасибо.

  • 2
    Вы говорите, что «читаете это». Как вы читаете это (в каком формате - строка, байтовый массив, ??)?
  • 2
    Можете ли вы опубликовать некоторый код (только часть, где вы читаете входящие данные).
Теги:

1 ответ

0

Я нашел этот код и использую его:

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" (формат HEX). Я хочу, чтобы этот первый байт означал, что это устройство является номером 1, второй байт означает, что нажата кнопка N номера и т.д.....

  • 0
    Извините, но я не знаю, как форматировать код здесь.
  • 0
    Выберите код, нажмите кнопку {} над редактором или Ctrl+K
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню