usb通讯重叠io时,writefile要sleep几ms才能正确发送[已解决]
本帖最后由 68336016 于 2014-5-19 12:38 编辑usb hid通讯重叠io时,writefile要sleep几ms才能正确发送
挺费解的,异步通讯,理论上writefile后就会立即返回的。
可是我这里还得sleep几个ms才会将数据正确发送,否则发送到下位机的都是固定的错误数据。
{:lol:} 已解决,低级错误,异步写操作时候给writefile传递的数组是局部变量,数据没真正写入设备之前生命就结束了。 重叠io操作,只是数据写入了缓冲,没有马上送到硬件。 KongQuan 发表于 2014-5-18 19:04
重叠io操作,只是数据写入了缓冲,没有马上送到硬件。
那要怎样才写入设备?
我现在是在writefile后sleep一下,虽然也能用,但是看起来不那么合理。 可以不用重叠io操作.
重叠io,只能等待一段时间,让系统送到硬件。
应用层再怎么异步,到了usb驱动那里还是被排进队列变成顺序的,应用层的异步只是让程序员能避免阻塞等待操作返回而已,并不是一反回就必定是完成的。 本帖最后由 68336016 于 2014-5-18 20:59 编辑
twitter 发表于 2014-5-18 20:44
应用层再怎么异步,到了usb驱动那里还是被排进队列变成顺序的,应用层的异步只是让程序员能避免阻塞等待操 ...
我并不是要writefile后就立即在下位机读取到数据。
我现在是异步写操作,不sleep下位机收到的数据就是错误的。
要sleep等待就跟同步写就没区别了,因此肯定有些地方我没考虑到,正常的异步写不应该跟着sleep。
页:
[1]