2012-12-22 42 views
1

用於Java中USB交互的任何API或庫,其中用於寫入的函數將不需要隨其運行的平臺而改變?這樣我的應用程序無論在Windows,Linux還是Mac上都能運行?用於與Java中的USB設備進行交互的跨平臺庫

將由我的應用程序來完成這項工作基本上是

  • 獲得USB設備的名稱
  • 能告訴我們,如果設備仍然停靠到計算機的用戶註銷之前
  • 彈出USB設備[好吧,不物理字面上,這將是荒謬的]就像安全刪除Windows。
  • 實時檢測usb設備上已耗盡的空間和空間。

    javax-usb-ri-windows : This is an ABANDONED Windows implementation. it does not work, it needs a kernel driver.

    而且:The OS-independent Reference Implementation contains a common partial implementation of javax.usb

    我只需要一個API,它是跨平臺和..以及剛剛讀

我對javax.usb - JSR080 project 但在他們的網頁,該說的話發現第一行。

我也試着在libusb的C++和它的Python包裝PyUSB [我愛Python,必須檢查]。但客戶端需要Java代碼。

回答

0

JVM對主機操作系統沒有這種控制。唯一的方法是運行具有足夠權限的shell命令(對於每個平臺不同),並解析結果(再次,每個平臺)。這絕對涉及不同平臺的不同代碼。

+0

輝煌的想法.. 但是,你能告訴我如何去「安全地移除」在所有平臺上的USB設備?那肯定會需要一些操作系統特定的代碼? –

+0

@ronnieaka安全刪除實際上是'unmount'操作,這使得設備無法在物理上斷開連接的情況下進行讀/寫_before_。這可以避免數據損壞。在Linux上,它使用'umount'命令完成。不知道窗戶。 –

+0

@ronnieaka:重要的事情:'umount'只有當你想分離文件系統時纔有用。一般來說,它與USB沒有任何關係 - 如果USB設備不是存儲設備(網絡攝像頭,條形碼閱讀器,指紋傳感器等),或者即使USB存儲設備以非常規方式使用(例如,作爲一個DM或LVM組件設備,更不用說作爲交換設備......) – thkala

0

看看JavaHIDAPI

這是一個跨平臺的人機接口設備(HID)庫,在Windows,Mac和Linux的作品。它爲每個庫提供了所有的本地庫,並且在Java中有一個易於使用的接口。文檔有點稀疏,但它應該能讓你快速啓動並運行。