JAVA-gestützte Messsoftware für Spektrometer unter Verwendung von Embedded Device Servern Diplomarbeit vorgelegt am: 21.07.05 Studienbereich: Ingenieurwissenschaften Studienrichtung: praktische Informatik / Multimedia Kurs: PI02 von: Constanze Michaelis Stauffenbergstraße 16 07747 Jena Matrikelnummer: G020169PI Ausbildungsstätte: JETI Technische Instrumente GmbH Wildenbruchstraße 15 07745 Jena Gutachter: Dipl.-Ing. Thomas Morgenstern (JETI GmbH) Dr. Karsten Henke (TU Ilmenau) Inhaltsverzeichnis 1 Einleitung 1.1 1.2 1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Vorbetrachtungen 2.1 2.2 1 2 3 Vorgehensweise und Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . Thematische Abgrenzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 3 Ethernet-Spektrometer-System 3.1 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 3.1.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1.1 IEEE 802.3 bzw 802.3af - Interface . . . . . . . . . . . . . . 6 6 Embedded Device Server Digi Connect METM . . . . . . . . RS232-Interface . . . . . . . . . . . . . . . . . . . . . . . . Spektrometereinheit . . . . . . . . . . . . . . . . . . . . . . 7 7 8 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 3.1.2.2 Firmware des Embedded Device Servers . . . . . . . . . . . 3.1.2.3 Firmware der Spektrometereinheit . . . . . . . . . . . . . . Kommunikation der Systemkomponenten . . . . . . . . . . . . . . . . 12 12 13 3.1.3.1 3.1.3.2 TCP/IP Stack . . . . . . . . . . . . . . . . . . . . . . . . . IP-Adresse . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 16 3.1.3.3 Portnummer . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3.4 Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zusammenwirken der Komponenten . . . . . . . . . . . . . . . . . . . . . . . 16 16 18 3.1.1.2 3.1.1.3 3.1.1.4 3.1.2 3.1.3 3.2 4 Entwicklungsumgebung 19 4.1 4.2 Digi Connect METM Integration Kit . . . . . . . . . . . . . . . . . . . . . . . Spektrometer specbos3000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 22 4.3 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 I 5 JETI Measurement Applet 5.1 5.2 23 Programmablaufplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einzelne Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 NetSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 28 29 5.2.2 5.2.3 Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bottom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 33 5.2.4 5.2.5 5.2.6 RightPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JetiMenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeviceInfoDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 36 36 5.2.7 5.2.8 DiagramOptionsDialog . . . . . . . . . . . . . . . . . . . . . . . . . . PasswordDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 38 5.2.9 FirmwareUpdateDialog . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.10 SaveOptionDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.11 PrintDiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 39 39 5.2.12 JetiHelp - deprecated . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.13 AboutDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.14 JetiSliderUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 40 41 5.2.15 AppIcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.16 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 42 5.2.17 Measurement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.18 CSVFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.19 CSVFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 44 45 5.2.20 Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.21 Spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 46 5.2.22 LineInterpol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6 Implementierung 6.1 Laden auf Embedded Device Server . . . . . . . . . . . . . . . . . . . . . . . 6.2 Ausführen des Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 48 48 6.3 6.4 Einbindung in das Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . Test im Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 50 6.4.1 6.4.2 50 50 Browser unter Microsoft Windows . . . . . . . . . . . . . . . . . . . . Browser unter Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Fazit 51 A Dokumentation A.1 Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 55 A.2 CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 II Abbildungsverzeichnis 1.1 möglicher Einsatz von Ethernet-Spektrometern . . . . . . . . . . . . . . . . . 2 3.1 schematischer Aufbau des Systems . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 3.3 3.4 Signaldefinition der RS232-Schnittstelle . . . . . . . . . . . . . . . . . . . . . Zusammenhang JVM und Java Code . . . . . . . . . . . . . . . . . . . . . . . Beziehungen zwischen den wichtigen Protokollen . . . . . . . . . . . . . . . 7 9 13 3.5 Erstellen einer Socketverbindung . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.1 Hardware der Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . 19 4.2 4.3 4.4 Konfiguration der IP-Adresse, Netzmaske und Gateway . . . . . . . . . . . . . Konfiguration der seriellen Eigenschaften des TCP-Ports . . . . . . . . . . . . Datei-Upload des Embedded Device Servers . . . . . . . . . . . . . . . . . . . 20 21 21 5.1 5.2 Measurement Applet, Referenzspektrum, Spline Interpolation . . . . . . . . . Übersicht Programmablaufplan . . . . . . . . . . . . . . . . . . . . . . . . . . 23 25 5.3 5.4 5.5 Programmablauf: Verbindungsaufbau . . . . . . . . . . . . . . . . . . . . . . Programmablauf: Messung auslösen . . . . . . . . . . . . . . . . . . . . . . . Programmablauf: Diagramm anzeigen . . . . . . . . . . . . . . . . . . . . . . 26 26 27 5.6 5.7 Vereinfachtes Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . Komponente Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 29 5.8 UI des Bottom Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9 UI des RightPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10 Menüleiste des Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 36 5.11 DeviceInfoDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.12 DiagramOptionsDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 37 5.13 PasswortDialog mit Meldung bei Falsch-Eingabe . . . . . . . . . . . . . . . . 5.14 Dialog für das Firmware Update . . . . . . . . . . . . . . . . . . . . . . . . . 5.15 Dialog für das Speichern der Spektren . . . . . . . . . . . . . . . . . . . . . . 38 38 39 5.16 Hilfe mit JavaHelp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.17 Oberfläche des Schalters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 41 6.1 49 Dialog zum Bestätigen des Zertifikats . . . . . . . . . . . . . . . . . . . . . . III Abkürzungsverzeichnis ADC Analog to Digital Converter API Application Programming Interface COM Communication Port CSMA/CD Carrier Sense Multiple Access/Collision Detection CSV Comma Separated Value DHCP Dynamic Host Configuration Protocol DNS Domain Name Service EDS Embedded Device Server FTP File Transfer Protocol HTML Hypertext Markup Language HTTP Hypertext Transmission Protocol ICMP Internet Control Message Protocol IEEE Institution of Electrical and Electronical Engineers IP Internet Protocol JDK Java Development Kit JRE Java Runtime Environment JVM Java Virtual Machine PD Powered Device PoE Power over Ethernet PSE Power Sourcing Equipment IV SMTP Simple Mail Transfer Protocol TCP Transmission Control Protocol UDP User Datagram Protocol URL Uniform Ressource Locator XML Extensible Markup Language V Kapitel 1 Einleitung 1.1 Motivation Spektrometer sind Messgeräte, die Intensitäten von Licht und dessen Verhalten an den Proben wiedergeben. Bisher sind mit JETI Spektrometern der specbos und spectraval Serie nur Messungen am Standort des Messobjektes mit einem angeschlossenen PC oder Pocket PC möglich. In beiden Fällen kann Fernwartung und Fernmessung nur mit zusätzlicher Hard- und Software erfolgen. Um Fernmessung zu ermöglichen, ist die Anbindung an ein Netzwerk unumgehbar. Bis vor zwei Jahren musste für embedded Geräte eine Ethernet-Schnittstelle entwickelt werden. Diese wurde mit einem Ethernet Controller ausgestattet, der die Netzwerkpakete an den Mikrocontroller im embedded Gerät weiterleitet. Der Mikrocontroller musste einen TCP/IP Stack implementieren, um in dem Netzwerk kommunizieren zu können. Die Entwicklung der Ethernet-Schnittstelle wird mit dem Einsatz eines Embedded Device Servers ersetzt. Durch den Einsatz von Embedded Device Servern wird es möglich, Spektrometer direkt in das Netzwerk einzubinden. Die Spektrometer müssen angesteuert und die Messdaten ausgewertet werden. Da im Netzwerk Rechner mit unterschiedlichen Betriebssystemen, wie UNIX, Linux und Microsoft Windows vertreten sind, soll die Software zum Steuern der Messgeräte unabhängig von der Plattform sein. 1 1.2 Zielsetzung Das Ziel der Arbeit besteht darin, eine plattformunabhängige Software zu schreiben, die spektroskopische Messungen durchführen und die Daten für den Benutzer aufbereiten soll. Die Messdaten werden sowohl grafisch, in einem Diagramm, als auch numerisch, in Textfeldern, ausgegeben. Die Steuerung und Auswertung erfolgt mit Hilfe eines Java Applets. Die Daten sollen in CSV-Dateien (CSV - Comma Separated Value) auf dem Rechner, der das Applet aufruft, abgespeichert werden. Verwendet werden soll dieses Format, um die Messdatenauswertung mit Kalkulationsprogrammen, wie OpenOffice Calc oder Microsoft Excel, zu ermöglichen. Abbildung 1.1: möglicher Einsatz von Ethernet-Spektrometern 2 Kapitel 2 Vorbetrachtungen 2.1 Vorgehensweise und Aufbau der Arbeit Die Forderung nach einer plattformunabhängigen Anwendung lässt auf die Verwendung der Programmiersprache Java schließen. Das Messgerät soll in einem Netzwerk betrieben werden. Die Protokolle zur Kommunikation im Netzwerk sind im TCP/IP Protokollstapel enthalten. Die Kommunikation im Netzwerk ist nicht echtzeitfähig, daher können Daten verloren gehen. Dieses Problem soll in Zukunft in der Firmware der Spektrometereinheit gelöst werden, indem alle Berechnungen für die Spektren in der Firmware durchgeführt werden. Im Internet werden Webseiten, die auf Servern abgelegt sind, mit Browsern abgerufen. Hierfür bietet Java die Möglichkeit eine Anwendung in eine Webseite einzubinden. Diese Anwendungen nennt man Applets. Da Java Applets vom Server herunter geladen und auf dem Client ausgeführt werden, sind sie als sicherheitskritisch eingestuft. Das bedeutet, dass sie nicht auf Systemfunktionen, wie zum Beispiel das Lesen oder Schreiben von Dateien, zugreifen dürfen. Um auf diese Funktionen nicht zu verzichten, wird das Applet signiert1. Zunächst muss die Benutzeroberfläche geschaffen werden, die an die Fenstertechnik der einzelnen Betriebssysteme angepasst ist. Dazu gibt es in Java eine Bibliothek, die die verschiedenen Buttons, Textfelder und Menüs bereitstellt. Die Verbindung zum Gerät wird hergestellt, um die Geräteparameter auszulesen und Messungen auszulösen. Nach der Abfrage der Messdaten muss die Pixel-Wellenlängen-Zuordnung erfolgen. Somit erhält man die x-Koordinaten für das Diagramm. Da die Werte in 5nm Schritten vom Gerät gemessen werden, muss interpoliert werden, um einen genauen Graphen zu zeichnen. 1 siehe Kapitel 3.1.2.1, Seite 10 3 Im dritten Kapitel wird das System bezüglich seiner Hard- und Softwarekomponenten und deren Zusammenwirken erläutert. In einem weiteren Kapitel wird die Entwicklungsumgebung vorgestellt. Im fünften Kapitel werden die Klassen anhand eines Klassendiagramms erläutert. Die Implementierung des Applets beinhaltet das sechste Kapitel. Dabei wird die Software auf unterschiedlichen Betriebssystemen mit verschiedenen Browsern getestet. Im abschließenden Kapitel wird ein Fazit gegeben. 2.2 Thematische Abgrenzung Die Arbeit befasst sich mit der Realisierung der Software und stellt die Hardware des EthernetSpektrometers vor. Die Funktionalität der Software wird beschrieben und dabei die Programmierumsetzung erläutert. In der Implementierungsphase soll gezeigt werden, dass Messungen über das interne Firmennetzwerk möglich sind. Dabei wird nicht der Versuch unternommen, von außerhalb, also vom Internet, die Verbindung zum Gerät aufzunehmen, da spezielle Verfahren notwendig sind, um aus einem öffentlichen auf ein privates bzw. firmeninternes Netz zuzugreifen. Für die Einbindung der Messgeräte in das Internet werden Möglichkeiten zur Umsetzung aufgezeigt. 4 Kapitel 3 Ethernet-Spektrometer-System Das System des Ethernet-Spektrometers wird in diesem Kapitel anhand der Abbildung 3.1 beschrieben. Zunächst werden die einzelnen Komponenten vorgestellt. Im zweiten Teil dieses Kapitels wird auf das Zusammenwirken der Komponenten eingegangen. Abbildung 3.1: schematischer Aufbau des Systems 5 3.1 Komponenten Die Komponenten des Systems bestehen aus einem PC, einem Embedded Device Server (EDS) und einer Spektrometereinheit. Diese wiederum lassen sich in ihre Hard- und Softwarebestandteile und deren Kommunikation untereinander zerlegen. 3.1.1 Hardware Die Hardware der Komponenten umfasst den PC, den EDS und die Spektrometereinheit. Dazu gehört ebenfalls die serielle Schnittstelle und die Ethernet-Schnittstelle für die Kommunikation. Die Hardware des Computers wird nicht aufgeführt, da jeder PC mit einer Ethernet-Schnittstelle verwendet werden kann. 3.1.1.1 IEEE 802.3 bzw 802.3af - Interface Der Netzwerkstandard IEEE 802.3 basiert auf dem Carrier Sense Multiple Access / Collision Detection (CSMA/CD) Verfahren. Dieses Zugriffsverfahren wird durch Trägerempfindlichkeit, Mehrfachzugriff und Kollisionserkennung gekennzeichnet. Trägerempfindlich bedeutet zum einen, dass das Netzwerk aktiv ist, wenn Trägersignale vorhanden sind. Zum zweiten kann ein Knoten nicht senden, wenn er Daten empfängt. Der Knoten kann nur dann senden, wenn keine Trägersignale mehr präsent sind. Da immer nur einer der Knoten senden kann, kommt es zur Datenkollision, wenn ein weiterer Knoten sendet. Um diese Kollisionen zu unterbinden, wird die Kollisionserkennung eingesetzt. Das heißt, dass die Übertragung bei einer Kollision abgebrochen wird und nach einer zufällig langen Wartezeit das Datenpaket erneut verschickt wird. Als Protokollstapel verwendet IEEE 802.3 den TCP/IP Stack1 . Mit dem IEEE 802.3af wurde der IEEE 802.3 Standard auf die Stromversorgung via Netzwerk erweitert. Dieser „Power over Ethernet (PoE)“ Standard bietet den Vorteil, nur ein Kabel zum Gerät führen zu müssen. Dabei wird ein Power Sourcing Equipment (PSE) und ein Powered Device (PD) benötigt. Das PSE liefert den Strom, den das PD verbraucht. Für die Verkabelung wird die bestehende Netzwerkverkabelung genutzt. Das PSE liefert die Versorgungsspannung im Bereich von 44V bis 57V mit einem Strom von 350mA bis 400mA an das PD. Das PSE arbeitet in drei Modi. Im Detektionsmodus werden vom PSE zwei Spannungen im Bereich von 1, 4V bis 10, 1V an das Netzwerkgerät anlegt. Dabei wird die Strommessung vom PSE an zwei Punkten aufgezeichnet. Entspricht der errechnete Signaturwiderstand dem im Standard mit 25, 5kΩ angegebenen, wird in den Klassifikationsmodus übergegangen. In diesem Modus wird das PD anhand des Stromverbrauchs klassifiziert. Es gibt fünf Klassen, die jeweils über den Klassifikationswiderstand erkannt werden. Ist das PD einer Klasse zugeordnet, schaltet das PSE in den Power Modus2. 1 2 siehe Kapitel 3.1.3.1, Seite 13 vgl. [Mic04], Seite 15 6 Der EDS verfügt sowohl über das Interface, das im IEEE 802.3 Standard definiert ist, kann aber auch als PD, nach 802.3af, arbeiten. 3.1.1.2 Embedded Device Server Digi Connect METM Der Digi Connect METM ist ein vom Unternehmen Digi International entwickelter Embedded Device Server (EDS). Der Server verfügt über eine 10/100Base-T Ethernet Schnittstelle und eine PoE Schnittstelle3. 10/100Base-T bedeutet, dass es sich um eine Netzwerkschnittstelle nach IEEE 802.3 handelt, die mit 10MBit bzw 100MBit betrieben werden kann. Weiterhin beinhaltet der EDS eine serielle Schnittstelle, deren Spezifikation im RS232 Standard4 fest gehalten ist. Dieses Interface wird für die Kommunikation mit Einheiten, wie beispielsweise die Spektrometereinheit, benötigt. 3.1.1.3 RS232-Interface Der Kommunikationsstandard RS232 beschreibt die serielle Schnittstelle an Computern. Dem elektrischen Standard liegt die negative bipolare Logik zugrunde. Das bedeutet, dass die logische „1“ von Spannungen zwischen −25V und −3V und die logische „0“ von Spannungen zwischen +3V und +25V repräsentiert wird. Dem Standard entsprechend gibt es ein Start-, ein Stopp- und ein Prüfbit.5 Signal Erläuterung GND (Ground) TXD (Transmit Data) RXD (Receive Data) Masseleitung Signalleitung um Daten vom Host zum Gerät zu senden Signalleitung um Daten vom Host zu empfangen RTS (Request To Send) Signal ist aktiv, wenn das Gerät für das Empfangen von Daten vorbereitet wird CTS (Clear To Send) Signal ist aktiv, wenn das Gerät den Host informiert, dass es an ihn Daten sendet. RTS und CTS sind HandshakeSignale, die den Datenfluss des Geräts steuern. DSR (DCE Ready) DCE ist das Gerät (Modem), Signal ist aktiv, wenn das Modem mit einer aktiven Telefonleitung verbunden ist DTR (DTE Ready) CD (Carrier Detect) DTE ist der Host, Signal ist aktiv, wenn der Kommunikationskanal geöffnet werden soll nur relevant, wenn Gerät = Modem RI (Ring Indicator) nur relevant, wenn Gerät = Modem Abbildung 3.2: Signaldefinition der RS232-Schnittstelle Quelle: vgl. [Mic03], Seite 13 3 siehe Absatz 3.1.1.1 siehe Absatz 3.1.1.3 5 vgl. [Mic03], Seite 12 4 7 Auf den Embedded Device Server kann auch über einen RealPort Treiber zugegriffen werden. Dieser virtuelle COM-Port greift auf den COM-Port Treiber des Betriebssystems zu und setzt das Protokoll des COM-Ports in TCP/IP Pakete um. 3.1.1.4 Spektrometereinheit Die Spektrometereinheit besteht aus dem Spektrometer und dem Mikrokontroller, der das Spektrometer steuert. Ein Spektrometer ist ein Messgerät zur Darstellung eines Spektrums im optischen Spektralbereich. Ein Spektrum ist die Darstellung einer physikalischen Größe als Funktion einer Wellenlänge bzw. Frequenz. Das klassische Spektrometer besteht aus einem Eingangsspalt, einem Prisma oder Gitter, einem Ausgangsspalt und einem Detektor. Diese Anordnung erlaubt die Aufspaltung der Strahlung in die enthaltenen Spektraleinheiten. Der Mikrocontroller implementiert eine Firmware, die das Spektrometer steuert. 8 3.1.2 Software Die Software der Komponenten umfasst bei dem PC in erster Linie die Java Virtual Machine (JVM). Auf das Betriebssystem wird nicht eingegangen, da das Applet, aufgrund der JVM von diesem unabhängig arbeitet. Weiterhin werden die Spezifikationen der Firmware des EDS und der Firmware der Spektrometereinheit kurz erläutert. 3.1.2.1 Java Java ist eine plattformunabhängige Programmiersprache. Das heißt, sie ist unabhängig vom Betriebssystem. Um Java Programme ausführen zu können, muss ein Java Runtime Environment (JRE) auf dem PC installiert sein. Das JRE enthält die JVM, die den kompilierten Java Bytecode des Applets für das Betriebssystem interpretiert. Sie ist Schnittstelle zum Betriebssystem und zum Java Programm, wie in Abbildung 3.3 dargestellt. Abbildung 3.3: Zusammenhang JVM und Java Code Objektorientierte Programmierung Die objektorientierte Programmierung baut nicht, wie die prozedurale Programmierung auf Prozeduren und Daten, sondern auf Zuständen, Aktivitäten und Kommunikation auf. In der Objektorientierung gibt es nur Objekte, die sich nach außen einheitlich verhalten und gleichberechtigt sind. Objekte haben Attribute und Methoden. Attribute beschreiben die Eigenschaften des Objektes. Methoden sind die Operationen, die von den Objekten ausgeführt werden. Objekte werden durch die Klassen beschrieben, von denen sie erzeugt werden. Eine Klasse ist eine Schablone, die Objekte gleicher Art beschreibt. In den Klassen können Klassenmethoden und Klassenattribute definiert werden. Klassenmethoden müssen wie Klassenattribute auch, mit dem static-Identifier deklariert werden. Klassenmethoden und -attribute werden auf die Klasse angewendet. Demgegenüber stehen die Objektmethoden und -attribute, die auf die Objekte angewendet werden und keinem zusätzlichen Identifier bedürfen. 9 Ein weiterer Aspekt der Objektorientierung ist die Vererbung. Vererbung heißt, dass die Unterklasse alle Eigenschaften, also Methoden und Attribute, der Oberklasse übernimmt und weitere eigene Eigenschaften deklariert. In Java ist nur die Einfachvererbung möglich, d.h. eine Unterklasse kann nur eine Oberklasse, aber die Oberklasse kann mehrere Unterklassen haben. Die Mehrfachvererbung könnte dazu führen, dass die Methodenaufrufe unter Umständen nicht mehr eindeutig sind. Um trotzdem von mehreren Klassen erben zu können, wurden die Interfaces deklariert. Interfaces entsprechen abstrakten Klassen, außer das in ihnen keine Methoden oder Attribute vordefiniert sein dürfen. Abstrakte Klassen können keine Objekte erzeugen, sie werden als Schablone definiert. Die abstrakten Methoden der Interfaces werden implementiert, während die abstrakten Methoden abstrakter Klassen überschrieben werden. Applets Java Applets sind Applikationen, die mittels Browser aufgerufen werden. Sie werden mittels Applet Tag in eine HTML-Seite eingebunden und laufen in Sandboxes ab. Dieser „Sandkasten“ besteht aus dem Class Loader und dem Java Security Manager. Der Class Loader lädt die Klassen und der Security Manager überwacht den Class Loader. Da Java Applets aus dem Internet geladen werden, werden sie als unsichere Software eingestuft. Java Security Da Java Applets als unsicher eingestuft werden, dürfen sie nicht auf Dateien, Drucker oder andere Peripheriegeräte zugreifen. Um trotzdem Daten abzuspeichern, zu lesen oder zu drucken, muss das Applet signiert werden. Dazu wird ein Zertifikat von einem Trustcenter verwendet. Das Signieren ist vergleichbar mit dem Unterschreiben des Geschäftsführers eines Unternehmens. Das Zertifikat stellt dabei die digitale Unterschrift dar. Ein Trustcenter ist eine Zertifizierungsstelle, der von der Öffentlichkeit vertraut wird. Zu Testzwecken kann mit dem keytool, das im Java Development Kit enthalten ist, ein Testzertifikat erstellt werden. Um das Applet zu signieren, müssen die Klassen in ein Jar-Archiv gepackt werden. Dieses Archiv wird dann mittels Zertifikat mit dem jarsigner, der ebenfalls im JDK enthalten ist, signiert. Beim Aufruf des Applets wird der Nutzer gefragt, ob er das signierte Applet starten will und es werden Informationen zu dem Zertifikat ausgegeben, wie beispielsweise die Gültigkeit. Keytool ist ein Programm zum Generieren und Verwalten von Zertifikaten. Beim Aufruf von keytool -genkey -alias JetiTest2005 in der Kommandozeile wird ein neues Zertifikat mit dem Namen JetiTest2005 generiert. Vor der Generierung des Zertifikats werden die Daten zur erstellenden Person, der Organisation und dem Sitz der Organisation eingetragen und das Passwort festgelegt. Das Passwort wird zum Signieren benötigt. 10 Ein Jar-Archiv ist ein Java-spezifisches, ausführbares Archiv zur Archivierung und Komprimierung von Dateien. Dabei liegt die Kompression bei ca. 50%. Das Jar-Archiv wird mit dem Befehl jar -cvf file.jar classfiles erstellt. Nach der Erstellung des Jar-Archivs kann dieses mittels jarsigner signiert werden. Der Jarsigner ist das Programm zum Signieren von Jar-Archiven. Signiert wird das Archiv mit dem Aufruf von jarsigner file.jar JetiTest2005 Nach Abfrage des Passwortes ist das Jar-Archiv und damit das Applet signiert und kann ausgeführt werden. JavaHelp Das JavaHelp System basiert auf Swing, der ligthweight Komponenten Bibliothek für Java Benutzeroberflächen. Ligthweight bedeutet, dass ohne die betriebssystemabhängigen Funktionen gearbeitet wird. JavaHelp ist ein System, das Entwicklern von Applikationen in Java die Einbindung einer Online Hilfe erleichtert. Für die Online Hilfe sind Zusatzinformationen aus Dateien notwendig. Die Hilfethemen werden mit HTML erstellt und in HTML-Dateien abgelegt, für die eine HelpSet-Datei benötigt wird. In dieser Datei wird mit XML-Syntax festgelegt, in welcher Datei die zu mappenden HTML-Dateien, wo die Scripte für das Inhaltsverzeichnis, den Index und die Suchfunktion liegen. Die Map-Datei ist ebenfalls ein Script in XML. Hier werden die Verknüpfungen zu den in HTML verfassten Hilfethemen hinterlegt. In der XML-Datei für das Inhaltsverzeichnis werden die Links zu den einzelnen Hilfethemen abgelegt. Im Script für den Index werden die Links zu den einzelnen Indexeinträgen festgehalten. Bei der Bereitstellung der Hilfe mit JavaHelp treten Schwierigkeiten auf, da das JavaHelp System nicht im JDK bzw. JRE enthalten ist und daher extra bereitgestellt werden muss. Für Applets gibt es zwei Möglichkeiten. Entweder der Anwender installiert das Paket selbst und setzt den Classpath oder das JavaHelp System wird auf dem Server bereitgestellt. Da das Setzen des Classpaths sich nur für erfahrene Nutzer empfiehlt, aber der Server nicht ausreichend Speicherkapazität aufweist, muss nach weiteren Lösungen gesucht werden. Da die Hilfethemen bereits für das Hilfesystem in HTML geschrieben wurden, bietet es sich an, die Hilfe in einem HTML-Framework bereit zu stellen. Der Versuch das Framework in einen Java-Dialog einzubinden, um die Seiten per Menüaufruf zu starten, war nicht umsetzbar, da Java keine Komponente bereitstellt, die das Aufrufen von Links zu HTML-Dateien unterstützt. Daher wird ein Link auf der Seite, in die das Applet eingebunden ist, zum Öffnen der Hilfe zur Verfügung gestellt. 11 Hypertext Markup Language Die Hypertext Markup Language (HTML) ist eine Beschrei- bungssprache für Dokumente im World Wide Web. Jede Anfrage eines Browsers an den Server für ein Dokument erfordert eine neue Verbindung mit dem Server. Das HTTP6 dient der Adressierung von Objekten mittels eines uniform resource locators (URL). Die URL wickelt die Interaktion zwischen Client und Server ab und passt die Formate zwischen Client und Server an. HTML wird für das Einbinden des Applets in eine Webseite und für die Hilfe benötigt. Extensible Markup Language Die Extensible Markup Language (XML) ist eine Standardsprache zur Definition von individuellen Markup-Sprachen. Es handelt sich hierbei um eine verknüpfungsorientierte Sprache. Ihre allgemeine Syntax erlaubt die Beschreibung hierarchisch strukturierter Daten und ist sowohl vom Menschen lesbar, als auch vom Computer interpretierbar. XML wird im JavaHelp System für die Erstellung der Steuerdateien des Hilfesystems benötigt. 3.1.2.2 Firmware des Embedded Device Servers Die Firmware des EDS ist mit einem on Board TCP/IP Stack7 mit integriertem Webserver ausgestattet. Sie unterstützt die universelle IP-Adress-Verwaltung mittels statischer IP-Adresse8 oder einer vom DHCP-Server zugeordneten IP-Adresse. Des Weiteren ist die Firmware webbasierend mittels Browser konfigurierbar und hat vordefinierte Profile für die Einstellungen9 . In der Firmware des Servers ist ebenfalls eine Webschnittstellen-Option mit Java Applet Unterstützung integriert. Diese Option ist mit einem Dateisystem von 512kByte Speicherkapazität ausgestattet, wobei für den Applet 400kByte zur Verfügung stehen. Der Server kann, sofern es eingestellt ist, bei Ereignissen eine Mail versenden. Mittels RealPort Treiber kann die Kommunikation mit dem Server auf einen virtuellen COM Port umgeleitet werden. Laut Hersteller läuft diese Umleitung neben Windows auch unter UNIX und Linux. 3.1.2.3 Firmware der Spektrometereinheit Die Firmware der Spektrometereinheit steuert das Spektrometer. Sie liest die Rohdaten aus der Zeile des Spektrometers aus und ist mit definierten seriellen Kommandos ansprechbar. Sie speichert die Geräteparameter ab und überträgt die Daten an eine Auswertesoftware. Die Latenzen im Netzwerk können zu Verzögerungen in der Auswertesoftware führen. Das heißt, neue Daten kommen an, während die Anzeige der vorherigen Daten noch nicht fertig gestellt ist. Daher soll in Zukunft die Auswertung der Daten in die Firmware verlegt werden. 6 siehe Absatz 3.1.3.1, Seite 15 siehe Absatz 3.1.3.1, Seite 13 8 siehe Absatz 3.1.3.2, Seite 16 9 siehe Kapitel 4.1, Seite 20 7 12 3.1.3 Kommunikation der Systemkomponenten Damit der PC mit dem EDS kommunizieren kann, müssen beide den TCP/IP Stack implementieren und über eine IP-Adresse ansprechbar sein. Darauf aufbauend kann ein Socket erzeugt werden, das die IP-Adresse und die Portnummer für den Aufbau der Verbindung benötigt. 3.1.3.1 TCP/IP Stack Der TCP/IP Stack ist ein Protokollstapel zur Kommunikation in Netzwerken. Dieser beinhaltet eine Reihe von Protokollen, die aufeinander aufbauen. Der Stapel ist die Implementation des im Abschnitt 3.1.1.1 auf Seite 6 erläuterten CSMA/CD. Dazu gehören als wichtigste Protokolle das Internet Protocol (IP) und das Transmission Control Protocol (TCP), die dem Protokollstapel den Namen gaben. Abbildung 3.4: Beziehungen zwischen den wichtigen Protokollen Quelle: vgl. [Gol03] Internet Protocol Das IP ist das Basisprotokoll des TCP/IP Stacks. Es ist ein verbindungsloses Protokoll. Verbindungslos bedeutet, dass zwischen der Quelle und der Senke keine virtuelle Verbindung aufgebaut wird. Die Daten werden in Datagramme gepackt. Datagramme sind Pakete mit einer abgeschlossenen Datenmenge. Bei den versendeten Datagrammen wird nicht sichergestellt, ob sie in der Senke ankommen. Aus diesem Grund handelt es sich bei dem IP um ein unsicheres Protokoll. Die wesentliche Eigenschaft des IP ist das Routing. Das heißt, dass das IP möglichst den optimalen Übertragungsweg für das Datagramm bestimmt. Dabei muss es entscheiden, ob das Datagramm im lokalen Netzwerk oder netzübergreifend seinen Bestimmungsort hat. 13 Das Internet Control Message Protocol (ICMP) ist dem IP beigeordnet und stellt ein Hilfsprotokoll dar. Auch das ICMP ist verbindungslos und unsicher. Es hat im wesentlichen die Aufgabe Fehler-, Diagnose-, und Steuernachrichten zu versenden. Die zu versendenen Daten werden in IP-Datagramme gepackt und zwischen dem PC und dem EDS übertragen. Transmission Control Protocol Das TCP ist ein verbindungsorientiertes, sicheres Protokoll, dass auf das IP aufsetzt. Vor dem Datenaustausch muss eine virtuelle Verbindung aufgebaut werden. Diese erfolgt nach dem Client-/Server- Modell. Der Server wartet auf Verbindungsanfragen, die der Client stellt. Sobald die Verbindung aufgebaut wurde, können die Daten versendet werden. Nach dem Datenaustausch muss die virtuelle Verbindung wieder geschlossen werden. Die gesendeten Daten kommen in der Senke fehlerfrei an. Dies wird dadurch garantiert, dass die Daten an das TCP übergeben und vom TCP in Segmente zerlegt werden. Die Segmente werden mit Zusatzinformationen, Sequenznummern, bestückt und mit dem IP in Datagrammen übertragen. Der Empfänger bestätigt alle empfangenen IP-Datagramme. Folglich weiß der Sender, ob die Datagramme angekommen sind. Erhält er keine Bestätigung, sendet er das Datagramm erneut. Aufgrund der Zusatzinformation kann der Empfänger die ursprünglichen Daten wieder herstellen, auch wenn die Reihenfolge geändert wurde oder Pakete doppelt gesendet wurden. Um die Daten, die zwischen dem EDS und dem PC transferiert werden sollen, nicht zu verlieren, werden sie in TCP-Pakete gepackt. Die TCP-Pakete werden dann in IP-Datagrammen übertragen. User Datagram Protocol Das User Datagram Protocol (UDP) ist ein verbindungsloses, unsicheres Protokoll, dass auf das IP aufsetzt. Das UDP erlaubt Anwendungsprozessen Datagramme direkt zu versenden und somit die Anforderungen an den transaktionsorientierten Verkehr zu erfüllen. Im Gegensatz zum TCP wird beim UDP keine virtuelle Verbindung aufgebaut, deshalb ist es verbindungslos. Der minimale Protokollmechanismus des UDP garantiert weder das Ankommen der Pakete in der Senke, noch gibt es Sicherheitsmechanismen, die vor Duplizierung von Paketen oder der Veränderung der Reihenfolge schützen. Das UDP ist auf den Transport der Datagramme, das Multiplexen von Verbindungen und die Fehlerbehandlung beschränkt. Beim Transport ist die korrekte Datenübermittlung nicht gewährleistet, da ohne Bestätigungsmechanismus gearbeitet wird. Deshalb können verlorene Datenpakete nicht erneut übermittelt werden. 14 Da beim UDP nicht garantiert werden kann, dass die Daten fehlerfrei in der Senke ankommen, wird es nicht für den Transfer der Messdaten und der Kommunikation verwendet. Es dient lediglich zum Austausch der Server des Domain Name Service (DNS) (siehe folgender Absatz) untereinander. Domain Name Service Der DNS setzt auf das TCP auf und ist für die Zuordnung der Rech- nerbezeichnung zur IP-Adresse zuständig. Anfragen an den DNS werden über das UDP abgehandelt, die Kommunikation der DNS-Server erfolgt über das TCP. Dem EDS kann ein Name zugewiesen werden. Um diesen auf die IP-Adresse umsetzen zu können, bedarf es des DNS. Verwendet man den DNS im Netzwerk, so kann anstelle der IP-Adresse der Name des Messgerätes verwendet werden. Dynamic Host Configuration Protocol Das Dynamic Host Configuration Protocol (DHCP) ist ein sicheres Client-Server Protokoll. Es vereinfacht die Vergabe von IP-Adressen und sonstiger Parameter. Mit Hilfe dieses Protokolls hat der Netzwerkadministrator die Möglichkeit alle TCP/IP-Parameter zentral zu verwalten. Das DHCP ermöglicht die dynamische und automatische Konfiguration von Endgeräten im Netzwerk. Vom DHCP-Client, dem EDS, wird mittels DHCP-Request eine IP-Adresse vom DHCP-Server angefordert. Dieser schickt ein DHCP-Reply an die MAC-Adresse des EDS mit einer Adresse aus dem Adresspool des Servers. Die MAC-Adresse stellt die physikalische Adresse des EDS dar. Die Zuweisung der IP-Adresse erfolgt dann automatisch, dynamisch oder manuell. Hypertext Transfer Protocol Das Hypertext Transfer Protocol (HTTP) ist ein allgemeines, statusloses, objektorientiertes Protokoll zur Datenübertragung. Es setzt auf das TCP auf. Es deklariert einen definierten Satz von Nachrichten und Antworten des Client und des Servers während einer HTML-Sitzung. Das HTTP überträgt die vom EDS herunter zu ladende Webseite. Weitere Protokolle Der TCP/IP Stack beinhaltet noch weitere Protokolle, wie zum Beispiel das File Transfer Protocol (FTP) und das Simple Mail Transfer Protocol (SMTP). Da diese Protokolle für dieses Thema nicht von Bedeutung sind werden sie an dieser Stelle nicht erläutert. 15 3.1.3.2 IP-Adresse Eine IP-Adresse ist eine 32Bit Adresse, mit der eine eindeutige Identifizierung von Rechnern möglich ist. Sie wird durch die Netzmaske in einen Netzwerk- und einen Benutzerteil unterteilt. Der Netzwerkteil besteht immer aus den ersten Bit der definierten Adressklasse. Somit kann das Netzwerk identifiziert werden. Der Benutzerteil dient der Benutzeridentifikation. Private IP-Adressen sind Adressen, die für jeden Zweck von jedem benutzt werden können. Allerdings werden diese nicht in das Internet geroutet. Im Regelfall nutzen kleine und mittelständige Unternehmen private IP-Adressen. Um den Zugriff auf das Internet zu ermöglichen müssen die Adressen umgesetzt werden. IP-Adressen werden zum Verbindungsaufbau zwischen dem EDS und PC über Sockets benötigt10. 3.1.3.3 Portnummer Die Portnummer ist eine 2Byte Zahl im Header des Transmission Control Protocols. Portnummern dienen dazu, Datenströme zu identifizieren. Über die Portnummern wird der gesamte Datenaustausch zwischen dem TCP und den Anwendungsprozessen abgewickelt. Die Portnummern identifizieren den Datenstrom, der bei der Verbindung über Sockets11 zwischen dem EDS und dem PC erzeugt wird. 3.1.3.4 Socket Ein Socket ist eine Software-Struktur in einem Kommunikationsendpunkt. Es stellt den logischen Endpunkt einer Verbindung dar. Ein Socket setzt sich aus der IP-Adresse und der Portnummer zusammen. Die Programmierschnittstelle ermöglicht die verteilte Programmierung über das Netz. Sockets bauen auf dem Client-/Server- Modell auf. Daher gibt es Client-Sockets und Server-Sockets. Das Server-Socket wartet auf Anfragen der Clients. Das Client-Socket wird erzeugt und sendet eine Anfrage auf Verbindung zum Server. Der Server nimmt die Anfrage an und die Daten werden transferiert. Nachdem die Daten übertragen wurden, wird die Verbindung wieder abgebaut, indem das Client-Socket wieder geschlossen wird. 10 11 siehe Absatz 3.1.3.4 vgl. Ebenda 16 Abbildung 3.5: Erstellen einer Socketverbindung Auf dem EDS läuft ein Server-Socket, das mit der Portnummer 2101 identifiziert wird und auf Anfragen wartet. Das Applet vom PC versucht ein Client-Socket mit der IP-Adresse des Servers und der Portnummer 2101 zum Server aufzubauen. Bestätigt der EDS die Anfrage, so können Daten transferiert werden. Die Verbindung kann sowohl vom Applet als auch vom Server beendet werden. 17 3.2 Zusammenwirken der Komponenten Das Betriebssystem des Computers steuert die Hardware des PCs und regelt die Kommunikation zwischen der Hardware und den Anwendungen. Die JVM interpretiert den Java Bytecode des Applets und kommuniziert mit dem Betriebssystem. Das Applet stellt die Schnittstelle zum Benutzer dar. Das Betriebssystem implementiert den TCP/IP Stack, packt die Netzwerkpakete und überträgt diese über das Netzwerk. Der PC wird weiterhin als Speicherort für die Messdaten genutzt. Der EDS dient als Schnittstelle zwischen dem PC und der Spektrometereinheit. Ebenso bietet er in dem Messsystem den Speicherort für das Applet. Die Firmware des EDS steuert die Hardware des Servers und implementiert einen TCP/IP Stack, um über das Netzwerk kommunizieren zu können. Sie setzt die entpackten Daten auf das serielle Kommunikationssignal um und überträgt dieses mittels serieller Schnittstelle. Die Spektrometereinheit nimmt die Messdaten von den Proben auf und gibt die Daten über den EDS an die auswertende Messsoftware. Die Firmware der Spektrometereinheit steuert das Spektrometer an und regelt die Kommunikation zwischen dem EDS und dem Spektrometer. Das Applet wird gestartet und das Socket wird mittels IP-Adresse (z.B. 192.168.115.102) und der Portnummer 2101 zwischen dem Applet und dem TCP-Port des EDS aufgebaut. Ist der Port frei, so kommt eine Verbindung zustande. Wurde die Verbindung aufgebaut, können serielle Kommandos vom Applet für die Spektrometereinheit an die JVM übergeben werden. Die JVM gibt die zu sendenden Daten an das Betriebssystem weiter, das diese in TCP/IP-Pakete packt. Diese Pakete werden über die Netzwerkarchitektur übertragen. Der EDS empfängt die ankommenden Pakete und extrahiert die darin enthaltenen seriellen Kommandos. Diese wandelt er in einen 8Bit Datenstrom um, den er über die serielle Schnittstelle mit 38400bd an die Spektrometereinheit sendet. Die Spektrometereinheit empfängt den Datenstrom und deren Firmware interpretiert die seriellen Kommandos. Ist das Kommando ein „A“, werden die Geräteparameter zurückgegeben. Wurde ein Kommando für eine Messung mit den entsprechenden Argumentenempfangen, werden die jeweiligen Rohdaten aus dem Spektrometer ausgelesen und zurück gegeben. Die erhaltenen Daten werden in einem 8Bit Datenstrom mit 38400bd über die serielle Schnittstelle an den EDS gesendet. Der EDS packt die ankommenden Daten in TCP/IP-Pakete und überträgt die IP-Datagramme über die Socketverbindung an den PC. Im PC werden die Daten vom Betriebssystem aus den Paketen extrahiert und an die JVM übergeben. Die JVM stellt die Daten dem Applet zur Verfügung, das sie dem Nutzer aufbereitet anzeigt. 18 Kapitel 4 Entwicklungsumgebung Die Entwicklungsumgebung umfasst das Digi Connect METM Integration Kit, das Spektrometer specbos3000 und die Java IDE Eclipse. Die Anordnung der Hardware ist in der Abbildung 4.1 dargestellt. Abbildung 4.1: Hardware der Entwicklungsumgebung 19 4.1 Digi Connect METM Integration Kit Das Integration Kit des EDS beinhaltet ein Evaluation Board, ein Digi Connect METM, Netzwerkkabel und die Stromversorgung. Das Evaluation Board hat eine RS232 Schnittstelle zum Anschluss externer Geräte, die über den EDS angesteuert werden. RS232 ist der SchnittstellenStandard für die serielle Übertragung mittels COM-Port1 . Der EDS muss auf das Evaluation Board gesteckt werden. Nach Aufbau der Entwicklungsumgebung wird dem Server eine IPAdresse durch einen DHCP Server zugewiesen. Nach der Zuweisung der IP-Adresse kann auf den Server zugegriffen und die notwendigen Einstellungen vorgenommen werden. Für die Entwicklung mit dem Server ist es sinnvoll die Vergabe der IP-Adresse von der DHCP Vergabe auf die statische IP-Adresse umzustellen, da für den Socketaufbau die IP-Adresse angegeben werden muss. Web Interface Das Web Interface ist die Benutzeroberfläche zur Konfiguration des EDS. Nachdem dieser mittels „Discovery“-Tool gefunden wurde, kann das Web Interface gestartet werden. Dieses Werkzeug dient dazu, den EDS ohne IP-Adresse zu finden, denn dieser ist werksseitig auf IP-Vergabe via DHCP geschaltet. Um ihn anhand der MAC-Adresse ausfindig zu machen, wird von Digi International dieses Werkzeug angeboten. Die MAC-Adresse stellt die physikalische Adresse des Servers dar. Abbildung 4.2: Konfiguration der IP-Adresse, Netzmaske und Gateway 1 siehe Kapitel 3.1.1.3 Seite 7 20 Unter dem Link „Network“ des Web Interfaces findet man die Seite zur Konfiguration der Netzwerkparameter2 . Hier werden die IP-Adresse, die Subnetzmaske und das Gateway für die statische IP-Vergabe eingetragen. Weiterhin kann der EDS auf die IP-Vergabe via DHCP oder Auto-IP umgestellt werden. Abbildung 4.3: Konfiguration der seriellen Eigenschaften des TCP-Ports Mit einem Klick auf „Serial Ports“ erscheint die in Abbildung 4.3 gezeigte Seite. Konfiguriert wird an dieser Stelle die serielle Schnittstelle, mit der das Signal vom EDS an das Gerät weitergegeben werden soll. In diesem Fall wurde der TCP Port mit der Portnummer 2101 mit 38400bd, 8 Datenbits und einem Stoppbit konfiguriert. Abbildung 4.4: Datei-Upload des Embedded Device Servers 2 siehe Abbildung 4.2 21 Um Dateien, wie beispielweise ein Applet, auf den Server laden zu können, bzw. veraltete Versionen zu löschen, dient der Link „File Management“. Dazu wird die in Abbildung 4.4 auf Seite 21 dargestellte Webseite gestartet. Das Klicken auf den Button „Durchsuchen...“ öffnet einen Dateibrowser, der zur Auswahl der Datei dient. Danach wird der Button „Upload“ gedrückt, um die ausgewählte Datei hochzuladen. Um sicherzugehen, dass die Dateien erfolgreich auf dem Server gespeichert wurden, muss ein Neustart des Servers erfolgen. Dies geschieht durch Anklicken des Links „Reboot“. Das Web Interface bietet noch weitere Möglichkeiten. Zum Beispiel kann die Firmware des Servers aktualisiert und der RealPort konfiguriert werden. 4.2 Spektrometer specbos3000 Das Spektrometer specbos3000 des Unternehmens JETI ist ein Transmissionsspektrometer für den sichtbaren Wellenlängenbereich. Es eignet sich für Proben mit einem Lichtweg von bis zu 10mm und für glatte Oberflächen, wie zum Beispiel optische Filter. Hier handelt es sich um eine RS232 Version, sodass das Spektrometer aufgrund der Schnittstelle mit dem Evaluation Board verbunden werden kann. Neben dem RS232 Anschluss benötigt es für den Betrieb eine externe Stromversorgung. 4.3 Eclipse Als Programmierumgebung wird im Rahmen dieser Arbeit Eclipse in der Version 3.0.0 verwendet. Diese Plattform kann als integrierte Entwicklungsumgebung (IDE) für verschiedene Programmiersprachen, wie zum Beispiel Java, C, C++, mit den entsprechenden Plugins verwendet werden. Meistens wird es für die Java-Programmierung genutzt, daher ist dieses Plugin bei der Installation enthalten. Getestet und debuggt wird unter Eclipse mit der Debugumgebung. Dafür wird beim Ausführen des programmierten Applets der Menüpunkt „Debug as Applet“ gewählt. Tritt nun ein Fehler auf oder wurde ein Breakpoint gesetzt, schaltet Eclipse vom Java- in den Debug-Modus. Kommt das Programm bei dem Breakpoint an, so kann es ab dieser Stelle schrittweise ausgeführt werden. 22 Kapitel 5 JETI Measurement Applet Das Applet dient der Auswertung der Messdaten aus dem Spektrometer. Es hat eine grafische Benutzeroberfläche, die in Abbildung 5.1 dargestellt ist. Diese besteht aus einem Menü, einem Diagramm, einem rechten Panel und einem unteren Panel. Abbildung 5.1: Measurement Applet, Referenzspektrum, Spline Interpolation 23 Das Applet soll sich mit dem EDS verbinden und die Messdaten abfragen. Es kann die Messwerte mit zwei verschiedenen Interpolationsverfahren interpolieren, um einen genauen Graphen zeichnen zu können. Die Messwerte können in einer CSV-Datei gespeichert werden. Eine CSVDatei ist eine programmunabhängige Textdatei, die in Datensätze und Felder strukturiert ist. Dabei werden Felder durch Kommata und Datensätze durch Zeilenumbrüche getrennt. Verwendet wird dieses Format, um die Messdatenauswertung mit Tabellenkalkulationsprogrammen, wie beispielsweise Microsoft Excel oder OpenOffice Calc, zu ermöglichen. Das Applet soll diese Dateien lesen, um die darin abgespeicherten Daten im Diagramm anzeigen zu können. Die Ansicht des Graphen soll zoombar sein, das heißt, dass der Anwender die Start- und Endwerte der Abszisse setzen kann. Weiterhin soll die Ansicht des Diagramms von der Wellenlängen- auf die Pixelanzeige der Abszisse und bei der Ordinate von den ADC Counts auf die Prozentualanzeige umschaltbar sein. Die Verbindung zum EDS soll nach abgeschlossener Messung vom Nutzer geschlossen werden können. 5.1 Programmablaufplan Der Programmablauf des Applets ist in den folgenden Abbildungen dargestellt. Dabei handelt es sich bei Abbildung 5.2 auf Seite 25 um den übergeordneteten Programmablauf. In dieser Abbildung sind die untergeordneten Programmabläufe mit Dokumentsymbolen versehen, da diese in den darauf folgenden Abbildungen erscheinen. 24 Abbildung 5.2: Übersicht Programmablaufplan 25 Abbildung 5.3: Programmablauf: Verbindungsaufbau Abbildung 5.4: Programmablauf: Messung auslösen 26 Abbildung 5.5: Programmablauf: Diagramm anzeigen 27 5.2 Einzelne Klassen Klassen sind im Sinne der objektorientierten Programmierung Schablonen, die Objekte erzeugen1 . Die Klassen des Applets befinden sich in dem Package com.jeti.spec. Die Klasse NetSpec initialisiert das Applet. Dabei werden Objekte der Klassen Diagram, Bottom, JetiMenu und RightPanel erzeugt, wie in dem vereinfachten Klassendiagramm2 dargestellt ist. Das vollständige Klassendiagramm befindet sich aufgrund der Komplexität im Anhang A. Für Aktionen, die der Nutzer ausführen kann, werden Objekte der Dialog-Klassen erzeugt, wie beispielsweise ein Objekt der Klasse DiagramOptionsDialog. Um die Verbindung zum Gerät aufzubauen, gibt es die Klasse Communication. Sie liest ebenfalls die Rohdaten aus dem Spektrometer aus. Für die Berechnung der Messdaten ist die Klasse Measurement verantwortlich. Die Interpolationsverfahren werden von den Klassen Spline und LineInterpol bereitgestellt. Die Klasse CSVFile stellt Methoden zum Lesen und Schreiben der CSV-Dateien zur Verfügung. Um das Diagramm zu drucken, gibt es die Klasse PrintDiagram. Abbildung 5.6: Vereinfachtes Klassendiagramm 1 2 siehe Kapitel 3.1.2.1, Seite 9 Abbildung 5.6 28 5.2.1 NetSpec Die Klasse NetSpec erbt von JApplet und initialisiert das Applet. Dazu wird die initMethode der Klasse JApplet überschrieben. In dieser Methode werden die einzelnen Objekte der Panels erzeugt, die für den Start des Applets notwendig sind, das Diagram-, das Bottom-, das RightPanel- und das JetiMenü- Objekt. Weiterhin wird ein JFrame-Objekt erstellt, in das die genannten Objekte eingebunden werden. 5.2.2 Diagram Die Klasse Diagram ist für die Erstellung und das Anzeigen des Diagramms verantwortlich. Sie erbt von der Klasse JPanel und implementiert den MouseListener und den ActionListener. Der MouseListener „lauscht“ auf Eingaben von der Maus und der ActionListener bearbeitet Ereignisse, die durch den Benutzer erzeugt wurden. Abbildung 5.7: Komponente Diagram 29 Im Konstruktor Diagram(JFrame frame) wird mittels Superklassenkonstruktor das Panel erzeugt, auf dem der Graph gezeichnet wird, und die Variablen der Klasse werden initiiert. Außerdem wird das Objekt Diagram bei dem MouseListener registriert. Die EntfernenTaste wird beim ActionListener registriert, um den Graphen bei der Einstellung „immediate“ durch das Drücken dieser Taste zu löschen. Die Pfeiltasten nach rechts und links werden ebenfalls bei dem ActionListener registriert. Als Parameter wird der Frame des Applets übergeben. Der Frame des Applets wird übergeben, um das Diagramm mittels der Methode repaint neu zeichnen zu können. In der Klasse Diagram wird hierzu die Methode repaintDiagram genutzt, in der die repaint-Methode auf den Frame angewendet wird. Diagramm zeichnen In der Methode paintComponent wird der Graph gezeichnet. Diese überlagert die paintComponent-Methode von JPanel. Zunächst wird ein weißes Rechteck mit grauen Hilfslinien gezeichnet. Dieses Erscheinungsbild wird beibehalten, solange kein Button, der eine Messung auslöst, gedrückt wurde. Wurde ein Button für eine Messung gedrückt, wird die entsprechende Variable auf true gesetzt und die Methoden für das Umsetzten der Werte für die Bildschirmausgabe werden aufgerufen. Für das Anpassen der Werte an die gesetzten Attribute, wie Wellenlängenanzeige, Pixelanzeige, Prozentualanzeige und Interpolation, ist die Methode display verantwortlich. Dort werden die Vector-Objekte mit den Koordinaten gefüllt, die für das Zeichnen des Graphen nötig sind. Wellenlängenanzeige Für die Wellenlängenanzeige stehen die Interpolationen zur Verfügung. Soll nicht interpoliert werden, werden die Vector-Objekte für die Anzeige nur mit den Koordinaten, die zwischen der Start- und Endwellenlänge liegen, gefüllt. Bei der linearen Interpolation3 wird die Methode Line aufgerufen. Diese erzeugt ein Objekt der Klasse LineInterpol und passt die Objekte vom Typ Vector mit den Koordinaten an die Attribute Start- und Endwellenlänge an. Soll die Spline Interpolation4 durchgeführt werden, wird die Methode Spline aufgerufen. Hier wird ein Objekt der Klasse Spline generiert und die Werte der Spline Interpolation berechnet. Der Vector wird dann wie bei der Linearen Interpolation an die Attribute Start- und Endwellenlänge angepasst. Pixeldarstellung Die Berechnung für die Darstellung der x-Werte als Pixel erfolgt, wenn die Variable abszisse = false gesetzt ist. Dazu werden die x-Koordinaten der Point-Objekte im Vector-Objekt mit der Pixelnummer und die y-Koordinaten der Point-Objekte im VectorObjekt mit dem dazugehörigem y-Wert gefüllt. 3 4 siehe Seite 47 siehe Seite 46 30 Prozentualanzeige Um die Transmission prozentual anzuzeigen, muss die Variable für die y-Achse ordinate = false gesetzt sein. Tritt dieser Fall auf, so wird innerhalb von display die Methode calcPercent aufgerufen, die die Transmissionswerte mittels folgender Gleichung auf die Prozentwerte umsetzt: τ = τ ∗ 100 (5.1) Die berechneten Werte werden in einem Vector-Objekt zurückgegeben und können auf dem Bildschirm dargestellt werden. Graphen zeichnen In der Methode drawGraph wird der Graph gezeichnet. Dabei wird mittels der Methode scaleY die Skalierung der Ordinate errechnet, nachdem der maximale y-Wert der Messung ermittelt wurde. Der maximale Wert der Ordinate ist immer das 1.2-fache des maximalen Messwertes. Die Skalierung der Abszisse hängt davon ab, ob der Nutzer die Wellenlängen- oder die Pixeldarstellung gewählt hat. Bei der Abszisse wird der Bereich zwischen Start- und Endwert immer auf die Pixel des Rechtecks umgesetzt. Da sich der Koordinatenursprung bei Java immer in der linken oberen Ecke des Bildschirmes befindet, müssen die Werte transformiert werden. Um dies zu erleichtern, kann der Ursprung mit der Methode translate, angewendet auf das Graphics-Objekt, verschoben werden. Hier wird die linke untere Ecke des Rechtecks als Koordinatenursprung gewählt. Damit werden die y-Werte skaliert und mit −1 multipliziert, um an der richtigen Stelle im Diagramm sichtbar zu werden. Die x-Werte werden auf die Bildschirmpixel umgerechnet. Dann kann mit der Methode drawPolyline, angewendet auf das Graphics-Objekt der Graph gezeichnet werden. Im Menü stehen dem Anwender die Optionen zur Verfügung, den Graphen nach jeder Messung (always), unmittelbar (immediate), also bei Benutzereingabe, oder nicht (never) zu löschen. Um dies umzusetzen, wird ein Vector-Objekt erzeugt, in das je nach Einstellung die Werte geschrieben werden. Dabei wird ein Zähler inkrementiert, um die zusammengehörigen Daten für das Zeichnen der Graphen extrahieren zu können. Vor dem oben genannten Aufruf von drawPolyline werden die Daten mittels innerer und äußerer Schleife voneinander getrennt und der Graph wird in der äußeren Schleife gezeichnet. Die Attribute für das Zeichnen des Graphen werden über Setter-Methoden, wie beispielsweise setDark, setRef und setTrans, gesetzt. Weitere Methoden zum Abfragen bzw. Schreiben von Variablen, wie zum Beispiel die Messwerte, werden mit Setter- bzw. Getter-Methoden definiert. 31 Achsenbeschriftung Wegen der Positionierung der Achsenbeschriftung wird diese beim Zeichnen der Hilfslinien berechnet und mit g.drawString auf dem Bildschirm dargestellt. Die Bezeichnung der Achsen wird dann je nach Spektrum und Darstellung der Abszisse in den Methoden nameOrd und nameAbsz gezeichnet, wobei für die Ordinate das Graphics-Objekt auf ein Graphics2D-Objekt gecastet wird, damit die Schrift rotiert werden kann. Numerische Ausgabe Das Interface MouseListener übernimmt die Aufgabe, Eingaben von der Maus entgegenzunehmen. Dazu muss dieser in der Klasse Diagram über den Befehl implements MouseListener in der Klassendeklaration implementiert werden. Listener sind immer Interfaces, das heißt sie entsprechen abstrakten Klassen5 . Um nach dem Klick auf den Graphen die entsprechenden Koordinaten anzeigen zu können, muss die Methode mousePressed überschrieben werden. Nach Erhalt der Koordinaten des Mauszeigers wird geprüft, ob die Koordinaten innerhalb des Diagramms liegen. Danach wird das Koordinatenpaar auf die Messwerte zurück gerechnet und die Variable mouse vom Typ boolean auf true gesetzt. Ein Aufruf von repaint erzwingt ein Neuzeichnen des Diagramms, wobei die Methode clickAndShow aufgerufen wird. Diese zeichnet um den Graphen an der gefundenen Stelle einen Cursor, bestehend aus einem Kreis und zwei orthogonal zueinander stehenden Geraden. Außerdem werden in dieser Methode die umgerechneten Koordinaten an die unter dem Diagramm liegenden Textfelder übergeben und so dem Benutzer angezeigt. In der vom ActionListener implementierten Methode actionPerformed wird ausgewertet, welchen ActionKey der Nutzer gedrückt hat. Wurde die Entfernen-Taste gedrückt und vorher für das Löschen des Graphen „immediate“ gewählt, so wird der Inhalt des Vectors, der die Daten speichert, gelöscht. Hat der Nutzer den Pfeil nach rechts oder nach links gedrückt, wandert der von clickAndShow erzeugte Cursor entweder eins weiter nach rechts oder nach links. Dies wird realisiert, indem der Vector mit den Messwerten bis zu der Stelle, an der der Cursor steht, durchlaufen wird. Wurde der Pfeil nach rechts gedrückt wird der Nachfolgewert, bei Pfeil nach links der Vorgängerwert, gewählt und der Cursor an dieser Stelle neu gezeichnet. 5 siehe Kapitel 3.1.2.1, Seite 9 32 5.2.3 Bottom Die Klasse Bottom erbt von JPanel und ist für die Erzeugung des unteren Panels zuständig. Um auf Aktionen des Nutzers zu reagieren wird der ItemListener implementiert. Abbildung 5.8: UI des Bottom Panels Im Konstruktor werden Textfelder zum Anzeigen der gemessenen Werte, Spinner zum Einstellen der Start- und Endwerte des anzuzeigenden Spektrums und ein Textfeld zur Statusanzeige des Applets erzeugt. Die Spinner werden hier zum ItemListener als Ereignisquelle hinzugefügt. In der Methode enableToolTips werden die Tooltips, eine Kurzinformation zu den Schaltflächen, aktiviert wenn true oder deaktiviert wenn false übergeben wurde. Die Methode setPixel stellt die Spinner und die entsprechenden Label auf die Pixelanzeige um. Das Ändern auf die Wellenlängenanzeige erfolgt durch den Aufruf der Methode setWave. Des Weiteren gibt es in dieser Klasse Methoden um den Wert der Spinner neu zu setzen und den Wert im Spinner abzufragen, den Text im Status-Textfeld neu zu setzen und die Koordinaten der Messwerte in die entsprechenden Textfelder einzutragen und zu löschen. In der zu überschreibenden Methode des ItemListeners erfolgt ein Neuzeichnen des Diagramms. 33 5.2.4 RightPanel Die Klasse RightPanel erbt von der Klasse JPanel und implementiert die Interfaces ActionListener und ItemListener. Abbildung 5.9: UI des RightPanel Im Konstruktor wird der Klasse die URL des Applets übergeben, da sie für den Verbindungsaufbau notwendig ist. Denn die IP-Adresse kann mittels Methode getHost der Klasse java.net.URL aus der URL extrahiert werden. Weiterhin ist die URL für die Anzeige des Unternehmenslogos notwendig, da die Klasse wissen muss, an welcher Stelle das Bild abgespeichert ist. Dazu wird die URL an die Klasse AppIcon6 übergeben und das Logo in ein Label geladen. Das Label wird danach auf dem Panel platziert. Die Buttons zum Auslösen der Messungen werden initialisiert und beim ActionListener registriert. Ebenfalls gibt es einen Slider, der zum Umschalten für die Darstellung der gespeicherten Daten vorgesehen ist, sofern eine Datei geladen wurde. Unter den Messbuttons sind zwei Spinner, die die Integrationszeit und den Mittelwert anzeigen bzw. einstellen lassen. Diese Spinner werden beim ItemListener registriert. Da man beim Messen zwischen einer fortlaufenden Messung und einer Einzelmessung wählen kann, wird ein Slider mit der Oberfläche 6 siehe Absatz 5.2.15, Seite 41 34 vom Typ JetiSliderUI7 erzeugt. Mit diesem Knopf kann zwischen den beiden Modi umgeschaltet werden. Das Abtastintervall wird in einem dritten Spinner angezeigt. Dieser ist allerdings nicht aktiv, da dem Nutzer das Intervall angezeigt wird und es nicht von ihm einstellbar ist. Das Abtastintervall berechnet sich aus der Integrationszeit tint und dem Mittelwert scanaver wie folgt: scanInterval = 200 + tint ∗ scanaver (5.2) Darüber hinaus werden die Buttons zum Auf- und Abbau der Verbindung erzeugt und unterhalb des Spinners angeordnet. Diese werden beim ActionListener registriert. Die Slider erzeugen ItemEvents und werden daher beim ItemListener registriert. Die Tooltips werden auch in dieser Klasse über die Methode enableToolTips aktiviert bzw. deaktiviert. In der zu überschreibenden Methode des ActionListeners werden die einzelnen Messungen ausgelöst. Zuvor muss jedoch ein Socket, also eine Verbindung zum Gerät aufgebaut werden. Ohne Verbindung sind die Messbuttons deaktiviert. Sobald eine Verbindung aufgebaut wurde, kann die Dunkelmessung erfolgen. Daher wird der dazugehörige Button aktiv. Nach der Dunkelmessung wird der Button für die Referenzmessung aktiv. Ist diese erfolgt, werden die Buttons für die Transmission und die Absorption aktiviert. Ist der Button für die fortlaufende Messung gedrückt und ein Messbutton wird angeklickt, so startet ein Timer. Nach einer Sekunde wird eine Messung ausgelöst, bis der Nutzer den Timer stoppt. Nach jedem Ereignis wird ein Neuzeichnen des Diagramms erzwungen. Die Methode, die den ItemListener überlädt, beinhaltet die Berechnung des Abtastintervalls sobald der Nutzer auf einen der beiden Spinner drückt. Dabei werden die Messbuttons, bis auf den Button für die Dunkelmessung deaktiviert, da diese Parameter für die Ermittlung der Daten für die Messungen gleich sein müssen. Auch hier erfolgt ein Neuzeichnen des Diagramms. Weiterhin werden die Positionen der Slider erfasst. Wird der Slider für die Scan Modi auf „continuous“ gestellt, werden die Variable für die fortlaufende Messung auf true gesetzt und die Spinner zum Einstellen der Integrationszeit und der Abtastrate deaktiviert. Beim Zurückstellen auf „single“ wird die Variable auf false gesetzt, der laufende Timer gestoppt und die Spinner aktiviert. Ist eine Datei geöffnet, können die Werte aus der Datei mittels Schieberegler angezeigt werden. 7 siehe Absatz 5.2.14, Seite 41 35 5.2.5 JetiMenu Die Klasse JetiMenu erbt von JMenuBar und implementiert sowohl den ActionListener, als auch den ItemListener. Sie stellt das Menü mit all seinen Funktionen zur Verfügung. Abbildung 5.10: Menüleiste des Applet Im Konstruktor werden die einzelnen Menüeinträge erzeugt und zu der Menüleiste hinzugefügt8 . Die Menüeinträge werden bei den Listenern registriert. Vom ActionListener muss die Methode actionPerformed implementiert werden. Je nach dem von welchem Menüeintrag das Ereignis ausging, wird eine Routine gestartet, wie zum Beispiel das Öffnen oder Speichern von Dateien. Die Methode itemStageChanged gehört zum ItemListener und wird ebenfalls überschrieben. Objekte der Klasse CheckBoxMenuItem erzeugen solche ItemEvents. Hier werden die Parameter für die einzelnen Interpolationen an das Diagram übergeben. 5.2.6 DeviceInfoDialog Die Klasse DeviceInfoDialog erbt von JDialog und erstellt einen Dialog, der die Parameter des Messgeräts anzeigt. Zu den Parametern gehören der Name, die Version der Firmware, die voreingestellte Integrationszeit, die Fitparameter, die Lampenvorheizzeit, die Größe der Zeile und die Anzahl der Kanäle. Im Konstruktor wird der Dialog, die Textfelder für die Parameter und die Label für die Textfelder erzeugt9 . Die Geräteparameter werden in den Setter-Methoden in die Textfelder geschrieben. Dafür werden die entsprechenden Geräteparameter übergeben. 8 9 siehe Abbildung 5.10 siehe Abbildung 5.11 36 Abbildung 5.11: DeviceInfoDialog 5.2.7 DiagramOptionsDialog Die Klasse DiagramOptionsDialog erbt von JDialog und erzeugt einen Dialog zum Umschalten der Diagrammoptionen. Da die Klasse von Benutzereingaben abhängt, wird der ActionListener implementiert. Abbildung 5.12: DiagramOptionsDialog Im Konstruktor wird der Dialog mittels Aufruf des Superkonstruktors erzeugt. Anschließend werden die Radiobuttons zum Umschalten zwischen der Wellenlängen- und Pixelanzeige und zum Umstellen von der Prozentualanzeige auf die Anzeige der ADC Counts und ein OKButton erstellt. Ebenfalls werden noch zwei Spinner für die Prozentualanzeige generiert und auf dem Dialog angezeigt. Der OK-Button und die Radiobuttons für die Ordinate werden bei dem ActionListener eingetragen. Die Anordnung der einzelnen Komponenten erscheint wie in Abbildung 5.12. In der Methode actionPerformed werden die Spinner aktiviert, wenn der Radiobutton für die Prozentualanzeige gedrückt ist und deaktiviert wenn der Button für die Counts Anzeige geklickt wurde. Wurde der OK-Button betätigt, wird der Status der Radiobuttons eingelesen und die entsprechenden Attribute des Diagramms für einen repaint-Aufruf gesetzt. 37 5.2.8 PasswordDialog Die Klasse PasswordDialog erbt von JDialog und erzeugt einen Dialog zur Abfrage eines Passwortes. Dazu muss der ActionListener implementiert werden. Abbildung 5.13: PasswortDialog mit Meldung bei Falsch-Eingabe Im Konstruktor wird der Superklassenkonstruktor aufgerufen, ein PasswordField und ein OKButton zum Dialog hinzugefügt. Der OK-Button wird beim ActionListener registriert. In der Methode isPasswordCorrect wird die Eingabe im Passwortfeld auf ihre Richtigkeit geprüft. Ist das Passwort richtig wird true, ist es falsch wird false zurückgegeben. Bei jedem Aufruf von actionPerformed wird ein Zähler dekrementiert. Bei falscher Eingabe des Passwortes wird ein Message-Dialog mit der Angabe, wie viele Versuche der Nutzer noch hat, angezeigt10 . Bei erfolgreicher Eingabe des Passwortes, wird der Dialog geschlossen und ein FirmwareUpdateDialog erzeugt. Steht der Zähler auf „0“ wird ein Message-Dialog mit dem Text: „No tries left!“ erzeugt. 5.2.9 FirmwareUpdateDialog Die Klasse FirmwareUpdateDialog erbt von JDialog, implementiert den ActionListener und erstellt einen Dialog zum Ausführen des Firmware Updates für das Gerät. Abbildung 5.14: Dialog für das Firmware Update Im Konstruktor wird der Superklassenkonstruktor von JDialog aufgerufen, und ein Panel mit zwei Buttons dem Dialog hinzugefügt. Die zwei Buttons werden beim ActionListener registriert und dienen dem Laden der Firmware-Datei und dem Schreiben der Firmware in die Spektrometereinheit. 10 siehe Abbildung 5.13 38 Wird der Button zum Laden der Datei aktiviert, öffnet sich ein Dateibrowser zum Auswählen und Öffnen der Datei. Wenn der Button zum Schreiben der Firmware gedrückt wird, soll eine Klasse die Datei in das Gerät schreiben. Allerdings ist diese Klasse noch nicht implementiert, da die Hardwarestruktur und das Zusammenspiel der Hardware mit der Firmware für das Spektrometer noch entwickelt werden. Deshalb erscheint an dieser Stelle ein Dialog mit der Information, dass diese Funktion erst zu einem späteren Zeitpunkt implementiert wird11 . 5.2.10 SaveOptionDialog Die Klasse SaveOptionDialog erbt von JDialog und erzeugt einen Dialog zum Auswählen der Messdaten, die abgespeichert werden sollen. Um auf Eingaben reagieren zu können wird das Interface ActionListener implementiert. Abbildung 5.15: Dialog für das Speichern der Spektren Im Konstruktor wird mittels Aufruf des Superklassenkonstruktors ein Dialog generiert12 . In diesem erscheinen nach dem Erstellen vier Checkboxen zum Auswählen der zu speichernden Spektren. Zusätzlich werden zwei Buttons für das Speichern und das Abbrechen hinzugefügt. Diese werden dann beim ActionListener eingetragen. Wurde der Button zum Speichern gewählt, wird in der Methode actionPerformed ein SaveDialog aus der Klasse JFileChooser erzeugt. Wurde bei diesem der Save-Button gedrückt, wird der Status der Checkboxes abgefragt und die Spektren in eine CSV-Datei geschrieben, nachdem ein CSVFile-Objekt erzeugt wurde. Wurde der Button zum Abbrechen gedrückt, wird der Dialog geschlossen. 5.2.11 PrintDiagram Die Klasse PrintDiagram implementiert das Interface Printable. Sie stellt die Methoden zum Drucken des Diagrams bereit. Im Konstruktor wird das Diagram-Objekt übergeben, die Bezeichnung des aktuellen Spektrums ausgelesen und die Methode print aufgerufen. 11 12 siehe Abbildung 5.14, Seite 38 siehe Abbildung 5.15 39 In dieser Methode wird ein Objekt der Klasse PrinterJob erzeugt und dieses führt nach dem Erzeugen des Druck-Dialoges die von Printable implementierte print-Methode aus. In dieser Methode wird das Seitenformat auf A4 und Querformat eingestellt und die Komponente gedruckt. 5.2.12 JetiHelp - deprecated In der Klasse JetiHelp wird die Hilfe erzeugt und an die Benutzeroberfläche angepasst. Abbildung 5.16: Hilfe mit JavaHelp Im Konstruktor wird ein HelpViewer-Objekt erzeugt. Diesem Objekt wird das Helpset übergeben und anhand der Daten in den im Abschnitt 3.1.2.1 auf Seite 11 genannten Dateien wird die Hilfe generiert. Wie auch in dem genannten Abschnitt erläutert, ist diese Klasse nicht nutzbar, da das entsprechende Jar-Archiv nicht auf dem Embedded Device Server bereitgestellt werden kann. Deshalb wird die Klasse mit dem Hinweis deprecated (abgelehnt) gekennzeichnet. 5.2.13 AboutDialog Die Klasse AboutDialog erbt von der Klasse JDialog und erzeugt einen Dialog. Im AboutDialog werden Informationen zur Software-Version und die Kontaktdaten des Unternehmens angezeigt. Im Konstruktor wird mittels super der Konstruktor des JDialogs aufgerufen. Dann wird eine JTextPane erzeugt, deren Text zentriert dargestellt werden soll. Dazu sind Objekte der Klassen SimpleAttributeSet und StyledDocument nötig. Es werden zwei Objekte von SimpleAttributeSet erstellt, eines für die Charakter Attribute und eines für die Paragraph Attribute des Objekts von StyledDocument. Hier bestimmt das Charakter-Attribut die Farben und das Paragraph-Attribut, dass der Text zentriert sein soll. 40 5.2.14 JetiSliderUI Die Klasse JetiSliderUI dient der Erstellung einer neuen Oberfläche für eine Schaltfläche. Sie erbt von BasicSliderUI und überschreibt deren Methoden paintThumb und paintTrack. Abbildung 5.17: Oberfläche des Schalters Im Konstruktor wird ein Objekt der Schaltfläche vom Typ JSlider übergeben und mittels Superklassenkonstruktor ein Objekt erzeugt. Die Methode paintThumb zeichnet den Quader der Schaltfläche neu, der beim Umschalten bewegt wird. In der Methode paintTrack wird das Rechteck, das die Schaltfläche bei Bewegung führt, neu konstruiert. 5.2.15 AppIcon Die Klasse AppIcon zeichnet ein Bild in ein ImageIcon. Dieses Bild wird von einer angegebenen URL geladen. Im Konstruktor wird das Bild von der URL in ein Image-Objekt geladen. Danach wird ein ImageIcon erzeugt, wobei das Image-Objekt in den Konstruktor von ImageIcon übergeben wird. Die Methode paint zeichnet das Bild, wenn das Image-Objekt erzeugt werden kann. 41 5.2.16 Communication Die Klasse Communication stellt die Schablone für die Kommunikation mit dem Messgerät bereit. Sie baut die Verbindung zum Gerät auf, fragt die Parameter ab, löst die Messungen aus und liest die Messergebnisse aus dem Gerät. Sie erbt von der Klasse java.net.Socket Im Konstruktor wird mittels Superkonstruktor ein Objekt der Klasse Socket erzeugt. Dafür muss die IP-Adresse als String übergeben werden. Als Port ist ein Default-Wert eingetragen. Dieser Wert entspricht der Portnummer 2101, die den TCP-Port des Embedded Device Servers repräsentiert. In der Methode ask wird der Ask Befehl an das Gerät gesendet, nachdem ein Objekt der Klasse OutputStream erzeugt wurde. Der Ask-Befehl ist das Senden eines „A“ mit Carriage Return. Das Gerät antwortet mit den Geräteparametern. Um diese Antwort auslesen zu können wird ein InputStream-Objekt erzeugt, das mit der Objektmethode readLine ausgelesen wird. Um die Daten aus dem String zu extrahieren, wird ein StringTokenizer-Objekt erzeugt, das den String „zerhackt“. Die erhaltenen Daten werden in die entsprechenden Objektattribute geschrieben. In der Methode disconnect wird die Verbindung zu dem Gerät beendet. Das Objekt wird mit close geschlossen. Die Methode getMeasuredData liest die vom Messgerät empfangenen Messdaten aus dem InputStream-Objekt aus und gibt diese in einem Feld vom Typ float zurück. In der Methode send wird ein Objekt der Klasse OutputStream erzeugt. Mit der Methode write des OutputStream-Objektes wird ein Kommando an das Messgerät geschickt. Dies erfolgt ebenfalls in der Methode sendArg. Im Unterschied zur send-Methode werden neben dem Kommando noch die Argumente Integrationszeit und die Mittelung an das Gerät übertragen. Die Methode getLineArraySize gibt die Anzahl der Pixel von der Zeile zurück. Die Methoden getFit0, getFit1, getFit2, getFit3 und getFit4 geben die jeweiligen Fitparameter als float-Wert zurück. 42 5.2.17 Measurement Die Klasse Measurement ordnet die Pixel den Wellenlängen zu und berechnet die einzelnen Spektren. Fitpolynom Der Analog-Digital-Converter (ADC) des Spektrometers liefert das Spektrum in Counts für jedes Pixel. Die Pixel sind nummeriert und werden über ein Polynom vierter Ordnung in die korrespondierende Wellenlänge umgerechnet. Für die Berechnung werden die Fitparameter des Messgeräts benötigt. Der jeweilige Wert der Wellenlänge berechnet sich daher wie folgt: λ(x) = f it0 + f it1 · x + f it2 · x2 + f it3 · x3 + f it4 · x4 (5.3) Die Variable x repräsentiert die Pixelnummer. In der Methode fitWave werden die Fitparameter eingelesen und das Feld der λ-Werte wie oben angegeben berechnet. Dieses float-Array wird zurückgegeben. Dunkelspektrum Das Dunkelspektrum stellt die ADC-Werte aller Pixel ohne einfallendes Licht dar. Die Vergleichbarkeit der einzelnen Spektren hängt von den Parametern Integrationszeit und der Mittelung ab. Daher müssen die Spektren mit gleicher Integrationszeit und Mittelung gemessen werden. Die Methode darkRef liest das Dunkelspektrum aus, dass für die Berechnung der weiteren Spektren bekannt sein muss. Sie gibt das Feld mit den Dunkelwerten vom Typ float zurück. Referenzspektrum Das Referenzspektrum ist die Differenz zwischen dem mit einfallendem Licht gemessenen Spektrum Ibel und dem Dunkelspektrum Idark . Daher berechnet sich das Referenzspektrum wie folgt: Iref (λ) = Ibel (λ) − Idark (λ) (5.4) In der Methode referenceSpektrum wird, nach dem Auslesen des aktuellen Spektrums aus demCommunication-Objekt, das Referenzspektrum ermittelt. Das Referenzspektrum wird in einem float-Feld zurückgegeben. 43 Transmissionsspektrum Das Transmissionsspektrum gibt den Anteil des einfallenden Lichts an, der von der Probe hindurch gelassen wird. Berechnet wird die Transmission τ , indem das Dunkelspektrum Idark vom aktuell gemessenen Spektrum Ibel abgezogen und die entstandene Differenz durch das Referenzspektrum Iref dividiert wird. τ (λ) = Ibel (λ) − Idark (λ [·100%] Iref (λ) (5.5) Die Methode transSpectrum bestimmt anhand des aktuellen Spektrums aus dem Objekt der Klasse Communication das Transmissionsspektrum. Die Transmissionswerte werden in einem Feld vom Typ float zurückgegeben. Absorptionsspektrum Das Absorptionsspektrum gibt den Anteil des einfallenden Lichts an, der von der Probe absorbiert wird. Um das Absorptionsspektrum A zu erhalten, wird das Referenzspektrum Iref durch die Differenz zwischen aktivem Spektrum Iref und Dunkelspektrum Idark dividiert und von dem Resultat der dekadische Logarithmus gebildet. Ir ef (λ) A(λ) = log Ibel (λ) − Idark (λ) ! (5.6) In der Methode absSpectrum wird das Absorptionsspektrum als float-Array zurückgegeben, nachdem das aktuelle Spektrum aus dem Communication-Objekt ausgelesen und anhand der oben beschriebenen Gleichung berechnet wurde. Die Methoden calcMaxWav und calcMinWav geben die maximale bzw. minimale Wellenlänge als int-Wert zurück. 5.2.18 CSVFile Die Klasse CSVFile öffnet eine CSV-Datei zum Lesen oder zum Schreiben von Messdaten. Der Konstruktor erzeugt ein Objekt von der Klasse RandomAccessFile und initiiert die Objekt-Attribute mit den übergebenen Werten. In der Methode writeCSV werden in die geöffnete CSV-Datei die zu speichernden Daten geschrieben. Dazu wird pro Zeile der CSV-Datei ein String erzeugt, der mit der Methode writeBytes an das Objekt der Klasse RandomAccessFile übergeben wird. In der ersten Zeile der Datei befinden sich in dem String die Überschriften der einzelnen Spalten, die durch Kommata getrennt sind. Ab der zweiten Zeile stehen in dem String die in den Datentyp String umgewandelten Messwerte, ebenfalls durch Kommata getrennt. Nach erfolgreichem Schreiben wird die Datei geschlossen, indem auf das RandomAccessFile-Objekt die Methode close angewendet wird. 44 Die Methode readCSV liest die gespeicherten Daten aus der geöffneten Datei aus. Dazu wird die Datei mittels Methode readLine zeilenweise ausgelesen. Da diese Methode einen String zurückliefert, muss dieser mittels eines Objektes der Klasse StringTokenizer „zerhackt“ werden. Nach dem Auslesen und „Zerhacken“ der ersten Zeile, werden die einzelnen Elemente mit den Konstanten verglichen und die entsprechenden boolean-Attribute auf true gesetzt. Dann werden alle weiteren Zeilen ausgelesen, an das StringTokenizer-Objekt übergeben und in die entsprechenden Felder geschrieben. Am Ende der Methode wird die Datei wie in writeCSV geschlossen. 5.2.19 CSVFilter Die Klasse CSVFilter erbt von der Klasse FileFilter und überlagert deren Methoden accept und getDescription . In der ersten Methode wird true zurückgegeben, wenn die Datei mit .csv endet. Hat die Datei eine andere Endung, wird false zurückgegeben. Bei der zweiten Methode wird der String „CSV File“ zurückgegeben, um diesen im JFileChooser anzuzeigen. 5.2.20 Point Die Klasse Point dient der Erzeugung von Punkten mit zwei Koordinaten für ein zweidimensionales Koordinatensystem. Im ersten Konstruktor wird ein Objekt mit den übergebenen x- und y-Koordinaten erzeugt. Im zweiten Konstruktor, bei dem keine Parameter übergeben werden, wird der erste Konstruktor aufgerufen und die beiden Koordinaten werden „0“ gesetzt. Die Methode toString gibt die Koordinaten des Punktes als String zurück. Somit erhält man bei dem Aufruf von System.out.println("P"+new Point()); folgende Ausgabe in einer Konsole: P(0/0) 45 5.2.21 Spline Die Klasse Spline stellt die Spline Interpolation zur Verfügung, um die Werte zwischen den Rohdaten der Messung mit einer hohen Genauigkeit zu erhalten. Spline Interpolation Die Spline Interpolation beruht auf der Interpolation von kubischen Splines. Kubische Splines sind stückweise Polynome dritter Ordnung, die in der ersten und zweiten Ableitung stetig sind. Zur Berechnung der Interpolationsfunktion ist die zweite Ableitung notwendig. Da es sich hier um eine Funktion handelt, die in Form einer Wertetabelle vorliegt, wird die zweite Ableitung mittels Differenzenquotient gebildet. f 0 (x) = f (x + ∆x) − f (x) ∆x (5.7) Dann wird die Wertetabelle für die interpolierten Werte berechnet. Die dazugehörige Interpolationsfunktion lautet: S(x) = A · f (x) + B · f (x + ∆x) + C · f 00 (x) + D · f 00 (x + ∆x) (5.8) Dabei sind die Parameter A, B, C und D wie folgt zu berechnen: A= x − xval ∆x (5.9) B = 1−A (5.10) C= (A3 − A) · (∆x)2 6 (5.11) D= (B 3 − B) · (∆x)2 6 (5.12) In der Methode splineInterpol wird die Spline Interpolation durchgeführt. Dazu wird das übergebene Vector-Objekt an die Methode differentiate übergeben, die die erste Ableitung in einem Vector-Objekt zurückgibt. Dann wird diese Methode erneut aufgerufen und der Vector mit den Werten der ersten Ableitung übergeben. Somit erhält man die zweite Ableitung. Das Array vom Typ float beinhaltet die x-Werte über denen interpoliert werden soll. Es werden die Parameter A, B, C und D berechnet und das jeweilige interpolierte Point-Objekt, das an das Vector-Objekt übergeben wird, berechnet. Das Vector-Objekt wird mit den interpolierten Werten zurückgegeben. 46 5.2.22 LineInterpol Die Klasse LineInterpol stellt die Lineare Interpolation zur Verfügung. Lineare Interpolation Die Lineare Interpolation benutzt lineare Funktionen für die Approximation zwischen den Stützstellen. Liegt x bzw. λ im Intervall [x0 , x1 ] und beschreiben y0 = f (x0 ) und y1 = f (x1 ) die Werte x0 und x1 , so ergibt sich folgende Interpolationsfunktion: L(x) = y0 · y1 − y0 · (x − x0 ) x1 − x0 (5.13) Die interpolierten Werte werden in der Methode lineInterpol nach der Interpolationsfunktion berechnet und in einem Vector-Objekt zurückgegeben. Die Übergabeparameter sind die Schrittweite, die vorhandenen y-Werte, der Start- und Endwert der Interpolation, der maximale x-Wert und ein Feld in dem die vorhandenen x-Werte stehen. 47 Kapitel 6 Implementierung 6.1 Laden auf Embedded Device Server Um das Applet vom EDS aufrufen zu können, muss es auf dem Server abgespeichert werden. Dafür werden die Klassen in eine Jar-Datei gepackt. Da das Applet mit dem Zugriff auf Dateien sicherheitskritische Aktionen ausführt, muss die Jar-Datei mit einem Zertifikat signiert werden1 . Um die signierte Jar-Datei mittels Browser aufrufen zu können, muss eine HTML-Datei erstellt werden. Diese beinhaltet das Applet-Tag mit dem das Applet aufgerufen wird. <applet code=com.jeti.spec.NetSpec.class archive=NetSpec.jar> </applet> Um nun diese beiden Dateien auf den Server zu laden wird der Browser geöffnet und die Administrationsseite des EDS2 aufgerufen. Dort gibt es einen Link File Management. Über einen Dateibrowser werden die Dateien einzeln angewählt und auf den Server geladen. Nach dem Upload muss ein Neustart des Servers erfolgen, damit er die Einstellungen übernehmen kann. 6.2 Ausführen des Applets Um das Applet zu starten, muss der Browser gestartet werden. In der Adressleiste des Browsers wird die IP-Adresse eingegeben und die Eingabetaste gedrückt. Daraufhin wird die HTMLSeite, in die das Applet eingebunden ist, aufgerufen und das Applet wird nach der Bestätigung des Zertifikates ausgeführt. Der Dialog zum Bestätigen des Zertifikats ist in der Abbildung 6.1 auf der Seite 49 dargestellt. 1 2 siehe Absatz 3.1.2.1, Seite 10 siehe Abschnitt 4.1 Seite 20 48 Abbildung 6.1: Dialog zum Bestätigen des Zertifikats 6.3 Einbindung in das Internet Für die Einbindung in das Internet wird ein Server und eine Standleitung benötigt. Der Server ist notwendig, um dem EDS eine IP-Adresse zu geben und um die Netzwerkparameter, wie IP-Adresse und Portnummer des EDS für das Internet umzusetzen. Die Standleitung sei für den Zugriff auf das Gerät zu jeder beliebigen Tageszeit. Die Umsetzung der Netzwerkparameter ist nötig, da in den meisten Fällen IP-Adressen aus dem privaten Bereich, wie in Kapitel 3.1.3.2 auf Seite 16 erläutert, verwendet werden. Diese werden nicht in das Internet geroutet. Somit kann nicht von außen, also vom Internet aus, auf die Geräte zugegriffen werden. Möglichkeiten der Umsetzung der IP-Adresse Grundsätzlich gibt es zwei Möglichkeiten für den Server die IP-Adresse des Gerätes umzusetzen. Eine dieser Möglichkeiten ist die Portweiterleitung. Diese wird auf dem Router eingerichtet, wobei der Router das Internet mit dem Netzwerk des Unternehmens verbindet. Der Rechner außerhalb des Unternehmens verbindet sich mit dem Router über dessen IP-Adresse und einem festgelegten Port. Dieser Port leitet dann die Verbindung direkt an das Messgerät weiter und der Rechner aus dem Internet ist mit dem Messgerät verbunden. Die zweite Möglichkeit besteht im Tunneln. Dabei verbindet sich der Rechner vom Internet mit dem Router und muss sich authentifizieren. Durch die Authentifizierung wird eine verschlüsselte Verbindung möglich. Sobald die Verbindung aufgebaut wurde, kann der Router die Verbindung zum Messgerät aufbauen. Das Tunneln erlaubt somit die voneinander unabhängigen Verbindungen zwischen dem externen Host und dem Router und zwischen Router und Messgerät miteinander zu verbinden. Die Portweiterleitung ist sicherheitskritisch, da auf diese Art und Weise Firewalls umgangen werden können. Damit kann dem Unternehmen ein erheblicher Schaden zugefügt werden, beispielsweise durch Datenspionage. Die Konfiguration hingegen ist gegenüber anderen Verfahren einfach. Die zweite Variante verlangt die Einrichtung eines Accounts im Netzwerk des Unternehmens, der auch für den Zugriff von außen konfiguriert werden muss. Damit kann nur ein bestimmter Nutzer mit Kenntnis der Logindaten auf das Messgerät zugreifen. 49 6.4 Test im Browser Das Applet hat den Anspruch vom Betriebssystem unabhängig zu sein, da im Netzwerk unterschiedliche Maschinen mit verschiedenen Betriebssystemen vorhanden sind. Um sicherzustellen, dass das Applet dem Anspruch gerecht wird, müssen Tests durchgeführt werden. Im Rahmen dieser Arbeit erfolgen die Tests unter Microsoft Windows und Linux. Als Voraussetzung sei gesagt, dass auf beiden Betriebssystemen das Java Runtime Environment (JRE) in der Version 1.5 vorhanden sein muss, da dies die JVM zur Verfügung stellt. Es werden je Betriebssystem nur zwei Browser getestet. Es kann vorausgesetzt werden, dass das Applet unter allen javafähigen Browsern eingesetzt werden kann, da die JVM auf den Betriebssystemkern aufsetzt und die API (Application Programmers Interface) zur Verfügung stellt, die zur Ausführung des Applets notwendig sind3. 6.4.1 Browser unter Microsoft Windows Als Testsystem dient hier Microsoft Windows 2000 Professional. Als Testbrowser werden der Internet Explorer und der Mozilla Firefox ausgewählt. Nach der Installation des JRE und der Bestätigung des Zertifikats kann das Applet mit beiden Browsern gestartet werden. Auch die Verbindung zum Gerät kann problemlos hergestellt werden. Das Applet kann mit vollem Funktionsumfang, sowohl im Internet Explorer als auch im Firefox ausgeführt werden. 6.4.2 Browser unter Linux Als Testsystem dient hier die Linux-Distribution Ubuntu. Ubuntu baut auf einem Debian-Kernel auf und nutzt den Window-Manager GNOME. Als Browser werden der Mozilla Firefox, der urprünglich für Linux entwickelt wurde, und Epiphany, ein Browser für GNOME, genutzt. Nach der Installation des JRE kann im Ephiphany das Applet aufgerufen werden. Für den Firefox musste erst noch ein Link gesetzt werden, damit er den Pfad zum JRE identidizieren kann. Nach der Bestätigung des Zertifikats kann das Applet in beiden Browsern mit allen Funktionen eingesetzt werden. 3 siehe Abbildung 3.3Seite 9 50 Kapitel 7 Fazit Im Fazit werden die Vor- und Nachteile des Ethernet-Spektrometers herausgestellt und mögliche, zukünftige Entwicklungen aufgezeigt. Betrachtet man die wirtschaftlichen Aspekte von Embedded Device Servern, so kommt man zu dem Schluss, dass sie die Entwicklungszeit eines Ethernet-Spektrometers deutlich verringern. Damit sinken auch die Kosten für die Entwicklung, da der EDS nur integriert werden muss. Die Portabilität des Programmcodes spart für weitere Entwicklungen Zeit und Geld. Das Applet des Ethernet-Spektrometers liefert dem Benutzer aufbereitete Messdaten. Es ist unabhängig von der zugrunde liegenden PC-Architektur, sodass der Nutzer nicht an ein bestimmtes Betriebssystem gebunden ist. Der Anwender muss die Auswertesoftware nicht installieren, da er sie mittels Browser vom Messgerät herunter lädt. Weiterhin kann die Stromversorgung über PoE erfolgen, weshalb nur ein Kabel zum Messgerät geführt werden muss. Er braucht keine zusätzliche PC-Technik, um mit dem Messgerät kommunizieren zu können. Es werden allerdings Kenntnisse über die Zuweisung der IP-Adresse benötigt, das durch die Vergabe dieser Adressen von einem DHCP-Server erleichtert werden kann. Das setzt wiederum voraus, dass ein solcher Server vorhanden ist. Weiterhin erfordert PoE einen PSE in der Infrastruktur des Netzwerkes. Da der Bytecode des Applet von der JVM interpretiert wird, muss diese installiert werden. Bei mehreren Geräten mit unterschiedlichen Java-Versionen kann es zu Versionskonflikten kommen, da Java weder auf- noch abwärtskompatibel ist. Darüber hinaus verfügt der EDS über nicht genügend Speicher für ein Java spezifisches Hilfesystem oder aufwendige Applikationen. Ferner treten im Netzwerk Latenzen auf, die die Performance des Applets verlangsamen. Diese können in Zukunft durch das Verlagern der Algorithmik in die Firmware der Spektrometereinheit ausgeglichen werden. 51 Durch den Einsatz von Embedded Device Servern können redundante Rechner an Produktionsstrassen wegfallen. Denn die Messgeräte werden durch den EDS befähigt, die aufbereiteten Daten an eine zentrale Überwachungs- oder Datenerfassungsstelle zu übermitteln. So könnte in Zukunft eine Fernwartung erfolgen. Ebenso wird es möglich sein, messgerätespezifische Software mit geringem Entwicklungsaufwand zu schaffen. Die Kompatibilität der Produkte von Digi International führt dazu, dass es möglich ist, ohne weiteren Aufwand die Messgeräte für die drahtlose Datenübertragung weiter zu entwickeln. 52 Literaturverzeichnis [Bar01] Bartsch, H.-J.: „Taschenbuch Mathematischer Formeln“, 19. Auflage, Verlag: Carl Hanser Verlag, Fachbuchverlag Leipzig, 2001 [Dal05] Dallheimer, M. K.: „LATEX - kurz und gut“, 2. Auflage, Verlag: O’Reilly, Köln, 2005 [Dig05] Digi International: „Digi Connect Family Users Guide“, Minnetonka, 2005, http://ftp1.digi.com/support/documentation/90000565_E.pdf, Abruf: 2005.05.01 [Dig05] Digi International: „RealPort Installation“, Minnetonka, 2005, http://ftp1.digi.com/support/documentation/90000630_D.pdf, Abruf: 2005.05.01 [Fla02] Flanagan, D.: „Java in a Nutshell“, 4. Auflage, Verlag O’Reilly, USA, 2002 [Gol03] Gollup, L.: „Messen, Steuern und Regeln mit TCP/IP“, Verlag: Franzis’ Verlag GmbH, Poing, 2003 [Hol04] Holzner, S.: „Eclipse“, Verlag: O’Reilly, Köln, 2004 [LSW01] Licher V., Strackenbrock B., Weiß J.: „Duden Informatik“, 3. Auflage, Verlag: Dudenverlag, Mannheim, Leipzig, Wien, Zürich, 2001 [Lip02] Lipinski, K. (Hrsg.) : „Lexikon der Datenkommunikation“, mitp-Verlag, Bonn, 2002 [Mic03] Michaelis, C.: „Entwicklung eines Interfaces für den Spektrenprozessor SDC-VIS, wahlweise mit USB oder RS232 Interface“, 1. Praxisarbeit, JETI Technische Instrumente GmbH, Jena, April 2003 [Mic04] Michaelis, C.: „Einbindung von Spektralmessgräten in Ethernet-Netzwerke“, 3. Praxisarbeit, JETI Technische Instrumente GmbH, Jena, April 2004 [Mic04] Michaelis, C.: „Konzeption einer browsergestützten Anwendersoftware für EthernetSpektrometer mittels Java- Applets“, Studienarbeit, JETI Technische Instrumente GmbH, Jena, Oktober 2004 [Per93] Perkampus, H.: „Lexikon Spektroskopie“, Verlag: VCH Verlagsggesellschaft mbH, Weinheim, 1993 53 [Ste01] Stein, E.: „Taschenbuch Rechnernetze und Internet“, Verlag: Carl Hanser Verlag, Fachbuchverlag-Leipzig, München, Wien, 2001 [Tan96] Tanenbaum, A.S.: „Computer Networks“, 3.Auflage, Verlag: Prentice-Hall Inc., New Jersey, 1996 [ZCC01] Zwicky, E., Cooper, S., Chapman, D.: „Einrichten von Internet-Firewalls“, 2.Auflage, Verlag: O’Reilly, Köln, 2001 54 Anhang A Dokumentation A.1 Klassendiagramm A.2 CD Auf der CD befindet sich eine Datei „index.html“. Diese enthält alle Links, sowohl zum Applet als auch zur Programmdokumentation. • Applet JETI Measurement Applet Dokumentation Programmablaufplan Klassendiagramm • Diplomarbeit Autorreferat zur Diplomarbeit Thesenpapier zur Diplomarbeit Diplomarbeit Online-Quellen Digi Connect Family Users Guide RealPort Installation 55 Ehrenwörtliche Erklärung Ich erkläre hiermit ehrenwörtlich, 1. dass ich meine Diplomarbeit mit dem Thema „JAVA-gestützte Messsoftware für Spektrometer unter Verwendung von Embedded Device Servern“ ohne fremde Hilfe angefertigt habe, 2. dass ich die Übernahme wörtlicher Zitate aus der Literatur sowie die Verwendung der Gedanken anderer Autoren an den entsprechenden Stellen innerhalb der Arbeit gekennzeichnet habe und 3. dass ich die Diplomarbeit bei keiner anderen Prüfung vorgelegt habe. Ich bin mir bewusst, dass eine falsche Erklärung rechtliche Folgen haben wird. Ort, Datum Unterschrift (Vor- und Nachname) 56