Commit be0abb078f905a430ac32e46582d616aa7007f92

Authored by 刘琴
1 parent 8a741d5a

同步B200W开发进度协议修改部分

通讯协议-B200W-MQTT协议[外].md
... ... @@ -98,6 +98,24 @@ MQTT服务器配置结果检查
98 98  
99 99  
100 100 ## 功能速查一览表
  101 +### 公共方法
  102 +可以在多种业务中调用的通用方法
  103 +|功能归类|功能|API指令|指令/系统事件|
  104 +|---|---|---|---|
  105 +|停止投票|可停止通过调用startXXX启动的答题业务|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)||
  106 +
  107 +### 公共事件
  108 +无需调用指令,自动返回的事件
  109 +|功能归类|功能|API指令|指令/系统事件|
  110 +|---|---|---|---|
  111 +|公共事件|指令接收状态|-|[sEvtStateCode](#sevtstatecode)|
  112 +|公共事件|基站连接状态变化|-|[sEvtBsConnectState](#sevtbsconnectstate)|
  113 +|公共事件|基站信道冲突|-|[sEvtBsChannelConflict](#sevtbschannelconflict)|
  114 +|公共事件|键盘上线通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  115 +|公共事件|键盘刷卡事件|-|[sEvtBsNfcResults](#sevtbsnfcresults)|
  116 +|公共事件|键盘待机实时按键反馈|-|[sEvtKpRtFeedback](#sevtkprtfeedback)|
  117 +|公共事件|键盘举手键实时按键反馈|-|[sEvtKpHandUp](#sevtkphandup)|
  118 +
101 119 ### 基站管理
102 120 |功能归类|功能|API指令|指令/系统事件|
103 121 |---|---|---|---|
... ... @@ -108,15 +126,19 @@ MQTT服务器配置结果检查
108 126 |键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)||
109 127 |识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)|
110 128 |识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)|
  129 +|组网设置 - 组网模式|获取基站组网模式|[getBsNetworkMode](#getbsnetworkmode)|[fEvtBsNetworkMode](#fevtbsnetworkmode)|
111 130 |组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
112 131 |组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|
113 132 ||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
114 133 |组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)|
115 134 ||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
  135 +||读取已被占用信道|[getBsRFIChannel](#getbsrfichannel)|[fEvtBsRFIChannel](#fevtbsrfichannel)||
116 136 |登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)|
117 137 ||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
118   -|键盘统一设置 - 键盘语言|获取键盘语言|[getBsKpLanguage](#getbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|
119   -||设置键盘语言|[setBsKpLanguage](#setbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)||
  138 +|登录设置 - 登录密码|获取基站登录密码|[getBsLoginPwd](#getbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)|
  139 +||设置基站登录密码|[setBsLoginPwd](#setbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)||
  140 +|登录设置 - 基站登录状态|获取基站登录状态|[getBsLoginState](#getbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)|
  141 +||设置基站登录状态|[setBsLoginState](#setbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)||
120 142 |配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
121 143 ||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)|
122 144 |白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)|
... ... @@ -124,6 +146,8 @@ MQTT服务器配置结果检查
124 146 ||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
125 147 ||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtAddBsWhitelist](#fevtaddbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
126 148 ||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtDelBsWhitelist](#fevtdelbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
  149 +|基站加密 - 软件狗|获取基站软件狗|[getBsSoftwareKey](#getbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
  150 +||设置基站软件狗|[setBsSoftwareKey](#setbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
127 151 |网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
128 152 ||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
129 153 |网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
... ... @@ -144,7 +168,7 @@ MQTT服务器配置结果检查
144 168 |功能归类|功能|API指令|指令事件|
145 169 |---|---|---|---|
146 170 |同步签到|启动同步签到|[startKpSignIn](#startkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
147   -||停止同步签到|[stopKpSignIn](#stopkpsignin)|[sEvtStateCode](#sevtstatecode)|
  171 +||停止同步签到|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
148 172 |随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
149 173 ||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)|
150 174 ||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpLoginAllowed](#fevtkploginallowed)|
... ... @@ -152,19 +176,44 @@ MQTT服务器配置结果检查
152 176 |功能归类|功能|API指令|指令事件|
153 177 |---|---|---|---|
154 178 |判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQATrueFalse](#fevtqatruefalse)|
155   -||停止判断题答题|[stopQATrueFalse](#stopqatruefalse)|[sEvtStateCode](#sevtstatecode)|
  179 +||停止判断题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
156 180 |选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAChoice](#fevtqachoice)|
157   -||停止选择题答题|[stopQAChoice](#stopqachoice)|[sEvtStateCode](#sevtstatecode)|
  181 +||停止选择题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
158 182 |数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQANum](#fevtqanum)|
159   -||停止数字题答题|[stopQANum](#stopqanum)|[sEvtStateCode](#sevtstatecode)|
  183 +||停止数字题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
160 184 |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)|
161   -||停止抢答题答题|[stopQAQuicker](#stopqaquicker)|[sEvtStateCode](#sevtstatecode)|
  185 +||停止抢答题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  186 +|待机实时反馈|设置待机实时反馈状态|[setKpStbResponse](#setkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)<br>[sEvtKpRtFeedback](#sevtkprtfeedback)<br>[sEvtKpHandUp](#sevtkphandup)|
  187 +||设置待机实时反馈状态|[getKpStbResponse](#getkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)|
162 188 ### 在线测验
163 189 |功能归类|功能|API指令|指令事件|
164 190 |---|---|---|---|
165 191 |标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
166   -||停止标准测验|[stopKpExam](#stopkpexam)|[sEvtStateCode](#sevtstatecode)|
  192 +||停止标准测验|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
167 193 ||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  194 +|多科测验|启动多科测验|[startKpMultiExam](#startkpmultiexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  195 +||停止标准测验|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  196 +|自主录分|启动自主录分|[startKpScoreInput](#startkpscoreinput)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpScore](#fevtkpscore)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  197 +||停止自主录分|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  198 +
  199 +## 公共方法
  200 +### stopKpVote
  201 +- **主题**: /client/\${baseSN}/send
  202 +- **功能描述**:通用停止键盘答题方法,可以停止如同步签到、按键反馈、在线测验中调用startXXX方法启动的业务
  203 +- **参数说明**
  204 +
  205 +|参数名|类型|限制|非空|说明|
  206 +|-----|-----|-----|-----|-----|
  207 +|fun|string|-|是|事件类型|
  208 +|dataTag|string||否|数据包标识,不需要时可传空字符串|
  209 +
  210 +- **示例代码**
  211 +```json
  212 +{
  213 + "fun":"stopKpVote",
  214 + "dataTag":"1"
  215 +}
  216 +```
168 217  
169 218 ## 公共事件
170 219 ### sEvtBsConnectState
... ... @@ -241,6 +290,7 @@ MQTT服务器配置结果检查
241 290 |dataTag|string|-|否|数据包标识,不需要时可传空字符串|
242 291 |data|object|-|是|传送参数的对象|
243 292 |+keySn|string||是|刷卡的键盘SN|
  293 +|+cardType|int||是|刷卡的键盘类型<br>1-NFC类型<br>2-M1类型|
244 294 |+value|int||是|刷卡的状态<br>1-成功<br>2-失败|
245 295  
246 296 - **示例代码**
... ... @@ -250,7 +300,8 @@ MQTT服务器配置结果检查
250 300 "fun":"sEvtBsNfcResults",
251 301 "dataTag":"1", //不需要时可传空字符串
252 302 "data":{
253   - "keySn":"1234567890",
  303 + "keySn":"1234567890",
  304 + "cardType":1,
254 305 "value":1
255 306 }
256 307 }
... ... @@ -283,7 +334,56 @@ MQTT服务器配置结果检查
283 334 }
284 335 }
285 336 ```
  337 +### sEvtKpRtFeedback
  338 +- **主题**: /basestation/\${baseSN}/receive
  339 +- **功能描述**:开启键盘实时反馈后,键盘按键时上报
  340 +- **参数说明**
286 341  
  342 +|参数名|类型|限制|非空|说明|
  343 +|---|---|---|---|---|
  344 +|fun|string|-|是|事件名称|
  345 +|dataTag|string|-|否|数据包标识|
  346 +|data|array|-|是|传送参数的对象数组|
  347 +|++keySn|string||是|键盘SN|
  348 +|++keyValue|string||是|键盘提交的按键值|
  349 +|++voltage|double||是|键盘电量|
  350 +|++retryCount|int||是|键盘提交数据的重发次数|
  351 +
  352 +- **示例代码**
  353 +```json
  354 +{
  355 + "fun":"sEvtKpRtFeedback",
  356 + "dataTag":"1",
  357 + "data":[{
  358 + "keySn":"1234567890",
  359 + "keyValue":"A",
  360 + "voltage":2.6,
  361 + "retryCount":1
  362 + }]
  363 +}
  364 +```
  365 +### sEvtKpHandUp
  366 +- **主题**: /basestation/\${baseSN}/receive
  367 +- **功能描述**:开启键盘举手功能后,键盘按举手键时上报
  368 +- **参数说明**
  369 +
  370 +|参数名|类型|限制|非空|说明|
  371 +|---|---|---|---|---|
  372 +|fun|string|-|是|事件名称|
  373 +|dataTag|string|-|否|数据包标识|
  374 +|data|object|-|是|传送参数的对象|
  375 +|+keySn|string||是|举手的键盘SN|
  376 +
  377 +- **示例代码**
  378 +```json
  379 +{
  380 + "fun":"sEvtKpHandUp",
  381 + "dataTag":"1",
  382 + "data":{
  383 + "keySn":"1234567890"
  384 + }
  385 +}
  386 +```
287 387 ### sEvtStateCode
288 388 - **主题**: /basestation/\${baseSN}/receive
289 389 - **功能描述**:返回基站接收指令状态信息
... ... @@ -302,14 +402,22 @@ MQTT服务器配置结果检查
302 402 |0|指令收取成功|
303 403 |10001|不能正确解析的JSON数据|
304 404 |10002|解析JSON错误|
  405 +|10003|下发数据包超长|
305 406 |20001|基站未连接|
306 407 |20002|功能不支持|
307 408 |20003|基站SN格式不正确|
308 409 |20004|参数错误|
309   -|20005|基站在答题中|
  410 +|20005|dataTag错误|
  411 +|20006|键盘SN错误|
  412 +|20007|tip参数错误|
  413 +|20008|value参数错误|
  414 +|30001|基站在答题中|
  415 +|30002|基站忙(内存不足)|
  416 +|30003|基站执行失败|
310 417 |40001|升级功能只能支持一个基站|
311 418 |50001|此功能必须指定基站|
312 419 |60001|此功能必须指定键盘SN|
  420 +|70001|没有字库|
313 421  
314 422 - **示例代码**
315 423  
... ... @@ -318,7 +426,7 @@ MQTT服务器配置结果检查
318 426 "fun":"sEvtStateCode",
319 427 "dataTag":"1",
320 428 "data":{
321   - "funName":"startKpRollCall",
  429 + "funName":"startKpSignIn",
322 430 "code":"20005"
323 431 }
324 432 }
... ... @@ -372,7 +480,7 @@ MQTT服务器配置结果检查
372 480 参见基站连接变化系统通知
373 481  
374 482 ##### fEvtBsOnlineState
375   -- **主题**: <span class="yellowFill">/basestation/mutilBase/receive</span>
  483 +- **主题**: <span class="yellowFill">/basestation/multiBase/receive</span>
376 484 - **功能描述**:基站在线返回基站型号和基站SN
377 485 - **参数说明**
378 486  
... ... @@ -547,6 +655,23 @@ MQTT服务器配置结果检查
547 655  
548 656 ### 组网设置
549 657 #### 方法
  658 +##### getBsNetworkMode
  659 +- **主题**:/client/\${baseSN}/send
  660 +- **功能描述**:获取基站组网模式
  661 +- **参数说明**
  662 +
  663 +|参数名|类型|限制|是否必填|说明|
  664 +|---|---|---|---|---|
  665 +|fun|string|-|是|指令名称|
  666 +|dataTag|string|-|否|数据包标识,可为空字符串|
  667 +
  668 +- **示例代码**
  669 +```json
  670 +{
  671 + "fun":"getBsNetworkMode",
  672 + "dataTag":"1"
  673 +}
  674 +```
550 675 ##### getBsPairCode
551 676 - **主题**:/client/\${baseSN}/send
552 677 - **功能描述**:获取基站配对码
... ... @@ -652,7 +777,47 @@ MQTT服务器配置结果检查
652 777 }
653 778 ```
654 779  
  780 +##### getBsRFIChannel
  781 +- **主题**:/client/\${baseSN}/send
  782 +- **功能描述**:获取已被其他基站占用的信道
  783 +- **参数说明**
  784 +
  785 +|参数名|类型|限制|是否必填|说明|
  786 +|---|---|---|---|---|
  787 +|fun|string|-|是|指令名称|
  788 +|dataTag|string|-|否|数据包标识,可为空字符串|
  789 +
  790 +- **示例代码**
  791 +```json
  792 +{
  793 + "fun":"getBsRFIChannel",
  794 + "dataTag":"1"
  795 +}
  796 +```
  797 +
655 798 #### 事件
  799 +##### fEvtBsNetworkMode
  800 +- **主题**: /basestation/\${baseSN}/receive
  801 +- **功能描述**:返回基站组网模式
  802 +- **参数说明**
  803 +
  804 +|参数名|类型|限制|非空|说明|
  805 +|---|---|---|---|---|
  806 +|fun|string|-|是|事件名称|
  807 +|dataTag|string|-|否|数据包标识,可传空字符串|
  808 +|data|object|-|是|传送参数的对象|
  809 +|+value|string||是|基站的组网模式<br>1-配对模式<br>2-白名单模式|
  810 +
  811 +- **示例代码**
  812 +```json
  813 +{
  814 + "fun":"fEvtBsNetworkMode",
  815 + "dataTag":"1",
  816 + "data":{
  817 + "value":"1"
  818 + }
  819 +}
  820 +```
656 821 ##### fEvtBsPairCode
657 822 - **主题**: /basestation/\${baseSN}/receive
658 823 - **功能描述**:返回基站配对码
... ... @@ -701,6 +866,38 @@ MQTT服务器配置结果检查
701 866 }
702 867 ```
703 868  
  869 +##### fEvtBsRFIChannel
  870 +- **主题**: /basestation/\${baseSN}/receive
  871 +- **功能描述**:返回其他基站已占用的信道,频点冲突时,可以根据返回结果修改基站信道避开干扰
  872 +- **参数说明**
  873 +
  874 +|参数名|类型|限制|非空|说明|
  875 +|---|---|---|---|---|
  876 +|fun|string|-|是|事件名称|
  877 +|dataTag|string|-|否|数据包标识,可传空字符串|
  878 +|data|object|-|是|传送参数的对象|
  879 +|+value|string||是|其他基站已占用的信道,多个信道用英文","分隔,无占用信道返回0|
  880 +
  881 +- **示例代码**
  882 +```json
  883 +//信道1、2、14已被占用
  884 +{
  885 + "fun":"fEvtBsRFIChannel",
  886 + "dataTag":"1",
  887 + "data":{
  888 + "value":"1,2,14"
  889 + }
  890 +}
  891 +//无占用信道
  892 +{
  893 + "fun":"fEvtBsRFIChannel",
  894 + "dataTag":"1",
  895 + "data":{
  896 + "value":"0"
  897 + }
  898 +}
  899 +```
  900 +
704 901 ##### fEvtBsNfcLogin
705 902 - **主题**: /basestation/\${baseSN}/receive
706 903 - **功能描述**:返回基站是否允许NFC刷卡
... ... @@ -770,6 +967,85 @@ MQTT服务器配置结果检查
770 967 }
771 968 }
772 969 ```
  970 +##### getBsLoginPwd
  971 +- **主题**:/client/\${baseSN}/send
  972 +- **功能描述**:获取基站登录密码
  973 +- **参数说明**
  974 +
  975 +|参数名|类型|限制|是否必填|说明|
  976 +|---|---|---|---|---|
  977 +|fun|string|-|是|固定指令名称|
  978 +|dataTag|string|-|否|数据包标识|
  979 +
  980 +- **示例代码**
  981 +```json
  982 +{
  983 + "fun":"getBsLoginPwd",
  984 + "dataTag":"1"
  985 +}
  986 +```
  987 +##### setBsLoginPwd
  988 +- **主题**:/client/\${baseSN}/send
  989 +- **功能描述**:设置基站登录密码
  990 +- **参数说明**
  991 +
  992 +|参数名|类型|限制|是否必填|说明|
  993 +|---|---|---|---|---|
  994 +|fun|string|-|是|指令名称|
  995 +|dataTag|string|-|否|数据包标识,可为空字符串|
  996 +|data|object|-|是|传送参数的对象|
  997 +|+value|string||是|设置的基站登录密码,数字类型,最长4位,为空或设为0代表无需密码登录|
  998 +
  999 +- **示例代码**
  1000 +```json
  1001 +{
  1002 + "fun":"setBsLoginPwd",
  1003 + "dataTag":"1",
  1004 + "data":{
  1005 + "value":"1234"
  1006 + }
  1007 +}
  1008 +```
  1009 +##### getBsLoginState
  1010 +获取基站登录名称
  1011 +- **主题**:/client/\${baseSN}/send
  1012 +- **功能描述**:获取基站登录状态
  1013 +- **参数说明**
  1014 +
  1015 +|参数名|类型|限制|是否必填|说明|
  1016 +|---|---|---|---|---|
  1017 +|fun|string|-|是|固定指令名称|
  1018 +|dataTag|string|-|否|数据包标识|
  1019 +
  1020 +- **示例代码**
  1021 +```json
  1022 +{
  1023 + "fun":"getBsLoginState",
  1024 + "dataTag":"1"
  1025 +}
  1026 +```
  1027 +##### setBsLoginState
  1028 +- **主题**:/client/\${baseSN}/send
  1029 +- **功能描述**:设置基站登录状态
  1030 +- **参数说明**
  1031 +
  1032 +|参数名|类型|限制|是否必填|说明|
  1033 +|---|---|---|---|---|
  1034 +|fun|string|-|是|指令名称|
  1035 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1036 +|data|object|-|是|传送参数的对象|
  1037 +|+value|string||是|设置是否允许键盘自主登入<br>0 - 不允许键盘登入<br>1 - 允许键盘登入|
  1038 +
  1039 +- **示例代码**
  1040 +```json
  1041 +{
  1042 + "fun":"setBsLoginState",
  1043 + "dataTag":"1",
  1044 + "data":{
  1045 + "value":"1"
  1046 + }
  1047 +}
  1048 +```
773 1049  
774 1050 #### 事件
775 1051 ##### fEvtBsSSID
... ... @@ -795,7 +1071,59 @@ MQTT服务器配置结果检查
795 1071 }
796 1072 }
797 1073 ```
  1074 +##### fEvtBsLoginPwd
  1075 +- **主题**: /basestation/\${baseSN}/receive
  1076 +- **功能描述**:返回基站登录密码
  1077 +- **参数说明**
  1078 +
  1079 +|参数名|类型|限制|非空|说明|
  1080 +|---|---|---|---|---|
  1081 +|fun|string|-|是|事件名称|
  1082 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1083 +|data|object|-|是|传送参数的对象|
  1084 +|+value|string||是|基站登录密码,返回值为0代表无需密码登录|
798 1085  
  1086 +- **示例代码**
  1087 +```json
  1088 +{
  1089 + "fun":"fEvtBsLoginPwd",
  1090 + "dataTag":"1",
  1091 + "data":{
  1092 + "value":"1234"
  1093 + }
  1094 +}
  1095 +
  1096 +//无需密码登录
  1097 +{
  1098 + "fun":"fEvtBsLoginPwd",
  1099 + "dataTag":"1",
  1100 + "data":{
  1101 + "value":"0"
  1102 + }
  1103 +}
  1104 +```
  1105 +##### fEvtBsLoginState
  1106 +- **主题**: /basestation/\${baseSN}/receive
  1107 +- **功能描述**:返回基站登录状态
  1108 +- **参数说明**
  1109 +
  1110 +|参数名|类型|限制|非空|说明|
  1111 +|---|---|---|---|---|
  1112 +|fun|string|-|是|事件名称|
  1113 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1114 +|data|object|-|是|传送参数的对象|
  1115 +|+value|string||是|基站登录状态|
  1116 +
  1117 +- **示例代码**
  1118 +```json
  1119 +{
  1120 + "fun":"fEvtBsLoginState",
  1121 + "dataTag":"1",
  1122 + "data":{
  1123 + "value":"1"
  1124 + }
  1125 +}
  1126 +```
799 1127 ### 键盘统一设置
800 1128 #### 方法
801 1129 ##### getBsKpLanguage
... ... @@ -1205,7 +1533,7 @@ MQTT服务器配置结果检查
1205 1533 |+port|int||是|端口,默认1883|
1206 1534 |+userName|string||否|连接服务器的用户名,可不设置|
1207 1535 |+password|string||否|连接服务器的密码,可不设置|
1208   -|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
  1536 +|+interval|int|>=60|否|基站连接服务器失败后重连的间隔时长,单位秒|
1209 1537  
1210 1538 - **示例代码**
1211 1539  
... ... @@ -1218,7 +1546,7 @@ MQTT服务器配置结果检查
1218 1546 "port":1883,
1219 1547 "userName":"",
1220 1548 "password":"",
1221   - "interval":30
  1549 + "interval":60
1222 1550 }
1223 1551 }
1224 1552 ```
... ... @@ -1287,7 +1615,70 @@ MQTT服务器配置结果检查
1287 1615 }
1288 1616 }
1289 1617 ```
  1618 +### 基站加密
  1619 +#### 方法
  1620 +##### getBsSoftwareKey
  1621 +- **主题**:/client/\${baseSN}/send
  1622 +- **功能描述**:获取基站软件狗密钥
  1623 +- **参数说明**
  1624 +
  1625 +|参数名|类型|限制|是否必填|说明|
  1626 +|---|---|---|---|---|
  1627 +|fun|string|-|是|指令名称|
  1628 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1629 +
  1630 +- **示例代码**
  1631 +```json
  1632 +{
  1633 + "fun":"getBsSoftwareKey",
  1634 + "dataTag":"1"
  1635 +}
  1636 +```
  1637 +##### setBsSoftwareKey
  1638 +- **主题**:/client/\${baseSN}/send
  1639 +- **功能描述**:设置基站软件狗密钥
  1640 +- **参数说明**
  1641 +
  1642 +|参数名|类型|限制|是否必填|说明|
  1643 +|---|---|---|---|---|
  1644 +|fun|string|-|是|指令名称|
  1645 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1646 +|data|object|-|是|传送参数的对象|
  1647 +|+value|string|-|是|基站软件狗密钥,长度不超过32字节|
  1648 +
  1649 +- **示例代码**
  1650 +```json
  1651 +{
  1652 + "fun":"setBsSoftwareKey",
  1653 + "dataTag":"1",
  1654 + "data":{
  1655 + "value":"sunvote123456"
  1656 + }
  1657 +}
  1658 +```
  1659 +#### 事件
  1660 +##### fEvtBsSoftwareKey
  1661 +- **主题**:/basestation/\${baseSN}/receive
  1662 +- **功能描述**:返回基站的软件狗密钥
  1663 +- **参数说明**
1290 1664  
  1665 +|参数名|类型|限制|非空|说明|
  1666 +|---|---|---|---|---|
  1667 +|fun|string|-|是|指令名称|
  1668 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1669 +|data|object|-|是|传送参数的对象|
  1670 +|+value|string||是|返回基站的软件狗密钥|
  1671 +
  1672 +- **示例代码**
  1673 +```json
  1674 +{
  1675 + "fun":"fEvtBsSoftwareKey",
  1676 + "dataTag":"1",
  1677 + "data":{
  1678 + "value":"sunvote123456"
  1679 + }
  1680 +}
  1681 +```
1291 1682 ## 键盘管理
1292 1683 ### 交互设置
1293 1684 #### 方法
... ... @@ -1643,8 +2034,7 @@ MQTT服务器配置结果检查
1643 2034 }
1644 2035 }
1645 2036 ```
1646   -
1647   -##### stopKpSignIn
  2037 +<!-- ##### stopKpSignIn
1648 2038 - **主题**:/client/\${baseSN}/send
1649 2039 - **功能描述**:停止同步签到
1650 2040 - **参数说明**
... ... @@ -1660,7 +2050,10 @@ MQTT服务器配置结果检查
1660 2050 "fun":"stopKpSignIn",
1661 2051 "dataTag":"1"
1662 2052 }
1663   -```
  2053 +``` -->
  2054 +##### [stopKpVote](#stopkpvote)
  2055 +停止同步签到
  2056 +
1664 2057 #### 事件
1665 2058 ##### [sEvtStateCode](#sevtstatecode)
1666 2059 发送指令后返回接收状态
... ... @@ -1756,6 +2149,8 @@ MQTT服务器配置结果检查
1756 2149 |++keySn|string||是|键盘SN|
1757 2150 |++keyValue|string||是|键盘提交的按键值|
1758 2151 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2152 +|++voltage|double||是|键盘电量|
  2153 +|++retryCount|int||是|键盘提交数据的重发次数|
1759 2154  
1760 2155 - **示例代码**
1761 2156  
... ... @@ -1817,6 +2212,7 @@ MQTT服务器配置结果检查
1817 2212 |dataTag|string|-|否|数据包标识,可为空字符串|
1818 2213 |data|object|-|是|传送参数的对象|
1819 2214 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2215 +|+count|int||是|题目数量,1-16,>1多题快答|
1820 2216 |+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×|
1821 2217 |+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改|
1822 2218 |+tip|string||否|提示的标题,长度不超过16字符|
... ... @@ -1829,14 +2225,14 @@ MQTT服务器配置结果检查
1829 2225 "dataTag":"1",
1830 2226 "data":{
1831 2227 "keySns":[],
  2228 + "count":1,
1832 2229 "mode":1,
1833 2230 "allowModify":1,
1834 2231 "tip":"请判断对错"
1835 2232 }
1836 2233 }
1837 2234 ```
1838   -
1839   -##### stopQATrueFalse
  2235 +<!-- ##### stopQATrueFalse
1840 2236 - **主题**:/client/\${baseSN}/send
1841 2237 - **功能描述**:停止判断题答题
1842 2238 - **参数说明**
... ... @@ -1853,7 +2249,10 @@ MQTT服务器配置结果检查
1853 2249 "fun": "stopQATrueFalse",
1854 2250 "dataTag":"1"
1855 2251 }
1856   -```
  2252 +``` -->
  2253 +
  2254 +##### [stopKpVote](#stopkpvote)
  2255 +停止判断题答题
1857 2256  
1858 2257 #### 事件
1859 2258 ##### [sEvtStateCode](#sevtstatecode)
... ... @@ -1872,6 +2271,8 @@ MQTT服务器配置结果检查
1872 2271 |++keySn|string||是|键盘SN|
1873 2272 |++keyValue|string||是|键盘提交的按键值<br>1-对<br>2-错|
1874 2273 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2274 +|++voltage|double||是|键盘电量|
  2275 +|++retryCount|int||是|键盘提交数据的重发次数|
1875 2276  
1876 2277 - **示例代码**
1877 2278  
... ... @@ -1901,6 +2302,7 @@ MQTT服务器配置结果检查
1901 2302 |dataTag|string|-|否|数据包标识,可为空字符串|
1902 2303 |data|object|-|是|传送参数的对象|
1903 2304 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2305 +|+count|int||是|题目数量,1-16,>1多题快答<br>optionalN >1时无效|
1904 2306 |+mode|int||是|显示模式<br>1:显示字母(默认值) </br>2:显示数字 |
1905 2307 |+lessMode|int||是|迫选模式<br>0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 |
1906 2308 |+options|int||是|选项数量,1≤M≤10(默认值4)|
... ... @@ -1917,6 +2319,7 @@ MQTT服务器配置结果检查
1917 2319 "data":{
1918 2320 "keySns":[],
1919 2321 "mode": 1,
  2322 + "count":1,
1920 2323 "lessMode": 0,
1921 2324 "options": 4,
1922 2325 "optionalN": 1,
... ... @@ -1925,8 +2328,7 @@ MQTT服务器配置结果检查
1925 2328 }
1926 2329 }
1927 2330 ```
1928   -
1929   -##### stopQAChoice
  2331 +<!-- ##### stopQAChoice
1930 2332 - **主题**:/client/\${baseSN}/send
1931 2333 - **功能描述**:停止选择题答题
1932 2334 - **参数说明**
... ... @@ -1943,7 +2345,9 @@ MQTT服务器配置结果检查
1943 2345 "fun": "stopQAChoice",
1944 2346 "dataTag":"1"
1945 2347 }
1946   -```
  2348 +``` -->
  2349 +##### [stopKpVote](#stopkpvote)
  2350 +停止选择题答题
1947 2351  
1948 2352 #### 事件
1949 2353 ##### [sEvtStateCode](#sevtstatecode)
... ... @@ -1962,6 +2366,8 @@ MQTT服务器配置结果检查
1962 2366 |++keySn|string||是|键盘SN|
1963 2367 |++keyValue|string||是|键盘提交的按键值|
1964 2368 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2369 +|++voltage|double||是|键盘电量|
  2370 +|++retryCount|int||是|键盘提交数据的重发次数|
1965 2371  
1966 2372 - **示例代码**
1967 2373  
... ... @@ -2014,8 +2420,7 @@ MQTT服务器配置结果检查
2014 2420 }
2015 2421 }
2016 2422 ```
2017   -
2018   -##### stopQANum
  2423 +<!-- ##### stopQANum
2019 2424 - **主题**:/client/\${baseSN}/send
2020 2425 - **功能描述**:停止数字题答题
2021 2426 - **参数说明**
... ... @@ -2032,7 +2437,9 @@ MQTT服务器配置结果检查
2032 2437 "fun": "stopQANum",
2033 2438 "dataTag":"1"
2034 2439 }
2035   -```
  2440 +``` -->
  2441 +##### [stopKpVote](#stopkpvote)
  2442 +停止数字题答题
2036 2443  
2037 2444 #### 事件
2038 2445 ##### [sEvtStateCode](#sevtstatecode)
... ... @@ -2051,6 +2458,8 @@ MQTT服务器配置结果检查
2051 2458 |++keySn|string||是|键盘SN|
2052 2459 |++keyValue|string||是|键盘提交的按键值|
2053 2460 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2461 +|++voltage|double||是|键盘电量|
  2462 +|++retryCount|int||是|键盘提交数据的重发次数|
2054 2463  
2055 2464 - **示例代码**
2056 2465  
... ... @@ -2097,8 +2506,7 @@ MQTT服务器配置结果检查
2097 2506 }
2098 2507 }
2099 2508 ```
2100   -
2101   -##### stopQAQuicker
  2509 +<!-- ##### stopQAQuicker
2102 2510 - **主题**:/client/\${baseSN}/send
2103 2511 - **功能描述**:停止抢答答题
2104 2512 - **参数说明**
... ... @@ -2115,7 +2523,10 @@ MQTT服务器配置结果检查
2115 2523 "fun": "stopQAQuicker",
2116 2524 "dataTag":"1"
2117 2525 }
2118   -```
  2526 +``` -->
  2527 +
  2528 +##### [stopKpVote](#stopkpvote)
  2529 +停止抢答
2119 2530  
2120 2531 #### 事件
2121 2532 ##### [sEvtStateCode](#sevtstatecode)
... ... @@ -2134,6 +2545,8 @@ MQTT服务器配置结果检查
2134 2545 |++keySn|string||是|键盘SN|
2135 2546 |++keyValue|string||是|键盘提交的按键值|
2136 2547 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2548 +|++voltage|double||是|键盘电量|
  2549 +|++retryCount|int||是|键盘提交数据的重发次数|
2137 2550  
2138 2551 - **示例代码**
2139 2552  
... ... @@ -2148,6 +2561,113 @@ MQTT服务器配置结果检查
2148 2561 }]
2149 2562 }
2150 2563 ```
  2564 +### 待机实时反馈
  2565 +#### 方法
  2566 +##### setKpStbResponse
  2567 +- **主题**:/client/\${baseSN}/send
  2568 +- **功能描述**:启动待机实时反馈
  2569 +- **参数说明**
  2570 +
  2571 +|参数名|类型|限制|是否必填|说明|
  2572 +|---|---|---|---|---|
  2573 +|fun|string|-|是|指令名称|
  2574 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2575 +|data|object|-|是|传送参数的对象|
  2576 +|+state|int||是|启用待机实时反馈<br>0-不启用<br>1-启用|
  2577 +|+mode|int||是|启动待机反馈类型,state=1时有效<br>0-举手<br>1-指定按键反馈|
  2578 +|+keys|int||是|有效按键数量,state=1且mode=1时有效, 范围1-10|
  2579 +
  2580 +- **示例代码**
  2581 +```json
  2582 +//启用举手反馈
  2583 +{
  2584 + "fun":"setKpStbResponse",
  2585 + "dataTag":"1",
  2586 + "data":{
  2587 + "state":1,
  2588 + "mode":0
  2589 + }
  2590 +}
  2591 +//启用待机按键反馈
  2592 +{
  2593 + "fun":"setKpStbResponse",
  2594 + "dataTag":"1",
  2595 + "data":{
  2596 + "state":1,
  2597 + "mode":1,
  2598 + "keys":4
  2599 + }
  2600 +}
  2601 +//关闭待机按键反馈
  2602 +{
  2603 + "fun":"setKpStbResponse",
  2604 + "dataTag":"1",
  2605 + "data":{
  2606 + "state":0
  2607 + }
  2608 +}
  2609 +```
  2610 +
  2611 +##### getKpStbResponse
  2612 +- **主题**:/client/\${baseSN}/send
  2613 +- **功能描述**:获取实时反馈是否打开
  2614 +- **参数说明**
  2615 +
  2616 +|参数名|类型|限制|是否必填|说明|
  2617 +|---|---|---|---|---|
  2618 +|fun|string|-|是|指令名称|
  2619 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2620 +
  2621 +- **示例代码**
  2622 +```json
  2623 +//启用举手反馈
  2624 +{
  2625 + "fun":"getKpStbResponse",
  2626 + "dataTag":"1"
  2627 +}
  2628 +```
  2629 +
  2630 +#### 事件
  2631 +##### fEvtKpStbResponse
  2632 +- **主题**:/basestation/\${baseSN}/receive
  2633 +- **功能描述**:返回当前待机按键反馈开启状态
  2634 +- **参数说明**
  2635 +
  2636 +|参数名|类型|限制|非空|说明|
  2637 +|---|---|---|---|---|
  2638 +|fun|string|-|是|指令名称|
  2639 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2640 +|data|array|-|是|传送参数的对象数组|
  2641 +|+state|int||是|启用待机实时反馈<br>0-未启用<br>1-启用|
  2642 +|+mode|int||是|当前启动待机反馈类型,state=1时返回<br>0-举手<br>1-指定按键反馈|
  2643 +
  2644 +- **示例代码**
  2645 +```json
  2646 +//当前启用待机实时反馈,模式为指定按键反馈
  2647 +{
  2648 + "fun":"fEvtKpStbResponse",
  2649 + "dataTag":"1",
  2650 + "data": {
  2651 + "state": 1,
  2652 + "mode": 1
  2653 + }
  2654 +}
  2655 +
  2656 +//当前未启用待机反馈
  2657 +{
  2658 + "fun":"fEvtKpStbResponse",
  2659 + "dataTag":"1",
  2660 + "data": {
  2661 + "state": 0
  2662 + }
  2663 +}
  2664 +```
  2665 +
  2666 +##### [sEvtKpRtFeedback](#sevtkprtfeedback)
  2667 +返回待机时键盘返回的按键值
  2668 +
  2669 +##### [sEvtKpHandup](#sevtkphandup)
  2670 +启动待机按键反馈类型为举手提问时返回此事件
2151 2671  
2152 2672 ## 在线测验
2153 2673 ### 标准测验
... ... @@ -2165,11 +2685,12 @@ MQTT服务器配置结果检查
2165 2685 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
2166 2686 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
2167 2687 |+questions|array||是|题目详情|
2168   -|++symbol | string||是 | 题号前缀,可为空 |
2169 2688 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
2170 2689 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
2171   -|++startNo | int||是| 起始题号 |
2172   -|++count | int||是| 题目数量 |
  2690 +|++firstNo | int||否| 一级题号,mode=0 时有效,有效范围1-255,不传此字段或传0表示不生效 |
  2691 +|++secondNo | int||否| 二级题号,mode=0 时有效,有效范围1-255,不传此字段或传0表示不生效 |
  2692 +|++startNo | int||是| 最后一级题号起始题号<br>mode=0 时有效,范围1-255,mode=1或2时按顺序显示题号<br>说明:<br>firstNo和secondNo都未赋值时,此字段为一级题号<br>firstNo赋值,secondNo未赋值时,此字段为二级题号<br>secondNo赋值时,此字段为三级题号 |
  2693 +|++count | int||是| 相同参数的连续题目数量, >0 |
2173 2694  
2174 2695 - **示例代码**
2175 2696  
... ... @@ -2180,7 +2701,7 @@ MQTT服务器配置结果检查
2180 2701 "dataTag":"1",
2181 2702 "data":{
2182 2703 "mode": 1,
2183   - "examNo": 1,
  2704 + "examNo": 0,
2184 2705 "questions": [{
2185 2706 "quesType": 1, //单选题
2186 2707 "startNo": 1, //题号从1开始
... ... @@ -2197,7 +2718,7 @@ MQTT服务器配置结果检查
2197 2718 "dataTag":"1",
2198 2719 "data":{
2199 2720 "mode": 0,
2200   - "examNo": 1,
  2721 + "examNo": 0,
2201 2722 //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题
2202 2723 "questions": [{
2203 2724 "quesType": 1, //单选题
... ... @@ -2228,26 +2749,26 @@ MQTT服务器配置结果检查
2228 2749 "dataTag":"1",
2229 2750 "data":{
2230 2751 "mode": 0,
2231   - "examNo": 1,
  2752 + "examNo": 0,
2232 2753 //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题
2233 2754 "questions": [{
2234   - "symbol": "1-",
  2755 + "firstNo": 1,
2235 2756 "quesType": 1, //单选题
2236 2757 "startNo": 1, //题号从1-1开始
2237 2758 "count":2 //连续2题
2238 2759 },{
2239   - "symbol": "2-",
  2760 + "firstNo": 2,
2240 2761 "quesType": 2, //多选题
2241 2762 "startNo": 1, //题号从2-1开始
2242 2763 "count":2, //连续2题
2243 2764 "option":5
2244 2765 },{
2245   - "symbol": "3-",
  2766 + "firstNo": 3,
2246 2767 "quesType": 3, //数字题
2247 2768 "startNo": 1, //题号从3-1开始
2248 2769 "count":1 //连续1题
2249 2770 },{
2250   - "symbol": "4-",
  2771 + "firstNo": 4,
2251 2772 "quesType": 4, //判断题
2252 2773 "startNo": 1, //题号从4-1开始
2253 2774 "count":1 //连续1题
... ... @@ -2263,26 +2784,30 @@ MQTT服务器配置结果检查
2263 2784 "dataTag":"1",
2264 2785 "data":{
2265 2786 "mode": 0,
2266   - "examNo": 1,
  2787 + "examNo": 0,
2267 2788 //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题
2268 2789 "questions": [{
2269   - "symbol": "1-1-",
  2790 + "firstNo": 1,
  2791 + "secondNo": 1,
2270 2792 "quesType": 1, //单选题
2271 2793 "startNo": 1, //题号从1-1-1开始
2272 2794 "count":2 //连续2题
2273 2795 },{
2274   - "symbol": "1-2-",
  2796 + "firstNo": 1,
  2797 + "secondNo": 2,
2275 2798 "quesType": 2, //多选题
2276 2799 "startNo": 1, //题号从1-2-1开始
2277 2800 "count":2, //连续2题
2278 2801 "option":5
2279 2802 },{
2280   - "symbol": "2-1-",
  2803 + "firstNo": 2,
  2804 + "secondNo": 1,
2281 2805 "quesType": 3, //数字题
2282 2806 "startNo": 1, //题号从2-1-1开始
2283 2807 "count":1 //连续1题
2284 2808 },{
2285   - "symbol": "3-1-",
  2809 + "firstNo": 3,
  2810 + "secondNo": 1,
2286 2811 "quesType": 4, //判断题
2287 2812 "startNo": 1, //题号从3-1-1开始
2288 2813 "count":1 //连续1题
... ... @@ -2298,7 +2823,7 @@ MQTT服务器配置结果检查
2298 2823 "dataTag":"1",
2299 2824 "data":{
2300 2825 "mode": 1,
2301   - "examNo": 1,
  2826 + "examNo": 0,
2302 2827 "questions": [{
2303 2828 "quesType": 1, //单选题
2304 2829 "startNo": 1, //题号从1开始
... ... @@ -2328,7 +2853,7 @@ MQTT服务器配置结果检查
2328 2853 "dataTag":"1",
2329 2854 "data":{
2330 2855 "mode": 2,
2331   - "examNo": 1,
  2856 + "examNo": 0,
2332 2857 "questions": [{
2333 2858 "quesType": 1, //单选题
2334 2859 "startNo": 1, //题号从1开始
... ... @@ -2351,7 +2876,7 @@ MQTT服务器配置结果检查
2351 2876 }
2352 2877 ```
2353 2878  
2354   -##### stopKpExam
  2879 +<!-- ##### stopKpExam
2355 2880 - **主题**:/client/\${baseSN}/send
2356 2881 - **功能描述**:停止标准测验
2357 2882 - **参数说明**
... ... @@ -2368,7 +2893,9 @@ MQTT服务器配置结果检查
2368 2893 "fun": "stopKpExam",
2369 2894 "dataTag":"1"
2370 2895 }
2371   -```
  2896 +``` -->
  2897 +##### [stopKpVote](#stopkpvote)
  2898 +停止在线测验
2372 2899  
2373 2900 ##### rtKpAllowEdited
2374 2901 - **主题**:/client/\${baseSN}/send
... ... @@ -2409,8 +2936,10 @@ MQTT服务器配置结果检查
2409 2936 |dataTag|string|-|否|数据包标识,可为空字符串|
2410 2937 |data|array|-|是|传送参数的对象数组|
2411 2938 |++keySn|string||是|键盘SN|
2412   -|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B|
  2939 +|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B<br><font color="red">注意:如启动的是多科测验,键盘提交的题目序号对应启动时下发的题目总序号,不按科目区分</font>|
2413 2940 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2941 +|++voltage|double||是|键盘电量|
  2942 +|++retryCount|int||是|键盘提交数据的重发次数|
2414 2943  
2415 2944 - **示例代码**
2416 2945  
... ... @@ -2459,3 +2988,246 @@ MQTT服务器配置结果检查
2459 2988 }]
2460 2989 }
2461 2990 ```
  2991 +
  2992 +### 多科测验
  2993 +#### 方法
  2994 +##### startKpMultiExam
  2995 +- **主题**:/client/\${baseSN}/send
  2996 +- **功能描述**:启动多科测验
  2997 +- **参数说明**
  2998 +
  2999 +|参数名|类型|限制|是否必填|说明|
  3000 +|---|---|---|---|---|
  3001 +|fun|string|-|是|指令名称|
  3002 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3003 +|data|object|-|是|传送参数的对象|
  3004 +|+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
  3005 +|+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
  3006 +|+questions|array||是|题目详情|
  3007 +|++subject | int||是 | 科目序号,1-9,对应键盘中内置的科目1-9<br>键盘答题时可选择科目切换答题|
  3008 +|++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  3009 +|++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  3010 +|++firstNo | int||否| 一级题号,mode=0 时有效,有效范围1-255,不传字段或传0表示不生效 |
  3011 +|++startNo | int||是| 起始题号,mode=0 时有效,范围1-255 <br>firstNo未赋值时,此字段表示一级题号<br>firstNo赋值时,此字段表示二级题号|
  3012 +|++count | int||是| 相同参数的连续题目数量, >0 |
  3013 +|+simParams|object||否|内部模拟测试参数设置对象|
  3014 +|++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|
  3015 +
  3016 +- **示例代码**
  3017 +```json
  3018 +//自定义题号
  3019 +{
  3020 + "fun":"startKpMultiExam",
  3021 + "dataTag":"1",
  3022 + "data":{
  3023 + "mode": 0,
  3024 + "examNo": 0,
  3025 + "questions": [{
  3026 + "subject":1, //科目1
  3027 + //题号1-1 到1-10 共10题单选
  3028 + "firstNo": 1,
  3029 + "quesType": 1,
  3030 + "startNo": 1,
  3031 + "count":10
  3032 + }, {
  3033 + "subject":2, //科目2
  3034 + //题号2-2和2-3共两题 多选题,5个选项
  3035 + "firstNo": 2,
  3036 + "quesType": 2,
  3037 + "option": 5,
  3038 + "startNo": 2,
  3039 + "count":2
  3040 + }, {
  3041 + "subject":3, //科目3
  3042 + //题号3-1和3-2共两道数字题
  3043 + "firstNo": 3,
  3044 + "quesType": 3,
  3045 + "startNo": 1,
  3046 + "count":2
  3047 + }, {
  3048 + "subject":1, //科目1
  3049 + //题号4和5 ,判断题
  3050 + "quesType": 4,
  3051 + "startNo": 4,
  3052 + "count":2
  3053 + }],
  3054 + "simParams":{
  3055 + "answer":["A","ABCD","10","1"]
  3056 + }
  3057 + }
  3058 +}
  3059 +
  3060 +//显示Q开头
  3061 +{
  3062 + "fun":"startKpMultiExam",
  3063 + "dataTag":"1",
  3064 + "data":{
  3065 + "mode": 1,
  3066 + "examNo": 0,
  3067 + "questions": [{
  3068 + "subject":1,
  3069 + //Q1-Q20,单选题
  3070 + "quesType": 1,
  3071 + "startNo": 1,
  3072 + "count":20
  3073 + }],
  3074 + "simParams":{
  3075 + "answer":["A","","",""]
  3076 + }
  3077 + }
  3078 +}
  3079 +
  3080 +//显示题开头
  3081 +{
  3082 + "fun":"startKpMultiExam",
  3083 + "dataTag":"1",
  3084 + "data":{
  3085 + "mode": 2,
  3086 + "examNo": 0,
  3087 + "questions": [{
  3088 + "subject":1,
  3089 + //题1-题20,单选题
  3090 + "quesType": 1,
  3091 + "startNo": 1,
  3092 + "count":20
  3093 + }],
  3094 + "simParams":{
  3095 + "answer":["A","","",""]
  3096 + }
  3097 + }
  3098 +}
  3099 +```
  3100 +
  3101 +<!-- ##### stopKpMultiExam
  3102 +- **主题**:/client/\${baseSN}/send
  3103 +- **功能描述**:停止多科测验
  3104 +- **参数说明**
  3105 +
  3106 +|参数名|类型|限制|是否必填|说明|
  3107 +|---|---|---|---|---|
  3108 +|fun|string|-|是|指令名称|
  3109 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3110 +
  3111 +- **示例代码**
  3112 +```json
  3113 +{
  3114 + "fun":"stopKpMultiExam",
  3115 + "dataTag":"1"
  3116 +}
  3117 +``` -->
  3118 +##### [stopKpVote](#stopkpvote)
  3119 +停止多科测验
  3120 +
  3121 +#### 事件
  3122 +##### [sEvtStateCode](#sevtstatecode)
  3123 +发送指令后返回接收状态
  3124 +
  3125 +##### [fEvtKpExam](#fevtkpexam)
  3126 +返回测验中键盘提交答题数据
  3127 +
  3128 +##### [fEvtFinalSubmit](#fevtfinalsubmit)
  3129 +返回键盘手动交卷标识
  3130 +
  3131 +### 自主录分
  3132 +#### 方法
  3133 +##### startKpScoreInput
  3134 +- **主题**:/client/\${baseSN}/send
  3135 +- **功能描述**:启动标准测验
  3136 +- **参数说明**
  3137 +
  3138 +|参数名|类型|限制|是否必填|说明|
  3139 +|---|---|---|---|---|
  3140 +|fun|string|-|是|指令名称|
  3141 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3142 +|data|object|-|是|传送参数的对象|
  3143 +|+examNo|int||是|0-9999<br>=0,新的录分<br>>0时,与上次启动卷号一致继续录分,不一致进入新的录分|
  3144 +|+mode|int||是|录分模式<br>0-自主录分<br>1-交叉录分,需先输入录分的人员标识|
  3145 +|+questions|array||是|题目详情|
  3146 +|++max |int||是|可输入的最大值,<=100|
  3147 +|++digits|int||是|可输入的小数位数,范围0-2|
  3148 +|++startNo | int||是| 起始题号|
  3149 +|++count | int||是| 相同参数的题目数量,>0|
  3150 +
  3151 +- **示例代码**
  3152 +```json
  3153 +{
  3154 + "fun":"startKpScoreInput",
  3155 + "dataTag":"1",
  3156 + "data":{
  3157 + "mode": 0,
  3158 + "examNo": 0,
  3159 + "questions": [{
  3160 + //题号1 到 2 共2题,单题满分10分
  3161 + "max":10,
  3162 + "digits":1,
  3163 + "startNo": 1,
  3164 + "count":2
  3165 + }, {
  3166 + //题号3到6 共4道题,单题满分5
  3167 + "max":5,
  3168 + "digits":0,
  3169 + "startNo": 3,
  3170 + "count":4
  3171 + }]
  3172 + }
  3173 +}
  3174 +```
  3175 +<!--
  3176 +##### stopKpScoreInput
  3177 +- **主题**:/client/\${baseSN}/send
  3178 +- **功能描述**:停止自主录分
  3179 +- **参数说明**
  3180 +
  3181 +|参数名|类型|限制|是否必填|说明|
  3182 +|---|---|---|---|---|
  3183 +|fun|string|-|是|指令名称|
  3184 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3185 +
  3186 +- **示例代码**
  3187 +```json
  3188 +{
  3189 + "fun":"stopKpScoreInput",
  3190 + "dataTag":"1"
  3191 +}
  3192 +``` -->
  3193 +##### [stopKpVote](#stopkpvote)
  3194 +停止自主录分
  3195 +
  3196 +#### 事件
  3197 +##### [sEvtStateCode](#sevtstatecode)
  3198 +发送指令后返回接收状态
  3199 +
  3200 +##### fEvtKpScore
  3201 +- **主题**:/basestation/\${baseSN}/receive
  3202 +- **功能描述**:返回键盘提交录分信息
  3203 +- **参数说明**
  3204 +
  3205 +|参数名|类型|限制|非空|说明|
  3206 +|---|---|---|---|---|
  3207 +|fun|string|-|是|指令名称|
  3208 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3209 +|data|array|-|是|传送参数的对象数组|
  3210 +|++keySn|string||是|键盘SN|
  3211 +|++keyValue|string||是|键盘提交的分值,1:10;2:0表示第1题提交10分,第二题提交0分|
  3212 +|++keyTime|double||是|录分时间,从启动录分开始计算,单位秒|
  3213 +|++voltage|double||是|键盘电量|
  3214 +|++retryCount|int||是|键盘提交数据的重发次数|
  3215 +
  3216 +- **示例代码**
  3217 +```json
  3218 +{
  3219 + "fun":"fEvtKpScore",
  3220 + "dataTag":"1",
  3221 + "data": [{
  3222 + "keySn": "1234567890",
  3223 + "keyValue":"1:8;2:7.5;3:2;4:3",
  3224 + "keyTime":3.2
  3225 + },
  3226 + {
  3227 + "keySn": "1234567891",
  3228 + "keyValue":"1:10;2:0",
  3229 + "keyTime":3.5
  3230 + }
  3231 + ]
  3232 +}
  3233 +```
2462 3234 \ No newline at end of file
... ...