用readfile能实现一直不停读串口吗?

萧萧1983 2018-10-09 03:52:32
设备向上位机一直发串口数据,我使用线程循环读取,可是用readfile常常是读取到的缓冲区过大,有别的方法吗???
...全文
389 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用SetupComm把系统缓冲区设置大一些就可以了,不用设置自己的缓冲区,由于线程切换的原因,在高数据率的情况下,你的线程可能被挂起而不能及时接收数据,自己的缓冲区设置得再大也没用。也可以用timeSetEvent,这个是在系统线程中运行,可以保证毫秒级的响应,但是对于串行通讯还不必这么高的实时性。
draculamx 2018-10-11
  • 打赏
  • 举报
回复
缓冲区过大是什么意思?readfile执行失败了?如果是这样的话,你可以自己建立一个缓冲区,大一点,每次读取进来之后,就放到缓冲区里,然后再去处理缓冲区里面的数据。串口线程只负责把数据读出来放到缓冲区,另外再开一个数据处理线程,不停地处理缓冲区里面的数据就行了。不要从串口读数据,处理完了再去读,这样的话,数据量大的话是来不及的
萧萧1983 2018-10-10
  • 打赏
  • 举报
回复
引用 1 楼 zhgwbzhd 的回复:
自己写有点费事,可以考虑类似 Victor 控件,就会简单很多。
好的 我试试 谢谢
zhgwbzhd 2018-10-10
  • 打赏
  • 举报
回复
自己写有点费事,可以考虑类似 Victor 控件,就会简单很多。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧