2016-09-06 11 views
0

シリアルポートから入力される1バイトから7バイトまたは8バイトまでのものを得ることができます。現在、これらのバイトは、0x1A、0x56、0xF7,0x01、0xC3などのバイトストリームへの0x06(ACK)や0x15(NAK)などの形式です。シリアルポートからの文字列、バイト配列に変換してから他のバイトと比較する

このように:

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!!!"); 
     } 
    } 

しかし、私はエラーを取得する「重大度コード説明プロジェクトファイルの行暗黙的に 『バイト[]』にタイプ 『int型』を変換できません エラーCS0029」私は配列を持っているとき」だから

(SerialPortからの文字列としてコード化されている)のバイト数を調べるには、配列内の特定の1バイトだけを識別し、それを別のバイトと比較するにはどうすればよいですか?

おかげ

+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

関連する問題