在控制台上设置自定义波特率

在控制台上设置自定义波特率

只是为了美观,我希望控制台上的文本以较低的速度显示。我尝试过使用自定义波特率为 /dev/tty1 的屏幕之类的东西,但它不起作用,键盘输入会出现在屏幕上,但没有输出,所有内容都会卡在一行上。我没有任何真正的串行端口,所以我不知道我是否可以这样做,但如果不清楚,我想在我的 ssh/pts 上设置自定义波特率,例如带有字符加载的旧学校终端屏幕上。

答案1

Unix 和 Linux 中的 TTY 是一种“糟糕的 OOP”,因为所有内容都被推入了“基类”。有多种设备,每种设备都是“一种 TTY”,但它们都带有与串行 I/O 相关的属性:波特率、帧位、硬件握手等。

这实际上很好,因为它大大简化了编程模型。在任何类型的 TTY 设备上,您都可以调用 POSIX C 库函数tcgetattr来获取其属性的一种类型 ( ) 的结构struct termios:“一刀切”。

然而,这意味着并非所有属性实际上工作与所有 TTY 设备。

无论是 Linux 控制台还是虚拟窗口终端(如 Xterm 或 Gnome 终端)实际上都不会出于任何目的使用波特率和其他硬件设置。波特率可以设置和检索,但它不执行任何操作。

如果您想要一个实际以 9600 波特率运行的终端,您必须通过串行端口,或者编写内核补丁来模拟波特率对控制台的影响。

要在没有第二台计算机或实际终端的情况下通过串行端口,您只需在 USB 端口和 RS-232 端口之间循环“USB 串行加密狗”即可。或者,如果您没有 RS-232 端口,请从 USB 端口连接至 USB 串行适配器、空调制解调器电缆/连接器、另一个 USB 串行适配器,然后连接至另一个 USB 端口。

无论哪种方式,您最终都会得到一对在外部环路在一起的串行设备。您可以将其中一个变成串行控制台,然后在另一个上运行串行通信程序,例如 Minicom。

(对控制台输出进行速率限制以匹配配置的 TTY 波特率的内核黑客会更有趣,但这只是我的想法。)

相关内容