阅读:1341回复:0
挂起的端点在resetpipe成功,再次读取数据时urb返回buffer_overrun
usb主机的驱动向从设备读取数据,第一次读取完全正确,urb的状态值也是0;第二次读取的时候,urb的状态值是USBD_STATUS_ENDPOINT_HALTED,于是我进行了一次resetpipe,用来重设管道的urb的返回值是0,说明reset成功,然后我又重新发送了读urb,结果返回值变成了USBD_STATUS_BUFFER_OVERRUN,读回来的数据一直是第一次设备传送来的数据,而不管以后设备向主机发送的是什么,
为什么只有第一次才能正确读回来,而以后的都只能读回第一次的数据呢? 如果一次读取没有成功,是否应该在resetpipes后再重新读取设备发送的数据呢?如果不是的话,又改怎么作呢? 我看了bulkusb的代码。感觉不清楚。 |
|