Serial Client Skill
串口客户端技能,用于通过串口(RS232/RS485 等)远程登录并控制嵌入式设备(如 IPC 摄像头等)。
功能
- 从
test_config.json的基础信息.连接方式判断是否使用 Serial - 读取
基础信息.serail下的连接参数(COM口、波特率、超时、数据位/停止位、用户名、密码、提示符) - 建立串口连接并自动登录
- 支持发送任意指令并获取返回结果
- 默认保持连接,可复用同一连接执行多条指令
- 显式断开连接
连接生命周期
- 默认保持连接:执行完指令后连接不断开,可继续发送新指令
- 复用连接:当 COM 口不变时,再次调用脚本会自动复用已有连接
- 显式断开:通过
--disconnect参数或调用disconnect()断开
配置要求
配置文件读取采用兼容处理,按以下优先级:
workspace/test_config/test_config.json(全局配置文件)——仅当该配置存在且包含基础信息.serail配置段时采用- 若全局配置不存在、或存在但没有
基础信息.serail配置段,回退到技能自身skills/serail-client-skill/config/test_config.json - 若技能本地也不存在,回退到硬编码默认串口参数(COM2 / 115200 ...)
test_config.json 中必须有如下结构:
{
"基础信息": {
"连接方式": "serail",
"serail": {
"com_name": "COM2",
"baudrate": "115200",
"timeout": 5,
"data_bit": 8,
"stop_bit": 1,
"user_name": "root",
"password": "",
"prompt": "#"
}
}
}
连接方式为"serail"时,技能才执行串口操作prompt是登录后的命令提示符,用于识别命令执行完毕- 用户名/密码可为空,表示无密码登录
入口脚本: serial_client.py
用法
命令行
# 执行指令,连接保持
python skills/serail-client-skill/scripts/serial_client.py \
--command "ps | grep ums" \
--timeout 10
# 再次调用时复用已有连接
python skills/serail-client-skill/scripts/serial_client.py \
--command "ifconfig"
# 执行完成后断开连接
python skills/serail-client-skill/scripts/serial_client.py \
--command "reboot" --disconnect
# 仅测试连接(不执行指令)
python skills/serail-client-skill/scripts/serial_client.py
模块导入
from skills.serail_client_skill.scripts.serial_client import SerialClient
sc = SerialClient(
port="COM2",
baudrate=115200,
timeout=5,
data_bit=8,
stop_bit=1,
username="root",
password="***"
prompt=b"#"
)
sc.connect()
output1 = sc.execute("cat /proc/cpuinfo")
output2 = sc.execute("ifconfig")
# 显式断开
# sc.close()
显式断开(从其他技能调用)
from skills.serail_client_skill.scripts.serial_client import disconnect, get_client
client = get_client()
if client and client._connected:
print(f"当前已连接到 {client.port}")
disconnect()
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--command |
str | 否 | 无 | 要执行的指令。不传则仅测试连接 |
--timeout |
int | 否 | 10 | 指令执行超时(秒) |
--disconnect |
flag | 否 | 否 | 指令执行完成后断开连接(默认保持) |
输出
{
"connection_type": "serail",
"port": "COM2",
"baudrate": 115200,
"username": "root",
"command": "ps | grep ums",
"output": " 481 root 188m S /opt/ums/ums start\n",
"connect_ok": true,
"command_ok": true,
"config_path": "C:/.../test_config/test_config.json",
"result": {
"passed": true,
"messages": "串口连接成功,指令执行成功(连接已保持,未断开)"
},
"test_time": "2026-07-08 11:40:00"
}
结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
connection_type |
str | 连接方式,始终为 "serail" |
port |
str | COM 端口名称 |
baudrate |
int | 波特率 |
username |
str | 登录用户名 |
command |
str | 执行的指令 |
output |
str | 指令执行输出 |
connect_ok |
bool | 连接是否成功 |
command_ok |
bool | 指令是否执行成功 |
config_path |
str | 使用的配置文件路径 |
result.passed |
bool | 整体执行结果 |
result.messages |
str | 结果描述 |
test_time |
str | 测试时间 |
输出目录
结果 JSON 写入:workspace/test_output/serail-client-skill/
注意事项
- 串口连接需要物理端口存在,否则连接失败
- 默认数据位 8,停止位 1,无校验位
- 串口读写超时由
timeout参数控制
变更记录
- v1.0.0 (2026-07-08): 初始版本,支持从配置文件读取串口参数,执行指令并返回输出。默认保持连接,
--disconnect显式断开 - v1.1.0 (2026-08-26): 配置文件兼容处理——workspace/test_config/test_config.json 不存在、或存在但没有
基础信息.serail配置段时,回退读取技能自身 config/test_config.json,再回退到硬编码默认值