雨が降り続いてますが、皆さん、お元気ですか?
梅雨がうっとうしいですね。
雨の日は髪の毛がまとまらないですねぇ。雨の日はライオン頭のyukiです。
先週は、フォームの整形とサービスの登録まで終わったので、今日はシリアルの実装をしていきます。
RS405CBの詳細は、双葉電子工業のページで、マニュアルを確認してください。今日はまだざっとでいいので、目を通してください。
まずは、先週作ったプログラムを出してください。
すでにフォームはできていますので、シリアルポートを設定するために、comboBoxにそれぞれ、COMポート番号とボーレートを設定します。
comboBox1から設定していきます。
しかし、関数にプログラムを書く前に、シリアルポートを使う設定をします。
//Added using System.IO.Ports; using System.ServiceProcess;
書くところは画面中の上のほうにあります。
これが書けたら、下記のプログラムを追加します。
さて、ではcomboBox1を実装していきます。
デザインタブに戻って、①の稲妻マークをクリックし、②のDropDownをダブルクリックします。
別のタブが開いて、comboBox1_DropDownという空の関数ができています。ここには、PCに接続されているシリアルデバイスのポート番号を表示するプログラムを書いていきます。
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ボタンをダブルクリックして空の関数を作ります。
書き込めるプログラムタブで下記を追加します。
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"); } }
ここまでできたらシリアルポートは使えるようになります。
今回は、ここまで。
来週は、サーボを動かす実装をします。