winform 如何实现串口通讯
时间: 2023-12-16 21:02:59 浏览: 245
Winform串口通讯
要在 WinForm 中实现串口通讯,可以按照以下步骤进行操作:
1. 在 WinForm 中添加一个 SerialPort 控件,可以从工具箱中拖拽到窗体上。
2. 配置串口的参数,例如端口号、波特率、数据位、停止位、奇偶校验等。
3. 在代码中编写打开、关闭串口的函数,并将其绑定到按钮等控件上,以实现打开、关闭串口的操作。
4. 监听串口数据接收事件,当串口接收到数据时,触发该事件,然后在事件处理函数中读取串口数据。
5. 编写向串口发送数据的函数,并将其绑定到按钮等控件上,以实现向串口发送数据的操作。
下面是一个简单的示例代码:
```csharp
using System.IO.Ports;
public partial class Form1 : Form
{
SerialPort serialPort;
public Form1()
{
InitializeComponent();
// 初始化串口控件
serialPort = new SerialPort();
serialPort.PortName = "COM1";
serialPort.BaudRate = 9600;
serialPort.DataBits = 8;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);
}
private void btnOpen_Click(object sender, EventArgs e)
{
try
{
serialPort.Open();
MessageBox.Show("串口已打开");
}
catch (Exception ex)
{
MessageBox.Show("串口打开失败:" + ex.Message);
}
}
private void btnClose_Click(object sender, EventArgs e)
{
serialPort.Close();
MessageBox.Show("串口已关闭");
}
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] buffer = new byte[serialPort.BytesToRead];
serialPort.Read(buffer, 0, buffer.Length);
string str = Encoding.ASCII.GetString(buffer);
Invoke(new Action(() => { textBox1.AppendText(str); })); // 在 UI 线程中更新 UI
}
private void btnSend_Click(object sender, EventArgs e)
{
string str = textBox2.Text.Trim();
if (serialPort.IsOpen)
{
serialPort.Write(str);
}
else
{
MessageBox.Show("串口未打开");
}
}
}
```
上面的代码实现了串口的打开、关闭、数据接收和数据发送功能。当串口接收到数据时,将数据显示在 UI 界面上。
阅读全文