更新记录
1.06(2026-08-15) 下载此版本
汉印 HPRT CPCL 打印机 UTS 插件 使用说明 支持 Android 平台蓝牙 / WiFi 打印
平台兼容性
uni-app(4.15)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | 10.0 | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
PrintModuleCPCL —— 汉印 HPRT CPCL 打印机 UTS 插件 使用说明
本插件由原生
nativeplugin(com.hprt.uni.cpcl.PrintModuleCPCL+lib_uni_cpcl_v1.05.aar)改写为 UTS 插件, 底层直接调用 CPCL SDK 的cpcl.PrinterHelper静态方法,支持 Android 平台蓝牙 / WiFi 打印。
一、目录结构
uni_modules/PrintModuleCPCL/
├── package.json # 插件元信息(type: "uts")
├── utssdk/
│ ├── interface.uts # 对外 API 声明(IDE 类型提示 & 桥接契约)
│ └── app-android/
│ ├── index.uts # Android(Kotlin) 实现
│ ├── config.json # 编译配置 + 支持的 abi
│ └── libs/
│ ├── lib_uni_cpcl_v1.05.aar # 汉印 CPCL SDK 封装 AAR
│ ├── arm64-v8a/libLZO.so
│ ├── armeabi-v7a/libLZO.so
│ ├── x86/libLZO.so
│ └── x86_64/libLZO.so
└── 使用说明.md # 本文件
libs/下的 AAR 与.so会被 uni-app 自动打包到自定义基座 / APK 中,无需额外 gradle 配置。
二、与原生插件的差异(重要)
| 对比项 | 原生插件 | 本 UTS 插件 |
|---|---|---|
| 引入方式 | uni.requireNativePlugin('PrintModuleCPCL') |
import { ... } from '@/uni_modules/PrintModuleCPCL' |
| 返回值 | JSONObject + UniJSCallback 回调 { result: <int> } |
同步返回值(int 失败 -1 / string 失败 "") |
| 异步事件 | setDisConnectBTListener 回调 |
仅 setDisConnectBTListener 保留回调(蓝牙断开为异步) |
| 异常 | 内部吞掉或回调错误 | 捕获并记录日志,不闪退 |
SDK 本身是同步的,因此改为同步返回后,TS 侧更易判空、串联调用。
三、快速开始
1. 制作自定义调试基座
UTS 原生插件不会进入标准基座。在 HBuilderX 中:
运行 → 运行到手机或模拟器 → 制作自定义基座,勾选本插件后等待云打包完成,再用自定义基座运行。
2. 在页面中调用(Vue2 示例)
// 注意:Vue2 项目必须用 @ 路径(不能用 uni.requireNativePlugin)
import { connectionBT, printAreaSize, printText, print } from '@/uni_modules/PrintModuleCPCL'
// 连接
const code = connectionBT({ address: 'DC:1D:30:7C:74:96' }) // 0 = 成功
if (code !== 0) { uni.showToast({ title: '连接失败', icon: 'none' }); return }
// 设置纸张(标签纸高度 400,打印 1 份)
printAreaSize({ height: '400', number: '1' })
// 添加文本(direction 方向 / fontSize 字号 / x_pos,y_pos 坐标 / data 内容)
printText({ direction: '0', fontSize: '55', x_pos: '10', y_pos: '10', data: 'Hello HPRT' })
// 走纸并打印
print()
完整可运行示例见 pages/print-demo/print-demo.vue(已注册路由)。
四、API 列表
所有
int返回:成功视具体接口而定(通常0),失败返回-1; 所有string返回:失败返回""。坐标/尺寸参数均为字符串。
连接 / 端口
| 方法 | 参数 | 返回 | 说明 |
|---|---|---|---|
connectionBT |
{ address: string } |
number |
蓝牙连接,address 为 MAC |
connectionWIFI |
{ address: string } |
number |
WiFi 连接,address 为 IP |
closeBT |
— | void |
断开当前连接 |
getEndStatus |
{ outTime: number } |
number |
获取纸尽状态 |
setDisConnectBTListener |
callback: (res) => void |
void |
蓝牙断开监听(异步),断开回调 { result: 0 } |
打印页面 / 指令
| 方法 | 参数 | 返回 | 说明 |
|---|---|---|---|
printAreaSize |
{ height: string, number: string } |
number |
设置打印区域(高度、份数) |
setPageType |
{ pageType: number } |
void |
设置纸张类型(0 收据 / 1 标签…) |
printForm |
— | number |
FORM 指令 |
print |
— | number |
打印并走纸 |
文本 / 条码 / 二维码
| 方法 | 参数 | 返回 | 说明 |
|---|---|---|---|
printText |
{ direction, fontSize, x_pos, y_pos, data } |
number |
打印文本(第 3 参固定 "0") |
setCodePage |
{ codePage, language } |
number |
设置代码页 |
setLanguageEncode |
{ language } |
void |
设置语言编码(影响 writeTextData 字节编码) |
printBarCode |
{ rotation, code_type, width, ratio, height, x_pos, y_pos, undertext, number, offset, code_data } |
number |
打印条码 |
printQRCode |
{ rotation, x_pos, y_pos, mode, width, code_data } |
number |
打印二维码 |
printBox |
{ leftX, leftY, rightX, rightY, width } |
number |
打印方框 |
printLine |
{ startX, startY, endX, endY, width } |
number |
打印线条 |
setMag |
{ widthMag, heightMag } |
number |
设置放大倍数 |
setAlign |
{ align } |
number |
设置对齐(LEFT/CENTER/RIGHT) |
printPDF417 |
{ command, start_x, start_y, xd, yd, c, s, data } |
number |
打印 PDF417 |
setTextBox |
{ startX, startY, width, fontSize, isBole, isDouble, str } |
number |
文本框(自动换行) |
printBackground |
{ startX, startY, fontSize, background, data } |
number |
背景文字 |
printBarCode的code_type取值(来自 SDK 常量):128/39C/93/CODABAR/CODABAR16/EAN13/EAN8/UPCA/UPCE/I2OF5/MSI/UCCEAN128/PDF417等。printQRCode的mode(纠错级别):L/M/Q/H。
数据透传
| 方法 | 参数 | 返回 | 说明 |
|---|---|---|---|
writeData |
{ bData: number[] } |
number |
发送原始字节(0–255) |
writeTextData |
{ text: string } |
number |
按当前编码发送文本 |
readData |
{ time: number } |
string |
读取返回数据(十六进制字符串) |
位图打印
| 方法 | 参数 | 返回 | 说明 |
|---|---|---|---|
printBitmapBase64 |
{ base64, x_pos, y_pos, halftoneType } |
number |
base64 位图(不含 data: 前缀) |
printBitmapPath |
{ path, x_pos, y_pos, halftoneType } |
number |
图片文件路径位图 |
halftoneType:0 = 普通,1 = 抖动(halftone)。
状态 / 信息查询
| 方法 | 参数 | 返回 | 说明 |
|---|---|---|---|
getPrinterStatus |
— | number |
打印机状态(0 正常) |
getPrintSN |
— | string |
序列号 |
getElectricity |
— | number |
电量 |
getVoltage |
— | string |
电压 |
getPrinterVersion |
— | string |
固件版本 |
其它 / 日志
| 方法 | 参数 | 返回 | 说明 |
|---|---|---|---|
setContrast / setSpeed / setSp / preFeed / setBold / setCountry / setBluetoothName / setLayer / openEndStatic / poPrint / saveParameter / setInverseLine |
见 interface.uts |
number/void |
各类打印参数设置 |
setLog |
{ isPrint: boolean } |
void |
开启 / 关闭 SDK 内部日志 |
五、典型打印流程
connectionBT() // 1. 建立连接(0=成功)
↓
printAreaSize() // 2. 设定纸张大小 & 份数
↓
printText / printBarCode / printQRCode / printBitmapBase64 // 3. 添加内容(可多次)
↓
print() // 4. 走纸并输出
↓
closeBT() // 5. 断开(可选,建议页面 onUnload 时调用)
六、权限说明
package.json 已声明所需权限(蓝牙 / 网络 / 存储):
BLUETOOTH、BLUETOOTH_ADMIN、BLUETOOTH_CONNECT、BLUETOOTH_SCAN、
INTERNET、ACCESS_WIFI_STATE、ACCESS_NETWORK_STATE、READ/WRITE_EXTERNAL_STORAGE。
Android 12+(BLUETOOTH_CONNECT/SCAN)需在运行时动态申请,请配合 uni.authorize / 系统权限弹窗处理。
七、常见问题(FAQ)
Q1:调用方法报 module not found / 方法 undefined?
- 确认已用自定义基座运行(标准基座不含 UTS 原生插件)。
- 确认 import 路径为
@/uni_modules/PrintModuleCPCL,且manifest.json中没有旧的nativePlugins.PrintModuleCPCL声明(二者同 id 会冲突,本插件已删除该声明)。
Q2:编译报 ABI 不支持(如 armeabi / mips)?
- 旧原生插件
libs含不被 uni-app 支持的 ABI。本插件config.json仅保留arm64-v8a / armeabi-v7a / x86 / x86_64,并已清理冗余.so。如仍报错,删除nativeplugins/PrintModuleCPCL冗余目录即可。
Q3:蓝牙连上了但打印没反应?
- 检查
printAreaSize的height是否匹配实际纸张;内容添加后必须调用print()才会输出。 - 打开日志:
setLog({ isPrint: true }),在 Logcat 中过滤PrinterHelper。
Q4:能用于 iOS 吗?
- 不能。本插件仅封装 Android 的 CPCL SDK,平台声明为 Android only。
八、与原生插件对照(迁移清单)
| 原生插件(回调式) | UTS 插件(同步式) |
|---|---|
module.connectionBT({address}, cb) |
connectionBT({ address }) → number |
module.printText({...}, cb) |
printText({...}) → number |
module.print({...}, cb) |
print() → number |
module.getPrintSN({}, cb) |
getPrintSN() → string |
module.setDisConnectBTListener(cb) |
setDisConnectBTListener(cb)(回调保留) |

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 3
赞赏 0
下载 12508496
赞赏 1943
赞赏
京公网安备:11010802035340号