2016-11-10 4 views
0

は、だから、私はSerialPortを通じてarduinoのからのデータを読み取ることができていたコードを開発しています。私はすでに、私はアルドゥイーノから読み取られ、私はアルドゥイーノに何かを送信します受信するものに応じてしたい文字を定義しました。 @、rと\ rを:私が受け取る何読むチャーデータが

は3つの文字に基づいています。

string arroba = "@" + "r" + "\r"; 
byte[] asciiBytes = Encoding.ASCII.GetBytes(arroba); 

私はこのコードをmandeしましたが、これが実際に動作するかどうかはわかりません。 Arduinoのが私にこれを送っ

私はそれが好きで読みたい:

comport.ReadByte(asciiBytes); 

あなたは、私がこのようにアルドゥイーノからのデータを読み取ることができる方法を見つけ出すことに役立ちてもらえますか?

答えて

0

まず、あなたはあなたのCOMポートにイベントハンドラを追加することにより、受信データに耳を傾ける必要があります。このハンドラ内

comport.DataReceived += Received; 

、あなたが受信したバイトを読み取ることができます。

private void Received(object sender, SerialDataReceivedEventArgs e) 
{ 
    int bytes = comport.BytesToRead; 
    byte[] buffer = new byte[bytes]; 
    comport.Read(buffer, 0, bytes); 
    if (buffer.Except(Encoding.ASCII.GetBytes("@r\r")).Any() == true) 
    { 
     //Your sequence was received 
    } 
} 

ExceptはLINQですので、

using System.Linq; 
+0

を追加することを忘れないでくださいそれはそのようなものである:特定のシーケンス(@、R、\ rは)受信したデータ内にある場合、このバイトをチェック「@」+「R」+「\ r」が:が、私は場合には、このようなものを設定します。一緒に – Forrobodo

+0

私は私の答え@Forrobodoを変更する - これが役に立てば幸い! – Fruchtzwerg

+0

'@'、 'r'、 '\ r'を一緒に読んだり、分割したりするでしょうか? – Forrobodo