ArduinoとC#でのシリアル通信


arduinowithcsharpthumbArduinoとPC間での通信はいろんなやり方がありますが、一番基本的なのはやはりUSB接続のシリアル通信でしょう。ここでは、ArduinoとC#で通信する例を紹介します。

arduinowithcsharp

ファイル一式

https://github.com/umhr/SerialCommnunication_forArduino

Arduino側

arduinolcd

起動してから、カウントをして値を送り続けます。
受信した場合は、LCDシールド上の二行目で確認します。

シリアル通信自体は、
Serial.begin(9600);
で接続し、
あとは、
Serial.read()やSerial.print()で読み書きするだけなので、非常にシンプルな作りです。

リファレンス
Serialオブジェクト

C#側

接続するポートを選択し、Openボタンを押下すると通信を始めます。
受信するとログエリアに表示します。
送信するには下部のテキストエリアに入力し、Writeボタンを押下します。
SerialCommunicationCS

ArduinoをUSBで接続した状態で、このC#アプリを起動することを前提としています。
今回は全体の流れの見通しのよさを優先し、エラー処理は最低限にしています。
また、受信処理と、表示処理は別スレッドとなっているため、橋渡しのInvokeが必要になていることには注意が必要です。

参考

C#でシリアル通信を行う
http://kana-soft.com/tech/sample_0007_4.htm

2016年7月11日追記

arduino_leo

Arduino LeonardoではDTR (Data Terminal Ready) シグナルを有効にしないと、値の取得ができないので、チェックボックスを追加しました。
複数のシリアル通信に対応しました。
https://msdn.microsoft.com/ja-jp/library/system.io.ports.serialport.dtrenable(v=vs.110).aspx

Comments are closed.