【C#】串口通讯及其常用操作
1. 概述
- 此代码以类的形式提供,类名为:
SerialManager; - 涵盖操作有:初始化波特率、打开 SerialPort、关闭 SerialPort 等操作;
2. 命名空间
1 using System; 2 using System.Collections.Generic; 3 using System.IO.Ports; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks;
3. 代码说明
3.1. 变量/字段
1 private SerialPort serialPort = new SerialPort(); 2 public static bool IsOpen { get; set; } //标志量
3.2. 初始化波特率
1 public void InitlizeBaudRate(out string[] baudRate) 2 { 3 baudRate = new string[]{}; //初始化 4 baudRate[0] = "2400"; 5 baudRate[1] = "4800"; 6 baudRate[2] = "9600"; 7 baudRate[3] = "19200"; 8 baudRate[4] = "38400"; 9 baudRate[5] = "57600"; 10 baudRate[6] = "115200"; 11 }
3.3. 打开SerialPort
1 public void OpenSerialPort(string portName, int baudRate) 2 { 3 serialPort.PortName = portName; 4 serialPort.BaudRate = baudRate; 5 //serialPort.Parity = Parity.None; 6 //serialPort.StopBits = StopBits.One; 7 //serialPort.DataBits = 8; 8 serialPort.Open(); 9 IsOpen = true; 10 }
3.4. 关闭SerialPort
1 public void CloseSerialPort() 2 { 3 if (serialPort.IsOpen) 4 { 5 serialPort.Close(); 6 } 7 }
3.5. 写入数据
1 public void WriteToSerialPort(string data) 2 { 3 if (serialPort.IsOpen) 4 { 5 serialPort.WriteLine(data); 6 } 7 }
3.6. 读取数据
1 public string ReadFromSerialPort() 2 { 3 if (serialPort.IsOpen) 4 { 5 return serialPort.ReadExisting(); 6 } 7 return null; 8 } 9 10 public string ReadLine() 11 { 12 if (serialPort.IsOpen) 13 { 14 return serialPort.ReadLine(); 15 } 16 return null; 17 }
3.7. 丢弃缓冲区中的数据
1 public void DiscardInBuffer() 2 { 3 if (serialPort.IsOpen) 4 { 5 serialPort.DiscardInBuffer(); 6 } 7 }
3.8. 数据接收事件处理
1 private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) 2 { 3 string data = serialPort.ReadExisting(); 4 // 这里可以触发一个事件,让其他部分的代码知道有数据接收 5 OnDataReceived(data); 6 }
3.9. 数据接收事件
1 public event EventHandler<string> DataReceived; 2 3 protected virtual void OnDataReceived(string data) 4 { 5 DataReceived?.Invoke(this, data); 6 }
时间:2025年3月14日

串口通讯及其常用操作
浙公网安备 33010602011771号