C#窗体程序,创建串口的接收,先检查串口的连接状态,接收到数据"play"后触发事件1,接收到数据"pause "后触发事件2的完整代码
时间: 2024-09-19 21:03:48 浏览: 57
在C#中,创建一个窗体应用程序并处理串口通信通常涉及`System.IO.Ports`命名空间下的`SerialPort`类。首先,确保添加了必要的引用。以下是处理串口连接状态和数据接收的示例代码:
```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; // 注册数据接收事件
serialPort.Open(); // 打开串口
CheckConnection();
}
private void CheckConnection()
{
if (!serialPort.IsOpen)
{
try
{
serialPort.Open();
MessageBox.Show("串口已打开");
}
catch (Exception ex)
{
MessageBox.Show($"无法打开串口: {ex.Message}");
}
}
else
{
MessageBox.Show("串口已连接");
}
}
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string data = serialPort.ReadLine();
switch (data)
{
case "play":
OnEvent1Triggered();
break;
case "pause":
OnEvent2Triggered();
break;
default:
Console.WriteLine($"接收到的数据: {data}");
break;
}
}
protected virtual void OnEvent1Triggered()
{
// 这里可以编写你的事件1处理代码
MessageBox.Show("播放事件触发");
}
protected virtual void OnEvent2Triggered()
{
// 这里可以编写你的事件2处理代码
MessageBox.Show("暂停事件触发");
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
serialPort.Close(); // 关闭串口
}
// 主窗口关闭时清理资源
~MainForm()
{
Dispose(false);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (serialPort != null)
{
serialPort.Dispose();
serialPort = null;
}
}
base.Dispose(disposing);
}
阅读全文