更新记录
1.0.0(2023-05-24)
1.0.0 发布测试后可正常使用的标签打印插件
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 12.0 | armeabi-v7a:支持,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
使用说明
注:
- 采购 旻佑MY-E9L打印机,进行标签打印;
- 采用 K7G10安卓屏,选配的 RS485,通过串口 与 打印机进行通讯,实现打印标签功能
- 标签纸大小 53mm*50mm
- 使用的 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)
})
}