Hallo, seid ein paar Monaten beschäftige ich mich mit der C-Programmierung eines STM32F103VE. Ich verwende Eclipse und Yargato und bin ansonsten Anfänger. Die Ansteuerung eines 320x240-Pixel-Displays mit dem One-Chip Driver LGDP4532 habe ich halbwegs im Griff und mit Excel einen eigenen Zeichensatz kreiert (siehe Anlage). Vom Leerzeichen bis zum kleinen "z" stimmt dieser Zeichensatz mit dem Windows-üblichen Zeichensatz überein. Um Designarbeit und Speicherplatz zu sparen, sollen ab dem Zeichen #123 nur noch die unbedingt nötigen Zeichen folgen. Zur Zeit muss die Ausgaberoutine die auszugebenen Zeichen testen und bei Bedarf die Nummer des Zeichens (Ä = #196) in die Nummer meines Zeichensatz (Ä = #123) übersetzen. Gibt es eine Möglichkeit Eclipse oder dem GNU-Compiler mitzuteilen, dass ein Ä nicht die Nummer #196 hat, sondern #123? Das würde das Programm vereinfachen und die Ausgaberoutine beschleunigen.
> Gibt es eine Möglichkeit Eclipse oder dem GNU-Compiler > mitzuteilen, dass ein Ä nicht die Nummer #196 hat, sondern #123? Ziemlich sicher nicht. > Zur Zeit muss die Ausgaberoutine die auszugebenen Zeichen > testen und bei Bedarf die Nummer des Zeichens (Ä = #196) > in die Nummer meines Zeichensatz (Ä = #123) übersetzen. Wenn Du Deiner Ausgaberoutine eine Tabelle mit 256 Byte Größe spendierst, kannst Du mit einem einzigen Tabellenzugriff beliebige Zeichensatzcodierungen abbilden. Das verzögert annähernd überhaupt nicht. Als Index für den Tabellenzugriff nimmst Du den Zeichencode nach ISO8859-1, und in der Tabelle steht der Index in Deine eigene Zeichensatztabelle. Für Zeichen, die nicht in Deiner Zeichensatztabelle enthalten sind, wird auf ein Standardzeichen wie z.B. das Leerzeichen verwiesen.
Rufus Τ. Firefly schrieb: > Wenn Du Deiner Ausgaberoutine eine Tabelle mit 256 Byte Größe > spendierst, kannst Du mit einem einzigen Tabellenzugriff beliebige > Zeichensatzcodierungen abbilden. Ich denke das ist eine gute Idee. Das Übersetzen mit einer Tabelle ist besser und flexibler als mit einer switch-Anweisung. Einen Teil der 256 Byte spare ich durch die kürze Ausgaberoutine. Den eventuellen Rest verkraftet der 512-KB-Flashspeicher locker. Danke rufus.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.