WezTerm 如何连接串口控制台调试嵌入式设备与无头服务器?
【免费下载链接】wezterm A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust 项目地址: https://gitcode.com/GitHub_Trending/we/wezterm
WezTerm 除了作为终端仿真器,还可以作为串口客户端直接打开本地串口设备。官方文档给出的典型场景正是本文标题中的两个用途:调试 Arduino 等嵌入式设备,以及连接无头服务器上的串口控制台。本文基于仓库中的 docs/serial.md、docs/cli/serial.md 和 docs/config/lua/config/serial_ports.md 三篇文档,给出从一次性连接到处方配置的操作路径。
一次性连接:wezterm serial <端口>
最直接的方式是用 wezterm serial 子命令打开一个串口,语法为:
$ wezterm serial [OPTIONS] <PORT>
其中 <PORT> 是串口设备名,文档对两个平台的命名方式有明确说明:
- Linux 等 posix 系统:设备路径,例如 /dev/ttyUSB0
- Windows 系统:COM0 这样的 COM 口名称
对应的基本命令为:
# Linux
$ wezterm serial /dev/ttyUSB0
# Windows
$ wezterm serial COM0
指定波特率:–baud
串口的通信速率必须与对端设备一致,而 wezterm serial 的默认波特率是 9600(来自 docs/examples/cmd-synopsis-wezterm-serial–help.txt 中 –baud 的说明)。如果你的设备(大多数嵌入式设备、UART 控制台)运行在更高速率上,需要显式用 –baud 指定:
$ wezterm serial –baud 38400 /dev/ttyUSB0
–baud <BAUD> 的含义文档中只说明为“Set the baud rate”,其余参数以 wezterm serial –help 的输出为准;此外还有 –class(覆盖窗口系统类名)和 –position(覆盖初始窗口位置)两个与调试流程无关的选项,本文不展开。
连接窗口上的行为限制
文档明确说明:当 wezterm 窗口处于串口模式时,不能在该窗口内新建标签页("When a wezterm window is operating in serial mode it is not possible to create new tabs")。也就是说,一个串口连接独占一个窗口,如果你同时要观察设备输出和查资料,需要另开一个 wezterm 普通终端窗口。
常用串口固化为命名域:serial_ports 配置
如果某个串口你经常连,可以在 Lua 配置中定义 serial_ports,把端口和波特率固化下来,之后通过 wezterm connect 或启动器菜单连接。配置项说明如下:
- name – 串口域的名称,必须在所有多路复用域中唯一;
- port – 串口设备名,Windows 下为 COM0 这类名称,posix 下为 /dev/ttyUSB0 这类路径。省略时 name 字段会被当作端口名解释;
- baud – 通信速率,省略时默认 9600。
定义单个端口的示例(来自文档原文):
config.serial_ports = {
{
name = '/dev/tty.usbserial-10',
baud = 115200,
},
}
多个端口可以起友好的名字,例如:
config.serial_ports = {
{
name = 'Sensor 1',
port = '/dev/tty.usbserial-10',
baud = 115200,
},
{
name = 'Sensor 2',
port = '/dev/tty.usbserial-11',
baud = 115200,
},
}
配置生效后,文档给出了三种使用方式:
命令行直接连接:
$ wezterm connect /dev/tty.usbserial-10
文档说明其行为类似于 wezterm serial /dev/tty.usbserial-10 –baud 115200,即端口名和波特率都取自配置。
正常启动 wezterm 后,使用 Command Palette 或 Launcher Menu,在该串口域中打开新标签页连接设备。
在包含 SpawnCommand 的标签/窗口生成类键绑定中,按名称引用该串口域。
结果验证与已知限制
完成连接后如何判断成功,文档没有给出固定的输出样例;能依据文档确认的判据是:
- wezterm serial / wezterm connect 打开的窗口即为串口会话,直接向其中输入(如回车)看对端设备是否有响应,这是串口调试的常规确认方式;
- 若对端无响应,按文档核对的第一项是波特率:–baud / baud 配置必须与设备侧一致,默认值是 9600;
- 串口窗口内尝试新建标签页失败属于预期行为,不是故障(见上文限制)。
历史版本方面的一个参考信息:docs/changelog.md 记录了 20200202 版本修复过“打开串口时波特率未生效”的 bug,如果你使用的发行版包非常旧且发现 –baud 不生效,可先考虑升级。
适用边界
- 本文覆盖的是本机直接打开串口(USB 转串口设备或服务器串口映射到本地的设备文件),远程服务器的串口需要先把设备路径映射到本机,文档未覆盖这一步。
- Flatpak 安装方式运行在沙箱内,文档提示其行为可能与原生包有差异(见 docs/install/linux.md);需要稳定访问 /dev/tty* 设备时,建议按文档建议选择原生包安装。
【免费下载链接】wezterm A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust 项目地址: https://gitcode.com/GitHub_Trending/we/wezterm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

