opman CLI 使用文档


opman CLI 使用文档

文档对应 @zenovate/opman 0.1.10。请用 opman --version 确认本机版本。完整参数以 opman <command> --help 为准。

opman 是面向 OP 设备的命令行工具:将 Python 编译为 PikaPython 字节码(.py.o),经串口BLE 上传与部署,并提供 Python REPL 与 BLE 扫描。

工具选型以及用 OP Manager 做现场分发,见 OP-BTS Python 脚本使用规范与工具指引

目录


平台支持

平台 支持情况
macOS(arm64 / x64) 支持
Windows x64 支持
Linux 不支持(npm 包未提供 Linux 二进制)
Windows ARM(原生) 未声明支持;请使用 Windows x64

安装

前置条件: 已安装 Node.js ≥ 16(含 npm)。

全局安装:

npm install -g @zenovate/opman
opman --version

项目本地安装:

npm install -D @zenovate/opman
npx opman --help

下文示例使用全局安装后的 opman 命令;若为项目本地安装,请加上 npx 前缀。


快速上手

COM3 换成你的串口(Windows)或 macOS 上的 /dev/cu.*。许多光电头工装使用 9600 波特率;若省略 -b,opman 的默认波特率为 115200

# 1)本地编译 .py → .py.o(无需连接设备)
opman compile hello.py

# 2a)仅上传(不运行)
opman upload hello.py.o /py -p COM3 -b 9600

# 2b)或一步完成:编译 + 上传 + 运行
opman deploy hello.py -p COM3 -b 9600

# 可选:进入设备上的 Python REPL
opman python -p COM3 -b 9600

BLE(在 macOS 上建议减小 --packet-size):

opman ble-scan --name OP
opman deploy hello.py --ble ZENO --packet-size 50

设备上的脚本必须放在 /py 目录。


命令参考

需要连设备的命令:必须指定 -p(串口)--ble(BLE) 之一,二者互斥。

compile

在本地将 .py 编译为 .py.o(无需设备)。

opman compile hello.py
opman compile *.py -o build/
opman compile hello.py -o build/hello.py.o
Flag 默认值 说明
-o / --output 与各输入同目录 输出 .py.o 文件或目录

upload

将本地文件上传到设备目录(不会自动运行脚本)。

opman upload hello.py.o /py -p COM3 -b 9600
opman upload hello.py.o /py --ble AA:BB:CC:DD:EE:FF --packet-size 50
Flag 默认值 说明
-p / --port 串口名(如 COM3/dev/cu.usbserial-xxx
--ble BLE 地址或名称(部分匹配)
-b / --baud 115200 串口波特率(指定 -c 时忽略)
-c / --serial-config 完整串口参数,如 9600,N,8,1
--remote-name 本地文件名 设备上的文件名
--packet-size 100 上传分片大小(字节)
--skip-command-mode 上传前跳过进入命令模式

deploy

若输入为 .py 则先编译,再上传到设备(默认 /py),然后执行 PythonFileRun。若只需传输,请用 upload

输入 行为
.py 编译 → 上传 → 运行
.py.o / *.o 跳过编译;上传 → 运行
opman deploy hello.py -p COM3 -b 9600
opman deploy hello.py.o -p COM3 -b 9600
opman deploy hello.py -p COM3 -b 9600 --monitor
opman deploy hello.py --ble ZENO --packet-size 50 --monitor
Flag 默认值 说明
--remote-dir /py 设备目录
-o / --output 与输入同目录 编译 .py 时的本地 .py.o 路径
--remote-name 由输入推导 设备上的文件名(用于运行)
--monitor 运行成功后打印原始输出,直到按 ESC
--run-timeout 30 等待 PythonFileRun 响应的秒数
--hex / --timestamp 监视显示选项
--packet-size 100 上传分片大小(字节)
-p / --ble / -b / -c 与 upload 相同

shell

交互式命令模式(读写设备参数 / JSON 命令)。提示符:>

opman shell -p COM3 -b 9600
opman shell --ble ZENO
Flag 默认值 说明
--timeout 5 单条命令响应超时(秒)
--skip-command-mode 跳过进入命令模式

python

设备上的交互式 Python REPL。提示符:>>>。opman 会自动进入 Python 模式。

opman python -p COM3 -b 9600
opman python --ble ZENO

在设备端输入 exit() 离开 REPL;本地输入 quit 仅断开连接。

Flag 默认值 说明
--timeout 30 每行 Python 超时(秒)
--skip-python-mode 设备已在 REPL
--no-legacy-fallback 不在旧固件路径上回退

ble-scan

扫描 BLE 设备(无需串口)。

opman ble-scan
opman ble-scan --name OP
opman ble-scan --all-devices
Flag 默认值 说明
--name 按名称子串过滤(不区分大小写)
--all-devices 不过滤名称关键字
--timeout 15 扫描时长(秒)

monitor

打印串口或 BLE 原始数据。按 ESC(或 Ctrl+C)结束。

opman monitor -p COM3
opman monitor -p COM3 --hex --timestamp -o capture.log
opman monitor --ble ZENO --hex
Flag 默认值 说明
--hex / --timestamp 显示选项
--no-drain 连接后不清空串口缓冲(仅串口
-o / --output 同时写入文件

completion

生成 Shell 自动补全脚本(bash / zsh / fish / powershell)。

opman completion bash
opman completion zsh
opman completion fish
opman completion powershell

当前会话示例:

Shell 命令
Bash source <(opman completion bash)
Zsh source <(opman completion zsh)
Fish opman completion fish | source
PowerShell opman completion powershell | Out-String | Invoke-Expression

串口名与 BLE 设备不会自动补全;请自行指定 -p--ble


连接要点

串口

  • 同一时刻只能有一个程序占用串口(请先关闭其他串口工具)。
  • Windows 光电头工装常见 COM3 @ 9600 8N1——请传 -b 9600(opman 默认波特率为 115200)。
  • macOS 路径形如 /dev/cu.usbserial-…(对外通信优先用 cu.*,而非 tty.*)。
  • 完整参数:-c "9600,N,8,1"(校验 N/E/O,数据位 7/8,停止位 1/2)。

BLE

  • macOS 首次使用需在「系统设置 → 隐私与安全性 → 蓝牙」中允许终端访问蓝牙。
  • --ble 可填地址/UUID,也可填名称(部分匹配;扫描约 15 秒后连接第一个匹配设备)。
  • 建议先用 opman ble-scan;勿与 OP Manager 同时占用同一连接。
  • macOS + BLE 上传: 默认 --packet-size100。若出现 FileWrite timed out repeatedly,请改用 --packet-size 50(仍不稳定可试 30)。串口上传通常无需调整。

常见问题

如何确认设备串口号?

  • Windows: 设备管理器 → 端口(COM 和 LPT),查看 COMx
  • macOS: 插入适配器后执行 ls /dev/cu.*,选择对应的 cu.usbserial-…(或类似名称)。

opman 没有列出串口的子命令。

macOS BLE 上传报 FileWrite timed out

请减小分片,例如:

opman upload hello.py.o /py --ble ZENO --packet-size 50

npm 安装失败 / 我在用 Linux

  • 确认 Node.js ≥ 16,且系统为 macOSWindows x64
  • 已发布的 npm 包不支持 Linux。本站不提供 Linux 上的受支持安装途径。

deployupload 有什么区别?

  • upload:只传输文件。
  • deploy:必要时编译 .py,上传后在设备上运行脚本(PythonFileRun)。

脚本必须放在设备哪个目录?

必须放在 /py。其他目录下的脚本无法正常运行。

Windows 串口驱动或权限问题

请从技术支持页面的驱动下载区安装与你的工装/适配器匹配的 USB 转串口驱动(如 CH34x / FTDI)。确保终端有权限访问该 COM 口,并关闭其他占用该口的程序。