两个串口同时接收数据流问题

[复制链接]
查看11 | 回复2 | 2021-1-27 07:00:24 | 显示全部楼层 |阅读模式
我是一VC新手,之前在做通过串口控件MSComm接收来自下位机每20ms发送过来的数据包,包格式*xxx,xxx,xxx/,然后在上位机上做解包,数据处理和画图,我把这些都写在OnComm函数里面感觉有点怪怪的,而解包,数据处理和画图都目测比较耗时的。
现在遇到问题,需要再增加一个通道,做同样的工作,也就是说有两个下位机向上位机发送数据,相应地我想到了用两个MSComm控件,但是最后效果会有数据错误和丢失。
请问应该怎样规划我的程序?看一些资料说用CSerialPort类的实时性较好我正在试,我对线程不熟悉,能否用多线程的方法解决,具体能否提供一个思路?谢谢
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:00:24 | 显示全部楼层
控制只能接收原始数据并放在缓冲区里,解包、数据处理、画图放在线程里干,这个缓冲区采用环形队列方式存贮原始数据,线程从这个队列里取数据就可以了。你的目测是对的,恐怕也只能这样做了,因为不管是什么串口类对你来说都不合适,因为每隔20毫秒上传一个数据,这个速度对计算机来说太快了,除非是DOS操作系统,只有你的程序在运行
回复

使用道具 举报

千问 | 2021-1-27 07:00:24 | 显示全部楼层
是不是MSComm要设置port的?分开接收咯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行