首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

串口读数据出现误码?该怎么解决

2012-01-18 
串口读数据出现误码?做了一个读写串口的程序。存在如下问题在串口打开后,建立串口收数据线程,监控串口传来

串口读数据出现误码?
做了一个读写串口的程序。
存在如下问题
在串口打开后,建立串口收数据线程,监控串口传来的数据。每当收到数据后再进行处理。
现在的问题是当用到ClearCommError(ceSeries-> m_hComm,&dwReadErrors,&cmState);的时候cmState获得接收到数据的长度。但是在VC下数据长度只要大于8字节就会出现乱码。在EVC下每隔120包左右会出现乱码。单步跟了一下,发现是cmState接收数据长度就接收错了。不知道如何解决。
但如果确定了readfile的长度后就不会出现乱码问题。
DWORD   willReadLen;
willReadLen   =17;//   如果用这个cmState.cbInQue   就会出现乱马;
ReadFile(ceSeries-> m_hComm,   readBuf,   willReadLen,   &actualReadLen,0);
但如果要接收长度不固定的数据就会出现问题了。谁能帮我解决一下。


[解决办法]
那你就多读几次嘛!

通过comState来确定一下每次要读的长度。

然后读出数据,在拼接!

为什么在vc中超过8个字节就会出现那样的问题呢?

这个还真没有试过呢!

[解决办法]
我都是使用worker thread + overlapped I/O来读串口。一个字节一个字节的读。然后自己在buffer中把这些字节拼起来。从来没有试图去获取过串口接受到了多少个字符。
如果你用的是EVC的话好像有个什么串口消息之类的,可以尝试用一下。

热点排行