GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Woher kennt cat die Baudrate der seriellen Schnittstelle?

Der stty Dienstprogramm legt oder meldet Terminal-E/A-Eigenschaften für das Gerät, das seine Standardeingabe ist. Diese Eigenschaften werden verwendet, wenn eine Verbindung über dieses bestimmte Medium hergestellt wird. cat kennt die Baudrate als solche nicht, sondern gibt auf dem Bildschirm Informationen aus, die von der jeweiligen Verbindung empfangen wurden.

Als Beispiel stty -F /dev/ttyACM0 gibt die aktuelle Baudrate für das ttyACM0-Gerät an.


cat verwendet einfach die Einstellungen, für die der Port bereits konfiguriert ist. Mit diesem kleinen C-Snippet können Sie die aktuell eingestellte Baudrate für einen bestimmten seriellen Port sehen:

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;
}

Führen Sie es aus:

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

Die Nummern, die Sie erhalten, können Sie in /usr/include/asm-generic/termios.h nachschlagen , wo es #define gibt s wie B9600 usw. Beachten Sie, dass die Zahlen in der Header-Datei und im get-baud-rate Ausgabe erfolgt in Oktal.

Vielleicht können Sie experimentieren und sehen, wie diese Zahlen bei einem Neustart aussehen und ob sie sich später ändern.


Linux
  1. Wie funktioniert das Sticky Bit?

  2. Linux – So finden Sie Prozesse über die serielle Schnittstelle?

  3. Woher weiß ich, welches /dev/ttyS* meine serielle Schnittstelle ist?

  4. Wie teilt man die Internetverbindung?

  5. Woher weiß ich, ob eine serielle Schnittstelle tatsächlich Daten überträgt, ohne das Gerät zu öffnen?

So finden Sie die Portnummer eines Dienstes in Linux

Wie man die Gruppen eines Linux-Benutzers kennt

So ändern Sie den SSH-Port in CentOS

Woher weiß ich, was die „Errno“ bedeutet?

Wie funktioniert cat << EOF in Bash?

Wie bestimme ich die Baudrate einer seriellen Schnittstelle?