C#窗体程序,创建串口的接收,先检查串口的连接状态,收到十六进制数据"70 6C 61 79"后触发事件1,收到十六进制数据"49 28 30 30 2C 30 30 31 2C 31 29"后触发事件2的完整代码
时间: 2024-09-18 15:18:45 浏览: 53
C#版的基础串口通讯程序,可传输十六进制
在C#中,为了创建串口的接收并设置相应的事件处理,你需要首先安装`System.IO.Ports命名空间`,然后按照以下步骤编写代码:
```csharp
using System;
using System.IO.Ports;
public partial class MainForm : Form
{
private SerialPort serialPort;
public MainForm()
{
InitializeComponent();
// 初始化串口
serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.DataReceived += SerialPort_DataReceived; // 注册DataReceived事件
// 检查串口是否已打开
CheckSerialConnection();
}
// 检查串口连接
private void CheckSerialConnection()
{
if (!serialPort.IsOpen)
{
try
{
serialPort.Open();
MessageBox.Show("串口已打开");
}
catch (Exception ex)
{
MessageBox.Show($"无法打开串口: {ex.Message}");
}
}
}
// 串口接收到数据的事件处理
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string hexData = serialPort.ReadExisting().ToString("X2"); // 转换为十六进制字符串
switch (hexData)
{
case "70 6C 61 79":
// 触发事件1,这里你可以定义一个方法或委托来处理这个事件
OnEvent1Triggered();
break;
case "49 28 30 30 2C 30 30 31 2C 31 29":
// 触发事件2
OnEvent2Triggered();
break;
default:
// 其他情况处理
break;
}
}
// 事件1处理函数,实际应用中可以自定义
protected virtual void OnEvent1Triggered()
{
Console.WriteLine("事件1触发:接收到 'play' 数据");
// 这里添加你的业务逻辑
}
// 事件2处理函数,实际应用中可以自定义
protected virtual void OnEvent2Triggered()
{
Console.WriteLine("事件2触发:接收到特定数据");
// 这里添加你的业务逻辑
}
}
// 如果你的项目中还没有Form类,需要添加一个
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
}
```
记得将"COM1"替换为你实际的串口号。当串口接收到指定的十六进制数据时,对应的事件就会被触发。
阅读全文