在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 receivedDatahttps://www.yisu.com/ask/= ""; 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 receivedDatahttps://www.yisu.com/ask/= "";
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();
}
}
}
注意:这个示例代码是一个简单的串口数据接收程序,你可能需要根据你的需求进行修改。例如,你可以使用事件处理器来处理接收到的数据,或者在接收到特定数据时执行某些操作。