代码改变世界

C# 串口实现空闲接收中断功能

2021-06-19 09:57  idea555  阅读(1128)  评论(0)    收藏  举报

设置接收超时毫秒数ReadTimeout
线程接收,每次读一个字节,添加到列表中
接收超时时,捕获异常,生成一帧数据
啥也不说了,看代码

private void Form1_Load(object sender, EventArgs e)
{
var sList = SerialPort.GetPortNames();
this.serialPort1.PortName = sList.Last();
this.serialPort1.BaudRate = 9600;
this.serialPort1.ReadTimeout = 10;
this.serialPort1.Open();
thread = new Thread(new ThreadStart(ThreadReceive));
thread.Start();
timer1.Start();

}

Queue<List<byte>> queueList = new Queue<List<byte>>();
Thread thread = null;
List<byte> receiveList = new List<byte>();
void ThreadReceive()
{

while (true)
{
try
{
int data = this.serialPort1.ReadByte();
if (data >= 0)
receiveList.Add((byte)data);
}
catch
{
if (receiveList.Count > 0)
{
queueList.Enqueue(receiveList);
receiveList = new List<byte>();
}
}
}
}
————————————————
版权声明:本文为CSDN博主「xinjun1000」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xinjun1000/article/details/81234322/