更新记录
1.0.10(2024-08-14)
- 修复usb设备内部循环问题
1.0.9(2024-08-14)
- usb数据增加vendorId、productId
1.0.8(2024-01-06)
- 修复iOS uts语法兼容性问题
平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 3.6.8,Android:4.4,iOS:不支持,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
厦门汉印电子技术有限公司-打印机
型号:N41
集成步骤
- 下载示例项目demo导入HBuilderX
- 插件集成步骤请参考https://www.cnblogs.com/wenrisheng/p/18323027
API接口
import {
UTSBluetoothAdapter,
UTSPublicFunction,
UTSHPRTPrinterHelper,
UTSUsbManager
} from "@/uni_modules/wrs-uts-hanyin";
let bluetoothAdapter = new UTSBluetoothAdapter();
let publicFunction = new UTSPublicFunction();
- 扫描蓝牙
// 扫描结果在bluetoothAdapter.registerReceiver回调
bluetoothAdapter.startDiscovery();
- 设置蓝牙回调
bluetoothAdapter.registerReceiver((resp) => {
let action = resp.action;
switch (action) {
case "android.bluetooth.device.action.FOUND": {
// 扫描到蓝牙
let device = resp.device;
if(device.bluetoothClass.majorDeviceClass == 1536) {
this.bluetoothArray.push(device);
}
}
break;
case "android.bluetooth.device.action.BOND_STATE_CHANGED": {
// 蓝牙状态变更
let device = resp.device;
let bondState = device.bondState;
switch (bondState) {
case 11: {
// 正在配对......
}
break;
case 12: {
// 完成配对
}
break;
case 10: {
// 取消配对
}
break;
default:
break;
}
}
break;
case "android.bluetooth.adapter.action.DISCOVERY_FINISHED": {
// 蓝牙扫描完成
}
break;
default:
break;
}
});
- 蓝牙停止扫描
bluetoothAdapter.cancelDiscovery();
- 蓝牙/Wi-Fi连接打印机
// 蓝牙连接参数
let portSetting = "Bluetooth," + address;
// Wi-Fi连接参数
// let portSetting = "WiFi," + this.ip + "," + this.port;
UTSHPRTPrinterHelper.portOpen(portSetting, (resp) => {
if(resp.flag && resp.result == 0) {
// 连接成功
} else {
// 连接失败
}
});
- 获取所有USB设备
UTSUsbManager.getDeviceList((resp)=>{
console.log("getDeviceList resp:" + JSON.stringify(resp));
let devices = resp.devices;
if(devices.length > 0) {
let titles = [];
for(let i = 0; i < devices.length; i ++) {
let deivce = devices[i];
let title = device.deviceName;
titles.push(title);
}
this.showActionSheet(titles, (index)=>{
let deivce = devices[i];
let deviceId = device.deviceId;
let requestCode = this.requestCode;
let action = this.action;
let flags = 0;
UTSUsbManager.requestPermission(deviceId, requestCode, action, flags);
});
} else {
this.showToast("没有找到USB设备");
}
});
- 请求USB权限
let deivce = devices[i];
let deviceId = device.deviceId;
let requestCode = this.requestCode;
let action = this.action;
let flags = 0;
// 权限结果通过UTSUsbManager.registerReceiver回调
UTSUsbManager.requestPermission(deviceId, requestCode, action, flags);
- 设置USB回调
UTSUsbManager.registerReceiver(this.action, (resp)=>{
let action = resp.action;
switch (action){
case this.action:
{
let granted = resp.granted;
this.showMsg("有USB设备授权结果:" + JSON.stringify(resp));
if(granted) {
this.usbDevConect(resp.device.deviceId);
}
}
break;
case "android.hardware.usb.action.USB_DEVICE_DETACHED":
{
this.showMsg("有USB设备插入:" + JSON.stringify(resp));
}
break;
case "android.hardware.usb.action.USB_DEVICE_ATTACHED":
{
this.showMsg("有USB设备拔出:" + JSON.stringify(resp));
}
break;
default:
break;
}
})
- USB连接打印机
UTSHPRTPrinterHelper.portOpenUSBDevice(deviceId, (resp) => {
if(resp.flag && resp.result == 0) {
// 连接成功
} else {
// 连接失败
}
});
- 断开连接
UTSHPRTPrinterHelper.portClose((resp) => {
if(resp.flag && resp.result == 0) {
// 连接成功
} else {
// 连接失败
}
});
- 页标签开始指令
// width:打印范围的宽(单位 mm)。 height:打印范围的高(单位 mm)。
let width = "100";
let height = "100";
UTSHPRTPrinterHelper.printAreaSize(width, height, (resp) => {
if(resp.flag && resp.result >0) {
// 成功
} else {
// 失败
}
});
- 清除打印缓冲区内容
// 清除打印缓冲区内容
UTSHPRTPrinterHelper.cls((resp) => {
if(resp.flag && resp.result >0) {
// 成功
} else {
// 失败
}
});
- 页标签结束指令
// 页标签结束指令
// strnum:打印次数。 strcopies:计数器(默认 1)
let strnum = "1";
let strcopies = "1";
UTSHPRTPrinterHelper.print(strnum, strcopies, (resp) => {
if(resp.flag && resp.result >0) {
// 成功
} else {
// 失败
}
});
- 打印测试页
// 打印测试页
UTSHPRTPrinterHelper.selfTest((resp) => {
if(resp.flag && resp.result >0) {
// 成功
} else {
// 失败
}
});
- 打印图片
// 打印图片
// x_pos:图片起始的 x 坐标。
//y_pos:图片起始的 y 坐标。
// fileObj { type: "url", value: ""}:图片
// fileObj.type: 图片文件类型,取值范围:url、base64
// fileObj.value: 图片文件值
//isNegate:图片反白。 True:正常显示。 False:取反显示。
// isLZO:是否压缩(必须打印机支持压缩功能)。
// Type: 图片算法。 0:二值算法。 1:半色调算法。
let x_pos = "0";
let y_pos = "0";
let fileObj = {
type: "url",
value: "/ssss/sss.png" // 图片路径绝对地址或图片的base64
};
let isNegate = true;
let isLZO = false;
let type = 1;
UTSHPRTPrinterHelper.printImage(x_pos, y_pos, fileObj, isNegate, isLZO, type, (resp) => {
if(resp.flag && resp.result >0) {
// 成功
} else {
// 失败
}
});
- 文本打印,包含一些变体
// 文本打印,包含一些变体
// x_pos:文字起始 x 坐标:
// y_pos:文字起始 y 坐标:
//font:
// 0: Monotye CG Triumvirate Bold Condensed, font width and height is stretchable
// 1: 8 x 12 fixed pitch dot font
// 2: 12 x 20 fixed pitch dot font
// 3: 16 x 24 fixed pitch dot font
// 4: 24 x 32 fixed pitch dot font
// 5: 32 x 48 dot fixed pitch font
// 6: 14 x 19 dot fixed pitch font OCR-B
// 7: 21 x 27 dot fixed pitch font OCR-B
// 8: 14 x25 dot fixed pitch font OCR-A
// 9:只有这个字体能够打印中文。
// Rotation:打印方向。
// 0 : No rotation
// 90 : degrees, in clockwise direction
// 180 : degrees, in clockwise direction
// 270 : degrees, in clockwise direction
// x_multiplication:x 轴方向文字拉伸的倍数(0 号字体和 9 号字体代表字体的真实 大小,单位 px)。
// y_multiplication:y 轴方向文字拉伸的倍数(0 号字体和 9 号字体代表字体的真实 大小,单位 px)。
// Alignment:对齐方式(部分旧机型不支持该功能,可以去掉该参数) 1:左对齐 2:居中 3:右对齐
// code_data:文本数据
let x_pos = "50";
let y_pos = "50";
let font = "9";
let rotation = "0";
let x_multiplication = "1";
let y_multiplication = "1";
let alignment = 2;
let code_data = "厦门汉印电子技术有限公司";
UTSHPRTPrinterHelper.printText(x_pos, y_pos, font, rotation, x_multiplication,
y_multiplication, alignment, code_data, (resp) => {
if(resp.flag && resp.result >0) {
// 成功
} else {
// 失败
}
});
- 打印二维码
// 打印二维码
// rotation:条码方向:
// 0 : No rotation
// 90 : degrees, in clockwise direction
// 180 : degrees, in clockwise direction
// 270 : degrees, in clockwise direction
// x_pos:二维码的起始横坐标。
// y_pos:二维码的起始纵坐标。
// ecc_level:纠错等级
// L : 7%
// M : 15%
// Q : 25%
// H : 30%
// width:宽度:1~10
// Mode:模式
// A: Auto
// M: Manual
// code_data:二维码的数据。
let x_pos = "10";
let y_pos = "10";
let ecc_level = "25%";
let width = "3";
let mode = "A";
let rotation = "0";
let code_data = "http://www.baidu.com";
UTSHPRTPrinterHelper.printQRcode(x_pos, y_pos, ecc_level, width, mode, rotation, code_data,
(resp) => {
if(resp.flag && resp.result >0) {
// 成功
} else {
// 失败
}
});