Linux
cat怎麼知道串口的波特率?
我經常
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
,其中有#define
s 等B9600
。注意標頭檔和get-baud-rate
輸出中的數字都是八進制的。也許你可以試驗一下,看看這些數字在新靴子上是什麼樣的,以及它們以後是否會改變。