Come gestire i caratteri Unicode con display LCD a caratteri?


8

Vorrei acquistare uno schermo LCD da Arduino per visualizzare alcuni risultati da una chiamata http web; l'API Web restituisce un testo JSON codificato in UTF-8.

Ho letto che ICU è la strada da percorrere per gestire Unicode nei programmi C / C ++ per Arduino.

Le mie domande:
Sarò in grado di visualizzare i caratteri UTF-8 su questo tipo di schermo ?
Ci sono schermi LCD a caratteri (convenienti) in grado di visualizzare caratteri UTF-8?


3
Stiamo parlando di un display grafico o di un display a caratteri segmentati? Su uno schermo segmentato, ovviamente non è possibile visualizzare alcun segno che non si adatta allo schema del segmento. Per usi "occidentali" non ascii, è possibile ricorrere al carattere di base (senza accento, ecc.). Per altri script sei molto probabilmente sfortunato.
drxzcl,

Risposte:


6

Non ho molta familiarità con Arduino, ma diamo un'occhiata dal punto di vista LCD.

Praticamente tutti i comuni LCD a caratteri usano il controller HD44780 al giorno d'oggi (questo è ciò che supporta la libreria LiquidCrystal ). Questo controller non supporta direttamente UTF-8, ogni carattere è rappresentato da un singolo byte.

Pertanto, è necessario convertire manualmente i caratteri UTF-8 in caratteri a 8 bit. Il controller ha un generatore di caratteri incorporato con 208 caratteri 5x8 e 32 caratteri 5x10, oltre a un massimo di 8 caratteri definiti dall'utente (vedere createChar ). Devi mappare ogni carattere di input su uno dei caratteri predefiniti / personalizzati - ovviamente puoi solo visualizzare un sottoinsieme di caratteri UTF8, devi decidere quali caratteri vuoi / puoi visualizzare.

La conversione stessa dovrebbe essere piuttosto semplice: devi solo iterare sulla stringa UTF8, mappando ogni carattere su un singolo byte. Molto probabilmente ti consigliamo di utilizzare una tabella di ricerca per renderlo semplice. Fammi sapere se questo necessita di ulteriori spiegazioni.


grazie; pensi che questo tipo di display grafico Tft possa offrire un supporto Unicode migliore?
systempuntoout

1
Questo è un display grafico, per quanto posso vedere, quindi può visualizzare praticamente tutto quello che vuoi. La libreria fornita fornisce anche funzioni per disegnare il testo, ma supporta nuovamente solo caratteri a 8 bit. Pertanto, con questo display è necessario lo stesso tipo di conversione descritto sopra e utilizzare la libreria così com'è, oppure è necessario modificare la libreria per supportare UTF8. Tieni presente che l'uso di un display grafico renderà il tuo codice più grande - hai bisogno di ulteriori librerie, font, ecc. Ma almeno hai il pieno controllo del set di caratteri disponibile - il font fa parte del software.
Code Painters,

4

Unicode è complicato e grande, nella sua interezza è troppo grande per un Arduino. Nella versione attuale ci sono in totale oltre 100000 caratteri, inclusi cuneiformi, geroglifici, Klingon e per non parlare di molte migliaia di caratteri cinesi.

Quindi, se vuoi davvero mostrare alcuni personaggi Unicode su un Arduino:

  • Ottieni una visualizzazione grafica. Quello che hai citato è un display a caratteri, può solo mostrare un set per lo più fisso di 256 caratteri.

  • Definisci un piccolo sottoinsieme di caratteri che vuoi gestire. Esistono alcuni sottoinsiemi predefiniti, ad esempio i sottoinsiemi europei multilingue sembrano belli.

  • Prendi alcuni caratteri e spoglili fino al set che ti serve. Nota che anche la visualizzazione può essere molto più complicata di quella a cui sei abituato da ASCII, a causa della combinazione di caratteri, scrittura bidirezionale e simili. La cosa migliore è probabilmente attenersi ai caratteri latini senza accenti combinati. Anche il cirillico e il greco dovrebbero andare bene, così come tutto ciò che è una semplice sequenza di caratteri da sinistra a destra.

  • Forse potresti usare un po 'di memoria esterna per memorizzare i caratteri.

Quindi ci sono molti altri argomenti che probabilmente non ti servono, ad esempio l'ordinamento e la ricerca, vedi lo standard Unicode e i suoi allegati (è grande!).

Dimentica ICU, ha bisogno di megabyte di memoria.


Dovrò provare a mettere (un sottoinsieme!) Di ICU su Arduino .. dovrebbe essere divertente.
Steven R. Loomis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.