阅读量:0
在C#中,我们可以使用SerialPort类库来实现串口通信
- 添加命名空间:
using System.IO.Ports;
- 创建一个SerialPort对象并设置相关属性:
SerialPort serialPort = new SerialPort(); serialPort.PortName = "COM3"; // 串口号 serialPort.BaudRate = 9600; // 波特率 serialPort.Parity = Parity.None; // 奇偶校验位 serialPort.DataBits = 8; // 数据位 serialPort.StopBits = StopBits.One; // 停止位 serialPort.Handshake = Handshake.None; // 流控制
- 打开串口:
serialPort.Open();
- 读取串口数据:
string receivedData = ""; byte[] buffer = new byte[1024]; int bytesRead; while (true) { if (serialPort.BytesToRead > 0) { bytesRead = serialPort.Read(buffer, 0, buffer.Length); receivedData += Encoding.ASCII.GetString(buffer, 0, bytesRead); } }
- 解析数据:
根据你的需求,你可以编写自定义的解析方法来解析接收到的数据。例如,你可以将接收到的字符串按照某种分隔符进行分割,然后将其转换为所需的数据类型。
- 关闭串口:
serialPort.Close();
- 完整示例代码:
using System; using System.IO.Ports; using System.Text; namespace SerialPortExample { class Program { static void Main(string[] args) { SerialPort serialPort = new SerialPort(); serialPort.PortName = "COM3"; serialPort.BaudRate = 9600; serialPort.Parity = Parity.None; serialPort.DataBits = 8; serialPort.StopBits = StopBits.One; serialPort.Handshake = Handshake.None; serialPort.Open(); string receivedData = ""; byte[] buffer = new byte[1024]; int bytesRead; while (true) { if (serialPort.BytesToRead > 0) { bytesRead = serialPort.Read(buffer, 0, buffer.Length); receivedData += Encoding.ASCII.GetString(buffer, 0, bytesRead); } } serialPort.Close(); } } }
注意:这个示例代码是一个简单的串口数据接收程序,你可能需要根据你的需求进行修改。例如,你可以使用事件处理器来处理接收到的数据,或者在接收到特定数据时执行某些操作。