更新记录

0.0.8(2025-03-28)

  • chore: 除掉警告

0.0.7(2025-03-28)

  • chore: 增加间隔

0.0.6(2025-03-27)

  • chore: 更新文档
查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.23,Android:支持,iOS:不确定,HarmonyNext:不确定 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

lime-printer 打印

  • 使用UTS通过蓝牙、网络、USB连接打印机,向打印机发送打印指令打印(小票、标签),目前只测了安卓蓝牙(TSC)
  • 插件做到蓝牙后,打印机就还回去了没有机会测试网络和USB。如果你有这条件可以完善一下

安装

在插件市场导入,引入插件后自定义基座

使用

蓝牙连接

import { usePrinter,  SearchOption, ConnectOption, PrintOption} from '@/uni_modules/lime-printer'
// 初始化控制器
const printer = usePrinter()
printer.setUpConnection('bluetooth')

// 监听设备发现
printer.onSearch((bt) => {
    console.log('发现设备:', device.deviceId);
    const bluetooth:Bluetooth = {
        name : bt.name,
        deviceId : bt.deviceId
    }
    bluetooths.value.push(bluetooth)
})

// 搜索设备
const search = () => {
    bluetooths.value = []
    printer.search({
        success: () => console.log('开始搜索'),
        fail: err => console.error('搜索失败', err)
    } as SearchOption)
}

// 停止搜索
const stop = () => {
    printer.stop()
}

// 连接打印机
const connect = () => {
    printer.connect({
        deviceId: '60:6E:41:96:33:CD',
        success(res) {
            console.log('连接成功')
        },
        fail(err) {
            console.log('连接失败')
        }
    } as ConnectOption)
}

// 向打印机发送打印指令
const print = () => {
    //TSC
    printer.print({
        data: "SIZE 40 mm, 30 mm\r\n" +
        "GAP 3 mm, 0 mm\r\n" +
        "DIRECTION 1,0\r\n" +
        "REFERENCE 0,0\r\n" +
        "SET TEAR 1\r\n" +
        "CLS\r\n" +
        "TEXT 20,10, \"test.ttf\",0,1,1,\"first line!\"\r\n" +
        "TEXT 20,51, \"test.ttf\",0,1,1,\"second line!\"\r\n" +
        "TEXT 20,92, \"test.ttf\",0,1,1,\"third line!\"\r\n" +
        "TEXT 20,133, \"test.ttf\",0,1,1,\"firth line!\"\r\n" +
        //"BARCODE 40,165,\"128\",40,1,0,2,2,\"1234567890\"\r\n" +
        "QRCODE 40,165,L, 4, A, 0,\"abcdefg\"\r\n" +
        "PRINT 1,2\r\n"
    } as PrintOption)
}

网络

使用方法同蓝牙一样,未经过测试

printer.setUpConnection('net')

USB

使用方法同蓝牙一样,未经过测试

printer.setUpConnection('usb')

API

search(option: SearchOption)

功能:扫描周边设备

interface SearchOption {
  allowDuplicatesKey?: boolean; // 是否允许重复上报
  interval?: number;           // 上报间隔(ms)
  services?: string[];         // 过滤服务UUID列表
  success?: (res: PrinterError) => void;
  fail?: (res: PrinterError) => void;
  complete?: (res: PrinterError) => void;
}

connect(option: ConnectOption)

功能:连接指定设备

interface ConnectOption {
  deviceId?: string;  // 目标设备ID
  autoReconnect?: boolean; // 是否启用自动重连
  maxReconnectAttempts?: number; //最大重连次数(默认3次
  success?: (res: PrinterError) => void;
  fail?: (res: PrinterError) => void;
  complete?: (res: PrinterError) => void;
}
printer.connect({
  deviceId: 'XX:XX:XX:XX:XX',
  success: () => {/* 连接成功处理 */}
});

print(option: PrintOption)

功能:发送打印数据

interface PrintOption {
  data: string;  // 要发送的数据
  success?: (res: PrinterError) => void;
  fail?: (res: PrinterError) => void;
  complete?: (res: PrinterError) => void;
}

onSearch

功能:监听扫描到的设备

printer.onSearch((device) => {
  console.log(`发现设备 - 名称: ${device.name}, ID: ${device.deviceId}`);
});

stop

功能:停止搜索

disconnect

功能:断开设备

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-feature android:name="android.hardware.usb.host"/> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_USB" /> <uses-permission android:name="android.permission.USB_PERMISSION" /> <uses-permission android:name="android.permission.INTERNET"/> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问