C Umlaute mit XV-TFT60D

0n3 70uch

Neues Mitglied
26. Mai 2010
54
0
0
Wermelskirchen
Sprachen
  1. ANSI C
Hallo,

nach dem das eine Problem schnell gelöst werden konnte :) habe ich noch eine Frage zu Umlauten:

Und zwar habe ich mir eine eigene Schrift gerendert und verwende diese auch soweit erfolgreich in meinem Programm. Allerdings zeigt mir das Display bei Umlauten leider nur unbrauchbares zeug an. Die erstellte Schrift ist selbstverständlich mit Sonderzeichen und Umlauten.

Hier mal der Auszug aus dem Quellcode:
Code:
DrawRect_BrushColorFill (0, 0, 480, 272-72);  // Clear Application Screen
	
SetBrushColor (205, 205, 205);
DrawRect_BrushColorFill (0, 0, 480, 50);
SetUserFlashMemoryFont (61, 0);	//40px Arial proportional character align
DisplayText (10, 5, "Achtung");
	
SetBrushColor (255, 255, 255);
SetUserFlashMemoryFont (60, 0);	//Standardschrift

DisplayText (10, 60, "Sind Sie sicher, dass Sie das System wirklich");
DisplayText (10, 85, "herunterfahren möchten?");
	
DisplayImagePackage_Image (0, (272-71), 1, 0);

Und noch das passende Foto vom Display (ist etwas unvorteilhaft geworden):
xv-tft60d.jpg

Gruß
Fabi
 
Hallo Fabi!

Das hat bestimmt was mit dem Character Set zu tun. Du verwendest GCC mit Linux?

Anscheinend macht der Compiler 2Byte aus dem 'ö'. Ich weiß noch nicht genau, wie man dieses umschifft.

Eventuell mal die Compileroptionen
-fexec-charset=<charset>
-fwide-exec-charset=<charset>
(ich denke es wird standardmäßig UTF-8 verwendet)
ansehen.

Vielleicht hilft auch bei dem Editor einen Zeichensatz zu wählen, der nicht unicode-fähig ist. Das wäre ggf. Fixedsys.

Wenn ich deinen Source bei mir kompiliere, wird es bestimmt funktionieren.
Ich verwende WindowsXP und Windows7.

Ich werde hier nochmal näher forschen.

Grüße,
Dirk
 
Eventuell mal die Compileroptionen
-fexec-charset=<charset>
-fwide-exec-charset=<charset>
ansehen.

Hallo Dirk,

^^das war der Fehler.

Meine Compileroptionen sehen jetzt folgendermaßen aus:
Code:
avr-gcc -O2 -mmcu=atmega32 -D F_CPU=16000000UL -fexec-charset=iso-8859-1 '/dir/Main.c' '/dir/Display_Graphics.c' '/dir/Display_Numerical.c' '/dir/Display_SPI.c' '/dir/Display_System.c' '/dir/Display_Text.c' '/dir/Display_TouchPanel.c' '/dir/Display_UserMemory.c' -o main.elf

Und danach natürlich noch ein:
Code:
avr-objcopy -O ihex -j .text -j .data main.elf  main.hex

Danke!
Gruß
Fabi
 
Hallo Fabi!

Schön, dass es nun mit den Compileroptionen funktioniert.

Noch ein Hinweis zur Ausgabe von Strings:
Verwende doch die Routine DisplayText_F, hier wird der String direkt aus den Flash geladen und nicht erst in das SRAM kopiert, wo er jede Menge Platz verbraucht.

Code:
#include <avr/pgmspace.h>
//...
DisplayText_F ( 10, 60, PSTR("Sind Sie sicher, dass Sie das System wirklich") );
DisplayText_F ( 10, 85, PSTR("herunterfahren möchten?") );

Gruß,
Dirk
 
Hallo Dirk,

gut zu wissen mit der "pgmspace.h" Bibliothek. Hab das ganze bereits im bestehenden Programm umgesetzt.

Gruß
Fabi
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)