locate 1,1
case of Grad_Celsius
0..9 : Lcd ' '
10..99:LCD ' '
end of Case Grad_Celsius
LCD Grad_Celsius
Gento
Hallo,
ich steh mal wieder auf dem Schlauch.
Über folgenden Code werden Temperaturen, ohne Kommastelle, auf einem LCD Display angezeigt:
Mein Problem:Code:Sub Anzeige Locate 1 , 1 Lcd "Dach Wass +/- TT" Locate 2 , 1 : Lcd " " ; Dg1 ; " " ; Dg2 ; " " ; Delta ; TT End Sub
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?
locate 1,1
case of Grad_Celsius
0..9 : Lcd ' '
10..99:LCD ' '
end of Case Grad_Celsius
LCD Grad_Celsius
Gento
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?
Alternativ auch mal den Befehl "Format" anschauen; kann zeitweise nützlich sein.
#ifndef MfG
#define MfG
Unklarer geht es wohl kaum.Zitat von elkokiller
Zeitlich hintereinander oder am LCD wie Locate 1,1 Locate 1,5 ?
Gento
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
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...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.
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?
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:
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.Code:Locate 1 , 1 Lcd "Dach Wass +/- TT" Locate 2 , 1 : Lcd " " ; Dg1 ; " " ; Dg2 ; " " ; Delta ; TT ;" "
Hey super!
Auf die einfachsaten Dinge kommt mann meistens garnicht
Danke!
Lesezeichen