npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

lpapi-ble-wx

v1.1.20240105

Published

蓝牙打印接口

Downloads

4

Readme

lpapi-ble-wx

lpapi-ble-wx 是一款基于微信小程序自身所提供的 BLE 接口 以及 canvas 绘图功能所封装的标签编辑及蓝牙打印接口,接口通过 canvas 来按照用户需要进行 2D 绘图,绘制完毕后将图片内容转换为打印机所支持的指令,然后通过 BLE 将数据发送到打印机,然后开始打印图片。

注意:本接口仅适用于德佟系列标签打印机!

1.1 使用说明

  1. 本打印接口需运行在微信小程序上(详细的系统限制,可查看微信公开平台)。
  2. 如果发现打印速度异常缓慢,可以尝试关闭“调试模式”。
  3. 安卓手机使用时,请确保打开手机蓝牙、手机 GPS 定位功能,并确保允许微信 App 的定位隐私权限。
  4. 苹果手机使用时,请确保打开手机蓝牙,并确保允许微信的蓝牙隐私权限。

1.2 使用方法

  1. 获取开发包,获取方法:
  • 通过 npm/yarn:

npm install lpapi-ble-wx 或者 yarn add lpapi-ble-wx

  1. 配置蓝牙操作权限;
// app.json
{
    "permission": {
        "scope.userLocation": {
            "desc": "蓝牙搜索"
        },
        "scope.bluetooth": {
            "desc": "蓝牙搜索"
        }
    }
}
  1. 获取接口实例对象;
  • 方法 1: 通过离屏 canvas 方式绘制标签内容
// index.js
import { LPAPIFactory } from "../../js_sdk/lpapi-ble/index";

Page({
    onReady() {
        this.lpapi = LPAPIFactory.getInstance();
    },
});
  • 方法 2:通过隐藏 canvas 方式绘制标签内容;
<!-- index.xaml -->
<view>
    <canvas type="2d" id="{{canvasId}}" style="position:fixed;left:-999999rpx;top:-999999rpx;"></canvas>
</view>
// index.js
import { LPAPIFactory } from "../../js_sdk/lpapi-ble/index";
Page({
    onReady() {
        const query = wx.createSelectorQuery();
        query
            .select(`#${this.data.canvasId}`)
            .fields({ node: true, size: true })
            .exec((res) => {
                console.log(`---- querySelector(${this.data.canvasId}) ----`);
                console.log(res);
                const canvas = res[0].node;
                // 通过隐藏Canvas获取接口实例
                this.lpapi = LPAPIFactory.getInstance({ canvas: canvas });
            });
    },
});
  1. 具体使用方法参考官方 demo;

接口介绍

interface InitOptions {
	/** 用于标签绘制的 canvas ID */
    canvasId: string;
	/** 是否显示相关日志信息 */
    logLevel?: number;
}
interface LPAPIFactory {
	/**
	 * 通过配置信息获取接口实例对象。
	 */
    static getInstance(context: InitOptions): LPAPI;
}

2.1 startBleDiscovery(opts: object)

功能描述

获取搜索到的打印机列表。

参数

|属性 |类型 |默认值|必填|说明| |--------|--------|---|----|----| |models | string | |否|链接的目标打印机,不指定会自动搜索打印机| |timeout | number | |否|单位毫秒。打印机搜索超时时间,0:表示搜索到目标设备后立即停止搜索,大于零表示指定超时时间到了之后自动停止搜索,不指定表示不会自动停止搜索,需要通过 stopBleDiscovery来停止搜索。| |interval| number | |否|单位毫秒,搜索到设备后,设备上报(回调)间隔| |callback|function| |否|搜索到蓝牙设备时的回调函数| |success |function| |否|蓝牙搜索功能启动成功时的回调函数| |fail |function| |否|蓝牙搜索功能启动失败,或者扫描停止时的回调函数| |complete|function| |否|蓝牙设备启动成功、失败、停止、检测到设备等时候的回调函数|

  • 回调参数 LPA_Response

| 属性 |类型 |说明| | -------- |------------------ |----| |statusCode|number |搜索结果状态码,0表示成功| |resultInfo|BluetoothDevice[] |蓝牙设备列表| |resultInfo[i].name |string|设备名称| |resultInfo[i].deviceId |string|设备ID| |resultInfo[i].RSSI |string|设备信号强度|

  • 回调结果状态码

|状态码|说明 | |-----|--------| | 0 | 蓝牙扫描启动成功| | -1 | 检测到蓝牙设备| | 1 | 蓝牙搜索已停止(超时时间到或者通过stopBleDiscovery停止)| | 2 | 蓝牙适配器打开失败| | 3 | 蓝牙扫描打开失败|

2.2 openPrinter(opts: object)

功能描述

打开指定名称或型号的打印机。

参数

| 属性 | 类型 |默认值|必填 |说明| | ----- | ------ |----|----|----| |name |string | | 否 |打印机名称,如果未指定打印机名称,链接缓存的打印机或者自动搜索打印机| |deviceId|string | | 否 |打印机设备ID| |success |function| | 否 |接口调用成功回调函数| |fail |function| | 否 |接口调用失败回调函数| |complete|function| | 否 |接口调用结束的回调函数(调用成功、失败都会执行)|

  • 回调参数 LPA_Response<string|Objet> resp

|属性 |类型 |说明| |--------------------|------|----| |statusCode |number|链接结果状态码,0:表示成功| |resultInfo |string|当链接失败的时候会显示错误信息| |resultInfo.name |string|链接成功时的打印机名称| |resultInfo.deviceId |string|链接成功时的打印机设备ID| |resultInfo.DPI |number|打印头分辨率| |resultInfo.width |number|打印头分辨率| |resultInfo.softFlags|number|打印机软件标志位|

返回值

Promise<LPA_Response<string|Object>> 返回值类型可参考回调参数。

2.3 closePrinter()

功能描述

关闭已连接打印机。

2.4 startJob(opts: object)

功能描述

创建指定大小的打印任务。

参数

opts: object

| 属性 | 类型 |默认值|必填|说明| | --------- | ------|----|----|----| |width |number | |是|标签宽度(单位:毫米)。| |height |number | |是|标签高度(单位:毫米)。| |orientation|number | 0 |否|标签旋转角度,默认为0,表示不旋转| |jobName |string | |否|打印任务名称,注意:当任务名称为 "#!#preview" 或者 "#!#transparent"的时候,不会进行任何打印操作。|

  • 标签打印方向 orientation

|旋转方向|描述| |---- |----| | 0 | 不旋转 | | 90 | 右转90度| | 180 | 旋转180度| | 270 | 左转90度|

返回值

boolean 成功与否。

2.5 commitJob(options: object)

功能描述

结束绘制,开始打印绘制内容,如果打印任务是预览任务,则返回预览图片。

参数

options: object

|属性|类型|默认值|必填|说明| | ------------ | ------- |---- |----|----| |printDarkness | number | 255 |否|打印浓度| |printSpeed | number | 255 |否|打印速度| |gapType | number | 255 |否|纸张类型| |gapLength | number |auto |否|纸张间隔长度| |threshold | boolean | 192 |否|灰度阈值| |success |function| |否|接口调用成功回调函数| |fail |function| |否|接口调用失败回调函数| |complete |function| |否|接口调用结束的回调函数(调用成功、失败都会执行)|

  • 打印浓度:darkness

|值|说明| |----|----| |6 |正常| |10 |较浓| |15 |最浓|

  • 打印速度:speed

|值 |说明| |----|----| |1 |最慢 | |2 |较慢 | |3 |正常 | |4 |较快 | |5 |最快 |

  • 纸张类型:gapType

|值 |说明 |备注| |----|----|----| |0 |连续纸 | |1 |定位孔 | |2 |间隙纸 | |3 |黑标纸 |

  • 回调参数 LPA_Response resp

|属性 |类型 |说明| |---------------------- |------|----| |statusCode |number|链接结果状态码,0:表示成功| |resultInfo.dataUrl |string|生成的 base64 图片内容,供预览| |resultInfo.width |number|标签宽度| |resultInfo.height |number|标签高度| |resultInfo.orientation |number|标签旋转角度| |resultInfo.jobName |string|打印任务名称|

返回值

Promise<LPA_Response>

2.6 setItemOrientation(orientation: number)

功能描述

设置后续绘制对象的默认旋转方向。

参数

orientation: number |值 |说明| |----|----| |0 |不旋转 | |90 |右转90度 | |180 |旋转180度| |270 |左转90度 |

2.7 setItemHorizontalAlignment(alignment: number)

功能描述

设置后续绘制对象的水平对齐方向。

参数

alignment: number |值 |说明| |----|----| |0 |水平居左对齐 | |1 |水平居中对齐 | |2 |水平居右对齐 | |3 |拉伸对齐 |

2.8 setItemVerticalAlignment(alignment: number)

功能描述

设置后续绘制对象的垂直对齐方向。

参数

alignment: number |值 |说明| |----|----| |0 |垂直居上对齐 | |1 |垂直居中对齐 | |2 |垂直居下对齐 | |3 |拉伸对齐 |

2.9 drawText(opts: object)

功能描述

绘制字符串对象。

参数

| 属性 |类型 |默认值|必填|说明| | -------- | ----- |---|----|----| |text |string | |是|要绘制的目标字符串| |fontHeight|number | |是|字体高度,单位:毫米| |x |number |0 |否|水平坐标位置,默认为0,单位:毫米| |y |number |0 |否|垂直坐标位置,默认为0,单位:毫米| |width |number |0 |否|显示区域的宽度,默认为0,表示当行显示,单位:毫米| |height |number |0 |否|显示区域的高度,默认为0,表示自适应高度,单位:毫米| |fontStyle |number | |否|字体样式,默认为0,表示常规字体,具体可参考下面的字体样式说明| |fontName |string | |否|字体名称| |autoReturn|number | 1 |否|默认为1,表示按字符换行,0表示不换行| |lineSpace |number | |否|行间距| |charSpace |number | |否|字符间距| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

  • 字体样式:fontStyle

| 值 |说明| |----|----| | 0 | 常规字体| | 1 | 粗体| | 2 | 斜体| | 3 | 粗斜体|

2.10 drawBarcode(opts: object)

功能描述

绘制一维码。

参数

| 属性 | 类型 |默认值|必填|说明| | ----------------- | ------ |----|----|----| |text | string | | 是 |一维码内容| |x | number | | 否 |水平坐标位置(单位:毫米)| |y | number | | 否 |垂直坐标位置(单位:毫米)| |width | number | | 否 |一维码宽度(单位:毫米),默认为0,表示宽度自适应| |height | number | | 否 |一维码高度(单位:毫米),默认为0,表示高度自适应| |textHeight | number | | 否 |一维码中字符串的高度(单位:毫米),默认自适应| |type | number | | 否 | |textAlign | number | 1 | 否 |一维码中字符串的对齐方式,默认居中对齐 | |textFlag | number | 2 | 否 | 一维码中字符串的位置, 0:表示不显示字符串,1:表示字符串在上面,2:表示字符串在下面。| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

  • 一维码类型:type

|类型|说明| |----| ---- | | 20 | UPCA | | 21 | UPCE | | 22 | EAN13 | | 23 | EAN8 | | 24 | CODE39 | | 25 | ITF25 | | 26 | CODABAR | | 27 | CODE93 | | 28 | CODE128 | | 29 | ISBN | | 30 | ECODE39 | | 31 | ITF14 | | 32 | ChinaPost | | 33 | Matrix25 | | 34 | Industrial25 | | 60 | AUTO = 60 |

2.11 drawQRCode(opts: object)

功能描述

绘制二维码。

参数

opts: object | 属性 | 类型 |默认值|必填|说明| | ----------------- | ------ |----|----|----| |text | string | | 是 |二维码内容| |x | number | 0 | 否 |水平坐标位置(单位:毫米)| |y | number | 0 | 否 |垂直坐标位置(单位:毫米)| |width | number | 0 | 否 |显示宽度(单位:毫米)| |height | number | 0 | 否 |显示高度(单位:毫米)| |eccLevel | number | 0 | 否 |二维码纠错级别| |version| | number | | 否 |二维码版本号,默认根据内容自动选择| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

  • QRCode二维码纠错级别:eccLevel

|纠错级别|描述| |----| ---- | | 0 | Low | | 1 | Middle | | 2 | Quality | | 3 | High |

2.12 drawPDF417(options: object)

功能描述

绘制PDF417二维码。

参数

options: object | 属性 | 类型 |默认值|必填|说明| | ----------------- | ------ |----|----|----| |text | string | | 是 |二维码内容| |x | number | 0 | 否 |水平坐标位置(单位:毫米)| |y | number | 0 | 否 |垂直坐标位置(单位:毫米)| |width | number | 0 | 否 |显示宽度(单位:毫米)| |height | number | 0 | 否 |显示高度(单位:毫米)| |eccLevel | number | 0 | 否 |二维码纠错级别| |cols | number | | 否 |横向多少个模块(不包括左右起止符和层指示符,所以最小为1,加上起止符和层指示符,最小为5)| |aspectratio | number | | 否 |二维码宽高比,当未指定二维码宽度个数的时候,通过宽高比来自定计算二维码的宽和高,不指定的话,默认为3| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

2.13 drawDataMatrix(options: object)

功能描述

绘制 DataMatrix 二维码。

参数

options: object | 属性 | 类型|默认值|必填|说明| | ----------------- | ------ |----|----|----| |text | string | | 是 |二维码内容| |x | number | 0 | 否 |水平坐标位置(单位:毫米)| |y | number | 0 | 否 |垂直坐标位置(单位:毫米)| |width | number | 0 | 否 |显示宽度(单位:毫米)| |height | number | 0 | 否 |显示高度(单位:毫米)| |codeShape | number | 0 | 否 |DM码形状,0:根据内容与宽高,自动选择形状,1:使用方形码,2:使用矩形码| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

2.14 drawLine(opts: object)

功能描述

绘制直线。

参数

| 属性 | 类型 |默认值|必填|说明| | ----------------- | ------ |----|----|----| |x1 | number | 0 | 否 |起点的水平坐标位置(单位:毫米)| |y1 | number | 0 | 否 |起点的垂直坐标位置(单位:毫米)| |x2 | number | x1 | 否 |终点的水平坐标位置(单位:毫米)| |y2 | number | y1 | 否 |终点的垂直坐标位置(单位:毫米)| |lineWidth | number |0.4 | 否 |起点+终点模式下的线条宽度(单位:毫米)| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

2.15 drawRectangle(opts: object)

功能描述

绘制矩形。

参数

opts: object

|属性 |类型 |默认值|必填|说明| | ----------------- | ------ | ---- |----|----| |x | number | 0 | 否 | 绘制对象的水平左边位置(单位:毫米),值默认为0| |y | number | 0 | 否 | 绘制对象的水平左边位置(单位:毫米),值默认为0| |width | number | | 是 | 绘制对象的水宽度(单位:毫米)| |height | number | | 是 | 绘制对象的水高度(单位:毫米)| |lineWidth | number | auto | 否 | 线条宽度 | |cornerWidth | number | | 否 | 绘制圆角矩形时的圆角半径 | |cornerHeight | number | | 否 | 绘制圆角矩形时的圆角半径 | |fill | boolean|false | 否 | 是否绘制填充矩形| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

2.16 drawEllipse(options: object)

功能描述

绘制矩形。

参数

options: object

| 属性 | 类型 |默认值|必填|说明| | ----------------- | ------ | ----|----|----| |x | number | 0 | 否 | 绘制对象的水平左边位置(单位:毫米),值默认为0| |y | number | 0 | 否 | 绘制对象的水平左边位置(单位:毫米),值默认为0| |width | number | | 是 | 绘制对象的水宽度(单位:毫米)| |height | number | | 是 | 绘制对象的水高度(单位:毫米)| |lineWidth | number | auto | 否 | 线条宽度 | |fill | boolean|false| 否 | 是否绘制填充矩形| |orientation | number |auto | 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto | 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto | 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

2.17 drawCircle(options: object)

功能描述

绘制正圆形。

参数

options: object

|属性|类型|默认值|必填|说明| | ------ | ------ | ---- |----|----| |x |number | 0 | 否 | 绘制对象的水平左边位置(单位:毫米),值默认为0| |y |number | 0 | 否 | 绘制对象的水平左边位置(单位:毫米),值默认为0| |radius |number | | 是 | 圆半径(单位:毫米)| |lineWidth | number | auto | 否 | 线条宽度 | |fill |boolean |false | 否 | 是否绘制填充矩形|

2.18 drawImage(opts: object)

功能描述

绘制图片资源。

参数

| 属性 | 类型 |默认值|必填|说明| | ----- | ------ |----|----|----| |image |Image | | 是 |图片对象| |x |number | 0 | 否 |水平坐标位置(单位:毫米)| |y |number | 0 | 否 |垂直坐标位置(单位:毫米)| |width |number | 0 | 否 |图片显示宽度(单位:毫米)| |height |number | 0 | 否 |图片显示高度(单位:毫米)| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式|

2.19 drawImagePath(opts: object)

功能描述

绘制图片资源。

参数

| 属性 | 类型 |默认值|必填 |说明| | ----------------- | -------- |----|----|-------| |imagePath | string | | 是 |图片对象| |x | number | 0 | 否 |水平坐标位置(单位:毫米)| |y | number | 0 | 否 |垂直坐标位置(单位:毫米)| |width | number | 0 | 否 |图片显示宽度(单位:毫米)| |height | number | 0 | 否 |图片显示高度(单位:毫米)| |orientation | number |auto| 否 |绘制选项的旋转方向,如果未设置,则使用默认旋转方向| |horizontalAlignment| number |auto| 否 |绘制选项的水平对齐方式,如果未设置,则使用默认对齐方式| |verticalAlignment | number |auto| 否 |绘制选项的垂直对齐方式,如果未设置,则使用默认对齐方式| |success | function | | 否 | 图片绘制完毕回调函数。|

2.20 setSupportPrefixs(models: string[])

功能描述

设置搜索、连接的打印机的型号限定。

参数

models: string[] 待搜索的打印机型号列表。 在 startBleDiscovery 或者 openPrinter 之前执行此方法,可以限定指定的打印机型号。