IO-Warrior-Java-Projekt


Neu


Inhalt


Die Aufgabe

Mit dem IO-Warrior der Firma Code Mercenaries Hard- und Software GmbH ist ein generischer, universeller I/O Controller für die USB Schnittstelle verfügbar. Es stehen vier Starterkits mit einem SDK zur Verfügung, welche unter den Betriebssystemen Windows,Linux und MacOS eingesetzt werden können.
Die im SDK mitgelieferte Software unterstützt unter Windows jedoch nur Microsoft Visual C++ und den Borland C Compiler, und Programmieren in Delphi oder VisualBasic ist auch nicht jedermanns Sache (alle vorgenannten Softwareprodukte kosten Geld und sind dadurch nicht in jedem Haushalt vorhanden ;-).

Es soll also eine Möglichkeit geschaffen werden, die Boards aus den Starterkits (oder auf Basis der IOW-Chips designten Lösungen) unter Verwendung der Programmiersprache Java ansteuern zu können. Dabei soll die gebotene Funktionalität der Chips in sinnvollen Methoden und Klassen gekapselt werden.

zurück zum Inhalt

Die Lösung

Da mit dem SDK bereits eine DLL (iowkit.dll) mit den Grundfunktionen geliefert wird, ist es sinnvoll, diese auch zu nutzen. Um diese Funktionen ansprechen zu können, verwende ich die so genannte Java Native Interface- (JNI) Bindung. Weiterhin sind Java Klassen und Interfaces, welche die Möglichkeiten der IO-Warrior Kontroller repräsentieren, zu erstellen.

Das SDK enthält einen rudimentären Java Support. Das bedeutet, dass die Funktionen der Wrapper Bibliothek bereits in der iowkit.dll enthalten sind. Neu ist außerdem das Äquivalent zur iowkit.dll für Linux, die libiowkit.so. Somit ist die Einschränkung, iowj funktioniere nur unter dem Betriebssystem Windows, aufgehoben.

zurück zum Inhalt

Bekannte Fehler und Einschränkungen

Normalerweise wird Software ausgeliefert, wenn sie fertig ist. IOWJ ist aber noch nicht fertig. Ich habe mich dennoch für eine Veröffentlichung entschieden, weil es vermutlich noch Monate oder Jahre dauern wird, ehe dieser Zustand erreicht ist und so eine frühere Reaktion der potenziellen Nutzer möglich wird.

ID Fehler/Einschränkungen Behoben
F1 IOWJ ist nur unter dem Betriebssystem Windows einsetzbar. 0.9.3
F2 Die I2C-Special Mode Funktion funktioniert zur Zeit nur mit einem Chip zur selben Zeit. 0.9.4
F3 Die SPI-Special Mode Funktion ist als Basisklasse vorhanden, jedoch ohne Funktion. 0.9.4
F4 Special Mode Funktion KEY Matrix ist nicht vorhanden. 0.9.4
F5 Special Mode Funktion LED Matrix ist nicht vorhanden. nicht geplant
E1 Bei der schnellen Zeichenausgabe auf LCD von mehreren Threads aus kann es zu Darstellungsfehlern kommen (siehe ThreadTest.java im test package). 0.9.4

zurück zum Inhalt

Javadoc

Die Klassen und die Javadoc sind noch nicht endgültig und können in Zukunft völlig anders aussehen (nicht wirklich anders, aber vielleicht schöner ;-).

Zur Javadoc geht's hier entlang.
Die alte Javadoc (0.9.4) gibt es noch hier.

zurück zum Inhalt

Download

Zur Zeit ist die vierte Version (0.9.5rc1) "downloadbar". Diese ist auf das letzte SDK abgestimmt und funktioniert mit der Iowkit Library, Version 1.4. Diese IOWJ Version unterstützt auch den IO-Warrior 56. Dann ist jedoch die Iowkit Library, Version 1.5 zu verwenden. Wird der IOW 56 Support nicht benötigt, dann empfehle ich die Version 1.4 der dll zu benutzten. Diese bietet mehrere Vorteile. Getestet wurde unter WindowsXP.

Downloadmöglichkeiten:

iowj0.9.5rc1.jar enthält unter anderem einen Klasse ListDevices. Diese Klasse ist im Manifest als Hauptklasse hinterlegt und wird bei folgendem Aufruf direkt gestartet:

java -jar iowj0.9.5rc1.jar
Sind IO-Warrior Devices per USB angeschlossen und wird die Library Version 1.5 verwendet, könnte der Output wie folgt aussehen:
------- Version of iowkit library is 'IO-Warrior Kit V1.5' --------
Number of plugged IO-Warrior device(s): 3
Device1: IOW40,Handle[47775764],Id[5376],Rev[1021],Serial[00002632]
Device2: IOW24,Handle[47801132],Id[5377],Rev[1011],Serial[00000153]
Device3: IOW56,Handle[47826500],Id[5379],Rev[1001],Serial[0000011D]
Sind keine Devices angeschlossen, wird folgende Meldung ausgegeben:
------- Version of iowkit library is 'IO-Warrior Kit V1.5' --------
Cannot find any plugged IO-Warrior device!
Damit das ganze funktioniert, sind zwei Bedingungen zu erfüllen:

Entwickelt und getestet ist das ganze unter WindowsXP und j2sdk1.4.2_06.

zurück zum Inhalt

Download der älteren Version

Zur Zeit ist die dritte Version (0.9.4) "downloadbar". Diese ist auf das neue SDK abgestimmt und funktioniert auch nur mit der Iowkit Library, Version 1.4. Sonst funktioniert IOWJ schon relativ gut und ist unter Windows XP und Suse Linux 9.3 getestet.

Downloadmöglichkeiten:

Das Archiv Iowj.zip in das Workspace Verzeichnis von Eclipse entpacken und ein neues Projekt "IOWJ" anlegen. Das Projekt enthält neben der IOWJ Bibliothek auch das example und test package mit einigen Beispielen.

iowj0.9.4.jar enthält unter anderem einen Klasse ListDevices. Diese Klasse ist im Manifest als Hauptklasse hinterlegt und wird bei folgendem Aufruf direkt gestartet:

java -jar iowj0.9.4.jar
Sind IO-Warrior Devices per USB angeschlossen, könnte der Output wie folgt aussehen:
Version of iowkit library is 'IO-Warrior Kit V1.4'
Number of scanned devices: 4
Device1: IOW40,Handle[268487944],Id[5376],Rev[1003],Serial[00000000]
Device2: IOW40,Handle[268488260],Id[5376],Rev[1011],Serial[0000038A]
Device3: IOW24,Handle[268488576],Id[5377],Rev[1011],Serial[0000016F]
Device4: IOW24,Handle[268488892],Id[5377],Rev[1011],Serial[00000153]
Sind keine Devices angeschlossen, wird folgende Meldung ausgegeben:
Cannot find any connected IOW device!
Damit das ganze funktioniert, sind zwei Bedingungen zu erfüllen:

Entwickelt und getestet ist das ganze unter WindowsXP und j2sdk1.4.1.

zurück zum Inhalt

Community

Jeder Interessierte kann sich an diesem Projekt beteiligen, um Verbesserungen, Erweiterungen oder persönliche Wünsche einzubringen. Ziel ist es, ein Produkt zu entwickeln, das der Aufgabenstellung entspricht und optimale Funktionalität bei geringem Aufwand gewährleistet.

Grad des Interesses:

Nr Grad Bedeutet Zusatz
1 total interessiert Das Thema finde ich interessant und ich mache mit. Gebiet(e)
2 sehr interessiert Nach so einer Lösung habe ich gesucht und würde sie auch einsetzen. Aber mitentwickeln kann ich nicht (ist einfach nicht meine Richtung ...) -
3 interessiert Das Thema finde ich Interessant. Wie wird daraus werden? Verwendung dafür habe ich aber nicht. -
4 nicht interessiert Ich kann mir nicht vorstellen, das der Zweck erfüllt werden kann und ich würde so etwas auch nicht benutzen. warum?
5 Unfug Wer kommt denn auf solchen Ideen? Das Problem löse ich anders. Für so etwas benutze ich doch lieber M$-Produkte. warum?

Also, wen das hier interessiert, der schicke doch bitte eine Mail (im Betreff "IOWJ x" ,x entspricht der Nummer des Grades) an thomas@wagner-ibw.de

zurück zum Inhalt

Copyright

Alle veröffentlichten Ideen und Lösungen können von jedermann (und Frau) frei verwendet werden. Die Software ist frei zugänglich und steht unter der GPL.

zurück zum Inhalt

Haftungsausschluss

Die Software wird so zur Verfügung gestellt, wie sie ist. Die Benutzung der hier veröffentlichten Software erfolgt auf eigene Gefahr. Für etwaige Schäden, die durch Benutzung dieser Software entstehen, wird keine Haftung übernommen. Eine Nutzung in sicherheitskritischen Anwendungen (Medizin, Luftfahrt, ...) ist untersagt.

zurück zum Inhalt

Danksagung

Mein besonderer Dank gilt:

zurück zum Inhalt

Das Starterkit (IO-Warrior 40)

(Picture was stolen from www.codemercs.com ;-)


zurück zum Inhalt zurück zur Startseite
© 2003-2020 by Thomas Wagner, Mail: thomas at wagner-ibw dot de (aktuallisiert: 25.03.2020)