使用 C# 控制 RS232 的資料讀取及發送

RS232

使用C#做RS232序列埠控制。

加入IO的namespace

using System.IO.Ports;

使用System.IO.Ports.SerialPort類別

private SerialPort port;
...
port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

加入接收資料事件及事件處理函式

port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
...
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//讀入字串
string data = port.ReadExisting();
Console.WriteLine("Receive: " + data);

/*
 //讀入位元組
int bytes = port.BytesToRead;
byte[] comBuffer = new byte[bytes];
port.Read(comBuffer, 0, bytes);

Console.WriteLine(comBuffer);
*/
}

送出資料(打開->寫出)

port.Open();
//方法一
port.Write("#XXCH010001\r");
//方法二
port.Write(new byte[] { 0x02, 0x00, 0x00, 0x00, 0x00, 0x02 }, 0, 6);

關閉port

port.Close();
本文網址:http://blog.tonycube.com/2011/05/rs232-serial-port.html
Tony Blog 撰寫,請勿全文複製,轉載時請註明出處及連結,謝謝 😀

4 則留言

  1. 回覆
    1. 作者已經移除這則留言。

      刪除
    2. https://docs.microsoft.com/zh-tw/dotnet/api/system.io.ports.serialport.write?view=dotnet-plat-ext-5.0

      offset(偏移量) => 0
      資料長度 => 6
      簡單講就是資料源的index從0~6

      刪除
  2. 可以看整個程式嗎,謝謝不分段

    回覆刪除

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。