Comunicación serial falsa bajo Linux

Tengo una aplicación donde quiero simular la conexión entre un dispositivo y un "módem". El dispositivo se conectará a un puerto serie y se comunicará con el módem de software a través de él.

Para fines de prueba, quiero poder utilizar un dispositivo de software simulado para probar enviar y recibir datos.

Código de Python de ejemplo

device = Device()
modem  = Modem()
device.connect(modem)

device.write("Hello")
modem_reply = device.read()

Ahora, en mi aplicación final, solo pasaré / dev / ttyS1 o COM1 o lo que sea que la aplicación use. Pero, ¿cómo puedo hacer esto en software? Estoy corriendoLinux y la aplicación está escrita enPitón.

He intentado hacer un FIFO (mkfifo ~/my_fifo) y eso funciona, pero necesitaré un FIFO para escribir y otro para leer. Lo que quiero es abrir~/my_fake_serial_port y leer y escribir a eso.

También he pagado con elptymódulo, pero tampoco puedo hacer que funcione. Puedo obtener un descriptor de archivo maestro y esclavo depty.openpty() pero tratar de leerlos o escribirles solo causaIOError Bad File Descriptor mensaje de error.

Actualizar

Los comentarios me señalaron la pregunta SO¿Hay algún programa como COM0COM en Linux? que usasocat configurar una conexión en serie virtual. Lo usé así:

socat PTY,link=$HOME/COM1 PTY,link=$HOME/COM2

Para el resto de ustedes, gracias por darme información valiosa. Elegí aceptarVinay SajipsLa respuesta ya que esa es la solución que busqué antes de que apareciera la sugerencia de socat. Parece funcionar bastante bien.

Respuestas a la pregunta(3)

Su respuesta a la pregunta