serial - Emulador de módem nulo(com0com) para Linux
com0com download (1)
Tengo un proyecto que contiene algunas pruebas unitarias usadas para probar las comunicaciones serie usando puertos COM (en Windows). Uso com0com para crear un par virtual de puertos delimitados y ejecutar las pruebas.
Sin embargo, no sé cómo hacer eso en Linux ni en MACOS. He leído este tema: ¿Hay algún programa como COM0COM en Linux? Donde la respuesta sugiere usar socat. Intenté ese enfoque pero no funciona, mi aplicación no detecta los puertos que acabo de definir en socat.
socat PTY,link=/dev/COM98 PTY,link=/dev/COM99
Mi teoría es que socat no puede crear puertos virtuales, solo puede unir los puertos existentes.
¿Cómo puedo resolver este problema?
¡Gracias!
EDITAR:
Esto es lo que obtengo después de ejecutar el comando socat anterior. Si observa detenidamente, verá que los puertos COM98 y COM99 están en / dev /. Sin embargo, si escribo en / dev / COM98 y uso tail -f para seguir COM99, no obtengo ningún resultado.
EDIT2:
Bueno, si uso cat en lugar de tail, puedo ver el resultado (¿por qué ?!)
''
''
''
EDIT3:
SOLUCIÓN: ¡No nombre los puertos COMxx sino ttySxx en su lugar!
Ejemplo:
socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99
Motivo por el cual: algunas bibliotecas de comunicaciones en serie pueden no admitir otras nomenclaturas, como RXTX 2.XX y versiones anteriores.
socat -d -d pty,raw,echo=0 pty,raw,echo=0
funciona bien y se imprime:
2014/05/26 13:29:15 socat[27177] N PTY is /dev/pts/32
2014/05/26 13:29:15 socat[27177] N PTY is /dev/pts/33
2014/05/26 13:29:15 socat[27177] N starting data transfer loop with FDs [3,3] and [5,5]
Supongo que deberías poder escribir en / dev / pts / 32 y leer desde / dev / pts / 33.
También es / dev / COM9 {8,9} un dispositivo de caracteres que puede usar?
ls -l /dev/COM989
debería imprimir un modo que comience con c si ese es el caso.