Forum: Mikrocontroller und Digitale Elektronik In Bascom Komma statt Punkt als Trennzeichen


von Michael M. (mima)


Lesenswert?

'zusammen,

ich hoffe, folgende Frage beschäftigt nicht nur mich alleine, jedenfalls 
erbrachten Google und Forensuche nix ;)

Ich habe mehrere Werte, die ich mit Fusing(Variable,"#.#") auf einem LCD 
ausgebe. Funktioniert auch soweit gut, allerdings möchte ich (wie es im 
Deutschen richtigerweise sein sollte) ein Komma zur Trennung der 
Nachkommastellen verwenden, also statt z.B. 18.3 18,3 ausgeben. 
Fusing(Variable,"#,#") scheint ja nicht zu funktionieren.
Der Umweg, an der Position des Punktes nachträglich ein Komma über 
Locate x,y einzufügen, ist bekannt, aber für unschön befunden worden. 
Umwandlung zu String und Insertion des Kommas wäre ne Möglichkeit, aber 
es muss doch für dieses naheliegende Problem auch etwas Einfacheres 
geben, oder? ;)

Bedank,
Michael

von Falk B. (falk)


Lesenswert?

Vermutung: Im Windows kann man irgendwo das Dezimalzeichen einstellen, 
Systemsteuerung, und dann Sprachoptionen. Vieleicht greift BASCOM darauf 
zu?
Vielleicht gibts diese Einstellung über einen $xyz Parameter? RTFM?

MfG
Falk

von Michael M. (mima)


Lesenswert?

Hallo,

zu 1. Nein, in der Systemsteuerung alles richtig eingestellt, daran 
haperts nicht.

zu 2. Möglich, dann würde ich den $xyz gerne kennen lernen ;)
zu 3. Getan, nix gefunden, in der englischsprachigen Welt stellt sich 
das Problem ja auch nicht ;)

Trotzdem Danke,
Michael

von Peter D. (peda)


Lesenswert?

Ich programmiere in C und da lege ich immer nen Puffer für das LCD an.
Ne LCD-Ausgabe ist ja recht langsam und macht einem die Performance 
zunichte, wenn man immer alles direkt aufs LCD schreibt.

Außerdem sollte man nicht zu oft auf das LCD schreiben, sonst kann man 
den Text nicht mehr lesen, wenn er sich ständig ändert.
Daher macht dann ein Timerinterrupt das Schreiben des Puffers in das 
LCD, immer ein Byte pro Interrupt. Nach etwa 200ms ist dann jedes Byte 
im LCD aufgefrischt.
Diese Lösung ist besonders effektiv, wenn der MC schon gut ausgelastet 
ist.

Und in dem Puffer kann man dann bequem den '.' durch ein ',' ersetzen.

Für einfache Programme, wo der MC kaum was zu tun hat, kann man auch den 
Puffer nur für die Zahl anlegen, das Komma einfügen, ihn direkt ausgeben 
und die 200ms warten.


Peter

von Harry U. (harryup)


Lesenswert?

hi,
recht einfach geht das mit der format anweisung.

Anzeige = Format(str(level) , "0.0") + " bar"                    ' 
Ausgabe mit 1 Nachkommastelle

mit neueren bascom-compilern funktioneren verschachtelte funktionen 
nicht mehr, da muss dann stehen:

Anzeige = str(level)
Anzeige = Format(anzeige) , "0.0") + " bar"                    ' Ausgabe 
mit 1 Nachkommastelle

Anzeige als string * 8, Level als Long definiert.

grüssens, harry

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.