Nuget包名称
System.IO.Ports
参考代码
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();
通过以上代码和解释,你可以快速实现一个简单的串口发送功能。根据实际需求,你可以进一步扩展功能,例如接收串口数据、动态配置串口参数等。