这个只是对SerialPort进行简单的使用,对串口设备进行简单数据的发送和数据的接收,调用几个方法就可以完成串口的通讯,但是没有设备去实验还是感觉不好的。这里我使用了虚拟串口软件和串口调试助手(用来验证串口是否接收到数据)
使用软件: 虚拟串口软件Virtual Serial Port Driver 7.2 友善串口调试助手
这里简单说下虚拟串口软件和串口调试助手的简单使用虚拟串口软件生成串口都是成对生成的,例如生成COM2和COM3两个串口,当对COM2写入数据时,COM3就会接收到写入的数据。对COM3写入数据时COM2也会接收到写入的数据。这样串口的虚拟才有意义。点击Add pair 便可生成虚拟串口。
用户可在串口设置中选择端口,选择好端口后点击开始按钮,便可以对串口进行调试。这里我对生成的两个接口都进行开始调试,以验证实验环境是否搭建成功。
这里可以看到COM2发送消息COM3可接收,COM3发送消息COM2也可以接收到,说明实验环境搭建成功
使用串口最重要的设置就是串口名称PortName和串口波特率BaudRate和绑定串口接收到数据的事件DataReceived。 下来我用串口助手监控COM3串口,用程序实现对COM2串口进行控制。我使用一个线程定时向COM2口发送数据,成功的结果应该是COM3的串口接收到数据,也就是监控COM3的串口助手收到数据。程序也绑定好接收到数据后的事件。下来运行程序。
namespace 串口
{
class Program
{
public static SerialPort sp = new SerialPort();//实例化SerialPort类
static void Main(string[] args)
{
Thread thread1 = new Thread(myStaticThreadMethod);
thread1.Start();
}
public static void myStaticThreadMethod()
{
sp.PortName = "COM2";//设置串口名称
sp.BaudRate = 9600;//设置串口波特率
sp.DataReceived += new SerialDataReceivedEventHandler(BandEvent);//绑定串口接收到数据的事件
sp.Open();//打开串口连接
while (true) {
sp.Write("COM2 send data\n");//向串口发送数据
Thread.Sleep(5000);
}
}
public static void BandEvent(object sender, SerialDataReceivedEventArgs e)
{
Console.WriteLine("COM2 receive data"+sp.ReadLine()+"\n"); //读取缓冲区中的数据
}
}
}
运行后结果如图,COM2发送数据和接收数据都可成功,简单实现了串口的控制。