2 de junio de 2017

Crear Puerto Serial Virtual entre Ubuntu y VirtualBox (con WindowsXP)

Necesitaba realizar ingeniería inversa a un programa de un fabricante de Maquinaria Pesada (Heavy Machine), que como la mayoría de programas industriales, solo funcionaba en Windows, ademas solo se comunicaba por puerto serial, si no detectaba la Maquina no se ejecutaba y salia.

Como en ninguna de mis computadoras tengo Windows, solo uso GNU/Linux, decidí crear una maquina virtual con VirtualBox e instalar Windows XP, me venia bien, porque funciona rápido y es donde mejor funcionan el programa a ingeversar.

Bien aquí tengo la maquina virtual con Windows XP corriendo en Ubuntu, con sus respectivos menus desplegados:
Con la maquina virtual Windows XP apagada, debemos de configurar en la Opción "Puerto Serie" lo siguiente:
Entonces al ejecutar la Maquina Virtual, se creara una tubería en '/tmp/ttyXPM01', si listamos esta tubería se vera así:
Para convertir la tuberia '/tmp/ttyXPM01', en un puerto serial debemos de usar SOCAT, es un paquete que viene predeterminado en ubuntu.
Debemos utilizar el siguiente comando:
usuario@laboratorio:~$ sudo socat -d -d -d -v -x UNIX-CONNECT:/tmp/ttyXPM01 PTY, link=/dev/ttyVSP1, mode=777, unlink-close, raw, echo=0
De tal forma que, si listamos los dispositivos tty veremos que se ha creado el puerto serial '/dev/ttyVSP1', mientras SOCAT se mantenga funcionando existirá este puerto, y si sales de SOCAT desaparecerá:
Ahora ya tenemos creado un puerto serial 'COM1' en Windows XP que se conecta a otro puerto serial '/dev/ttyVSP1' en GNU\Linux.
Esto quiere decir que cualquier programa en Windows que se conecte al COM1, podrá comunicarse con cualquier programa en Linux, que este conectado a '/dev/ttyVSP1'.
Ahora desde GNU/Linux, podemos abrir un programa terminal para puerto serial, como el minicom o el cutecom y conectarnos la puerto '/dev/ttyVSP1' :
Ahora si podemos conversar con el programa en Windows e implementar un programa que le simule estar conectado a la Maquina.
Podemos ver las Tramas que envía a través del puerto serial y mediante un programa, por ejemplo en python interpretar los datos.

No hay comentarios:

Publicar un comentario

Gracias por participar

GIMP: Trabajando con Python en GIMP

Vamos a trabajar con python desde gimp, para esto vamos a abrir algun archivo XCF con imagenes. Luego abrir la consola en el menu Filtros -...