68336016 发表于 2014-5-18 18:40:29

usb通讯重叠io时,writefile要sleep几ms才能正确发送[已解决]

本帖最后由 68336016 于 2014-5-19 12:38 编辑

usb hid通讯重叠io时,writefile要sleep几ms才能正确发送

挺费解的,异步通讯,理论上writefile后就会立即返回的。
可是我这里还得sleep几个ms才会将数据正确发送,否则发送到下位机的都是固定的错误数据。

{:lol:} 已解决,低级错误,异步写操作时候给writefile传递的数组是局部变量,数据没真正写入设备之前生命就结束了。

KongQuan 发表于 2014-5-18 19:04:01

重叠io操作,只是数据写入了缓冲,没有马上送到硬件。

68336016 发表于 2014-5-18 19:15:17

KongQuan 发表于 2014-5-18 19:04
重叠io操作,只是数据写入了缓冲,没有马上送到硬件。

那要怎样才写入设备?
我现在是在writefile后sleep一下,虽然也能用,但是看起来不那么合理。

KongQuan 发表于 2014-5-18 20:24:37

可以不用重叠io操作.
重叠io,只能等待一段时间,让系统送到硬件。

twitter 发表于 2014-5-18 20:44:32

应用层再怎么异步,到了usb驱动那里还是被排进队列变成顺序的,应用层的异步只是让程序员能避免阻塞等待操作返回而已,并不是一反回就必定是完成的。

68336016 发表于 2014-5-18 20:57:32

本帖最后由 68336016 于 2014-5-18 20:59 编辑

twitter 发表于 2014-5-18 20:44
应用层再怎么异步,到了usb驱动那里还是被排进队列变成顺序的,应用层的异步只是让程序员能避免阻塞等待操 ...

我并不是要writefile后就立即在下位机读取到数据。

我现在是异步写操作,不sleep下位机收到的数据就是错误的。
要sleep等待就跟同步写就没区别了,因此肯定有些地方我没考虑到,正常的异步写不应该跟着sleep。
页: [1]
查看完整版本: usb通讯重叠io时,writefile要sleep几ms才能正确发送[已解决]