using System;
using System.IO.Ports;
using System.Windows.Forms;
namespace CSharpUpperComputer
{
public partial class MainForm : Form
{
private SerialPort serialPort;
public MainForm()
{
InitializeComponent();
InitializeSerialPort();
}
private void InitializeSerialPort()
{
serialPort = new SerialPort
{
PortName = "COM1", // 设置串口号
BaudRate = 9600, // 设置波特率
Parity = Parity.None,
DataBits = 8,
StopBits = StopBits.One,
Handshake = Handshake.None
};
serialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);
}
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string data = serialPort.ReadExisting();
this.Invoke(new Action(() =>
{
textBoxReceived.AppendText(data); // 将接收到的数据追加到文本框中
}));
}
private void buttonSend_Click(object sender, EventArgs e)
{
if (serialPort.IsOpen)
{
string message = textBoxSend.Text;
serialPort.WriteLine(message); // 发送数据到串口
}
else
{
MessageBox.Show("串口未打开");
}
}
private void buttonOpenClose_Click(object sender, EventArgs e)
{
if (serialPort.IsOpen)
{
serialPort.Close();
buttonOpenClose.Text = "打开串口";
}
else
{
try
{
serialPort.Open();
buttonOpenClose.Text = "关闭串口";
}
catch (Exception ex)
{
MessageBox.Show($"打开串口失败: {ex.Message}");
}
}
}
}
}
这段代码实现了一个简单的C#上位机程序,用于通过串口与下位机进行通信。具体功能包括:
InitializeSerialPort方法中设置串口参数(如端口号、波特率等),并注册数据接收事件。SerialPort_DataReceived事件处理程序,将接收到的数据追加到文本框中。该示例使用了Windows Forms来创建用户界面,并通过System.IO.Ports.SerialPort类来进行串口通信。
上一篇:c# 时间转换
下一篇:c# task.run
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站