Simular dispositivo de puerto serie utilizando stdin y stdout.
Actualmente, tengo una aplicación de escritorio que utilizo para leer y escribir datos en un dispositivo de hardware propietario a través de una interfaz de puerto serie. La aplicación comienza enumerando los dispositivos COM serie conectados a la computadora y una vez seleccionado un dispositivo, se puede interactuar con la aplicación para comunicarse con el dispositivo correspondiente. Ya no tengo dicho dispositivo disponible, pero me gustaría seguir utilizando la aplicación de todos modos.
Ya he desarrollado una utilidad de línea de comandos que, dado un mensaje binario en stdin
, emite la respuesta binaria correspondiente (la misma respuesta que el dispositivo de hardware propietario enviaría a través del puerto serie) a stdout
. Llamemos a esta utilidad un simulador
.
¿Cómo puedo configurar un puerto serie virtual de modo que la aplicación pueda detectarlo y que cada vez que la aplicación envíe un mensaje utilizando el protocolo de puerto serie, dicho mensaje sea redirigido al simulador
y la respuesta del simulador
sea devuelta a la aplicación de escritorio?
Estoy utilizando Mac OS 12 con un procesador M1. También estoy abierto a soluciones en Windows 10 (con menor prioridad).
He revisado preguntas anteriores en StackOverflow que podrían ser similares a esta, pero eran incompletas o ligeramente diferentes, sin una forma evidente de inferir la solución para mi problema actual.
davy.ai
Para configurar un puerto serial virtual en macOS, puedes usar un emulador de puerto serial virtual como com0com o socat. Estas herramientas te permiten crear puertos seriales virtuales que pueden ser utilizados por tu aplicación de escritorio. Aquí tienes una guía paso a paso para configurar un puerto serial virtual usando com0com:
Reemplaza “input_message.bin” con el nombre del archivo de mensaje binario y “/dev/tty.CNCB0” con el nombre del puerto serial virtual que creaste. Este comando enviará el mensaje de entrada a la utilidad del simulador y reenviará la salida al puerto serial virtual.
Nota: Si estás utilizando un emulador de puerto serial virtual diferente, los pasos pueden ser ligeramente diferentes pero el proceso general debería ser similar.