wenzheng.yang
2023-04-27 31e64e0e144815e6176c1b6b81eae8dc68688570
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
/**此为java中Character类中的方法
 * @param ch
 * @param radix
 */
function digit(ch,radix) {
    var value = -1;
    if (radix >= 2 && radix <= 36) {
        console.log("ch:",ch)
        var val = getProperties(ch);
        console.log("val:",val)
        var kind = val & 0x1F;
        if (kind == 9) {
            value = ch + ((val & 0x3E0) >> 5) & 0x1F;
        }
        else if ((val & 0xC00) == 0x00000C00) {
            // Java supradecimal digit
            value = (ch + ((val & 0x3E0) >> 5) & 0x1F) + 10;
        }
    }
    return (value < radix) ? value : -1;
}
 
function getProperties(ch) {
    var A=new Array();
    var A_DATA = "\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5800\u400F\u5000\u400F\u5800\u400F\u6000\u400F\u5000\u400F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u400F\u5000\u400F\u5000\u400F\u5800\u400F\u6000\u400C\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\u2800"+String.fromCharCode("24")+"\u2800\u601A\u2800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\u6800"+ String.fromCharCode("24")+"\uE800"+ String.fromCharCode("21")+"\uE800"+String.fromCharCode("22")+ "\u6800"+String.fromCharCode("24")+"\u2000"+String.fromCharCode("25")+"\u3800"+String.fromCharCode("24")+"\u2000"+String.fromCharCode("20")+ "\u3800"+String.fromCharCode("24")+ "\u3800"+String.fromCharCode("24")+"\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u3800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+ "\uE800"+String.fromCharCode("25")+"\u6800"+String.fromCharCode("25")+"\uE800"+String.fromCharCode("25")+"\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\x82\u7FE1\x82\u7FE1\x82"
    A_DATA=A_DATA+ "\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\uE800"+ String.fromCharCode("21")+"\u6800"+String.fromCharCode("24")+"\uE800"+String.fromCharCode("22")+ "\u6800"+String.fromCharCode("27")+ "\u6800\u5017\u6800"+String.fromCharCode("27")+ "\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\uE800"+ String.fromCharCode("21")+"\u6800"+String.fromCharCode("25")+"\uE800"+String.fromCharCode("22")+ "\u6800"+String.fromCharCode("25")+"\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800"
    A_DATA=A_DATA+ "\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u3800"+String.fromCharCode("12")+ "\u6800"+String.fromCharCode("24")+"\u2800\u601A\u2800\u601A\u2800\u601A\u2800\u601A\u6800"+ String.fromCharCode("28")+ "\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("27")+ "\u6800"+String.fromCharCode("28")+ String.fromCharCode("0")+"\u7005\uE800"+String.fromCharCode("29")+ "\u6800"+String.fromCharCode("25")+"\u4800\u1010\u6800"+String.fromCharCode("28")+ "\u6800"+String.fromCharCode("27")+ "\u2800"+String.fromCharCode("28")+ "\u2800"+String.fromCharCode("25")+"\u1800\u060B\u1800\u060B\u6800"+String.fromCharCode("27")+ "\u07FD\u7002\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("27")+ "\u1800\u050B"+String.fromCharCode("0")+"\u7005\uE800"+String.fromCharCode("30")+ "\u6800\u080B\u6800\u080B\u6800\u080B\u6800"+String.fromCharCode("24")+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001"
    A_DATA=A_DATA+ "\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u6800"+String.fromCharCode("25")+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u07FD\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u6800"+ String.fromCharCode("25")+"\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u061D\u7002"
    
    // var A_DATA = "\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5800\u400F\u5000\u400F\u5800\u400F\u6000\u400F\u5000\u400F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u400F\u5000\u400F\u5000\u400F\u5800\u400F\u6000\u400C\u6800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u2800"+("24").charCodeAt()+"\u2800\u601A\u2800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u6800"+ ("24").charCodeAt()+"\uE800"+ ("21").charCodeAt()+"\uE800"+("22").charCodeAt()+ "\u6800"+("24").charCodeAt()+"\u2000"+("25").charCodeAt()+"\u3800"+("24").charCodeAt()+"\u2000"+("20").charCodeAt()+ "\u3800"+("24").charCodeAt()+ "\u3800"+("24").charCodeAt()+"\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u3800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+ "\uE800"+("25").charCodeAt()+"\u6800"+("25").charCodeAt()+"\uE800"+("25").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\x82\u7FE1\x82\u7FE1\x82"
    // A_DATA=A_DATA+ "\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\uE800"+ ("21").charCodeAt()+"\u6800"+("24").charCodeAt()+"\uE800"+("22").charCodeAt()+ "\u6800"+("27").charCodeAt()+ "\u6800\u5017\u6800"+("27").charCodeAt()+ "\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\uE800"+ ("21").charCodeAt()+"\u6800"+("25").charCodeAt()+"\uE800"+("22").charCodeAt()+ "\u6800"+("25").charCodeAt()+"\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800"
    // A_DATA=A_DATA+ "\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u3800"+("12").charCodeAt()+ "\u6800"+("24").charCodeAt()+"\u2800\u601A\u2800\u601A\u2800\u601A\u2800\u601A\u6800"+ ("28").charCodeAt()+ "\u6800"+("24").charCodeAt()+"\u6800"+("27").charCodeAt()+ "\u6800"+("28").charCodeAt()+ ("0").charCodeAt()+"\u7005\uE800"+("29").charCodeAt()+ "\u6800"+("25").charCodeAt()+"\u4800\u1010\u6800"+("28").charCodeAt()+ "\u6800"+("27").charCodeAt()+ "\u2800"+("28").charCodeAt()+ "\u2800"+("25").charCodeAt()+"\u1800\u060B\u1800\u060B\u6800"+("27").charCodeAt()+ "\u07FD\u7002\u6800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u6800"+("27").charCodeAt()+ "\u1800\u050B"+("0").charCodeAt()+"\u7005\uE800"+("30").charCodeAt()+ "\u6800\u080B\u6800\u080B\u6800\u080B\u6800"+("24").charCodeAt()+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001"
    // A_DATA=A_DATA+ "\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u6800"+("25").charCodeAt()+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u07FD\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u6800"+ ("25").charCodeAt()+"\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u061D\u7002"
    
    
    
    
    
    // var str="䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ堀䀏倀䀏堀䀏怀䀏倀䀏䠀ဏ䠀ဏ䠀ဏ䠀"
    // str+="ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ倀䀏倀䀏倀䀏堀䀏怀䀌栀栀"
    // str+="⠀⠀怚⠀栀栀栀 㠀 㠀㠀᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉㠀栀"
    // str+="栀栀栀‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡‚"
    // str+="翡‚翡‚翡‚翡‚翡‚翡‚翡‚翡栀栀栀倗栀翢翢翢翢翢翢翢翢"
    // str+="翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢栀栀䠀"
    // str+="ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ倀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ"
    // str+="䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ㠀 栀⠀怚⠀"
    // str+="怚⠀怚⠀怚栀栀栀栀瀅栀䠀တ栀栀⠀⠀᠀؋᠀؋栀߽瀂栀栀栀᠀ԋ瀅"
    // str+="栀ࠋ栀ࠋ栀ࠋ栀‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚"
    // str+="瀁‚瀁‚瀁‚瀁‚瀁‚瀁栀‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁‚瀁߽瀂瀂瀂瀂瀂瀂瀂瀂"
    // str+="瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂栀瀂瀂瀂瀂瀂"
    // str+="瀂瀂؝瀂"
    var data = A_DATA.split("")
    console.log(data,data.length)
    if(data.length != (256 * 2))return
    var i = 0;
    var j = 0;
    while (i < (256 * 2)) {
        var entry = data[i++] << 16;
        A[j++] = entry | data[i++];
    }
    var offset =  ch;
    var props = A[offset];
    // console.log(ch)
    return props;
}
 
/**
 * 16进制的字符串表示转成字节数组
 *
 * @param hexString 16进制格式的字符串            
 * @return 转换后的字节数组
 **/
export function toByteArray(hexString) {
    var byteArray=null;
    hexString=hexString+''
    if(hexString !=null && hexString !="") {
        // console.log(hexString)
        hexString = hexString.replace(/ /g, "");
        byteArray = new Array(hexString.length/2);
        var k = 0;
        for (var i = 0; i < byteArray.length; i++) {//因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先
            var high = parseInt(hexString.charAt(k), 16) & 0xff;
            var low = parseInt(hexString.charAt(k + 1), 16) & 0xff;
            byteArray[i] = high << 4 | low;
            k += 2;
            
        }
    }
    return byteArray;
}
 
export function intToRegisters(v) {
    var registers = new Array();
    registers[0] = 0xff & (v >> 24);
    registers[1] = 0xff & (v >> 16);
    registers[2] = 0xff & (v >> 8);
    registers[3] = 0xff & v;
    return registers;
}
 
/**获取校验码除去包头相加取反*/
export function check_string(byt) {
 
    //字节数组转为16进制字符串/2后的长度
    var size=BinaryToHexString2(byt).length/2;
    var hex_=hex(BinaryToHexString2(byt));
    // console.log(byt)
    // console.log(hex_,BinaryToHexString2(byt))
    //求和
    var sum=0;
    for(var i=0;i<size;i++) {
        sum+=parseInt(hex_[i],16);
    }
 
    //取反转为16进制字符串
    var hex16=((~sum) & 0xFFFF).toString(16)
    
    //字符串的长度
    var lenth=hex16.length;    
 
    var jiaoyan=hexStringToByteArray(hex16.substring(lenth-4, lenth));        
    return jiaoyan;    
}
 
 
/**将字节数组转换为16进制字符串无空格*/
export function BinaryToHexString2(bytes) {
    var hexStr = "0123456789ABCDEF";
    var result = "";
    var hex = "";
    
    for (var b=0 ;b< bytes.length;b++) {
        hex = (hexStr.charAt((bytes[b] & 0xF0) >> 4)).valueOf();
        hex += (hexStr.charAt(bytes[b] & 0x0F)).valueOf();
        result += hex + "";
    }
    return result;
}
 
/**
 * 16进制表示的字符串转换为字节数组
 *
 * @param hexString 16进制表示的字符串
 * @return byte[] 字节数组
 */
export function hexStringToByteArray(hexString) {
    hexString=hexString+''
    hexString = hexString.replace(/ /g, "");
    var len = hexString.length;
    var bytes = new Array(len / 2);
    for (var i = 0; i < len; i += 2) {
        // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节
        bytes[i / 2] = (parseInt(hexString.charAt(i), 16) << 4) + parseInt(hexString.charAt(i+1), 16);
    }
    return bytes;
}
 
/**16进制转为10进制*/
export function decodeHEX(hexs){
    // console.log(hexs)
    hexs='0x'+hexs
    // console.log(hexs)
    var bigint=eval(hexs).toString(16);
    // console.log(bigint)
    var numb=parseInt(bigint);
    // console.log(numb)
    return numb;
}
 
/**将16进制字符串转为hex字符串数组2个字符串一个*/
export function hex(message) {
    var size=message.length/2;        
    var hex_=new Array(size);
    for(var i=0;i<size;i++) {
        hex_[i]=message.substring(i*2, 2+i*2);
    }        
    return hex_;
}
 
/**修改某一个标签的相关
 * @param hz 需要修改的参数
 * @param tagid 需要修改的标签ID
 * @param byt 需要修改的地址*/
export function write_one_taghz(hz,tagid,byt) {
    var buf =new Array(14);
    var buf1 =new Array(10);
    //包头
    buf[0]= 0x55;
    //包头
    buf[1]= 0xAA;
    //指令类型
    buf1[0]=0x08;
 
    //数据长度
    buf1[1]=10;
 
    //ID组数最大为20组
    buf1[2]= 0x01;            
    //参数地址
    buf1[3]=byt;
    
    // buf1[4]=toByteArray((parseInt(tagid)).toString(16))[1];
    // buf1[5]=toByteArray((parseInt(tagid)).toString(16))[0];
    // buf1[6]=toByteArray((parseInt(tagid)).toString(16))[1];
    // buf1[7]=toByteArray((parseInt(tagid)).toString(16))[0];
    // console.log(toByteArray(tagid)[0])
    buf1[4]=toByteArray(tagid)[1];
    buf1[5]=toByteArray(tagid)[0];
    buf1[6]=toByteArray(tagid)[1];
    buf1[7]=toByteArray(tagid)[0];
    
    buf1[8]=intToRegisters(hz)[3];
    buf1[9]=intToRegisters(hz)[2];
    for(var z=0;z<buf1.length;z++) {
        buf[z+2]=buf1[z];
    }
 
    //校验码        
    buf[12]=check_string(buf1)[1];
    buf[13]=check_string(buf1)[0];
    console.log(buf)
    return hex(BinaryToHexString2(buf));
}