Commit 1bc9b844229313bc1361716c0889e6e63d2701dd

Authored by 孙向锦
1 parent fd06927d

添加生避字协议

soft/code.dat 0 → 100644
No preview for this file type
海亮定制.md
... ... @@ -35,7 +35,7 @@ C200K基站,采用MQTTå议进行开å‘,基站接入MQTTæœåŠ¡å™¨ï¼Œåº”ç”¨ä
35 35  
36 36 MQTTæœåŠ¡å™¨è¦æ±‚:
37 37  
38   -厂家使用<a href="https://www.emqx.io/get-started" >EMQX </a>进行测试
  38 +厂家使用<a href="https://www.emqx.io/get-started" target="_blank" >EMQX </a>进行测试
39 39  
40 40 能够正常收å‘MQTTæ•°æ®ã€‚
41 41  
... ... @@ -73,7 +73,7 @@ MQTTæœåС噍é…置结果检查
73 73 ![](img/mqtt_4.png)
74 74  
75 75  
76   -æœåС噍IP设置<a href="/Elvis/public/blob/master/soft/SunVote æœåС噍IP设置 1.0.1.2.exe" download>软件下载</a>
  76 +æœåС噍IP设置<a href="/Elvis/public/blob/master/soft/SunVote æœåС噍IP设置 1.0.1.2.exe" target="_blank" >软件下载</a>
77 77  
78 78  
79 79 ## 2.3 应用开å‘
... ... @@ -110,6 +110,7 @@ MQTTæœåС噍é…置结果检查
110 110 | 键盘å‡çº§ | 键盘固件å‡çº§ |
111 111 | æ–‡æœ¬ä¸‹å‘ | æ–‡æœ¬ä¸‹å‘ |
112 112 | 学生å¡ä¿¡æ¯ä¸ŠæŠ¥ | 学生å¡ä¿¡æ¯ä¸ŠæŠ¥ |
  113 +| 下å‘生é¿å­— | 下å‘生é¿å­— |
113 114  
114 115  
115 116 ## 3.2 å议简介
... ... @@ -596,6 +597,92 @@ ${clinetId} clinetId 是基站编å·ï¼Œä¸ºæ›¿æ¢å­—符串。
596 597  
597 598 æ¯åŒ…的数æ®è®¡ç®—,少于1kå³å¯ã€‚
598 599  
  600 +
  601 +### 3.2.5 生é¿å­—检测方法
  602 +
  603 +䏋呿–‡æœ¬ä¿¡æ¯æ—¶ï¼Œéœ€è¦å…ˆæ£€æµ‹ä¸‹å‘的文本内容<br>
  604 +下å‘的内容当中,如果有些字属于生é¿å­—,需è¦åœ¨ä¸šåŠ¡è¿›è¡Œå‰ï¼Œå…ˆæŠŠç”Ÿé¿å­—的字ç ä¸‹å‘给到基站。<br>
  605 +ç›®å‰åŸºç«™æ”¯æŒæœ€å¤šå­˜å‚¨8个生é¿å­—<br> 。
  606 +生é¿å­—字符<a href="/Elvis/public/blob/master/soft/code.dat" target="_blank" >下载</a>
  607 +
  608 +判断字符的GB2312ç¼–ç æ˜¯å¦æ˜¯ç”Ÿé¿å­—,方法:
  609 +
  610 +字符的GB2312ç¼–ç ï¼š
  611 +```java
  612 +
  613 +byte[] inputs = input.getBytes("GB2312"); // 原文内容
  614 +
  615 +```
  616 +
  617 +byte数组转intåž‹
  618 +```java
  619 + public static int bytes2ToInt(byte[] b, int offset) {
  620 + int x = 0;
  621 + if (b.length - offset >= 2) {
  622 + x = (int) (((b[offset ] & 0xff) << 8) | ((b[offset + 1] & 0xff) << 0));
  623 + }
  624 +
  625 + return x;
  626 +}
  627 +```
  628 +
  629 +åˆ¤æ–­è¿™ä¸ªå­—ç¬¦æ˜¯å¦æ˜¯ç”Ÿé¿å­—
  630 +
  631 +```java
  632 + public static boolean isGB2312Font(int code) {
  633 + int GB_H = (code >> 8) & 0xFF;
  634 + int GB_L = code & 0xFF;
  635 +
  636 + if (GB_H < 0xA1 || GB_H > 0xF7) {
  637 + return true;
  638 + } else if (GB_L < 0xA1 || GB_L > 0xFE) {
  639 + return true;
  640 + }
  641 + return false;
  642 +}
  643 +```
  644 +
  645 +获å–这个生é¿å­—的编ç ï¼š
  646 +```
  647 +byte[] inputs = "ç¶©".getBytes("GB2312"); // 原文内容
  648 +int code = bytes2ToInt(inputs,0);
  649 +byte[] result = readFileContent(code,24);
  650 +String hex = bytesToHexString(inputs) + bytesToHexString(result);
  651 +
  652 +public byte[] readFileContent(int start, int len) {
  653 + byte[] buffer = new byte[len];
  654 + try {
  655 + InputStream inputStream = new FileInputStream(new File("path/code.dat"));
  656 + inputStream.skip(start*len);
  657 + inputStream.read(buffer, 0, len);
  658 + inputStream.close();
  659 + } catch (Exception e) {
  660 + e.printStackTrace();
  661 + }
  662 + return buffer;
  663 +}
  664 +
  665 +
  666 + public static String bytesToHexString(byte[] src) {
  667 + StringBuilder stringBuilder = new StringBuilder("");
  668 + if (src == null || src.length <= 0) {
  669 + return stringBuilder.toString();
  670 + }
  671 + for (int i = 0; i < src.length; i++) {
  672 + int v = src[i] & 0xFF;
  673 + String hv = Integer.toHexString(v);
  674 + if (hv.length() < 2) {
  675 + stringBuilder.append(0);
  676 + }
  677 + stringBuilder.append(hv);
  678 + stringBuilder.append("");
  679 + }
  680 + return stringBuilder.toString();
  681 +}
  682 +```
  683 +
  684 +
  685 +
599 686  
600 687 ## 3.3 功能说明
601 688  
... ... @@ -1299,7 +1386,7 @@ public static String bytesToHexString(byte[] src) {
1299 1386 | current |当å‰ç¬¬å‡ åŒ… ,这里分包原则å‚考指令属性m介ç»è¯´æ˜ŽåŠåˆ†åŒ…示例|
1300 1387 | total |一共多少包,这里分包原则å‚考指令属性m介ç»è¯´æ˜ŽåŠåˆ†åŒ…示例 |
1301 1388 | qs |键盘总数 如果是多包,是多包总和 |
1302   -| cmd |下å‘的命令 <br> 1: å§“åä¸‹å‘ <br> 10: 第二行文本 <br> 85: 自判题标题 <br> 87: 清除 |
  1389 +| cmd |下å‘的命令 <br> 1: å§“åä¸‹å‘ <br> 10: 第二行文本 <br> 70: 生é¿å­—,生é¿å­—规则:内容为GB2312çš„hexç¼–ç ï¼Œå…ˆæ˜¯ç”Ÿé¿å­—çš„hexç¼–ç ï¼Œç´§æŽ¥ç€æ˜¯ç”Ÿé¿å­—的字符编ç ï¼Œç”Ÿé¿å­—的字符编ç ä¸º24个字节。一个生é¿å­—是26个字节52个字符(hexç¼–ç ï¼‰ <br> 85: 自判题标题 <br> 87: 清除 |
1303 1390 | text |标题信æ¯ï¼Œä»¥hex:开头添加的内容 内容为GB2312çš„hexç¼–ç  |
1304 1391  
1305 1392  
... ... @@ -1356,7 +1443,7 @@ public static String bytesToHexString(byte[] src) {
1356 1443 | --- | --- |
1357 1444 | i = 61 | 文本下å‘返回 |
1358 1445 | sn |é”®ç›˜å· |
1359   -| cmd |下å‘的命令 <br> 1: å§“åä¸‹å‘ <br> 10: 第二行文本 <br> 85:自判题标题 <br> 87:清除 |
  1446 +| cmd |下å‘的命令 <br> 1: å§“åä¸‹å‘ <br> 10: 第二行文本 <br> 70: 生é¿å­—,生é¿å­—规则(å‚考:生é¿å­—检测方法):内容为GB2312çš„hexç¼–ç ï¼Œå…ˆæ˜¯ç”Ÿé¿å­—çš„hexç¼–ç ï¼Œç´§æŽ¥ç€æ˜¯ç”Ÿé¿å­—的字符编ç ï¼Œç”Ÿé¿å­—的字符编ç ä¸º24个字节。一个生é¿å­—是26个字节52个字符(hexç¼–ç ï¼‰ <br> 85:自判题标题 <br> 87:清除 |
1360 1447 | success | æ˜¯å¦æˆåŠŸã€‚<br> 0 表示æˆåŠŸ <br> -1 失败 <br> -2 基站忙,应用程åºéœ€è¦ç­‰å¾…一段时间å†å‘é€ |
1361 1448  
1362 1449 ### 学生å¡ä¿¡æ¯ä¸ŠæŠ¥
... ... @@ -1382,4 +1469,5 @@ public static String bytesToHexString(byte[] src) {
1382 1469 | c |é”®ç›˜ç¼–å· |
1383 1470 | cv |å›ºä»¶ç‰ˆæœ¬å· |
1384 1471 | hw |ç¡¬ä»¶ç‰ˆæœ¬å· |
1385   -| t | 时间戳 时间戳å•ä½ç§’ 需è¦å…ˆæ ¡æ—¶|
1386 1472 \ No newline at end of file
  1473 +| t | 时间戳 时间戳å•ä½ç§’ 需è¦å…ˆæ ¡æ—¶|
  1474 +
... ...