Forum: Mikrocontroller und Digitale Elektronik Umlaute und Sonderzeichen auf GLCD zeichnen


von Henry Daus (Gast)


Lesenswert?

Hallo,

ich habe seit gestern die GLCD-Lib von Fabian Max. T. am Laufen und bin 
davon begeistert! Das Einbinden in das AVR-Programm ging problemlos und 
habe schon ein wenig mit den Grafik-Funktionen herumgespielt, da ein 
GLCD Neuland für mich ist.
Aber heute bin ich auf ein Problem gestoßen, das ich noch zu bewältigen 
habe:
Es ist mir nicht gelungen Umlaute auf dem GLCD darzustellen.
Muss ich nun ein kleines a mit zwei Punkten, das ein ä sein soll, von 
Hand zeichnen? Nur wie binde ich das nun ein?
ks0108Puts_P(PSTR("Gerät")); will nicht funktionieren, jedenfalls wird 
das ä nicht dargestellt.

Und wenn ich schon mal dabei bin: Wie funktioniert das mit 
Sonderzeichen?
Z.B. wenn ich bei 0x80 das Zeichen "<->" erstelle, wie spreche ich 
dieses Zeichen an, damit es dargestellt wird?

MfG,
Henry

von ..,- (Gast)


Lesenswert?

Sind die Umlaute in deinem Font enthalten?
Ich glaubs fast nicht ... einfach deinen Font bisschen erweitern.

von Henry Daus (Gast)


Lesenswert?

..,- schrieb:
> Sind die Umlaute in deinem Font enthalten?
Autsch! Natürlich nicht!
Ein kleines ä ist 0xE4, der mitgelieferte Schriftsatz geht nur bis 0x7F.
Daran könnte es liegen! ;) Erweitertes ASCII...
Und der Befehl ks0108Puts_P(PSTR("Gerät")); wird dann im AVR-Studio 4 
mit der letzten WinAVR-Version funktionieren und auch ein ä darstellen?
Werde es heute Nachmittag mal ausprobieren und berichten.

Schon mal besten Dank!
Henry

von Henry Daus (Gast)


Lesenswert?

Hallo,

ich habe mit dem FontCreator2 einen neuen Schriftsatz erstellt, der mir 
alle ASCII-Zeichen ausgibt.
Habe zu den Standart-Zeichen nur die Umlaute hinzugefügt und versucht 
mit ks0108Puts_P(PSTR("Gerät")); den Text ausgeben zu lassen.
Ohne Erfolg. Mit einem anderen Schriftsatz habe ich es auch erfolglos 
probiert.
Entweder wird das ä überhaupt nicht ausgegeben oder es wird als 
kryptische Zeichen angezeigt. Die restlichen Buchstaben funktionieren 
1a!

Was mache ich falsch?

MfG,
Henry

von Karl H. (kbuchegg)


Lesenswert?

Henry Daus schrieb:

> Habe zu den Standart-Zeichen nur die Umlaute hinzugefügt und versucht
> mit ks0108Puts_P(PSTR("Gerät")); den Text ausgeben zu lassen.
> Ohne Erfolg.


Sieh den Code durch, ob irgendwo beim Auslesen des nächsten Zeichens aus 
dem String das oberste Bit wegmaskiert wird. ASCII in seiner Urform ist 
nur 7 Bit.

> Entweder wird das ä überhaupt nicht ausgegeben oder es wird als
> kryptische Zeichen angezeigt.

Was jetzt? kyrillisch oder gar nicht.

Gar nicht könnte ein 7Bit Problem sein. Kyrillisch könnte ein Problem 
sein, dass deine Fontdefinition des ä nicht am ASCII Code sitzt, an der 
der Fontgenerator das Zeichen generiert hat.
Hast du dir schon mal den ASCII Code des ä ausgeben lassen und 
kontrolliert ob das mit dem übereinstimmt, was der Fontgenerator 
annimmt? Immer drann denken: Was oberhalb 7Bit ASCII ein bestimmtes 
Zeichen für einen Code-Wert hat ... darüber gibt es verschiedene 
Vorstellungen.

von Henry Daus (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Was jetzt? kyrillisch oder gar nicht.
Folgende Sätze gehören zusammen und sind als eine Einheit zu lesen:
> Habe zu den Standart-Zeichen nur die Umlaute hinzugefügt und versucht
> mit ks0108Puts_P(PSTR("Gerät")); den Text ausgeben zu lassen.
> Ohne Erfolg. Mit einem anderen Schriftsatz habe ich es auch erfolglos
> probiert.
> Entweder wird das ä überhaupt nicht ausgegeben oder es wird als
> kryptische Zeichen angezeigt.
Tut mir leid, war wohl mein Fehler.
Also, ich habe mit dem FontCreator2 Zeichen von 32 bis 255 ausgeben 
lassen und dann lediglich nach den 127 Zeichen NUR die sechs Umlaute 
angefügt.
Das funktioniert anscheinend nicht, da es beim erstellten Font einen 
Zähler gibt. D.h. das große Ä steht nach MEINER Bearbeitung an Stelle 
128, die richtige Stelle wäre aber 196.
Habe mir einen Zeichensatz von 32 bis 255 mit dem FontCreator2 erstellt 
(nicht bearbeitet) und siehe da, es funktioniert nun auch mit den 
Umlauten!
Ich sollte wohl noch erwähnen, dass ich (bevor ich den ersten Beitrag 
schrieb) aus allen "char"s "unsigned char"s gemacht habe, damit ich 
extended ASCII benutzen kann.

Dass entweder ein kryptisches Zeichen oder gar nichts angezeigt wurde, 
deute ich darauf, dass "irgendwas" ausgegeben wurde, das zufällig an 
dieser Speicherstelle stand. Ich hab's ja mit zwei verschiedenen 
Schriftarten probiert.

Besten Dank,
Henry

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.