给我一个Winform的串口调试助手的示例
时间: 2023-07-07 20:27:54 浏览: 50
下面是一个Winform串口调试助手的示例代码,可以实现串口的打开、关闭、发送数据、接收数据等操作:
```csharp
using System;
using System.IO.Ports;
using System.Windows.Forms;
namespace SerialPortDemo
{
public partial class Form1 : Form
{
private SerialPort serialPort;
public Form1()
{
InitializeComponent();
// 初始化串口
serialPort = new SerialPort();
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
}
private void btnOpen_Click(object sender, EventArgs e)
{
// 打开串口
try
{
serialPort.PortName = cbPortName.SelectedItem.ToString();
serialPort.BaudRate = Convert.ToInt32(cbBaudRate.SelectedItem.ToString());
serialPort.DataBits = Convert.ToInt32(cbDataBits.SelectedItem.ToString());
serialPort.Parity = (Parity)Enum.Parse(typeof(Parity), cbParity.SelectedItem.ToString());
serialPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), cbStopBits.SelectedItem.ToString());
serialPort.Open();
btnOpen.Enabled = false;
btnClose.Enabled = true;
btnSend.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnClose_Click(object sender, EventArgs e)
{
// 关闭串口
try
{
serialPort.Close();
btnOpen.Enabled = true;
btnClose.Enabled = false;
btnSend.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnSend_Click(object sender, EventArgs e)
{
// 发送数据
try
{
if (serialPort.IsOpen)
{
serialPort.Write(txtSend.Text);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 接收数据
try
{
string data = serialPort.ReadLine();
this.Invoke(new EventHandler(delegate
{
txtReceive.AppendText(data);
}));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
// 初始化串口参数
string[] portNames = SerialPort.GetPortNames();
cbPortName.Items.AddRange(portNames);
cbPortName.SelectedIndex = 0;
cbBaudRate.SelectedIndex = 2;
cbDataBits.SelectedIndex = 1;
cbParity.SelectedIndex = 0;
cbStopBits.SelectedIndex = 0;
btnClose.Enabled = false;
btnSend.Enabled = false;
}
}
}
```
该示例中,使用了四个按钮分别实现打开串口、关闭串口、发送数据和清空接收区的功能。在串口接收到数据时,将数据显示在接收区中。同时也可以设置串口的参数,例如波特率、数据位、校验位、停止位等。