双线程打开串口接收电子称数据问题
背景: 产线需要一台计算机连接两个电子称(一大一小,这是因为精度问题。)
实现: 程序创建两个线程:线程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)只是方便我们使用。
请大神指教啊...
[解决办法]
你的PC串口是USB虚拟出来的?如果是usb虚拟串口,那真实的数据传输速率是USB的速率,和你配置的COM波特率没关系。
[解决办法]
怎么可能是根据波特率呢?我有多个串口都设置一样的波特率,电脑还怎么识别?
能收到数据不说明问题。如果没有设校验的话,波特率不对一样会收到东西,只不过内容不对。
如果收到的内容也正确,那看一下是不是设备可以自动调整波特率
[解决办法]
另外,你在管理器改波特率很可能不起作用。你的程序打开串口时应该会设波特率,要在程序里改