1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
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("蓝牙连接异常!");
                }
            }