C#講座 RS405CBのシリアル通信を設定しよう

お知らせ

雨が降り続いてますが、皆さん、お元気ですか?
梅雨がうっとうしいですね。
雨の日は髪の毛がまとまらないですねぇ。雨の日はライオン頭のyukiです。


先週は、フォームの整形とサービスの登録まで終わったので、今日はシリアルの実装をしていきます。

RS405CBの詳細は、双葉電子工業のページで、マニュアルを確認してください。今日はまだざっとでいいので、目を通してください。

まずは、先週作ったプログラムを出してください。
すでにフォームはできていますので、シリアルポートを設定するために、comboBoxにそれぞれ、COMポート番号とボーレートを設定します。

comboBox1から設定していきます。

しかし、関数にプログラムを書く前に、シリアルポートを使う設定をします。

//Added
using System.IO.Ports;
using System.ServiceProcess;

書くところは画面中の上のほうにあります。
20130626blog003
これが書けたら、下記のプログラムを追加します。

さて、ではcomboBox1を実装していきます。
デザインタブに戻って、①の稲妻マークをクリックし、②のDropDownをダブルクリックします。
別のタブが開いて、comboBox1_DropDownという空の関数ができています。ここには、PCに接続されているシリアルデバイスのポート番号を表示するプログラムを書いていきます。

20130626blog001

        private void comboBox1_DropDown(object sender, EventArgs e)
        {
            // すべてのシリアル・ポート名を取得する
            string[] ports = SerialPort.GetPortNames();

            // シリアルポートを毎回取得して表示するために表示の度にリストをクリアする
            comboBox1.Items.Clear();

            foreach (string port in ports)
            {
                // 取得したシリアル・ポート名を出力する
                comboBox1.Items.Add(port);
            }
        }

次に、ボーレートの設定をします。マニュアルのP26を確認してください。
comboBox2のイベントでcomboBox1のときと同様に、comboBox2_DropDownの空の関数を用意します。
ここに、RS405CBで使えるボーレートを表示します。デフォルトは115200なので、それが一番最初に表示されるように設定します。

        private void comboBox2_DropDown(object sender, EventArgs e)
        {
            // ボーレートを毎回取得して表示するために表示の度にリストをクリアする
            comboBox2.Items.Clear();

            // ボーレートを出力する
            comboBox2.Items.Add("115200"); //デフォルトなのでこれを最初にもってくる

            comboBox2.Items.Add("9600");
            comboBox2.Items.Add("14400");
            comboBox2.Items.Add("19200");
            comboBox2.Items.Add("28800");
            comboBox2.Items.Add("38400");
            comboBox2.Items.Add("57600");
            comboBox2.Items.Add("76800");
            comboBox2.Items.Add("153600");
            comboBox2.Items.Add("230400");
            comboBox2.Items.Add("460800");
        }

次に、setボタンを実装します。
デザイン画面に戻って、setボタンをダブルクリックして空の関数を作ります。
20130626blog002

書き込めるプログラムタブで下記を追加します。

        private void button1_Click(object sender, EventArgs e)
        {
            //comboBox1とcomboBox2に設定があればシリアルポートを開く
            if (comboBox1.Text != "" && comboBox2.Text != "")
            {
                serialPort1.PortName = comboBox1.Text;

                serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);

                if (serialPort1.IsOpen == true)
                {
                    serialPort1.Close();
                }

                if (serialPort1.IsOpen == false)
                {
                    serialPort1.Open();

                    if (serialPort1.IsOpen == true)
                    {
                        MessageBox.Show("Open Success\n" + serialPort1.PortName.ToString() + " " + serialPort1.BaudRate.ToString());
                    }
                    else
                    {
                        MessageBox.Show("COM Port error");
                    }
                }
            }
            else
            {
                MessageBox.Show("COM Port error");
            }
        }

ここまでできたらシリアルポートは使えるようになります。
今回は、ここまで。

来週は、サーボを動かす実装をします。

タイトルとURLをコピーしました