PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Anzeige



elkokiller
12.05.2008, 17:59
Hallo,

ich steh mal wieder auf dem Schlauch.
Über folgenden Code werden Temperaturen, ohne Kommastelle, auf einem LCD Display angezeigt:


Sub Anzeige

Locate 1 , 1
Lcd "Dach Wass +/- TT"

Locate 2 , 1 : Lcd " " ; Dg1 ; " " ; Dg2 ; " " ; Delta ; TT

End Sub

Mein Problem:
Wenn z.B. die Variable Dg1, die zuvor 11 angezeigt hat, auf 9 springt, bleibt eine eins stehen da nur noch die erste Stelle überschrieben, und die zweite Stelle nicht gelöscht wird.
Wenn ich das Display vor jeder Anzeigenänderung lösche, flackert es.

Was kann ich da tun?

Gento
12.05.2008, 18:53
locate 1,1
case of Grad_Celsius
0..9 : Lcd ' '
10..99:LCD ' '
end of Case Grad_Celsius
LCD Grad_Celsius

Gento

elkokiller
12.05.2008, 19:29
soweit o.k.
Allerdings werden hier 4 verschiedene Werte hintereinander angezeigt.
Variable "DG1", "DG2", "Delta" und "TT"
Jede Variable benötigt max 2 Stellen

Der von dir vorgesehene Cord funktioniert in diesem Fall leider nicht.

Gibt es noch eine Möglichkeit?

Jaecko
12.05.2008, 19:31
Alternativ auch mal den Befehl "Format" anschauen; kann zeitweise nützlich sein.

Gento
12.05.2008, 19:49
soweit o.k.
Allerdings werden hier 4 verschiedene Werte hintereinander angezeigt.
Variable "DG1", "DG2", "Delta" und "TT"
Jede Variable benötigt max 2 Stellen


Unklarer geht es wohl kaum.

Zeitlich hintereinander oder am LCD wie Locate 1,1 Locate 1,5 ?

Gento

Stromi
12.05.2008, 21:10
Was auch eine Alternative ist:
den Format-Befehl für die Variablenart von DG1, DG2, Delta und TT laut Hilfe anwenden und dann den Locate-Befehl auifteilen:
zB.
Locate 2 , 2 : Lcd Dg1
Locate 2 , 8 : Lcd Dg2
Locate 2 , 14 : Lcd Delta
Locate 2 , 17 : Lcd TT

Sauerbruch
13.05.2008, 00:01
Wenn z.B. die Variable Dg1, die zuvor 11 angezeigt hat, auf 9 springt, bleibt eine eins stehen da nur noch die erste Stelle überschrieben, und die zweite Stelle nicht gelöscht wird.

Passiert das vielleicht eher nur bei der letzten Variablen, oder tatsächlich auch schon bei der ersten? Das könnte ich mir nur schwer vorstellen, denn beim Überschreiben sollte eigentlich nix mehr stehenbleiben...

elkokiller
13.05.2008, 11:20
ja, du hast recht. Es passierte bisher immer nur bei der letzten Variable.
Da die Werte der ersten beiden aber immer im zweistelligen Bereich lagen, fiel da nicht weiter auf.

Den Formatbefehl kann ich offensichtlich für Integer nicht anwenden.
Geht das nur bei String?

Sauerbruch
13.05.2008, 12:59
O.k., das passt. Mit dem "format"-Befehl habe ich noch keine weiterreichenden Erfahrungen - ich hab´s in solchen Fällen immer auf die unelegante, aber wirkungsvolle Methode gemacht, einfach eine ausreichende Anzahl an Leerstellen an den Schluss der letzten (!) Zeile zu hängen. Die überdecken eventuelle Rest-Stellen zuverlässig, und wenn Du 4 zweistellige Werte hast, werden sie halt einfach ins Nirvana geschrieben. Also etwa so:


Locate 1 , 1
Lcd "Dach Wass +/- TT"

Locate 2 , 1 : Lcd " " ; Dg1 ; " " ; Dg2 ; " " ; Delta ; TT ;" "



Das wären hier 9 Leerstellen, denn Du hast ja als Minimum 4 einstellige Werte und 3 Leerzeichen, macht also 7 Zeichen. 9 Leerstellen hinterher, und eventuelle "Reste" aus der letzten Runde werden sicher überschrieben.

elkokiller
13.05.2008, 13:50
Hey super!
Auf die einfachsaten Dinge kommt mann meistens garnicht

Danke!