2012-11-01 100 views
4

我很努力地找到一個Java API,它能夠獲取通過USB連接的任何設備的輸入。 我發現了jUsb,但似乎過時了。獨立於Java的usb輸入平臺

我想的是:

  • 獨立於平臺的API(在UNIX,Windows,Mac的工作)
  • 可以從任何設備搶輸入(其實我想操縱桿連接到API我的USB端口)
+2

如果類似的東西存在,我寧願感到驚訝...聽起來像你想用java編寫的設備驅動程序 –

+0

我會驚訝沒有人想過(對我來說非常基本)視頻遊戲,與USB控制桿啓用......無論如何,感謝「用Java編寫的設備驅動程序」的建議,似乎是想要我正在尋找是的。 – toni07

+0

如果您實際上只想使用遊戲杆,請嘗試Jinput http://java.net/projects/jinput –

回答

0

您需要安裝能夠首先檢測到您的設備的設備驅動程序。

在設備管理器 - >端口(COM & LPT)中,您可以看到設備所連接的端口。例如COM1/COM2/COM3

您可以編寫代碼來添加偵聽器事件以從這些端口讀取數據。 有很多庫可用於COM端口。這link可以對你有用。

我使用comm.jar從手持掃描器設備讀取輸入。

0

在過去我已經使用libusb.不是很簡單,但如果你足夠多的話,你可以得到幾個操作系統和Java綁定的驅動程序。

3

我們的USB傳感器存在同樣的問題:沒有100%的Java解決方案。您將始終需要使用另一種語言編寫的操作系統特定代碼(並且可以訪問本機API)。

我們發現的最便攜的解決方案是實現一種將USB數據封裝在本地主機TCP套接字上的網關。我們有3個網關(OSX,UNIX和Windows)的實現,它們將調用本地API與USB設備進行交互。 Java代碼將通過TCP網關發送/接收USB流量。我們已經完成了一些benchmarks,並且我們已經測量出純C++代碼和Java實現之間的總體差異小於10ms(對於大型45ms事務),而一旦擁有開放式通道,則延遲可以忽略不計(無影響)。

我們寫了一篇文章解釋our solution here