手册页中未找到 stty 参数的说明

手册页中未找到 stty 参数的说明

我有一些用 java 编写的旧代码,用于与我试图转换为 python 的串行端口进行交互。在守护进程中执行 java 代码之前,可以在 bash 文件中找到以下行,该文件用于设置串行端口开发设备。任何人都可以解释这些选项的含义,因为 stty 的手册页难以理解。

    stty -F /dev/ttyUSB0 1:0:9ad:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 #9600 7E1

答案1

这些都不是有记录的选项。这是由 生成的设备和线路规则状态的机器可读序列化形式stty -g。如果不stty以这种方式 将其传递回(同一)程序,它既不便携也不有意义。

可以使用系统的 C 语言termios.h标头的特定实例来解码十六进制。

幸运的是,您会发现该 shell 脚本行上的注释至少表明部分作者的意图:

第9600章 7E1
这些当然是线速度和 7 位字符帧、偶校验和 1 个停止位。

答案2

它不是选项, 但数据,可能由

stty -g

手册页描述为

   -g, --save
          Print all current settings in a form  that  can  be
          used  as  an  argument  to  another stty command to
          restore the current settings.

POSIX 描述没有提供更多见解:

将所有当前设置写入标准输出未指定形式可以用作同一系统上 stty 实用程序的另一个调用的参数。使用的形式不得包含任何需要引用以避免 shell 进行单词扩展的字符;参见wordexp。

各种脚本都使用该功能(例如 xterm 的测试脚本)。由于它是一种未指定的格式,因此它依赖于系统(您只能依赖它是写入标准输出的“东西”)。

如果您使用这些设置恢复在兼容的系统上(即使用相同实现的系统stty),并且执行了stty -a,它将以更常规的格式显示设置。

相关内容