|
@@ -1,125 +1,191 @@
|
|
- //此文件实现将控制命令封装成协议,具体协议内容请看:
|
|
|
|
-//链接:http://note.youdao.com/noteshare?id=dabda6c613adef7a416bd2625cd770a1
|
|
|
|
-
|
|
|
|
|
|
+//此文件实现将控制命令封装成协议,具体协议内容请看:
|
|
|
|
+ //链接:http://note.youdao.com/noteshare?id=dabda6c613adef7a416bd2625cd770a1
|
|
|
|
+
|
|
//bcc校验码计算
|
|
//bcc校验码计算
|
|
//arry: 要计算的数组
|
|
//arry: 要计算的数组
|
|
//返回计算协议中校验位的校验码
|
|
//返回计算协议中校验位的校验码
|
|
- function calBcc(arry)
|
|
|
|
- {
|
|
|
|
- var bcc = 0;
|
|
|
|
- for(i = 0;i < arry.length;i++)
|
|
|
|
- {
|
|
|
|
- bcc ^= arry[i];
|
|
|
|
- }
|
|
|
|
- return bcc;
|
|
|
|
|
|
+ function calBcc(arry) {
|
|
|
|
+ var bcc = 0;
|
|
|
|
+ for (i = 0; i < arry.length; i++) {
|
|
|
|
+ bcc ^= arry[i];
|
|
|
|
+ }
|
|
|
|
+ return bcc;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
//数组打印,调试用
|
|
//数组打印,调试用
|
|
- function PrintArry(data)
|
|
|
|
- {
|
|
|
|
- var str = "";
|
|
|
|
-
|
|
|
|
- for(i = 0;i < data.length;i++)
|
|
|
|
- {
|
|
|
|
- str = str + data[i].toString(16).padStart(2,'0');
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- str = str.toUpperCase();
|
|
|
|
- return str;
|
|
|
|
|
|
+ function PrintArry(data) {
|
|
|
|
+ var str = "";
|
|
|
|
+
|
|
|
|
+ for (i = 0; i < data.length; i++) {
|
|
|
|
+ str = str + data[i].toString(16).padStart(2, '0');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ str = str.toUpperCase();
|
|
|
|
+ return str;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
//sn:板卡sn号,stirng
|
|
//sn:板卡sn号,stirng
|
|
//type:数据类型,数字
|
|
//type:数据类型,数字
|
|
//jsonCmd: json命令
|
|
//jsonCmd: json命令
|
|
//返回值:生成一个Uint8Array,通过websocket发送给板卡
|
|
//返回值:生成一个Uint8Array,通过websocket发送给板卡
|
|
- function makeFrame(sn, dataType, jsonCmd)
|
|
|
|
- {
|
|
|
|
- var index = 0;
|
|
|
|
- var dataLen = jsonCmd.length;
|
|
|
|
- var frameLen = dataLen + 26;
|
|
|
|
- var outPut = new Uint8Array(frameLen);
|
|
|
|
- outPut[index++] = 0x68;
|
|
|
|
- outPut[index++] = (dataLen & 0xff000000) >> 24;
|
|
|
|
- outPut[index++] = (dataLen & 0x00ff0000) >> 16;
|
|
|
|
- outPut[index++] = (dataLen & 0x0000ff00) >> 8;
|
|
|
|
- outPut[index++] = dataLen & 0x000000ff;
|
|
|
|
- outPut[index++] = 0;//类型为client
|
|
|
|
-
|
|
|
|
- //sn号赋值,string转ascii
|
|
|
|
- for( i = 0;i< sn.length;i++)
|
|
|
|
- {
|
|
|
|
- outPut[index++] = sn[i].charCodeAt();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- outPut[index++] = dataType;//指定数据类型为json
|
|
|
|
- //json string转ascii
|
|
|
|
- for( i = 0;i< jsonCmd.length;i++)
|
|
|
|
- {
|
|
|
|
- outPut[index++] = jsonCmd[i].charCodeAt();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- var bccBuffer = outPut.slice(1, frameLen-3 + 1);//忽略协议头和协议尾
|
|
|
|
- outPut[index++] = calBcc(bccBuffer);
|
|
|
|
- outPut[index++] = 0x16;
|
|
|
|
- // console.log("打印数组:%s", PrintArry(outPut));
|
|
|
|
- console.log("数组长度:%d", outPut.length);
|
|
|
|
- //return PrintArry(outPut);
|
|
|
|
- return outPut;
|
|
|
|
|
|
+ function makeFrame(sn, dataType, jsonCmd) {
|
|
|
|
+ var index = 0;
|
|
|
|
+ var dataLen = jsonCmd.length;
|
|
|
|
+ var frameLen = dataLen + 26;
|
|
|
|
+ var outPut = new Uint8Array(frameLen);
|
|
|
|
+ outPut[index++] = 0x68;
|
|
|
|
+ outPut[index++] = (dataLen & 0xff000000) >> 24;
|
|
|
|
+ outPut[index++] = (dataLen & 0x00ff0000) >> 16;
|
|
|
|
+ outPut[index++] = (dataLen & 0x0000ff00) >> 8;
|
|
|
|
+ outPut[index++] = dataLen & 0x000000ff;
|
|
|
|
+ outPut[index++] = 0; //类型为client
|
|
|
|
+
|
|
|
|
+ //sn号赋值,string转ascii
|
|
|
|
+ for (i = 0; i < sn.length; i++) {
|
|
|
|
+ outPut[index++] = sn[i].charCodeAt();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ outPut[index++] = dataType; //指定数据类型为json
|
|
|
|
+ //json string转ascii
|
|
|
|
+ for (i = 0; i < jsonCmd.length; i++) {
|
|
|
|
+ outPut[index++] = jsonCmd[i].charCodeAt();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var bccBuffer = outPut.slice(1, frameLen - 3 + 1); //忽略协议头和协议尾
|
|
|
|
+ outPut[index++] = calBcc(bccBuffer);
|
|
|
|
+ outPut[index++] = 0x16;
|
|
|
|
+ // console.log("打印数组:%s", PrintArry(outPut));
|
|
|
|
+ console.log("数组长度:%d", outPut.length);
|
|
|
|
+ //return PrintArry(outPut);
|
|
|
|
+ return outPut;
|
|
}
|
|
}
|
|
//触发键盘事件, code表示键盘值
|
|
//触发键盘事件, code表示键盘值
|
|
- function ExexuteKeyDown(code,sn)
|
|
|
|
- {
|
|
|
|
- var jsonObj = {"data":{"keyCode":code, "event":"keyDown"}};
|
|
|
|
- var json = JSON.stringify(jsonObj);
|
|
|
|
- console.log("json==================",json);
|
|
|
|
- // var sn = "RK3923C1201900139";
|
|
|
|
- return makeFrame(sn, 0, json);
|
|
|
|
|
|
+ function ExexuteKeyDown(code, sn) {
|
|
|
|
+ var jsonObj = {
|
|
|
|
+ "data": {
|
|
|
|
+ "keyCode": code,
|
|
|
|
+ "event": "keyDown"
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ var json = JSON.stringify(jsonObj);
|
|
|
|
+ console.log("json==================", json);
|
|
|
|
+ // var sn = "RK3923C1201900139";
|
|
|
|
+ return makeFrame(sn, 0, json);
|
|
}
|
|
}
|
|
//触发鼠标按下事件,x:x坐标, y:y坐标
|
|
//触发鼠标按下事件,x:x坐标, y:y坐标
|
|
- function ExexuteMouseDown(x, y,sn)
|
|
|
|
- {
|
|
|
|
- var jsonObj = {"data":{"action":0, "count":1, "pointerId":0,"x":x, "y":y}, "event":"0"};
|
|
|
|
- var json = JSON.stringify(jsonObj);
|
|
|
|
- console.log("json==================",json);
|
|
|
|
- // var sn = "RK3923C1201900139";
|
|
|
|
- return makeFrame(sn, 0, json);
|
|
|
|
|
|
+ function ExexuteMouseDown(x, y, sn) {
|
|
|
|
+ var jsonObj = {
|
|
|
|
+ "data": {
|
|
|
|
+ "action": 0,
|
|
|
|
+ "count": 1,
|
|
|
|
+ "pointerId": 0,
|
|
|
|
+ "x": x,
|
|
|
|
+ "y": y
|
|
|
|
+ },
|
|
|
|
+ "event": "0"
|
|
|
|
+ };
|
|
|
|
+ var json = JSON.stringify(jsonObj);
|
|
|
|
+ console.log("json==================", json);
|
|
|
|
+ // var sn = "RK3923C1201900139";
|
|
|
|
+ return makeFrame(sn, 0, json);
|
|
}
|
|
}
|
|
- //触发鼠标移动事件,x:x坐标, y:y坐标
|
|
|
|
- function ExexuteMouseMove(x, y,sn)
|
|
|
|
- {
|
|
|
|
- var jsonObj = {"data":{"action":2, "count":1, "pointerId":0,"x":x, "y":y}, "event":"2"};
|
|
|
|
- var json = JSON.stringify(jsonObj);
|
|
|
|
- // var sn = "RK3923C1201900139";
|
|
|
|
- return makeFrame(sn, 0, json);
|
|
|
|
|
|
+ //触发鼠标移动事件,x:x坐标, y:y坐标
|
|
|
|
+ function ExexuteMouseMove(x, y, sn) {
|
|
|
|
+ var jsonObj = {
|
|
|
|
+ "data": {
|
|
|
|
+ "action": 2,
|
|
|
|
+ "count": 1,
|
|
|
|
+ "pointerId": 0,
|
|
|
|
+ "x": x,
|
|
|
|
+ "y": y
|
|
|
|
+ },
|
|
|
|
+ "event": "2"
|
|
|
|
+ };
|
|
|
|
+ var json = JSON.stringify(jsonObj);
|
|
|
|
+ // var sn = "RK3923C1201900139";
|
|
|
|
+ return makeFrame(sn, 0, json);
|
|
}
|
|
}
|
|
-
|
|
|
|
- function ExexuteKeyBoard(keycode,sn)
|
|
|
|
- {
|
|
|
|
- var jsonObj = {"data":{"keyCode":keycode.toString()},"event":"keyCode"};
|
|
|
|
- var json = JSON.stringify(jsonObj);
|
|
|
|
- // var sn = "RK3923C1201900139";
|
|
|
|
- return makeFrame(sn, 0, json);
|
|
|
|
|
|
+
|
|
|
|
+ function ExexuteKeyBoard(keycode, sn) {
|
|
|
|
+ var jsonObj = {
|
|
|
|
+ "data": {
|
|
|
|
+ "keyCode": keycode.toString()
|
|
|
|
+ },
|
|
|
|
+ "event": "keyCode"
|
|
|
|
+ };
|
|
|
|
+ var json = JSON.stringify(jsonObj);
|
|
|
|
+ // var sn = "RK3923C1201900139";
|
|
|
|
+ return makeFrame(sn, 0, json);
|
|
}
|
|
}
|
|
-
|
|
|
|
- //触发鼠标抬起事件,x:x坐标, y:y坐标
|
|
|
|
- function ExexuteMouseUp(x, y,sn)
|
|
|
|
- {
|
|
|
|
- var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "event":"1"};
|
|
|
|
- var json = JSON.stringify(jsonObj);
|
|
|
|
- // var sn = "RK3923C1201900139";
|
|
|
|
- return makeFrame(sn, 0, json);
|
|
|
|
|
|
+
|
|
|
|
+ //触发鼠标抬起事件,x:x坐标, y:y坐标
|
|
|
|
+ function ExexuteMouseUp(x, y, sn) {
|
|
|
|
+ var jsonObj = {
|
|
|
|
+ "data": {
|
|
|
|
+ "action": 1,
|
|
|
|
+ "count": 1,
|
|
|
|
+ "pointerId": 0,
|
|
|
|
+ "x": x,
|
|
|
|
+ "y": y
|
|
|
|
+ },
|
|
|
|
+ "event": "1"
|
|
|
|
+ };
|
|
|
|
+ var json = JSON.stringify(jsonObj);
|
|
|
|
+ // var sn = "RK3923C1201900139";
|
|
|
|
+ return makeFrame(sn, 0, json);
|
|
}
|
|
}
|
|
//触发滑动事件
|
|
//触发滑动事件
|
|
- function ExexuteMove(data,sn)
|
|
|
|
- {
|
|
|
|
- // var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "event":"1"};
|
|
|
|
- // var json = JSON.stringify(jsonObj);
|
|
|
|
- // var sn = "RK3923C1201900139";
|
|
|
|
- return makeFrame(sn, 0, data);
|
|
|
|
|
|
+ function ExexuteMove(data, sn) {
|
|
|
|
+ // var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "event":"1"};
|
|
|
|
+ // var json = JSON.stringify(jsonObj);
|
|
|
|
+ // var sn = "RK3923C1201900139";
|
|
|
|
+ return makeFrame(sn, 0, data);
|
|
}
|
|
}
|
|
//示例:
|
|
//示例:
|
|
//var sn = "RK3923C1201900139";
|
|
//var sn = "RK3923C1201900139";
|
|
//var json = "{\"data\":{\"keyCode\":24},\"type\":\"keyDown\"}";
|
|
//var json = "{\"data\":{\"keyCode\":24},\"type\":\"keyDown\"}";
|
|
-// makeFrame(sn, 0, json);
|
|
|
|
-//ExexuteKeyDown()
|
|
|
|
-
|
|
|
|
|
|
+ // makeFrame(sn, 0, json);
|
|
|
|
+ //ExexuteKeyDown()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 加个请求I帧的报文
|
|
|
|
+ function RequestIFrame(sn) {
|
|
|
|
+ console.log('加个请求I帧的报文')
|
|
|
|
+ var outPut = new Uint8Array([0x20])
|
|
|
|
+ return makeFrameExtend(sn, 6, outPut)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function makeFrameExtend(sn, dataType, body) {
|
|
|
|
+ var index = 0
|
|
|
|
+ var dataLen = body.length
|
|
|
|
+ var frameLen = dataLen + 26
|
|
|
|
+ var outPut = new Uint8Array(frameLen)
|
|
|
|
+ outPut[index++] = 0x68
|
|
|
|
+ outPut[index++] = (dataLen & 0xff000000) >> 24
|
|
|
|
+ outPut[index++] = (dataLen & 0x00ff0000) >> 16
|
|
|
|
+ outPut[index++] = (dataLen & 0x0000ff00) >> 8
|
|
|
|
+ outPut[index++] = dataLen & 0x000000ff
|
|
|
|
+ outPut[index++] = 0 // 类型为client
|
|
|
|
+
|
|
|
|
+ // sn号赋值,string转ascii
|
|
|
|
+ for (let i = 0; i < sn.length; i++) {
|
|
|
|
+ outPut[index++] = sn[i].charCodeAt()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ outPut[index++] = dataType // 指定数据类型为json
|
|
|
|
+ // json string转ascii
|
|
|
|
+ for (let i = 0; i < body.length; i++) {
|
|
|
|
+ outPut[index++] = body[i]
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var bccBuffer = outPut.slice(1, frameLen - 3 + 1) // 忽略协议头和协议尾
|
|
|
|
+ outPut[index++] = calBcc(bccBuffer)
|
|
|
|
+ outPut[index++] = 0x16
|
|
|
|
+ return outPut
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function ConfigChannel(sn) {
|
|
|
|
+ var outPut = new Uint8Array([0x07])
|
|
|
|
+ return makeFrameExtend(sn, 6, outPut)
|
|
|
|
+ }
|