¿Cómo tratar con caracteres Unicode con pantallas LCD de caracteres?

8

Me gustaría comprar una pantalla LCD de Arduino para mostrar algunos resultados de una llamada http web; la API web devuelve un texto JSON codificado en UTF-8.

He leído que ICU es el camino a seguir para manejar Unicode en programas C / C ++ para Arduino.

Mis preguntas:
¿Podré mostrar los caracteres UTF-8 en este tipo de pantalla ?
¿Hay pantallas LCD de caracteres (asequibles) que puedan mostrar caracteres UTF-8?

    
pregunta systempuntoout

2 respuestas

6

No estoy muy familiarizado con Arduino, pero veamos desde la perspectiva de la pantalla LCD.

Prácticamente todos los LCD de caracteres populares utilizan el controlador HD44780 en estos días (eso es lo que Admite la biblioteca LiquidCrystal ). Este controlador no admite UTF-8 directamente, cada carácter está representado por un solo byte.

Por lo tanto, debe convertir UTF-8 a caracteres de 8 bits manualmente. El controlador tiene un generador de caracteres integrado con 208 5x8 y 32 5x10, más hasta 8 caracteres definidos por el usuario (consulte createChar ). Debe asignar cada carácter de entrada a uno de los caracteres predefinidos / personalizados. Obviamente, solo puede mostrar un subconjunto de caracteres UTF8, debe decidir qué caracteres desea / puede mostrar.

La conversión en sí debería ser bastante sencilla: solo debe recorrer en iteración la cadena UTF8, asignando cada carácter a un solo byte. Lo más probable es que quieras usar una tabla de búsqueda para mantenerlo simple. Déjame saber si esto necesita una explicación adicional.

    
respondido por el Code Painters
4

Unicode es complicado y grande, en su totalidad es demasiado grande para un Arduino. En la versión actual hay un total de más de 100000 caracteres, incluidos cuneiformes, jeroglíficos, klingon y por no mencionar muchos miles de caracteres chinos.

Entonces, si realmente quieres mostrar algunos caracteres Unicode en un Arduino:

  • Consigue una pantalla gráfica. El que mencionas es una pantalla de caracteres, solo puede mostrar un conjunto mayormente fijo de 256 caracteres.

  • Defina un pequeño subconjunto de caracteres que desee manejar. Hay algunos subconjuntos predefinidos, por ejemplo, los Multilingual Los subconjuntos europeos se ven bien.

  • Obtenga algunas fuentes y decórelas al conjunto que necesita. Tenga en cuenta que incluso mostrar puede ser mucho más complicado de lo que está acostumbrado desde ASCII, debido a la combinación de caracteres, escritura bidireccional y demás. Probablemente lo mejor es apegarse a los caracteres latinos sin ningún acento de combinación. El cirílico y el griego también deberían estar bien, como cualquier cosa que sea una simple secuencia de caracteres de izquierda a derecha.

  • Tal vez podrías usar algo de memoria externa para almacenar las fuentes.

Luego hay muchos otros temas que probablemente no necesite, por ejemplo, clasificación y búsqueda, consulte el estándar de Unicode y sus anexos (¡es grande!).

Olvídate de la UCI, necesita megabytes de memoria.

    
respondido por el starblue

Lea otras preguntas en las etiquetas