用ReadFile读CAN卡上的数据时,每次都要等待超时,比较浪费时间,实时控制就不好做。
能否让它在没有数据时就直接返回,不等待?有数据再读

解决方案 »

  1.   

    底层封装一个线程,线程去读can,并维护一个有没有数据的状态,上层就判断这个状态就可以了。
      

  2.   

    CreateFile时指定FILE_FLAG_OVERLAPPED
      

  3.   

    ReadFile异步处理,很简单,性能有所提高
      

  4.   

    用异步的ReadFile函数到是没有延迟了,可是取数据还是得用GetOverlappedResult()吧?
    这个函数还是得等待啊,由于对方发数据比较频繁(1ms一次),我希望能够很快就返回结果,有没有办法?
      

  5.   

    说的can总线?
    那不是固定字节通信么
      

  6.   

    可以创建句柄的时候用CreateFile时指定FILE_FLAG_OVERLAPPED 这个。
    不过这是时候read反回了可能是没读到要求长度数据的,要确定是否读够了数据的用
    GetOverlappedResult()这个API来进行异步判断