在WinForm中處理串口數據,可以使用System.IO.Ports命名空間中的SerialPort類。下面是一個簡單的示例:
在WinForm中添加一個SerialPort控件,設置好串口的屬性(如端口號、波特率、數據位等)。
在Form的代碼中,可以通過SerialPort類中的事件來處理串口數據。常用的事件包括DataReceived事件和ErrorReceived事件。
在Form的代碼中,可以使用SerialPort類中的方法來發送和接收串口數據。常用的方法包括Write和ReadLine方法。
下面是一個處理串口數據的示例代碼:
using System;
using System.IO.Ports;
using System.Windows.Forms;
namespace SerialPortExample
{
public partial class MainForm : Form
{
SerialPort serialPort;
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
// 初始化串口
serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.DataReceived += SerialPort_DataReceived;
serialPort.ErrorReceived += SerialPort_ErrorReceived;
// 打開串口
try
{
serialPort.Open();
}
catch (Exception ex)
{
MessageBox.Show("串口打開失敗:" + ex.Message);
}
}
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 接收串口數據
string data = serialPort.ReadLine();
// 處理接收到的數據
// ...
// 在界面上顯示接收到的數據
this.Invoke(new Action(() =>
{
textBoxReceived.Text = data;
}));
}
private void SerialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
// 處理串口錯誤
// ...
}
private void buttonSend_Click(object sender, EventArgs e)
{
// 發送串口數據
string data = textBoxSend.Text;
// 發送數據
serialPort.Write(data);
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
// 關閉串口
serialPort.Close();
}
}
}
在上述代碼中,MainForm_Load事件中初始化并打開了串口,SerialPort_DataReceived事件中處理接收到的串口數據,并將其顯示在界面上,buttonSend_Click事件中發送串口數據,MainForm_FormClosing事件中關閉串口。