Commit 4195f9a2ebd66392c92b9906d4d79bcbbb4f6586

Authored by 刘琴
1 parent 2162eb1f

修改多基站状态返回主题写错的问题,同步外部版的协议内容

通讯协议-B200W-MQTT协议[内部].md
@@ -473,7 +473,7 @@ @@ -473,7 +473,7 @@
473 参见基站连接变化系统通知 473 参见基站连接变化系统通知
474 474
475 ##### fEvtBsOnlineState 475 ##### fEvtBsOnlineState
476 -- **主题**: <span class="yellowFill">/basestation/mutilBase/receive</span> 476 +- **主题**: <span class="yellowFill">/basestation/multiBase/receive</span>
477 - **功能描述**:基站在线返回基站型号和基站SN 477 - **功能描述**:基站在线返回基站型号和基站SN
478 - **参数说明** 478 - **参数说明**
479 479
通讯协议-B200W-MQTT协议[外].md
@@ -13,10 +13,10 @@ @@ -13,10 +13,10 @@
13 background-color: yellow; 13 background-color: yellow;
14 } 14 }
15 </style> 15 </style>
16 -# SunVote B200W MQTT通讯协议  
17 16
18 [TOC] 17 [TOC]
19 18
  19 +# SunVote B200W MQTT通讯协议
20 # 功能说明 20 # 功能说明
21 21
22 ## 主题说明 22 ## 主题说明
@@ -47,8 +47,9 @@ @@ -47,8 +47,9 @@
47 |fEvtXXX|指令事件 |调用对应指令后返回| 47 |fEvtXXX|指令事件 |调用对应指令后返回|
48 48
49 ## 数据格式约定 49 ## 数据格式约定
50 -- 数据格式统一为**Json**格式,MQTT发送接收消息编码统一为**UTF-8** 50 +- 数据格式统一为**Json**格式,发送接收消息编码统一为**UTF-8**
51 - Json通用格式如下: 51 - Json通用格式如下:
  52 +
52 ```json 53 ```json
53 { 54 {
54 "fun":"xxx", 55 "fun":"xxx",
@@ -69,6 +70,24 @@ @@ -69,6 +70,24 @@
69 70
70 71
71 ## 功能速查一览表 72 ## 功能速查一览表
  73 +### 公共方法
  74 +可以在多种业务中调用的通用方法
  75 +|功能归类|功能|API指令|指令/系统事件|
  76 +|---|---|---|---|
  77 +|停止投票|可停止通过调用startXXX启动的答题业务|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)||
  78 +
  79 +### 公共事件
  80 +无需调用指令,自动返回的事件
  81 +|功能归类|功能|API指令|指令/系统事件|
  82 +|---|---|---|---|
  83 +|公共事件|指令接收状态|-|[sEvtStateCode](#sevtstatecode)|
  84 +|公共事件|基站连接状态变化|-|[sEvtBsConnectState](#sevtbsconnectstate)|
  85 +|公共事件|基站信道冲突|-|[sEvtBsChannelConflict](#sevtbschannelconflict)|
  86 +|公共事件|键盘上线通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  87 +|公共事件|键盘刷卡事件|-|[sEvtBsNfcResults](#sevtbsnfcresults)|
  88 +|公共事件|键盘待机实时按键反馈|-|[sEvtKpRtFeedback](#sevtkprtfeedback)|
  89 +|公共事件|键盘举手键实时按键反馈|-|[sEvtKpHandUp](#sevtkphandup)|
  90 +
72 ### 基站管理 91 ### 基站管理
73 |功能归类|功能|API指令|指令/系统事件| 92 |功能归类|功能|API指令|指令/系统事件|
74 |---|---|---|---| 93 |---|---|---|---|
@@ -79,6 +98,7 @@ @@ -79,6 +98,7 @@
79 |键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|| 98 |键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)||
80 |识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)| 99 |识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)|
81 |识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)| 100 |识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)|
  101 +|组网设置 - 组网模式|获取基站组网模式|[getBsNetworkMode](#getbsnetworkmode)|[fEvtBsNetworkMode](#fevtbsnetworkmode)|
82 |组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)| 102 |组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
83 |组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)| 103 |组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|
84 ||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|| 104 ||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
@@ -86,8 +106,10 @@ @@ -86,8 +106,10 @@
86 ||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)|| 106 ||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
87 |登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)| 107 |登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)|
88 ||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)|| 108 ||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
89 -|键盘统一设置 - 键盘语言|获取键盘语言|[getBsKpLanguage](#getbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|  
90 -||设置键盘语言|[setBsKpLanguage](#setbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|| 109 +|登录设置 - 登录密码|获取基站登录密码|[getBsLoginPwd](#getbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)|
  110 +||设置基站登录密码|[setBsLoginPwd](#setbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)||
  111 +|登录设置 - 基站登录状态|获取基站登录状态|[getBsLoginState](#getbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)|
  112 +||设置基站登录状态|[setBsLoginState](#setbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)||
91 |配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)| 113 |配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
92 ||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)| 114 ||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)|
93 |白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)| 115 |白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)|
@@ -95,6 +117,8 @@ @@ -95,6 +117,8 @@
95 ||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsWhitelist](#fevtbswhitelist)| 117 ||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
96 ||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtAddBsWhitelist](#fevtaddbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)| 118 ||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtAddBsWhitelist](#fevtaddbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
97 ||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtDelBsWhitelist](#fevtdelbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)| 119 ||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtDelBsWhitelist](#fevtdelbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
  120 +|基站加密 - 软件狗|获取基站软件狗|[getBsSoftwareKey](#getbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
  121 +||设置基站软件狗|[setBsSoftwareKey](#setbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
98 |网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)| 122 |网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
99 ||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|| 123 ||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
100 |网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)| 124 |网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
@@ -115,7 +139,7 @@ @@ -115,7 +139,7 @@
115 |功能归类|功能|API指令|指令事件| 139 |功能归类|功能|API指令|指令事件|
116 |---|---|---|---| 140 |---|---|---|---|
117 |同步签到|启动同步签到|[startKpSignIn](#startkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)| 141 |同步签到|启动同步签到|[startKpSignIn](#startkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
118 -||停止同步签到|[stopKpSignIn](#stopkpsignin)|[sEvtStateCode](#sevtstatecode)| 142 +||停止同步签到|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
119 |随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)| 143 |随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
120 ||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)| 144 ||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)|
121 ||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpLoginAllowed](#fevtkploginallowed)| 145 ||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpLoginAllowed](#fevtkploginallowed)|
@@ -123,19 +147,44 @@ @@ -123,19 +147,44 @@
123 |功能归类|功能|API指令|指令事件| 147 |功能归类|功能|API指令|指令事件|
124 |---|---|---|---| 148 |---|---|---|---|
125 |判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQATrueFalse](#fevtqatruefalse)| 149 |判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQATrueFalse](#fevtqatruefalse)|
126 -||停止判断题答题|[stopQATrueFalse](#stopqatruefalse)|[sEvtStateCode](#sevtstatecode)| 150 +||停止判断题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
127 |选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAChoice](#fevtqachoice)| 151 |选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAChoice](#fevtqachoice)|
128 -||停止选择题答题|[stopQAChoice](#stopqachoice)|[sEvtStateCode](#sevtstatecode)| 152 +||停止选择题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
129 |数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQANum](#fevtqanum)| 153 |数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQANum](#fevtqanum)|
130 -||停止数字题答题|[stopQANum](#stopqanum)|[sEvtStateCode](#sevtstatecode)| 154 +||停止数字题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
131 |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)| 155 |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)|
132 -||停止抢答题答题|[stopQAQuicker](#stopqaquicker)|[sEvtStateCode](#sevtstatecode)| 156 +||停止抢答题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  157 +|待机实时反馈|设置待机实时反馈状态|[setKpStbResponse](#setkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)<br>[sEvtKpRtFeedback](#sevtkprtfeedback)<br>[sEvtKpHandUp](#sevtkphandup)|
  158 +||设置待机实时反馈状态|[getKpStbResponse](#getkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)|
133 ### 在线测验 159 ### 在线测验
134 |功能归类|功能|API指令|指令事件| 160 |功能归类|功能|API指令|指令事件|
135 |---|---|---|---| 161 |---|---|---|---|
136 |标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)| 162 |标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
137 -||停止标准测验|[stopKpExam](#stopkpexam)|[sEvtStateCode](#sevtstatecode)| 163 +||停止标准测验|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
138 ||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)<br>[fEvtFinalSubmit](#fevtfinalsubmit)| 164 ||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  165 +|多科测验|启动多科测验|[startKpMultiExam](#startkpmultiexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  166 +||停止标准测验|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  167 +|自主录分|启动自主录分|[startKpScoreInput](#startkpscoreinput)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpScore](#fevtkpscore)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  168 +||停止自主录分|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
  169 +
  170 +## 公共方法
  171 +### stopKpVote
  172 +- **主题**: /client/\${baseSN}/send
  173 +- **功能描述**:通用停止键盘答题方法,可以停止如同步签到、按键反馈、在线测验中调用startXXX方法启动的业务
  174 +- **参数说明**
  175 +
  176 +|参数名|类型|限制|非空|说明|
  177 +|-----|-----|-----|-----|-----|
  178 +|fun|string|-|是|事件类型|
  179 +|dataTag|string||否|数据包标识,不需要时可传空字符串|
  180 +
  181 +- **示例代码**
  182 +```json
  183 +{
  184 + "fun":"stopKpVote",
  185 + "dataTag":"1"
  186 +}
  187 +```
139 188
140 ## 公共事件 189 ## 公共事件
141 ### sEvtBsConnectState 190 ### sEvtBsConnectState
@@ -146,7 +195,7 @@ @@ -146,7 +195,7 @@
146 |参数名|类型|限制|非空|说明| 195 |参数名|类型|限制|非空|说明|
147 |-----|-----|-----|-----|-----| 196 |-----|-----|-----|-----|-----|
148 |fun|string|-|是|事件类型| 197 |fun|string|-|是|事件类型|
149 -|dataTag|string|-|否|数据包标识,不需要时可传空字符串| 198 +|dataTag|string||否|数据包标识,不需要时可传空字符串|
150 |data|object|-|是|传送参数的对象| 199 |data|object|-|是|传送参数的对象|
151 |+baseModel|int||否|基站的型号码| 200 |+baseModel|int||否|基站的型号码|
152 |+modelName|string||否|基站的型号名称| 201 |+modelName|string||否|基站的型号名称|
@@ -208,6 +257,7 @@ @@ -208,6 +257,7 @@
208 |dataTag|string|-|否|数据包标识,不需要时可传空字符串| 257 |dataTag|string|-|否|数据包标识,不需要时可传空字符串|
209 |data|object|-|是|传送参数的对象| 258 |data|object|-|是|传送参数的对象|
210 |+keySn|string||是|刷卡的键盘SN| 259 |+keySn|string||是|刷卡的键盘SN|
  260 +|+cardType|int||是|刷卡的键盘类型<br>1-NFC类型<br>2-M1类型|
211 |+value|int||是|刷卡的状态<br>1-成功<br>2-失败| 261 |+value|int||是|刷卡的状态<br>1-成功<br>2-失败|
212 262
213 - **示例代码** 263 - **示例代码**
@@ -216,7 +266,8 @@ @@ -216,7 +266,8 @@
216 "fun":"sEvtBsNfcResults", 266 "fun":"sEvtBsNfcResults",
217 "dataTag":"1", //不需要时可传空字符串 267 "dataTag":"1", //不需要时可传空字符串
218 "data":{ 268 "data":{
219 - "keySn":"1234567890", 269 + "keySn":"1234567890",
  270 + "cardType":1,
220 "value":1 271 "value":1
221 } 272 }
222 } 273 }
@@ -248,6 +299,56 @@ @@ -248,6 +299,56 @@
248 } 299 }
249 } 300 }
250 ``` 301 ```
  302 +### sEvtKpRtFeedback
  303 +- **主题**: /basestation/\${baseSN}/receive
  304 +- **功能描述**:开启键盘实时反馈后,键盘按键时上报
  305 +- **参数说明**
  306 +
  307 +|参数名|类型|限制|非空|说明|
  308 +|---|---|---|---|---|
  309 +|fun|string|-|是|事件名称|
  310 +|dataTag|string|-|否|数据包标识|
  311 +|data|array|-|是|传送参数的对象数组|
  312 +|++keySn|string||是|键盘SN|
  313 +|++keyValue|string||是|键盘提交的按键值|
  314 +|++voltage|double||是|键盘电量|
  315 +|++retryCount|int||是|键盘提交数据的重发次数|
  316 +
  317 +- **示例代码**
  318 +```json
  319 +{
  320 + "fun":"sEvtKpRtFeedback",
  321 + "dataTag":"1",
  322 + "data":[{
  323 + "keySn":"1234567890",
  324 + "keyValue":"A",
  325 + "voltage":2.6,
  326 + "retryCount":1
  327 + }]
  328 +}
  329 +```
  330 +### sEvtKpHandUp
  331 +- **主题**: /basestation/\${baseSN}/receive
  332 +- **功能描述**:开启键盘举手功能后,键盘按举手键时上报
  333 +- **参数说明**
  334 +
  335 +|参数名|类型|限制|非空|说明|
  336 +|---|---|---|---|---|
  337 +|fun|string|-|是|事件名称|
  338 +|dataTag|string|-|否|数据包标识|
  339 +|data|object|-|是|传送参数的对象|
  340 +|+keySn|string||是|举手的键盘SN|
  341 +
  342 +- **示例代码**
  343 +```json
  344 +{
  345 + "fun":"sEvtKpHandUp",
  346 + "dataTag":"1",
  347 + "data":{
  348 + "keySn":"1234567890"
  349 + }
  350 +}
  351 +```
251 ### sEvtStateCode 352 ### sEvtStateCode
252 - **主题**: /basestation/\${baseSN}/receive 353 - **主题**: /basestation/\${baseSN}/receive
253 - **功能描述**:返回基站接收指令状态信息 354 - **功能描述**:返回基站接收指令状态信息
@@ -277,6 +378,7 @@ @@ -277,6 +378,7 @@
277 |20008|value参数错误| 378 |20008|value参数错误|
278 |30001|基站在答题中| 379 |30001|基站在答题中|
279 |30002|基站忙(内存不足)| 380 |30002|基站忙(内存不足)|
  381 +|30003|基站执行失败|
280 |40001|升级功能只能支持一个基站| 382 |40001|升级功能只能支持一个基站|
281 |50001|此功能必须指定基站| 383 |50001|此功能必须指定基站|
282 |60001|此功能必须指定键盘SN| 384 |60001|此功能必须指定键盘SN|
@@ -334,7 +436,7 @@ @@ -334,7 +436,7 @@
334 参见基站连接变化系统通知 436 参见基站连接变化系统通知
335 437
336 ##### fEvtBsOnlineState 438 ##### fEvtBsOnlineState
337 -- **主题**: <span class="yellowFill">/basestation/mutilBase/receive</span> 439 +- **主题**: <span class="yellowFill">/basestation/multiBase/receive</span>
338 - **功能描述**:基站在线返回基站型号和基站SN 440 - **功能描述**:基站在线返回基站型号和基站SN
339 - **参数说明** 441 - **参数说明**
340 442
@@ -496,6 +598,23 @@ @@ -496,6 +598,23 @@
496 ``` 598 ```
497 ### 组网设置 599 ### 组网设置
498 #### 方法 600 #### 方法
  601 +##### getBsNetworkMode
  602 +- **主题**:/client/\${baseSN}/send
  603 +- **功能描述**:获取基站组网模式
  604 +- **参数说明**
  605 +
  606 +|参数名|类型|限制|是否必填|说明|
  607 +|---|---|---|---|---|
  608 +|fun|string|-|是|指令名称|
  609 +|dataTag|string|-|否|数据包标识,可为空字符串|
  610 +
  611 +- **示例代码**
  612 +```json
  613 +{
  614 + "fun":"getBsNetworkMode",
  615 + "dataTag":"1"
  616 +}
  617 +```
499 ##### getBsPairCode 618 ##### getBsPairCode
500 - **主题**:/client/\${baseSN}/send 619 - **主题**:/client/\${baseSN}/send
501 - **功能描述**:获取基站配对码 620 - **功能描述**:获取基站配对码
@@ -592,6 +711,28 @@ @@ -592,6 +711,28 @@
592 } 711 }
593 ``` 712 ```
594 #### 事件 713 #### 事件
  714 +##### fEvtBsNetworkMode
  715 +- **主题**: /basestation/\${baseSN}/receive
  716 +- **功能描述**:返回基站组网模式
  717 +- **参数说明**
  718 +
  719 +|参数名|类型|限制|非空|说明|
  720 +|---|---|---|---|---|
  721 +|fun|string|-|是|事件名称|
  722 +|dataTag|string|-|否|数据包标识,可传空字符串|
  723 +|data|object|-|是|传送参数的对象|
  724 +|+value|string||是|基站的组网模式<br>1-配对模式<br>2-白名单模式|
  725 +
  726 +- **示例代码**
  727 +```json
  728 +{
  729 + "fun":"fEvtBsNetworkMode",
  730 + "dataTag":"1",
  731 + "data":{
  732 + "value":"1"
  733 + }
  734 +}
  735 +```
595 ##### fEvtBsPairCode 736 ##### fEvtBsPairCode
596 - **主题**: /basestation/\${baseSN}/receive 737 - **主题**: /basestation/\${baseSN}/receive
597 - **功能描述**:返回基站配对码 738 - **功能描述**:返回基站配对码
@@ -701,6 +842,86 @@ @@ -701,6 +842,86 @@
701 } 842 }
702 } 843 }
703 ``` 844 ```
  845 +##### getBsLoginPwd
  846 +- **主题**:/client/\${baseSN}/send
  847 +- **功能描述**:获取基站登录密码
  848 +- **参数说明**
  849 +
  850 +|参数名|类型|限制|是否必填|说明|
  851 +|---|---|---|---|---|
  852 +|fun|string|-|是|固定指令名称|
  853 +|dataTag|string|-|否|数据包标识|
  854 +
  855 +- **示例代码**
  856 +```json
  857 +{
  858 + "fun":"getBsLoginPwd",
  859 + "dataTag":"1"
  860 +}
  861 +```
  862 +##### setBsLoginPwd
  863 +- **主题**:/client/\${baseSN}/send
  864 +- **功能描述**:设置基站登录密码
  865 +- **参数说明**
  866 +
  867 +|参数名|类型|限制|是否必填|说明|
  868 +|---|---|---|---|---|
  869 +|fun|string|-|是|指令名称|
  870 +|dataTag|string|-|否|数据包标识,可为空字符串|
  871 +|data|object|-|是|传送参数的对象|
  872 +|+value|string||是|设置的基站登录密码,数字类型,最长4位,为空或设为0代表无需密码登录|
  873 +
  874 +- **示例代码**
  875 +```json
  876 +{
  877 + "fun":"setBsLoginPwd",
  878 + "dataTag":"1",
  879 + "data":{
  880 + "value":"1234"
  881 + }
  882 +}
  883 +```
  884 +##### getBsLoginState
  885 +获取基站登录名称
  886 +- **主题**:/client/\${baseSN}/send
  887 +- **功能描述**:获取基站登录状态
  888 +- **参数说明**
  889 +
  890 +|参数名|类型|限制|是否必填|说明|
  891 +|---|---|---|---|---|
  892 +|fun|string|-|是|固定指令名称|
  893 +|dataTag|string|-|否|数据包标识|
  894 +
  895 +- **示例代码**
  896 +```json
  897 +{
  898 + "fun":"getBsLoginState",
  899 + "dataTag":"1"
  900 +}
  901 +```
  902 +##### setBsLoginState
  903 +- **主题**:/client/\${baseSN}/send
  904 +- **功能描述**:设置基站登录状态
  905 +- **参数说明**
  906 +
  907 +|参数名|类型|限制|是否必填|说明|
  908 +|---|---|---|---|---|
  909 +|fun|string|-|是|指令名称|
  910 +|dataTag|string|-|否|数据包标识,可为空字符串|
  911 +|data|object|-|是|传送参数的对象|
  912 +|+value|string||是|设置是否允许键盘自主登入<br>0 - 不允许键盘登入<br>1 - 允许键盘登入|
  913 +
  914 +- **示例代码**
  915 +```json
  916 +{
  917 + "fun":"setBsLoginState",
  918 + "dataTag":"1",
  919 + "data":{
  920 + "value":"1"
  921 + }
  922 +}
  923 +```
  924 +
704 #### 事件 925 #### 事件
705 ##### fEvtBsSSID 926 ##### fEvtBsSSID
706 - **主题**: /basestation/\${baseSN}/receive 927 - **主题**: /basestation/\${baseSN}/receive
@@ -724,6 +945,59 @@ @@ -724,6 +945,59 @@
724 } 945 }
725 } 946 }
726 ``` 947 ```
  948 +##### fEvtBsLoginPwd
  949 +- **主题**: /basestation/\${baseSN}/receive
  950 +- **功能描述**:返回基站登录密码
  951 +- **参数说明**
  952 +
  953 +|参数名|类型|限制|非空|说明|
  954 +|---|---|---|---|---|
  955 +|fun|string|-|是|事件名称|
  956 +|dataTag|string|-|否|数据包标识,可传空字符串|
  957 +|data|object|-|是|传送参数的对象|
  958 +|+value|string||是|基站登录密码,返回值为0代表无需密码登录|
  959 +
  960 +- **示例代码**
  961 +```json
  962 +{
  963 + "fun":"fEvtBsLoginPwd",
  964 + "dataTag":"1",
  965 + "data":{
  966 + "value":"1234"
  967 + }
  968 +}
  969 +
  970 +//无需密码登录
  971 +{
  972 + "fun":"fEvtBsLoginPwd",
  973 + "dataTag":"1",
  974 + "data":{
  975 + "value":"0"
  976 + }
  977 +}
  978 +```
  979 +##### fEvtBsLoginState
  980 +- **主题**: /basestation/\${baseSN}/receive
  981 +- **功能描述**:返回基站登录状态
  982 +- **参数说明**
  983 +
  984 +|参数名|类型|限制|非空|说明|
  985 +|---|---|---|---|---|
  986 +|fun|string|-|是|事件名称|
  987 +|dataTag|string|-|否|数据包标识,可传空字符串|
  988 +|data|object|-|是|传送参数的对象|
  989 +|+value|string||是|基站登录状态|
  990 +
  991 +- **示例代码**
  992 +```json
  993 +{
  994 + "fun":"fEvtBsLoginState",
  995 + "dataTag":"1",
  996 + "data":{
  997 + "value":"1"
  998 + }
  999 +}
  1000 +```
727 ### 键盘统一设置 1001 ### 键盘统一设置
728 #### 方法 1002 #### 方法
729 ##### getBsKpLanguage 1003 ##### getBsKpLanguage
@@ -1122,7 +1396,7 @@ @@ -1122,7 +1396,7 @@
1122 |+port|int||是|端口,默认1883| 1396 |+port|int||是|端口,默认1883|
1123 |+userName|string||否|连接服务器的用户名,可不设置| 1397 |+userName|string||否|连接服务器的用户名,可不设置|
1124 |+password|string||否|连接服务器的密码,可不设置| 1398 |+password|string||否|连接服务器的密码,可不设置|
1125 -|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒| 1399 +|+interval|int|>=60|否|基站连接服务器失败后重连的间隔时长,单位秒|
1126 1400
1127 - **示例代码** 1401 - **示例代码**
1128 ```json 1402 ```json
@@ -1134,7 +1408,7 @@ @@ -1134,7 +1408,7 @@
1134 "port":1883, 1408 "port":1883,
1135 "userName":"", 1409 "userName":"",
1136 "password":"", 1410 "password":"",
1137 - "interval":30 1411 + "interval":60
1138 } 1412 }
1139 } 1413 }
1140 ``` 1414 ```
@@ -1199,7 +1473,70 @@ @@ -1199,7 +1473,70 @@
1199 } 1473 }
1200 } 1474 }
1201 ``` 1475 ```
  1476 +### 基站加密
  1477 +#### 方法
  1478 +##### getBsSoftwareKey
  1479 +- **主题**:/client/\${baseSN}/send
  1480 +- **功能描述**:获取基站软件狗密钥
  1481 +- **参数说明**
  1482 +
  1483 +|参数名|类型|限制|是否必填|说明|
  1484 +|---|---|---|---|---|
  1485 +|fun|string|-|是|指令名称|
  1486 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1487 +
  1488 +- **示例代码**
  1489 +```json
  1490 +{
  1491 + "fun":"getBsSoftwareKey",
  1492 + "dataTag":"1"
  1493 +}
  1494 +```
  1495 +##### setBsSoftwareKey
  1496 +- **主题**:/client/\${baseSN}/send
  1497 +- **功能描述**:设置基站软件狗密钥
  1498 +- **参数说明**
  1499 +
  1500 +|参数名|类型|限制|是否必填|说明|
  1501 +|---|---|---|---|---|
  1502 +|fun|string|-|是|指令名称|
  1503 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1504 +|data|object|-|是|传送参数的对象|
  1505 +|+value|string|-|是|基站软件狗密钥,长度不超过32字节|
  1506 +
  1507 +- **示例代码**
  1508 +```json
  1509 +{
  1510 + "fun":"setBsSoftwareKey",
  1511 + "dataTag":"1",
  1512 + "data":{
  1513 + "value":"sunvote123456"
  1514 + }
  1515 +}
  1516 +```
  1517 +#### 事件
  1518 +##### fEvtBsSoftwareKey
  1519 +- **主题**:/basestation/\${baseSN}/receive
  1520 +- **功能描述**:返回基站的软件狗密钥
  1521 +- **参数说明**
  1522 +
  1523 +|参数名|类型|限制|非空|说明|
  1524 +|---|---|---|---|---|
  1525 +|fun|string|-|是|指令名称|
  1526 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1527 +|data|object|-|是|传送参数的对象|
  1528 +|+value|string||是|返回基站的软件狗密钥|
1202 1529
  1530 +- **示例代码**
  1531 +```json
  1532 +{
  1533 + "fun":"fEvtBsSoftwareKey",
  1534 + "dataTag":"1",
  1535 + "data":{
  1536 + "value":"sunvote123456"
  1537 + }
  1538 +}
  1539 +```
1203 ## 键盘管理 1540 ## 键盘管理
1204 ### 交互设置 1541 ### 交互设置
1205 #### 方法 1542 #### 方法
@@ -1546,8 +1883,7 @@ @@ -1546,8 +1883,7 @@
1546 } 1883 }
1547 } 1884 }
1548 ``` 1885 ```
1549 -  
1550 -##### stopKpSignIn 1886 +<!-- ##### stopKpSignIn
1551 - **主题**:/client/\${baseSN}/send 1887 - **主题**:/client/\${baseSN}/send
1552 - **功能描述**:停止同步签到 1888 - **功能描述**:停止同步签到
1553 - **参数说明** 1889 - **参数说明**
@@ -1563,7 +1899,10 @@ @@ -1563,7 +1899,10 @@
1563 "fun":"stopKpSignIn", 1899 "fun":"stopKpSignIn",
1564 "dataTag":"1" 1900 "dataTag":"1"
1565 } 1901 }
1566 -``` 1902 +``` -->
  1903 +##### [stopKpVote](#stopkpvote)
  1904 +停止同步签到
  1905 +
1567 #### 事件 1906 #### 事件
1568 ##### [sEvtStateCode](#sevtstatecode) 1907 ##### [sEvtStateCode](#sevtstatecode)
1569 发送指令后返回接收状态 1908 发送指令后返回接收状态
@@ -1717,6 +2056,7 @@ @@ -1717,6 +2056,7 @@
1717 |dataTag|string|-|否|数据包标识,可为空字符串| 2056 |dataTag|string|-|否|数据包标识,可为空字符串|
1718 |data|object|-|是|传送参数的对象| 2057 |data|object|-|是|传送参数的对象|
1719 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| 2058 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2059 +|+count|int||是|题目数量,1-16,>1多题快答|
1720 |+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×| 2060 |+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×|
1721 |+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改| 2061 |+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改|
1722 |+tip|string||否|提示的标题,长度不超过16字符| 2062 |+tip|string||否|提示的标题,长度不超过16字符|
@@ -1729,13 +2069,14 @@ @@ -1729,13 +2069,14 @@
1729 "dataTag":"1", 2069 "dataTag":"1",
1730 "data":{ 2070 "data":{
1731 "keySns":[], 2071 "keySns":[],
  2072 + "count":1,
1732 "mode":1, 2073 "mode":1,
1733 "allowModify":1, 2074 "allowModify":1,
1734 "tip":"请判断对错" 2075 "tip":"请判断对错"
1735 } 2076 }
1736 } 2077 }
1737 ``` 2078 ```
1738 -##### stopQATrueFalse 2079 +<!-- ##### stopQATrueFalse
1739 - **主题**:/client/\${baseSN}/send 2080 - **主题**:/client/\${baseSN}/send
1740 - **功能描述**:停止判断题答题 2081 - **功能描述**:停止判断题答题
1741 - **参数说明** 2082 - **参数说明**
@@ -1752,7 +2093,11 @@ @@ -1752,7 +2093,11 @@
1752 "fun":"stopQATrueFalse", 2093 "fun":"stopQATrueFalse",
1753 "dataTag":"1" 2094 "dataTag":"1"
1754 } 2095 }
1755 -``` 2096 +``` -->
  2097 +
  2098 +##### [stopKpVote](#stopkpvote)
  2099 +停止判断题答题
  2100 +
1756 #### 事件 2101 #### 事件
1757 ##### [sEvtStateCode](#sevtstatecode) 2102 ##### [sEvtStateCode](#sevtstatecode)
1758 发送指令后返回接收状态 2103 发送指令后返回接收状态
@@ -1800,6 +2145,7 @@ @@ -1800,6 +2145,7 @@
1800 |dataTag|string|-|否|数据包标识,可为空字符串| 2145 |dataTag|string|-|否|数据包标识,可为空字符串|
1801 |data|object|-|是|传送参数的对象| 2146 |data|object|-|是|传送参数的对象|
1802 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| 2147 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2148 +|+count|int||是|题目数量,1-16,>1多题快答<br>optionalN >1时无效|
1803 |+mode|int||是|显示模式<br>1:显示字母(默认值) </br>2:显示数字 | 2149 |+mode|int||是|显示模式<br>1:显示字母(默认值) </br>2:显示数字 |
1804 |+lessMode|int||是|迫选模式<br>0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 | 2150 |+lessMode|int||是|迫选模式<br>0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 |
1805 |+options|int||是|选项数量,1≤M≤10(默认值4)| 2151 |+options|int||是|选项数量,1≤M≤10(默认值4)|
@@ -1816,6 +2162,7 @@ @@ -1816,6 +2162,7 @@
1816 "data":{ 2162 "data":{
1817 "keySns":[], 2163 "keySns":[],
1818 "mode": 1, 2164 "mode": 1,
  2165 + "count":1,
1819 "lessMode": 0, 2166 "lessMode": 0,
1820 "options": 4, 2167 "options": 4,
1821 "optionalN": 1, 2168 "optionalN": 1,
@@ -1824,7 +2171,7 @@ @@ -1824,7 +2171,7 @@
1824 } 2171 }
1825 } 2172 }
1826 ``` 2173 ```
1827 -##### stopQAChoice 2174 +<!-- ##### stopQAChoice
1828 - **主题**:/client/\${baseSN}/send 2175 - **主题**:/client/\${baseSN}/send
1829 - **功能描述**:停止选择题答题 2176 - **功能描述**:停止选择题答题
1830 - **参数说明** 2177 - **参数说明**
@@ -1841,7 +2188,10 @@ @@ -1841,7 +2188,10 @@
1841 "fun":"stopQAChoice", 2188 "fun":"stopQAChoice",
1842 "dataTag":"1" 2189 "dataTag":"1"
1843 } 2190 }
1844 -``` 2191 +``` -->
  2192 +##### [stopKpVote](#stopkpvote)
  2193 +停止选择题答题
  2194 +
1845 #### 事件 2195 #### 事件
1846 ##### [sEvtStateCode](#sevtstatecode) 2196 ##### [sEvtStateCode](#sevtstatecode)
1847 发送指令后返回接收状态 2197 发送指令后返回接收状态
@@ -1889,7 +2239,7 @@ @@ -1889,7 +2239,7 @@
1889 |data|object|-|是|传送参数的对象| 2239 |data|object|-|是|传送参数的对象|
1890 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| 2240 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
1891 |+mode|int||是|模式<br>0:无规则 (S6最多16位,T2最多14位)<br>1:带小数位上下限(T2不支持)| 2241 |+mode|int||是|模式<br>0:无规则 (S6最多16位,T2最多14位)<br>1:带小数位上下限(T2不支持)|
1892 -|+digits|int||是|小数位数范围0-2,mode=1时有效 2242 +|+digits|int||是|小数位数,范围0-2,mode=1时有效
1893 |+numMin|int||是|可输入下限,mode=1有效,范围0-100| 2243 |+numMin|int||是|可输入下限,mode=1有效,范围0-100|
1894 |+numMax|int||是|可输入上限,mode=1有效,范围0-100| 2244 |+numMax|int||是|可输入上限,mode=1有效,范围0-100|
1895 |+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改| 2245 |+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
@@ -1912,7 +2262,7 @@ @@ -1912,7 +2262,7 @@
1912 } 2262 }
1913 } 2263 }
1914 ``` 2264 ```
1915 -##### stopQANum 2265 +<!-- ##### stopQANum
1916 - **主题**:/client/\${baseSN}/send 2266 - **主题**:/client/\${baseSN}/send
1917 - **功能描述**:停止数字题答题 2267 - **功能描述**:停止数字题答题
1918 - **参数说明** 2268 - **参数说明**
@@ -1929,7 +2279,10 @@ @@ -1929,7 +2279,10 @@
1929 "fun":"stopQANum", 2279 "fun":"stopQANum",
1930 "dataTag":"1" 2280 "dataTag":"1"
1931 } 2281 }
1932 -``` 2282 +``` -->
  2283 +##### [stopKpVote](#stopkpvote)
  2284 +停止数字题答题
  2285 +
1933 #### 事件 2286 #### 事件
1934 ##### [sEvtStateCode](#sevtstatecode) 2287 ##### [sEvtStateCode](#sevtstatecode)
1935 发送指令后返回接收状态 2288 发送指令后返回接收状态
@@ -1947,7 +2300,7 @@ @@ -1947,7 +2300,7 @@
1947 |++keySn|string||是|键盘SN| 2300 |++keySn|string||是|键盘SN|
1948 |++keyValue|string||是|键盘提交的按键值| 2301 |++keyValue|string||是|键盘提交的按键值|
1949 |++keyTime|double||是|答题时间,从启动开始计算,单位秒| 2302 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
1950 -|++voltage|double||是|键盘电量</font>| 2303 +|++voltage|double||是|键盘电量|
1951 |++retryCount|int||是|键盘提交数据的重发次数| 2304 |++retryCount|int||是|键盘提交数据的重发次数|
1952 2305
1953 - **示例代码** 2306 - **示例代码**
@@ -1994,7 +2347,7 @@ @@ -1994,7 +2347,7 @@
1994 } 2347 }
1995 } 2348 }
1996 ``` 2349 ```
1997 -##### stopQAQuicker 2350 +<!-- ##### stopQAQuicker
1998 - **主题**:/client/\${baseSN}/send 2351 - **主题**:/client/\${baseSN}/send
1999 - **功能描述**:停止抢答答题 2352 - **功能描述**:停止抢答答题
2000 - **参数说明** 2353 - **参数说明**
@@ -2011,7 +2364,11 @@ @@ -2011,7 +2364,11 @@
2011 "fun":"stopQAQuicker", 2364 "fun":"stopQAQuicker",
2012 "dataTag":"1" 2365 "dataTag":"1"
2013 } 2366 }
2014 -``` 2367 +``` -->
  2368 +
  2369 +##### [stopKpVote](#stopkpvote)
  2370 +停止抢答
  2371 +
2015 #### 事件 2372 #### 事件
2016 ##### [sEvtStateCode](#sevtstatecode) 2373 ##### [sEvtStateCode](#sevtstatecode)
2017 发送指令后返回接收状态 2374 发送指令后返回接收状态
@@ -2045,6 +2402,114 @@ @@ -2045,6 +2402,114 @@
2045 }] 2402 }]
2046 } 2403 }
2047 ``` 2404 ```
  2405 +### 待机实时反馈
  2406 +#### 方法
  2407 +##### setKpStbResponse
  2408 +- **主题**:/client/\${baseSN}/send
  2409 +- **功能描述**:启动待机实时反馈
  2410 +- **参数说明**
  2411 +
  2412 +|参数名|类型|限制|是否必填|说明|
  2413 +|---|---|---|---|---|
  2414 +|fun|string|-|是|指令名称|
  2415 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2416 +|data|object|-|是|传送参数的对象|
  2417 +|+state|int||是|启用待机实时反馈<br>0-不启用<br>1-启用|
  2418 +|+mode|int||是|启动待机反馈类型,state=1时有效<br>0-举手<br>1-指定按键反馈|
  2419 +|+keys|int||是|有效按键数量,state=1且mode=1时有效, 范围1-10|
  2420 +
  2421 +- **示例代码**
  2422 +```json
  2423 +//启用举手反馈
  2424 +{
  2425 + "fun":"setKpStbResponse",
  2426 + "dataTag":"1",
  2427 + "data":{
  2428 + "state":1,
  2429 + "mode":0
  2430 + }
  2431 +}
  2432 +//启用待机按键反馈
  2433 +{
  2434 + "fun":"setKpStbResponse",
  2435 + "dataTag":"1",
  2436 + "data":{
  2437 + "state":1,
  2438 + "mode":1,
  2439 + "keys":4
  2440 + }
  2441 +}
  2442 +//关闭待机按键反馈
  2443 +{
  2444 + "fun":"setKpStbResponse",
  2445 + "dataTag":"1",
  2446 + "data":{
  2447 + "state":0
  2448 + }
  2449 +}
  2450 +```
  2451 +
  2452 +##### getKpStbResponse
  2453 +- **主题**:/client/\${baseSN}/send
  2454 +- **功能描述**:获取实时反馈是否打开
  2455 +- **参数说明**
  2456 +
  2457 +|参数名|类型|限制|是否必填|说明|
  2458 +|---|---|---|---|---|
  2459 +|fun|string|-|是|指令名称|
  2460 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2461 +
  2462 +- **示例代码**
  2463 +```json
  2464 +//启用举手反馈
  2465 +{
  2466 + "fun":"getKpStbResponse",
  2467 + "dataTag":"1"
  2468 +}
  2469 +```
  2470 +
  2471 +#### 事件
  2472 +##### fEvtKpStbResponse
  2473 +- **主题**:/basestation/\${baseSN}/receive
  2474 +- **功能描述**:返回当前待机按键反馈开启状态
  2475 +- **参数说明**
  2476 +
  2477 +|参数名|类型|限制|非空|说明|
  2478 +|---|---|---|---|---|
  2479 +|fun|string|-|是|指令名称|
  2480 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2481 +|data|array|-|是|传送参数的对象数组|
  2482 +|+state|int||是|启用待机实时反馈<br>0-未启用<br>1-启用|
  2483 +|+mode|int||是|当前启动待机反馈类型,state=1时返回<br>0-举手<br>1-指定按键反馈|
  2484 +
  2485 +- **示例代码**
  2486 +```json
  2487 +//当前启用待机实时反馈,模式为指定按键反馈
  2488 +{
  2489 + "fun":"fEvtKpStbResponse",
  2490 + "dataTag":"1",
  2491 + "data": {
  2492 + "state": 1,
  2493 + "mode": 1
  2494 + }
  2495 +}
  2496 +
  2497 +//当前未启用待机反馈
  2498 +{
  2499 + "fun":"fEvtKpStbResponse",
  2500 + "dataTag":"1",
  2501 + "data": {
  2502 + "state": 0
  2503 + }
  2504 +}
  2505 +```
  2506 +
  2507 +##### [sEvtKpRtFeedback](#sevtkprtfeedback)
  2508 +返回待机时键盘返回的按键值
  2509 +
  2510 +##### [sEvtKpHandup](#sevtkphandup)
  2511 +启动待机按键反馈类型为举手提问时返回此事件
  2512 +
2048 ## 在线测验 2513 ## 在线测验
2049 ### 标准测验 2514 ### 标准测验
2050 #### 方法 2515 #### 方法
@@ -2061,11 +2526,12 @@ @@ -2061,11 +2526,12 @@
2061 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验| 2526 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
2062 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头| 2527 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
2063 |+questions|array||是|题目详情| 2528 |+questions|array||是|题目详情|
2064 -|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级大题<br><font color="red">最多为三级题号,即最多可以设为x-x-</font>|  
2065 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 | 2529 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
2066 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。| 2530 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
2067 -|++startNo | int||是| 起始题号 |  
2068 -|++count | int||是| 题目数量 | 2531 +|++firstNo | int||否| 一级题号,mode=0 时有效,有效范围1-255,不传此字段或传0表示不生效 |
  2532 +|++secondNo | int||否| 二级题号,mode=0 时有效,有效范围1-255,不传此字段或传0表示不生效 |
  2533 +|++startNo | int||是| 最后一级题号起始题号<br>mode=0 时有效,范围1-255,mode=1或2时按顺序显示题号<br>说明:<br>firstNo和secondNo都未赋值时,此字段为一级题号<br>firstNo赋值,secondNo未赋值时,此字段为二级题号<br>secondNo赋值时,此字段为三级题号 |
  2534 +|++count | int||是| 相同参数的连续题目数量, >0 |
2069 2535
2070 - **示例代码** 2536 - **示例代码**
2071 2537
@@ -2076,7 +2542,7 @@ @@ -2076,7 +2542,7 @@
2076 "dataTag":"1", 2542 "dataTag":"1",
2077 "data":{ 2543 "data":{
2078 "mode": 1, 2544 "mode": 1,
2079 - "examNo": 1, 2545 + "examNo": 0,
2080 "questions": [{ 2546 "questions": [{
2081 "quesType": 1, //单选题 2547 "quesType": 1, //单选题
2082 "startNo": 1, //题号从1开始 2548 "startNo": 1, //题号从1开始
@@ -2093,7 +2559,7 @@ @@ -2093,7 +2559,7 @@
2093 "dataTag":"1", 2559 "dataTag":"1",
2094 "data":{ 2560 "data":{
2095 "mode": 0, 2561 "mode": 0,
2096 - "examNo": 1, 2562 + "examNo": 0,
2097 //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题 2563 //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题
2098 "questions": [{ 2564 "questions": [{
2099 "quesType": 1, //单选题 2565 "quesType": 1, //单选题
@@ -2124,26 +2590,26 @@ @@ -2124,26 +2590,26 @@
2124 "dataTag":"1", 2590 "dataTag":"1",
2125 "data":{ 2591 "data":{
2126 "mode": 0, 2592 "mode": 0,
2127 - "examNo": 1, 2593 + "examNo": 0,
2128 //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题 2594 //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题
2129 "questions": [{ 2595 "questions": [{
2130 - "symbol": "1-", 2596 + "firstNo": 1,
2131 "quesType": 1, //单选题 2597 "quesType": 1, //单选题
2132 "startNo": 1, //题号从1-1开始 2598 "startNo": 1, //题号从1-1开始
2133 "count":2 //连续2题 2599 "count":2 //连续2题
2134 },{ 2600 },{
2135 - "symbol": "2-", 2601 + "firstNo": 2,
2136 "quesType": 2, //多选题 2602 "quesType": 2, //多选题
2137 "startNo": 1, //题号从2-1开始 2603 "startNo": 1, //题号从2-1开始
2138 "count":2, //连续2题 2604 "count":2, //连续2题
2139 "option":5 2605 "option":5
2140 },{ 2606 },{
2141 - "symbol": "3-", 2607 + "firstNo": 3,
2142 "quesType": 3, //数字题 2608 "quesType": 3, //数字题
2143 "startNo": 1, //题号从3-1开始 2609 "startNo": 1, //题号从3-1开始
2144 "count":1 //连续1题 2610 "count":1 //连续1题
2145 },{ 2611 },{
2146 - "symbol": "4-", 2612 + "firstNo": 4,
2147 "quesType": 4, //判断题 2613 "quesType": 4, //判断题
2148 "startNo": 1, //题号从4-1开始 2614 "startNo": 1, //题号从4-1开始
2149 "count":1 //连续1题 2615 "count":1 //连续1题
@@ -2159,26 +2625,30 @@ @@ -2159,26 +2625,30 @@
2159 "dataTag":"1", 2625 "dataTag":"1",
2160 "data":{ 2626 "data":{
2161 "mode": 0, 2627 "mode": 0,
2162 - "examNo": 1, 2628 + "examNo": 0,
2163 //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题 2629 //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题
2164 "questions": [{ 2630 "questions": [{
2165 - "symbol": "1-1-", 2631 + "firstNo": 1,
  2632 + "secondNo": 1,
2166 "quesType": 1, //单选题 2633 "quesType": 1, //单选题
2167 "startNo": 1, //题号从1-1-1开始 2634 "startNo": 1, //题号从1-1-1开始
2168 "count":2 //连续2题 2635 "count":2 //连续2题
2169 },{ 2636 },{
2170 - "symbol": "1-2-", 2637 + "firstNo": 1,
  2638 + "secondNo": 2,
2171 "quesType": 2, //多选题 2639 "quesType": 2, //多选题
2172 "startNo": 1, //题号从1-2-1开始 2640 "startNo": 1, //题号从1-2-1开始
2173 "count":2, //连续2题 2641 "count":2, //连续2题
2174 "option":5 2642 "option":5
2175 },{ 2643 },{
2176 - "symbol": "2-1-", 2644 + "firstNo": 2,
  2645 + "secondNo": 1,
2177 "quesType": 3, //数字题 2646 "quesType": 3, //数字题
2178 "startNo": 1, //题号从2-1-1开始 2647 "startNo": 1, //题号从2-1-1开始
2179 "count":1 //连续1题 2648 "count":1 //连续1题
2180 },{ 2649 },{
2181 - "symbol": "3-1-", 2650 + "firstNo": 3,
  2651 + "secondNo": 1,
2182 "quesType": 4, //判断题 2652 "quesType": 4, //判断题
2183 "startNo": 1, //题号从3-1-1开始 2653 "startNo": 1, //题号从3-1-1开始
2184 "count":1 //连续1题 2654 "count":1 //连续1题
@@ -2194,7 +2664,7 @@ @@ -2194,7 +2664,7 @@
2194 "dataTag":"1", 2664 "dataTag":"1",
2195 "data":{ 2665 "data":{
2196 "mode": 1, 2666 "mode": 1,
2197 - "examNo": 1, 2667 + "examNo": 0,
2198 "questions": [{ 2668 "questions": [{
2199 "quesType": 1, //单选题 2669 "quesType": 1, //单选题
2200 "startNo": 1, //题号从1开始 2670 "startNo": 1, //题号从1开始
@@ -2224,7 +2694,7 @@ @@ -2224,7 +2694,7 @@
2224 "dataTag":"1", 2694 "dataTag":"1",
2225 "data":{ 2695 "data":{
2226 "mode": 2, 2696 "mode": 2,
2227 - "examNo": 1, 2697 + "examNo": 0,
2228 "questions": [{ 2698 "questions": [{
2229 "quesType": 1, //单选题 2699 "quesType": 1, //单选题
2230 "startNo": 1, //题号从1开始 2700 "startNo": 1, //题号从1开始
@@ -2246,7 +2716,8 @@ @@ -2246,7 +2716,8 @@
2246 } 2716 }
2247 } 2717 }
2248 ``` 2718 ```
2249 -##### stopKpExam 2719 +
  2720 +<!-- ##### stopKpExam
2250 - **主题**:/client/\${baseSN}/send 2721 - **主题**:/client/\${baseSN}/send
2251 - **功能描述**:停止标准测验 2722 - **功能描述**:停止标准测验
2252 - **参数说明** 2723 - **参数说明**
@@ -2263,7 +2734,10 @@ @@ -2263,7 +2734,10 @@
2263 "fun":"stopKpExam", 2734 "fun":"stopKpExam",
2264 "dataTag":"1" 2735 "dataTag":"1"
2265 } 2736 }
2266 -``` 2737 +``` -->
  2738 +##### [stopKpVote](#stopkpvote)
  2739 +停止在线测验
  2740 +
2267 ##### rtKpAllowEdited 2741 ##### rtKpAllowEdited
2268 - **主题**:/client/\${baseSN}/send 2742 - **主题**:/client/\${baseSN}/send
2269 - **功能描述**:键盘提交后,允许键盘修改答案 2743 - **功能描述**:键盘提交后,允许键盘修改答案
@@ -2302,8 +2776,10 @@ @@ -2302,8 +2776,10 @@
2302 |dataTag|string|-|否|数据包标识,可为空字符串| 2776 |dataTag|string|-|否|数据包标识,可为空字符串|
2303 |data|array|-|是|传送参数的对象数组| 2777 |data|array|-|是|传送参数的对象数组|
2304 |++keySn|string||是|键盘SN| 2778 |++keySn|string||是|键盘SN|
2305 -|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B| 2779 +|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B<br><font color="red">注意:如启动的是多科测验,键盘提交的题目序号对应启动时下发的题目总序号,不按科目区分</font>|
2306 |++keyTime|double||是|答题时间,从启动开始计算,单位秒| 2780 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2781 +|++voltage|double||是|键盘电量|
  2782 +|++retryCount|int||是|键盘提交数据的重发次数|
2307 2783
2308 - **示例代码** 2784 - **示例代码**
2309 2785
@@ -2350,4 +2826,247 @@ @@ -2350,4 +2826,247 @@
2350 "keyTime":3.2 2826 "keyTime":3.2
2351 }] 2827 }]
2352 } 2828 }
  2829 +```
  2830 +
  2831 +### 多科测验
  2832 +#### 方法
  2833 +##### startKpMultiExam
  2834 +- **主题**:/client/\${baseSN}/send
  2835 +- **功能描述**:启动多科测验
  2836 +- **参数说明**
  2837 +
  2838 +|参数名|类型|限制|是否必填|说明|
  2839 +|---|---|---|---|---|
  2840 +|fun|string|-|是|指令名称|
  2841 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2842 +|data|object|-|是|传送参数的对象|
  2843 +|+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
  2844 +|+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
  2845 +|+questions|array||是|题目详情|
  2846 +|++subject | int||是 | 科目序号,1-9,对应键盘中内置的科目1-9<br>键盘答题时可选择科目切换答题|
  2847 +|++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  2848 +|++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  2849 +|++firstNo | int||否| 一级题号,mode=0 时有效,有效范围1-255,不传字段或传0表示不生效 |
  2850 +|++startNo | int||是| 起始题号,mode=0 时有效,范围1-255 <br>firstNo未赋值时,此字段表示一级题号<br>firstNo赋值时,此字段表示二级题号|
  2851 +|++count | int||是| 相同参数的连续题目数量, >0 |
  2852 +|+simParams|object||否|内部模拟测试参数设置对象|
  2853 +|++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|
  2854 +
  2855 +- **示例代码**
  2856 +```json
  2857 +//自定义题号
  2858 +{
  2859 + "fun":"startKpMultiExam",
  2860 + "dataTag":"1",
  2861 + "data":{
  2862 + "mode": 0,
  2863 + "examNo": 0,
  2864 + "questions": [{
  2865 + "subject":1, //科目1
  2866 + //题号1-1 到1-10 共10题单选
  2867 + "firstNo": 1,
  2868 + "quesType": 1,
  2869 + "startNo": 1,
  2870 + "count":10
  2871 + }, {
  2872 + "subject":2, //科目2
  2873 + //题号2-2和2-3共两题 多选题,5个选项
  2874 + "firstNo": 2,
  2875 + "quesType": 2,
  2876 + "option": 5,
  2877 + "startNo": 2,
  2878 + "count":2
  2879 + }, {
  2880 + "subject":3, //科目3
  2881 + //题号3-1和3-2共两道数字题
  2882 + "firstNo": 3,
  2883 + "quesType": 3,
  2884 + "startNo": 1,
  2885 + "count":2
  2886 + }, {
  2887 + "subject":1, //科目1
  2888 + //题号4和5 ,判断题
  2889 + "quesType": 4,
  2890 + "startNo": 4,
  2891 + "count":2
  2892 + }],
  2893 + "simParams":{
  2894 + "answer":["A","ABCD","10","1"]
  2895 + }
  2896 + }
  2897 +}
  2898 +
  2899 +//显示Q开头
  2900 +{
  2901 + "fun":"startKpMultiExam",
  2902 + "dataTag":"1",
  2903 + "data":{
  2904 + "mode": 1,
  2905 + "examNo": 0,
  2906 + "questions": [{
  2907 + "subject":1,
  2908 + //Q1-Q20,单选题
  2909 + "quesType": 1,
  2910 + "startNo": 1,
  2911 + "count":20
  2912 + }],
  2913 + "simParams":{
  2914 + "answer":["A","","",""]
  2915 + }
  2916 + }
  2917 +}
  2918 +
  2919 +//显示题开头
  2920 +{
  2921 + "fun":"startKpMultiExam",
  2922 + "dataTag":"1",
  2923 + "data":{
  2924 + "mode": 2,
  2925 + "examNo": 0,
  2926 + "questions": [{
  2927 + "subject":1,
  2928 + //题1-题20,单选题
  2929 + "quesType": 1,
  2930 + "startNo": 1,
  2931 + "count":20
  2932 + }],
  2933 + "simParams":{
  2934 + "answer":["A","","",""]
  2935 + }
  2936 + }
  2937 +}
  2938 +```
  2939 +
  2940 +<!-- ##### stopKpMultiExam
  2941 +- **主题**:/client/\${baseSN}/send
  2942 +- **功能描述**:停止多科测验
  2943 +- **参数说明**
  2944 +
  2945 +|参数名|类型|限制|是否必填|说明|
  2946 +|---|---|---|---|---|
  2947 +|fun|string|-|是|指令名称|
  2948 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2949 +
  2950 +- **示例代码**
  2951 +```json
  2952 +{
  2953 + "fun":"stopKpMultiExam",
  2954 + "dataTag":"1"
  2955 +}
  2956 +``` -->
  2957 +##### [stopKpVote](#stopkpvote)
  2958 +停止多科测验
  2959 +
  2960 +#### 事件
  2961 +##### [sEvtStateCode](#sevtstatecode)
  2962 +发送指令后返回接收状态
  2963 +
  2964 +##### [fEvtKpExam](#fevtkpexam)
  2965 +返回测验中键盘提交答题数据
  2966 +
  2967 +##### [fEvtFinalSubmit](#fevtfinalsubmit)
  2968 +返回键盘手动交卷标识
  2969 +
  2970 +### 自主录分
  2971 +#### 方法
  2972 +##### startKpScoreInput
  2973 +- **主题**:/client/\${baseSN}/send
  2974 +- **功能描述**:启动标准测验
  2975 +- **参数说明**
  2976 +
  2977 +|参数名|类型|限制|是否必填|说明|
  2978 +|---|---|---|---|---|
  2979 +|fun|string|-|是|指令名称|
  2980 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2981 +|data|object|-|是|传送参数的对象|
  2982 +|+examNo|int||是|0-9999<br>=0,新的录分<br>>0时,与上次启动卷号一致继续录分,不一致进入新的录分|
  2983 +|+mode|int||是|录分模式<br>0-自主录分<br>1-交叉录分,需先输入录分的人员标识|
  2984 +|+questions|array||是|题目详情|
  2985 +|++max |int||是|可输入的最大值,<=100|
  2986 +|++digits|int||是|可输入的小数位数,范围0-2|
  2987 +|++startNo | int||是| 起始题号|
  2988 +|++count | int||是| 相同参数的题目数量,>0|
  2989 +
  2990 +- **示例代码**
  2991 +```json
  2992 +{
  2993 + "fun":"startKpScoreInput",
  2994 + "dataTag":"1",
  2995 + "data":{
  2996 + "mode": 0,
  2997 + "examNo": 0,
  2998 + "questions": [{
  2999 + //题号1 到 2 共2题,单题满分10分
  3000 + "max":10,
  3001 + "digits":1,
  3002 + "startNo": 1,
  3003 + "count":2
  3004 + }, {
  3005 + //题号3到6 共4道题,单题满分5
  3006 + "max":5,
  3007 + "digits":0,
  3008 + "startNo": 3,
  3009 + "count":4
  3010 + }]
  3011 + }
  3012 +}
  3013 +```
  3014 +<!--
  3015 +##### stopKpScoreInput
  3016 +- **主题**:/client/\${baseSN}/send
  3017 +- **功能描述**:停止自主录分
  3018 +- **参数说明**
  3019 +
  3020 +|参数名|类型|限制|是否必填|说明|
  3021 +|---|---|---|---|---|
  3022 +|fun|string|-|是|指令名称|
  3023 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3024 +
  3025 +- **示例代码**
  3026 +```json
  3027 +{
  3028 + "fun":"stopKpScoreInput",
  3029 + "dataTag":"1"
  3030 +}
  3031 +``` -->
  3032 +##### [stopKpVote](#stopkpvote)
  3033 +停止自主录分
  3034 +
  3035 +#### 事件
  3036 +##### [sEvtStateCode](#sevtstatecode)
  3037 +发送指令后返回接收状态
  3038 +
  3039 +##### fEvtKpScore
  3040 +- **主题**:/basestation/\${baseSN}/receive
  3041 +- **功能描述**:返回键盘提交录分信息
  3042 +- **参数说明**
  3043 +
  3044 +|参数名|类型|限制|非空|说明|
  3045 +|---|---|---|---|---|
  3046 +|fun|string|-|是|指令名称|
  3047 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3048 +|data|array|-|是|传送参数的对象数组|
  3049 +|++keySn|string||是|键盘SN|
  3050 +|++keyValue|string||是|键盘提交的分值,1:10;2:0表示第1题提交10分,第二题提交0分|
  3051 +|++keyTime|double||是|录分时间,从启动录分开始计算,单位秒|
  3052 +|++voltage|double||是|键盘电量|
  3053 +|++retryCount|int||是|键盘提交数据的重发次数|
  3054 +
  3055 +- **示例代码**
  3056 +```json
  3057 +{
  3058 + "fun":"fEvtKpScore",
  3059 + "dataTag":"1",
  3060 + "data": [{
  3061 + "keySn": "1234567890",
  3062 + "keyValue":"1:8;2:7.5;3:2;4:3",
  3063 + "keyTime":3.2
  3064 + },
  3065 + {
  3066 + "keySn": "1234567891",
  3067 + "keyValue":"1:10;2:0",
  3068 + "keyTime":3.5
  3069 + }
  3070 + ]
  3071 +}
2353 ``` 3072 ```
2354 \ No newline at end of file 3073 \ No newline at end of file