using System;
using System.IO.Ports;
using System.Windows.Forms;
namespace CSharpSCADA
{
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,
ReadTimeout = 500,
WriteTimeout = 500
};
try
{
serialPort.Open(); // 打开串口
MessageBox.Show("串口打开成功!");
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("无法访问指定的串口,请检查权限或是否被占用。");
}
catch (IOException)
{
MessageBox.Show("串口不存在或已被占用。");
}
catch (Exception ex)
{
MessageBox.Show($"发生错误: {ex.Message}");
}
}
private void SendDataToPLC(string data)
{
if (serialPort.IsOpen)
{
try
{
serialPort.WriteLine(data); // 发送数据到下位机(例如PLC)
MessageBox.Show("数据发送成功!");
}
catch (TimeoutException)
{
MessageBox.Show("发送超时,请检查连接。");
}
catch (Exception ex)
{
MessageBox.Show($"发送失败: {ex.Message}");
}
}
else
{
MessageBox.Show("串口未打开,请先初始化串口。");
}
}
private void ReceiveDataFromPLC()
{
if (serialPort.IsOpen)
{
try
{
string receivedData = serialPort.ReadLine(); // 从下位机接收数据
MessageBox.Show($"接收到的数据: {receivedData}");
}
catch (TimeoutException)
{
MessageBox.Show("接收超时,请检查连接。");
}
catch (Exception ex)
{
MessageBox.Show($"接收失败: {ex.Message}");
}
}
else
{
MessageBox.Show("串口未打开,请先初始化串口。");
}
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort != null && serialPort.IsOpen)
{
serialPort.Close(); // 关闭串口
}
}
}
}
命名空间和类:
using System;
和 using System.IO.Ports;
导入了必要的命名空间。MainForm
类继承自 Form
,表示一个 Windows 窗体应用程序。串口初始化:
InitializeSerialPort()
方法用于初始化串口设置,包括端口号、波特率等参数,并尝试打开串口。try-catch
块捕获可能发生的异常,如权限不足或串口不存在。数据发送和接收:
SendDataToPLC(string data)
方法用于向串口发送数据,通常用于与下位机(如PLC)通信。ReceiveDataFromPLC()
方法用于从串口读取数据,并显示接收到的内容。窗体关闭事件:
MainForm_FormClosing
事件确保在窗体关闭时正确关闭串口,避免资源泄露。这个示例代码展示了如何使用 C# 进行上位机开发,通过串口与下位机进行通信。
上一篇:c# listbox
下一篇:c# while
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站