Wie gehe ich mit Unicode-Zeichen mit Zeichen-LCD-Anzeigen um?

8

Ich möchte einen LCD-Bildschirm von Arduino kaufen, um einige Ergebnisse eines Web-http-Anrufs anzuzeigen. Die Web-API gibt einen in UTF-8 codierten JSON-Text zurück.

Ich habe gelesen, dass auf der Intensivstation Unicode in C / C ++ - Programmen für Arduino verarbeitet werden kann.

Meine Fragen:
Kann ich UTF-8-Zeichen auf diesem Bildschirm anzeigen ?
Gibt es (erschwingliche) Zeichen-LCD-Bildschirme, die UTF-8-Zeichen anzeigen können?

systempuntoout
quelle
3
Sprechen wir über eine grafische Anzeige oder eine segmentierte Zeichenanzeige? Auf einer segmentierten Anzeige können Sie offensichtlich keine Zeichen anzeigen, die nicht zum Segmentmuster passen. Für "westliche" Nicht-ASCII-Anwendungen können Sie wahrscheinlich auf den Basischarakter (ohne Akzent usw.) zurückgreifen. Bei anderen Skripten haben Sie höchstwahrscheinlich kein Glück.
drxzcl

Antworten:

6

Ich bin mit Arduino nicht so vertraut, aber schauen wir es uns aus der LCD-Perspektive an.

Nahezu alle gängigen Zeichen-LCDs verwenden heutzutage den HD44780- Controller (dies wird von der LiquidCrystal- Bibliothek unterstützt). Dieser Controller unterstützt UTF-8 nicht direkt, jedes Zeichen wird durch ein einzelnes Byte dargestellt.

Daher müssen Sie UTF-8 manuell in 8-Bit-Zeichen konvertieren. Der Controller verfügt über einen integrierten Zeichengenerator mit 208 5x8- und 32 5x10-Zeichen sowie bis zu 8 benutzerdefinierten Zeichen (siehe createChar ). Sie müssen jedes Eingabezeichen einem der vordefinierten / benutzerdefinierten Zeichen zuordnen. Natürlich können Sie nur eine Teilmenge der UTF8-Zeichen anzeigen. Sie müssen entscheiden, welche Zeichen angezeigt werden sollen / können.

Die Konvertierung selbst sollte ziemlich einfach sein - Sie müssen nur die UTF8-Zeichenfolge durchlaufen und jedes Zeichen einem einzelnen Byte zuordnen. Höchstwahrscheinlich möchten Sie Nachschlagetabellen verwenden, um es einfach zu halten. Lassen Sie mich wissen, ob dies einer weiteren Erklärung bedarf.

Codemaler
quelle
Vielen Dank; Glauben Sie, dass diese Art der grafischen Tft-Anzeige eine bessere Unicode-Unterstützung bieten könnte?
Systempuntoout
1
Soweit ich sehen kann, handelt es sich um eine Grafikanzeige, mit der so ziemlich alles angezeigt werden kann, was Sie möchten. Die bereitgestellte Bibliothek bietet auch Funktionen zum Malen von Text, unterstützt jedoch wiederum nur 8-Bit-Zeichen. Bei dieser Anzeige müssen Sie entweder dieselbe Konvertierungsart wie oben beschrieben verwenden und die Bibliothek unverändert verwenden, oder Sie müssen die Bibliothek ändern, um UTF8 zu unterstützen. Beachten Sie, dass die Verwendung eines Grafikdisplays Ihren Code vergrößert - Sie benötigen zusätzliche Bibliothek, Schriftart usw. Aber zumindest haben Sie die volle Kontrolle über den verfügbaren Zeichensatz - die Schriftart ist Teil der Software.
Code Painters
4

Unicode ist kompliziert und groß, in seiner Gesamtheit zu groß für ein Arduino. In der aktuellen Version gibt es insgesamt über 100000 Zeichen, einschließlich Keilschrift, Hieroglyphen, Klingonisch und ganz zu schweigen von vielen tausend chinesischen Zeichen.

Wenn Sie also wirklich einige Unicode-Zeichen auf einem Arduino anzeigen möchten:

  • Holen Sie sich eine grafische Anzeige. Die von Ihnen erwähnte ist eine Zeichenanzeige, die nur einen meist festen Satz von 256 Zeichen anzeigen kann.

  • Definieren Sie eine kleine Teilmenge von Zeichen, die Sie verarbeiten möchten. Es gibt einige vordefinierte Teilmengen, zum Beispiel sehen die mehrsprachigen europäischen Teilmengen gut aus.

  • Holen Sie sich einige Schriftarten und entfernen Sie sie auf das gewünschte Set. Beachten Sie, dass selbst das Anzeigen aufgrund der Kombination von Zeichen, bidirektionalem Schreiben und dergleichen viel komplizierter sein kann als Sie es von ASCII gewohnt sind. Am besten halten Sie sich wahrscheinlich an lateinische Schriftzeichen, ohne Akzente zu kombinieren. Kyrillisch und Griechisch sollten ebenso in Ordnung sein wie alles, was eine einfache Folge von Zeichen von links nach rechts ist.

  • Vielleicht könnten Sie einen externen Speicher zum Speichern der Schriftarten verwenden.

Dann gibt es noch eine ganze Reihe anderer Themen, die Sie wahrscheinlich nicht benötigen, zum Beispiel Sortieren und Suchen, siehe den Unicode-Standard und seine Anhänge (es ist groß!).

Vergessen Sie die Intensivstation, sie benötigt Megabyte Speicher.

Sternenblau
quelle
Ich muss versuchen, (eine Teilmenge!) Der Intensivstation auf das Arduino zu setzen. Sollte Spaß machen.
Steven R. Loomis