Commit 1bc9b844229313bc1361716c0889e6e63d2701dd
1 parent
fd06927d
添加生避字协议
Showing
2 changed files
with
93 additions
and
5 deletions
soft/code.dat
0 → 100644
No preview for this file type
海亮定制.md
@@ -35,7 +35,7 @@ C200K基站,采用MQTTå议进行开å‘,基站接入MQTTæœåŠ¡å™¨ï¼Œåº”ç”¨ä | @@ -35,7 +35,7 @@ C200K基站,采用MQTTå议进行开å‘,基站接入MQTTæœåŠ¡å™¨ï¼Œåº”ç”¨ä | ||
35 | 35 | ||
36 | MQTTæœåŠ¡å™¨è¦æ±‚: | 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 | 能够æ£å¸¸æ”¶å‘MQTTæ•°æ®ã€‚ | 40 | 能够æ£å¸¸æ”¶å‘MQTTæ•°æ®ã€‚ |
41 | 41 | ||
@@ -73,7 +73,7 @@ MQTTæœåС噍é…置结果检查 | @@ -73,7 +73,7 @@ MQTTæœåС噍é…置结果检查 | ||
73 |  | 73 |  |
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 | ## 2.3 åº”ç”¨å¼€å‘ | 79 | ## 2.3 åº”ç”¨å¼€å‘ |
@@ -110,6 +110,7 @@ MQTTæœåС噍é…置结果检查 | @@ -110,6 +110,7 @@ MQTTæœåС噍é…置结果检查 | ||
110 | | 键盘å‡çº§ | 键盘固件å‡çº§ | | 110 | | 键盘å‡çº§ | 键盘固件å‡çº§ | |
111 | | æ–‡æœ¬ä¸‹å‘ | æ–‡æœ¬ä¸‹å‘ | | 111 | | æ–‡æœ¬ä¸‹å‘ | æ–‡æœ¬ä¸‹å‘ | |
112 | | å¦ç”Ÿå¡ä¿¡æ¯ä¸ŠæŠ¥ | å¦ç”Ÿå¡ä¿¡æ¯ä¸ŠæŠ¥ | | 112 | | å¦ç”Ÿå¡ä¿¡æ¯ä¸ŠæŠ¥ | å¦ç”Ÿå¡ä¿¡æ¯ä¸ŠæŠ¥ | |
113 | +| 下å‘生é¿å— | 下å‘生é¿å— | | ||
113 | 114 | ||
114 | 115 | ||
115 | ## 3.2 å议简介 | 116 | ## 3.2 å议简介 |
@@ -596,6 +597,92 @@ ${clinetId} clinetId 是基站编å·ï¼Œä¸ºæ›¿æ¢å—符串。 | @@ -596,6 +597,92 @@ ${clinetId} clinetId 是基站编å·ï¼Œä¸ºæ›¿æ¢å—符串。 | ||
596 | 597 | ||
597 | æ¯åŒ…的数æ®è®¡ç®—,少于1kå³å¯ã€‚ | 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 | ## 3.3 功能说明 | 687 | ## 3.3 功能说明 |
601 | 688 | ||
@@ -1299,7 +1386,7 @@ public static String bytesToHexString(byte[] src) { | @@ -1299,7 +1386,7 @@ public static String bytesToHexString(byte[] src) { | ||
1299 | | current |当å‰ç¬¬å‡ 包 ,这里分包原则å‚考指令属性m介ç»è¯´æ˜ŽåŠåˆ†åŒ…示例| | 1386 | | current |当å‰ç¬¬å‡ 包 ,这里分包原则å‚考指令属性m介ç»è¯´æ˜ŽåŠåˆ†åŒ…示例| |
1300 | | total |一共多少包,这里分包原则å‚考指令属性m介ç»è¯´æ˜ŽåŠåˆ†åŒ…示例 | | 1387 | | total |一共多少包,这里分包原则å‚考指令属性m介ç»è¯´æ˜ŽåŠåˆ†åŒ…示例 | |
1301 | | qs |键盘总数 如果是多包,是多包总和 | | 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 | | text |æ ‡é¢˜ä¿¡æ¯ï¼Œä»¥hex:å¼€å¤´æ·»åŠ çš„å†…å®¹ 内容为GB2312çš„hexç¼–ç | | 1390 | | text |æ ‡é¢˜ä¿¡æ¯ï¼Œä»¥hex:å¼€å¤´æ·»åŠ çš„å†…å®¹ 内容为GB2312çš„hexç¼–ç | |
1304 | 1391 | ||
1305 | 1392 | ||
@@ -1356,7 +1443,7 @@ public static String bytesToHexString(byte[] src) { | @@ -1356,7 +1443,7 @@ public static String bytesToHexString(byte[] src) { | ||
1356 | | --- | --- | | 1443 | | --- | --- | |
1357 | | i = 61 | 文本下å‘返回 | | 1444 | | i = 61 | 文本下å‘返回 | |
1358 | | sn |é”®ç›˜å· | | 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 | | success | æ˜¯å¦æˆåŠŸã€‚<br> 0 表示æˆåŠŸ <br> -1 失败 <br> -2 基站忙,应用程åºéœ€è¦ç‰å¾…一段时间å†å‘é€ | | 1447 | | success | æ˜¯å¦æˆåŠŸã€‚<br> 0 表示æˆåŠŸ <br> -1 失败 <br> -2 基站忙,应用程åºéœ€è¦ç‰å¾…一段时间å†å‘é€ | |
1361 | 1448 | ||
1362 | ### å¦ç”Ÿå¡ä¿¡æ¯ä¸ŠæŠ¥ | 1449 | ### å¦ç”Ÿå¡ä¿¡æ¯ä¸ŠæŠ¥ |
@@ -1382,4 +1469,5 @@ public static String bytesToHexString(byte[] src) { | @@ -1382,4 +1469,5 @@ public static String bytesToHexString(byte[] src) { | ||
1382 | | c |é”®ç›˜ç¼–å· | | 1469 | | c |é”®ç›˜ç¼–å· | |
1383 | | cv |å›ºä»¶ç‰ˆæœ¬å· | | 1470 | | cv |å›ºä»¶ç‰ˆæœ¬å· | |
1384 | | hw |ç¡¬ä»¶ç‰ˆæœ¬å· | | 1471 | | hw |ç¡¬ä»¶ç‰ˆæœ¬å· | |
1385 | -| t | 时间戳 时间戳å•ä½ç§’ 需è¦å…ˆæ ¡æ—¶| | ||
1386 | \ No newline at end of file | 1472 | \ No newline at end of file |
1473 | +| t | 时间戳 时间戳å•ä½ç§’ 需è¦å…ˆæ ¡æ—¶| | ||
1474 | + |