PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage LCD Darstellung



m@rkus33
08.04.2007, 09:20
Hi @ all,

Frage, wie kann ich eine Zahl die auf dem Display dargestellt werden soll an der "letzten" Stelle verankern?

Also so:


Total:----0 g/Min


Bis auf die Zahl die von 0 - 9999 geht, ist alles mit "locate" genau definiert. Ich möchte nun das die letzte Ziffer der Zahl "stehen" bleibt und sich die vorderen Stellen nach vorne verschieben.

Gruß

Marten83
08.04.2007, 09:29
Morgen!

Guck mal in der Hilfe unter den Begriffen "fusing" und "format".
Habe selber noch nicht so viel damit gearbeitet, denke aber dass man genau damit sowas realiesieren kann.

Marten83

Vitis
08.04.2007, 10:48
der Befehl " len() " hilft auch weiter denk ich.

m@rkus33
11.04.2007, 23:39
habe das mir mal angeschaut. Ich habe fusing und format bereits hergenommen. Damit kann ich das Format und die Rundung beeinflussen, aber nicht die position auf dem Display.

mit len() komm ich auch irgendwie net weiter.

Jaecko
12.04.2007, 07:42
Habs mal so gemacht, dass ich die "Länge" der Zahl, also die Anzahl der Stellen rausles mit LEN(), die wäre z.B. mal bei der Zahl 25 LEN = 2.
Wenn die Zahl nun 4 Stellen lang sein soll, dann müssen da davor 4 - LEN() Leerzeichen dazu, also 2 Stück. bei ner 3-stelligen Zahl nur noch 1 Leerzeichen (4-3=1).

Dnerb
12.04.2007, 08:18
Hm,

len() ist doch für Strings gedacht.

Nun, hab jetzt kein Bock das auszuprobieren, mein eigenes Projekt braucht genug Zuwendung (die letzten 2 Wochen jeden 2ten Tag bis Morgens 3-6Uhr geproggt oder Lyout erstellt) aber ich habe da eine Idee mit der ich so was zu C64-Zeiten gelöst habe. Sollte es einen Bascom-Befehl dazu geben würde ichs auch gerne wissen, aber so lange kannst Du Dir so helfen:

0-9? -> Cursor entsprechend setzen
10-99? -> Cursor entsprechend setzen
100-999? -> Cursor entsprechend setzen
1000-9999? -> Cursor entsprechend setzen

Gruß Dnerb

m@rkus33
12.04.2007, 10:08
habs doch nun geschafft.

mit "format" gehts tatsächlich :D

Wird beim Befehl format automatisch an der letzten stelle verankert.

bei " x=(format y," ") werden Leerzeichen vorangestellt. Bascom ist so schlau das die Einerstelle gleich ganz hinten steht. Auch beim Befehl "locate" und "lcd"

supi

for_ro
12.04.2007, 10:21
Hi @ all,

Frage, wie kann ich eine Zahl die auf dem Display dargestellt werden soll an der "letzten" Stelle verankern?

Also so:


Total:----0 g/Min


Bis auf die Zahl die von 0 - 9999 geht, ist alles mit "locate" genau definiert. Ich möchte nun das die letzte Ziffer der Zahl "stehen" bleibt und sich die vorderen Stellen nach vorne verschieben.

Gruß

Was vitis wohl meint ist folgendes:

Angenommen, die "letzte" Stelle ist Position 15 in der Zeile 1.
Dann holst du dir vor jedem Print die Länge des Strings, den du mit Fusing erzeugt hast, z.B. mit

b_gew_länge=len(s_Gewicht)

und setzt dies auf dem Display an die Position

b_pos_länge=16-b_gew_länge (16!, nicht 15), also

Locate b_pos_länge,1:lcd s_Gewicht

Hat Gewicht jetzt nur eine Stelle, wird es auf die Position 15 geschrieben, sind es drei Stellen, wird es auf 13-15 geschrieben, 15 bleibt also fix.
Dabei brauchst du nicht mehrere IFs um die Position herauszufinden.

Andererseits sollte

s_formatiert=Format(s_Gewicht, " ")
Locate 12,1:lcd s_formatiert

auch funktionieren, solange Gewicht nicht größer als 9999 wird.
Das ist in einem Befehl das, was Jaecko vorschlägt.

Gruß

Rolf

TobiasBlome
08.05.2007, 16:45
Hallo,
kann mir einer sagen was an meinem Formatbefehl falsch ist?! Also hinten mit den 2 Kommastellen funktioniert, aber vor dem komma funktioniert das nicht! Und wenn die Zahl jetzt noch negativ wird, kommt noch eine Stelle dazu und alles ist verrutsch....

Locate 2 , 11
Lcd + Fusing(yout_ms , "###.##") ; "m/s2"