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 | 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 |  |
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 | + | ... | ... |