denny2499 2014-12-04 13:54 采纳率: 0%
浏览 2935

MFC中读取串口时数据总是不全,请问各位大侠有什么方式可以全部读好,谢谢了

我采用的是异步方式事件触发的形式读取串口数据,采用的是readfile函数,ReadFile(hCom, lpInBuffer,dwBytesRead, NULL,&m_osRead); 但是总是读不全就开始处理数据了,读不全的意思是,我原本打算每秒接收到数据是2k左右(接收的数据不是固定的),但是可能接收到100B或者200B就开始处理了,请问有什么方式可以实现全部收到后再处理。还有,我们没有对COMMTIMEOUTS读写超时设置,请问有必要设置么?谢谢各位了

  • 写回答

1条回答 默认 最新

  • 91program 博客专家认证 2014-12-04 23:35
    关注

    将接收到的数据缓冲在一起,然后对缓冲区中的数据进行分析。无论是接收到100B或者200B,或者是按一定的协议格式进行处理,都可以的。
    只要不丢数据就行,所以对 COMMTIMEOUTS读写超时设置也没有什么要求。

    如果是接收一次,就处理一次,那么 COMMTIMEOUTS读写超时设置必须按数据要求严格设置定。否则,可能会出现数据本应该一起到的,但实际却是分为两次到。
    但就算是设置了 COMMTIMEOUTS读写超时设置也可能遇到上述问题的,只是概率低一些。所以建议采用接收、缓冲(不丢失)数据的处理方式。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)