2 votos

La tasa de baudios del dispositivo stty se restablece cuando ya no se utiliza

-Tarde 2013 MBP, con Yosemite 10.10.2 Mientras que el uso de un cable USB --> Serial(FTDI chipset), soy incapaz de conseguir un conjunto baud-rate y conseguir que se pegue mientras que el dispositivo no está siendo abierto / escritura / lectura. Por ejemplo:

Si ejecuto, "stty -f /dev/cu.xxxxxxxx 19200" mientras no hago nada relacionado con el software con él, se restablecerá el baudios de nuevo a 9600 al instante después.

Sin embargo, si ejecuto "cat -u < /dev/cu.xxxxxxxx" y DESPUÉS establezco el baudio a 19200 mientras se ejecuta el cat, la tasa de baudios se mantiene. Este es también el caso cuando escribo algún código de prueba y ejecuto el comando del sistema C open("/dev/cu.xxxxxxxx") y congelo el programa.

Bajo las antiguas root de BSD, esto parece ser un comportamiento estándar. Cuando intento esto en una caja de Debian, la tasa de baudios se atasca. Esto me indica que depende del sistema, pero ¿hay alguna manera de conseguir que la tasa de baudios sea la predeterminada/se mantenga para siempre?

8voto

Ek1noX Puntos 121

Para cualquiera que se tropiece con esto (sí, otro...), aquí una solución de shell (Bash al menos):

El "truco" es abrir un descriptor de archivo para el puerto serie antes de usar stty. Y lo mantiene abierto durante toda la lectura/escritura.

Ejemplo:

exec 3<>/dev/cu.xxxxxxxx           # open a file descriptor
stty -f /dev/cu.xxxxxxxx raw 19200 # configure the serial port
cat /dev/cu.xxxxxxxx               # do stuff...
exec 3<&-                          # close the file descriptor

Gracias a @crasysim por su comentario sobre la misma cuestión.

2voto

MattClarke Puntos 121

Para cualquier persona que pueda tropezar más tarde con esto, no fui capaz de encontrar ningún truco para ayudar a mantener una tasa de baudios establecida "palo" usando stty -f /dev/cu.xxxxxxxx 19200 . Terminé escribiendo un pequeño y sencillo programa en C que open() y sleep() indefinidamente mientras realizaba cualquier otra magia de bash, lo que emulaba efectivamente lo que quería originalmente.

1voto

jhg Puntos 45

Estaba teniendo un problema similar y la respuesta que publicaste me hizo pensar si había una manera de ejecutar stty y luego otro comando antes de que stty saliera. Esto es esencialmente lo que hace el piping aunque con la entrada y salida de datos unidas, lo cual es irrelevante en este caso.

Según mis experimentos, lo siguiente te permitirá cambiar la configuración del cu y luego acceder a él con esa configuración.

stty -f /dev/cu.xxxxxxxx 115200|cat /dev/cu.xxxxxxxx

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X