helper5555.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. return PrintArry(outPut);//C# 转发器专用
  58. return outPut;
  59. }
  60. //触发键盘事件, code表示键盘值
  61. function ExexuteKeyDown(code)
  62. {
  63. var jsonObj = {"data":{"keyCode":code, "type":"keyDown"}};
  64. var json = JSON.stringify(jsonObj);
  65. var sn = "RK3923C1201900139";
  66. return makeFrame(sn, 0, json);
  67. }
  68. //触发鼠标按下事件,x:x坐标, y:y坐标
  69. function ExexuteMouseDown(x, y)
  70. {
  71. var jsonObj = {"data":{"action":0, "count":1, "pointerId":0,"x":x, "y":y}, "type":"0"};
  72. var json = JSON.stringify(jsonObj);
  73. var sn = "RK3923C1201900139";
  74. return makeFrame(sn, 0, json);
  75. }
  76. //触发鼠标移动事件,x:x坐标, y:y坐标
  77. function ExexuteMouseMove(x, y)
  78. {
  79. var jsonObj = {"data":{"action":2, "count":1, "pointerId":0,"x":x, "y":y}, "type":"2"};
  80. var json = JSON.stringify(jsonObj);
  81. var sn = "RK3923C1201900139";
  82. return makeFrame(sn, 0, json);
  83. }
  84. //触发鼠标抬起事件,x:x坐标, y:y坐标
  85. function ExexuteMouseUp(x, y)
  86. {
  87. var jsonObj = {"data":{"action":1, "count":1, "pointerId":0,"x":x, "y":y}, "type":"1"};
  88. var json = JSON.stringify(jsonObj);
  89. var sn = "RK3923C1201900139";
  90. return makeFrame(sn, 0, json);
  91. }
  92. function makeFrameExtend(sn, dataType, body)
  93. {
  94. var index = 0;
  95. var dataLen = body.length;
  96. var frameLen = dataLen + 26;
  97. var outPut = new Uint8Array(frameLen);
  98. outPut[index++] = 0x68;
  99. outPut[index++] = (dataLen & 0xff000000) >> 24;
  100. outPut[index++] = (dataLen & 0x00ff0000) >> 16;
  101. outPut[index++] = (dataLen & 0x0000ff00) >> 8;
  102. outPut[index++] = dataLen & 0x000000ff;
  103. outPut[index++] = 0;//类型为client
  104. //sn号赋值,string转ascii
  105. for( i = 0;i< sn.length;i++)
  106. {
  107. outPut[index++] = sn[i].charCodeAt();
  108. }
  109. outPut[index++] = dataType;//指定数据类型为json
  110. //json string转ascii
  111. for( i = 0;i < body.length;i++)
  112. {
  113. outPut[index++] = body[i];
  114. }
  115. var bccBuffer = outPut.slice(1, frameLen-3 + 1);//忽略协议头和协议尾
  116. outPut[index++] = calBcc(bccBuffer);
  117. outPut[index++] = 0x16;
  118. var str = PrintArry(outPut);
  119. //console.log("打印数组:%s", PrintArry(outPut));
  120. return PrintArry(outPut);
  121. return outPut;
  122. }
  123. //根据报文识别屏幕方向, 0横屏,1竖屏
  124. function CheckScreenDirection(data)
  125. {
  126. if (data[0] == 0 && data[1] == 0 && data[2] == 0 &&data[3] == 1)
  127. {
  128. if (data[4] == 1 && data[5] == 1)
  129. {
  130. if (data[6] == 1)
  131. {
  132. screen = data[7];
  133. return screen;
  134. }
  135. }
  136. }
  137. }
  138. var emptyCount = 0;
  139. function GetEmptyFrame()
  140. {
  141. var emptyFrame = new Uint8Array([0xFF,0xF1,0x50,0x80,0x12,0x5F,0xFC,0x21,0x1A,0xC8,0x01,0x27,0xFC,0xC0,0x00,0x7E,0x03,0x10,0x40,0x63,0x3D,0x77,0xE2,0xB6,0xE3,0x6E,0x00,0x37,0x56,0x78,0xEB,0x70,0xAB,0xC5,0x58,0x08,0x59,0x76,0xF0,0x47,0x3D,0x23,0x6C,0xA6,0x2B,0x59,0x4E,0x9C,0xE0,0x23,0x1C,0x2D,0x74,0xCB,0xE2,0xFC,0x77,0x7D,0x26,0x13,0xC3,0x04,0x40,0x02,0x60,0xF6,0x03,0x20,0x80,0xC7,0x9A,0x11,0x0E,0x9B,0xDA,0xA0,0x84,0x00,0x2A,0x95,0x4A,0x1E,0x74,0xA5,0x40,0x2A,0xCA,0xA8,0xCA,0xF0,0xF2,0x1E,0xA8,0x77,0x86,0xA0,0x62,0x8C,0xB8,0x5F,0xA6,0x67,0xBF,0x0D,0x27,0x8B,0xF9,0x58,0xBD,0xE3,0x2D,0x0C,0xBF,0x48,0x3C,0xFD,0x70,0x78,0x5E,0xA9,0x0B,0x24,0x9C,0x13,0x98,0xA4,0xA0,0x6E,0xCA,0xAA,0x7A,0x88,0xA5,0x0C,0x2E,0x83,0x59,0x02,0x24,0x01,0x41,0x03,0x92,0x10,0x40,0x07])
  142. return emptyFrame;
  143. }
  144. //查询屏幕方向
  145. function GetScreenState()
  146. {
  147. var sn = "RK3923C1201900139";
  148. var outPut = new Uint8Array([0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x02]);
  149. return makeFrameExtend(sn, 5, outPut);
  150. }
  151. //通道配置
  152. function ConfigChannel(sn)
  153. {
  154. var outPut = new Uint8Array([0x07]);
  155. return makeFrameExtend(sn, 6, outPut);
  156. }
  157. //I 帧请求报文生成
  158. function RequestIFrame()
  159. {
  160. var sn = "RK3923C1201900139";
  161. var outPut = new Uint8Array([0x20]);
  162. return makeFrameExtend(sn, 6, outPut);
  163. }