diff --git a/通讯协议-教育新版-基站部分usb json.md b/通讯协议-教育新版-基站部分usb json.md index 7ac48a6..aafe804 100644 --- a/通讯协议-教育新版-基站部分usb json.md +++ b/通讯协议-教育新版-基站部分usb json.md @@ -1,4 +1,7 @@ -[TOC] + + + + # 概述 ### 通信流程 相对usb 64byte传输,json格式命令数据长度大多都是比较长的。使用常规的一问一答的方式效率较低; @@ -162,7 +165,7 @@ usbjson协议 固件升级类流程:完全沿用现有mqtt模式下的固件 - 升级对象(基站,键盘,字库...) - 固件的url地址 - 固件crc32 -usbjson模式下,此处的url 无任何用处; + usbjson模式下,此处的url 无任何用处; - step2: 基站获取文件长度 - usbjson 模式下需要补充协议 - 基站按需获取固件数据段 @@ -170,7 +173,7 @@ usbjson模式下,此处的url 无任何用处; - 基站报告升级完成 - + ### 2.1.1 usbjson固件升级补充协议 @@ -231,12 +234,59 @@ usbjson模式下,此处的url 无任何用处; } ``` +## 2.2 基站心跳 +### 2.2.1 sEvtHeartBeat +- **功能描述**:发送心跳 +- **参数说明** +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|baseSn|string||是|基站的出厂编码| +|data|object|-|是|传送参数的对象| +|+value|string||是|基站心跳周期,单位S, SDK 以此时间\*1.5判断基站是否还在正常运行,基站以此时间\*1.5判断SDK是否还在正常运行 +- **示例代码** +```json +{ + "fun":"sEvtHeartBeat", + "dataTag":"1", + "baseSn":"2024061101", + "data": + { + "value":5 + } +} +``` + + + + + +# 三, **平台sdk与基站通讯加解密流程** + +## 3.1 加密方式 + +加密算法是AES-256,公钥和私钥的长度都是32字节。 + +## 3.2 私钥生成、获取过程 + +1、sdk检测到基站连接,发送通过随机从100组公钥取出的1组公钥(如果获取的公钥是第1组,则通讯不加密,便于调试),加密发送的获取私钥的json数据(长度不大于64字节)。 + +{ + "fun":"getPK", + "dataTag":"1" +} +2、基站收到加密的json数据,遍历从100组公钥取1组公钥来解密,如果能获取到基站连接参数josn数据,则认为接收的数据有效,退出遍历,返回通过解密成功的公钥,来加密含随机生成的私钥的json数据给sdk。私钥PK是通过Base64编码后的字符串。(长度不大于64字节) +{"PK":"345352522345sf23423423QER23TERT2341341232342134134"} +## 3.3 通讯加解密 +要发送的单次数据,通过私钥加密后再发出。 +接收到的单次数据,通过私钥解密后再处理。