更新记录
1.0.1(2026-03-20) 下载此版本
更新部分机型无法连接的问题。
1.0.0(2026-03-19) 下载此版本
- 初始版本发布
- 支持 TSC ML 全系列标签打印机 USB 连接
- TSPL 指令构建器(链式 API)
- 快捷打印方法:二维码标签、文本标签、条码标签
- 支持自定义 TSPL 指令
- 完整的 TypeScript 类型声明
- 事件系统:connected / disconnected / error
- 自动设备发现和权限管理
- Android 12+ PendingIntent 兼容
平台兼容性
uni-app(4.87)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
tsc-ml-printer
TSC ML 系列标签打印机 UniApp SDK,通过 USB 连接 Android 设备,支持 TSPL 指令集。
支持型号
TSC ML 全系列(ML240P、ML340P、ML240、ML340 等),以及所有使用 TSPL 指令集的 TSC 打印机。
平台兼容
| App-Vue | App-NVue | H5 | 小程序 |
|---|---|---|---|
| √ | √ | × | × |
仅支持 Android 平台,需要设备支持 USB Host 功能。
安装
将 tsc-ml-printer 文件夹复制到项目的 uni_modules 目录下即可。
快速开始
import TscPrinter from '@/uni_modules/tsc-ml-printer/js_sdk'
const printer = new TscPrinter()
// 监听事件
printer.on('connected', (info) => {
console.log('打印机已连接:', info.deviceName)
})
printer.on('error', (err) => {
console.error('打印机错误:', err.message)
})
// 连接打印机(自动发现第一台 TSC 设备)
await printer.connect()
// 打印二维码标签
await printer.printQRLabel({
width: 40,
height: 30,
qrContent: 'https://example.com',
qrX: 50,
qrY: 20,
qrSize: 6,
text: '商品名称',
textX: 180,
textY: 50
})
// 断开连接
printer.disconnect()
API 参考
创建实例
const printer = new TscPrinter()
连接管理
getDevices() → Promise<DeviceInfo[]>
扫描所有已连接的 TSC USB 打印机。
const devices = await printer.getDevices()
console.log(devices)
// [{ deviceName: '/dev/bus/usb/001/002', vendorId: 4611, productId: 256, ... }]
connect(deviceOrIndex?) → Promise<DeviceInfo>
连接打印机。不传参则自动连接第一台设备。
// 自动连接
await printer.connect()
// 按索引连接
await printer.connect(0)
// 指定设备连接
const devices = await printer.getDevices()
await printer.connect(devices[1])
disconnect()
断开连接。
isConnected() → boolean
查询是否已连接。
快捷打印
printQRLabel(options) → Promise<number>
快捷打印二维码标签。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| qrContent | string | - | 二维码内容(必填) |
| width | number | 40 | 标签宽度 mm |
| height | number | 30 | 标签高度 mm |
| gap | number | 3 | 间隙 mm |
| qrX | number | 50 | 二维码 X 坐标 dots |
| qrY | number | 30 | 二维码 Y 坐标 dots |
| qrSize | number | 6 | 单元大小 1-10 |
| text | string | - | 附加文字 |
| textX | number | 50 | 文字 X 坐标 |
| textY | number | 200 | 文字 Y 坐标 |
| copies | number | 1 | 打印份数 |
printTextLabel(options) → Promise<number>
快捷打印多行文本标签。
await printer.printTextLabel({
width: 40, height: 30,
lines: [
{ x: 20, y: 20, content: '第一行文字' },
{ x: 20, y: 60, content: '第二行文字' },
{ x: 20, y: 100, content: '¥19.90', xMul: 2, yMul: 2 }
]
})
printBarcodeLabel(options) → Promise<number>
快捷打印条码标签。
await printer.printBarcodeLabel({
width: 60, height: 40,
barcodeContent: '6901234567890',
barcodeType: TscPrinter.BarcodeType.EAN13,
text: '商品名称'
})
自定义打印(TSPLBuilder)
使用链式 API 自由组合打印内容:
const builder = printer.createLabel(60, 40, 3)
.speed(4)
.density(8)
.box(10, 10, 460, 300, 2)
.text(20, 20, '商品名称', { xMul: 2, yMul: 2 })
.qrcode(20, 80, 'https://example.com', { cellWidth: 5 })
.barcode(200, 80, '128', 'ABC123456', { height: 80 })
.text(200, 200, '¥29.90', { font: 'TSS24.BF2', xMul: 2, yMul: 2 })
.hline(10, 270, 440)
.text(20, 280, '2025-01-01 规格: 500g')
.print(1, 1)
await printer.printLabel(builder)
低级接口
// 直接发送 TSPL 命令字符串
await printer.sendRaw('SIZE 40 mm, 30 mm\r\nGAP 3 mm, 0 mm\r\nCLS\r\nTEXT 20,20,"TSS24.BF2",0,1,1,"测试"\r\nPRINT 1,1\r\n')
// 直接发送字节数组
await printer.sendBytes([0x1B, 0x40, ...])
设备控制
await printer.selfTest() // 打印自检页
await printer.feedToHome() // 走纸到起始位置
await printer.feed(100) // 走纸 100 dots
await printer.beep() // 蜂鸣器响
事件
printer.on('connected', (deviceInfo) => { })
printer.on('disconnected', () => { })
printer.on('error', (err) => { })
静态属性
TscPrinter.TSPLBuilder // 构建器类
TscPrinter.ErrorCode // 错误码枚举
TscPrinter.BarcodeType // 条码类型枚举
TscPrinter.ConnectionState // 连接状态枚举
TscPrinter.DEFAULTS // 默认参数
错误处理
所有异步方法在失败时抛出 TscPrinterError:
import { TscPrinterError } from '@/uni_modules/tsc-ml-printer/js_sdk'
try {
await printer.connect()
} catch (e) {
if (e.code === 'DEVICE_NOT_FOUND') {
uni.showToast({ title: '请连接USB打印机', icon: 'none' })
} else if (e.code === 'PERMISSION_DENIED') {
uni.showToast({ title: '请授予USB权限', icon: 'none' })
}
}
| 错误码 | 说明 |
|---|---|
| USB_NOT_SUPPORTED | 设备不支持 USB Host |
| DEVICE_NOT_FOUND | 未找到 TSC 打印机 |
| PERMISSION_DENIED | USB 权限被拒绝 |
| CONNECTION_FAILED | 连接失败 |
| ENDPOINT_NOT_FOUND | 未找到传输端点 |
| TRANSFER_FAILED | 数据传输失败 |
| NOT_CONNECTED | 未连接 |
注意事项
- 需要 Android 设备支持 USB Host(OTG)功能
- 首次连接打印机时系统会弹出 USB 权限授权对话框
- TSPL 中文打印使用 GBK 编码,内置字体为
TSS24.BF2 - 坐标单位为 dots(200DPI 下 1mm ≈ 8dots,300DPI 下 1mm ≈ 12dots)
- 建议在
manifest.json的 Android 权限中确认包含 USB 相关权限

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 2
赞赏 0
下载 11462055
赞赏 1880
赞赏
京公网安备:11010802035340号