我想创建自动更新USB设备列表(不仅海量存储)的模块。现在它非常粗鲁 - 它有额外的线程,在1秒钟之后更新设备列表。但是,也许你知道如何处理一些插件事件,这些插件事件会生成操作系统(例如Windows XP或更高版本),或者如何简化这个过程。感谢您的时间!usb设备更新列表
回答
这个问题似乎是半设计,半实施。看起来您最关心的是如何找到某种方法来为诸如jUSB之类的Java USB服务提供服务,以便通过系统为热插拔事件提供服务,从而让您可以通过inversion of control召开一个事件,而不是在后台运行热情而又迭代地轮询系统的线程。
您寻求的支持was implemented back in 2005 as JSR-80,并且似乎依靠所有优秀的项目超越了他们的商业支持,如javax-usb
on SourceForge。请注意,在他们的玩具示例中(javax-usb-example/src/ShowTopology.java
),其首选模型仍以轮询为基础。
然而,并非所有人都失去了!在the properties file for javax.usb
,我们发现这样的:
#如果轮询应该使用,而不是等待一个热插拔 通知。
#某些内核版本有一个错误,并且在唤醒等待设备文件的线程几秒钟之后才会更新设备节点(s),直到 。 如果您没有在中等到重负载的系统上获取热插拔事件,则 将使用轮询。
#请注意,由于新的(buggy?)内核行为会中断javax.usb,因此默认为 为true!
#如果你知道你的内核没有损坏,你可以将它设置为false。
#com.ibm.jusb.os.linux.LinuxUsbServices.topologyUpdateUsePolling =真
而且在javax-usb/src/javax/usb/event/UsbServicesListener.java
,我们看到了建立一个USB事件监听器,你可以继续当一个设备使用一个模型连接或从系统分离。然而,没有关于是否工作的外部文件,,而且文件本身似乎大多是8岁。
因此,合理的假设是,虽然支持理论上存在,但它是滞后的,陈旧的,迫切需要社区进行更新。这是SO上的这个好社区可以帮助解决的事情,所以我将开始关闭pointing directly to the project itself.
现在,直到增强的硬件或热插拔支持存在为止,轮询仍然是最佳解决方案。
- 1. 如何获取USB设备列表
- 2. 为USB设备
- 3. USB驱动在Android - 新设备
- 4. USB设备版本
- 5. USB设备连接
- 6. 虚拟USB设备
- 7. Tkinter的事件检测新的USB设备,或设备删除
- 8. 读取USB设备序列号在C#
- 9. USB调试未列出我的设备
- 10. NSTextView在写入USB设备时没有在循环中更新
- 11. 使用node-usb从USB设备读取
- 12. 如何使用C#.NET找到USB设备列表
- 13. 如何获得连接到Android设备的USB配件列表?
- 14. API来检测USB设备
- 15. 网站上的USB设备
- 16. USB设备udev和d-BUS
- 17. ASP.NET/Silverlight控制USB设备
- 18. Android的USB HID设备
- 19. USB设备的分类类
- 20. 语音识别USB设备
- 21. 检测USB设备android
- 22. 无法断电USB设备
- 23. udev和usb framebuffer设备
- 24. 写入USB HID设备
- 25. Android USB设备过滤器
- 26. C#USB设备处理
- 27. 列出USB设备,选择一个备份批处理文件
- 28. 如何更新BLE信标列表中设备的RSSI
- 29. SWT:获取系统设备更改通知(USB设备连接/断开)
- 30. iOS设备 - 数据更新