双线程打开串口接收电子称数据问题

蓝鹰_李辉 2013-12-19 04:46:23
背景: 产线需要一台计算机连接两个电子称(一大一小,这是因为精度问题。)

实现: 程序创建两个线程:线程1打开COM1,线程2打开COM2,并且COM1和COM2的波特率都设置为9600。开发的程序中线程1可以接收到小电子称从COM1发送的数据,线程2可以接收到电子称从COM2发送的数据。

问题: 我把电脑设备管理器那里的COM1、COM2的波特率都设置为4800,还是可以接收到数据。
1. 我就想,数据传输是不是和波特率没关啊?还是,我写的程序会把电脑的COM串口重新设置为9600?如果是和波特率有关的,那我的程序就存在bug了,有风险,万一影响了生产,可是要“掉脑袋”的。

2. 程序是根据“COM1”、“COM2”的名字来打通数据通道的,还是通过波特率来选择数据通道。目前的状况是好像是根据名称。之所以这么问,是同事告诉我,COM串口的区分不是根据名称,是根据波特率,就像内核对象都有自己的HANDLE句柄ID(波特率),而名字就像标示(COM1、COM2)只是方便我们使用。

请大神指教啊...
...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mangoalx 2013-12-21
  • 打赏
  • 举报
回复
另外,你在管理器改波特率很可能不起作用。你的程序打开串口时应该会设波特率,要在程序里改
mangoalx 2013-12-21
  • 打赏
  • 举报
回复
怎么可能是根据波特率呢?我有多个串口都设置一样的波特率,电脑还怎么识别? 能收到数据不说明问题。如果没有设校验的话,波特率不对一样会收到东西,只不过内容不对。 如果收到的内容也正确,那看一下是不是设备可以自动调整波特率
蓝鹰_李辉 2013-12-20
  • 打赏
  • 举报
回复
USB虚拟出来的?不是很懂啊,先去查查,再来问大神。谢谢了....
shinerise 2013-12-19
  • 打赏
  • 举报
回复
你的PC串口是USB虚拟出来的?如果是usb虚拟串口,那真实的数据传输速率是USB的速率,和你配置的COM波特率没关系。

2,426

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 其他硬件开发
社区管理员
  • 其他硬件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧