miércoles, 30 de noviembre de 2011

Convertir Señal de dispositivo puerto serial (RS232) a entrada de Teclado

Hace  algunos días, me topé con un problema, tenia que, de alguna forma, recibir en mi aplicación de PHP la información de uno o varios terminales conectadas a una bascula cada uno y que desde ésta (la bascula) se enviara el peso al sistema.

Tenemos ya algunas basculas, especificamente una mettler toledo IND221, en algunas sucursales, estas basculas tienen un boton para transferir la información que a presionarse automáticamente debe ingresarla en el sistema, lo único que tiene para comunicarse es un RS232 o puerto COM, entonces, levantamos un linux (opensuse 12.1) en una PC reciclada y la conectamos a la báscula.

para lograr que los pesos se fueran directamente al sistema, creamos un input con ajax (especificamente xajax) que autoprocesara la información y quedara lista para un nuevo peso (tuvimos que limpiar la cadena recibida pues contiene espacios y caracteres adicionales al peso).


pero este no era el problema, sino lograr que la bascula enviara la información y que al recibirla se tradujera como ingreso del teclado para que el sistema lo ingresara en el input que tenia el focus, lograr una conexión es realmente fácil en linux con minicom, pero convertir esta señal en algo que automáticamente alimentara el sistema fue un problema.
Anduve erraticamente probando soluciones de todo tipo en varios SO, al final la solución está en una libreria llamada softwedge de Yann Ramin,


Está diseñada para funcionar con un escaner serial, sin embargo trabaja perfectamente con la bascula, para invocarla luego de instalarla es necesaria la siguiente sentencia:


 
softwedge -c /dev/ttyS0
 
en mi caso habilité para ambos puertos com, es decir ttyS0, ttyS1 para evitar equivocarme de puerto 
en la conexión con la bascula.
Gracias Yann Ramin por esta solución. 

Esto es todo, cualquier comentario será bien recibido.  

No hay comentarios:

Publicar un comentario