WPFでは、Windows Formで使えたシリアル通信用のコンポーネントがデフォルトでは使えなくなってるみたいなので、メモ。シリアル通信テスト用に便利な仮想シリアルポートも添えて。
まず、仮想シリアルポートを入れた手順について。com0comと呼ばれるソフトを使うと、とても簡単にクロスケーブル接続された形の仮想シリアルポートを利用できる。要は、片方を開いて何か入力すると、もう片方でその結果がすぐに確認できる。インストールの際、オフィシャルの最新版はまだ署名対応していなかったので、過去のバージョンで署名済みのものを入れるとトラブルが無かった。使ったリンクはこちら。
具体的にはこちらを参考に、インストール後に「Setup Command Prompt」を起動して以下のコマンドを入力、TeraTermなどでシリアルポートにつないで動作確認ができた。
>install PortName=COM20 PortName=COM21
次にシリアル通信について。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
//変数の宣言 System.IO.Ports.SerialPort serialPort = null; //シリアルポートの列挙は以下で可能 string[] PortList = SerialPort.GetPortNames(); //接続~切断 if (serialPort == null) { serialPort = new SerialPort("COM20", 9600, Parity.None, 8, StopBits.One); serialPort.NewLine = Environment.NewLine; serialPort.Open(); serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(SerialPortDataReceived); //なんか書き込む serialPort.Close(); serialPort=null } //受信したときのイベントはこちら private void SerialPortDataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { if (serialPort.IsOpen == false) { return; } try { string data = serialPort.ReadExisting(); //読み込んだ文字列の処理 } catch (Exception ex) { //エラー処理 } } |
スポンサーリンク