当前位置: 代码迷 >> 嵌入开发 >> 双线程打开串口接收电子称数据有关问题
  详细解决方案

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

热度:330   发布时间:2016-04-25 08:42:35.0
双线程打开串口接收电子称数据问题
背景:  产线需要一台计算机连接两个电子称(一大一小,这是因为精度问题。)

实现:  程序创建两个线程:线程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波特率没关系。
------解决方案--------------------
怎么可能是根据波特率呢?我有多个串口都设置一样的波特率,电脑还怎么识别?

能收到数据不说明问题。如果没有设校验的话,波特率不对一样会收到东西,只不过内容不对。
如果收到的内容也正确,那看一下是不是设备可以自动调整波特率
------解决方案--------------------
另外,你在管理器改波特率很可能不起作用。你的程序打开串口时应该会设波特率,要在程序里改
  相关解决方案