更新记录
1.0.5(2026-08-04)
- 修复 HarmonyOS 平台文件缺少公开 API 同名导出,导致 uni-app x 调用
getCapabilities / listPorts / getRuntimeState 等接口时报 undefined is not callable 的问题。
- 保留原有
*ByHarmony 平台分发入口,并补齐 interface.uts 声明的公开串口 API 代理,不影响 Android、iOS、Web 和既有 uni-app 调用入口。
- HarmonyOS 未接入串口适配器时继续返回明确的不支持能力、空端口列表和结构化运行态,不伪造串口通讯成功。
- Harmony 原生 UTS 已变化,升级后需要重新构建并安装匹配的 Harmony HAP 或自定义基座。
平台兼容性
uni-app(4.84)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
√ |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(4.84)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| √ |
√ |
√ |
√ |
√ |
√ |
lizhao-serial-port
lizhao-serial-port 是纯 UTS 串口通信 API 插件,提供路径串口与 USB 串口双通道、多会话管理、读写超时、自动重连、事件上报与运行态观测能力。
支持平台
| 平台 |
是否支持 |
说明 |
| uni-app |
是 |
Vue2/Vue3 可用 |
| uni-app x |
是 |
App/Web/小程序可用 |
| Android |
是 |
路径串口 + USB 串口实现 |
| iOS |
是 |
接口可调用,返回不支持 |
| Harmony |
是 |
依赖 Harmony 串口管理器能力,支持路径/USB 串口 |
| Web |
是 |
接口可调用,返回不支持 |
| 微信小程序 |
是 |
接口可调用,返回不支持 |
| 支付宝小程序 |
是 |
接口可调用,返回不支持 |
安装与导入
import * as SerialPort from '@/uni_modules/lizhao-serial-port'
目录结构
uni_modules/
└─ lizhao-serial-port/
├─ package.json
├─ readme.md
├─ changelog.md
└─ utssdk/
├─ interface.uts
├─ unierror.uts
├─ index.uts
├─ app-android/
├─ app-ios/
├─ app-harmony/
├─ web/
├─ mp-weixin/
└─ mp-alipay/
API 列表
getCapabilities
listPorts
openPath
openUsb
closeSession
closeAllSessions
writeBytes
writeHex
writeText
readOnce
startRead
stopRead
flush
sendAndWait
getSessionState
getRuntimeState
on / off
兼容 API:
openSerial
writeData
readData
closeSerial
byteArrToHexStr
hexStrToByteArr
核心参数(openPath / openUsb)
| 参数 |
类型 |
必填 |
说明 |
默认值 |
可选参数 |
| options.path |
string |
openPath 是 |
路径串口设备节点 |
无 |
如 /dev/ttyS3 |
| options.vendorId |
number |
openUsb 是 |
USB 设备 Vendor ID |
无 |
无 |
| options.productId |
number |
openUsb 是 |
USB 设备 Product ID |
无 |
无 |
| options.serialNumber |
string |
否 |
USB 序列号过滤 |
无 |
无 |
| options.sessionId |
string |
否 |
会话 ID,不传自动生成 |
自动生成 |
无 |
| options.lineConfig |
object |
否 |
串口线参数配置 |
9600-8N1 |
baudRate / dataBits / parity / stopBits / flowControl |
| options.config |
object |
否 |
会话配置 |
内置默认值 |
autoReconnect / reconnectIntervalMs / maxReconnectAttempts / readChunkSize / readIntervalMs / writeTimeoutMs / readTimeoutMs / heartbeatIntervalMs / textEncoding / matcherHex |
| options.success |
function |
否 |
成功回调 |
无 |
无 |
| options.fail |
function |
否 |
失败回调 |
无 |
无 |
| options.complete |
function |
否 |
完成回调 |
无 |
无 |
返回值(会话状态)
| 字段 |
类型 |
说明 |
| sessionId |
string |
会话 ID |
| type |
string |
path 或 usb |
| status |
string |
opening/open/closing/closed/reconnecting/error |
| txBytes |
number |
当前会话累计发送字节数 |
| rxBytes |
number |
当前会话累计接收字节数 |
| reconnectCount |
number |
已触发重连次数 |
| readLoopActive |
boolean |
是否开启持续读取 |
| lineConfig |
object |
线参数快照 |
| config |
object |
会话配置快照 |
错误码
| 错误码 |
含义 |
说明 |
| 9015001 |
platform unsupported |
当前平台不支持串口能力 |
| 9015002 |
invalid options |
参数不合法 |
| 9015003 |
session not found |
会话不存在 |
| 9015004 |
port already opened |
会话 ID 或端口已占用 |
| 9015005 |
permission denied |
权限不足 |
| 9015006 |
open serial failed |
打开串口失败 |
| 9015007 |
write serial failed |
写入失败 |
| 9015008 |
read serial failed |
读取失败 |
| 9015009 |
operation timeout |
调用超时 |
| 9015010 |
serial disconnected |
会话未处于可用状态 |
| 9015011 |
port not found |
目标端口不存在 |
| 9015012 |
reconnect failed |
自动重连失败 |
| 9015013 |
flush failed |
刷新缓冲区失败 |
| 9015014 |
system error |
系统异常 |
权限与配置
| 平台 |
是否需要 |
说明 |
| Android |
是 |
建议声明 USB Host 能力,USB 设备访问权限由系统策略控制 |
| Harmony |
是 |
需具备对应串口管理器能力与签名权限 |
| iOS/Web/小程序 |
否 |
返回不支持,不涉及系统串口权限 |
自定义基座说明
- Android 默认系统 API 可用时无需额外三方库。
- 若项目引入特定芯片厂商串口 SDK,请使用自定义基座并同步更新插件平台配置。
uni-app 示例
import * as SerialPort from '@/uni_modules/lizhao-serial-port'
SerialPort.openPath({
path: '/dev/ttyS3',
sessionId: 'main-uart',
lineConfig: {
baudRate: 115200
},
success(res) {
console.log('openPath success', res)
SerialPort.startRead({
sessionId: 'main-uart'
})
},
fail(err) {
console.log('openPath fail', err)
}
})
SerialPort.on('data', (event) => {
console.log('data event', event.payload.hex)
})
uni-app x 示例
import * as SerialPort from '@/uni_modules/lizhao-serial-port'
SerialPort.openUsb({
vendorId: 6790,
productId: 29987,
sessionId: 'usb-device-1',
success() {
SerialPort.sendAndWait({
sessionId: 'usb-device-1',
hex: 'AA550001',
matchHex: 'AA55',
timeoutMs: 1500,
success(res) {
console.log('response', res.hex)
}
})
}
})
注意事项
- 路径串口需确保系统已授权访问对应设备节点。
- USB 串口需设备已连接且权限可用;权限不足将返回
9015005。
- 建议统一使用
sessionId 管理会话,避免并发串口互相污染。
- 兼容 API 用于迁移旧代码,新业务建议使用规范 API。
联系方式
信-微:l-z-1-8-7-1512-5421(-去掉,不这样写会被和谐)
作者系列UTS插件
以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。
| 插件 |
能力方向 |
插件市场 |
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 |
查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 |
查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 |
查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 |
查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 |
查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 |
查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 |
查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 |
查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 |
查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 |
查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 |
查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 |
查看插件 |
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 |
查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 |
查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 |
查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 |
查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 |
查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 |
查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 |
查看插件 |