我有一些用 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
,它将以更常规的格式显示设置。