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 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题