using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace RscTest1 { public partial class Form1 : Form { //フィールド(クラス内で使う変数宣言) private byte[] sendData; //送信データの配列を宣言 private byte[] rcvData; //受信データの配列を宣言 //コンストラクタ(起動時処理) public Form1() { InitializeComponent(); //デザイナで作ったところ serialPort1.PortName = "COM1"; //使うポートをCOM1に設定 serialPort1.BaudRate = 9600; //通信速度を9600bpsに設定 serialPort1.Open(); //シリアルポートをオープン } //マウスクリックイベント(実行ボタン) private void runButton_Click(object sender, EventArgs e) { sendData = new byte[7]; //配列を実体化 sendData[0] = 255; //シンクロバイトをセット sendData[1] = Convert.ToByte(id.Text); //IDをセット sendData[2] = 4; //命令長をセット sendData[3] = 2; //命令をセット sendData[4] = Convert.ToByte(servoNum.Text);//サーボ番号をセット sendData[5] = Convert.ToByte(servoPos.Text);//サーボ位置をセット sendData[6] = Convert.ToByte(servoSpd.Text);//サーボ速度をセット serialPort1.Write(sendData, 0, 7); //配列0番目から7個送信 } //マウスクリックイベント(読み取りボタン) private void getPosButton_Click(object sender, EventArgs e) { sendData = new byte[5]; //配列を実体化 sendData[0] = 255; //シンクロバイトをセット sendData[1] = Convert.ToByte(id.Text); //IDをセット sendData[2] = 2; //命令長をセット sendData[3] = 22; //命令をセット sendData[4] = Convert.ToByte(servoNum.Text);//サーボ番号をセット serialPort1.Write(sendData, 0, 5); //配列0番目から5個送信 } //シリアルポート受信イベント private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string result; //結果表示用文字列変数 rcvData = new byte[6]; //配列を実体化(結果用配列) serialPort1.Read(rcvData, 0, 6); //6バイト受信して配列0番目から格納 result = "#" + rcvData[4].ToString() //数値結果を文字に変換 + "=" + rcvData[5].ToString(); captureResult.Text = result; //結果表示 } } }