2016-09-06 7 views
0

Я могу получить что угодно из одного байта до 7 или 8 байтов, поступающих из последовательного порта. Теперь эти байты находятся в форме, такой как 0x06 (ACK) или 0x15 (NAK), в поток байтов, такой как 0x1A, 0x56, 0xF7, 0x01, 0xC3 и т. Д.Строка из SerialPort, преобразование в байтовый массив, затем сравнение с другими байтами

Теперь мой код больше подходит как это:

private void mySerialPort_DataReceived (object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     rxString = mySerialPort.ReadExisting(); 
     this.Invoke(new EventHandler(DisplayText)); 
    } 

    private void DisplayText(object sender, EventArgs e) 
    { 
     byte[] bytes = Encoding.ASCII.GetBytes(rxString); 

     tb_Status.Clear(); 

     if (bytes = (0x00, 0x00, 0x00, 0x06)) 
     { 
      tb_Status.AppendText("Ok, we are GOOD!!!"); 
     } 
    } 

Но я получаю ошибку «Тяжесть Код Описание проекта File Line CS0029 Ошибка не удается неявно преобразовать тип„Int“в„байт []“»»

Так что, когда у меня есть массив (который закодирован как строка из SerialPort), как я могу идентифицировать только один конкретный байт в массиве, а затем сравнить его с другим байтом?

Благодаря

+0

На какой строке вы получаете ошибку? –

+0

if (bytes = (0x00, 0x00, 0x00, 0x06)) – Graham

+0

0x ... значения по умолчанию преобразуются в int компилятором. –

ответ

1

Попробуйте это:

if(bytes.SequenceEquals(new byte[] { (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x06})) 
0

Вы пытаетесь сравнить массив Int.

Вы можете перебирать членов массива или использовать SequenceEqual:

if (bytes.SequenceEqual(new byte[] {0x00, 0x00, 0x00, 0x06}) 
+0

Эй, спасибо, ребята. Это отлично работает ... Моя благодарность вам обоим ... – Graham

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

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