dispositivo stty ripristina velocità di trasmissione una volta non più utilizzato

0

-late 2013 MBP, con Yosemite 10.10.2 Durante l'utilizzo di una USB - > Cavo seriale (chipset FTDI), non riesco a ottenere una velocità di trasmissione impostata e a farla attaccare mentre il dispositivo non è aperto / scritto / letto. Ad esempio:

Se eseguo, "stty -f /dev/cu.xxxxxxxx 19200" mentre non sto facendo nulla di software correlato, resetterà immediatamente il baud a 9600 immediatamente dopo.

Tuttavia, se eseguo "cat -u < /dev/cu.xxxxxxxx" e POI impostiamo il baud su 19200 mentre il gatto è in esecuzione, il baud rate si attiverà. Questo è anche il caso in cui scrivo del codice di test ed eseguo il comando di sistema C aperto ("/ dev / cu.xxxxxxxx") e blocco il programma.

Sotto le vecchie radici BSD, questo sembra essere un comportamento standard. Quando provo a farlo su una scatola Debian, il baud-rate si attacca. Questo mi suggerisce che dipende dal sistema, ma c'è un modo per far sì che il baud-rate diventi il default / stick per sempre?

    
posta user3022479 19.03.2015 - 18:30
fonte

3 risposte

1

Per chiunque possa incappare in seguito su questo, non sono stato in grado di trovare alcun trucco per mantenere un "bastone" in baud rate impostato utilizzando stty -f /dev/cu.xxxxxxxx 19200 . Ho finito per scrivere un semplice programma C che avrebbe open() e sleep() all'infinito mentre eseguivo qualsiasi altra magia bash, che emulava efficacemente ciò che volevo inizialmente.

    
risposta data 13.07.2015 - 05:25
fonte
1

Per chiunque si imbatta in questo (sì, un altro ...), ecco una soluzione di shell (Bash almeno):

Il "trucco" è aprire un descrittore di file per la porta seriale prima di usare stty. e tenerlo aperto durante tutta la lettura / scrittura.

Esempio:

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

Grazie a @crasysim per il suo commento sul stessa domanda.

    
risposta data 16.10.2018 - 14:29
fonte
0

Stavo riscontrando un problema simile e la risposta che hai postato mi ha fatto riflettere sull'esistenza di un modo per eseguire stty e poi un altro comando prima che stty fosse terminato. Questo è essenzialmente ciò che le piping fanno, anche se lo stdin e lo stdout sono collegati insieme, il che è irrilevante in questa istanza.

Dalla mia sperimentazione, quanto segue ti consentirà di modificare la configurazione e di accedervi con tali impostazioni.

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

    
risposta data 24.06.2018 - 07:09
fonte

Leggi altre domande sui tag