Linux

cat怎麼知道串口的波特率?

  • October 17, 2018

我經常cat通過串列連接從我的 FPGA 開發板查看控制台中的調試資訊,但我從來不需要告訴 linux 波特率是多少。cat怎麼知道串口的波特率是多少?

stty實用程序設置或報告作為其標準輸入的設備的終端 I/O 特徵。在通過該特定介質建立連接時會使用這些特徵。cat它本身不知道波特率,而是在從特定連接接收到的螢幕資訊上列印。

例如stty -F /dev/ttyACM0,給出 ttyACM0 設備的目前波特率。

cat只需使用埠已配置的任何設置。通過這個小 C 程式碼片段,您可以看到目前為特定串列埠設置的波特率:

獲取波特率.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;
}

執行:

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

得到的數字可以在 中查找/usr/include/asm-generic/termios.h,其中有#defines 等B9600。注意標頭檔和get-baud-rate輸出中的數字都是八進制的。

也許你可以試驗一下,看看這些數字在新靴子上是什麼樣的,以及它們以後是否會改變。

引用自:https://unix.stackexchange.com/questions/72979