# USB einbindung in Java



## Flo85 (4. Oktober 2010)

Hallo zusammen,

ich möchte in ein Java Programm eine USB einbindung zum auslesen von Messdaten aus einem Gerät einbauen.
Leider findet man im Internet nicht so viel zu diesem Thema.

Wäre nett, wenn da jemand helfen könnte.

Gruß

Flo


----------



## Bratkartoffel (4. Oktober 2010)

Hallo,

da Java abstrahiert in einer VM läuft bietet es keine native Schnittstelle zum (direkten) Ansprechen der Hardware. Um soetwas zu implementieren solltest du dich mit JNI befassen, jedoch geht hier die Plattformunabhängigkeit flöten.

Informationen:
http://de.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/6/docs/technotes/guides/jni/index.html
http://openbook.galileocomputing.de/javainsel8/javainsel_27_001.htm

Gruß
BK


----------



## genodeftest (4. Oktober 2010)

Hallo
Falls du nur für eine Platform programmieren möchtest,  hat dir die Antwort von Bratkartoffel hoffentlich geholfen. Wenn du eine Platformunabhängige Lösung willst, hier eine etwas längere Variante:

Es gibt mindestens 3 alte, nicht mehr weiter entwickelte Versuche, eine Java-API zu schreiben, die tatsächlich platformunabhängig ist:

http://javax-usb.org/
sehr buggy und allerhöchstens als Alpha version zu bezeichnen
seit ca. 6 Jahren keine aktive Entwicklung mehr, seit 3 Jahren gar kein Commit im SVN
funktioniert nur ansatzweise unter Linux

http://jusb.sourceforge.net/
halbwegs stabil
unter Windows nur mit eigenem Treiber (der installiert werden muss)
aber wenigstens hat es bei mir schon einmal funktioniert…
keine Veränderung seit 2001 (also noch vor USB 2.0!!)

mit dieser
http://www.koiroha.org/usb4j/
kann ich nicht allzu viel anfangen, weil die Dokumentation offensichtlich japanisch (oder so was ähnliches) ist
wird aber scheinbar noch entwickelt (zumindest noch letztes Jahr)

Problem an der Entwicklung:
ca. 10k Seiten Dokumentation wären zu lesen und umzusetzen
man würde viele verschiedene Mainboards, USB-Geräte und echte (nicht virtualisierte) Betriebssysteme zum Testen benötigen

Andererseits:
Ich versuche zurzeit selbst, mir einen allgemeinen USB-Treiber für Java zu schreiben. Bei Interesse kannst du dich ja melden . Bisher steht aber noch nicht mehr als ein Konzept - keine Implementation


----------



## genodeftest (4. Oktober 2010)

Und noch was: die japanische Variante basiert nur auf libusb 0.1, welche seit 2008 als veraltet gilt und USB 2.0 nicht vollständig unterstützt.


----------



## Flo85 (11. Oktober 2010)

Vielen dank für eure Hilfe.
Ich muss mal schauen was mir davon hilft.


----------



## mccae (13. Oktober 2010)

Huhu,

Es gibt libusb 1.0 welches auf dem alten libusb 0.1 basiert, jedoch bis heute weiterentwickelt wird.

http://www.libusb.org/wiki/libusb-1.0

Laut Homepage soll eine Windowsunterstützung heuer im August hinzugekommen seien.

Leider gibt es für diese Bibliothek noch keinen Java Wrapper, was heißt dass man sich mit JNI rumschlagen müsste.


----------



## genodeftest (13. Oktober 2010)

Oder man nimmt JNA (anstatt jemanden mit JNI zu erschlagen 
http://jna.dev.java.net/

libusb 1.0 für Windows scheint nicht stabil zu sein.


----------

