9 votos

¿Cómo tratar los caracteres unicode con las pantallas LCD de caracteres?

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

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

Mis preguntas:
¿Podré mostrar los caracteres UTF-8 a este tipo de pantalla ?
¿Existen pantallas LCD de caracteres (asequibles) capaces de mostrar caracteres UTF-8?

7voto

Mitchell Watt Puntos 71

No estoy muy familiarizado con Arduino, pero veámoslo desde la perspectiva de la LCD.

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

Por lo tanto, es necesario convertir manualmente los caracteres UTF-8 a 8 bits. El controlador tiene un generador de caracteres integrado con 208 caracteres 5x8 y 32 caracteres 5x10, además de hasta 8 caracteres definidos por el usuario (véase createChar ). Necesita asignar cada carácter de entrada a uno de los caracteres predefinidos/personalizados - obviamente sólo puede mostrar un subconjunto de caracteres UTF8, necesita decidir qué caracteres quiere/puede mostrar.

La conversión en sí misma debería ser bastante sencilla - sólo tienes que iterar sobre la cadena UTF8, mapeando cada carácter a un único byte. Lo más probable es que quieras usar una tabla de búsqueda para mantenerlo simple. Hágame saber si esto necesita más explicación.

4voto

reconbot Puntos 1670

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

Así que si realmente quieres mostrar algunos caracteres Unicode en un Arduino:

  • Obtenga una visualización gráfica. El que mencionas es un visualizador de caracteres, sólo puede mostrar un conjunto casi fijo de 256 caracteres.

  • Defina un pequeño subconjunto de caracteres que desee manejar. Hay algunos subconjuntos predefinidos, por ejemplo el Subconjuntos europeos multilingües se ven bien.

  • Consiga algunas fuentes y redúzcalas al conjunto que necesita. Ten en cuenta que incluso la visualización puede ser mucho más complicada de lo que estás acostumbrado en ASCII, debido a la combinación de caracteres, la escritura bidireccional y demás. Lo mejor es probablemente limitarse a los caracteres latinos sin acentos combinados. El cirílico y el griego también deberían estar bien, así como cualquier cosa que sea una simple secuencia de caracteres de izquierda a derecha.

  • Tal vez podrías utilizar alguna memoria externa para almacenar las fuentes.

Luego hay un montón de otros temas que probablemente no necesites, por ejemplo la ordenación y la búsqueda, ver el estándar Unicode y sus anexos (¡es grande!).

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X