ReadFile读设备的数据时能不能不等待?

yjukh 2012-05-15 08:50:48
用ReadFile读CAN卡上的数据时,每次都要等待超时,比较浪费时间,实时控制就不好做。
能否让它在没有数据时就直接返回,不等待?有数据再读
...全文
210 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2012-05-21
  • 打赏
  • 举报
回复
异步嘛 ~
ls443085074 2012-05-21
  • 打赏
  • 举报
回复
可以创建句柄的时候用CreateFile时指定FILE_FLAG_OVERLAPPED 这个。
不过这是时候read反回了可能是没读到要求长度数据的,要确定是否读够了数据的用
GetOverlappedResult()这个API来进行异步判断
向立天 2012-05-21
  • 打赏
  • 举报
回复
说的can总线?
那不是固定字节通信么
Lactoferrin 2012-05-21
  • 打赏
  • 举报
回复
你要有数据当然得等那个完,没数据你能返回什么结果
yjukh 2012-05-21
  • 打赏
  • 举报
回复
用异步的ReadFile函数到是没有延迟了,可是取数据还是得用GetOverlappedResult()吧?
这个函数还是得等待啊,由于对方发数据比较频繁(1ms一次),我希望能够很快就返回结果,有没有办法?
Lactoferrin 2012-05-17
  • 打赏
  • 举报
回复
用异步读即可,无需自己创建线程
yjukh 2012-05-17
  • 打赏
  • 举报
回复
也就是说需要在线程里不断地读?
cracker234 2012-05-17
  • 打赏
  • 举报
回复
ReadFile异步处理,很简单,性能有所提高
Lactoferrin 2012-05-16
  • 打赏
  • 举报
回复
CreateFile时指定FILE_FLAG_OVERLAPPED
用户 昵称 2012-05-16
  • 打赏
  • 举报
回复
底层封装一个线程,线程去读can,并维护一个有没有数据的状态,上层就判断这个状态就可以了。
hdg3707 2012-05-16
  • 打赏
  • 举报
回复
只能在线程里读,读到数据后就发出读完命令进行数据处理
yhp1888 2012-05-16
  • 打赏
  • 举报
回复
在线程中读
zhouzhipen 2012-05-15
  • 打赏
  • 举报
回复
ReadFileEx 可以异步操作。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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