我想創建自動更新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. Android列表USB設備
- 2. 如何獲取USB設備列表
- 3. 爲USB設備
- 4. 移除或插入新USB設備後的COM端口更新
- 5. USB驅動在Android - 新設備
- 6. 如何重新識別USB設備
- 7. 重新編程USB設備的VID/PID
- 8. 虛擬USB設備
- 9. USB設備版本
- 10. USB設備型號
- 11. USB設備連接
- 12. 限制USB設備
- 13. USB專用設備
- 14. Tkinter的事件檢測新的USB設備,或設備刪除
- 15. 用C#和WMI列出USB設備
- 16. USB調試未列出我的設備
- 17. 讀取USB設備序列號在C#
- 18. 列出USB設備像\\?\ Device \ HarddiskX \ PartitionY VBScript
- 19. NSTextView在寫入USB設備時沒有在循環中更新
- 20. 使用node-usb從USB設備讀取
- 21. 無法在Android中使用USB主機獲取USB設備列表
- 22. 得到在Mac上附加的USB設備列表xcode
- 23. 如何獲得連接到Android設備的USB配件列表?
- 24. 如何使用C#.NET找到USB設備列表
- 25. 獲取所有USB大容量存儲設備的列表
- 26. 與USB設備通信
- 27. 從連接的USB設備
- 28. Windows USB設備位置
- 29. 網站上的USB設備
- 30. 語音識別USB設備