Commit 4068adabe7440ef3ac97d08aae3222dc2000d180

Authored by 刘琴
1 parent c31f025d

增加基站授时和基站日志的内容

通讯协议-B200W-MQTT协议[内部].md
... ... @@ -59,6 +59,7 @@
59 59 |基站连接 - 获取在线基站|主动获取在线基站信息<br>不确定基站SN时|[getBsOnlineState](#getbsonlinestate)|[fEvtBsOnlineState](#fevtbsonlinestate)||
60 60 |基站连接 - 主动获取状态|主动获取基站连接状态|[getBsConnectState](#getbsconnectstate)|[sEvtBsConnectState](#sevtbsconnectstate)||
61 61 |基站连接 - 自动获取状态|基站连接变化系统通知|-|[sEvtBsConnectState](#sevtbsconnectstate)||
  62 +|基站授时|对基站授时用于校准时间|[timeSync](#timesync)|[sEvtStateCode](#sevtstatecode)||
62 63 |键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)||
63 64 |识别设置 - 出厂编码|<font color="red">设置基站出厂编码(内)|[setBsSN](#setbssn)|[fEvtBsSN](#fevtbssn)|
64 65 |识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)|
... ... @@ -81,6 +82,7 @@
81 82 ||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
82 83 |网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
83 84 ||设置MQTT参数|[setBsMqttParams](#setbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)||
  85 +|基站维护|获取基站日志信息|[getBsLogInfo](#getbsloginfo)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsLogInfo](#fevtbsloginfo)<font color="red">(内)</font>|
84 86 |基站升级|<font color="red">开启基站升级(内)|[startBsUpdate](#startbsupdate)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsUpateState](#fevtbsupatestate)<br>[fEvtBsUpdateProgress](#fevtbsupdateprogress)|
85 87 ||<font color="red">下载字库(内)|[downloadFontLib](#downloadfontlib)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsFontLibState](#fevtbsfontlibstate)<br>[fEvtBsFontLibProgress](#fevtbsfontlibprogress)|
86 88 ### 键盘管理
... ... @@ -250,7 +252,7 @@
250 252 |+funName|string||是|指令名称|
251 253 |+code|string||是|状态码,含义见下表|
252 254  
253   -|错误码|说明|
  255 +|状态码|说明|
254 256 |---|---|
255 257 |0|指令收取成功|
256 258 |10001|不能正确解析的JSON数据|
... ... @@ -344,6 +346,33 @@
344 346 }
345 347 }
346 348 ```
  349 +### 基站授时
  350 +#### 方法
  351 +##### timeSync
  352 +- **主题**:/client/\${baseSN}/send
  353 +- **功能描述**:发送当前时间戳给基站进行校时
  354 +- **参数说明**
  355 +
  356 +|参数名|类型|限制|是否必填|说明|
  357 +|---|---|---|---|---|
  358 +|fun|string|-|是|固定指令名称|
  359 +|dataTag|string|-|否|数据包标识|
  360 +|data|object|-|是|传送参数的对象|
  361 +|+timeStamp|long ||否|当前时间的时间戳|
  362 +
  363 +- **示例代码**
  364 +```Json
  365 +{
  366 + "fun":"timeSync",
  367 + "dataTag":"1",
  368 + "data":{
  369 + "timeStamp":1718247133290
  370 + }
  371 +}
  372 +```
  373 +#### 事件
  374 +##### [sEvtStateCode](#sevtstatecode)
  375 +返回指令的接收状态
347 376  
348 377 ### 识别设置
349 378 #### 方法
... ... @@ -1069,6 +1098,56 @@
1069 1098 }
1070 1099 }
1071 1100 ```
  1101 +### 基站维护
  1102 +#### 方法
  1103 +##### getBsLogInfo
  1104 +- **主题**:/client/\${baseSN}/send
  1105 +- **功能描述**:获取基站日志,用于出现故障需要排查问题时获取基站内部日志记录
  1106 +- **参数说明**
  1107 +
  1108 +|参数名|类型|限制|是否必填|说明|
  1109 +|---|---|---|---|---|
  1110 +|fun|string|-|是|指令名称|
  1111 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1112 +
  1113 +- **示例代码**
  1114 +```Json
  1115 +{
  1116 + "fun":"getBsLogInfo",
  1117 + "dataTag":"1"
  1118 +}
  1119 +```
  1120 +
  1121 +#### 事件
  1122 +##### [sEvtStateCode](#sevtstatecode)
  1123 +返回指令的接收状态
  1124 +
  1125 +##### fEvtBsLogInfo
  1126 +- **主题**: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  1127 +- **功能描述**:返回基站存储的日志内容
  1128 +- **参数说明**
  1129 +
  1130 +|参数名|类型|限制|非空|说明|
  1131 +|---|---|---|---|---|
  1132 +|fun|string|-|是|指令名称|
  1133 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1134 +|data|object|-|是|传送参数的对象|
  1135 +|+total|int||是|总共多少包|
  1136 +|+current|int||是|当前第几包|
  1137 +|+info|string||是|日志内容|
  1138 +
  1139 +- **示例代码**
  1140 +```Json
  1141 +{
  1142 + "fun":"fEvtBsLogInfo",
  1143 + "dataTag":"1",
  1144 + "data":{
  1145 + "total":10,
  1146 + "current":1,
  1147 + "info":"XXXXXXXXXXXXX"
  1148 + }
  1149 +}
  1150 +```
1072 1151 ### 基站升级
1073 1152 #### 方法
1074 1153 ##### startBsUpdate
... ...
通讯协议-B200W-MQTT协议[外].md 0 → 100644
  1 +<style>
  2 + table {
  3 + width: 100%; /* 或者具体的像素值,例如:1200px */
  4 + table-layout: fixed; /* 保持列宽固定 */
  5 + }
  6 + th, td {
  7 + word-wrap: break-word; /* 允许文本换行 */
  8 + }
  9 + .delline{
  10 + text-decoration:line-through;
  11 + }
  12 + .yellowFill{
  13 + background-color: yellow;
  14 + }
  15 +</style>
  16 +# SunVote B200W MQTT通讯协议
  17 +
  18 +[TOC]
  19 +
  20 +# 功能说明
  21 +
  22 +## 主题说明
  23 +\${baseSN}为指定的基站的SN编码,不能为空,接收基站反馈数据需要订阅对应基站SN的接收主题。
  24 +### 发布的主题
  25 +应用程序发布的主题,基站订阅
  26 +/client/\${baseSN}/send
  27 +/client/multiBase/send
  28 +
  29 +### 订阅的主题
  30 +应用程序订阅的主题,基站发布
  31 +/basestation/\\${baseSN}/receive
  32 +/basestation/multiBase/receive
  33 +
  34 +## 指令说明
  35 +|指令功能标识 |说明 |约束|
  36 +|---|---|---|
  37 +|get| 待机状态下获取参数属性状态及数据 |待机状态|
  38 +|set| 待机状态下设置参数属性状态及数据 |待机状态|
  39 +|start| 运行一个单进程业务实例(函数) |待机状态|
  40 +|stop| 停止一个单进程业务实例(函数) |待机状态|
  41 +|rtXXX| 在线状态下可实时执行方法及函数 ||
  42 +
  43 +## 事件说明
  44 +|事件标识| 说明| 约束|
  45 +|---|---|---|
  46 +|sEvtXXX|系统事件 |自动返回|
  47 +|fEvtXXX|指令事件 |调用对应指令后返回|
  48 +
  49 +## 功能速查一览表
  50 +### 基站管理
  51 +|功能归类|功能|API指令|指令/系统事件|
  52 +|---|---|---|---|
  53 +|基站连接 - 获取在线基站|主动获取在线基站信息<br>不确定基站SN时|[getBsOnlineState](#getbsonlinestate)|[fEvtBsOnlineState](#fevtbsonlinestate)||
  54 +|基站连接 - 主动获取状态|主动获取基站连接状态|[getBsConnectState](#getbsconnectstate)|[sEvtBsConnectState](#sevtbsconnectstate)||
  55 +|基站连接 - 自动获取状态|基站连接变化系统通知|-|[sEvtBsConnectState](#sevtbsconnectstate)||
  56 +|基站授时|对基站授时用于校准时间|[timeSync](#timesync)|[sEvtStateCode](#sevtstatecode)||
  57 +|键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)||
  58 +|识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)|
  59 +|识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)|
  60 +|组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
  61 +|组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|
  62 +||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
  63 +|组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)|
  64 +||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
  65 +|登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)|
  66 +||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
  67 +|键盘统一设置 - 键盘语言|获取键盘语言|[getBsKpLanguage](#getbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|
  68 +||设置键盘语言|[setBsKpLanguage](#setbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)||
  69 +|网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
  70 +||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
  71 +|网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
  72 +||设置MQTT参数|[setBsMqttParams](#setbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)||
  73 +|基站维护|获取基站日志信息|[getBsLogInfo](#getbsloginfo)|[sEvtStateCode](#sevtstatecode)|
  74 +### 键盘管理
  75 +|功能归类|功能|API指令|指令事件|
  76 +|---|---|---|---|
  77 +|交互设置 - 用户实时提示信息|实时设置提示反馈信息|[rtSetKpUserPrompt](#rtsetkpuserprompt)|[sEvtStateCode](#sevtstatecode)<br>[fEvtSetKpUserPrompt](#fevtsetkpuserprompt)|
  78 +|在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  79 +||停止扫描在线键盘|[stopGetKpOnline](#stopgetkponline)|[sEvtStateCode](#sevtstatecode)|
  80 +|维护功能 - 遥控功能|遥控键盘休眠|[remoteKpSleep](#remotekpsleep)|[sEvtStateCode](#sevtstatecode)|
  81 +### 绑定
  82 +|功能归类|功能|API指令|指令事件|
  83 +|---|---|---|---|
  84 +|无线绑定|设置绑定信息到键盘|[rtSetKpBindingInfo](#rtsetkpbindinginfo)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpBindingInfo](#fevtkpbindinginfo)|
  85 +||清除键盘绑定信息|[clearKpBindingInfo](#clearkpbindinginfo)|[sEvtStateCode](#sevtstatecode)<br>[fEvtClearKpBindingInfo](#fevtclearkpbindinginfo)|
  86 +### 签到
  87 +|功能归类|功能|API指令|指令事件|
  88 +|---|---|---|---|
  89 +|随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
  90 +||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)|
  91 +||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpLoginAllowed](#fevtkploginallowed)|
  92 +### 按键反馈
  93 +|功能归类|功能|API指令|指令事件|
  94 +|---|---|---|---|
  95 +|判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQATrueFalse](#fevtqatruefalse)|
  96 +||停止判断题答题|[stopQATrueFalse](#stopqatruefalse)|[sEvtStateCode](#sevtstatecode)|
  97 +|选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAChoice](#fevtqachoice)|
  98 +||停止选择题答题|[stopQAChoice](#stopqachoice)|[sEvtStateCode](#sevtstatecode)|
  99 +|数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQANum](#fevtqanum)|
  100 +||停止数字题答题|[stopQANum](#stopqanum)|[sEvtStateCode](#sevtstatecode)|
  101 +|抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)|
  102 +||停止抢答题答题|[stopQAQuicker](#stopqaquicker)|[sEvtStateCode](#sevtstatecode)|
  103 +### 在线测验
  104 +|功能归类|功能|API指令|指令事件|
  105 +|---|---|---|---|
  106 +|标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  107 +||停止标准测验|[stopKpExam](#stopkpexam)|[sEvtStateCode](#sevtstatecode)|
  108 +||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  109 +
  110 +## 公共事件
  111 +### sEvtBsConnectState
  112 +- **主题**: /basestation/\${baseSN}/receive
  113 +- **功能描述**:基站连接成功时返回基站型号和基站SN,基站从已连接状态断开返回连接断开
  114 +- **参数说明**
  115 +
  116 +|参数名|类型|限制|非空|说明|
  117 +|-----|-----|-----|-----|-----|
  118 +|fun|string|-|是|事件类型|
  119 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  120 +|data|object|-|是|传送参数的对象|
  121 +|+baseModel|int||否|基站的型号码|
  122 +|+modelName|string||否|基站的型号名称|
  123 +|+state|int||是|基站的连接状态<br>1-已连接<br>2-连接断开|
  124 +|+version|string||否|基站固件版本|
  125 +
  126 +- **示例代码**
  127 +```Json
  128 +//连接成功
  129 +{
  130 + "fun":"sEvtBsConnectState",
  131 + "dataTag":"1",
  132 + "data":{
  133 + "state":1,
  134 + "baseModel":218,
  135 + "modelName":"B200",
  136 + "version":"1.0.3"
  137 + }
  138 +}
  139 +//连接断开
  140 +{
  141 + "fun":"sEvtBsConnectState",
  142 + "dataTag":"1",
  143 + "data":{
  144 + "state":2
  145 + }
  146 +}
  147 +```
  148 +### sEvtBsChannelConflict
  149 +- **主题**: /basestation/\${baseSN}/receive
  150 +- **功能描述**:基站信道冲突时主动上报,应用程序可根据实际业务修改基站信道
  151 +- **参数说明**
  152 +
  153 +|参数名|类型|限制|非空|说明|
  154 +|---|---|---|---|---|
  155 +|fun|string|-|是|事件名称|
  156 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  157 +|data|object|-|是|传送参数的对象|
  158 +|+value|int||是|有冲突的信道|
  159 +
  160 +- **示例代码**
  161 +```Json
  162 +{
  163 + "fun":"sEvtBsChannelConflict",
  164 + "dataTag":"1",
  165 + "data":{
  166 + "value":5 //信道5有多个基站使用
  167 + }
  168 +}
  169 +```
  170 +### sEvtBsNfcResults
  171 +- **主题**: /basestation/\${baseSN}/receive
  172 +- **功能描述**:键盘刷卡时主动上报,如果超出基站容量会上报失败
  173 +- **参数说明**
  174 +
  175 +|参数名|类型|限制|非空|说明|
  176 +|---|---|---|---|---|
  177 +|fun|string|-|是|事件名称|
  178 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  179 +|data|object|-|是|传送参数的对象|
  180 +|+keySn|string||是|刷卡的键盘SN|
  181 +|+value|int||是|刷卡的状态<br>1-成功<br>2-失败|
  182 +
  183 +- **示例代码**
  184 +```Json
  185 +{
  186 + "fun":"sEvtBsNfcResults",
  187 + "dataTag":"1", //不需要时可传空字符串
  188 + "data":{
  189 + "keySn":"1234567890",
  190 + "value":1
  191 + }
  192 +}
  193 +```
  194 +
  195 +### sEvtBsKpOnlineMsg
  196 +- **主题**: /basestation/\${baseSN}/receive
  197 +- **功能描述**:键盘上线通知,主动上报,键盘升级成功后也会上报
  198 +- **参数说明**
  199 +
  200 +|参数名|类型|限制|非空|说明|
  201 +|---|---|---|---|---|
  202 +|fun|string|-|是|事件名称|
  203 +|dataTag|string|-|否|数据包标识|
  204 +|data|object|-|是|传送参数的对象|
  205 +|+keySn|string||是|键盘SN|
  206 +|+version|string||是|键盘固件版本|
  207 +|+model|int||是|键盘型号|
  208 +|+voltage|double||是|键盘电压|
  209 +
  210 +- **示例代码**
  211 +```Json
  212 +{
  213 + "fun":"sEvtBsKpOnlineMsg",
  214 + "dataTag":"1",
  215 + "data":{
  216 + "keySn":"1234567890",
  217 + "version":"1.0.0",
  218 + "model":67,
  219 + "voltage":2.8
  220 + }
  221 +}
  222 +```
  223 +### sEvtStateCode
  224 +- **主题**: /basestation/\${baseSN}/receive
  225 +- **功能描述**:返回基站接收指令状态信息
  226 +- **参数说明**
  227 +
  228 +|参数名|类型|限制|非空|说明|
  229 +|---|---|---|---|---|
  230 +|fun|string|-|是|事件名称|
  231 +|dataTag|string|-|否|数据包标识|
  232 +|data|object|-|是|传送参数的对象|
  233 +|+funName|string||是|指令名称|
  234 +|+code|string||是|状态码,含义见下表|
  235 +
  236 +|状态码|说明|
  237 +|---|---|
  238 +|0|指令收取成功|
  239 +|10001|不能正确解析的JSON数据|
  240 +|10002|解析JSON错误|
  241 +|20001|基站未连接|
  242 +|20002|功能不支持|
  243 +|20003|基站SN格式不正确|
  244 +|20004|参数错误|
  245 +|20005|基站在答题中|
  246 +|40001|升级功能只能支持一个基站|
  247 +|50001|此功能必须指定基站|
  248 +|60001|此功能必须指定键盘SN|
  249 +
  250 +- **示例代码**
  251 +```Json
  252 +{
  253 + "fun":"sEvtStateCode",
  254 + "dataTag":"1",
  255 + "data":{
  256 + "funName":"startKpRollCall",
  257 + "code":"20005"
  258 + }
  259 +}
  260 +```
  261 +## 基站管理
  262 +### 基站连接
  263 +#### 方法
  264 +##### getBsOnlineState
  265 +- **主题**:<span class="yellowFill">/client/multiBase/send</span>
  266 +- **功能描述**:主动获取所有在线基站信息,在线基站回复
  267 +- **参数说明**
  268 +
  269 +|参数名|类型|限制|是否必填|说明|
  270 +|---|---|---|---|---|
  271 +|fun|string|-|是|固定指令名称|
  272 +|dataTag|string|-|否|数据包标识|
  273 +- **示例代码**
  274 +```Json
  275 +{
  276 + "fun":"getBsOnlineState",
  277 + "dataTag":"1"
  278 +}
  279 +```
  280 +
  281 +##### getBsConnectState
  282 +- **主题**:/client/\${baseSN}/send
  283 +- **功能描述**:主动获取基站连接状态
  284 +- **参数说明**
  285 +
  286 +|参数名|类型|限制|是否必填|说明|
  287 +|---|---|---|---|---|
  288 +|fun|string|-|是|固定指令名称|
  289 +|dataTag|string|-|否|数据包标识|
  290 +- **示例代码**
  291 +```Json
  292 +{
  293 + "fun":"getBsConnectState",
  294 + "dataTag":"1"
  295 +}
  296 +```
  297 +#### 事件
  298 +##### [sEvtBsConnectState](#sevtbsconnectstate)
  299 +参见基站连接变化系统通知
  300 +
  301 +##### fEvtBsOnlineState
  302 +- **主题**: <span class="yellowFill">/basestation/mutilBase/receive</span>
  303 +- **功能描述**:基站在线返回基站型号和基站SN
  304 +- **参数说明**
  305 +
  306 +|参数名|类型|限制|非空|说明|
  307 +|-----|-----|-----|-----|-----|
  308 +|fun|string|-|是|事件类型|
  309 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  310 +|data|object|-|是|传送参数的对象|
  311 +|+baseModel|int||否|基站的型号码|
  312 +|+modelName|string||否|基站的型号名称|
  313 +|+version|string||否|基站固件版本|
  314 +|+baseSN|string||否|基站SN|
  315 +
  316 +- **示例代码**
  317 +```Json
  318 +//连接成功
  319 +{
  320 + "fun":"fEvtBsOnlineState",
  321 + "dataTag":"1",
  322 + "data":{
  323 + "baseModel":218,
  324 + "modelName":"B200",
  325 + "version":"1.0.3",
  326 + "baseSN":"2024041401"
  327 + }
  328 +}
  329 +```
  330 +
  331 +### 基站授时
  332 +#### 方法
  333 +##### timeSync
  334 +- **主题**:/client/\${baseSN}/send
  335 +- **功能描述**:发送当前时间戳给基站进行校时
  336 +- **参数说明**
  337 +
  338 +|参数名|类型|限制|是否必填|说明|
  339 +|---|---|---|---|---|
  340 +|fun|string|-|是|固定指令名称|
  341 +|dataTag|string|-|否|数据包标识|
  342 +|data|object|-|是|传送参数的对象|
  343 +|+timeStamp|long ||否|当前时间的时间戳|
  344 +
  345 +- **示例代码**
  346 +```Json
  347 +{
  348 + "fun":"timeSync",
  349 + "dataTag":"1",
  350 + "data":{
  351 + "timeStamp":1718247133290
  352 + }
  353 +}
  354 +```
  355 +#### 事件
  356 +##### [sEvtStateCode](#sevtstatecode)
  357 +返回指令的接收状态
  358 +
  359 +### 识别设置
  360 +#### 方法
  361 +##### getBsModel
  362 +- **主题**:/client/\${baseSN}/send
  363 +- **功能描述**:获取基站型号
  364 +- **参数说明**
  365 +
  366 +|参数名|类型|限制|是否必填|说明|
  367 +|---|---|---|---|---|
  368 +|fun|string|-|是|指令名称|
  369 +|dataTag|string|-|否|数据包标识,可为空字符串|
  370 +
  371 +- **示例代码**
  372 +```Json
  373 +{
  374 + "fun":"getBsModel",
  375 + "dataTag":"1"
  376 +}
  377 +```
  378 +##### getBsFWVersion
  379 +- **主题**:/client/\${baseSN}/send
  380 +- **功能描述**:获取基站固件版本
  381 +- **参数说明**
  382 +
  383 +|参数名|类型|限制|是否必填|说明|
  384 +|---|---|---|---|---|
  385 +|fun|string|-|是|指令名称|
  386 +|dataTag|string|-|否|数据包标识,可为空字符串|
  387 +
  388 +- **示例代码**
  389 +```Json
  390 +{
  391 + "fun":"getBsFWVersion",
  392 + "dataTag":"1"
  393 +}
  394 +```
  395 +#### 事件
  396 +##### fEvtBsSN
  397 +- **主题**: /basestation/\${baseSN}/receive
  398 +- **功能描述**:返回基站的出厂编码
  399 +- **参数说明**
  400 +
  401 +|参数名|类型|限制|非空|说明|
  402 +|---|---|---|---|---|
  403 +|fun|string|-|是|事件名称|
  404 +|dataTag|string|-|否|数据包标识|
  405 +|data|object|-|是|传送参数的对象|
  406 +|+value|string|-|是|基站的出厂编码|
  407 +
  408 +- **示例代码**
  409 +```Json
  410 +{
  411 + "fun":"fEvtBsSN",
  412 + "dataTag":"1",
  413 + "data":{
  414 + "value":"2024041201"
  415 + }
  416 +}
  417 +```
  418 +##### fEvtBsModel
  419 +- **主题**: /basestation/\${baseSN}/receive
  420 +- **功能描述**:返回基站的型号
  421 +- **参数说明**
  422 +
  423 +|参数名|类型|限制|是否必填|说明|
  424 +|---|---|---|---|---|
  425 +|fun|string|-|是|事件名称|
  426 +|dataTag|string|-|否|数据包标识|
  427 +|data|object|-|是|传送参数的对象|
  428 +|+value|string|-|是|基站的型号名称|
  429 +
  430 +- **示例代码**
  431 +```Json
  432 +{
  433 + "fun":"fEvtBsModel",
  434 + "dataTag":"1",
  435 + "data":{
  436 + "value":"B200"
  437 + }
  438 +}
  439 +```
  440 +##### fEvtBsFWVersion
  441 +- **主题**: /basestation/\${baseSN}/receive
  442 +- **功能描述**:返回基站的固件版本
  443 +- **参数说明**
  444 +
  445 +|参数名|类型|限制|是否必填|说明|
  446 +|---|---|---|---|---|
  447 +|fun|string|-|是|事件名称|
  448 +|dataTag|string|-|否|数据包标识|
  449 +|data|object|-|是|传送参数的对象|
  450 +|+value|string||是|基站的固件版本号|
  451 +
  452 +- **示例代码**
  453 +```Json
  454 +{
  455 + "fun":"fEvtBsFWVersion",
  456 + "dataTag":"1",
  457 + "data":{
  458 + "value":"1.0.3"
  459 + }
  460 +}
  461 +```
  462 +### 组网设置
  463 +#### 方法
  464 +##### getBsPairCode
  465 +- **主题**:/client/\${baseSN}/send
  466 +- **功能描述**:获取基站配对码
  467 +- **参数说明**
  468 +
  469 +|参数名|类型|限制|是否必填|说明|
  470 +|---|---|---|---|---|
  471 +|fun|string|-|是|指令名称|
  472 +|dataTag|string|-|否|数据包标识,可为空字符串|
  473 +
  474 +- **示例代码**
  475 +```Json
  476 +{
  477 + "fun":"getBsPairCode",
  478 + "dataTag":"1"
  479 +}
  480 +```
  481 +##### getBsNfcLogin
  482 +- **主题**:/client/\${baseSN}/send
  483 +- **功能描述**:获取刷卡配对状态
  484 +- **参数说明**
  485 +
  486 +|参数名|类型|限制|是否必填|说明|
  487 +|---|---|---|---|---|
  488 +|fun|string|-|是|指令名称|
  489 +|dataTag|string|-|否|数据包标识,可为空字符串|
  490 +
  491 +- **示例代码**
  492 +```Json
  493 +{
  494 + "fun":"getBsNfcLogin",
  495 + "dataTag":"1"
  496 +}
  497 +```
  498 +##### setBsNfcLogin
  499 +- **主题**:/client/\${baseSN}/send
  500 +- **功能描述**:设置基站刷卡配对状态
  501 +- **参数说明**
  502 +
  503 +|参数名|类型|限制|是否必填|说明|
  504 +|---|---|---|---|---|
  505 +|fun|string|-|是|指令名称|
  506 +|dataTag|string|-|否|数据包标识,可为空字符串|
  507 +|data|object|-|是|传送参数的对象|
  508 +|+value|string|-|是|设置的基站刷卡配对状态<br>0-关闭刷卡配对<br>1-开启刷卡配对|
  509 +
  510 +- **示例代码**
  511 +```Json
  512 +{
  513 + "fun":"setBsNfcLogin",
  514 + "dataTag":"1",
  515 + "data":{
  516 + "value":"1"
  517 + }
  518 +}
  519 +```
  520 +##### getBsChannel
  521 +- **主题**:/client/\${baseSN}/send
  522 +- **功能描述**:获取基站信道
  523 +- **参数说明**
  524 +
  525 +|参数名|类型|限制|是否必填|说明|
  526 +|---|---|---|---|---|
  527 +|fun|string|-|是|指令名称|
  528 +|dataTag|string|-|否|数据包标识,可为空字符串|
  529 +
  530 +- **示例代码**
  531 +```Json
  532 +{
  533 + "fun":"getBsChannel",
  534 + "dataTag":"1"
  535 +}
  536 +```
  537 +##### setBsChannel
  538 +- **主题**:/client/\${baseSN}/send
  539 +- **功能描述**:设置基站信道
  540 +- **参数说明**
  541 +
  542 +|参数名|类型|限制|是否必填|说明|
  543 +|---|---|---|---|---|
  544 +|fun|string|-|是|指令名称|
  545 +|dataTag|string|-|否|数据包标识,可为空字符串|
  546 +|data|object|-|是|传送参数的对象|
  547 +|+value|string|-|是|设置的基站信道,可设范围:1-80|
  548 +
  549 +- **示例代码**
  550 +```Json
  551 +{
  552 + "fun":"setBsChannel",
  553 + "dataTag":"1",
  554 + "data":{
  555 + "value":"23"
  556 + }
  557 +}
  558 +```
  559 +#### 事件
  560 +##### fEvtBsPairCode
  561 +- **主题**: /basestation/\${baseSN}/receive
  562 +- **功能描述**:返回基站配对码
  563 +- **参数说明**
  564 +
  565 +|参数名|类型|限制|非空|说明|
  566 +|---|---|---|---|---|
  567 +|fun|string|-|是|事件名称|
  568 +|dataTag|string|-|否|数据包标识,可传空字符串|
  569 +|data|object|-|是|传送参数的对象|
  570 +|+value|string||是|基站的配对码|
  571 +
  572 +- **示例代码**
  573 +```Json
  574 +{
  575 + "fun":"fEvtBsPairCode",
  576 + "dataTag":"1",
  577 + "data":{
  578 + "value":"123456"
  579 + }
  580 +}
  581 +```
  582 +
  583 +##### fEvtBsChannel
  584 +- **主题**: /basestation/\${baseSN}/receive
  585 +- **功能描述**:返回基站信道
  586 +- **参数说明**
  587 +
  588 +|参数名|类型|限制|非空|说明|
  589 +|---|---|---|---|---|
  590 +|fun|string|-|是|事件名称|
  591 +|dataTag|string|-|否|数据包标识,可传空字符串|
  592 +|data|object|-|是|传送参数的对象|
  593 +|+value|string||是|基站信道|
  594 +
  595 +- **示例代码**
  596 +```Json
  597 +{
  598 + "fun":"fEvtBsChannel",
  599 + "dataTag":"1",
  600 + "data":{
  601 + "value":"5"
  602 + }
  603 +}
  604 +```
  605 +##### fEvtBsNfcLogin
  606 +- **主题**: /basestation/\${baseSN}/receive
  607 +- **功能描述**:返回基站是否允许NFC刷卡
  608 +- **参数说明**
  609 +
  610 +|参数名|类型|限制|非空|说明|
  611 +|---|---|---|---|---|
  612 +|fun|string|-|是|事件名称|
  613 +|dataTag|string|-|否|数据包标识,可传空字符串|
  614 +|data|object|-|是|传送参数的对象|
  615 +|+value|string||是|0-关闭 1-开启|
  616 +
  617 +- **示例代码**
  618 +```Json
  619 +{
  620 + "fun":"fEvtBsNfcLogin",
  621 + "dataTag":"1",
  622 + "data":{
  623 + "value":"1"
  624 + }
  625 +}
  626 +```
  627 +### 登录设置
  628 +#### 方法
  629 +##### getBsSSID
  630 +获取基站登录名称
  631 +- **主题**:/client/\${baseSN}/send
  632 +- **功能描述**:获取基站登录名称
  633 +- **参数说明**
  634 +
  635 +|参数名|类型|限制|是否必填|说明|
  636 +|---|---|---|---|---|
  637 +|fun|string|-|是|固定指令名称|
  638 +|dataTag|string|-|否|数据包标识|
  639 +
  640 +- **示例代码**
  641 +```Json
  642 +{
  643 + "fun":"getBsSSID",
  644 + "dataTag":"1"
  645 +}
  646 +```
  647 +##### setBsSSID
  648 +- **主题**:/client/\${baseSN}/send
  649 +- **功能描述**:设置基站登录名称
  650 +- **参数说明**
  651 +
  652 +|参数名|类型|限制|是否必填|说明|
  653 +|---|---|---|---|---|
  654 +|fun|string|-|是|指令名称|
  655 +|dataTag|string|-|否|数据包标识,可为空字符串|
  656 +|data|object|-|是|传送参数的对象|
  657 +|+value|string||是|设置的基站SSID,最长12字符|
  658 +
  659 +- **示例代码**
  660 +```Json
  661 +{
  662 + "fun":"setBsSSID",
  663 + "dataTag":"1",
  664 + "data":{
  665 + "value":"1901班"
  666 + }
  667 +}
  668 +```
  669 +#### 事件
  670 +##### fEvtBsSSID
  671 +- **主题**: /basestation/\${baseSN}/receive
  672 +- **功能描述**:返回基站名称
  673 +- **参数说明**
  674 +
  675 +|参数名|类型|限制|非空|说明|
  676 +|---|---|---|---|---|
  677 +|fun|string|-|是|事件名称|
  678 +|dataTag|string|-|否|数据包标识,可传空字符串|
  679 +|data|object|-|是|传送参数的对象|
  680 +|+value|string||是|基站名称|
  681 +
  682 +- **示例代码**
  683 +```Json
  684 +{
  685 + "fun":"fEvtBsSSID",
  686 + "dataTag":"1",
  687 + "data":{
  688 + "value":"1901班"
  689 + }
  690 +}
  691 +```
  692 +### 键盘统一设置
  693 +#### 方法
  694 +##### getBsKpLanguage
  695 +- **主题**:/client/\${baseSN}/send
  696 +- **功能描述**:获取键盘语言
  697 +- **参数说明**
  698 +
  699 +|参数名|类型|限制|是否必填|说明|
  700 +|---|---|---|---|---|
  701 +|fun|string|-|是|指令名称|
  702 +|dataTag|string|-|否|数据包标识,可为空字符串|
  703 +
  704 +- **示例代码**
  705 +```Json
  706 +{
  707 + "fun":"getBsKpLanguage",
  708 + "dataTag":"1"
  709 +}
  710 +```
  711 +##### setBsKpLanguage
  712 +- **主题**:/client/\${baseSN}/send
  713 +- **功能描述**:设置键盘语言
  714 +- **参数说明**
  715 +
  716 +|参数名|类型|限制|是否必填|说明|
  717 +|---|---|---|---|---|
  718 +|fun|string|-|是|指令名称|
  719 +|dataTag|string|-|否|数据包标识,可为空字符串|
  720 +|data|object|-|是|传送参数的对象|
  721 +|+value|string||是|设置键盘显示的语言<br>1-简体中文<br>2-英文|
  722 +
  723 +- **示例代码**
  724 +```Json
  725 +{
  726 + "fun":"setBsKpLanguage",
  727 + "dataTag":"1",
  728 + "data":{
  729 + "value":"1"
  730 + }
  731 +}
  732 +```
  733 +#### 事件
  734 +##### fEvtBsKpLanguage
  735 +- **主题**: /basestation/\${baseSN}/receive
  736 +- **功能描述**:返回键盘语言
  737 +- **参数说明**
  738 +
  739 +|参数名|类型|限制|非空|说明|
  740 +|---|---|---|---|---|
  741 +|fun|string|-|是|指令名称|
  742 +|dataTag|string|-|否|数据包标识,可为空字符串|
  743 +|data|object|-|是|传送参数的对象|
  744 +|+value|string||是|设置键盘显示的语言<br>1-简体中文<br>2-英文|
  745 +
  746 +- **示例代码**
  747 +```Json
  748 +{
  749 + "fun":"fEvtBsKpLanguage",
  750 + "dataTag":"1",
  751 + "data":{
  752 + "value":"1"
  753 + }
  754 +}
  755 +```
  756 +### 网络参数设置
  757 +#### 方法
  758 +##### getBsTcpipParams
  759 +- **主题**:/client/\${baseSN}/send
  760 +- **功能描述**:获取基站TCP/IP参数
  761 +- **参数说明**
  762 +
  763 +|参数名|类型|限制|是否必填|说明|
  764 +|---|---|---|---|---|
  765 +|fun|string|-|是|指令名称|
  766 +|dataTag|string|-|否|数据包标识,可为空字符串|
  767 +
  768 +- **示例代码**
  769 +```Json
  770 +{
  771 + "fun":"getBsTcpipParams",
  772 + "dataTag":"1"
  773 +}
  774 +```
  775 +##### setBsTcpipParams
  776 +- **主题**:/client/\${baseSN}/send
  777 +- **功能描述**:设置基站TCP/IP参数
  778 +- **参数说明**
  779 +
  780 +|参数名|类型|限制|是否必填|说明|
  781 +|---|---|---|---|---|
  782 +|fun|string|-|是|指令名称|
  783 +|dataTag|string|-|否|数据包标识,可为空字符串|
  784 +|data|object|-|是|传送参数的对象|
  785 +|+ip|string||否|IP地址|
  786 +|+mask|string||否|子网掩码|
  787 +|+gateway|string||否|网关地址|
  788 +|+ipAllocation|int||否|基站IP获取方式<br>0 - 手动指定<br>1 - DHCP获取|
  789 +
  790 +- **示例代码**
  791 +```Json
  792 +{
  793 + "fun":"setBsTcpipParams",
  794 + "dataTag":"1",
  795 + "data":{
  796 + "ip":"192.168.0.10",
  797 + "mask":"255.255.255.0",
  798 + "gateway":"192.168.0.1",
  799 + "ipAllocation":1
  800 + }
  801 +}
  802 +```
  803 +##### getBsMqttParams
  804 +- **主题**:/client/\${baseSN}/send
  805 +- **功能描述**:获取基站MQTT参数
  806 +- **参数说明**
  807 +
  808 +|参数名|类型|限制|是否必填|说明|
  809 +|---|---|---|---|---|
  810 +|fun|string|-|是|指令名称|
  811 +|dataTag|string|-|否|数据包标识,可为空字符串|
  812 +
  813 +- **示例代码**
  814 +```Json
  815 +{
  816 + "fun":"getBsMqttParams",
  817 + "dataTag":"1"
  818 +}
  819 +```
  820 +##### setBsMqttParams
  821 +- **主题**:/client/\${baseSN}/send
  822 +- **功能描述**:设置基站MQTT参数
  823 +- **参数说明**
  824 +
  825 +|参数名|类型|限制|是否必填|说明|
  826 +|---|---|---|---|---|
  827 +|fun|string|-|是|指令名称|
  828 +|dataTag|string|-|否|数据包标识,可为空字符串|
  829 +|data|object|-|是|传送参数的对象|
  830 +|+server|string||是|服务器IP地址|
  831 +|+port|int||是|端口,默认1883|
  832 +|+userName|string||否|连接服务器的用户名,可不设置|
  833 +|+password|string||否|连接服务器的密码,可不设置|
  834 +|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
  835 +
  836 +- **示例代码**
  837 +```Json
  838 +{
  839 + "fun":"setBsMqttParams",
  840 + "dataTag":"1",
  841 + "data":{
  842 + "server":"192.168.10.10",
  843 + "port":1883,
  844 + "userName":"",
  845 + "password":"",
  846 + "interval":30
  847 + }
  848 +}
  849 +```
  850 +#### 事件
  851 +##### fEvtBsTcpipParams
  852 +- **主题**: /basestation/\${baseSN}/receive
  853 +- **功能描述**:返回基站TCP/IP参数
  854 +- **参数说明**
  855 +
  856 +|参数名|类型|限制|非空|说明|
  857 +|---|---|---|---|---|
  858 +|fun|string|-|是|指令名称|
  859 +|dataTag|string|-|否|数据包标识,可为空字符串|
  860 +|data|object|-|是|传送参数的对象|
  861 +|+mac|string||是|MAC地址|
  862 +|+ip|string||是|IP地址|
  863 +|+mask|string||是|子网掩码|
  864 +|+gateway|string||是|网关地址|
  865 +|+ipAllocation|int||否|基站IP获取方式<br>0 - 手动指定<br>1 - DHCP获取|
  866 +
  867 +- **示例代码**
  868 +```Json
  869 +{
  870 + "fun":"fEvtBsTcpipParams",
  871 + "dataTag":"1",
  872 + "data":{
  873 + "mac":"FF:FF:FF:FF:FF:FF",
  874 + "ip":"192.168.0.10",
  875 + "mask":"255.255.255.0",
  876 + "gateway":"192.168.0.1",
  877 + "ipAllocation":1
  878 + }
  879 +}
  880 +```
  881 +##### fEvtBsMqttParams
  882 +- **主题**: /basestation/\${baseSN}/receive
  883 +- **功能描述**:返回基站MQTT参数
  884 +- **参数说明**
  885 +
  886 +|参数名|类型|限制|非空|说明|
  887 +|---|---|---|---|---|
  888 +|fun|string|-|是|指令名称|
  889 +|dataTag|string|-|否|数据包标识,可为空字符串|
  890 +|data|object|-|是|传送参数的对象|
  891 +|+server|string||是|服务器地址,IP|
  892 +|+port|int||是|端口,默认1883|
  893 +|+userName|string||否|连接服务器的用户名,可不设置|
  894 +|+password|string||否|连接服务器的密码,可不设置|
  895 +|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
  896 +
  897 +- **示例代码**
  898 +```Json
  899 +{
  900 + "fun":"fEvtBsMqttParams",
  901 + "dataTag":"1",
  902 + "data":{
  903 + "server":"192.168.10.10",
  904 + "port":1883,
  905 + "userName":"",
  906 + "password":"",
  907 + "interval":30
  908 + }
  909 +}
  910 +```
  911 +### 基站维护
  912 +#### 方法
  913 +##### getBsLogInfo
  914 +- **主题**:/client/\${baseSN}/send
  915 +- **功能描述**:获取基站日志,用于出现故障需要排查问题时获取基站内部日志记录
  916 +- **参数说明**
  917 +
  918 +|参数名|类型|限制|是否必填|说明|
  919 +|---|---|---|---|---|
  920 +|fun|string|-|是|指令名称|
  921 +|dataTag|string|-|否|数据包标识,可为空字符串|
  922 +
  923 +- **示例代码**
  924 +```Json
  925 +{
  926 + "fun":"getBsLogInfo",
  927 + "dataTag":"1"
  928 +}
  929 +```
  930 +
  931 +#### 事件
  932 +##### [sEvtStateCode](#sevtstatecode)
  933 +返回指令的接收状态
  934 +
  935 +## 键盘管理
  936 +### 交互设置
  937 +#### 方法
  938 +##### rtSetKpUserPrompt
  939 +- **主题**:/client/\${baseSN}/send
  940 +- **功能描述**:实时设置提示反馈信息
  941 +- **参数说明**
  942 +
  943 +|参数名|类型|限制|是否必填|说明|
  944 +|---|---|---|---|---|
  945 +|fun|string|-|是|指令名称|
  946 +|dataTag|string|-|否|数据包标识,可为空字符串|
  947 +|data|array|-|否|传送参数的对象数组|
  948 +|++keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘<br><font color="red">注意:不允许空数组和指定SN数组混合使用<br>包含空数组默认为全部在线键盘,其他指定键盘无效</font>|
  949 +|++info|string||否|设置的反馈信息<br>不同键盘可设置不同反馈信息|
  950 +```json
  951 +//分别提示
  952 +{
  953 + "fun": "rtSetKpUserPrompt",
  954 + "dataTag":"1",
  955 + "data": [
  956 + {
  957 + "keySns": ["1479824643","1479824645"],
  958 + "info": "答对了"
  959 + },
  960 + {
  961 + "keySns": ["1479824644"],
  962 + "info": "答错了"
  963 + }
  964 + ]
  965 +}
  966 +//统一提示
  967 +{
  968 + "fun": "rtSetKpUserPrompt",
  969 + "dataTag":"1",
  970 + "data": [
  971 + {
  972 + "keySns": [],
  973 + "info": "答题结束"
  974 + }
  975 + ]
  976 +}
  977 +```
  978 +#### 事件
  979 +##### [sEvtStateCode](#sevtstatecode)
  980 +发送指令后返回接收状态
  981 +
  982 +##### fEvtSetKpUserPrompt
  983 +- **主题**:/basestation/\${baseSN}/receive
  984 +- **功能描述**:返回实时设置提示语是否成功
  985 +- **参数说明**
  986 +
  987 +|参数名|类型|限制|非空|说明|
  988 +|---|---|---|---|---|
  989 +|fun|string|-|是|指令名称|
  990 +|dataTag|string|-|否|数据包标识,可为空字符串|
  991 +|data|array|-|是|传送参数的对象数组|
  992 +|++keySn|string||是|设置提示语信息的键盘SN|
  993 +|++state|string||是|设置的提示语是否成功<br>0 - 成功<br>1 - 失败|
  994 +```json
  995 +{
  996 + "fun": "fEvtSetKpUserPrompt",
  997 + "dataTag":"1",
  998 + "data": [
  999 + {
  1000 + "keySn": "1479824643",
  1001 + "state": "0"
  1002 + },
  1003 + {
  1004 + "keySn": "1479824645",
  1005 + "state": "0"
  1006 + },
  1007 + {
  1008 + "keySn": "1479824644",
  1009 + "state": "1"
  1010 + }
  1011 + ]
  1012 +}
  1013 +```
  1014 +### 在线状态
  1015 +#### 方法
  1016 +##### startGetKpOnline
  1017 +- **主题**:/client/\${baseSN}/send
  1018 +- **功能描述**:开始获取键盘在线信息,键盘在线返回键盘信息 [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
  1019 +- **参数说明**
  1020 +
  1021 +|参数名|类型|限制|是否必填|说明|
  1022 +|---|---|---|---|---|
  1023 +|fun|string|-|是|指令名称|
  1024 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1025 +```json
  1026 +{
  1027 + "fun": "startGetKpOnline",
  1028 + "dataTag":"1"
  1029 +}
  1030 +```
  1031 +
  1032 +##### stopGetKpOnline
  1033 +- **主题**:/client/\${baseSN}/send
  1034 +- **功能描述**:停止获取键盘在线信息
  1035 +- **参数说明**
  1036 +
  1037 +|参数名|类型|限制|是否必填|说明|
  1038 +|---|---|---|---|---|
  1039 +|fun|string|-|是|指令名称|
  1040 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1041 +```json
  1042 +{
  1043 + "fun": "stopGetKpOnline",
  1044 + "dataTag":"1"
  1045 +}
  1046 +```
  1047 +#### 事件
  1048 +##### [sEvtStateCode](#sevtstatecode)
  1049 +发送指令后返回此事件
  1050 +
  1051 +##### [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
  1052 +键盘在线返回此事件
  1053 +
  1054 +### 维护功能
  1055 +#### 方法
  1056 +##### remoteKpSleep
  1057 +- **主题**:/client/\${baseSN}/send
  1058 +- **功能描述**:遥控键盘休眠
  1059 +- **参数说明**
  1060 +
  1061 +|参数名|类型|限制|是否必填|说明|
  1062 +|---|---|---|---|---|
  1063 +|fun|string|-|是|指令名称|
  1064 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1065 +|data|object|-|是|传送参数的对象数组|
  1066 +|+keySns|array||否|需要执行指令的键盘SN数组,空数组表示所有键盘|
  1067 +
  1068 +- **示例代码**
  1069 +```Json
  1070 +{
  1071 + "fun":"remoteKpSleep",
  1072 + "dataTag":"1",
  1073 + "data":{
  1074 + "keySns":["1479824644"]
  1075 + }
  1076 +}
  1077 +```
  1078 +#### 事件
  1079 +##### [sEvtStateCode](#sevtstatecode)
  1080 +返回指令的接收状态
  1081 +
  1082 +## 绑定
  1083 +### 无线绑定
  1084 +#### 方法
  1085 +##### rtSetKpBindingInfo
  1086 +- **主题**:/client/\${baseSN}/send
  1087 +- **功能描述**:实时设置绑定信息到键盘
  1088 +- **参数说明**
  1089 +
  1090 +|参数名|类型|限制|是否必填|说明|
  1091 +|---|---|---|---|---|
  1092 +|fun|string|-|是|指令名称|
  1093 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1094 +|data|array|-|是|传送参数的对象数组,不可为空|
  1095 +|++keySn|string||是|需要设置绑定信息的键盘SN|
  1096 +|++info|string||是|设置的绑定信息,一般为学生姓名<br>最长48个字符,显示在键盘左上角|
  1097 +```json
  1098 +{
  1099 + "fun": "rtSetKpBindingInfo",
  1100 + "dataTag":"1",
  1101 + "data": [
  1102 + {
  1103 + "keySn": "1479824643",
  1104 + "info": "张三"
  1105 + },
  1106 + {
  1107 + "keySn": "1479824644",
  1108 + "info": "李四"
  1109 + }
  1110 + ]
  1111 +}
  1112 +```
  1113 +
  1114 +##### clearKpBindingInfo
  1115 +- **主题**:/client/\${baseSN}/send
  1116 +- **功能描述**:清除键盘绑定信息
  1117 +- **参数说明**
  1118 +
  1119 +|参数名|类型|限制|是否必填|说明|
  1120 +|---|---|---|---|---|
  1121 +|fun|string|-|是|指令名称|
  1122 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1123 +|data|object|-|是|传送参数的对象数组|
  1124 +|+keySns|array||否|需要清除绑定信息键盘SN数组,<br>空数组表示清空所有键盘|
  1125 +```json
  1126 +{
  1127 + "fun": "clearKpBindingInfo",
  1128 + "dataTag":"1",
  1129 + "data": {
  1130 + "keySns":["1479824643","1479824644","1479824645"]
  1131 + }
  1132 +}
  1133 +```
  1134 +#### 事件
  1135 +##### [sEvtStateCode](#sevtstatecode)
  1136 +发送指令后返回接收状态
  1137 +
  1138 +##### fEvtKpBindingInfo
  1139 +- **主题**:/basestation/\${baseSN}/receive
  1140 +- **功能描述**:返回键盘实时设置绑定信息的状态是否成功
  1141 +- **参数说明**
  1142 +
  1143 +|参数名|类型|限制|非空|说明|
  1144 +|---|---|---|---|---|
  1145 +|fun|string|-|是|指令名称|
  1146 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1147 +|data|array|-|否|传送参数的对象数组|
  1148 +|++keySn|string||是|需要设置绑定信息的键盘SN|
  1149 +|++state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  1150 +```json
  1151 +{
  1152 + "fun": "fEvtKpBindingInfo",
  1153 + "dataTag":"1",
  1154 + "data": [
  1155 + {
  1156 + "keySn": "1479824643",
  1157 + "state": "0"
  1158 + },
  1159 + {
  1160 + "keySn": "1479824644",
  1161 + "state": "1"
  1162 + }
  1163 + ]
  1164 +}
  1165 +```
  1166 +##### fEvtClearKpBindingInfo
  1167 +- **主题**:/basestation/\${baseSN}/receive
  1168 +- **功能描述**:返回清空绑定信息的指令状态是否成功
  1169 +- **参数说明**
  1170 +
  1171 +|参数名|类型|限制|非空|说明|
  1172 +|---|---|---|---|---|
  1173 +|fun|string|-|是|指令名称|
  1174 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1175 +|data|object|-|否|传送参数的对象|
  1176 +|+state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  1177 +```json
  1178 +{
  1179 + "fun": "fEvtClearKpBindingInfo",
  1180 + "dataTag":"1",
  1181 + "data": {
  1182 + "state": "0"
  1183 + }
  1184 +}
  1185 +```
  1186 +## 签到
  1187 +### 随时签到
  1188 +#### 方法
  1189 +##### rtStartKpSignIn
  1190 +- **主题**:/client/\${baseSN}/send
  1191 +- **功能描述**:启动随时签到绑定
  1192 +- **参数说明**
  1193 +
  1194 +|参数名|类型|限制|是否必填|说明|
  1195 +|---|---|---|---|---|
  1196 +|fun|string|-|是|指令名称|
  1197 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1198 +|data|object|-|是|传递参数的对象|
  1199 +|+mode|int|-|是|签到模式<br>2-PIN码签到,输入pin码后由应用程序决定是否授权|
  1200 +```json
  1201 +{
  1202 + "fun": "rtStartKpSignIn",
  1203 + "dataTag":"1",
  1204 + "data":{
  1205 + "mode":2
  1206 + }
  1207 +}
  1208 +```
  1209 +##### rtStopKpSignIn
  1210 +- **主题**:/client/\${baseSN}/send
  1211 +- **功能描述**:停止签到绑定
  1212 +- **参数说明**
  1213 +
  1214 +|参数名|类型|限制|是否必填|说明|
  1215 +|---|---|---|---|---|
  1216 +|fun|string|-|是|指令名称|
  1217 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1218 +```json
  1219 +{
  1220 + "fun": "rtStopKpSignIn",
  1221 + "dataTag":"1"
  1222 +}
  1223 +```
  1224 +##### rtSetKpLoginAllowed
  1225 +- **主题**:/client/\${baseSN}/send
  1226 +- **功能描述**:实时PIN绑定授权,可取消授权
  1227 +- **参数说明**
  1228 +
  1229 +|参数名|类型|限制|是否必填|说明|
  1230 +|---|---|---|---|---|
  1231 +|fun|string|-|是|指令名称|
  1232 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1233 +|data|object|-|是|传递参数的对象|
  1234 +|+keySn|string|-|是|键盘SN|
  1235 +|+state|int|-|是|1-授权成功<br>2-授权失败<br>3-解除已授权|
  1236 +```json
  1237 +{
  1238 + "fun": "rtSetKpLoginAllowed",
  1239 + "dataTag":"1",
  1240 + "data":{
  1241 + "keySn":"1479824643",
  1242 + "state":1
  1243 + }
  1244 +}
  1245 +```
  1246 +#### 事件
  1247 +##### [sEvtStateCode](#sevtstatecode)
  1248 +发送指令后返回接收状态
  1249 +
  1250 +##### fEvtKpSignIn
  1251 +- **主题**:/basestation/\${baseSN}/receive
  1252 +- **功能描述**:返回键盘提交签到信息
  1253 +- **参数说明**
  1254 +
  1255 +|参数名|类型|限制|非空|说明|
  1256 +|---|---|---|---|---|
  1257 +|fun|string|-|是|指令名称|
  1258 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1259 +|data|array|-|是|传送参数的对象数组|
  1260 +|++keySn|string||是|键盘SN|
  1261 +|++keyValue|string||是|键盘提交的按键值|
  1262 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1263 +```json
  1264 +{
  1265 + "fun": "fEvtKpSignIn",
  1266 + "dataTag":"1",
  1267 + "data": [{
  1268 + "keySn": "1234567890",
  1269 + "keyValue":"1004",
  1270 + "keyTime":30.2
  1271 + },
  1272 + {
  1273 + "keySn": "1234567891",
  1274 + "keyValue":"1003",
  1275 + "keyTime":32.5
  1276 + }
  1277 + ]
  1278 +}
  1279 +```
  1280 +##### fEvtKpLoginAllowed
  1281 +- **主题**:/basestation/\${baseSN}/receive
  1282 +- **功能描述**:返回键盘授权状态
  1283 +- **参数说明**
  1284 +
  1285 +|参数名|类型|限制|非空|说明|
  1286 +|---|---|---|---|---|
  1287 +|fun|string|-|是|指令名称|
  1288 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1289 +|data|object|-|是|传送参数的对象|
  1290 +|+keySn|string||是|键盘SN|
  1291 +|+state|string||是|0-执行成功<br> 1-执行失败|
  1292 +```json
  1293 +{
  1294 + "fun": "fEvtKpLoginAllowed",
  1295 + "dataTag":"1",
  1296 + "data": {
  1297 + "keySn":"1479824643",
  1298 + "state":1
  1299 + }
  1300 +}
  1301 +```
  1302 +## 按键反馈
  1303 +### 判断题
  1304 +#### 方法
  1305 +##### startQATrueFalse
  1306 +- **主题**:/client/\${baseSN}/send
  1307 +- **功能描述**:启动判断题答题
  1308 +- **参数说明**
  1309 +
  1310 +|参数名|类型|限制|是否必填|说明|
  1311 +|---|---|---|---|---|
  1312 +|fun|string|-|是|指令名称|
  1313 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1314 +|data|object|-|是|传送参数的对象|
  1315 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  1316 +|+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×|
  1317 +|+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改|
  1318 +|+tip|string||否|提示的标题,长度不超过16字符|
  1319 +```json
  1320 +{
  1321 + "fun": "startQATrueFalse",
  1322 + "dataTag":"1",
  1323 + "data":{
  1324 + "keySns":[],
  1325 + "mode":1,
  1326 + "allowModify":1,
  1327 + "tip":"请判断对错"
  1328 + }
  1329 +}
  1330 +```
  1331 +##### stopQATrueFalse
  1332 +- **主题**:/client/\${baseSN}/send
  1333 +- **功能描述**:停止判断题答题
  1334 +- **参数说明**
  1335 +
  1336 +|参数名|类型|限制|是否必填|说明|
  1337 +|---|---|---|---|---|
  1338 +|fun|string|-|是|指令名称|
  1339 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1340 +```json
  1341 +{
  1342 + "fun": "stopQATrueFalse",
  1343 + "dataTag":"1"
  1344 +}
  1345 +```
  1346 +#### 事件
  1347 +##### [sEvtStateCode](#sevtstatecode)
  1348 +发送指令后返回接收状态
  1349 +
  1350 +##### fEvtQATrueFalse
  1351 +- **主题**:/basestation/\${baseSN}/receive
  1352 +- **功能描述**:返回键盘提交答题信息
  1353 +- **参数说明**
  1354 +
  1355 +|参数名|类型|限制|非空|说明|
  1356 +|---|---|---|---|---|
  1357 +|fun|string|-|是|指令名称|
  1358 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1359 +|data|array|-|是|传送参数的对象数组|
  1360 +|++keySn|string||是|键盘SN|
  1361 +|++keyValue|string||是|键盘提交的按键值<br>1-对<br>2-错|
  1362 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1363 +```json
  1364 +{
  1365 + "fun": "fEvtQATrueFalse",
  1366 + "dataTag":"1",
  1367 + "data": [{
  1368 + "keySn": "1234567890",
  1369 + "keyValue":"1",
  1370 + "keyTime":30.2
  1371 + }
  1372 + ]
  1373 +}
  1374 +```
  1375 +### 选择题
  1376 +#### 方法
  1377 +##### startQAChoice
  1378 +- **主题**:/client/\${baseSN}/send
  1379 +- **功能描述**:启动选择题答题
  1380 +- **参数说明**
  1381 +
  1382 +|参数名|类型|限制|是否必填|说明|
  1383 +|---|---|---|---|---|
  1384 +|fun|string|-|是|指令名称|
  1385 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1386 +|data|object|-|是|传送参数的对象|
  1387 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  1388 +|+mode|int||是|显示模式<br>1:显示字母(默认值) </br>2:显示数字 |
  1389 +|+lessMode|int||是|迫选模式<br>0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 |
  1390 +|+options|int||是|选项数量,1≤M≤10(默认值4)|
  1391 +|+optionalN|int||是|可选项个数,1≤N≤M(默认值1)|
  1392 +|+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
  1393 +|+tip|string||否|提示的标题,长度不超过16字符|
  1394 +```json
  1395 +{
  1396 + "fun": "startQAChoice",
  1397 + "dataTag":"1",
  1398 + "data":{
  1399 + "keySns":[],
  1400 + "mode": 1,
  1401 + "lessMode": 0,
  1402 + "options": 4,
  1403 + "optionalN": 1,
  1404 + "allowModify":1,
  1405 + "tip":"请选择"
  1406 + }
  1407 +}
  1408 +```
  1409 +##### stopQAChoice
  1410 +- **主题**:/client/\${baseSN}/send
  1411 +- **功能描述**:停止选择题答题
  1412 +- **参数说明**
  1413 +
  1414 +|参数名|类型|限制|是否必填|说明|
  1415 +|---|---|---|---|---|
  1416 +|fun|string|-|是|指令名称|
  1417 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1418 +```json
  1419 +{
  1420 + "fun": "stopQAChoice",
  1421 + "dataTag":"1"
  1422 +}
  1423 +```
  1424 +#### 事件
  1425 +##### [sEvtStateCode](#sevtstatecode)
  1426 +发送指令后返回接收状态
  1427 +
  1428 +##### fEvtQAChoice
  1429 +- **主题**:/basestation/\${baseSN}/receive
  1430 +- **功能描述**:返回键盘提交答题信息
  1431 +- **参数说明**
  1432 +
  1433 +|参数名|类型|限制|非空|说明|
  1434 +|---|---|---|---|---|
  1435 +|fun|string|-|是|指令名称|
  1436 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1437 +|data|array|-|是|传送参数的对象数组|
  1438 +|++keySn|string||是|键盘SN|
  1439 +|++keyValue|string||是|键盘提交的按键值|
  1440 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1441 +```json
  1442 +{
  1443 + "fun": "fEvtQAChoice",
  1444 + "dataTag":"1",
  1445 + "data": [{
  1446 + "keySn": "1234567890",
  1447 + "keyValue":"A",
  1448 + "keyTime":3.2
  1449 + }]
  1450 +}
  1451 +```
  1452 +### 数字题
  1453 +#### 方法
  1454 +##### startQANum
  1455 +- **主题**:/client/\${baseSN}/send
  1456 +- **功能描述**:启动数字题答题
  1457 +- **参数说明**
  1458 +
  1459 +|参数名|类型|限制|是否必填|说明|
  1460 +|---|---|---|---|---|
  1461 +|fun|string|-|是|指令名称|
  1462 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1463 +|data|object|-|是|传送参数的对象|
  1464 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  1465 +|+mode|int||是|模式<br>0:无规则 (S6最多16位,T2最多14位)<br>1:带小数位上下限(T2不支持)|
  1466 +|+digits|int||是|小数位数,范围0-2,mode=1时有效
  1467 +|+numMin|int||是|可输入下限,mode=1有效<br> digits=0时 范围:0~65535 <br> digits=1时 范围:0~6553 <br> digits=2时 范围:0~655|
  1468 +|+numMax|int||是|可输入上限,mode=1有效<br>digits=0 范围:0~65535 <br> digits=1 范围:0~6553 <br> digits=2 范围:0~655|
  1469 +|+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
  1470 +|+tip|string||否|提示的标题,长度不超过16字符|
  1471 +```json
  1472 +{
  1473 + "fun": "startQANum",
  1474 + "dataTag":"1",
  1475 + "data":{
  1476 + "keySns":[],
  1477 + "mode": 1,
  1478 + "digits": 1,
  1479 + "numMin": 0,
  1480 + "numMax": 100,
  1481 + "allowModify":1,
  1482 + "tip":"请输入数字"
  1483 + }
  1484 +}
  1485 +```
  1486 +##### stopQANum
  1487 +- **主题**:/client/\${baseSN}/send
  1488 +- **功能描述**:停止数字题答题
  1489 +- **参数说明**
  1490 +
  1491 +|参数名|类型|限制|是否必填|说明|
  1492 +|---|---|---|---|---|
  1493 +|fun|string|-|是|指令名称|
  1494 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1495 +```json
  1496 +{
  1497 + "fun": "stopQANum",
  1498 + "dataTag":"1"
  1499 +}
  1500 +```
  1501 +#### 事件
  1502 +##### [sEvtStateCode](#sevtstatecode)
  1503 +发送指令后返回接收状态
  1504 +
  1505 +##### fEvtQANum
  1506 +- **主题**:/basestation/\${baseSN}/receive
  1507 +- **功能描述**:返回键盘提交答题信息
  1508 +- **参数说明**
  1509 +
  1510 +|参数名|类型|限制|非空|说明|
  1511 +|---|---|---|---|---|
  1512 +|fun|string|-|是|指令名称|
  1513 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1514 +|data|array|-|是|传送参数的对象数组|
  1515 +|++keySn|string||是|键盘SN|
  1516 +|++keyValue|string||是|键盘提交的按键值|
  1517 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1518 +```json
  1519 +{
  1520 + "fun": "fEvtQANum",
  1521 + "dataTag":"1",
  1522 + "data": {
  1523 + "keySn": "1234567890",
  1524 + "keyValue":"10",
  1525 + "keyTime":3.2
  1526 + }
  1527 +}
  1528 +```
  1529 +### 抢答题
  1530 +#### 方法
  1531 +##### startQAQuicker
  1532 +- **主题**:/client/\${baseSN}/send
  1533 +- **功能描述**:启动抢答题答题
  1534 +- **参数说明**
  1535 +
  1536 +|参数名|类型|限制|是否必填|说明|
  1537 +|---|---|---|---|---|
  1538 +|fun|string|-|是|指令名称|
  1539 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1540 +|data|object|-|是|传送参数的对象|
  1541 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  1542 +|+mode|int||是|模式<br>0:普通抢答|
  1543 +|+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
  1544 +|+tip|string||否|提示的标题,长度不超过16字符|
  1545 +```json
  1546 +{
  1547 + "fun": "startQAQuicker",
  1548 + "dataTag":"1",
  1549 + "data":{
  1550 + "keySns":[],
  1551 + "mode": 0,
  1552 + "allowModify":1,
  1553 + "tip":"请按键抢答"
  1554 + }
  1555 +}
  1556 +```
  1557 +##### stopQAQuicker
  1558 +- **主题**:/client/\${baseSN}/send
  1559 +- **功能描述**:停止抢答答题
  1560 +- **参数说明**
  1561 +
  1562 +|参数名|类型|限制|是否必填|说明|
  1563 +|---|---|---|---|---|
  1564 +|fun|string|-|是|指令名称|
  1565 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1566 +```json
  1567 +{
  1568 + "fun": "stopQAQuicker",
  1569 + "dataTag":"1"
  1570 +}
  1571 +```
  1572 +#### 事件
  1573 +##### [sEvtStateCode](#sevtstatecode)
  1574 +发送指令后返回接收状态
  1575 +
  1576 +##### fEvtQAQuicker
  1577 +- **主题**:/basestation/\${baseSN}/receive
  1578 +- **功能描述**:返回键盘提交答题信息
  1579 +- **参数说明**
  1580 +
  1581 +|参数名|类型|限制|非空|说明|
  1582 +|---|---|---|---|---|
  1583 +|fun|string|-|是|指令名称|
  1584 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1585 +|data|array|-|是|传送参数的对象数组|
  1586 +|++keySn|string||是|键盘SN|
  1587 +|++keyValue|string||是|键盘提交的按键值|
  1588 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1589 +```json
  1590 +{
  1591 + "fun": "fEvtQAQuicker",
  1592 + "dataTag":"1",
  1593 + "data": [{
  1594 + "keySn": "1234567890",
  1595 + "keyValue":"1",
  1596 + "keyTime":3.2
  1597 + }]
  1598 +}
  1599 +```
  1600 +## 在线测验
  1601 +### 标准测验
  1602 +#### 方法
  1603 +##### startKpExam
  1604 +- **主题**:/client/\${baseSN}/send
  1605 +- **功能描述**:启动标准测验
  1606 +- **参数说明**
  1607 +
  1608 +|参数名|类型|限制|是否必填|说明|
  1609 +|---|---|---|---|---|
  1610 +|fun|string|-|是|指令名称|
  1611 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1612 +|data|object|-|是|传送参数的对象|
  1613 +|+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
  1614 +|+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
  1615 +|+questions|array||是|题目详情|
  1616 +|++symbol | string||是 | 题号前缀,可为空 |
  1617 +|++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  1618 +|++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  1619 +|++startNo | int||是| 起始题号 |
  1620 +|++count | int||是| 题目数量 |
  1621 +```json
  1622 +//自定义题号
  1623 +{
  1624 + "fun": "startKpExam",
  1625 + "dataTag":"1",
  1626 + "data":{
  1627 + "mode": 0,
  1628 + "examNo": 1,
  1629 + "questions": [{
  1630 + //题号1-1-1 到1-1-10 共10题单选
  1631 + "symbol": "1-1-",
  1632 + "quesType": 1,
  1633 + "startNo": 1,
  1634 + "count":10
  1635 + }, {
  1636 + //题号2-2和2-3共两题 多选题,5个选项
  1637 + "symbol": "2-",
  1638 + "quesType": 2,
  1639 + "option": 5,
  1640 + "startNo": 2,
  1641 + "count":2
  1642 + }, {
  1643 + //题号3-1和3-2共两道数字题
  1644 + "symbol": "3-",
  1645 + "quesType": 3,
  1646 + "startNo": 1,
  1647 + "count":2
  1648 + }, {
  1649 + //题号4和5 ,判断题
  1650 + "symbol": "",
  1651 + "quesType": 4,
  1652 + "startNo": 4,
  1653 + "count":2
  1654 + }]
  1655 + }
  1656 +}
  1657 +
  1658 +//显示Q开头
  1659 +{
  1660 + "fun": "startKpExam",
  1661 + "dataTag":"1",
  1662 + "data":{
  1663 + "mode": 1,
  1664 + "examNo": 1,
  1665 + "questions": [{
  1666 + //Q1-Q20,单选题
  1667 + "symbol": "",
  1668 + "quesType": 1,
  1669 + "startNo": 1,
  1670 + "count":20
  1671 + }]
  1672 + }
  1673 +}
  1674 +
  1675 +//显示题开头
  1676 +{
  1677 + "fun": "startKpExam",
  1678 + "dataTag":"1",
  1679 + "data":{
  1680 + "mode": 2,
  1681 + "examNo": 1,
  1682 + "questions": [{
  1683 + //题1-题20,单选题
  1684 + "symbol": "",
  1685 + "quesType": 1,
  1686 + "startNo": 1,
  1687 + "count":20
  1688 + }]
  1689 + }
  1690 +}
  1691 +```
  1692 +##### stopKpExam
  1693 +- **主题**:/client/\${baseSN}/send
  1694 +- **功能描述**:停止标准测验
  1695 +- **参数说明**
  1696 +
  1697 +|参数名|类型|限制|是否必填|说明|
  1698 +|---|---|---|---|---|
  1699 +|fun|string|-|是|指令名称|
  1700 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1701 +```json
  1702 +{
  1703 + "fun": "stopKpExam",
  1704 + "dataTag":"1"
  1705 +}
  1706 +```
  1707 +##### rtKpAllowEdited
  1708 +- **主题**:/client/\${baseSN}/send
  1709 +- **功能描述**:键盘键盘后,允许键盘修改答案
  1710 +- **参数说明**
  1711 +
  1712 +|参数名|类型|限制|是否必填|说明|
  1713 +|---|---|---|---|---|
  1714 +|fun|string|-|是|指令名称|
  1715 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1716 +|data|object|-|是|传送参数的对象|
  1717 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  1718 +```json
  1719 +{
  1720 + "fun": "rtKpAllowEdited",
  1721 + "dataTag":"1",
  1722 + "data":{
  1723 + "keySns":["1234567890","1234567891"]
  1724 + }
  1725 +}
  1726 +```
  1727 +#### 事件
  1728 +##### [sEvtStateCode](#sevtstatecode)
  1729 +发送指令后返回接收状态
  1730 +
  1731 +##### fEvtKpExam
  1732 +- **主题**:/basestation/\${baseSN}/receive
  1733 +- **功能描述**:返回键盘提交答题信息
  1734 +- **参数说明**
  1735 +
  1736 +|参数名|类型|限制|非空|说明|
  1737 +|---|---|---|---|---|
  1738 +|fun|string|-|是|指令名称|
  1739 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1740 +|data|array|-|是|传送参数的对象数组|
  1741 +|++keySn|string||是|键盘SN|
  1742 +|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B|
  1743 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1744 +```json
  1745 +{
  1746 + "fun": "fEvtKpExam",
  1747 + "dataTag":"1",
  1748 + "data": [{
  1749 + "keySn": "1234567890",
  1750 + "keyValue":"1:A;2:B",
  1751 + "keyTime":3.2
  1752 + },
  1753 + {
  1754 + "keySn": "1234567891",
  1755 + "keyValue":"1:B;2:B",
  1756 + "keyTime":3.5
  1757 + }
  1758 + ]
  1759 +}
  1760 +```
  1761 +##### fEvtFinalSubmit
  1762 +- **主题**:/basestation/\${baseSN}/receive
  1763 +- **功能描述**:返回键盘手动交卷标识
  1764 +- **参数说明**
  1765 +
  1766 +|参数名|类型|限制|非空|说明|
  1767 +|---|---|---|---|---|
  1768 +|fun|string|-|是|指令名称|
  1769 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1770 +|data|object|-|是|传送参数的对象数组|
  1771 +|++keySn|string||是|键盘SN|
  1772 +|++keyValue|string||是|0 - 未提交(修改键盘运行提交时上报)<br>1 - 已交卷|
  1773 +|++keyTime|double||是|提交时间,从启动开始计算,单位秒|
  1774 +```json
  1775 +{
  1776 + "fun": "fEvtFinalSubmit",
  1777 + "dataTag":"1",
  1778 + "data": [{
  1779 + "keySn": "1234567890",
  1780 + "keyValue":"1",
  1781 + "keyTime":3.2
  1782 + }]
  1783 +}
  1784 +```
0 1785 \ No newline at end of file
... ...