我经常cat
通过串行连接从 FPGA 开发板查看控制台中的调试信息,但我从来不需要告诉 Linux 波特率是多少。 cat 如何知道串行连接的波特率是多少?
答案1
这stty
实用程序设置或报告作为其标准输入的设备的终端 I/O 特性。通过该特定介质建立连接时将使用这些特征。cat
不知道波特率本身,而是在屏幕上打印从特定连接接收到的信息。
作为示例,stty -F /dev/ttyACM0
给出了 ttyACM0 设备的当前波特率。
答案2
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
都是八进制的。
也许你可以尝试一下,看看这些数字在新靴子上是什么样子,以及它们以后是否会改变。
答案3
串口将cat
采用之前使用的波特率,或默认波特率。如果您需要更改波特率,可以stty
像这样使用:
stty -F /dev/ttyS1 115200
cat /dev/ttyS1
上面的命令将波特率设置为/dev/ttyS1
115200。那么当您使用cat时,它将以115200波特率工作。