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 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("蓝牙连接异常!"); } }