Commit 095603e548f16c711489e0407ddf01951dd8c2bd

Authored by 李傲寒
2 parents 6478fde1 ab8c5f32

Merge branch 'master' of http://120.78.57.84/lee/Protocol

通讯协议-B200W-MQTT协议[内部].md
@@ -13,9 +13,61 @@ @@ -13,9 +13,61 @@
13 background-color: yellow; 13 background-color: yellow;
14 } 14 }
15 </style> 15 </style>
  16 +
  17 +<br>
  18 +<br>
  19 +<br>
  20 +
  21 +<div style="text-align: center;font-size: 70px;">
  22 +SunVote B200W <br>MQTT通讯协议
  23 +</div>
  24 +<br>
  25 +<br>
  26 +<br>
  27 +<br>
  28 +<div style="text-align: center;font-size: 30px;">
  29 +Ver 1.0.1
  30 +</div>
  31 +<br>
  32 +<br>
  33 +<br>
  34 +<br>
  35 +<br>
  36 +<br>
  37 +
  38 +<div style="text-align: center;font-size: 30px;">
  39 +长沙中天电子设计开发有限公司
  40 +</div>
  41 +
  42 +<br>
  43 +
  44 +<div style="text-align: center;font-size: 30px;">
  45 +二〇二四年十月
  46 +</div>
  47 +
  48 +<br>
  49 +<br>
  50 +<br>
  51 +<br>
  52 +
  53 +文件控制:
  54 +
  55 +文件名:SunVote B200W MQTT通讯协议
  56 +
  57 +起草人:刘琴
  58 +
  59 +最新版本作者: 刘琴
  60 +<br>
  61 +| 文档版本 | 日期 | 作者 | 版本说明 |
  62 +|---|---|---|---|
  63 +|1.0.1| 2024年10月22日|刘琴|1. 初始版|
  64 +
  65 +<br>
  66 +<br>
  67 +
16 [TOC] 68 [TOC]
17 69
18 -# SunVote B200W_MQTT 接口协议 70 +# SunVote B200W MQTT通讯协议
19 71
20 # 功能说明 72 # 功能说明
21 73
@@ -53,7 +105,7 @@ @@ -53,7 +105,7 @@
53 |fEvtXXX|指令事件 |调用对应指令后返回| 105 |fEvtXXX|指令事件 |调用对应指令后返回|
54 106
55 ## 数据格式约定 107 ## 数据格式约定
56 -- 数据格式统一为**Json**格式,MQTT发送接收消息编码统一为**UTF-8** 108 +- 数据格式统一为**Json**格式,发送接收消息编码统一为**UTF-8**
57 - Json通用格式如下: 109 - Json通用格式如下:
58 110
59 ```json 111 ```json
@@ -115,6 +167,7 @@ @@ -115,6 +167,7 @@
115 ||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|| 167 ||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
116 |组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)| 168 |组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)|
117 ||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)|| 169 ||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
  170 +||读取已被占用信道|[getBsRFIChannel](#getbsrfichannel)|[fEvtBsRFIChannel](#fevtbsrfichannel)||
118 |登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)| 171 |登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)|
119 ||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)|| 172 ||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
120 |登录设置 - 登录密码|获取基站登录密码|[getBsLoginPwd](#getbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)| 173 |登录设置 - 登录密码|获取基站登录密码|[getBsLoginPwd](#getbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)|
@@ -190,7 +243,7 @@ @@ -190,7 +243,7 @@
190 |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)| 243 |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)|
191 ||停止抢答题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)| 244 ||停止抢答题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
192 |待机实时反馈|设置待机实时反馈状态|[setKpStbResponse](#setkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)<br>[sEvtKpRtFeedback](#sevtkprtfeedback)<br>[sEvtKpHandUp](#sevtkphandup)| 245 |待机实时反馈|设置待机实时反馈状态|[setKpStbResponse](#setkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)<br>[sEvtKpRtFeedback](#sevtkprtfeedback)<br>[sEvtKpHandUp](#sevtkphandup)|
193 -||设置待机实时反馈状态|[getKpStbResponse](#getkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)| 246 +||获取待机实时反馈状态|[getKpStbResponse](#getkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)|
194 ### 在线测验 247 ### 在线测验
195 |功能归类|功能|API指令|指令事件| 248 |功能归类|功能|API指令|指令事件|
196 |---|---|---|---| 249 |---|---|---|---|
@@ -472,7 +525,7 @@ @@ -472,7 +525,7 @@
472 参见基站连接变化系统通知 525 参见基站连接变化系统通知
473 526
474 ##### fEvtBsOnlineState 527 ##### fEvtBsOnlineState
475 -- **主题**: <span class="yellowFill">/basestation/mutilBase/receive</span> 528 +- **主题**: <span class="yellowFill">/basestation/multiBase/receive</span>
476 - **功能描述**:基站在线返回基站型号和基站SN 529 - **功能描述**:基站在线返回基站型号和基站SN
477 - **参数说明** 530 - **参数说明**
478 531
@@ -878,6 +931,25 @@ @@ -878,6 +931,25 @@
878 } 931 }
879 } 932 }
880 ``` 933 ```
  934 +
  935 +##### getBsRFIChannel
  936 +- **主题**:/client/\${baseSN}/send
  937 +- **功能描述**:获取已被其他基站占用的信道
  938 +- **参数说明**
  939 +
  940 +|参数名|类型|限制|是否必填|说明|
  941 +|---|---|---|---|---|
  942 +|fun|string|-|是|指令名称|
  943 +|dataTag|string|-|否|数据包标识,可为空字符串|
  944 +
  945 +- **示例代码**
  946 +```json
  947 +{
  948 + "fun":"getBsRFIChannel",
  949 + "dataTag":"1"
  950 +}
  951 +```
  952 +
881 #### 事件 953 #### 事件
882 ##### fEvtBsNetworkMode 954 ##### fEvtBsNetworkMode
883 - **主题**: /basestation/\${baseSN}/receive 955 - **主题**: /basestation/\${baseSN}/receive
@@ -946,6 +1018,39 @@ @@ -946,6 +1018,39 @@
946 } 1018 }
947 } 1019 }
948 ``` 1020 ```
  1021 +
  1022 +##### fEvtBsRFIChannel
  1023 +- **主题**: /basestation/\${baseSN}/receive
  1024 +- **功能描述**:返回其他基站已占用的信道,频点冲突时,可以根据返回结果修改基站信道避开干扰
  1025 +- **参数说明**
  1026 +
  1027 +|参数名|类型|限制|非空|说明|
  1028 +|---|---|---|---|---|
  1029 +|fun|string|-|是|事件名称|
  1030 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1031 +|data|object|-|是|传送参数的对象|
  1032 +|+value|string||是|其他基站已占用的信道,多个信道用英文","分隔,无占用信道返回0|
  1033 +
  1034 +- **示例代码**
  1035 +```json
  1036 +//信道1、2、14已被占用
  1037 +{
  1038 + "fun":"fEvtBsRFIChannel",
  1039 + "dataTag":"1",
  1040 + "data":{
  1041 + "value":"1,2,14"
  1042 + }
  1043 +}
  1044 +//无占用信道
  1045 +{
  1046 + "fun":"fEvtBsRFIChannel",
  1047 + "dataTag":"1",
  1048 + "data":{
  1049 + "value":"0"
  1050 + }
  1051 +}
  1052 +```
  1053 +
949 ##### fEvtBsNfcLogin 1054 ##### fEvtBsNfcLogin
950 - **主题**: /basestation/\${baseSN}/receive 1055 - **主题**: /basestation/\${baseSN}/receive
951 - **功能描述**:返回基站是否允许NFC刷卡 1056 - **功能描述**:返回基站是否允许NFC刷卡
@@ -1037,7 +1142,7 @@ @@ -1037,7 +1142,7 @@
1037 |fun|string|-|是|指令名称| 1142 |fun|string|-|是|指令名称|
1038 |dataTag|string|-|否|数据包标识,可为空字符串| 1143 |dataTag|string|-|否|数据包标识,可为空字符串|
1039 |data|object|-|是|传送参数的对象| 1144 |data|object|-|是|传送参数的对象|
1040 -|+value|string||是|设置的基站登录密码,数字类型,为空代表无需密码登录,最长4位| 1145 +|+value|string||是|设置的基站登录密码,数字类型,最长4位,为空或设为0代表无需密码登录|
1041 1146
1042 - **示例代码** 1147 - **示例代码**
1043 ```json 1148 ```json
@@ -1123,7 +1228,7 @@ @@ -1123,7 +1228,7 @@
1123 |fun|string|-|是|事件名称| 1228 |fun|string|-|是|事件名称|
1124 |dataTag|string|-|否|数据包标识,可传空字符串| 1229 |dataTag|string|-|否|数据包标识,可传空字符串|
1125 |data|object|-|是|传送参数的对象| 1230 |data|object|-|是|传送参数的对象|
1126 -|+value|string||是|基站登录密码| 1231 +|+value|string||是|基站登录密码,返回值为0代表无需密码登录|
1127 1232
1128 - **示例代码** 1233 - **示例代码**
1129 ```json 1234 ```json
@@ -1134,6 +1239,15 @@ @@ -1134,6 +1239,15 @@
1134 "value":"1234" 1239 "value":"1234"
1135 } 1240 }
1136 } 1241 }
  1242 +
  1243 +//无需密码登录
  1244 +{
  1245 + "fun":"fEvtBsLoginPwd",
  1246 + "dataTag":"1",
  1247 + "data":{
  1248 + "value":"0"
  1249 + }
  1250 +}
1137 ``` 1251 ```
1138 ##### fEvtBsLoginState 1252 ##### fEvtBsLoginState
1139 - **主题**: /basestation/\${baseSN}/receive 1253 - **主题**: /basestation/\${baseSN}/receive
@@ -1806,7 +1920,7 @@ @@ -1806,7 +1920,7 @@
1806 |+port|int||是|端口,默认1883| 1920 |+port|int||是|端口,默认1883|
1807 |+userName|string||否|连接服务器的用户名,可不设置| 1921 |+userName|string||否|连接服务器的用户名,可不设置|
1808 |+password|string||否|连接服务器的密码,可不设置| 1922 |+password|string||否|连接服务器的密码,可不设置|
1809 -|+interval|int|>=60|否|基站连接服务器失败后重连的间隔时长,单位秒| 1923 +|+interval|int|>=30|否|基站连接服务器失败后重连的间隔时长,单位秒|
1810 1924
1811 - **示例代码** 1925 - **示例代码**
1812 ```json 1926 ```json
@@ -1818,7 +1932,7 @@ @@ -1818,7 +1932,7 @@
1818 "port":1883, 1932 "port":1883,
1819 "userName":"", 1933 "userName":"",
1820 "password":"", 1934 "password":"",
1821 - "interval":60 1935 + "interval":30
1822 } 1936 }
1823 } 1937 }
1824 ``` 1938 ```
@@ -2083,7 +2197,7 @@ @@ -2083,7 +2197,7 @@
2083 |dataTag|string|-|否|数据包标识,可为空字符串| 2197 |dataTag|string|-|否|数据包标识,可为空字符串|
2084 |data|array|-|是|传送参数的对象数组| 2198 |data|array|-|是|传送参数的对象数组|
2085 |++name|string||是|检测项名称:MCU、RF、FLASH、EEPROM| 2199 |++name|string||是|检测项名称:MCU、RF、FLASH、EEPROM|
2086 -|++state|int||是|检测结果<br>0-功能异常<br>1-功能正常| 2200 +|++state|int||是|检测结果<br>0-功能正常<br>1-功能异常|
2087 2201
2088 - **示例代码** 2202 - **示例代码**
2089 ```json 2203 ```json
@@ -2093,19 +2207,19 @@ @@ -2093,19 +2207,19 @@
2093 "data":[ 2207 "data":[
2094 { 2208 {
2095 "name":"MCU", 2209 "name":"MCU",
2096 - "state":1 2210 + "state":0
2097 }, 2211 },
2098 { 2212 {
2099 "name":"RF", 2213 "name":"RF",
2100 - "state":1 2214 + "state":0
2101 }, 2215 },
2102 { 2216 {
2103 "name":"FLASH", 2217 "name":"FLASH",
2104 - "state":1 2218 + "state":0
2105 }, 2219 },
2106 { 2220 {
2107 "name":"EEPROM", 2221 "name":"EEPROM",
2108 - "state":1 2222 + "state":0
2109 } 2223 }
2110 ] 2224 ]
2111 } 2225 }
@@ -2406,7 +2520,7 @@ @@ -2406,7 +2520,7 @@
2406 |dataTag|string|-|否|数据包标识,可为空字符串| 2520 |dataTag|string|-|否|数据包标识,可为空字符串|
2407 |data|object|-|是|传送参数的对象| 2521 |data|object|-|是|传送参数的对象|
2408 |+keySn|string||是|设置键盘id的键盘SN| 2522 |+keySn|string||是|设置键盘id的键盘SN|
2409 -|+keyId|int||是|键盘编号| 2523 +|+state|string||是|设置是否成功<br>0-设置成功<br>1-设置失败|
2410 2524
2411 - **示例代码** 2525 - **示例代码**
2412 ```json 2526 ```json
@@ -2415,7 +2529,7 @@ @@ -2415,7 +2529,7 @@
2415 "dataTag":"1", 2529 "dataTag":"1",
2416 "data":{ 2530 "data":{
2417 "keySn":"2024021011", 2531 "keySn":"2024021011",
2418 - "keyId":11 2532 + "state":"0"
2419 } 2533 }
2420 } 2534 }
2421 ``` 2535 ```
@@ -3084,7 +3198,7 @@ @@ -3084,7 +3198,7 @@
3084 "dataTag":"1", 3198 "dataTag":"1",
3085 "data": { 3199 "data": {
3086 "keySn":"1479824643", 3200 "keySn":"1479824643",
3087 - "state":"1" 3201 + "state":"0"
3088 } 3202 }
3089 } 3203 }
3090 ``` 3204 ```
@@ -3515,7 +3629,7 @@ @@ -3515,7 +3629,7 @@
3515 3629
3516 - **示例代码** 3630 - **示例代码**
3517 ```json 3631 ```json
3518 -//启用举手反馈 3632 +//获取实时反馈状态
3519 { 3633 {
3520 "fun":"getKpStbResponse", 3634 "fun":"getKpStbResponse",
3521 "dataTag":"1" 3635 "dataTag":"1"
@@ -3580,11 +3694,10 @@ @@ -3580,11 +3694,10 @@
3580 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验| 3694 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
3581 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头| 3695 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
3582 |+questions|array||是|题目详情| 3696 |+questions|array||是|题目详情|
3583 -|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级大题<br><font color="red">最多为三级题号,即最多可以设为x-x-</font>|  
3584 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 | 3697 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
3585 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。| 3698 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
3586 -|++startNo | int||是| 起始题号 |  
3587 -|++count | int||是| 题目数量 | 3699 +|++startNo | string||是| 起始题号,可以为数字+“-”,单级的题号数字范围1-255,如“1”,“1-1”,“1-1-1”,最多只能输入三级<br>mode=0 时有效,mode=1或2时键盘按顺序显示题号|
  3700 +|++count | int||是| 相同参数的连续题目数量, >0 <br>注意:总题数最多支持200题 |
3588 |+simParams|object||否|内部模拟测试参数设置对象| 3701 |+simParams|object||否|内部模拟测试参数设置对象|
3589 |++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]| 3702 |++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|
3590 3703
@@ -3597,10 +3710,10 @@ @@ -3597,10 +3710,10 @@
3597 "dataTag":"1", 3710 "dataTag":"1",
3598 "data":{ 3711 "data":{
3599 "mode": 1, 3712 "mode": 1,
3600 - "examNo": 1, 3713 + "examNo": 0,
3601 "questions": [{ 3714 "questions": [{
3602 "quesType": 1, //单选题 3715 "quesType": 1, //单选题
3603 - "startNo": 1, //题号从1开始 3716 + "startNo": "1", //题号从1开始
3604 "count":10 //连续10题 3717 "count":10 //连续10题
3605 }], 3718 }],
3606 "simParams":{ 3719 "simParams":{
@@ -3617,24 +3730,24 @@ @@ -3617,24 +3730,24 @@
3617 "dataTag":"1", 3730 "dataTag":"1",
3618 "data":{ 3731 "data":{
3619 "mode": 0, 3732 "mode": 0,
3620 - "examNo": 1, 3733 + "examNo": 0,
3621 //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题 3734 //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题
3622 "questions": [{ 3735 "questions": [{
3623 "quesType": 1, //单选题 3736 "quesType": 1, //单选题
3624 - "startNo": 1, //题号从1开始 3737 + "startNo": "1", //题号从1开始
3625 "count":2 //连续2题 3738 "count":2 //连续2题
3626 },{ 3739 },{
3627 "quesType": 2, //多选题 3740 "quesType": 2, //多选题
3628 - "startNo": 3, //题号从3开始 3741 + "startNo": "3", //题号从3开始
3629 "count":2, //连续2题 3742 "count":2, //连续2题
3630 "option":5 3743 "option":5
3631 },{ 3744 },{
3632 "quesType": 1, //数字题 3745 "quesType": 1, //数字题
3633 - "startNo": 5, //题号从5开始 3746 + "startNo": "5", //题号从5开始
3634 "count":1 //连续1题 3747 "count":1 //连续1题
3635 },{ 3748 },{
3636 "quesType": 4, //判断题 3749 "quesType": 4, //判断题
3637 - "startNo": 6, //题号从6开始 3750 + "startNo": "6", //题号从6开始
3638 "count":1 //连续1题 3751 "count":1 //连续1题
3639 }], 3752 }],
3640 "simParams":{ 3753 "simParams":{
@@ -3651,28 +3764,24 @@ @@ -3651,28 +3764,24 @@
3651 "dataTag":"1", 3764 "dataTag":"1",
3652 "data":{ 3765 "data":{
3653 "mode": 0, 3766 "mode": 0,
3654 - "examNo": 1, 3767 + "examNo": 0,
3655 //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题 3768 //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题
3656 - "questions": [{  
3657 - "symbol": "1-", 3769 + "questions": [{
3658 "quesType": 1, //单选题 3770 "quesType": 1, //单选题
3659 - "startNo": 1, //题号从1-1开始 3771 + "startNo": "1-1", //题号从1-1开始
3660 "count":2 //连续2题 3772 "count":2 //连续2题
3661 },{ 3773 },{
3662 - "symbol": "2-",  
3663 "quesType": 2, //多选题 3774 "quesType": 2, //多选题
3664 - "startNo": 1, //题号从2-1开始 3775 + "startNo":"2-1", //题号从2-1开始
3665 "count":2, //连续2题 3776 "count":2, //连续2题
3666 "option":5 3777 "option":5
3667 },{ 3778 },{
3668 - "symbol": "3-",  
3669 "quesType": 3, //数字题 3779 "quesType": 3, //数字题
3670 - "startNo": 1, //题号从3-1开始 3780 + "startNo":"3-1", //题号从3-1开始
3671 "count":1 //连续1题 3781 "count":1 //连续1题
3672 },{ 3782 },{
3673 - "symbol": "4-",  
3674 "quesType": 4, //判断题 3783 "quesType": 4, //判断题
3675 - "startNo": 1, //题号从4-1开始 3784 + "startNo": "4-1", //题号从4-1开始
3676 "count":1 //连续1题 3785 "count":1 //连续1题
3677 }], 3786 }],
3678 "simParams":{ 3787 "simParams":{
@@ -3689,28 +3798,24 @@ @@ -3689,28 +3798,24 @@
3689 "dataTag":"1", 3798 "dataTag":"1",
3690 "data":{ 3799 "data":{
3691 "mode": 0, 3800 "mode": 0,
3692 - "examNo": 1, 3801 + "examNo": 0,
3693 //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题 3802 //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题
3694 "questions": [{ 3803 "questions": [{
3695 - "symbol": "1-1-",  
3696 "quesType": 1, //单选题 3804 "quesType": 1, //单选题
3697 - "startNo": 1, //题号从1-1-1开始 3805 + "startNo": "1-1-1", //题号从1-1-1开始
3698 "count":2 //连续2题 3806 "count":2 //连续2题
3699 },{ 3807 },{
3700 - "symbol": "1-2-",  
3701 "quesType": 2, //多选题 3808 "quesType": 2, //多选题
3702 - "startNo": 1, //题号从1-2-1开始 3809 + "startNo": "1-2-1", //题号从1-2-1开始
3703 "count":2, //连续2题 3810 "count":2, //连续2题
3704 "option":5 3811 "option":5
3705 },{ 3812 },{
3706 - "symbol": "2-1-",  
3707 "quesType": 3, //数字题 3813 "quesType": 3, //数字题
3708 - "startNo": 1, //题号从2-1-1开始 3814 + "startNo": "2-1-1", //题号从2-1-1开始
3709 "count":1 //连续1题 3815 "count":1 //连续1题
3710 },{ 3816 },{
3711 - "symbol": "3-1-",  
3712 "quesType": 4, //判断题 3817 "quesType": 4, //判断题
3713 - "startNo": 1, //题号从3-1-1开始 3818 + "startNo": "3-1-1", //题号从3-1-1开始
3714 "count":1 //连续1题 3819 "count":1 //连续1题
3715 }], 3820 }],
3716 "simParams":{ 3821 "simParams":{
@@ -3727,23 +3832,23 @@ @@ -3727,23 +3832,23 @@
3727 "dataTag":"1", 3832 "dataTag":"1",
3728 "data":{ 3833 "data":{
3729 "mode": 1, 3834 "mode": 1,
3730 - "examNo": 1, 3835 + "examNo": 0,
3731 "questions": [{ 3836 "questions": [{
3732 "quesType": 1, //单选题 3837 "quesType": 1, //单选题
3733 - "startNo": 1, //题号从1开始 3838 + "startNo": "1", //题号从1开始
3734 "count":2 //连续2题 3839 "count":2 //连续2题
3735 },{ 3840 },{
3736 "quesType": 2, //多选题 3841 "quesType": 2, //多选题
3737 - "startNo": 3, //题号从3开始 3842 + "startNo": "3", //题号从3开始
3738 "count":2, //连续2题 3843 "count":2, //连续2题
3739 "option":5 3844 "option":5
3740 },{ 3845 },{
3741 "quesType": 1, //数字题 3846 "quesType": 1, //数字题
3742 - "startNo": 5, //题号从5开始 3847 + "startNo": "5", //题号从5开始
3743 "count":1 //连续1题 3848 "count":1 //连续1题
3744 },{ 3849 },{
3745 "quesType": 4, //判断题 3850 "quesType": 4, //判断题
3746 - "startNo": 6, //题号从6开始 3851 + "startNo": "6", //题号从6开始
3747 "count":1 //连续1题 3852 "count":1 //连续1题
3748 }], 3853 }],
3749 "simParams":{ 3854 "simParams":{
@@ -3760,23 +3865,23 @@ @@ -3760,23 +3865,23 @@
3760 "dataTag":"1", 3865 "dataTag":"1",
3761 "data":{ 3866 "data":{
3762 "mode": 2, 3867 "mode": 2,
3763 - "examNo": 1,  
3764 - "questions": [{ 3868 + "examNo": 0,
  3869 + "questions": [{
3765 "quesType": 1, //单选题 3870 "quesType": 1, //单选题
3766 - "startNo": 1, //题号从1开始 3871 + "startNo": "1", //题号从1开始
3767 "count":2 //连续2题 3872 "count":2 //连续2题
3768 },{ 3873 },{
3769 "quesType": 2, //多选题 3874 "quesType": 2, //多选题
3770 - "startNo": 3, //题号从3开始 3875 + "startNo": "3", //题号从3开始
3771 "count":2, //连续2题 3876 "count":2, //连续2题
3772 "option":5 3877 "option":5
3773 },{ 3878 },{
3774 "quesType": 1, //数字题 3879 "quesType": 1, //数字题
3775 - "startNo": 5, //题号从5开始 3880 + "startNo": "5", //题号从5开始
3776 "count":1 //连续1题 3881 "count":1 //连续1题
3777 },{ 3882 },{
3778 "quesType": 4, //判断题 3883 "quesType": 4, //判断题
3779 - "startNo": 6, //题号从6开始 3884 + "startNo": "6", //题号从6开始
3780 "count":1 //连续1题 3885 "count":1 //连续1题
3781 }], 3886 }],
3782 "simParams":{ 3887 "simParams":{
@@ -3931,11 +4036,10 @@ @@ -3931,11 +4036,10 @@
3931 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头| 4036 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
3932 |+questions|array||是|题目详情| 4037 |+questions|array||是|题目详情|
3933 |++subject | int||是 | 科目序号,1-9,对应键盘中内置的科目1-9<br>键盘答题时可选择科目切换答题| 4038 |++subject | int||是 | 科目序号,1-9,对应键盘中内置的科目1-9<br>键盘答题时可选择科目切换答题|
3934 -|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级题目<br><font color="red">多科测验题目编号最多只能两级(即symbol可设置为空或x-),超出无效</font>|  
3935 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 | 4039 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
3936 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。| 4040 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
3937 -|++startNo | int||是| 起始题号 |  
3938 -|++count | int||是| 题目数量 | 4041 +|++startNo | string||是| 起始题号,可以为数字+“-”,单级的题号数字范围1-255,如“1”,“1-1”,最多支持两级题号<br>mode=0 时有效,mode=1或2时键盘按顺序显示题号|
  4042 +|++count | int||是| 相同参数的连续题目数量, >0 <br>注意:所有科目的总题数最多支持200题|
3939 |+simParams|object||否|内部模拟测试参数设置对象| 4043 |+simParams|object||否|内部模拟测试参数设置对象|
3940 |++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]| 4044 |++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|
3941 4045
@@ -3951,30 +4055,27 @@ @@ -3951,30 +4055,27 @@
3951 "questions": [{ 4055 "questions": [{
3952 "subject":1, //科目1 4056 "subject":1, //科目1
3953 //题号1-1 到1-10 共10题单选 4057 //题号1-1 到1-10 共10题单选
3954 - "symbol": "1-",  
3955 "quesType": 1, 4058 "quesType": 1,
3956 - "startNo": 1, 4059 + "startNo": "1-1",
3957 "count":10 4060 "count":10
3958 }, { 4061 }, {
3959 "subject":2, //科目2 4062 "subject":2, //科目2
3960 //题号2-2和2-3共两题 多选题,5个选项 4063 //题号2-2和2-3共两题 多选题,5个选项
3961 - "symbol": "2-",  
3962 "quesType": 2, 4064 "quesType": 2,
3963 "option": 5, 4065 "option": 5,
3964 - "startNo": 2, 4066 + "startNo": "2-2",
3965 "count":2 4067 "count":2
3966 }, { 4068 }, {
3967 "subject":3, //科目3 4069 "subject":3, //科目3
3968 //题号3-1和3-2共两道数字题 4070 //题号3-1和3-2共两道数字题
3969 - "symbol": "3-",  
3970 "quesType": 3, 4071 "quesType": 3,
3971 - "startNo": 1, 4072 + "startNo": "3-1",
3972 "count":2 4073 "count":2
3973 }, { 4074 }, {
3974 "subject":1, //科目1 4075 "subject":1, //科目1
3975 //题号4和5 ,判断题 4076 //题号4和5 ,判断题
3976 "quesType": 4, 4077 "quesType": 4,
3977 - "startNo": 4, 4078 + "startNo": "4",
3978 "count":2 4079 "count":2
3979 }], 4080 }],
3980 "simParams":{ 4081 "simParams":{
@@ -3994,7 +4095,7 @@ @@ -3994,7 +4095,7 @@
3994 "subject":1, 4095 "subject":1,
3995 //Q1-Q20,单选题 4096 //Q1-Q20,单选题
3996 "quesType": 1, 4097 "quesType": 1,
3997 - "startNo": 1, 4098 + "startNo": "1",
3998 "count":20 4099 "count":20
3999 }], 4100 }],
4000 "simParams":{ 4101 "simParams":{
@@ -4014,7 +4115,7 @@ @@ -4014,7 +4115,7 @@
4014 "subject":1, 4115 "subject":1,
4015 //题1-题20,单选题 4116 //题1-题20,单选题
4016 "quesType": 1, 4117 "quesType": 1,
4017 - "startNo": 1, 4118 + "startNo": "1",
4018 "count":20 4119 "count":20
4019 }], 4120 }],
4020 "simParams":{ 4121 "simParams":{
@@ -4058,7 +4159,7 @@ @@ -4058,7 +4159,7 @@
4058 #### 方法 4159 #### 方法
4059 ##### startKpScoreInput 4160 ##### startKpScoreInput
4060 - **主题**:/client/\${baseSN}/send 4161 - **主题**:/client/\${baseSN}/send
4061 -- **功能描述**:启动标准测验 4162 +- **功能描述**:启动自主录分
4062 - **参数说明** 4163 - **参数说明**
4063 4164
4064 |参数名|类型|限制|是否必填|说明| 4165 |参数名|类型|限制|是否必填|说明|
@@ -4071,8 +4172,8 @@ @@ -4071,8 +4172,8 @@
4071 |+questions|array||是|题目详情| 4172 |+questions|array||是|题目详情|
4072 |++max |int||是|可输入的最大值,<=100| 4173 |++max |int||是|可输入的最大值,<=100|
4073 |++digits|int||是|可输入的小数位数,范围0-2| 4174 |++digits|int||是|可输入的小数位数,范围0-2|
4074 -|++startNo | int||是| 起始题号|  
4075 -|++count | int||是| 题目数量| 4175 +|++startNo | string||是| 起始题号,暂只支持一级题号,范围1-255|
  4176 +|++count | int||是| 相同参数的题目数量,>0<br>注意:总题数最多支持200题|
4076 4177
4077 - **示例代码** 4178 - **示例代码**
4078 ```json 4179 ```json
@@ -4086,13 +4187,13 @@ @@ -4086,13 +4187,13 @@
4086 //题号1 到 2 共2题,单题满分10分 4187 //题号1 到 2 共2题,单题满分10分
4087 "max":10, 4188 "max":10,
4088 "digits":1, 4189 "digits":1,
4089 - "startNo": 1, 4190 + "startNo": "1",
4090 "count":2 4191 "count":2
4091 }, { 4192 }, {
4092 //题号3到6 共4道题,单题满分5 4193 //题号3到6 共4道题,单题满分5
4093 "max":5, 4194 "max":5,
4094 "digits":0, 4195 "digits":0,
4095 - "startNo": 3, 4196 + "startNo": "3",
4096 "count":4 4197 "count":4
4097 }] 4198 }]
4098 } 4199 }
通讯协议-B200W-MQTT协议[外].md
@@ -13,10 +13,61 @@ @@ -13,10 +13,61 @@
13 background-color: yellow; 13 background-color: yellow;
14 } 14 }
15 </style> 15 </style>
16 -# SunVote B200W MQTT通讯协议 16 +
  17 +<br>
  18 +<br>
  19 +<br>
  20 +
  21 +<div style="text-align: center;font-size: 70px;">
  22 +SunVote B200W <br>MQTT通讯协议
  23 +</div>
  24 +<br>
  25 +<br>
  26 +<br>
  27 +<br>
  28 +<div style="text-align: center;font-size: 30px;">
  29 +Ver 1.0.1
  30 +</div>
  31 +<br>
  32 +<br>
  33 +<br>
  34 +<br>
  35 +<br>
  36 +<br>
  37 +
  38 +<div style="text-align: center;font-size: 30px;">
  39 +长沙中天电子设计开发有限公司
  40 +</div>
  41 +
  42 +<br>
  43 +
  44 +<div style="text-align: center;font-size: 30px;">
  45 +二〇二四年十月
  46 +</div>
  47 +
  48 +<br>
  49 +<br>
  50 +<br>
  51 +<br>
  52 +
  53 +文件控制:
  54 +
  55 +文件名:SunVote B200W MQTT通讯协议
  56 +
  57 +起草人:刘琴
  58 +
  59 +最新版本作者: 刘琴
  60 +<br>
  61 +| 文档版本 | 日期 | 作者 | 版本说明 |
  62 +|---|---|---|---|
  63 +|1.0.1| 2024年10月22日|刘琴|1. 初始版|
  64 +
  65 +<br>
  66 +<br>
17 67
18 [TOC] 68 [TOC]
19 69
  70 +# SunVote B200W MQTT通讯协议
20 # 功能说明 71 # 功能说明
21 72
22 ## 主题说明 73 ## 主题说明
@@ -47,8 +98,9 @@ @@ -47,8 +98,9 @@
47 |fEvtXXX|指令事件 |调用对应指令后返回| 98 |fEvtXXX|指令事件 |调用对应指令后返回|
48 99
49 ## 数据格式约定 100 ## 数据格式约定
50 -- 数据格式统一为**Json**格式,MQTT发送接收消息编码统一为**UTF-8** 101 +- 数据格式统一为**Json**格式,发送接收消息编码统一为**UTF-8**
51 - Json通用格式如下: 102 - Json通用格式如下:
  103 +
52 ```json 104 ```json
53 { 105 {
54 "fun":"xxx", 106 "fun":"xxx",
@@ -69,6 +121,23 @@ @@ -69,6 +121,23 @@
69 121
70 122
71 ## 功能速查一览表 123 ## 功能速查一览表
  124 +### 公共方法
  125 +可以在多种业务中调用的通用方法
  126 +|功能归类|功能|API指令|指令/系统事件|
  127 +|---|---|---|---|
  128 +|停止投票|可停止通过调用startXXX启动的答题业务|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)||
  129 +
  130 +### 公共事件
  131 +无需调用指令,自动返回的事件
  132 +|功能归类|功能|API指令|指令/系统事件|
  133 +|---|---|---|---|
  134 +|公共事件|指令接收状态|-|[sEvtStateCode](#sevtstatecode)|
  135 +|公共事件|基站连接状态变化|-|[sEvtBsConnectState](#sevtbsconnectstate)|
  136 +|公共事件|基站信道冲突|-|[sEvtBsChannelConflict](#sevtbschannelconflict)|
  137 +|公共事件|键盘上线通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  138 +|公共事件|键盘刷卡事件|-|[sEvtBsNfcResults](#sevtbsnfcresults)|
  139 +|公共事件|键盘待机实时按键反馈|-|[sEvtKpRtFeedback](#sevtkprtfeedback)|
  140 +
72 ### 基站管理 141 ### 基站管理
73 |功能归类|功能|API指令|指令/系统事件| 142 |功能归类|功能|API指令|指令/系统事件|
74 |---|---|---|---| 143 |---|---|---|---|
@@ -79,15 +148,19 @@ @@ -79,15 +148,19 @@
79 |键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|| 148 |键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)||
80 |识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)| 149 |识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)|
81 |识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)| 150 |识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)|
  151 +|组网设置 - 组网模式|获取基站组网模式|[getBsNetworkMode](#getbsnetworkmode)|[fEvtBsNetworkMode](#fevtbsnetworkmode)|
82 |组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)| 152 |组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
83 |组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)| 153 |组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|
84 ||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|| 154 ||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
85 |组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)| 155 |组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)|
86 ||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)|| 156 ||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
  157 +||读取已被占用信道|[getBsRFIChannel](#getbsrfichannel)|[fEvtBsRFIChannel](#fevtbsrfichannel)||
87 |登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)| 158 |登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)|
88 ||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)|| 159 ||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
89 -|键盘统一设置 - 键盘语言|获取键盘语言|[getBsKpLanguage](#getbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|  
90 -||设置键盘语言|[setBsKpLanguage](#setbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|| 160 +|登录设置 - 登录密码|获取基站登录密码|[getBsLoginPwd](#getbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)|
  161 +||设置基站登录密码|[setBsLoginPwd](#setbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)||
  162 +|登录设置 - 基站登录状态|获取基站登录状态|[getBsLoginState](#getbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)|
  163 +||设置基站登录状态|[setBsLoginState](#setbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)||
91 |配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)| 164 |配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
92 ||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)| 165 ||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)|
93 |白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)| 166 |白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)|
@@ -95,6 +168,8 @@ @@ -95,6 +168,8 @@
95 ||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsWhitelist](#fevtbswhitelist)| 168 ||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
96 ||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtAddBsWhitelist](#fevtaddbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)| 169 ||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtAddBsWhitelist](#fevtaddbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
97 ||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtDelBsWhitelist](#fevtdelbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)| 170 ||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtDelBsWhitelist](#fevtdelbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
  171 +|基站加密 - 软件狗|获取基站软件狗|[getBsSoftwareKey](#getbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
  172 +||设置基站软件狗|[setBsSoftwareKey](#setbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
98 |网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)| 173 |网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
99 ||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|| 174 ||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
100 |网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)| 175 |网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
@@ -115,7 +190,7 @@ @@ -115,7 +190,7 @@
115 |功能归类|功能|API指令|指令事件| 190 |功能归类|功能|API指令|指令事件|
116 |---|---|---|---| 191 |---|---|---|---|
117 |同步签到|启动同步签到|[startKpSignIn](#startkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)| 192 |同步签到|启动同步签到|[startKpSignIn](#startkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
118 -||停止同步签到|[stopKpSignIn](#stopkpsignin)|[sEvtStateCode](#sevtstatecode)| 193 +||停止同步签到|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
119 |随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)| 194 |随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
120 ||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)| 195 ||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)|
121 ||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpLoginAllowed](#fevtkploginallowed)| 196 ||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpLoginAllowed](#fevtkploginallowed)|
@@ -123,19 +198,44 @@ @@ -123,19 +198,44 @@
123 |功能归类|功能|API指令|指令事件| 198 |功能归类|功能|API指令|指令事件|
124 |---|---|---|---| 199 |---|---|---|---|
125 |判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQATrueFalse](#fevtqatruefalse)| 200 |判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQATrueFalse](#fevtqatruefalse)|
126 -||停止判断题答题|[stopQATrueFalse](#stopqatruefalse)|[sEvtStateCode](#sevtstatecode)| 201 +||停止判断题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
127 |选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAChoice](#fevtqachoice)| 202 |选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAChoice](#fevtqachoice)|
128 -||停止选择题答题|[stopQAChoice](#stopqachoice)|[sEvtStateCode](#sevtstatecode)| 203 +||停止选择题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
129 |数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQANum](#fevtqanum)| 204 |数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQANum](#fevtqanum)|
130 -||停止数字题答题|[stopQANum](#stopqanum)|[sEvtStateCode](#sevtstatecode)| 205 +||停止数字题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
131 |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)| 206 |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)|
132 -||停止抢答题答题|[stopQAQuicker](#stopqaquicker)|[sEvtStateCode](#sevtstatecode)| 207 +||停止抢答题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  208 +|待机实时反馈|设置待机实时反馈状态|[setKpStbResponse](#setkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)<br>[sEvtKpRtFeedback](#sevtkprtfeedback)|
  209 +||获取待机实时反馈状态|[getKpStbResponse](#getkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)|
133 ### 在线测验 210 ### 在线测验
134 |功能归类|功能|API指令|指令事件| 211 |功能归类|功能|API指令|指令事件|
135 |---|---|---|---| 212 |---|---|---|---|
136 |标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)| 213 |标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
137 -||停止标准测验|[stopKpExam](#stopkpexam)|[sEvtStateCode](#sevtstatecode)| 214 +||停止标准测验|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
138 ||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)<br>[fEvtFinalSubmit](#fevtfinalsubmit)| 215 ||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  216 +|多科测验|启动多科测验|[startKpMultiExam](#startkpmultiexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  217 +||停止标准测验|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  218 +|自主录分|启动自主录分|[startKpScoreInput](#startkpscoreinput)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpScore](#fevtkpscore)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  219 +||停止自主录分|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  220 +
  221 +## 公共方法
  222 +### stopKpVote
  223 +- **主题**: /client/\${baseSN}/send
  224 +- **功能描述**:通用停止键盘答题方法,可以停止如同步签到、按键反馈、在线测验中调用startXXX方法启动的业务
  225 +- **参数说明**
  226 +
  227 +|参数名|类型|限制|非空|说明|
  228 +|-----|-----|-----|-----|-----|
  229 +|fun|string|-|是|事件类型|
  230 +|dataTag|string||否|数据包标识,不需要时可传空字符串|
  231 +
  232 +- **示例代码**
  233 +```json
  234 +{
  235 + "fun":"stopKpVote",
  236 + "dataTag":"1"
  237 +}
  238 +```
139 239
140 ## 公共事件 240 ## 公共事件
141 ### sEvtBsConnectState 241 ### sEvtBsConnectState
@@ -146,7 +246,7 @@ @@ -146,7 +246,7 @@
146 |参数名|类型|限制|非空|说明| 246 |参数名|类型|限制|非空|说明|
147 |-----|-----|-----|-----|-----| 247 |-----|-----|-----|-----|-----|
148 |fun|string|-|是|事件类型| 248 |fun|string|-|是|事件类型|
149 -|dataTag|string|-|否|数据包标识,不需要时可传空字符串| 249 +|dataTag|string||否|数据包标识,不需要时可传空字符串|
150 |data|object|-|是|传送参数的对象| 250 |data|object|-|是|传送参数的对象|
151 |+baseModel|int||否|基站的型号码| 251 |+baseModel|int||否|基站的型号码|
152 |+modelName|string||否|基站的型号名称| 252 |+modelName|string||否|基站的型号名称|
@@ -208,6 +308,7 @@ @@ -208,6 +308,7 @@
208 |dataTag|string|-|否|数据包标识,不需要时可传空字符串| 308 |dataTag|string|-|否|数据包标识,不需要时可传空字符串|
209 |data|object|-|是|传送参数的对象| 309 |data|object|-|是|传送参数的对象|
210 |+keySn|string||是|刷卡的键盘SN| 310 |+keySn|string||是|刷卡的键盘SN|
  311 +|+cardType|int||是|刷卡的键盘类型<br>1-NFC类型<br>2-M1类型|
211 |+value|int||是|刷卡的状态<br>1-成功<br>2-失败| 312 |+value|int||是|刷卡的状态<br>1-成功<br>2-失败|
212 313
213 - **示例代码** 314 - **示例代码**
@@ -216,7 +317,8 @@ @@ -216,7 +317,8 @@
216 "fun":"sEvtBsNfcResults", 317 "fun":"sEvtBsNfcResults",
217 "dataTag":"1", //不需要时可传空字符串 318 "dataTag":"1", //不需要时可传空字符串
218 "data":{ 319 "data":{
219 - "keySn":"1234567890", 320 + "keySn":"1234567890",
  321 + "cardType":1,
220 "value":1 322 "value":1
221 } 323 }
222 } 324 }
@@ -248,6 +350,34 @@ @@ -248,6 +350,34 @@
248 } 350 }
249 } 351 }
250 ``` 352 ```
  353 +### sEvtKpRtFeedback
  354 +- **主题**: /basestation/\${baseSN}/receive
  355 +- **功能描述**:开启键盘实时反馈后,键盘按键时上报
  356 +- **参数说明**
  357 +
  358 +|参数名|类型|限制|非空|说明|
  359 +|---|---|---|---|---|
  360 +|fun|string|-|是|事件名称|
  361 +|dataTag|string|-|否|数据包标识|
  362 +|data|array|-|是|传送参数的对象数组|
  363 +|++keySn|string||是|键盘SN|
  364 +|++keyValue|string||是|键盘提交的按键值|
  365 +|++voltage|double||是|键盘电量|
  366 +|++retryCount|int||是|键盘提交数据的重发次数|
  367 +
  368 +- **示例代码**
  369 +```json
  370 +{
  371 + "fun":"sEvtKpRtFeedback",
  372 + "dataTag":"1",
  373 + "data":[{
  374 + "keySn":"1234567890",
  375 + "keyValue":"A",
  376 + "voltage":2.6,
  377 + "retryCount":1
  378 + }]
  379 +}
  380 +```
251 ### sEvtStateCode 381 ### sEvtStateCode
252 - **主题**: /basestation/\${baseSN}/receive 382 - **主题**: /basestation/\${baseSN}/receive
253 - **功能描述**:返回基站接收指令状态信息 383 - **功能描述**:返回基站接收指令状态信息
@@ -277,6 +407,7 @@ @@ -277,6 +407,7 @@
277 |20008|value参数错误| 407 |20008|value参数错误|
278 |30001|基站在答题中| 408 |30001|基站在答题中|
279 |30002|基站忙(内存不足)| 409 |30002|基站忙(内存不足)|
  410 +|30003|基站执行失败|
280 |40001|升级功能只能支持一个基站| 411 |40001|升级功能只能支持一个基站|
281 |50001|此功能必须指定基站| 412 |50001|此功能必须指定基站|
282 |60001|此功能必须指定键盘SN| 413 |60001|此功能必须指定键盘SN|
@@ -334,7 +465,7 @@ @@ -334,7 +465,7 @@
334 参见基站连接变化系统通知 465 参见基站连接变化系统通知
335 466
336 ##### fEvtBsOnlineState 467 ##### fEvtBsOnlineState
337 -- **主题**: <span class="yellowFill">/basestation/mutilBase/receive</span> 468 +- **主题**: <span class="yellowFill">/basestation/multiBase/receive</span>
338 - **功能描述**:基站在线返回基站型号和基站SN 469 - **功能描述**:基站在线返回基站型号和基站SN
339 - **参数说明** 470 - **参数说明**
340 471
@@ -496,6 +627,23 @@ @@ -496,6 +627,23 @@
496 ``` 627 ```
497 ### 组网设置 628 ### 组网设置
498 #### 方法 629 #### 方法
  630 +##### getBsNetworkMode
  631 +- **主题**:/client/\${baseSN}/send
  632 +- **功能描述**:获取基站组网模式
  633 +- **参数说明**
  634 +
  635 +|参数名|类型|限制|是否必填|说明|
  636 +|---|---|---|---|---|
  637 +|fun|string|-|是|指令名称|
  638 +|dataTag|string|-|否|数据包标识,可为空字符串|
  639 +
  640 +- **示例代码**
  641 +```json
  642 +{
  643 + "fun":"getBsNetworkMode",
  644 + "dataTag":"1"
  645 +}
  646 +```
499 ##### getBsPairCode 647 ##### getBsPairCode
500 - **主题**:/client/\${baseSN}/send 648 - **主题**:/client/\${baseSN}/send
501 - **功能描述**:获取基站配对码 649 - **功能描述**:获取基站配对码
@@ -591,7 +739,48 @@ @@ -591,7 +739,48 @@
591 } 739 }
592 } 740 }
593 ``` 741 ```
  742 +
  743 +##### getBsRFIChannel
  744 +- **主题**:/client/\${baseSN}/send
  745 +- **功能描述**:获取已被其他基站占用的信道
  746 +- **参数说明**
  747 +
  748 +|参数名|类型|限制|是否必填|说明|
  749 +|---|---|---|---|---|
  750 +|fun|string|-|是|指令名称|
  751 +|dataTag|string|-|否|数据包标识,可为空字符串|
  752 +
  753 +- **示例代码**
  754 +```json
  755 +{
  756 + "fun":"getBsRFIChannel",
  757 + "dataTag":"1"
  758 +}
  759 +```
  760 +
594 #### 事件 761 #### 事件
  762 +##### fEvtBsNetworkMode
  763 +- **主题**: /basestation/\${baseSN}/receive
  764 +- **功能描述**:返回基站组网模式
  765 +- **参数说明**
  766 +
  767 +|参数名|类型|限制|非空|说明|
  768 +|---|---|---|---|---|
  769 +|fun|string|-|是|事件名称|
  770 +|dataTag|string|-|否|数据包标识,可传空字符串|
  771 +|data|object|-|是|传送参数的对象|
  772 +|+value|string||是|基站的组网模式<br>1-配对模式<br>2-白名单模式|
  773 +
  774 +- **示例代码**
  775 +```json
  776 +{
  777 + "fun":"fEvtBsNetworkMode",
  778 + "dataTag":"1",
  779 + "data":{
  780 + "value":"1"
  781 + }
  782 +}
  783 +```
595 ##### fEvtBsPairCode 784 ##### fEvtBsPairCode
596 - **主题**: /basestation/\${baseSN}/receive 785 - **主题**: /basestation/\${baseSN}/receive
597 - **功能描述**:返回基站配对码 786 - **功能描述**:返回基站配对码
@@ -637,6 +826,39 @@ @@ -637,6 +826,39 @@
637 } 826 }
638 } 827 }
639 ``` 828 ```
  829 +
  830 +##### fEvtBsRFIChannel
  831 +- **主题**: /basestation/\${baseSN}/receive
  832 +- **功能描述**:返回其他基站已占用的信道,频点冲突时,可以根据返回结果修改基站信道避开干扰
  833 +- **参数说明**
  834 +
  835 +|参数名|类型|限制|非空|说明|
  836 +|---|---|---|---|---|
  837 +|fun|string|-|是|事件名称|
  838 +|dataTag|string|-|否|数据包标识,可传空字符串|
  839 +|data|object|-|是|传送参数的对象|
  840 +|+value|string||是|其他基站已占用的信道,多个信道用英文","分隔,无占用信道返回0|
  841 +
  842 +- **示例代码**
  843 +```json
  844 +//信道1、2、14已被占用
  845 +{
  846 + "fun":"fEvtBsRFIChannel",
  847 + "dataTag":"1",
  848 + "data":{
  849 + "value":"1,2,14"
  850 + }
  851 +}
  852 +//无占用信道
  853 +{
  854 + "fun":"fEvtBsRFIChannel",
  855 + "dataTag":"1",
  856 + "data":{
  857 + "value":"0"
  858 + }
  859 +}
  860 +```
  861 +
640 ##### fEvtBsNfcLogin 862 ##### fEvtBsNfcLogin
641 - **主题**: /basestation/\${baseSN}/receive 863 - **主题**: /basestation/\${baseSN}/receive
642 - **功能描述**:返回基站是否允许NFC刷卡 864 - **功能描述**:返回基站是否允许NFC刷卡
@@ -701,6 +923,86 @@ @@ -701,6 +923,86 @@
701 } 923 }
702 } 924 }
703 ``` 925 ```
  926 +##### getBsLoginPwd
  927 +- **主题**:/client/\${baseSN}/send
  928 +- **功能描述**:获取基站登录密码
  929 +- **参数说明**
  930 +
  931 +|参数名|类型|限制|是否必填|说明|
  932 +|---|---|---|---|---|
  933 +|fun|string|-|是|固定指令名称|
  934 +|dataTag|string|-|否|数据包标识|
  935 +
  936 +- **示例代码**
  937 +```json
  938 +{
  939 + "fun":"getBsLoginPwd",
  940 + "dataTag":"1"
  941 +}
  942 +```
  943 +##### setBsLoginPwd
  944 +- **主题**:/client/\${baseSN}/send
  945 +- **功能描述**:设置基站登录密码
  946 +- **参数说明**
  947 +
  948 +|参数名|类型|限制|是否必填|说明|
  949 +|---|---|---|---|---|
  950 +|fun|string|-|是|指令名称|
  951 +|dataTag|string|-|否|数据包标识,可为空字符串|
  952 +|data|object|-|是|传送参数的对象|
  953 +|+value|string||是|设置的基站登录密码,数字类型,最长4位,为空或设为0代表无需密码登录|
  954 +
  955 +- **示例代码**
  956 +```json
  957 +{
  958 + "fun":"setBsLoginPwd",
  959 + "dataTag":"1",
  960 + "data":{
  961 + "value":"1234"
  962 + }
  963 +}
  964 +```
  965 +##### getBsLoginState
  966 +获取基站登录名称
  967 +- **主题**:/client/\${baseSN}/send
  968 +- **功能描述**:获取基站登录状态
  969 +- **参数说明**
  970 +
  971 +|参数名|类型|限制|是否必填|说明|
  972 +|---|---|---|---|---|
  973 +|fun|string|-|是|固定指令名称|
  974 +|dataTag|string|-|否|数据包标识|
  975 +
  976 +- **示例代码**
  977 +```json
  978 +{
  979 + "fun":"getBsLoginState",
  980 + "dataTag":"1"
  981 +}
  982 +```
  983 +##### setBsLoginState
  984 +- **主题**:/client/\${baseSN}/send
  985 +- **功能描述**:设置基站登录状态
  986 +- **参数说明**
  987 +
  988 +|参数名|类型|限制|是否必填|说明|
  989 +|---|---|---|---|---|
  990 +|fun|string|-|是|指令名称|
  991 +|dataTag|string|-|否|数据包标识,可为空字符串|
  992 +|data|object|-|是|传送参数的对象|
  993 +|+value|string||是|设置是否允许键盘自主登入<br>0 - 不允许键盘登入<br>1 - 允许键盘登入|
  994 +
  995 +- **示例代码**
  996 +```json
  997 +{
  998 + "fun":"setBsLoginState",
  999 + "dataTag":"1",
  1000 + "data":{
  1001 + "value":"1"
  1002 + }
  1003 +}
  1004 +```
  1005 +
704 #### 事件 1006 #### 事件
705 ##### fEvtBsSSID 1007 ##### fEvtBsSSID
706 - **主题**: /basestation/\${baseSN}/receive 1008 - **主题**: /basestation/\${baseSN}/receive
@@ -724,6 +1026,59 @@ @@ -724,6 +1026,59 @@
724 } 1026 }
725 } 1027 }
726 ``` 1028 ```
  1029 +##### fEvtBsLoginPwd
  1030 +- **主题**: /basestation/\${baseSN}/receive
  1031 +- **功能描述**:返回基站登录密码
  1032 +- **参数说明**
  1033 +
  1034 +|参数名|类型|限制|非空|说明|
  1035 +|---|---|---|---|---|
  1036 +|fun|string|-|是|事件名称|
  1037 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1038 +|data|object|-|是|传送参数的对象|
  1039 +|+value|string||是|基站登录密码,返回值为0代表无需密码登录|
  1040 +
  1041 +- **示例代码**
  1042 +```json
  1043 +{
  1044 + "fun":"fEvtBsLoginPwd",
  1045 + "dataTag":"1",
  1046 + "data":{
  1047 + "value":"1234"
  1048 + }
  1049 +}
  1050 +
  1051 +//无需密码登录
  1052 +{
  1053 + "fun":"fEvtBsLoginPwd",
  1054 + "dataTag":"1",
  1055 + "data":{
  1056 + "value":"0"
  1057 + }
  1058 +}
  1059 +```
  1060 +##### fEvtBsLoginState
  1061 +- **主题**: /basestation/\${baseSN}/receive
  1062 +- **功能描述**:返回基站登录状态
  1063 +- **参数说明**
  1064 +
  1065 +|参数名|类型|限制|非空|说明|
  1066 +|---|---|---|---|---|
  1067 +|fun|string|-|是|事件名称|
  1068 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1069 +|data|object|-|是|传送参数的对象|
  1070 +|+value|string||是|基站登录状态|
  1071 +
  1072 +- **示例代码**
  1073 +```json
  1074 +{
  1075 + "fun":"fEvtBsLoginState",
  1076 + "dataTag":"1",
  1077 + "data":{
  1078 + "value":"1"
  1079 + }
  1080 +}
  1081 +```
727 ### 键盘统一设置 1082 ### 键盘统一设置
728 #### 方法 1083 #### 方法
729 ##### getBsKpLanguage 1084 ##### getBsKpLanguage
@@ -1122,7 +1477,7 @@ @@ -1122,7 +1477,7 @@
1122 |+port|int||是|端口,默认1883| 1477 |+port|int||是|端口,默认1883|
1123 |+userName|string||否|连接服务器的用户名,可不设置| 1478 |+userName|string||否|连接服务器的用户名,可不设置|
1124 |+password|string||否|连接服务器的密码,可不设置| 1479 |+password|string||否|连接服务器的密码,可不设置|
1125 -|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒| 1480 +|+interval|int|>=30|否|基站连接服务器失败后重连的间隔时长,单位秒|
1126 1481
1127 - **示例代码** 1482 - **示例代码**
1128 ```json 1483 ```json
@@ -1199,7 +1554,70 @@ @@ -1199,7 +1554,70 @@
1199 } 1554 }
1200 } 1555 }
1201 ``` 1556 ```
  1557 +### 基站加密
  1558 +#### 方法
  1559 +##### getBsSoftwareKey
  1560 +- **主题**:/client/\${baseSN}/send
  1561 +- **功能描述**:获取基站软件狗密钥
  1562 +- **参数说明**
  1563 +
  1564 +|参数名|类型|限制|是否必填|说明|
  1565 +|---|---|---|---|---|
  1566 +|fun|string|-|是|指令名称|
  1567 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1568 +
  1569 +- **示例代码**
  1570 +```json
  1571 +{
  1572 + "fun":"getBsSoftwareKey",
  1573 + "dataTag":"1"
  1574 +}
  1575 +```
  1576 +##### setBsSoftwareKey
  1577 +- **主题**:/client/\${baseSN}/send
  1578 +- **功能描述**:设置基站软件狗密钥
  1579 +- **参数说明**
  1580 +
  1581 +|参数名|类型|限制|是否必填|说明|
  1582 +|---|---|---|---|---|
  1583 +|fun|string|-|是|指令名称|
  1584 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1585 +|data|object|-|是|传送参数的对象|
  1586 +|+value|string|-|是|基站软件狗密钥,长度不超过32字节|
  1587 +
  1588 +- **示例代码**
  1589 +```json
  1590 +{
  1591 + "fun":"setBsSoftwareKey",
  1592 + "dataTag":"1",
  1593 + "data":{
  1594 + "value":"sunvote123456"
  1595 + }
  1596 +}
  1597 +```
  1598 +#### 事件
  1599 +##### fEvtBsSoftwareKey
  1600 +- **主题**:/basestation/\${baseSN}/receive
  1601 +- **功能描述**:返回基站的软件狗密钥
  1602 +- **参数说明**
1202 1603
  1604 +|参数名|类型|限制|非空|说明|
  1605 +|---|---|---|---|---|
  1606 +|fun|string|-|是|指令名称|
  1607 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1608 +|data|object|-|是|传送参数的对象|
  1609 +|+value|string||是|返回基站的软件狗密钥|
  1610 +
  1611 +- **示例代码**
  1612 +```json
  1613 +{
  1614 + "fun":"fEvtBsSoftwareKey",
  1615 + "dataTag":"1",
  1616 + "data":{
  1617 + "value":"sunvote123456"
  1618 + }
  1619 +}
  1620 +```
1203 ## 键盘管理 1621 ## 键盘管理
1204 ### 交互设置 1622 ### 交互设置
1205 #### 方法 1623 #### 方法
@@ -1546,8 +1964,7 @@ @@ -1546,8 +1964,7 @@
1546 } 1964 }
1547 } 1965 }
1548 ``` 1966 ```
1549 -  
1550 -##### stopKpSignIn 1967 +<!-- ##### stopKpSignIn
1551 - **主题**:/client/\${baseSN}/send 1968 - **主题**:/client/\${baseSN}/send
1552 - **功能描述**:停止同步签到 1969 - **功能描述**:停止同步签到
1553 - **参数说明** 1970 - **参数说明**
@@ -1563,7 +1980,10 @@ @@ -1563,7 +1980,10 @@
1563 "fun":"stopKpSignIn", 1980 "fun":"stopKpSignIn",
1564 "dataTag":"1" 1981 "dataTag":"1"
1565 } 1982 }
1566 -``` 1983 +``` -->
  1984 +##### [stopKpVote](#stopkpvote)
  1985 +停止同步签到
  1986 +
1567 #### 事件 1987 #### 事件
1568 ##### [sEvtStateCode](#sevtstatecode) 1988 ##### [sEvtStateCode](#sevtstatecode)
1569 发送指令后返回接收状态 1989 发送指令后返回接收状态
@@ -1717,6 +2137,7 @@ @@ -1717,6 +2137,7 @@
1717 |dataTag|string|-|否|数据包标识,可为空字符串| 2137 |dataTag|string|-|否|数据包标识,可为空字符串|
1718 |data|object|-|是|传送参数的对象| 2138 |data|object|-|是|传送参数的对象|
1719 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| 2139 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2140 +|+count|int||是|题目数量,1-16,>1多题快答|
1720 |+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×| 2141 |+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×|
1721 |+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改| 2142 |+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改|
1722 |+tip|string||否|提示的标题,长度不超过16字符| 2143 |+tip|string||否|提示的标题,长度不超过16字符|
@@ -1729,13 +2150,14 @@ @@ -1729,13 +2150,14 @@
1729 "dataTag":"1", 2150 "dataTag":"1",
1730 "data":{ 2151 "data":{
1731 "keySns":[], 2152 "keySns":[],
  2153 + "count":1,
1732 "mode":1, 2154 "mode":1,
1733 "allowModify":1, 2155 "allowModify":1,
1734 "tip":"请判断对错" 2156 "tip":"请判断对错"
1735 } 2157 }
1736 } 2158 }
1737 ``` 2159 ```
1738 -##### stopQATrueFalse 2160 +<!-- ##### stopQATrueFalse
1739 - **主题**:/client/\${baseSN}/send 2161 - **主题**:/client/\${baseSN}/send
1740 - **功能描述**:停止判断题答题 2162 - **功能描述**:停止判断题答题
1741 - **参数说明** 2163 - **参数说明**
@@ -1752,7 +2174,11 @@ @@ -1752,7 +2174,11 @@
1752 "fun":"stopQATrueFalse", 2174 "fun":"stopQATrueFalse",
1753 "dataTag":"1" 2175 "dataTag":"1"
1754 } 2176 }
1755 -``` 2177 +``` -->
  2178 +
  2179 +##### [stopKpVote](#stopkpvote)
  2180 +停止判断题答题
  2181 +
1756 #### 事件 2182 #### 事件
1757 ##### [sEvtStateCode](#sevtstatecode) 2183 ##### [sEvtStateCode](#sevtstatecode)
1758 发送指令后返回接收状态 2184 发送指令后返回接收状态
@@ -1800,6 +2226,7 @@ @@ -1800,6 +2226,7 @@
1800 |dataTag|string|-|否|数据包标识,可为空字符串| 2226 |dataTag|string|-|否|数据包标识,可为空字符串|
1801 |data|object|-|是|传送参数的对象| 2227 |data|object|-|是|传送参数的对象|
1802 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| 2228 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2229 +|+count|int||是|题目数量,1-16,>1多题快答<br>optionalN >1时无效|
1803 |+mode|int||是|显示模式<br>1:显示字母(默认值) </br>2:显示数字 | 2230 |+mode|int||是|显示模式<br>1:显示字母(默认值) </br>2:显示数字 |
1804 |+lessMode|int||是|迫选模式<br>0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 | 2231 |+lessMode|int||是|迫选模式<br>0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 |
1805 |+options|int||是|选项数量,1≤M≤10(默认值4)| 2232 |+options|int||是|选项数量,1≤M≤10(默认值4)|
@@ -1816,6 +2243,7 @@ @@ -1816,6 +2243,7 @@
1816 "data":{ 2243 "data":{
1817 "keySns":[], 2244 "keySns":[],
1818 "mode": 1, 2245 "mode": 1,
  2246 + "count":1,
1819 "lessMode": 0, 2247 "lessMode": 0,
1820 "options": 4, 2248 "options": 4,
1821 "optionalN": 1, 2249 "optionalN": 1,
@@ -1824,7 +2252,7 @@ @@ -1824,7 +2252,7 @@
1824 } 2252 }
1825 } 2253 }
1826 ``` 2254 ```
1827 -##### stopQAChoice 2255 +<!-- ##### stopQAChoice
1828 - **主题**:/client/\${baseSN}/send 2256 - **主题**:/client/\${baseSN}/send
1829 - **功能描述**:停止选择题答题 2257 - **功能描述**:停止选择题答题
1830 - **参数说明** 2258 - **参数说明**
@@ -1841,7 +2269,10 @@ @@ -1841,7 +2269,10 @@
1841 "fun":"stopQAChoice", 2269 "fun":"stopQAChoice",
1842 "dataTag":"1" 2270 "dataTag":"1"
1843 } 2271 }
1844 -``` 2272 +``` -->
  2273 +##### [stopKpVote](#stopkpvote)
  2274 +停止选择题答题
  2275 +
1845 #### 事件 2276 #### 事件
1846 ##### [sEvtStateCode](#sevtstatecode) 2277 ##### [sEvtStateCode](#sevtstatecode)
1847 发送指令后返回接收状态 2278 发送指令后返回接收状态
@@ -1889,7 +2320,7 @@ @@ -1889,7 +2320,7 @@
1889 |data|object|-|是|传送参数的对象| 2320 |data|object|-|是|传送参数的对象|
1890 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| 2321 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
1891 |+mode|int||是|模式<br>0:无规则 (S6最多16位,T2最多14位)<br>1:带小数位上下限(T2不支持)| 2322 |+mode|int||是|模式<br>0:无规则 (S6最多16位,T2最多14位)<br>1:带小数位上下限(T2不支持)|
1892 -|+digits|int||是|小数位数范围0-2,mode=1时有效 2323 +|+digits|int||是|小数位数,范围0-2,mode=1时有效
1893 |+numMin|int||是|可输入下限,mode=1有效,范围0-100| 2324 |+numMin|int||是|可输入下限,mode=1有效,范围0-100|
1894 |+numMax|int||是|可输入上限,mode=1有效,范围0-100| 2325 |+numMax|int||是|可输入上限,mode=1有效,范围0-100|
1895 |+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改| 2326 |+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
@@ -1912,7 +2343,7 @@ @@ -1912,7 +2343,7 @@
1912 } 2343 }
1913 } 2344 }
1914 ``` 2345 ```
1915 -##### stopQANum 2346 +<!-- ##### stopQANum
1916 - **主题**:/client/\${baseSN}/send 2347 - **主题**:/client/\${baseSN}/send
1917 - **功能描述**:停止数字题答题 2348 - **功能描述**:停止数字题答题
1918 - **参数说明** 2349 - **参数说明**
@@ -1929,7 +2360,10 @@ @@ -1929,7 +2360,10 @@
1929 "fun":"stopQANum", 2360 "fun":"stopQANum",
1930 "dataTag":"1" 2361 "dataTag":"1"
1931 } 2362 }
1932 -``` 2363 +``` -->
  2364 +##### [stopKpVote](#stopkpvote)
  2365 +停止数字题答题
  2366 +
1933 #### 事件 2367 #### 事件
1934 ##### [sEvtStateCode](#sevtstatecode) 2368 ##### [sEvtStateCode](#sevtstatecode)
1935 发送指令后返回接收状态 2369 发送指令后返回接收状态
@@ -1947,7 +2381,7 @@ @@ -1947,7 +2381,7 @@
1947 |++keySn|string||是|键盘SN| 2381 |++keySn|string||是|键盘SN|
1948 |++keyValue|string||是|键盘提交的按键值| 2382 |++keyValue|string||是|键盘提交的按键值|
1949 |++keyTime|double||是|答题时间,从启动开始计算,单位秒| 2383 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
1950 -|++voltage|double||是|键盘电量</font>| 2384 +|++voltage|double||是|键盘电量|
1951 |++retryCount|int||是|键盘提交数据的重发次数| 2385 |++retryCount|int||是|键盘提交数据的重发次数|
1952 2386
1953 - **示例代码** 2387 - **示例代码**
@@ -1994,7 +2428,7 @@ @@ -1994,7 +2428,7 @@
1994 } 2428 }
1995 } 2429 }
1996 ``` 2430 ```
1997 -##### stopQAQuicker 2431 +<!-- ##### stopQAQuicker
1998 - **主题**:/client/\${baseSN}/send 2432 - **主题**:/client/\${baseSN}/send
1999 - **功能描述**:停止抢答答题 2433 - **功能描述**:停止抢答答题
2000 - **参数说明** 2434 - **参数说明**
@@ -2011,7 +2445,11 @@ @@ -2011,7 +2445,11 @@
2011 "fun":"stopQAQuicker", 2445 "fun":"stopQAQuicker",
2012 "dataTag":"1" 2446 "dataTag":"1"
2013 } 2447 }
2014 -``` 2448 +``` -->
  2449 +
  2450 +##### [stopKpVote](#stopkpvote)
  2451 +停止抢答
  2452 +
2015 #### 事件 2453 #### 事件
2016 ##### [sEvtStateCode](#sevtstatecode) 2454 ##### [sEvtStateCode](#sevtstatecode)
2017 发送指令后返回接收状态 2455 发送指令后返回接收状态
@@ -2045,6 +2483,105 @@ @@ -2045,6 +2483,105 @@
2045 }] 2483 }]
2046 } 2484 }
2047 ``` 2485 ```
  2486 +### 待机实时反馈
  2487 +#### 方法
  2488 +##### setKpStbResponse
  2489 +- **主题**:/client/\${baseSN}/send
  2490 +- **功能描述**:启动待机实时反馈
  2491 +- **参数说明**
  2492 +
  2493 +|参数名|类型|限制|是否必填|说明|
  2494 +|---|---|---|---|---|
  2495 +|fun|string|-|是|指令名称|
  2496 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2497 +|data|object|-|是|传送参数的对象|
  2498 +|+state|int||是|启用待机实时反馈<br>0-不启用<br>1-启用|
  2499 +|+mode|int||是|启动待机反馈类型,state=1时有效<br>1 - 指定按键反馈|
  2500 +|+keys|int||是|有效按键数量,state=1且mode=1时有效, 范围1-10|
  2501 +
  2502 +- **示例代码**
  2503 +```json
  2504 +//启用待机按键反馈
  2505 +{
  2506 + "fun":"setKpStbResponse",
  2507 + "dataTag":"1",
  2508 + "data":{
  2509 + "state":1,
  2510 + "mode":1,
  2511 + "keys":4
  2512 + }
  2513 +}
  2514 +//关闭待机按键反馈
  2515 +{
  2516 + "fun":"setKpStbResponse",
  2517 + "dataTag":"1",
  2518 + "data":{
  2519 + "state":0
  2520 + }
  2521 +}
  2522 +```
  2523 +
  2524 +##### getKpStbResponse
  2525 +- **主题**:/client/\${baseSN}/send
  2526 +- **功能描述**:获取实时反馈是否打开
  2527 +- **参数说明**
  2528 +
  2529 +|参数名|类型|限制|是否必填|说明|
  2530 +|---|---|---|---|---|
  2531 +|fun|string|-|是|指令名称|
  2532 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2533 +
  2534 +- **示例代码**
  2535 +```json
  2536 +//获取实时反馈状态
  2537 +{
  2538 + "fun":"getKpStbResponse",
  2539 + "dataTag":"1"
  2540 +}
  2541 +```
  2542 +
  2543 +#### 事件
  2544 +##### fEvtKpStbResponse
  2545 +- **主题**:/basestation/\${baseSN}/receive
  2546 +- **功能描述**:返回当前待机按键反馈开启状态
  2547 +- **参数说明**
  2548 +
  2549 +|参数名|类型|限制|非空|说明|
  2550 +|---|---|---|---|---|
  2551 +|fun|string|-|是|指令名称|
  2552 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2553 +|data|array|-|是|传送参数的对象数组|
  2554 +|+state|int||是|启用待机实时反馈<br>0-未启用<br>1-启用|
  2555 +|+mode|int||是|当前启动待机反馈类型,state=1时返回<br>0-举手<br>1-指定按键反馈|
  2556 +
  2557 +- **示例代码**
  2558 +```json
  2559 +//当前启用待机实时反馈,模式为指定按键反馈
  2560 +{
  2561 + "fun":"fEvtKpStbResponse",
  2562 + "dataTag":"1",
  2563 + "data": {
  2564 + "state": 1,
  2565 + "mode": 1
  2566 + }
  2567 +}
  2568 +
  2569 +//当前未启用待机反馈
  2570 +{
  2571 + "fun":"fEvtKpStbResponse",
  2572 + "dataTag":"1",
  2573 + "data": {
  2574 + "state": 0
  2575 + }
  2576 +}
  2577 +```
  2578 +
  2579 +##### [sEvtKpRtFeedback](#sevtkprtfeedback)
  2580 +返回待机时键盘返回的按键值
  2581 +
  2582 +##### [sEvtKpHandup](#sevtkphandup)
  2583 +启动待机按键反馈类型为举手提问时返回此事件
  2584 +
2048 ## 在线测验 2585 ## 在线测验
2049 ### 标准测验 2586 ### 标准测验
2050 #### 方法 2587 #### 方法
@@ -2061,11 +2598,10 @@ @@ -2061,11 +2598,10 @@
2061 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验| 2598 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
2062 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头| 2599 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
2063 |+questions|array||是|题目详情| 2600 |+questions|array||是|题目详情|
2064 -|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级大题<br><font color="red">最多为三级题号,即最多可以设为x-x-</font>|  
2065 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 | 2601 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
2066 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。| 2602 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
2067 -|++startNo | int||是| 起始题号 |  
2068 -|++count | int||是| 题目数量 | 2603 +|++startNo | string||是| 起始题号,可以为数字+“-”,单级的题号数字范围1-255,如“1”,“1-1”,“1-1-1”,最多只能输入三级<br>mode=0 时有效,mode=1或2时键盘按顺序显示题号|
  2604 +|++count | int||是| 相同参数的连续题目数量, >0 <br>注意:总题数最多支持200题 |
2069 2605
2070 - **示例代码** 2606 - **示例代码**
2071 2607
@@ -2076,10 +2612,10 @@ @@ -2076,10 +2612,10 @@
2076 "dataTag":"1", 2612 "dataTag":"1",
2077 "data":{ 2613 "data":{
2078 "mode": 1, 2614 "mode": 1,
2079 - "examNo": 1, 2615 + "examNo": 0,
2080 "questions": [{ 2616 "questions": [{
2081 "quesType": 1, //单选题 2617 "quesType": 1, //单选题
2082 - "startNo": 1, //题号从1开始 2618 + "startNo": "1", //题号从1开始
2083 "count":10 //连续10题 2619 "count":10 //连续10题
2084 }] 2620 }]
2085 } 2621 }
@@ -2093,24 +2629,24 @@ @@ -2093,24 +2629,24 @@
2093 "dataTag":"1", 2629 "dataTag":"1",
2094 "data":{ 2630 "data":{
2095 "mode": 0, 2631 "mode": 0,
2096 - "examNo": 1, 2632 + "examNo": 0,
2097 //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题 2633 //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题
2098 "questions": [{ 2634 "questions": [{
2099 "quesType": 1, //单选题 2635 "quesType": 1, //单选题
2100 - "startNo": 1, //题号从1开始 2636 + "startNo": "1", //题号从1开始
2101 "count":2 //连续2题 2637 "count":2 //连续2题
2102 },{ 2638 },{
2103 "quesType": 2, //多选题 2639 "quesType": 2, //多选题
2104 - "startNo": 3, //题号从3开始 2640 + "startNo": "3", //题号从3开始
2105 "count":2, //连续2题 2641 "count":2, //连续2题
2106 "option":5 2642 "option":5
2107 },{ 2643 },{
2108 "quesType": 1, //数字题 2644 "quesType": 1, //数字题
2109 - "startNo": 5, //题号从5开始 2645 + "startNo": "5", //题号从5开始
2110 "count":1 //连续1题 2646 "count":1 //连续1题
2111 },{ 2647 },{
2112 "quesType": 4, //判断题 2648 "quesType": 4, //判断题
2113 - "startNo": 6, //题号从6开始 2649 + "startNo": "6", //题号从6开始
2114 "count":1 //连续1题 2650 "count":1 //连续1题
2115 }] 2651 }]
2116 } 2652 }
@@ -2124,28 +2660,24 @@ @@ -2124,28 +2660,24 @@
2124 "dataTag":"1", 2660 "dataTag":"1",
2125 "data":{ 2661 "data":{
2126 "mode": 0, 2662 "mode": 0,
2127 - "examNo": 1, 2663 + "examNo": 0,
2128 //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题 2664 //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题
2129 - "questions": [{  
2130 - "symbol": "1-", 2665 + "questions": [{
2131 "quesType": 1, //单选题 2666 "quesType": 1, //单选题
2132 - "startNo": 1, //题号从1-1开始 2667 + "startNo": "1-1", //题号从1-1开始
2133 "count":2 //连续2题 2668 "count":2 //连续2题
2134 },{ 2669 },{
2135 - "symbol": "2-",  
2136 "quesType": 2, //多选题 2670 "quesType": 2, //多选题
2137 - "startNo": 1, //题号从2-1开始 2671 + "startNo":"2-1", //题号从2-1开始
2138 "count":2, //连续2题 2672 "count":2, //连续2题
2139 "option":5 2673 "option":5
2140 },{ 2674 },{
2141 - "symbol": "3-",  
2142 "quesType": 3, //数字题 2675 "quesType": 3, //数字题
2143 - "startNo": 1, //题号从3-1开始 2676 + "startNo":"3-1", //题号从3-1开始
2144 "count":1 //连续1题 2677 "count":1 //连续1题
2145 },{ 2678 },{
2146 - "symbol": "4-",  
2147 "quesType": 4, //判断题 2679 "quesType": 4, //判断题
2148 - "startNo": 1, //题号从4-1开始 2680 + "startNo": "4-1", //题号从4-1开始
2149 "count":1 //连续1题 2681 "count":1 //连续1题
2150 }] 2682 }]
2151 } 2683 }
@@ -2159,28 +2691,24 @@ @@ -2159,28 +2691,24 @@
2159 "dataTag":"1", 2691 "dataTag":"1",
2160 "data":{ 2692 "data":{
2161 "mode": 0, 2693 "mode": 0,
2162 - "examNo": 1, 2694 + "examNo": 0,
2163 //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题 2695 //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题
2164 "questions": [{ 2696 "questions": [{
2165 - "symbol": "1-1-",  
2166 "quesType": 1, //单选题 2697 "quesType": 1, //单选题
2167 - "startNo": 1, //题号从1-1-1开始 2698 + "startNo": "1-1-1", //题号从1-1-1开始
2168 "count":2 //连续2题 2699 "count":2 //连续2题
2169 },{ 2700 },{
2170 - "symbol": "1-2-",  
2171 "quesType": 2, //多选题 2701 "quesType": 2, //多选题
2172 - "startNo": 1, //题号从1-2-1开始 2702 + "startNo": "1-2-1", //题号从1-2-1开始
2173 "count":2, //连续2题 2703 "count":2, //连续2题
2174 "option":5 2704 "option":5
2175 },{ 2705 },{
2176 - "symbol": "2-1-",  
2177 "quesType": 3, //数字题 2706 "quesType": 3, //数字题
2178 - "startNo": 1, //题号从2-1-1开始 2707 + "startNo": "2-1-1", //题号从2-1-1开始
2179 "count":1 //连续1题 2708 "count":1 //连续1题
2180 },{ 2709 },{
2181 - "symbol": "3-1-",  
2182 "quesType": 4, //判断题 2710 "quesType": 4, //判断题
2183 - "startNo": 1, //题号从3-1-1开始 2711 + "startNo": "3-1-1", //题号从3-1-1开始
2184 "count":1 //连续1题 2712 "count":1 //连续1题
2185 }] 2713 }]
2186 } 2714 }
@@ -2194,23 +2722,23 @@ @@ -2194,23 +2722,23 @@
2194 "dataTag":"1", 2722 "dataTag":"1",
2195 "data":{ 2723 "data":{
2196 "mode": 1, 2724 "mode": 1,
2197 - "examNo": 1, 2725 + "examNo": 0,
2198 "questions": [{ 2726 "questions": [{
2199 "quesType": 1, //单选题 2727 "quesType": 1, //单选题
2200 - "startNo": 1, //题号从1开始 2728 + "startNo": "1", //题号从1开始
2201 "count":2 //连续2题 2729 "count":2 //连续2题
2202 },{ 2730 },{
2203 "quesType": 2, //多选题 2731 "quesType": 2, //多选题
2204 - "startNo": 3, //题号从3开始 2732 + "startNo": "3", //题号从3开始
2205 "count":2, //连续2题 2733 "count":2, //连续2题
2206 "option":5 2734 "option":5
2207 },{ 2735 },{
2208 "quesType": 1, //数字题 2736 "quesType": 1, //数字题
2209 - "startNo": 5, //题号从5开始 2737 + "startNo": "5", //题号从5开始
2210 "count":1 //连续1题 2738 "count":1 //连续1题
2211 },{ 2739 },{
2212 "quesType": 4, //判断题 2740 "quesType": 4, //判断题
2213 - "startNo": 6, //题号从6开始 2741 + "startNo": "6", //题号从6开始
2214 "count":1 //连续1题 2742 "count":1 //连续1题
2215 }] 2743 }]
2216 } 2744 }
@@ -2224,29 +2752,30 @@ @@ -2224,29 +2752,30 @@
2224 "dataTag":"1", 2752 "dataTag":"1",
2225 "data":{ 2753 "data":{
2226 "mode": 2, 2754 "mode": 2,
2227 - "examNo": 1,  
2228 - "questions": [{ 2755 + "examNo": 0,
  2756 + "questions": [{
2229 "quesType": 1, //单选题 2757 "quesType": 1, //单选题
2230 - "startNo": 1, //题号从1开始 2758 + "startNo": "1", //题号从1开始
2231 "count":2 //连续2题 2759 "count":2 //连续2题
2232 },{ 2760 },{
2233 "quesType": 2, //多选题 2761 "quesType": 2, //多选题
2234 - "startNo": 3, //题号从3开始 2762 + "startNo": "3", //题号从3开始
2235 "count":2, //连续2题 2763 "count":2, //连续2题
2236 "option":5 2764 "option":5
2237 },{ 2765 },{
2238 "quesType": 1, //数字题 2766 "quesType": 1, //数字题
2239 - "startNo": 5, //题号从5开始 2767 + "startNo": "5", //题号从5开始
2240 "count":1 //连续1题 2768 "count":1 //连续1题
2241 },{ 2769 },{
2242 "quesType": 4, //判断题 2770 "quesType": 4, //判断题
2243 - "startNo": 6, //题号从6开始 2771 + "startNo": "6", //题号从6开始
2244 "count":1 //连续1题 2772 "count":1 //连续1题
2245 }] 2773 }]
2246 } 2774 }
2247 } 2775 }
2248 ``` 2776 ```
2249 -##### stopKpExam 2777 +
  2778 +<!-- ##### stopKpExam
2250 - **主题**:/client/\${baseSN}/send 2779 - **主题**:/client/\${baseSN}/send
2251 - **功能描述**:停止标准测验 2780 - **功能描述**:停止标准测验
2252 - **参数说明** 2781 - **参数说明**
@@ -2263,7 +2792,10 @@ @@ -2263,7 +2792,10 @@
2263 "fun":"stopKpExam", 2792 "fun":"stopKpExam",
2264 "dataTag":"1" 2793 "dataTag":"1"
2265 } 2794 }
2266 -``` 2795 +``` -->
  2796 +##### [stopKpVote](#stopkpvote)
  2797 +停止在线测验
  2798 +
2267 ##### rtKpAllowEdited 2799 ##### rtKpAllowEdited
2268 - **主题**:/client/\${baseSN}/send 2800 - **主题**:/client/\${baseSN}/send
2269 - **功能描述**:键盘提交后,允许键盘修改答案 2801 - **功能描述**:键盘提交后,允许键盘修改答案
@@ -2302,8 +2834,10 @@ @@ -2302,8 +2834,10 @@
2302 |dataTag|string|-|否|数据包标识,可为空字符串| 2834 |dataTag|string|-|否|数据包标识,可为空字符串|
2303 |data|array|-|是|传送参数的对象数组| 2835 |data|array|-|是|传送参数的对象数组|
2304 |++keySn|string||是|键盘SN| 2836 |++keySn|string||是|键盘SN|
2305 -|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B| 2837 +|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B<br><font color="red">注意:如启动的是多科测验,键盘提交的题目序号对应启动时下发的题目总序号,不按科目区分</font>|
2306 |++keyTime|double||是|答题时间,从启动开始计算,单位秒| 2838 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2839 +|++voltage|double||是|键盘电量|
  2840 +|++retryCount|int||是|键盘提交数据的重发次数|
2307 2841
2308 - **示例代码** 2842 - **示例代码**
2309 2843
@@ -2350,4 +2884,234 @@ @@ -2350,4 +2884,234 @@
2350 "keyTime":3.2 2884 "keyTime":3.2
2351 }] 2885 }]
2352 } 2886 }
  2887 +```
  2888 +
  2889 +### 多科测验
  2890 +#### 方法
  2891 +##### startKpMultiExam
  2892 +- **主题**:/client/\${baseSN}/send
  2893 +- **功能描述**:启动多科测验
  2894 +- **参数说明**
  2895 +
  2896 +|参数名|类型|限制|是否必填|说明|
  2897 +|---|---|---|---|---|
  2898 +|fun|string|-|是|指令名称|
  2899 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2900 +|data|object|-|是|传送参数的对象|
  2901 +|+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
  2902 +|+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
  2903 +|+questions|array||是|题目详情|
  2904 +|++subject | int||是 | 科目序号,1-9,对应键盘中内置的科目1-9<br>键盘答题时可选择科目切换答题|
  2905 +|++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  2906 +|++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  2907 +|++startNo | string||是| 起始题号,可以为数字+“-”,单级的题号数字范围1-255,如“1”,“1-1”,最多支持两级题号<br>mode=0 时有效,mode=1或2时键盘按顺序显示题号|
  2908 +|++count | int||是| 相同参数的连续题目数量, >0 <br>注意:所有科目的总题数最多支持200题|
  2909 +|+simParams|object||否|内部模拟测试参数设置对象|
  2910 +|++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|
  2911 +
  2912 +- **示例代码**
  2913 +```json
  2914 +//自定义题号
  2915 +{
  2916 + "fun":"startKpMultiExam",
  2917 + "dataTag":"1",
  2918 + "data":{
  2919 + "mode": 0,
  2920 + "examNo": 0,
  2921 + "questions": [{
  2922 + "subject":1, //科目1
  2923 + //题号1-1 到1-10 共10题单选
  2924 + "quesType": 1,
  2925 + "startNo": "1-1",
  2926 + "count":10
  2927 + }, {
  2928 + "subject":2, //科目2
  2929 + //题号2-2和2-3共两题 多选题,5个选项
  2930 + "quesType": 2,
  2931 + "option": 5,
  2932 + "startNo": "2-2",
  2933 + "count":2
  2934 + }, {
  2935 + "subject":3, //科目3
  2936 + //题号3-1和3-2共两道数字题
  2937 + "quesType": 3,
  2938 + "startNo": "3-1",
  2939 + "count":2
  2940 + }, {
  2941 + "subject":1, //科目1
  2942 + //题号4和5 ,判断题
  2943 + "quesType": 4,
  2944 + "startNo": "4",
  2945 + "count":2
  2946 + }]
  2947 + }
  2948 +}
  2949 +
  2950 +//显示Q开头
  2951 +{
  2952 + "fun":"startKpMultiExam",
  2953 + "dataTag":"1",
  2954 + "data":{
  2955 + "mode": 1,
  2956 + "examNo": 0,
  2957 + "questions": [{
  2958 + "subject":1,
  2959 + //Q1-Q20,单选题
  2960 + "quesType": 1,
  2961 + "startNo": "1",
  2962 + "count":20
  2963 + }]
  2964 + }
  2965 +}
  2966 +
  2967 +//显示题开头
  2968 +{
  2969 + "fun":"startKpMultiExam",
  2970 + "dataTag":"1",
  2971 + "data":{
  2972 + "mode": 2,
  2973 + "examNo": 0,
  2974 + "questions": [{
  2975 + "subject":1,
  2976 + //题1-题20,单选题
  2977 + "quesType": 1,
  2978 + "startNo": "1",
  2979 + "count":20
  2980 + }]
  2981 + }
  2982 +}
  2983 +```
  2984 +
  2985 +<!-- ##### stopKpMultiExam
  2986 +- **主题**:/client/\${baseSN}/send
  2987 +- **功能描述**:停止多科测验
  2988 +- **参数说明**
  2989 +
  2990 +|参数名|类型|限制|是否必填|说明|
  2991 +|---|---|---|---|---|
  2992 +|fun|string|-|是|指令名称|
  2993 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2994 +
  2995 +- **示例代码**
  2996 +```json
  2997 +{
  2998 + "fun":"stopKpMultiExam",
  2999 + "dataTag":"1"
  3000 +}
  3001 +``` -->
  3002 +##### [stopKpVote](#stopkpvote)
  3003 +停止多科测验
  3004 +
  3005 +#### 事件
  3006 +##### [sEvtStateCode](#sevtstatecode)
  3007 +发送指令后返回接收状态
  3008 +
  3009 +##### [fEvtKpExam](#fevtkpexam)
  3010 +返回测验中键盘提交答题数据
  3011 +
  3012 +##### [fEvtFinalSubmit](#fevtfinalsubmit)
  3013 +返回键盘手动交卷标识
  3014 +
  3015 +### 自主录分
  3016 +#### 方法
  3017 +##### startKpScoreInput
  3018 +- **主题**:/client/\${baseSN}/send
  3019 +- **功能描述**:启动自主录分
  3020 +- **参数说明**
  3021 +
  3022 +|参数名|类型|限制|是否必填|说明|
  3023 +|---|---|---|---|---|
  3024 +|fun|string|-|是|指令名称|
  3025 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3026 +|data|object|-|是|传送参数的对象|
  3027 +|+examNo|int||是|0-9999<br>=0,新的录分<br>>0时,与上次启动卷号一致继续录分,不一致进入新的录分|
  3028 +|+mode|int||是|录分模式<br>0-自主录分<br>1-交叉录分,需先输入录分的人员标识|
  3029 +|+questions|array||是|题目详情|
  3030 +|++max |int||是|可输入的最大值,<=100|
  3031 +|++digits|int||是|可输入的小数位数,范围0-2|
  3032 +|++startNo | string||是| 起始题号,暂只支持一级题号,范围1-255|
  3033 +|++count | int||是| 相同参数的题目数量,>0<br>注意:总题数最多支持200题|
  3034 +
  3035 +- **示例代码**
  3036 +```json
  3037 +{
  3038 + "fun":"startKpScoreInput",
  3039 + "dataTag":"1",
  3040 + "data":{
  3041 + "mode": 0,
  3042 + "examNo": 0,
  3043 + "questions": [{
  3044 + //题号1 到 2 共2题,单题满分10分
  3045 + "max":10,
  3046 + "digits":1,
  3047 + "startNo": "1",
  3048 + "count":2
  3049 + }, {
  3050 + //题号3到6 共4道题,单题满分5
  3051 + "max":5,
  3052 + "digits":0,
  3053 + "startNo": "3",
  3054 + "count":4
  3055 + }]
  3056 + }
  3057 +}
  3058 +```
  3059 +<!--
  3060 +##### stopKpScoreInput
  3061 +- **主题**:/client/\${baseSN}/send
  3062 +- **功能描述**:停止自主录分
  3063 +- **参数说明**
  3064 +
  3065 +|参数名|类型|限制|是否必填|说明|
  3066 +|---|---|---|---|---|
  3067 +|fun|string|-|是|指令名称|
  3068 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3069 +
  3070 +- **示例代码**
  3071 +```json
  3072 +{
  3073 + "fun":"stopKpScoreInput",
  3074 + "dataTag":"1"
  3075 +}
  3076 +``` -->
  3077 +##### [stopKpVote](#stopkpvote)
  3078 +停止自主录分
  3079 +
  3080 +#### 事件
  3081 +##### [sEvtStateCode](#sevtstatecode)
  3082 +发送指令后返回接收状态
  3083 +
  3084 +##### fEvtKpScore
  3085 +- **主题**:/basestation/\${baseSN}/receive
  3086 +- **功能描述**:返回键盘提交录分信息
  3087 +- **参数说明**
  3088 +
  3089 +|参数名|类型|限制|非空|说明|
  3090 +|---|---|---|---|---|
  3091 +|fun|string|-|是|指令名称|
  3092 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3093 +|data|array|-|是|传送参数的对象数组|
  3094 +|++keySn|string||是|键盘SN|
  3095 +|++keyValue|string||是|键盘提交的分值,1:10;2:0表示第1题提交10分,第二题提交0分|
  3096 +|++keyTime|double||是|录分时间,从启动录分开始计算,单位秒|
  3097 +|++voltage|double||是|键盘电量|
  3098 +|++retryCount|int||是|键盘提交数据的重发次数|
  3099 +
  3100 +- **示例代码**
  3101 +```json
  3102 +{
  3103 + "fun":"fEvtKpScore",
  3104 + "dataTag":"1",
  3105 + "data": [{
  3106 + "keySn": "1234567890",
  3107 + "keyValue":"1:8;2:7.5;3:2;4:3",
  3108 + "keyTime":3.2
  3109 + },
  3110 + {
  3111 + "keySn": "1234567891",
  3112 + "keyValue":"1:10;2:0",
  3113 + "keyTime":3.5
  3114 + }
  3115 + ]
  3116 +}
2353 ``` 3117 ```
2354 \ No newline at end of file 3118 \ No newline at end of file
通讯协议-SDK应用部分.md
@@ -8,7 +8,7 @@ WSCmdApp协议接口说明 @@ -8,7 +8,7 @@ WSCmdApp协议接口说明
8 8
9 9
10 <div style="text-align: center;font-size: 30px;"> 10 <div style="text-align: center;font-size: 30px;">
11 -Ver5.1.10 11 +Ver5.1.11
12 </div> 12 </div>
13 <br> 13 <br>
14 <br> 14 <br>
@@ -24,7 +24,7 @@ Ver5.1.10 @@ -24,7 +24,7 @@ Ver5.1.10
24 <br> 24 <br>
25 25
26 <div style="text-align: center;font-size: 30px;"> 26 <div style="text-align: center;font-size: 30px;">
27 -二〇二四年 27 +二〇二四年
28 </div> 28 </div>
29 29
30 <br> 30 <br>
@@ -38,7 +38,7 @@ Ver5.1.10 @@ -38,7 +38,7 @@ Ver5.1.10
38 38
39 起草人:陈定敏 39 起草人:陈定敏
40 40
41 -最新版本作者: 陈定敏 41 +最新版本作者: 刘琴
42 <br> 42 <br>
43 <br> 43 <br>
44 | 文档版本 | 日期 | 作者 | 版本说明 | 44 | 文档版本 | 日期 | 作者 | 版本说明 |
@@ -52,6 +52,8 @@ Ver5.1.10 @@ -52,6 +52,8 @@ Ver5.1.10
52 |5.1.8| 2024年07月01日|陈定敏|1. 投票反馈数据增加电池状态| 52 |5.1.8| 2024年07月01日|陈定敏|1. 投票反馈数据增加电池状态|
53 |5.1.9| 2024年07月19日|陈定敏|1. 增加获取SDK版本接口| 53 |5.1.9| 2024年07月19日|陈定敏|1. 增加获取SDK版本接口|
54 |5.1.10| 2024年09月03日|陈定敏|1. 移去主动获取在线信息接口| 54 |5.1.10| 2024年09月03日|陈定敏|1. 移去主动获取在线信息接口|
  55 +|5.1.11| 2024年10月17日|刘琴|1. 增加设置基站容量的接口|
  56 +|5.1.12| 2024年11月01日|刘琴|1. 修改writeKeyMessage接口中keySnList说明|
55 57
56 <br> 58 <br>
57 59
@@ -706,6 +708,7 @@ infos:{} @@ -706,6 +708,7 @@ infos:{}
706 708
707 fun: "keyPadAuthorize" // 709 fun: "keyPadAuthorize" //
708 baseId: "1"//收到的基站ID 710 baseId: "1"//收到的基站ID
  711 +keySnList:[{"keySn": "0112540402"}] //指定键盘SN,不可为空
709 params:{} //默认空 712 params:{} //默认空
710 713
711 | **Json字段** | **字段含义** | **赋值及含义** | 714 | **Json字段** | **字段含义** | **赋值及含义** |
@@ -3985,6 +3988,34 @@ params:{}//可不填 @@ -3985,6 +3988,34 @@ params:{}//可不填
3985 } 3988 }
3986 ``` 3989 ```
3987 3990
  3991 +写
  3992 +
  3993 +发送:
  3994 +
  3995 +fun: "writeBaseStationCapacity" //写基站容量
  3996 +baseId: 1//1~32 (必须指定基站)
  3997 +params:{"keypadNumber":"60","lock":"1"}//
  3998 +
  3999 +| **Json字段** | **字段含义** | **赋值及含义** |
  4000 +| --- | --- | --- |
  4001 +|keypadNumber|基站容量|基站键盘容量|
  4002 +|lock|是否锁定|现只支持设置1-锁定|
  4003 +
  4004 +
  4005 +指令样例:
  4006 +```json
  4007 +{
  4008 + "fun": "writeBaseStationPairMode",
  4009 + "baseId": 1,
  4010 + "baseSn":"2023031402",
  4011 + "params": {
  4012 + "keypadNumber": "60",
  4013 + "lock": "1"
  4014 + },
  4015 + "packetTag": "1"
  4016 +}
  4017 +```
  4018 +
3988 返回 4019 返回
3989 4020
3990 接收: 4021 接收:
@@ -4601,7 +4632,7 @@ params:{} //数组对象,指定键盘需填 @@ -4601,7 +4632,7 @@ params:{} //数组对象,指定键盘需填
4601 发送: 4632 发送:
4602 fun: "addWhiteList" //追加键盘 4633 fun: "addWhiteList" //追加键盘
4603 params:{} //键盘sn 4634 params:{} //键盘sn
4604 -keySnList:[ "keySn":"2111120140"] //列表不能为空 4635 +keySnList:[ {"keySn":"2111120140"} ] //列表不能为空
4605 4636
4606 指令样例: 4637 指令样例:
4607 4638
@@ -4650,8 +4681,7 @@ infos:{}// @@ -4650,8 +4681,7 @@ infos:{}//
4650 发送: 4681 发送:
4651 fun: "delWhiteList" //踢出键盘,删除键盘 4682 fun: "delWhiteList" //踢出键盘,删除键盘
4652 params:{} //键盘sn 4683 params:{} //键盘sn
4653 -keySnList:[ "keySn":"2111120140"] //列表不能为空  
4654 - 4684 +keySnList:[ {"keySn":"2111120140"} ] //列表不能为空
4655 4685
4656 指令样例: 4686 指令样例:
4657 4687
@@ -4889,13 +4919,13 @@ infos:{ }//返回基站 @@ -4889,13 +4919,13 @@ infos:{ }//返回基站
4889 4919
4890 4920
4891 fun: "writeKeypadDevice" //写键盘外设,由led灯、蜂鸣器、马达组合 4921 fun: "writeKeypadDevice" //写键盘外设,由led灯、蜂鸣器、马达组合
  4922 +keySnList:[{"keySn":"0007899478"}] //指定键盘SN列表,为空表示所有在线键盘
4892 params:{} // 4923 params:{} //
4893 4924
4894 数组对象,对象中的默认值为空字符串,各类(led、beep、motor)外设字段都不设置,表示该类不设置 4925 数组对象,对象中的默认值为空字符串,各类(led、beep、motor)外设字段都不设置,表示该类不设置
4895 4926
4896 | **Json字段** | **字段含义** | **赋值及含义** | 4927 | **Json字段** | **字段含义** | **赋值及含义** |
4897 | --- | --- | --- | 4928 | --- | --- | --- |
4898 -| keySn | 键盘SN |空字符串,为所有在线键盘|  
4899 | ledTimes | Led灯闪烁次数 | 0~255 (0是马上灭,255是长亮)| 4929 | ledTimes | Led灯闪烁次数 | 0~255 (0是马上灭,255是长亮)|
4900 | ledOnTime | Led灯每次开时间 |0~255 (单位0.1s)| 4930 | ledOnTime | Led灯每次开时间 |0~255 (单位0.1s)|
4901 | ledOffTime | Led灯每次关时间 |0~255 (单位0.1s,为0就是连续亮)| 4931 | ledOffTime | Led灯每次关时间 |0~255 (单位0.1s,为0就是连续亮)|
@@ -5398,11 +5428,11 @@ infos:{&quot;keySn&quot;:&quot;1837454011&quot;,&quot;state&quot;:&quot;OK&quot;}//遥控键盘关机 @@ -5398,11 +5428,11 @@ infos:{&quot;keySn&quot;:&quot;1837454011&quot;,&quot;state&quot;:&quot;OK&quot;}//遥控键盘关机
5398 5428
5399 5429
5400 fun: "writeKeyMessage" //写键盘短消息 5430 fun: "writeKeyMessage" //写键盘短消息
  5431 +keySnList:[{"keySn":"0007899478"}] //指定键盘SN列表,为空表示所有在线键盘
5401 params:{} // 数组对象,对象中的默认值为空字符串 5432 params:{} // 数组对象,对象中的默认值为空字符串
5402 5433
5403 | **Json字段** | **字段含义** | **赋值及含义** | 5434 | **Json字段** | **字段含义** | **赋值及含义** |
5404 | --- | --- | --- | 5435 | --- | --- | --- |
5405 -|keySn|键盘SN|空字符串,为所有在线键盘|  
5406 |txt|短消息内容|字符串最长40字节[20汉字]| 5436 |txt|短消息内容|字符串最长40字节[20汉字]|
5407 5437
5408 5438
@@ -5523,7 +5553,6 @@ infos:{}// @@ -5523,7 +5553,6 @@ infos:{}//
5523 5553
5524 | **Json字段** | **字段含义** | **赋值及含义** | 5554 | **Json字段** | **字段含义** | **赋值及含义** |
5525 | --- | --- | --- | 5555 | --- | --- | --- |
5526 -|keySn|键盘SN||  
5527 |state|返回信息|OK(成功)| 5556 |state|返回信息|OK(成功)|
5528 5557
5529 5558
通讯协议-SDK应用部分[内部].md
@@ -8,7 +8,7 @@ WSCmdApp协议接口说明 @@ -8,7 +8,7 @@ WSCmdApp协议接口说明
8 8
9 9
10 <div style="text-align: center;font-size: 30px;"> 10 <div style="text-align: center;font-size: 30px;">
11 -Ver5.1.9 11 +Ver5.1.11
12 </div> 12 </div>
13 <br> 13 <br>
14 <br> 14 <br>
@@ -24,7 +24,7 @@ Ver5.1.9 @@ -24,7 +24,7 @@ Ver5.1.9
24 <br> 24 <br>
25 25
26 <div style="text-align: center;font-size: 30px;"> 26 <div style="text-align: center;font-size: 30px;">
27 -二〇二年十月 27 +二〇二年十月
28 </div> 28 </div>
29 29
30 <br> 30 <br>
@@ -38,7 +38,7 @@ Ver5.1.9 @@ -38,7 +38,7 @@ Ver5.1.9
38 38
39 起草人:陈定敏 39 起草人:陈定敏
40 40
41 -最新版本作者: 陈定敏 41 +最新版本作者: 刘琴
42 <br> 42 <br>
43 <br> 43 <br>
44 | 文档版本 | 日期 | 作者 | 版本说明 | 44 | 文档版本 | 日期 | 作者 | 版本说明 |
@@ -51,6 +51,9 @@ Ver5.1.9 @@ -51,6 +51,9 @@ Ver5.1.9
51 |5.1.7| 2024年04月22日|陈定敏|1. 增加后台签到接口<br>2. 增加键盘最终提交状态接口| 51 |5.1.7| 2024年04月22日|陈定敏|1. 增加后台签到接口<br>2. 增加键盘最终提交状态接口|
52 |5.1.8| 2024年07月01日|陈定敏|1. 投票反馈数据增加电池状态| 52 |5.1.8| 2024年07月01日|陈定敏|1. 投票反馈数据增加电池状态|
53 |5.1.9| 2024年07月19日|陈定敏|1. 增加获取SDK版本接口| 53 |5.1.9| 2024年07月19日|陈定敏|1. 增加获取SDK版本接口|
  54 +|5.1.10| 2024年09月03日|陈定敏|1. 外部版移去主动获取在线信息接口,版本号更新|
  55 +|5.1.11| 2024年10月17日|刘琴|1. 增加设置基站容量的接口|
  56 +|5.1.12| 2024年11月01日|刘琴|1. 修改writeKeyMessage接口中keySnList说明|
54 57
55 <br> 58 <br>
56 59
@@ -705,6 +708,7 @@ infos:{} @@ -705,6 +708,7 @@ infos:{}
705 708
706 fun: "keyPadAuthorize" // 709 fun: "keyPadAuthorize" //
707 baseId: "1"//收到的基站ID 710 baseId: "1"//收到的基站ID
  711 +keySnList:[{"keySn": "0112540402"}] //指定键盘SN,不可为空
708 params:{} //默认空 712 params:{} //默认空
709 713
710 | **Json字段** | **字段含义** | **赋值及含义** | 714 | **Json字段** | **字段含义** | **赋值及含义** |
@@ -4920,6 +4924,34 @@ params:{}//可不填 @@ -4920,6 +4924,34 @@ params:{}//可不填
4920 } 4924 }
4921 ``` 4925 ```
4922 4926
  4927 +写
  4928 +
  4929 +发送:
  4930 +
  4931 +fun: "writeBaseStationCapacity" //写基站容量
  4932 +baseId: 1//1~32 (必须指定基站)
  4933 +params:{"keypadNumber":"60","lock":"1"}//
  4934 +
  4935 +| **Json字段** | **字段含义** | **赋值及含义** |
  4936 +| --- | --- | --- |
  4937 +|keypadNumber|基站容量|基站键盘容量|
  4938 +|lock|是否锁定|现只支持设置1-锁定|
  4939 +
  4940 +
  4941 +指令样例:
  4942 +```json
  4943 +{
  4944 + "fun": "writeBaseStationPairMode",
  4945 + "baseId": 1,
  4946 + "baseSn":"2023031402",
  4947 + "params": {
  4948 + "keypadNumber": "60",
  4949 + "lock": "1"
  4950 + },
  4951 + "packetTag": "1"
  4952 +}
  4953 +```
  4954 +
4923 返回 4955 返回
4924 4956
4925 接收: 4957 接收:
@@ -5536,7 +5568,7 @@ params:{} //数组对象,指定键盘需填 @@ -5536,7 +5568,7 @@ params:{} //数组对象,指定键盘需填
5536 发送: 5568 发送:
5537 fun: "addWhiteList" //追加键盘 5569 fun: "addWhiteList" //追加键盘
5538 params:{} //键盘sn 5570 params:{} //键盘sn
5539 -keySnList:[ "keySn":"2111120140"] //列表不能为空 5571 +keySnList:[ {"keySn":"2111120140"} ] //列表不能为空
5540 5572
5541 指令样例: 5573 指令样例:
5542 5574
@@ -5585,8 +5617,7 @@ infos:{}// @@ -5585,8 +5617,7 @@ infos:{}//
5585 发送: 5617 发送:
5586 fun: "delWhiteList" //踢出键盘,删除键盘 5618 fun: "delWhiteList" //踢出键盘,删除键盘
5587 params:{} //键盘sn 5619 params:{} //键盘sn
5588 -keySnList:[ "keySn":"2111120140"] //列表不能为空  
5589 - 5620 +keySnList:[ {"keySn":"2111120140"} ] //列表不能为空
5590 5621
5591 指令样例: 5622 指令样例:
5592 5623
@@ -6062,13 +6093,13 @@ infos:{&quot;bic&quot;:&quot;A455&quot;, &quot;pid&quot;: &quot;EA10&quot;}// @@ -6062,13 +6093,13 @@ infos:{&quot;bic&quot;:&quot;A455&quot;, &quot;pid&quot;: &quot;EA10&quot;}//
6062 6093
6063 6094
6064 fun: "writeKeypadDevice" //写键盘外设,由led灯、蜂鸣器、马达组合 6095 fun: "writeKeypadDevice" //写键盘外设,由led灯、蜂鸣器、马达组合
  6096 +keySnList:[{"keySn":"0007899478"}] //指定键盘SN列表,为空表示所有在线键盘
6065 params:{} // 6097 params:{} //
6066 6098
6067 数组对象,对象中的默认值为空字符串,各类(led、beep、motor)外设字段都不设置,表示该类不设置 6099 数组对象,对象中的默认值为空字符串,各类(led、beep、motor)外设字段都不设置,表示该类不设置
6068 6100
6069 | **Json字段** | **字段含义** | **赋值及含义** | 6101 | **Json字段** | **字段含义** | **赋值及含义** |
6070 | --- | --- | --- | 6102 | --- | --- | --- |
6071 -| keySn | 键盘SN |空字符串,为所有在线键盘|  
6072 | ledTimes | Led灯闪烁次数 | 0~255 (0是马上灭,255是长亮)| 6103 | ledTimes | Led灯闪烁次数 | 0~255 (0是马上灭,255是长亮)|
6073 | ledOnTime | Led灯每次开时间 |0~255 (单位0.1s)| 6104 | ledOnTime | Led灯每次开时间 |0~255 (单位0.1s)|
6074 | ledOffTime | Led灯每次关时间 |0~255 (单位0.1s,为0就是连续亮)| 6105 | ledOffTime | Led灯每次关时间 |0~255 (单位0.1s,为0就是连续亮)|
@@ -6627,11 +6658,11 @@ infos:{&quot;value&quot;:&quot;0&quot;}//10秒 @@ -6627,11 +6658,11 @@ infos:{&quot;value&quot;:&quot;0&quot;}//10秒
6627 6658
6628 6659
6629 fun: "writeKeyMessage" //写键盘短消息 6660 fun: "writeKeyMessage" //写键盘短消息
  6661 +keySnList:[{"keySn":"0007899478"}] //指定键盘SN列表,为空表示所有在线键盘
6630 params:{} // 数组对象,对象中的默认值为空字符串 6662 params:{} // 数组对象,对象中的默认值为空字符串
6631 6663
6632 | **Json字段** | **字段含义** | **赋值及含义** | 6664 | **Json字段** | **字段含义** | **赋值及含义** |
6633 | --- | --- | --- | 6665 | --- | --- | --- |
6634 -|keySn|键盘SN|空字符串,为所有在线键盘|  
6635 |txt|短消息内容|字符串最长40字节[20汉字]| 6666 |txt|短消息内容|字符串最长40字节[20汉字]|
6636 6667
6637 6668
@@ -6887,7 +6918,6 @@ infos:{}// @@ -6887,7 +6918,6 @@ infos:{}//
6887 6918
6888 | **Json字段** | **字段含义** | **赋值及含义** | 6919 | **Json字段** | **字段含义** | **赋值及含义** |
6889 | --- | --- | --- | 6920 | --- | --- | --- |
6890 -|keySn|键盘SN||  
6891 |state|返回信息|OK(成功)| 6921 |state|返回信息|OK(成功)|
6892 6922
6893 6923
通讯协议-教育新版-基站部分.md
@@ -2093,7 +2093,7 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键 @@ -2093,7 +2093,7 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键
2093 | 1 | BASECMD | 0xE1 基站管理类指令 | 2093 | 1 | BASECMD | 0xE1 基站管理类指令 |
2094 | 2 | BASEID | 指定的基站编号,为0时候不指定 | 2094 | 2 | BASEID | 指定的基站编号,为0时候不指定 |
2095 | 3 | CMDTYPE | 基站管理命令类型<br>22 基站下载多包 | 2095 | 3 | CMDTYPE | 基站管理命令类型<br>22 基站下载多包 |
2096 -| 4 | MODE | 1 进入或退出下载状态 | 2096 +| 4 | MODE | 1 进入或退出下载状态 <br><font color="#FF0000"> 31后台静默升级|
2097 | 5 | ID/SN | 1:2字节ID模式; <br>2:4字节SN; <br>3:6字节SN模式 | 2097 | 5 | ID/SN | 1:2字节ID模式; <br>2:4字节SN; <br>3:6字节SN模式 |
2098 | 6 | ~~NC~~ || 2098 | 6 | ~~NC~~ ||
2099 | 7 | DCMD | 模式 1进入下载 0退出下载 | 2099 | 7 | DCMD | 模式 1进入下载 0退出下载 |
@@ -2142,7 +2142,7 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键 @@ -2142,7 +2142,7 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键
2142 | 1 | BASECMD | 0x61 基站管理类指令 | 2142 | 1 | BASECMD | 0x61 基站管理类指令 |
2143 | 2 | BASEID | 指定的基站编号,为0时候不指定 | 2143 | 2 | BASEID | 指定的基站编号,为0时候不指定 |
2144 | 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 | 2144 | 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
2145 -| 4 | DOWNCMD | 4 下载具体数据--16字节 <br>6 下载具体数据—512字节每片段 <br>7 下载具体数据---64字节(48字节有效,区别于4类型的16字节有效) 10 基站问64字节包(根据代码补充)<br>11 基站问512字节包(根据代码补充) <br><font color="#FF0000">32 后台静默升级基站问64字节包(根据代码补充)等于普通模式的10 <br>33 后台静默升级 载具体数据---64字节 等于普通模式7| 2145 +| 4 | DOWNCMD | 4 下载具体数据--16字节 <br>6 下载具体数据—512字节每片段 <br>7 下载具体数据---64字节(48字节有效,区别于4类型的16字节有效) 10 基站问64字节包(根据代码补充)<br>11 基站问512字节包(根据代码补充) <br><font color="#FF0000">37 后台静默升级;sdk向基站发送固件数据(相当于普通模式下7)|
2146 | 5 | DOWNTYPE | 多包类型<br>30 短信广播信息(SDK组包模式) | 2146 | 5 | DOWNTYPE | 多包类型<br>30 短信广播信息(SDK组包模式) |
2147 | 6 | DOWNID | 数据包标识码(DOWNTYPE=30时,是总包数)<br>文件下载模式时候是最高位地址 V4.52<br>由于非文件下载模式PACKH加上PACKL,只能下载65536字节,文件下载模式为支持大文件,用DOWNID作为高位地址,可以下载16384K字节 | 2147 | 6 | DOWNID | 数据包标识码(DOWNTYPE=30时,是总包数)<br>文件下载模式时候是最高位地址 V4.52<br>由于非文件下载模式PACKH加上PACKL,只能下载65536字节,文件下载模式为支持大文件,用DOWNID作为高位地址,可以下载16384K字节 |
2148 | 7 | PACKH | 数据段编号,0-255 | 2148 | 7 | PACKH | 数据段编号,0-255 |
@@ -2158,7 +2158,7 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键 @@ -2158,7 +2158,7 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键
2158 | 1 | BASECMD | 0xE1 基站管理类指令 | 2158 | 1 | BASECMD | 0xE1 基站管理类指令 |
2159 | 2 | BASEID | 指定的基站编号,为0时候不指定 | 2159 | 2 | BASEID | 指定的基站编号,为0时候不指定 |
2160 | 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 | 2160 | 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
2161 -| 4 | MODE | 4下载具体数据的应答或请求具体数据<br>6 下载具体数据的应答或请求传输—512字节每片段<br>7 下载具体数据(48字节有效) | 2161 +| 4 | MODE | 4下载具体数据的应答或请求具体数据<br>6 下载具体数据的应答或请求传输—512字节每片段<br>7 下载具体数据(48字节有效)<br><font color="#FF0000">37 后台静默升级; |
2162 | 5 | DOWNTYPE | 多包类型 | 2162 | 5 | DOWNTYPE | 多包类型 |
2163 | 6 | DOWNID | 数据包标识码<br>文件下载模式时候是最高位地址 V4.52<br>由于非文件下载模式PACKH加上PACKL,只能下载65536字节,文件下载模式为支持大文件,用DOWNID作为高位地址,可以下载16384K字节 | 2163 | 6 | DOWNID | 数据包标识码<br>文件下载模式时候是最高位地址 V4.52<br>由于非文件下载模式PACKH加上PACKL,只能下载65536字节,文件下载模式为支持大文件,用DOWNID作为高位地址,可以下载16384K字节 |
2164 | 7 | PACKH | 数据段编号,0-255 | 2164 | 7 | PACKH | 数据段编号,0-255 |
@@ -2202,12 +2202,13 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键 @@ -2202,12 +2202,13 @@ S5,电脑通知基站退出下载,基站通知所有(包括失败的)键
2202 | 1 | BASECMD | 0xE1 基站管理类指令 | 2202 | 1 | BASECMD | 0xE1 基站管理类指令 |
2203 | 2 | BASEID | 指定的基站编号,为0时候不指定 | 2203 | 2 | BASEID | 指定的基站编号,为0时候不指定 |
2204 | 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 | 2204 | 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
2205 -| 4 | MODE | 6 上报状态<br>9 上报状态,告诉sdk,底层键盘固件升级完成<br>10 向sdk请求(索要)数据包(数据包以1K为单位)byte6之后的数据无效 | 2205 +| 4 | MODE | 6 上报状态<br>9 上报状态,告诉sdk,底层键盘固件升级完成<br>10 向sdk请求(索要)数据包(数据包以1K为单位)byte6之后的数据无效 <br><font color="#FF0000"> 39 后台静默升级 上报状态(相当于普通模式下的9) <br><font color="#FF0000"> 38 后台静默升级 向sdk请求(索要)数据包(数据包以1K为单位)(相当于普通模式下的10) |
2206 | 5 | PACKH | 数据段编号,0-255<br>申请的数据包号PACK\_H | 2206 | 5 | PACKH | 数据段编号,0-255<br>申请的数据包号PACK\_H |
2207 | 6 | PACKL | 数据片编号, 0-15<br>申请的数据包号PACK\_L | 2207 | 6 | PACKL | 数据片编号, 0-15<br>申请的数据包号PACK\_L |
2208 | 7 | Update status | 2-失败;(包括通知键盘进入下载和数据块下载失败;)<br>1-全部完成,电脑可以下一个流程(包括本次256字节成功、键盘进入下载、键盘退出下载) | 2208 | 7 | Update status | 2-失败;(包括通知键盘进入下载和数据块下载失败;)<br>1-全部完成,电脑可以下一个流程(包括本次256字节成功、键盘进入下载、键盘退出下载) |
2209 | 8-13 | Keypad ID/SN | ID/SN 号,固定6字节, 高位在前 | 2209 | 8-13 | Keypad ID/SN | ID/SN 号,固定6字节, 高位在前 |
2210 -| 14-24 | NC | 参数无意义 | 2210 +| 14 | HW |键盘硬件版本 |
  2211 +| 15-24 | NC | 参数无意义 |
2211 2212
2212 电脑确认: 2213 电脑确认:
2213 2214
@@ -2746,11 +2747,13 @@ step3:sdk询问 数据是否接收正确;基站回复,如果不正确 sdk重 @@ -2746,11 +2747,13 @@ step3:sdk询问 数据是否接收正确;基站回复,如果不正确 sdk重
2746 | 2 | BASEID | 指定的基站编号,为0时候不指定 | 2747 | 2 | BASEID | 指定的基站编号,为0时候不指定 |
2747 | 3 | CMDTYPE | 基站管理命令类型41 sdk下载多包 | 2748 | 3 | CMDTYPE | 基站管理命令类型41 sdk下载多包 |
2748 | 4 | type | 1 要下载的数据信息 | 2749 | 4 | type | 1 要下载的数据信息 |
2749 -| 5 | DATA-type | 1:基站固件升级 <br>2:键盘固件升级; <br>3:快速下发; <br>4:广播 | 2750 +| 5 | DATA-type | 1:基站固件升级 <br>2:键盘固件升级; <br>3:快速下发; <br>4:广播 <br><font color="#FF0000">32:后台静默升级键盘固件;|
2750 | 6-9 | DATA_total| 数据总字节数 高位在前 | 2751 | 6-9 | DATA_total| 数据总字节数 高位在前 |
2751 | 10-11 | DATA crc | 数据crc 高位在前| 2752 | 10-11 | DATA crc | 数据crc 高位在前|
2752 | 12-13 | byte per PACK |高位在前 每包数据最大字节长度:64... | 2753 | 12-13 | byte per PACK |高位在前 每包数据最大字节长度:64... |
2753 | other | default | | 2754 | other | default | |
  2755 +
  2756 +
2754 基站应答: 2757 基站应答:
2755 | **字节** | **标识符** | **描述** | 2758 | **字节** | **标识符** | **描述** |
2756 | --- | --- | --- | 2759 | --- | --- | --- |
@@ -2773,11 +2776,12 @@ step3:sdk询问 数据是否接收正确;基站回复,如果不正确 sdk重 @@ -2773,11 +2776,12 @@ step3:sdk询问 数据是否接收正确;基站回复,如果不正确 sdk重
2773 | 2 | BASEID | 指定的基站编号,为0时候不指定 | 2776 | 2 | BASEID | 指定的基站编号,为0时候不指定 |
2774 | 3 | CMDTYPE | 基站管理命令类型41 sdk下载多包 | 2777 | 3 | CMDTYPE | 基站管理命令类型41 sdk下载多包 |
2775 | 4 | type | 2 询问基站 | 2778 | 4 | type | 2 询问基站 |
2776 -| 5 | DATA-type | 1:基站固件升级 <br>2:键盘固件升级; <br>3:快速下发; <br>4:广播 | 2779 +| 5 | DATA-type | 1:基站固件升级 <br>2:键盘固件升级; <br>3:快速下发; <br>4:广播 <br><font color="#FF0000">32:后台静默升级键盘固件;|
2777 | 6-9 | DATA_total| 数据总字节数 高位在前| 2780 | 6-9 | DATA_total| 数据总字节数 高位在前|
2778 | 10-11 | DATA crc | 数据crc 高位在前| 2781 | 10-11 | DATA crc | 数据crc 高位在前|
2779 | 12-13 | byte per PACK |高位在前 每包数据最大字节长度:64 | 2782 | 12-13 | byte per PACK |高位在前 每包数据最大字节长度:64 |
2780 | other | default | | 2783 | other | default | |
  2784 +
2781 基站应答: 2785 基站应答:
2782 | **字节** | **标识符** | **描述** | 2786 | **字节** | **标识符** | **描述** |
2783 | --- | --- | --- | 2787 | --- | --- | --- |