Simulación de Puertos Virtuales en Linux

En un proyecto que estoy realizando necesitaba poder comunicarme con un equipo por puerto seria, pero no tenía el equipo a mano. Por lo tanto necesitaba una manera de poder  probar al comunicación serial con el programa que desarrolle.

Buscando en internet me encontée con este post (link) y comentaban el uso de ptys (Pseusoterminal) y fueron de ayuda para probar el desarrollo, puesto que simula una dispositivo y podemos escribir y recibir datos con ellos, por lo tanto desde mi aplicación escribía en el y desde consola le enviaba respuestas a mi aplicación.

Para crear los puertos se usa el comando

socat -d -d pty,raw,echo=0 pty,raw,echo=0

y retorna

2021/05/26 11:25:40 socat[13518] N PTY is /dev/pts/3
2021/05/26 11:25:40 socat[13518] N PTY is /dev/pts/4
2021/05/26 11:25:40 socat[13518] N starting data transfer loop with FDs [5,5] and [7,7]

Siendo /dev/pts/4 y /dev/pts/3 los puertos virtuales generados. Los valores de 3 y 4 dependen del sistema operativo.

Con esta configuración podemos desde nuestra aplicación utilizar el puerto /dev/pts/3

Por consola si ejecutamos tail -f /dev/pts/4 recibimos lo que estamos escribiendo en la aplicación y para responder podemos escribir en el puerto 4, por ejemplo echo ‘hola’ > /dev/pts/4.

O tener un mock de que utilice estos puertos para reemplazar al hardware que no poseemos y poder probar la comunicación.