我使用的USB HID设备在更新其闪存后需要关闭并重新枚举。如果关闭后我立即重新打开设备,则该设备不会显示在枚举中。如果我稍等片刻,它会起作用:
hid_device = hid.device()
descriptors = hid.enumerate(VID, PID)
hid_device.open_path(descriptors[0]['path'])
... do stuff with device ...
hid_device.close()
descriptors = hid.enumerate(VID, PID)
hid_device.open_path(descriptors[0]['path'])
在上面的代码段中,对open_path()
的第二次调用失败,因为该设备未显示在枚举列表中。
如果我在调用close()
之后添加了sleep():
hid_device.close()
time.sleep(1.0)
...枚举成功。但是,包括任意的睡眠时间是非常错误的。
是否有API调用或强大的技术可以告诉我何时可以重新枚举?还是应该将对open_path()
的调用包装在try / except循环中?