c# serialport類怎樣讀取

c#
小樊
81
2024-10-18 00:45:12
欄目: 編程語言

在C#中,使用SerialPort類讀取串口數(shù)據(jù)的方法如下:

  1. 首先,確保已經(jīng)安裝了System.IO.Ports命名空間。如果沒有安裝,可以通過以下方式添加引用:右鍵點(diǎn)擊項(xiàng)目 -> 選擇“添加引用” -> 在“COM”選項(xiàng)卡中找到對(duì)應(yīng)的串口 -> 點(diǎn)擊“確定”。

  2. 創(chuàng)建一個(gè)SerialPort對(duì)象,并設(shè)置串口參數(shù)(如波特率、數(shù)據(jù)位、停止位和校驗(yàn)位等)。例如:

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

這里,COM1是串口名稱,9600是波特率,Parity.None表示無校驗(yàn)位,8是數(shù)據(jù)位,StopBits.One表示一個(gè)停止位。

  1. 打開串口。在創(chuàng)建SerialPort對(duì)象后,需要調(diào)用其Open()方法來打開串口。例如:
serialPort.Open();
  1. 設(shè)置SerialPort對(duì)象的DataReceived事件處理器。當(dāng)串口接收到數(shù)據(jù)時(shí),會(huì)觸發(fā)此事件。例如:
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
  1. serialPort_DataReceived事件處理器中讀取串口數(shù)據(jù)。例如:
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    byte[] buffer = new byte[serialPort.BytesToRead];
    serialPort.Read(buffer, 0, buffer.Length);

    // 處理讀取到的數(shù)據(jù)
    string data = System.Text.Encoding.ASCII.GetString(buffer);
    Console.WriteLine("接收到的數(shù)據(jù): " + data);
}

這里,我們首先創(chuàng)建一個(gè)與串口緩沖區(qū)大小相同的字節(jié)數(shù)組,然后調(diào)用serialPort.Read()方法將接收到的數(shù)據(jù)讀取到字節(jié)數(shù)組中。最后,我們將字節(jié)數(shù)組轉(zhuǎn)換為字符串并進(jìn)行處理。

  1. 在適當(dāng)?shù)臅r(shí)候關(guān)閉串口。例如,可以在窗體關(guān)閉時(shí)關(guān)閉串口:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (serialPort.IsOpen)
    {
        serialPort.Close();
    }
}

這樣,當(dāng)串口接收到數(shù)據(jù)時(shí),就會(huì)觸發(fā)serialPort_DataReceived事件處理器,從而讀取并處理串口數(shù)據(jù)。

0