Usb库始终支持在操作设备时设置超时。这是软件的重要功能,它可以与usb设备一起工作,因为这是你可以理解设备不响应你的命令的方式。我查看了一下WebUSB Api,发现它目前还不支持超时。
是真的吗?是否只能在每次usb操作前手动启动超时,并在操作成功后停止超时?
发布于 2021-01-26 07:59:59
WebUSB目前不支持传输超时或中止传输,因为在调查了各种平台API之后,似乎不可能以一致的方式实现它们。理想情况下,可以通过将传输从USB控制器的传输计划中删除来取消传输。这在带有USBDEVFS_DISCARDURB ioctl的Linux上是可能的,并且在使用ReadPipeAsyncTO()和类似函数的macOS上支持超时。然而,在Windows上取消传输的唯一方法是调用WinUsb_AbortPipe(),它会影响管道上所有挂起的传输,而不仅仅是超时的传输。
如果您需要对未及时响应USB请求的设备做出反应,那么使用setTimeout()和clearTimeout()手动执行此操作是最好的选择。请记住,USB传输本身将保持活动状态,并可能在以后完成。
https://stackoverflow.com/questions/65424624
复制相似问题