快乐的昕的电脑
2025-11-24 19d6d3e4e4d807237fff95bc08dae2a4c00fdced
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
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("蓝牙连接异常!");
    }
}