LCD virtual (2)

      1 Comment on LCD virtual (2)

Una vez construido el Flash mis sospechas se hicieron realidad. En efecto, como la mayor parte del tiempo el fichero se encuentra abierto para escritura, el 90% de las veces que se pide está vacio. Para solucionarlo he implementado una version chapucera de la técnica del doble buffer. Escribo la pantalla en un fichero auxiliar y cuando cierro el mismo lo muevo al archivo definitivo mediante un comando del shell.
Aqui está el código fuente del pequeño programa.

El rudimento ha funcionado bastante bien, y ahora solo me queda lidiar con la detestable caché del navegador que hace que cada vez que el Flash pide el archivo con los datos, el navegador devuelva el cacheado y por lo tanto no se actualiza la pantalla. Para solucionarlo he añadido a la petición un parametro fantasma "?foo=contador" donde contador es un número que se incrementa con cada petición. De esta forma las llamadas son siempre distintas y evito la caché.
Muestra de una letra
Este no ha sido el único dolor de cabeza que me ha proporcionado el Flash. Como no he encontrado una fuente que sea gratuita y que emule las letras de un LCD (la SB Liquid Open lo hace, pero es de pago) me he construido los caracteres mediante una matríz de clips cuadrados de 5×8 puntos y he tenido que definir un mapa de caracteres completo para poder representarlos en dicha matriz mediante un vector de 5 bytes por caracter. De esta forma me puedo construir todos los símbolos que me apetezca, iconos e incluso animaciones. Lo que ocurre es que el driver de texto del lcdproc no me proporciona la definición de los iconos que pudiesen estar mostrandose en pantalla por lo que de momento no he implementado animaciones de caracteres en el Flash.
Para poner un ejemplo, la letra M, cuyo código ASCII es el 77 va contenida en la posicion 77 del array de caracteres y sus 5 bytes indican el mapa de bits que se enciende en cada una de las 5 columnas de la definición del caracter

this.charset[77] = new Array(0x7F,0x20,0x18,0x20,0x7F); // M

Este es el archivo .as que contiene una clase de ActionScript con la definición de todos los caracteres comunes del ASCII.

Este es el resultado final, con la conexión activa en el que podeis ver el estado actual de mi servidor a través de varias de las pantallas de información que proporciona el lcdproc. Para encenderlo hay que pulsar sobre el, si quieres apagarlo por que te consuma demasiados recursos, vuelve a pulsar sobre el.


 
 
 
 
 

He creado varios esquemas de color que se pueden pasar como parámetro al flash (parametro colorscheme) para obtener los 4 tipos de LCD diferentes que comercializa crystalfontz, el azul, el verde, el ambar y el rojo.

Pero esto no es todo, pronto volveré con mas información respecto al LCD virtual.

1 thought on “LCD virtual (2)

Comments are closed.