C# 实现串口通信
一、基本介绍
在C#中实现串口通信,可以使用System.IO.Ports.SerialPort
类。这个类提供了串口通信的基本功能,包括打开和关闭串口、发送和接收数据等。
二、简单示例
1. 添加命名空间
首先,确保你的C#文件顶部包含了必要的命名空间:
using System;
using System.IO.Ports;
2. 配置串口
创建一个SerialPort
对象,并配置其属性,如端口号、波特率等:
SerialPort serialPort = new SerialPort("COM3"); // 替换为实际的COM端口
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.DataBits = 8;
serialPort.Handshake = Handshake.None;
3. 打开串口
在发送或接收数据之前,需要打开串口:
serialPort.Open();
4. 发送数据
发送数据时,可以使用Write
或WriteLine
方法:
string dataToSend = "Hello, Serial Port!";
serialPort.Write(dataToSend);
5. 接收数据(等待超时)
为了接收数据并处理超时,可以设置ReadTimeout
属性,并在读取数据时使用ReadExisting
或ReadLine
方法。这里使用ReadExisting
方法作为示例:
6. 关闭串口
完成数据传输后,关闭串口:
serialPort.Close();
三、完整示例代码
using System;
using System.IO.Ports;
class Program
{
static void Main()
{
SerialPort serialPort = new SerialPort("COM3");
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.DataBits = 8;
serialPort.Handshake = Handshake.None;
try
{
serialPort.Open();
string dataToSend = "Hello, Serial Port!";
serialPort.Write(dataToSend);
serialPort.ReadTimeout = 5000;
try
{
string receivedData = serialPort.ReadExisting();
Console.WriteLine("Received: " + receivedData);
}
catch (TimeoutException)
{
Console.WriteLine("Timeout occurred while waiting for data.");
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
finally
{
if (serialPort.IsOpen)
{
serialPort.Close();
}
}
}
}