Einleitung

Der GNU DataExplorer ist ein Werkzeug zum Aufnehmen, Betrachten und Auswerten von Daten aus Geräten, die es erlauben Daten entweder über eine serielle Schnittstelle auszulesen oder ihre Daten durch Datenimport zugänglich machen. Der GNU DataExplorer ist unter vielen Betriebssystemen mit 32 und 64 Bit lauffähig (GNU/Linux, Windows, Mac OS X). Sprachenunterstützung ist vorhanden, wobei aktuell Deutsch und Englisch vorhanden sind.

Ein wesentlicher Aspekt für die Entwicklung war der systemübergreifende Gedanke. Für alle im Privatgebrauch befindlichen Computerbetriebssysteme soll die Möglichkeit bereitgestellt werden, Messdaten von den verschiedensten Gelegenheiten grafisch aufzubereiten. Seien es Ströme und Spannungen von Batterieladegeräten, Daten von Elektromotoren oder Telemetriedaten aus dem Bereich des Modellbaus. Deshalb basiert die Implementierung auf Java unter Verwendung der freien jSerialComm/RXTXcomm Bibliothek, für die serielle Anbindung und der eclipse SWT Bibliothek für die Benutzeroberfläche. Für beide Basisbibliotheken gibt es die native Anbindung für Windows, GNU/Linux und Mac OS X. Entwickelt wird mit einer frei verfügbaren eclipse IDE (integrated development environment) und einer Java 6 runtime.

Wie sind die seriellen Ports auf den verschiedenen Betriebssystemen benannt:


Warum freie Software unter der GPL

Im wesentlichen gibt es dafür zwei Gründe. Erstmal wird der Gedanke freier Software weitergetragen. Für den GNU DataExplorer sind die Schnittstellen für eine Geräteanbindung und das Datenmodell frei zugänglich. Das ermöglicht Eingriffe in den Anwendungskerncode, um Fehler zu beseitigen oder Funktionserweiterungen einzubringen. Es wird möglich weitere Geräte anzubinden, die mir selbst nicht zur Verfügung stehen.
Die gerätespezifischen Komponenten sind als Module extra gehalten und werden zu Laufzeit des Programms dynamisch geladen (Plug-in). Das ermöglicht eine Implementierung der Gerätefunktionalität unabhängig von der Kernkomponente. Es gibt offene Beispielimplementierungen an die man sich halten kann. Um ein Gerät in die Anwendung einzubinden erfordert etwa drei Dinge: das Gerät selbst, Erfahrung mit deren Gebrauch und die Spezifikation der Schnittstellenkommunikation (und natürlich Programmierkenntnisse).


Ein paar Worte zu Java

Dadurch, dass ein Javaprogramm in einer eigens dafür gestarteten "Virtual Machine" (VM) läuft, ist die Laufzeitumgebung in erster Näherung auf allen Systemplattformen gleich. Deshalb kann ein Javaprogramm fast überall laufen. Die VM bestimmt auch den zur Verfügung gestellten Speicher. Anders als z. B. ein in C geschriebenes Programm kann ein Javaprogramm nur auf den Speicher zurückgreifen, der beim Start der VM angegeben wurde. Das bedeutet, dass einem Javaprogramm, immer beim Starten den Speicherverbrauchsrahmen mitgegeben werden muss (-Xms/-Xmx). Gibt man hier nichts an, ist ein maximaler Wert von 128 MByte eingestellt. Nun hört sich VM, wie ein eigenes System an, aus dem man nicht ausbrechen kann. Wäre dem so, gäbe es keine serielle Kommunikation und keine Grafikbibliothek, zum flotten Anzeigen. Früher war dem auch so, deshalb eilt einem Javaprogramm auch immer der Ruf voraus, dass Javaprogramme langsam sind. Durch die "just in time" (JIT)-Übersetzung beim Start ist dieses Manko schon lange ausgeglichen. Javaprogramme stehen anderen direkt in Maschinensprache übersetzten Programmen in nichts nach. Durch das "Java Native Interface" kann man sozusagen in Java auf die Hardware durchgreifen. Hier sind es dann meist auch C-Programme, die hier angesprochen werden. Das ist bei dem verwendeten jSerialComm/RXTXcomm und beim SWT der Fall.
Wie man sieht bekommt man mit der Programmiersprache Java, beziehungsweise der Laufzeitumgebung, eine unglaubliche Anzahl von Bibliotheken zur Verfügung gestellt. Des weiteren gibt es unter der GPL Lizenz bereitgestellte Bibliotheken, die auch in kommerziellen Anwendungen verwendet werden dürfen.

weiter ==>>