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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?