C#编写 请通过事件编写收数据
时间: 2024-04-16 13:24:23 浏览: 111
在C#中,你可以通过使用事件来编写接收数据的功能。以下是一个使用事件的示例代码:
```csharp
using System;
using System.IO.Ports;
public class UARTCommunication
{
private SerialPort serialPort;
// 定义一个事件来触发数据接收
public event EventHandler<DataReceivedEventArgs> DataReceived;
public UARTCommunication()
{
serialPort = new SerialPort("COM1"); // 替换为你的串口号
serialPort.BaudRate = 500000;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.DataReceived += SerialPortDataReceived; // 注册数据接收事件
serialPort.Open();
}
private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 读取接收到的数据
string receivedData = serialPort.ReadExisting();
// 触发数据接收事件,将接收到的数据传递给事件处理程序
DataReceived?.Invoke(this, new DataReceivedEventArgs(receivedData));
}
public void Close()
{
if (serialPort.IsOpen)
serialPort.Close();
}
}
public class DataReceivedEventArgs : EventArgs
{
public string ReceivedData { get; }
public DataReceivedEventArgs(string receivedData)
{
ReceivedData = receivedData;
}
}
```
在上述代码中,我们定义了一个名为UARTCommunication的类,其中包含了一个事件DataReceived,用于触发数据接收。当串口接收到数据时,SerialPortDataReceived方法会被调用,然后触发DataReceived事件,并将接收到的数据传递给事件处理程序。
你可以在使用UARTCommunication类的代码中订阅DataReceived事件,并在事件处理程序中进行数据处理。
希望这个示例对你有所帮助!
阅读全文