利用c#serialPort中DataReceived事件读取串口数据
时间: 2024-09-14 11:06:10 浏览: 56
在C#中,使用SerialPort类的DataReceived事件是一个有效的方式来处理串口数据的接收。当串口接收缓冲区中有数据时,会触发这个事件。开发者可以在事件的处理器中读取数据。以下是一个简单的示例说明如何使用DataReceived事件来读取串口数据:
首先,你需要创建一个SerialPort对象,并配置相应的串口参数(如端口名称、波特率、数据位等)。
然后,你可以为SerialPort对象的DataReceived事件添加一个事件处理器。在这个事件处理器中,你会调用SerialPort对象的Read方法来读取缓冲区内的数据。
这里是一个简化的代码示例:
```csharp
using System;
using System.IO.Ports;
class Program
{
static void Main()
{
SerialPort mySerialPort = new SerialPort("COM1"); // 以COM1为例,需要根据实际情况修改
// 配置串口参数
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
// 添加DataReceived事件处理器
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
// 打开串口
mySerialPort.Open();
Console.WriteLine("Press any key to continue...");
Console.WriteLine();
Console.ReadKey();
mySerialPort.Close(); // 关闭串口
}
// DataReceived事件的处理器
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting(); // 读取现有数据
Console.WriteLine("Data Received:");
Console.Write(indata); // 将接收到的数据写入控制台
}
}
```
在这个例子中,DataReceivedHandler方法会在数据到达串口接收缓冲区时被调用。ReadExisting方法读取缓冲区中所有可用的数据,然后将其输出到控制台。
阅读全文