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读写超时设置也可能遇到上述问题的,只是概率低一些。所以建议采用接收、缓冲(不丢失)数据的处理方式。

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料