function printByIds(ids) { // //console.log(ids) // //console.log("2") $.ajax({url: app.API_URL_HEADER + "/XKYDHD/BarInfoDY", data: { "ids": ids, }, DataType: "json", type: "post", async: false, //timeout: 30000, success: function(data) { //console.log(JSON.stringify(data)); //console.log(data.status); if (data.status==0) { // console.log(JSON.stringify(data.data)); try { var printCmd = "" matterTable = data.data.matterTable; for (var i = 0; i < matterTable.length; i++) { var templateNo = matterTable[i].FNO; console.log(matterTable[i]); switch (templateNo) { case "1": printCmd += printTemplate(matterTable[i])+"\r\n"; break; default: mui.alert("获取模板编号失败,请检查数据") return false } } // //console.log("error1"); setTimeout(function() { doPrint(printCmd, 1) }, 1000) } catch (e) { // //console.log("error2"); plus.ui.toast("打印执行异常: " + e) //plus.ui.toast("printErr: " + err) } } else { ////console.log("error3"); //查询失败原因 plus.ui.toast(data.msg); } }, error: function(xhr, type, errorThrown) { plus.ui.toast('打印失败!失败类型是:' + type); } }); } function printTemplate(printData) { try { // console.log(JSON.stringify(printData)); var str1 = printData.STR1 var str2 = printData.STR2 var str3 = printData.STR3 var str4 = printData.STR4 var str5 = printData.STR5 var str6 = printData.STR6 var str8 = printData.STR1 //条码 // var str9 = printData.STR9 // var str10 = printData.STR10 // var str11 = printData.STR11 // var str12 = printData.STR12 var strt1 = printData.STRT1 //第一行 var strt2 = printData.STRT2 //第二行 var strt3 = printData.STRT3 //第三行 var strt4 = printData.STRT4 //第四行 var strt5 = printData.STRT5 //第五行 左 var strt6 = printData.STRT6 //第五行 右 var strt7 = printData.STRT7 var strt9 = printData.STRT9 var str9 = printData.STR9 strt9="物料图号" str9="" var str7_1 = "" //规格型号第一行 var str7_2 = "" //规格型号第二行 var str7_3 = "" //规格型号第三行 var str7_4 = "" //规格型号第四行 if (printData.STR7.length > 18) { str7_1 = printData.STR7.substring(0, 18) if (printData.STR7.length > 36) { str7_2 = printData.STR7.substring(18, 36) if (printData.STR7.length > 54) { str7_3 = printData.STR7.substring(36, 54) str7_4 = printData.STR7.substring(54, 72) } else { str7_3 = printData.STR7.substring(36, printData.STR7.length) } } else { str7_2 = printData.STR7.substring(18, printData.STR7.length) } } else { str7_1 = printData.STR7 } var printCmd = "! 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 "+ strt1 +" " + str1 + "\r\n" + //物料条码 "TEXT 24 0 15 75 "+strt4+"\r\n" + //物料名称 "TEXT 55 0 140 75 "+ str4 + "\r\n" + //物料名称 "TEXT 24 0 15 125 "+strt3+" " + str3 + "\r\n" + //物料编码 "TEXT 24 0 15 175 "+strt9+" " + str9 + "\r\n" + //图号 "TEXT 24 0 15 250 "+strt7+"\r\n" + // "TEXT 24 0 15 325 "+strt6+" " + str6 + "\r\n" + "TEXT 24 0 15 315 "+strt2+" " + str2 + "\r\n" + "TEXT 55 0 140 218 " + str7_1 + "\r\n" + "TEXT 55 0 140 238 " + str7_2 + "\r\n" + "TEXT 55 0 140 258 " + str7_3 + "\r\n" + "TEXT 55 0 140 272 " + str7_4 + "\r\n" + "TEXT 24 0 50 365 " + strt6 + "\r\n" + "TEXT 24 0 40 420 " + str6 + "\r\n" + "TEXT 24 0 50 475 " + strt5 + "\r\n" + "TEXT 24 0 60 530 " + str5 + "\r\n" + "B QR 200 360 M 2 U 9\r\n" + "MA," + str8 + "\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"; return printCmd; } catch (err) { console.log(err); //mui.msg("printErr: " + err) var printCmd = ""; return printCmd; } } function printTemplateold(printData) { try { console.log(JSON.stringify(printData)); var str1 = printData.STR1 var str2 = printData.STR2 var str3 = printData.STR3 var str4 = printData.STR4 var str5 = printData.STR5 var str6 = printData.STR6 var str8 = printData.STR1 //条码 // var str9 = printData.STR9 // var str10 = printData.STR10 // var str11 = printData.STR11 // var str12 = printData.STR12 var strt1 = printData.STRT1 //第一行 var strt2 = printData.STRT2 //第二行 var strt3 = printData.STRT3 //第三行 var strt4 = printData.STRT4 //第四行 var strt5 = printData.STRT5 //第五行 左 var strt6 = printData.STRT6 //第五行 右 var strt7 = printData.STRT7 var str7_1 = "" //规格型号第一行 var str7_2 = "" //规格型号第二行 var str7_3 = "" //规格型号第三行 var str7_4 = "" //规格型号第四行 if (printData.STR7.length > 16) { str7_1 = printData.STR7.substring(0, 16) if (printData.STR7.length > 32) { str7_2 = printData.STR7.substring(16, 32) if (printData.STR7.length > 48) { str7_3 = printData.STR7.substring(32, 48) str7_4 = printData.STR7.substring(48, 64) } else { str7_3 = printData.STR7.substring(32, printData.STR7.length) } } else { str7_2 = printData.STR7.substring(16, printData.STR7.length) } } else { str7_1 = printData.STR7 } var printCmd = "! 0 203 203 400 1\r\n" + //"PREFEED 10\n\r"+//打印之前走纸距离指令 //"POSTFEED 19.5\n\r" + //打印之后走纸距离指令 "PAGE - WIDTH 640\r\n" + "BOX 10 10 610 400 2\r\n" + "LINE 10 60 450 60 1\r\n" + "LINE 10 110 450 110 1\r\n" + "LINE 10 160 610 160 1\r\n" + "LINE 10 210 610 210 1\r\n" + "LINE 10 260 610 260 1\r\n" + "LINE 130 10 130 400 1\r\n" + "LINE 190 260 190 400 1\r\n" + "LINE 320 210 320 260 1\r\n" + "LINE 440 210 440 260 1\r\n" + "LINE 450 10 450 160 1\r\n" + "TEXT 24 0 15 25 "+ strt1 +" " + str1 + "\r\n" + "TEXT 24 0 15 75 "+strt2+" " + str2 + "\r\n" + "TEXT 24 0 15 125 "+strt3+" " + str3 + "\r\n" + "TEXT 24 0 15 175 "+strt4+" " + str4 + "\r\n" + "TEXT 24 0 15 225 "+strt5+" " + str5 + "\r\n" + "TEXT 24 0 330 225 "+strt6+" " + str6 + "\r\n" + "TEXT 24 0 200 265 " + str7_1 + "\r\n" + "TEXT 24 0 200 297 " + str7_2 + "\r\n" + "TEXT 24 0 200 325 " + str7_3 + "\r\n" + "TEXT 24 0 200 353 " + str7_4 + "\r\n" + "TEXT 24 0 145 273 规\r\n" + "TEXT 24 0 145 301 格\r\n" + "TEXT 24 0 145 329 型\r\n" + "TEXT 24 0 145 357 号\r\n" + "B QR 480 30 M 2 U 5\r\n" + "MA," + str8 + "\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"; return printCmd; } catch (err) { // //console.log("printErr:" + err) mui.msg("printErr: " + err) var printCmd = ""; return printCmd; } } function doPrint(printCmd, printNum) { //printNum:打印次数 if (printNum < 3) { //只递归3次 try { ////console.log("打印机连接状态:" + bluetoothSocket.isConnected()) var connectStatus = 0; //连接状态 for (var i = 0; i < 10; i++) { if (!bluetoothSocket.isConnected()) { plus.ui.toast("重新连接"); bluetoothSocket.connect(); } ////console.log("重连次数i"+i) if (bluetoothSocket.isConnected()) { connectStatus = 1; break; } else { continue; } } // //console.log("status:"+connectStatus) if (connectStatus == 1) { var outputStream = bluetoothSocket.getOutputStream(); plus.android.importClass(outputStream); var arrayBuffer = plus.android.invoke(printCmd, 'getBytes', 'gbk'); //stringToByte(printCmd); outputStream.write(arrayBuffer); outputStream.flush(); } else { plus.ui.toast("连接打印机失败") } } catch (e) { printNum++; plus.ui.toast("正在重连打印机第" + printNum + "次:" + e) ////console.log(e) setTimeout(initBluetooth(), 1000) //一连接异常就初始化打印机 setTimeout(function() { doPrint(printCmd, printNum) //重新执行 }, 1000) } } else { //不再回调自身 try { ////console.log("打印机连接状态:" + bluetoothSocket.isConnected()) var connectStatus = 0; //连接状态 for (var i = 0; i < 10; i++) { if (!bluetoothSocket.isConnected()) { plus.ui.toast("重新连接"); bluetoothSocket.connect(); } ////console.log("重连次数i"+i) if (bluetoothSocket.isConnected()) { connectStatus = 1; break; } else { continue; } } if (connectStatus == 1) { var outputStream = bluetoothSocket.getOutputStream(); plus.android.importClass(outputStream); var arrayBuffer = plus.android.invoke(printCmd, 'getBytes', 'gbk'); //stringToByte(printCmd); outputStream.write(arrayBuffer); outputStream.flush(); } else { plus.ui.toast("连接打印机失败") } } catch (e) { printNum++; plus.ui.toast("打印机异常第" + printNum + "次:" + e) ////console.log(e) mui.alert("重连打印机失败,请重新打开页面,初始化打印机。") } } ////console.log(printNum) ////console.log(printCmd) } function initBluetooth() { try { var main = plus.android.runtimeMainActivity(); var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"); var UUID = plus.android.importClass("java.util.UUID"); uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); var BAdapter = BluetoothAdapter.getDefaultAdapter(); BAdapter.cancelDiscovery(); //停止扫描 var address_mac = api_localStorageGet("printMac") ? api_localStorageGet("printMac") : "DC:1D:30:3F:D2:50"; //console.log("status:"+address_mac) device = BAdapter.getRemoteDevice(address_mac); plus.android.importClass(device); bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid); plus.android.importClass(bluetoothSocket); //plus.ui.toast("蓝牙连接成功"); } catch (err) { // //console.log(err); //mui.alert(err) plus.ui.toast("蓝牙连接异常!"); } }