Ansteuerung von USB-Schnittstellen via HDI mit Java

Ansteuerung von USB-Schnittstellen via HDI mit Java

Thomas Wenzlaff


Der weit verbreitete Universal Serial Bus (USB) wird für die Ansteuerung externer Geräte, wie zum Beispiel Mäuse, Tastaturen, Drucker und andere Hardware (Bluetooth HID), verwendet. Die Geräte können dank der Hot-Plugging-Fähigkeit im laufenden Betrieb miteinander verbunden und sogar über USB noch mit Energie versorgt werden. Seit 2011 hat sich USB in der Version 3.0 auf dem Massenmarkt verbreitet, trotz der von Apple eingeführten Thunderbolt-Schnittstelle in direkter Konkurrenz dazu.

An der Haltestelle

Die USB-Schnittstellen benötigen für jedes Betriebssystem eigene Device-Treiber. Und da fängt das Elend für die Entwickler schon an: Device-Treiber in C oder C++ programmieren und das für verschiedene Plattformen mit verschiedenen 32- und 64-Bit-Systemen, nur um auf den USB-Port zuzugreifen, und das alles noch testen – das will man als Java-Entwickler eigentlich nicht. Es ist seit einiger Zeit auch nicht mehr nötig, denn seit 2010 gibt es das „javahidapi“-Projekt [1], das einen JNI-Wrapper über die C-/C++-Device-Treiber für Windows, Linux, Mac und auch andere Systeme zur Verfügung stellt. Das javahidapi besteht aus nur einem JAR, das unter [2] kostenlos geladen werden kann. Optional können von dort zusätzlich der Sourcecode und die Javadoc geladen werden. Wer Lust hat, kann sich auch alles aus dem Sourcecode selbst zusammenbauen. Dies ist aber normalerweise nicht nötig. Dieses eine JAR enthält auch alle nötigen nativen Treiber. Für Windows sind das die nötigen *.ddl, für Linux die *.so und für Mac die *.jnilib. Auch wird das Projekt aktuell noch weiterentwickelt, und eventuell nötige Fixes werden bereitgestellt. So ist gerade in Issue 48 vom 01.02.2013 ein Thread eröffnet worden, der eine Version für den beliebten ARM-Prozessor des Raspberry Pi [3] bereitstellt.

Die aktuelle Version 1.1. [4] steht unter sehr liberalen Softwarelizenzen. Es kann zwischen der GNU-, BSD- und einer HIDAPI-Lizenz gewählt werden. Damit wird der weiten Verbreitung in vielen Projekten Vorschub geleistet.

Der Bus fährt pünktlich los

Um auf den USB-Port zugreifen zu können, muss nur das 199 KB große hidapi-1.1.jar geladen und dem Class­path hinzugefügt werden. Das ist für die Installation schon alles. Dann muss das API einmalig initialisiert werden, damit die nativen Treiber für die jeweiligen Betriebssysteme geladen werden. Dazu gibt es in der Klasse Class­PathLibraryLoader eine entsprechende Methode, die das alles automatisch erledigt. Es reicht also dieser Aufruf in der jeweiligen K...

Ansteuerung von USB-Schnittstellen via HDI mit Java

Ansteuerung von USB-Schnittstellen via HDI mit Java

Thomas Wenzlaff


Der weit verbreitete Universal Serial Bus (USB) wird für die Ansteuerung externer Geräte, wie zum Beispiel Mäuse, Tastaturen, Drucker und andere Hardware (Bluetooth HID), verwendet. Die Geräte können dank der Hot-Plugging-Fähigkeit im laufenden Betrieb miteinander verbunden und sogar über USB noch mit Energie versorgt werden. Seit 2011 hat sich USB in der Version 3.0 auf dem Massenmarkt verbreitet, trotz der von Apple eingeführten Thunderbolt-Schnittstelle in direkter Konkurrenz dazu.

An der Haltestelle

Die USB-Schnittstellen benötigen für jedes Betriebssystem eigene Device-Treiber. Und da fängt das Elend für die Entwickler schon an: Device-Treiber in C oder C++ programmieren und das für verschiedene Plattformen mit verschiedenen 32- und 64-Bit-Systemen, nur um auf den USB-Port zuzugreifen, und das alles noch testen – das will man als Java-Entwickler eigentlich nicht. Es ist seit einiger Zeit auch nicht mehr nötig, denn seit 2010 gibt es das „javahidapi“-Projekt [1], das einen JNI-Wrapper über die C-/C++-Device-Treiber für Windows, Linux, Mac und auch andere Systeme zur Verfügung stellt. Das javahidapi besteht aus nur einem JAR, das unter [2] kostenlos geladen werden kann. Optional können von dort zusätzlich der Sourcecode und die Javadoc geladen werden. Wer Lust hat, kann sich auch alles aus dem Sourcecode selbst zusammenbauen. Dies ist aber normalerweise nicht nötig. Dieses eine JAR enthält auch alle nötigen nativen Treiber. Für Windows sind das die nötigen *.ddl, für Linux die *.so und für Mac die *.jnilib. Auch wird das Projekt aktuell noch weiterentwickelt, und eventuell nötige Fixes werden bereitgestellt. So ist gerade in Issue 48 vom 01.02.2013 ein Thread eröffnet worden, der eine Version für den beliebten ARM-Prozessor des Raspberry Pi [3] bereitstellt.

Die aktuelle Version 1.1. [4] steht unter sehr liberalen Softwarelizenzen. Es kann zwischen der GNU-, BSD- und einer HIDAPI-Lizenz gewählt werden. Damit wird der weiten Verbreitung in vielen Projekten Vorschub geleistet.

Der Bus fährt pünktlich los

Um auf den USB-Port zugreifen zu können, muss nur das 199 KB große hidapi-1.1.jar geladen und dem Class­path hinzugefügt werden. Das ist für die Installation schon alles. Dann muss das API einmalig initialisiert werden, damit die nativen Treiber für die jeweiligen Betriebssysteme geladen werden. Dazu gibt es in der Klasse Class­PathLibraryLoader eine entsprechende Methode, die das alles automatisch erledigt. Es reicht also dieser Aufruf in der jeweiligen K...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang