2011年5月1日日曜日

Netduinoでシリアルポート

とりあえずNetduinoで使える機能を紹介するこのコーナー(?)

まずはシリアルポート
デバッグなら
Debug.Print("hello world");
でも十分だけど
シリアルポートを実際に使うのは多いはず

まずは参照設定に
Microsoft.SPOT.Hardware.SerialPort
を追加します
ソリューションエクスプローラーの参照設定を右クリックして「参照の追加」
出てきたウインドウの「.NET」タブから追加します

そしてプログラム先頭の方に
using System.IO.Ports;
を書き加えます

そしたら適当なところ(「public static void Main()」 の上あたり)に
static private SerialPort serial;
を追加
そしてMain()の適当なところ(最初のほう)に

serial = new SerialPort(SerialPorts.COM1, 9600,
                Parity.None, 8, StopBits.One);
を書き加えます
この設定だと
ビットレート9600
ストップビット1
パリティ無し
という一般的な設定になります

SerialPorts.COM1の場合Digital I/O 0ピンが受信 1ピンが送信
COM2の場合2ピンが受信 3ピンが送信になります
COM1とCOM2は同時に使うことができるので
COM2でGPSから緯度と経度を追加して
COM1でアナログから得た温度データ等と共にPCに送信
ということも可能です

そしてシリアルポートの設定が済んだら.Net Fullと同じように
serial.Open();
で接続を開始します(ピンに何もつながっていなくても接続です TCP等とはちょっと違う 「相手がいる前提」です)

これで通信することが可能です

ただ
serial.Print("hello world");
とやりたいところですが

Print関数が使えないみたいなので


        static private byte[] Print(string text)
        {
            byte[] da = new byte[text.Length];

            for (int i = 0; i < text.Length; i++)
            {
                da[i] = (byte)text[i];
            }

            return da;
        }


というのを作って

            string text = "Hello world";
            serial.Write(Print(text), 0, text.Length);
のように送信したりします(Printの中で送信することもできますが)


受信はまた機会があったらやろうと思います

0 件のコメント:

コメントを投稿