lpapi-ble-wx
v1.1.20240105
Published
蓝牙打印接口
Downloads
4
Readme
lpapi-ble-wx
lpapi-ble-wx 是一款基于微信小程序自身所提供的 BLE 接口 以及 canvas 绘图功能所封装的标签编辑及蓝牙打印接口,接口通过 canvas 来按照用户需要进行 2D 绘图,绘制完毕后将图片内容转换为打印机所支持的指令,然后通过 BLE 将数据发送到打印机,然后开始打印图片。
注意:本接口仅适用于德佟系列标签打印机!
1.1 使用说明
- 本打印接口需运行在微信小程序上(详细的系统限制,可查看微信公开平台)。
- 如果发现打印速度异常缓慢,可以尝试关闭“调试模式”。
- 安卓手机使用时,请确保打开手机蓝牙、手机 GPS 定位功能,并确保允许微信 App 的定位隐私权限。
- 苹果手机使用时,请确保打开手机蓝牙,并确保允许微信的蓝牙隐私权限。
1.2 使用方法
- 获取开发包,获取方法:
- 通过 npm/yarn:
npm install lpapi-ble-wx 或者 yarn add lpapi-ble-wx
通过德佟电子官网下载接口包:
打开德佟电子官网后,在顶部点击软件下载,然后选择SDK开发包下载, 然后点击 蓝牙打印 WeChat SDK(含API文档)下载即可.
- 配置蓝牙操作权限;
// app.json
{
"permission": {
"scope.userLocation": {
"desc": "蓝牙搜索"
},
"scope.bluetooth": {
"desc": "蓝牙搜索"
}
}
}
- 获取接口实例对象;
- 方法 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 });
});
},
});
- 具体使用方法参考官方 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 之前执行此方法,可以限定指定的打印机型号。