/**
|
* @description 接收到打印的队列数组编译模板字符后打印
|
* @param {array} arr 处理的数组
|
* @param {string} ip ip地址
|
* @param {Number} port //端口号
|
* @default 清空打印机缓存+打印黑度+宽+高+8位码Utf-8+速度+打印张数复印张数
|
* @default `N\r\n` +`H8\r\n` + `q560\r\n` + `Q480,35\r\n` + `I8,U,001\r\n` +`S3\r\n` + `W1,1\r\n`
|
* @author A-K
|
* @uniPlatform {
|
* "app": {
|
* "android": {
|
* "osVer": "8.0",
|
* "uniVer": "√",
|
* "unixVer": "3.9.0"
|
* },
|
* "ios": {
|
* "osVer": "0",
|
* "uniVer": "×",
|
* "unixVer": "3.9.0"
|
* }
|
* }
|
* }
|
* @tutorial [多甘范科夫斯基]https://blog.csdn.net/qq_33920944/article/details/144281614?sharetype=blogdetail&sharerId=144281614&sharerefer=PC&sharesource=qq_33920944&spm=1011.2480.3001.8118
|
*/
|
|
// 样式调整demo
|
export const queue = async (arr, ip, port) => {
|
let jsons = ``;
|
|
console.log(arr[0]);
|
console.log(arr[1]);
|
console.log(ip);
|
console.log(port);
|
const printArr = arr;
|
console.log(printArr);
|
|
|
jsons =
|
"! 0 195 200 472 1\r\n" + // 基础偏移量左移5像素
|
"PAGE-WIDTH 545\r\n" + // 页面宽度减少5像素
|
"GAP-SENSE\r\n" +
|
|
// 外框 - 整体左移5像素
|
"BOX -3 2 543 470 2\r\n" +
|
// ==================== 物料条码(第一行)====================
|
"LINE -3 62 425 62 1\r\n" +
|
"T 55 0 8 27 物料条码:\r\n" +
|
|
|
// ==================== 物料编码(第二行)====================
|
"LINE -3 124 543 124 1\r\n" +
|
"T 55 0 8 89 编码:\r\n" +
|
|
|
// ==================== 供应商(第三行)====================
|
"LINE -3 186 543 186 1\r\n" + // 第3条分隔线(间隔62)
|
"T 55 0 8 151 供应商:\r\n" +
|
|
|
// ==================== 物料名称(第四行)====================
|
"LINE -3 248 543 248 1\r\n" + // 第4条分隔线(间隔62)
|
"T 55 0 8 213 名称:\r\n" +
|
|
|
// ==================== 规格型号(第五行)====================
|
"LINE -3 310 543 310 1\r\n" + // 第5条分隔线(间隔62)
|
"T 55 0 8 275 规格:\r\n" +
|
|
|
// ==================== 仓库(第六行)====================
|
"LINE -3 360 543 360 1\r\n" + // 第6条分隔线(移至竖线顶端Y=360)
|
"T 55 0 8 335 仓库:\r\n" +
|
|
|
// ==================== 数量和仓管员(第七行)====================
|
"LINE -3 430 543 430 1\r\n" + // 底部横线(与竖线底端对齐)
|
"T 55 0 8 380 数量:\r\n" + // 文本位置保持
|
"T 55 0 275 380 仓管员:\r\n" + // 文本位置保持
|
|
|
// 中间竖线分隔(范围Y=360-430,与上下横线衔接)
|
"LINE 265 430 265 360 1\r\n" + // 竖线顶端对齐仓库行分隔线
|
|
// ==================== 底部时间信息 ====================
|
"T 55 0 395 440 打印时间\r\n" + // 位置保持
|
"T 55 0 8 440 " + new Date().toLocaleString('zh-CN', { // 时间格式改为年月日时分秒
|
year: 'numeric',
|
month: '2-digit',
|
day: '2-digit',
|
hour: '2-digit',
|
minute: '2-digit',
|
second: '2-digit'
|
}) + "\r\n" +
|
|
|
// ==================== 二维码区域(左移5像素)====================
|
"BOX 425 3 535 113 1\r\n" + // 位置保持
|
"B QR 430 8 M 2 U 5\r\n" + // 位置保持
|
"MA,{zb.物料条码}\r\n" +
|
"ENDQR\r\n" +
|
|
"FORM\r\n" +
|
"PRINT\r\n";
|
|
await printHandle(jsons, ip, port);
|
|
|
};
|
|
// //正式代码
|
// export const queue = async (arr, ip, port) => {
|
// try {
|
// const printArr = arr; // 接收传入的打印指令数组
|
// console.log('当前打印参数:', {
|
// ip,
|
// port
|
// });
|
|
// // 循环处理每一条打印指令
|
// for (const [index, jsons] of printArr.entries()) {
|
// console.log(`正在处理第 ${index + 1} 条打印指令`);
|
// console.debug('打印指令内容:', jsons);
|
|
// // 执行异步打印操作
|
// await printHandle(
|
// jsons, // 动态替换文本
|
// ip,
|
// port
|
// );
|
// }
|
// } catch (error) {
|
// console.error('打印队列执行出错:', error);
|
// throw error; // 向上抛出错误供调用方处理
|
// }
|
// };
|
|
export const queue111 = async (arr, ip, port) => {
|
let jsons = ``;
|
|
console.log(arr[0]);
|
console.log(arr[1]);
|
console.log(ip);
|
console.log(port);
|
const printArr = arr;
|
console.log(printArr)
|
|
printArr.forEach((info) => {
|
console.log("打印一张");
|
console.log(info);
|
//await printHandle(info, ip, port);
|
//await printHandle(jsons, ip, port);
|
});
|
|
// printArr.forEach((info) => {
|
// //以下temp打印模板为pple指令(深圳博思德,支持性一般),指令需要根据实际需要配置
|
// let temp = `N\r\n` + `H8\r\n` + `q560\r\n` + `Q480,16\r\n` + `I8,U,001\r\n` + `S3\r\n` +
|
// `LO41,140,400,3\r\n` +
|
// `T261,170,0,6,1,1,N," ${info.gw.value} ${info.gw.unit}"\r\n` +
|
// `T195,170,0,6,1,1,N,"${info.gw.cn}:"\r\n` +
|
// `T41,170,0,4,1,1,N,"${info.gw.en}"\r\n` +
|
// `T261,210,0,6,1,1,N," ${info.nw.value} ${info.nw.unit}"\r\n` +
|
// `T195,210,0,6,1,1,N,"${info.nw.cn}:"\r\n` +
|
// `T41,210,0,4,1,1,N,"${info.nw.en}"\r\n` +
|
// `T261,250,0,6,1,1,N," ${info.quantity.value} ${info.quantity.unit}"\r\n` +
|
// `T195,250,0,6,1,1,N,"${info.quantity.cn}:"\r\n` +
|
// `T41,250,0,4,1,1,N,"${info.quantity.en}"\r\n` +
|
// `T261,290,0,6,1,1,N," ${info.dimension.value} ${info.dimension.unit}"\r\n` +
|
// `T195,290,0,6,1,1,N,"${info.dimension.cn}:"\r\n` +
|
// `T41,290,0,4,1,1,N,"${info.dimension.en}"\r\n` +
|
// `LO41,325,400,3\r\n` +
|
// `T41,120,0,3,1,1,N,"S/N: ${info.boxDisPlay}"\r\n` +
|
// `T444,444,0,2,1,1,N,"${info.tag}"\r\n` +
|
// `B41,344,0,1,3,3,100,B,"${info.SOID}"\r\n` +
|
// `W1,1\r\n`;
|
// //arr是数组所以可以连续打印只需要字符拼接
|
// jsons += temp;
|
// });
|
// let printCmd = "! 0 400 400 480 1\r\n" +
|
// "PREFEED 0\n\r" +
|
// "POSTFEED 0\n\r" +
|
// "PAGE - WIDTH 640\r\n" +
|
// "GAP-SENSE\r\n" +
|
// "BOX 5 10 620 450 2\r\n" +
|
// "LINE 5 60 620 60 1\r\n" + // 横线1
|
// "LINE 5 110 620 110 1\r\n" + // 横线2
|
// "LINE 5 160 620 160 1\r\n" + // 横线3
|
// "LINE 5 210 620 210 1\r\n" + // 横线4
|
// "LINE 5 260 620 260 1\r\n" + // 横线5
|
// "LINE 120 10 120 260 1\r\n" + // 字段名称右侧竖线
|
// "LINE 240 260 240 450 1\r\n" + // 规格型号左侧竖线
|
// "LINE 285 210 285 450 1\r\n" + // 规格型号右侧竖线
|
// "LINE 410 210 410 260 1\r\n" + // 到货日期右侧竖线
|
// "ENDQR\r\n" +
|
// "FORM\r\n" +
|
// "PRINT\r\n";
|
// jsons = printCmd;
|
|
// // jsons = "! 0 200 200 565 1\r\n" +
|
// // //"PREFEED 10\n\r"+//打印之前走纸距离指令
|
// // //"POSTFEED 19.5\n\r" + //打印之后走纸距离指令
|
// // "PAGE - WIDTH 400\r\n" +
|
// // "BAR - SENSE\r\n" +
|
// // "BOX 10 10 400 565 2\r\n" +
|
// // "LINE 10 60 400 60 1\r\n" +
|
// // "LINE 10 110 400 110 1\r\n" +
|
// // "LINE 10 160 400 160 1\r\n" +
|
// // "LINE 10 210 400 210 1\r\n" +
|
// // "LINE 10 300 400 310 1\r\n" +
|
// // "LINE 10 350 400 360 1\r\n" +
|
|
// // "LINE 10 405 190 415 1\r\n" +
|
// // "LINE 10 460 190 470 1\r\n" +
|
// // "LINE 10 515 190 525 1\r\n" +
|
|
|
// // // "LINE 10 410 400 410 1\r\n" +
|
// // "LINE 130 10 130 350 1\r\n" +
|
// // "LINE 190 350 190 565 1\r\n" +
|
|
// // "TEXT 24 0 15 25 " + '条码' + " " + '001' + "\r\n" + //物料条码
|
// // "TEXT 24 0 15 75 " + '条码' + "\r\n" + //物料名称
|
// // "TEXT 55 0 140 75 " + '条码' + "\r\n" + //物料名称
|
// // "TEXT 24 0 15 125 " + '条码' + " " + '001' + "\r\n" + //物料编码
|
// // "TEXT 24 0 15 175 " + '条码' + " " + '001' + "\r\n" + //图号
|
// // "TEXT 24 0 15 250 " + '条码' + "\r\n" +
|
// // // "TEXT 24 0 15 325 "+strt6+" " + str6 + "\r\n" +
|
// // "TEXT 24 0 15 315 " + '条码' + " " + '001' + "\r\n" +
|
// // "TEXT 55 0 140 218 " + '条码' + "\r\n" +
|
// // "TEXT 55 0 140 238 " + '条码' + "\r\n" +
|
// // "TEXT 55 0 140 258 " + '条码' + "\r\n" +
|
// // "TEXT 55 0 140 272 " + '条码' + "\r\n" +
|
// // "TEXT 24 0 50 365 " + '001' + "\r\n" +
|
// // "TEXT 24 0 40 420 " + '001' + "\r\n" +
|
// // "TEXT 24 0 50 475 " + '001' + "\r\n" +
|
// // "TEXT 24 0 60 530 " + '001' + "\r\n" +
|
|
|
|
// // "B QR 200 360 M 2 U 9\r\n" +
|
// // "MA," + '001' + "\r\n" +
|
// // "ENDQR\r\n" +
|
// // // "B QR 25 285 M 2 U 4\r\n" +
|
// // // "MA," + str8 + "\r\n" +
|
// // // "ENDQR\r\n" +
|
|
// // "FORM\r\n" +
|
// // "PRINT\r\n";
|
|
// jsons = "! 0 200 200 565 1\r\n" +
|
// //"PREFEED 10\n\r"+//打印之前走纸距离指令
|
// //"POSTFEED 19.5\n\r" + //打印之后走纸距离指令
|
// "PAGE - WIDTH 400\r\n" +
|
// "BAR - SENSE\r\n" +
|
// "BOX 10 10 400 565 2\r\n" +
|
// "LINE 10 60 400 60 1\r\n" +
|
// "LINE 10 110 400 110 1\r\n" +
|
// "LINE 10 160 400 160 1\r\n" +
|
// "LINE 10 210 400 210 1\r\n" +
|
// "LINE 10 300 400 310 1\r\n" +
|
// "LINE 10 350 400 360 1\r\n" +
|
|
// "LINE 10 405 190 415 1\r\n" +
|
// "LINE 10 460 190 470 1\r\n" +
|
// "LINE 10 515 190 525 1\r\n" +
|
|
|
// // "LINE 10 410 400 410 1\r\n" +
|
// "LINE 130 10 130 350 1\r\n" +
|
// "LINE 190 350 190 565 1\r\n" +
|
|
// "TEXT 24 0 15 25 " + '条码' + " " + '001' + "\r\n" + //物料条码
|
// "TEXT 24 0 15 75 " + '条码' + "\r\n" + //物料名称
|
// "TEXT 55 0 140 75 " + '条码' + "\r\n" + //物料名称
|
// "TEXT 24 0 15 125 " + '条码' + " " + '001' + "\r\n" + //物料编码
|
// "TEXT 24 0 15 175 " + '条码' + " " + '001' + "\r\n" + //图号
|
// "TEXT 24 0 15 250 " + '条码' + "\r\n" +
|
// // "TEXT 24 0 15 325 "+strt6+" " + str6 + "\r\n" +
|
// "TEXT 24 0 15 315 " + '条码' + " " + '001' + "\r\n" +
|
// "TEXT 55 0 140 218 " + '条码' + "\r\n" +
|
// "TEXT 55 0 140 238 " + '条码' + "\r\n" +
|
// "TEXT 55 0 140 258 " + '条码' + "\r\n" +
|
// "TEXT 55 0 140 272 " + '条码' + "\r\n" +
|
// "TEXT 24 0 50 365 " + '001' + "\r\n" +
|
// "TEXT 24 0 40 420 " + '001' + "\r\n" +
|
// "TEXT 24 0 50 475 " + '001' + "\r\n" +
|
// "TEXT 24 0 60 530 " + '001' + "\r\n" +
|
|
|
|
// "B QR 200 360 M 2 U 9\r\n" +
|
// "MA," + '001' + "\r\n" +
|
// "ENDQR\r\n" +
|
// // "B QR 25 285 M 2 U 4\r\n" +
|
// // "MA," + str8 + "\r\n" +
|
// // "ENDQR\r\n" +
|
|
// "FORM\r\n" +
|
// "PRINT\r\n";
|
// await printHandle(jsons, ip, port);
|
};
|
|
/**
|
* @description Java类调用安卓连接打印机 仅在安卓设备下使用
|
* @param {string} jsons 模板字符
|
* @param {string} ip ip地址
|
* @param {Number} port //端口号
|
*/
|
|
/* export const printHandle = async (jsons, ip, port) => {
|
return new Promise((resolve, reject) => {
|
try {
|
var Socket = plus.android.importClass('java.net.Socket');
|
var PrintWriter = plus.android.importClass('java.io.PrintWriter');
|
var BufferedWriter = plus.android.importClass('java.io.BufferedWriter');
|
var OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter');
|
var BufferedReader = plus.android.importClass('java.io.BufferedReader');
|
var InputStreamReader = plus.android.importClass('java.io.InputStreamReader');
|
var StrictMode = plus.android.importClass('android.os.StrictMode');
|
var Build = plus.android.importClass('android.os.Build');
|
// const ip = '192.168.1.61';
|
// const port = 9100;
|
|
// 安卓9后完全打开构建权限
|
if (Build.VERSION.SDK_INT > 9) {
|
var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
|
StrictMode.setThreadPolicy(policy);
|
}
|
|
var socket = new Socket(`${ip}`, port * 1);
|
console.log(`返回isocket:`, socket);
|
socket.setSoTimeout(5000); // 增加超时时间
|
var inputStreamReader = new InputStreamReader(socket.getInputStream());
|
var socketReader = new BufferedReader(inputStreamReader);
|
var outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(), 'GBK');
|
var bufferWriter = new BufferedWriter(outputStreamWriter);
|
var socketWriter = new PrintWriter(bufferWriter, true);
|
|
socketWriter.println(jsons);
|
var msgBeReceived = socketReader.readLine();
|
console.log(`返回ip:`, ip);
|
console.log(`返回port:`, port);
|
console.log(`返回内容:`, msgBeReceived);
|
resolve(msgBeReceived);
|
} catch (error) {
|
console.error("打印失败", error);
|
reject(error);
|
} finally {
|
if (socket) {
|
socket.close();
|
}
|
}
|
});
|
}; */
|
|
|
export const printHandle = async (jsons, ip, port) => {
|
|
var mac_address = uni.getStorageSync('printMac');
|
console.log('打印开始:'+mac_address)
|
var device = null,
|
BAdapter = null,
|
BluetoothAdapter = null,
|
uuid = null,
|
main = null,
|
bluetoothSocket = null;
|
if (!mac_address) {
|
this.$showMessage('请选择蓝牙打印机');
|
return false;
|
}
|
main = plus.android.runtimeMainActivity();
|
BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
|
let UUID = plus.android.importClass("java.util.UUID");
|
uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
|
BAdapter = BluetoothAdapter.getDefaultAdapter();
|
device = BAdapter.getRemoteDevice(mac_address);
|
plus.android.importClass(device);
|
bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
|
plus.android.importClass(bluetoothSocket);
|
if (!bluetoothSocket.isConnected()) {
|
console.log('检测到设备未连接,尝试连接....');
|
bluetoothSocket.connect();
|
}
|
console.log('设备已连接');
|
if (bluetoothSocket.isConnected()) {
|
var outputStream = bluetoothSocket.getOutputStream();
|
plus.android.importClass(outputStream);
|
let printStr =jsons;
|
var bytes = plus.android.invoke(printStr, 'getBytes', 'gbk');
|
outputStream.write(bytes);
|
outputStream.flush();
|
device = null //这里关键
|
bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误
|
//this.$showMessage('OK');
|
console.log("打印机连接状态:111");
|
return true;
|
} else {
|
//this.$showMessage('NG');
|
console.log("打印机连接状态:222");
|
return false;
|
}
|
|
|
};
|