シリアル通信を行う System.IO.Ports.SerialPort クラスの覚え書き
SerialPort port = new SerialPort();
// ↓ COM 番号
port.PortName = "COM1";
// ↓ 通信仕様
port.Handshake = Handshake.RequestToSend;
port.BaudRate = 4800;
port.Parity = Parity.None;
port.StopBits = StopBits.Two;
port.DataBits = 8;
// ↓ タイムアウトとバッファサイズ指定
port.WriteTimeout = 1000;
port.ReadTimeout = 1000;
port.WriteBufferSize = 1024;
port.ReadBufferSize = 1024;
// ↓ 通常 false
port.RtsEnable = false;
port.DtrEnable = false;
// ↓ 何バイト受信したら DataReceived イベントを発生させるか
port.ReceivedBytesThreshold = int.MaxValue;
// ポートオープン
port.Open();
// 送信
port.Write(data, 0, data.Length);
// 最初のデータがくるまで待つ
while (port.BytesToRead == 0)
{
// ここにタイムアウト処理
// ちょっと他人のことも考える
Thread.Sleep(0);
}
// 受信バッファ
List<byte> received = new List<byte>();
// 受信
while (port.BytesToRead > 0)
{
// 1 バイト受信してバッファに格納
received.Add((byte)port.ReadByte());
// ここに終了コードなら抜ける処理
// ここにタイムアウト処理
}
// 配列に変換
byte[] receivedData = received.ToArray();
// ポートクローズ
port.Close();
Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。
好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。
詳しくは Web mixi で。