/**
|
* @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 200 200 200 1\r\n" +
|
// "PAGE - WIDTH 700 \r\n" +
|
// "GAP-SENSE \r\n" +
|
// // "BOX 0 0 700 180 0 \r\n" +
|
// "T 16 0 10 10 物料编码:" + "\r\n" +
|
// "T 55 3 120 10 " + "{itemNo}" + "\r\n" +
|
// "T 16 0 300 10 " + "{itemName1111111111111111}" + "\r\n" +
|
// "T 55 2 10 42 物料规格:" + "\r\n" +
|
// "T 55 2 110 42 " + "{itemModel11111111111111111111111111111}" + "\r\n" +
|
// "T 16 0 10 78 数量:" + "\r\n" +
|
// "T 0 5 90 78 " + "200.102000" + "\r\n" +
|
// "BARCODE 128 1 25 35 350 130 " + 'TM12131ASFASF123456' + "\r\n" +
|
// "T 0 1 350 130 " + "TM12131ASFASF123456" + "\r\n" +
|
// "T 55 0 10 125 创建时间:" + "\r\n" +
|
// "T 55 0 120 125 " + "{2025-05-07 15:55:59}" + "\r\n" +
|
// "T 55 0 10 150 打印时间:" + "\r\n" +
|
// "T 55 0 120 150 " + "{2025-05-07 15:55:59}" + "\r\n" +
|
// //"B QR 500 10 M 1 U 9 \r\n" +
|
// //"MA," + '001' + "\r\n" +
|
// "B QR 580 12 M 2 U 4" + "\r\n" +
|
// "MA," + "TM12345620154" + "\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();
|
}
|
}
|
});
|
};
|