Nuget包名称
System.IO.Ports

参考代码
cs
using System;
using System.IO.Ports;
using System.Threading;
namespace test
{
class Program
{
static void Main()
{
SerialPort port = new SerialPort("COM1", 9600); // 配置串口
port.Open();
Timer timer = new Timer((_) =>
{
port.WriteLine("Hello"); // 发送数据
Console.WriteLine("Data sent: Hello");
}, null, 0, 4); // 每4毫秒发送一次,每秒250次
}
}
}
代码解释
1. 引入必要的命名空间
using System;
using System.IO.Ports;
using System.Threading;
-
System.IO.Ports
:提供对串口通信的支持,包含SerialPort
类。 -
System.Threading
:提供Timer
类,用于定时任务。
2. 创建并配置串口
SerialPort port = new SerialPort("COM1", 9600); // 配置串口
-
SerialPort
构造函数的第一个参数是串口名称(如"COM1"
),第二个参数是波特率(如9600
)。 -
你可以根据实际需求修改串口名称和波特率。例如,如果你的设备连接在
COM3
,波特率为115200
,则应修改为SerialPort port = new SerialPort("COM3", 115200);
3. 打开串口
port.Open();
- 在发送数据之前,必须调用
Open()
方法打开串口。如果串口已经打开,再次调用Open()
会抛出异常。
4. 定时发送数据
Timer timer = new Timer((_) =>
{
port.WriteLine("Hello"); // 发送数据
Console.WriteLine("Data sent: Hello");
}, null, 0, 4); // 每4毫秒发送一次,每秒250次
-
使用
System.Threading.Timer
创建一个定时任务,每隔 4 毫秒调用一次回调函数。 -
在回调函数中,通过
port.WriteLine("Hello")
将字符串"Hello"
发送到串口。 -
Console.WriteLine("Data sent: Hello")
用于在控制台输出发送的数据,方便调试。 -
Timer
的构造参数:-
第一个参数是回调函数。
-
第二个参数是回调函数的参数(此处传入
null
)。 -
第三个参数是延迟时间(单位:毫秒),设置为
0
表示立即开始。 -
第四个参数是执行间隔时间(单位:毫秒),此处设置为
4
毫秒。
-
5. 注意事项
-
串口名称和波特率:确保串口名称和波特率与你的设备匹配。如果不确定设备的串口名称,可以在 Windows 的设备管理器中查看。
-
异常处理:在实际应用中,建议添加异常处理机制,例如在打开串口或发送数据时捕获异常,避免程序因串口问题而崩溃。
try { port.Open(); } catch (Exception ex) { Console.WriteLine("Error opening port: " + ex.Message); }
-
关闭串口 :在程序结束时,应调用
port.Close()
关闭串口,释放资源。port.Close();
通过以上代码和解释,你可以快速实现一个简单的串口发送功能。根据实际需求,你可以进一步扩展功能,例如接收串口数据、动态配置串口参数等。