Darstellung der Messwerte auf dem LC-Display

Um die im Beispiel gemessenen Werte der A/D-Wandler visuell kontrollieren zu können, soll das ADCExample nun um eine Funktion zur Darstellung der Messwerte auf dem LCD erweitert werden. Diese soll parallel und unabhängig zur Messwerterfassung laufen.

Da die Hauptklasse nach der Instantiierung der ADCReader-Threads nichts weiter zu tun hat, bietet es sich an, den Programmthread selbst für die Darstellung der Messwerte zu benutzen. Die folgende Methode drawStatus() erledigt dies, indem sie alle 500ms die aktuellen Messwerte aller ADCReader-Threads einliest und auf dem LCD als Strings ausgibt.

94    /**
95     * Draw ADC values (read by ADCReader threads) on lcd
96     */
97    void drawStatus() {
98      Display lcd = new Display();
99    
100      while (true) {
101        lcd.clearDisplay();
102    
103        // show adc values on lcd
104        for (int i=0; i<adcreaders.length; i++) {
105          lcd.drawString("ADC channel ".concat(
106                          String.valueOf(i)).concat(" value: ").concat(
107                          String.valueOf(adcreaders[i].getValue())),
108                         0, 8*i);
109        }
110    
111        // sleep for 500 millis
112        try {
113          ThreadExt.sleep(500);
114        } catch (InterruptedException e) {}
115      }
116    }
Listing 2: Auszug aus ADCExample.java

Fügt man dem ADCExample-Konstruktor nun noch einen Aufruf drawStatus() hinzu, ist das ADCExample vollständig. Statt die Messwerte lediglich anzuzeigen, können auf die in diesem Tutorial beschriebene Art und Weise auch komplexe Steuer- und Regelsysteme implementiert werden. Die Implementierung der Messwerterfassung in Form von Threads garantiert, dass die Messwerte völlig unabhängig von der Applikationslogik kontinuierlich aktualisiert werden.

Der Test: Probieren Sie nun das ADCExample auf Ihrem JControl-System aus! Laden Sie den Quelltext zum ADCExample.java herunter und fügen Sie ihn einem leeren JControl/IDE-Projekt hinzu. Nach dem Hochladen auf Ihr JControl-Modul werden Sie eine Darstellung ähnlich dem folgenden Bild 2 sehen.

Bild 2: Das ADCExample auf dem JControl/Sticker