更新记录

1.0.0(2023-05-24)

1.0.0 发布测试后可正常使用的标签打印插件


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:支持,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


使用说明

注:

  1. 采购 旻佑MY-E9L打印机,进行标签打印;
  2. 采用 K7G10安卓屏,选配的 RS485,通过串口 与 打印机进行通讯,实现打印标签功能
  3. 标签纸大小 53mm*50mm
  4. 使用的 HBuilderX 3.6.18, minSdkVersion 19

操作流程

1、引入插件

const XdPrint = uni.requireNativePlugin('Xd-print');

2、打开打印机串口

/**
* '/dev/ttyS1' =》 设备节点
* 115200 =》 波特率
* 0 =》 指定流控制
*/
XdPrint.openPortReply('/dev/ttyS1', 115200, 0);

3、打印机走纸

/**
 * 页面走纸,并设置标签纸大小,参考坐标和旋转角度
 * @param {number} x 页面起始点 x 坐标
 * @param {number} y 页面起始点 y 坐标
 * @param {number} width 页面宽度
 * @param {number} height 页面高度
 * @param {number} rotation 页面旋转,取值范围{0,1};0 页面不旋转打印,1 页面旋转打印
 */
function pageBegin(x, y, width = 384, height = 400, rotation = 0) {
    XdPrint.pageBegin(x, y, width, height, rotation);
}

4、文本打印

/** 
 * 调试文字样式
 * 进行文本打印; 只能单行打印
 * @param {number} x 文本起始位置 x 坐标
 * @param {number} y 文本起始位置 y 坐标
 * @param {number} str 打印的字符串
 * @param {number} font 选择字体
 * @param {number} style 字符风格
 */
function drawStyleText(x, y, str, font = 24) {
    XdPrint.drawStyleText(x, y, font, false, false, false, false, 2, 0, 0, str);
}

5、条形码打印

/**
 * 进行 条形码 绘制
 * @param {number} x 条码左上角 x 坐标
 * @param {number} y 条码左上角 y 坐标
 * @param {number} height 定义条码高度
 * @param {string} str 要打印的条码字符
 * @param {number} unitwidth 定义码块单元宽度。取值范围:【1,4】
 * @param {number} rotation 旋转角度。取值范围: [0,3];0 不旋转绘制,1 旋转90度绘制
 *      2 旋转 180度绘制。 3 选择270度绘制
 */
function drawBarCode(x, y, height, str, unitwidth = 2, rotation = 2) {
    XdPrint.drawBarCode(x, y, height, unitwidth, rotation, str);
}

6、进行打印

/**
 * 元素绘制完毕,进行打印操作
 * @param {Object} copies 打印的份数,【1-255】
 */
function print(copies = 1) {
    XdPrint.print(copies, (res) => {
        if(res.state) {
            uni.hideLoading();
            uni.showToast({
                title: '打印完毕!',
                icon: 'none'
            })
        } else {
            uni.hideLoading();
            uni.showModal({
                content: '打印测试纸失败,请查看打印机串口连接是否正常!',
                showCancel: false
            })
        }
    });
}

7、关闭打印机串口

/**
 * 关闭打印机串口
 */
function closePort() {
    XdPrint.closePort();
}

案例:测试是否可以正常打印

/**
*  进行打印测试,确定打印机是否连接正常
*  是否可以正常进行打印操作
*/
function testPrint() {
    // 打开打印机串口
    return new Promise((resolve, reject) => {
        XdPrint.openPortReply('/dev/ttyS1', 115200, 0);
        setTimeout(() => {
            XdPrint.isOpenReply((res) => {
                if(res.state) {
                    // 表示串口正常
                    pageBegin(0, 0);
                    drawStyleText(380, 370, "******公司", 27);
                    drawStyleText(380, 330, "联系方式:***", 27);
                    print();
                    closePort();
                    resolve({code: 200})
                } else {
                    uni.showModal({
                        content: '打印测试纸失败,请查看打印机串口连接是否正常!然后重新打印',
                        showCancel: false
                    })
                    reject();
                }
            })
        }, 1500)
    })
}

隐私、权限声明

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

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

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

暂无用户评论。

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