using System;
using System.IO.Ports;
class Program
{
static void Main()
{
// 创建一个串口对象
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
try
{
// 打开串口
serialPort.Open();
// 设置数据接收事件处理程序
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
Console.WriteLine("按任意键退出...");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine("发生错误: " + ex.Message);
}
finally
{
if (serialPort.IsOpen)
{
// 关闭串口
serialPort.Close();
}
}
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
// 获取串口对象
SerialPort sp = (SerialPort)sender;
// 读取接收到的数据
string indata = sp.ReadExisting();
Console.WriteLine("接收到数据: " + indata);
}
}
创建串口对象:
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
这里我们创建了一个 SerialPort 对象,并指定了串口号(如 COM1)、波特率(如 9600)、校验位、数据位和停止位。
打开串口:
serialPort.Open();
使用 Open() 方法打开串口,使其可以进行通信。
设置数据接收事件处理程序:
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
当串口接收到数据时,会触发 DataReceived 事件。我们为该事件注册了一个处理方法 DataReceivedHandler。
接收数据并处理:
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("接收到数据: " + indata);
}
在 DataReceivedHandler 方法中,我们从串口中读取接收到的数据,并将其打印到控制台。
异常处理和资源清理:
catch (Exception ex)
{
Console.WriteLine("发生错误: " + ex.Message);
}
finally
{
if (serialPort.IsOpen)
{
serialPort.Close();
}
}
使用 try-catch-finally 块来捕获可能发生的异常,并确保在程序结束前关闭串口以释放资源。
上一篇:c# grpc
下一篇:c# 生成二维码
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站