Commit db43e2f218d46fc65c33f8894fd7deffe6452fa8

Authored by DMchen
2 parents 62aae3c4 a7145c62

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

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