Archivo por días: 8 enero 2006

Manejar un ordenador con un mando a distancia

En el mercado de hoy en día se venden tarjetas sintonizadoras de televisión para el PC. Muchas de ellas tienen mando a distancia. Y en algunas de ellas el receptor de infrarojos que trae es para conectarlo a un puerto serie del PC.

Al ser el receptor de infrarojos un conector para el puerto serie, es muy sencillo comprobar que información le envía el mando a distancia y tomar esos datos para aprovecharlos en futuras aplicaciones, como por ejemplo:

-Apagar el equipo.
-Cargar una aplicación
-Simular pulsaciones del teclado predefinidas o mover el puntero ratón y simular pulsaciones de los botones.
-Escuchar música y subir el volúmen de los altavoces

La forma sencilla de saber que datos manda y en que formato sin tener que investigar mucho es usar un sniffer del puerto serie. En mi caso he usado el portmon, que es una excelente utilidad para rastrear la información que va y viene desde los puertos serie y paralelo.

Si os fijais en la imagen, se muestra como inicializa el puerto a 1200 baudios, 8 bits de datos, ninguna paridad y 1 bit de stop. A continuación vienen los datos propiamente dichos. Para la prueba he pulsado el botón 1 del mando a distancia y el resultado es FE 9F 31, si hubiese pulsado el 2 el resultado sería FE 3D 32. Si lo observamos veremos que el 1 y el 2 (y el resto de números) coinciden con su representación ASCII en hexadecimal (31 y 32). En otros casos como la pulsación de las teclas de subir (FE F1 3B) y bajar (FE 64 3D) volumen o subir (FE 17 3F)y bajar (FE C6 3E) de canal muestran otros caracteres. En el caso de que dejáramos una tecla pulsada los códigos varían ligeramente, como en la imágen, que aparece el triplete FE 77 71 cuando se deja pulsado el botón 1 del mando a distancia.

En definitiva, da igual que sea en linux o en windows, podemos capturar estos tripletes y actuar en consecuencia con cada pulsación recibida (si se pulsa el botón de off apagamos el equipo, si pulsamos los botones de subir y bajar el volumen y los canales podemos manejar el puntero del ratón, con el mute podemos apagar el altavoz del equipo, con el botón de play podemos enviar un tabulador, con los números podemos escribir letras estilo sms, etc). Por supuesto, que esa información venga así en mi receptor de infrarojos no significa que sea igual en otros, de ahi que haya que mirar como funciona con utilidades como el portmon.