- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Frage LCD Darstellung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161

    Frage LCD Darstellung

    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ß

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    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

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    der Befehl " len() " hilft auch weiter denk ich.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    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.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    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).

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.01.2005
    Alter
    52
    Beiträge
    294
    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

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    habs doch nun geschafft.

    mit "format" gehts tatsächlich

    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

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113

    Re: Frage LCD Darstellung

    Zitat Zitat von m@rkus33
    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

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    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"

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen