helper.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. //此文件实现将控制命令封装成协议,具体协议内容请看:
  2. //链接:http://note.youdao.com/noteshare?id=dabda6c613adef7a416bd2625cd770a1
  3. //bcc校验码计算
  4. //arry: 要计算的数组
  5. //返回计算协议中校验位的校验码
  6. function calBcc(arry)
  7. {
  8. var bcc = 0;
  9. for(i = 0;i < arry.length;i++)
  10. {
  11. bcc ^= arry[i];
  12. }
  13. return bcc;
  14. }
  15. //数组打印,调试用
  16. function PrintArry(data)
  17. {
  18. var str = "";
  19. for(i = 0;i < data.length;i++)
  20. {
  21. str = str + data[i].toString(16).padStart(2,'0');
  22. }
  23. str = str.toUpperCase();
  24. return str;
  25. }
  26. //sn:板卡sn号,stirng
  27. //type:数据类型,数字
  28. //jsonCmd: json命令
  29. //返回值:生成一个Uint8Array,通过websocket发送给板卡
  30. function makeFrame(sn, dataType, jsonCmd)
  31. {
  32. var index = 0;
  33. var dataLen = jsonCmd.length;
  34. var frameLen = dataLen + 26;
  35. var outPut = new Uint8Array(frameLen);
  36. outPut[index++] = 0x68;
  37. outPut[index++] = (dataLen & 0xff000000) >> 24;
  38. outPut[index++] = (dataLen & 0x00ff0000) >> 16;
  39. outPut[index++] = (dataLen & 0x0000ff00) >> 8;
  40. outPut[index++] = dataLen & 0x000000ff;
  41. outPut[index++] = 0;//类型为client
  42. //sn号赋值,string转ascii
  43. for( i = 0;i< sn.length;i++)
  44. {
  45. outPut[index++] = sn[i].charCodeAt();
  46. }
  47. outPut[index++] = dataType;//指定数据类型为json
  48. //json string转ascii
  49. for( i = 0;i< jsonCmd.length;i++)
  50. {
  51. outPut[index++] = jsonCmd[i].charCodeAt();
  52. }
  53. var bccBuffer = outPut.slice(1, frameLen-3 + 1);//忽略协议头和协议尾
  54. outPut[index++] = calBcc(bccBuffer);
  55. outPut[index++] = 0x16;
  56. // console.log("打印数组:%s", PrintArry(outPut));
  57. console.log("数组长度:%d", outPut.length);
  58. //return PrintArry(outPut);
  59. return outPut;
  60. }
  61. //触发键盘事件, code表示键盘值
  62. function ExexuteKeyDown(code)
  63. {
  64. var jsonObj = {"data":{"keyCode":code, "event":"keyDown"}};
  65. var json = JSON.stringify(jsonObj);
  66. console.log("json==================",json);
  67. var sn = "RK3923C1201900139";
  68. return makeFrame(sn, 0, json);
  69. }
  70. //触发鼠标按下事件,x:x坐标, y:y坐标
  71. function ExexuteMouseDown(x, y)
  72. {
  73. var jsonObj = {"data":{"action":0, "count":1, "pointerId":0,"x":x, "y":y}, "event":"0"};
  74. var json = JSON.stringify(jsonObj);
  75. console.log("json==================",json);
  76. var sn = "RK3923C1201900139";
  77. return makeFrame(sn, 0, json);
  78. }
  79. //触发鼠标移动事件,x:x坐标, y:y坐标
  80. function ExexuteMouseMove(x, y)
  81. {
  82. var jsonObj = {"data":{"action":2, "count":1, "pointerId":0,"x":x, "y":y}, "event":"2"};
  83. var json = JSON.stringify(jsonObj);
  84. var sn = "RK3923C1201900139";
  85. return makeFrame(sn, 0, json);
  86. }
  87. function ExexuteKeyBoard(keycode)
  88. {
  89. var jsonObj = {"data":{"keyCode":keycode.toString()},"event":"keyCode"};
  90. var json = JSON.stringify(jsonObj);
  91. var sn = "RK3923C1201900139";
  92. return makeFrame(sn, 0, json);
  93. }
  94. //触发鼠标抬起事件,x:x坐标, y:y坐标
  95. function ExexuteMouseUp(x, y)
  96. {
  97. var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "event":"1"};
  98. var json = JSON.stringify(jsonObj);
  99. var sn = "RK3923C1201900139";
  100. return makeFrame(sn, 0, json);
  101. }
  102. //触发滑动事件
  103. function ExexuteMove(data)
  104. {
  105. // var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "event":"1"};
  106. // var json = JSON.stringify(jsonObj);
  107. var sn = "RK3923C1201900139";
  108. return makeFrame(sn, 0, data);
  109. }
  110. //示例:
  111. //var sn = "RK3923C1201900139";
  112. //var json = "{\"data\":{\"keyCode\":24},\"type\":\"keyDown\"}";
  113. // makeFrame(sn, 0, json);
  114. //ExexuteKeyDown()