雨が降り続いてますが、皆さん、お元気ですか?
梅雨がうっとうしいですね。
雨の日は髪の毛がまとまらないですねぇ。雨の日はライオン頭の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");
}
}
ここまでできたらシリアルポートは使えるようになります。
今回は、ここまで。
来週は、サーボを動かす実装をします。


