c#多串口多线程接收数据
来源:互联网 发布:主机名和域名的区别 编辑:程序博客网 时间:2024/05/22 17:39
因为前段时间需要用到串口接收数据,且使用的串口号不确定,需采用多线程的方式来实现接收。
创建线程:
Thread thread = null; for (int i = 0; i < PortNum; i++)//根据选择的串口号数量创建对应数量的线程 { thread = new Thread(Text_Run); thread.Name = Convert.ToString(i); thread.IsBackground = true;//将线程转为后台线程 thread.Start(comport[i]);//传入串口号 }线程运行函数:
public static void Run(string serialName ) { SerialPort sp1 = new SerialPort(); sp1.PortName = serialName;//设置串口名 sp1.BaudRate = 57600; //波特率 sp1.DataBits = 8; //数据位 sp1.StopBits = StopBits.One;//停止位 sp1.Parity = Parity.None; //校验位 sp1.DataReceived += new SerialDataReceivedEventHandler(sp1_DataReceived);//数据接收事件 sp1.DtrEnable = true;//准备就绪 sp1.RtsEnable = true; sp1.ReadTimeout = 1000;//设置数据读取超时为1秒 portcom.Add(sp1);//保存串口实例 if (sp1.IsOpen == true)//如果打开状态,则先关闭一下 { sp1.Close(); } sp1.Open(); }
数据接收处理函数:
private static void sp1_DataReceived(object sender, SerialDataReceivedEventArgs e) { Thread.Sleep(50); lock (ojb) { SerialPort sp = sender as SerialPort;//获取当前接收数据的串口 if (!sp.IsOpen)//安全措施 { return; } int len = sp.BytesToRead;//数据的长度 byte[] receivedData = new byte[len]; sp.Read(receivedData, 0, len);//读取数据 } }
阅读全文
0 0
- c#多串口多线程接收数据
- C# 串口多线程接收
- 串口接收数据c#
- 串口接收数据c#
- 串口接收数据c#
- 多线程串口接收数据 | 全局变量的使用
- C#异步数据接收串口操作类
- C#异步数据接收串口操作类
- C#异步数据接收串口操作类
- C#异步数据接收串口操作类
- C#串口通讯 接收数据问题
- C#对串口数据接收的处理
- 基于C# Winform的串口数据接收
- C# 解决串口接收数据不完整
- C#中串口接收数据触发事件
- 基于C# Winform的串口数据接收
- c#串口数据接收处理大纲
- C# SerialPort串口通信发送接收,处理接收数据完整
- 批量提取文件夹中文件名(C++代码实现)
- IntelliJ idea 2017 卸载
- 用JS获取地址栏参数的方法(超级简单)
- 5网络编程全集
- 奥维奥:阿里、京东都爱说总交易额,这类名词都代表啥意思?
- c#多串口多线程接收数据
- 笔记43 | Android加载器Adapter的深入学习篇(二)
- Docker 操作容器
- git的一些总结
- Linux Qt只能运行一个实例的完美方案
- hdu 1301
- 新建maven web工程包括目录补充完整
- MySQL alter Table添加列的性能
- Resin 的部署