zplCloud Blog
zplCloud Android app:用手机通过 USB 操作打印机
! U1 setvar "device.reset" "on"——从你口袋里的设备发出,无需 PC、无需驱动、无需网络。
打印机从来不在电脑旁
状态糟糕的打印机是物理问题:屏幕乱码、有人动过的浓度设置、指向去年 SSID 的 Wi-Fi 配置。修它意味着站在设备旁边——在叉车上、机架里、卡车深处——而手边唯一的电脑是手机。
zplCloud Android app 通过一根普通 USB 线与打印机通信。没有笔记本、没有串口适配器、不需要任何管理员权限,打印机上也不需要可用网络——这很重要,因为坏掉的网络配置往往正是你要去修的东西。
为什么这在 Android 上可行而在 iOS 上不行
Android 暴露 USB host 模式:用 OTG 线,手机成为 host,可以认领 USB 设备。app(基于 Capacitor)用它打开通向打印机命令接口的通道。
iOS 没有认领任意 USB 设备的等效公共 API。在 iPhone 和 iPad 上,同样的作业走网络路径——Weblink 或 CLI agent。这是平台限制,不是路线图项目。
两条 USB 路径
| 模式 | 如何连接 | 何时使用 |
|---|---|---|
| Zebra SDK | 通过 Zebra USB 驱动 / Link-OS SDK 层 | 打印机以标准 Zebra USB 设备呈现 |
| 直接 USB 串口(CDC-ACM) | 内置驱动,无需 Zebra 组件 | 打印机处于 USB-CDC 模式;Android 询问一次 USB 权限 |
两者最终殊途同归:一个承载 SGD 和 ZPL 的双向通道。如果一条路径不枚举设备,先试另一条,再认定是线或打印机的问题。
重要的命令
下面都是同一通道上的标准 SGD——app 是打印机命令接口的键盘,不是专有协议。
确认你在与正确的设备对话:
! U1 getvar "device.friendly_name"
如果返回名称,通道正常,其余一切也会正常。先做这个;它区分线缆问题和命令问题。
重置到干净状态:
! U1 setvar "device.reset" "on"
导出完整配置——改动前有用,以便能恢复:
{}{"allconfig":null}
在传字体或图形前,检查打印机对自己存储的看法:
! U1 getvar "memory.flash_free"
网络和浓度变量以同样方式设置。重点是这里没有什么是 app 特有的:回到办公桌后,同样的字符串在 CLI(zplcloud send --usb --zpl "…")上也能用。
设置
1. 在 Android 手机或平板上安装 zplCloud app。
2. 用 USB/OTG 线连接打印机并开机。
3. Android 询问时授予 USB 权限,选择连接模式。
4. 查询、设置或重置。
实用说明
- 用数据线。 仅充电 USB 线不枚举任何东西,症状看起来正是"不支持的打印机"。
- 先读后写。
getvar在前,setvar在后。导出的配置是五分钟修复与无人能恢复的打印机之间的差别。 - 重置不是出厂重置。
device.reset重启打印机;不清除你的字体、格式或网络设置。输入前想清楚你要的是哪个。 - 把手机带到打印机前,而不是把打印机带到桌前。 这正是全部意义——机架里用螺栓固定的打印机不需要拆下来才能重新配置。