GNU/Linux >> Linux Esercitazione >  >> Linux

Come fa cat a conoscere il baud rate della porta seriale?

Il stty set di utilità o report sulle caratteristiche di I/O del terminale per il dispositivo che è il suo ingresso standard. Queste caratteristiche vengono utilizzate quando si stabilisce una connessione su quel particolare mezzo. cat non conosce il baud rate in quanto tale, piuttosto stampa sullo schermo le informazioni ricevute dalla particolare connessione.

Ad esempio stty -F /dev/ttyACM0 fornisce il baud rate corrente per il dispositivo ttyACM0.


cat utilizza solo le impostazioni per le quali la porta è già configurata. Con questo piccolo frammento C puoi vedere il baud rate attualmente impostato per una particolare porta seriale:

get-baud-rate.c

#include <termios.h>
#include <unistd.h>
#include <stdio.h>

int main() {
  struct termios tios;
  tcgetattr(0, &tios);
  speed_t ispeed = cfgetispeed(&tios);
  speed_t ospeed = cfgetospeed(&tios);
  printf("baud rate in: 0%o\n", ispeed);
  printf("baud rate out: 0%o\n", ospeed);
  return 0;
}

Eseguilo:

./get-baud-rate < /dev/ttyS0 # or whatever your serial port is

I numeri che ottieni possono essere cercati in /usr/include/asm-generic/termios.h , dove sono presenti #define s come B9600 ecc. Si noti che i numeri nel file di intestazione e nel get-baud-rate output sono in ottale.

Forse puoi sperimentare e vedere come sono questi numeri su un nuovo avvio e se cambiano in seguito.


Linux
  1. Come fa Bash a sapere come viene invocato?

  2. Come monitorare una connessione seriale a 250000 baud?

  3. Come trovare quale porta seriale è in uso?

  4. Come funziona il comando Tee?

  5. Linux:come trovare processi utilizzando la porta seriale?

Come trovare il numero di porta di un servizio in Linux

Come conoscere i gruppi di un utente Linux

Come modificare la porta SSH in CentOS

Come condividere la connessione Internet?

Come faccio a sapere se una porta seriale sta effettivamente trasmettendo dati, senza aprire il dispositivo?

Come funziona l'interfaccia di loopback