/** * @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(); } } }); };