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