lizijie
2021-09-18 7069042cf6f6484a59c134547f8f8d54bb201662
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
/**
 * Created by bin.shen on 01/04/2017.
 */
 
module.exports.toDec = function(hex) {
    if(typeof hex === 'number') {
        return parseInt(hex);
    }
    return Number('0x' + hex);
};
 
module.exports.padLeft = function(str,length) {
    if(str.toString().length >= length) {
        return str.toString();
    } else {
        return this.padLeft("0"  + str.toString(), length);
    }
};
 
module.exports.get_data_store = function(data, length) {
    data = data.substr(6, length);
    //console.log(data);
    // QN= 开始到 &&
 
    var items = data.match(/CP=&&.*&&/g);
    var data_cp;
    if(items != null && items instanceof Array && items.length > 0) {
        data_cp = items[0];  // CP=&&...&&
        data = data.replace(";" + data_cp, ""); // QN=20181204130444001;ST=31;CN=2061;PW=123456;MN=P5DND7A0392209
        data_cp = data_cp.substr(5, data_cp.length - 7); // 去掉开头 CP=&& 和结尾 &&
    }
    var data_store = {};
    var commands = data.split(";");
    commands.forEach(function (command) {
        var cmds = command.split("=");
        var key = cmds[0];
        var value = cmds[1];
        data_store[key] = value;
    });
    data_store['CP'] = data_cp;
    //console.log(data_store);
    return data_store;
};
 
module.exports.get_cp_data_store = function(data) {
    var data_items = data.split(";"); // [array]
    var data_store = {};
    data_items.forEach(function(data_item) {
        var data_item1s = data_item.split(";");
        data_item1s.forEach(function(data_item1) {
            var data_item2s = data_item1.split(",");
            data_item2s.forEach(function(data_item2) {
                var items = data_item2.split("=");
                var item1 = items[0];
                var item2 = items[1];
                if(item1.endsWith("-Rtd")) {
                    var key = item1.replace("-Rtd", "");
                    data_store[key.toString()] = item2;
                }else{
                    let k = item1;
                    data_store[k.toString()] = item2;
                }
            });
        });
    });
    return data_store;
};
 
module.exports.findNextCommand = function(data) {
    var x = data.indexOf("##");
    var y = data.indexOf("@@");
    if(x == -1) {
        if(y == -1) {
            return "";
        } else {
            return data.substr(y)
        }
    } else {
        if(y == -1) {
            return data.substr(x)
        } else {
            return data.substr(Math.min(x, y))
        }
    }
};
 
module.exports.get_datatime = function (data) {
    let data_items = data.split(";");
    if(data_items[0].startsWith('DataTime')){
        let dt = data_items[0];
        let items = dt.split("=");
        let v = items[1];
        let pattern = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/;
        let data_time = v.replace(pattern, '$1-$2-$3 $4:$5:$6');  // 识别为格式化时间
        let ts = Date.parse(data_time);   // unix timestamp
        return ts;
    }else{
        let ts = Date.parse(new Date());  // current time
        return ts;
    }
};