JiXieShi 84cda89d1d docs: update README (bilingual) and CLAUDE.md for new structure
Rewrite README.md in Chinese and English with flag tables, command
reference, plugin API, and architecture diagram. Update CLAUDE.md
to reflect the new package layout and build commands.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 21:58:16 +08:00
2024-06-12 14:46:29 +08:00

SerialTerminalForWindowsTerminal

English | 中文


English

A cross-platform serial terminal with TUI, charset conversion, TCP/UDP forwarding, Lua plugins, and file transfer support.

Features

  • Serial communication with full port configuration (baud, data bits, stop bits, parity)
  • Hex mode for binary protocol inspection with configurable frame size and timestamps
  • Charset conversion — e.g., read GBK device output as UTF-8 in your terminal
  • TCP/UDP forwarding — broadcast serial data to multiple servers, receive from any
  • Lua plugin system — transform input/output data or intercept commands with Lua scripts
  • File transfer via trzsz / lrzsz protocols
  • TUI mode (-g) with Bubble Tea interface: viewport, input bar, modal panels
  • Console mode (default) with dot-command prefix (. at line start)
  • Interactive setup wizard when no port is specified

Quick Start

go build -o sterm ./cmd/serialterminal

# Connect to serial port
./sterm -p COM8 -b 115200

# With charset conversion (device outputs GBK, terminal shows UTF-8)
./sterm -p COM8 -b 115200 -o GBK

# Hex mode
./sterm -p COM8 -b 115200 -i hex

# TUI mode
./sterm -p COM8 -b 115200 -g

# With TCP forwarding
./sterm -p COM8 -f 1 -a 127.0.0.1:12345

# Interactive (no port specified)
./sterm

CLI Flags

Short Long Type Default Description
-p --port string "" Serial port (/dev/ttyUSB0, COMx)
-b --baud int 115200 Baud rate
-d --data int 8 Data bits (5/6/7/8)
-s --stop int 0 Stop bits (0:1, 1:1.5, 2:2)
-v --verify int 0 Parity (0:none, 1:odd, 2:even, 3:mark, 4:space)
-o --out string UTF-8 Output charset
-i --in string UTF-8 Input charset (use hex for hex mode)
-e --end string \n Line ending sent to device
-F --Frame int 16 Hex frame size
-g --gui bool false Enable TUI mode
-k --hotkey-mod string ctrl+alt Hotkey modifier (ctrl+alt or ctrl+shift)
-f --forward []int nil Forward mode (1:TCP, 2:UDP, repeatable)
-a --address []string nil Forward address (repeatable)
-l --log string "" Log file path
-t --time string "" Timestamp format

Dot Commands

In console mode, type . at line start to enter command mode:

Command Description
.help Show command help
.exit Exit the terminal
.hex <data> Send raw hex bytes
.forward list|add|remove|enable|disable|update Manage forwarding
.plugin list|load|unload|enable|disable|reload Manage Lua plugins
.mode show|set <field> <value> View or change runtime settings

Plugin System

Create .lua files and load them with .plugin load <path>:

-- Transform outgoing data (append marker)
function OnInput(payload)
  return payload .. "\r\n"
end

-- Transform incoming data (add prefix)
function OnOutput(payload)
  return "[DEV] " .. payload
end

-- Intercept or modify commands (return false to block)
function OnCommand(line)
  return line, true
end

Plugins chain: each enabled plugin sees the output of the previous one. Return nil to drop data.

Architecture

cmd/serialterminal/           # Entry point
internal/
  termapp/                    # Core application (App, TUI, console, commands)
  config/                     # Configuration types
  session/                    # Serial port + trzsz lifecycle
  event/                      # UI event types
  flag/                       # CLI flag parsing + interactive wizard
pkg/
  charset/                    # Charset conversion utilities
  forward/                    # TCP/UDP forwarding manager
  luaplugin/                  # Lua plugin engine

中文

一款跨平台串口终端,支持 TUI 界面、编码转换、TCP/UDP 转发、Lua 插件和文件传输。

功能特性

  • 串口通信 — 完整端口配置(波特率、数据位、停止位、校验位)
  • Hex 模式 — 二进制协议调试,可配置帧大小和时间戳
  • 双向编码转换 — 如设备输出 GBK,终端显示 UTF-8
  • TCP/UDP 数据转发 — 串口数据广播至多台服务器,任一台可回传
  • Lua 插件系统 — 使用 Lua 脚本转换输入/输出数据或拦截命令
  • 文件传输 — 支持 trzsz / lrzsz 协议
  • TUI 界面 (-g) — 基于 Bubble Tea,带视口、输入栏、模态面板
  • 控制台模式 — 行首 . 进入命令模式,支持 Tab 补全
  • 交互配置向导 — 不带端口参数时自动启动

快速开始

go build -o sterm ./cmd/serialterminal

# 连接串口
./sterm -p COM8 -b 115200

# 编码转换(设备输出 GBK,终端显示 UTF-8)
./sterm -p COM8 -b 115200 -o GBK

# Hex 模式
./sterm -p COM8 -b 115200 -i hex

# TUI 模式
./sterm -p COM8 -b 115200 -g

# TCP 转发
./sterm -p COM8 -f 1 -a 127.0.0.1:12345

# 交互式(不指定端口)
./sterm

CLI 参数

短参 长参 类型 默认值 说明
-p --port string "" 串口设备 (/dev/ttyUSB0COMx)
-b --baud int 115200 波特率
-d --data int 8 数据位
-s --stop int 0 停止位 (0:1, 1:1.5, 2:2)
-v --verify int 0 校验 (0:无, 1:奇, 2:偶, 3:1, 4:0)
-o --out string UTF-8 输出编码
-i --in string UTF-8 输入编码 (hex 开启 Hex 模式)
-e --end string \n 发送到设备的换行符
-F --Frame int 16 Hex 帧大小
-g --gui bool false 启用 TUI 界面
-k --hotkey-mod string ctrl+alt 快捷键修饰 (ctrl+altctrl+shift)
-f --forward []int nil 转发模式 (1:TCP, 2:UDP, 可多次传入)
-a --address []string nil 转发地址 (可多次传入)
-l --log string "" 日志文件路径
-t --time string "" 时间戳格式

点命令

控制台模式下,行首输入 . 进入命令模式:

命令 说明
.help 显示帮助
.exit 退出终端
.hex <数据> 发送原始 Hex 字节
.forward list|add|remove|enable|disable|update 管理转发
.plugin list|load|unload|enable|disable|reload 管理 Lua 插件
.mode show|set <字段> <值> 查看或修改运行时设置

插件系统

编写 .lua 文件,通过 .plugin load <路径> 加载:

-- 转换输出数据(追加换行)
function OnInput(payload)
  return payload .. "\r\n"
end

-- 转换输入数据(添加前缀)
function OnOutput(payload)
  return "[DEV] " .. payload
end

-- 拦截命令(返回 false 阻止执行)
function OnCommand(line)
  return line, true
end

插件链式执行,每个启用的插件接收上一个插件的输出。返回 nil 可丢弃数据。

架构说明

cmd/serialterminal/           # 入口点
internal/
  termapp/                    # 核心应用(App、TUI、控制台、命令)
  config/                     # 配置类型
  session/                    # 串口 + trzsz 生命周期
  event/                      # UI 事件类型
  flag/                       # CLI 参数解析 + 交互向导
pkg/
  charset/                    # 编码转换工具
  forward/                    # TCP/UDP 转发管理
  luaplugin/                  # Lua 插件引擎
S
Description
适用于WindowsTerminal的串口终端
Readme 2.7 MiB
Languages
Go 97.9%
Lua 2.1%