diff --git a/通讯协议-B200W-MQTT协议[内部].md b/通讯协议-B200W-MQTT协议[内部].md
new file mode 100644
index 0000000..43e65b2
--- /dev/null
+++ b/通讯协议-B200W-MQTT协议[内部].md
@@ -0,0 +1,2531 @@
+
+# SunVote B200W_MQTT 接口协议
+
+[TOC]
+
+# 功能说明
+
+## 主题说明
+\${baseSN}为指定的基站的SN编码,不能为空,接收基站反馈数据需要订阅对应基站SN的接收主题。
+### 发布的主题
+应用程序发布的主题,基站订阅
+/client/\${baseSN}/send
+/client/multiBase/send
+
+内部应用发布的主题,基站订阅
+/manage/\${baseSN}/send
+
+### 订阅的主题
+应用程序订阅的主题,基站发布
+/basestation/\\${baseSN}/recive
+/basestation/multiBase/recive
+
+内部应用订阅的主题,基站发布
+/manage/\${baseSN}/recive
+
+## 指令说明
+|指令功能标识 |说明 |约束|
+|---|---|---|
+|get| 待机状态下获取参数属性状态及数据 |待机状态|
+|set| 待机状态下设置参数属性状态及数据 |待机状态|
+|start| 运行一个单进程业务实例(函数) |待机状态|
+|stop| 停止一个单进程业务实例(函数) |待机状态|
+|rtXXX| 在线状态下可实时执行方法及函数 ||
+
+## 事件说明
+|事件标识| 说明| 约束|
+|---|---|---|
+|sEvtXXX|系统事件 |自动返回|
+|fEvtXXX|指令事件 |调用对应指令后返回|
+
+## 功能速查一览表
+### 基站管理
+|功能归类|功能|API指令|指令/系统事件|
+|---|---|---|---|
+|基站连接 - 获取在线基站|主动获取在线基站信息
不确定基站SN时|[getBsOnlineState](#getbsonlinestate)|[fEvtBsOnlineState](#fevtbsonlinestate)||
+|基站连接 - 主动获取状态|主动获取基站连接状态|[getBsConnectState](#getbsconnectstate)|[sEvtBsConnectState](#sevtbsconnectstate)||
+|基站连接 - 自动获取状态|基站连接变化系统通知|-|[sEvtBsConnectState](#sevtbsconnectstate)||
+|键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)||
+|识别设置 - 出厂编码|设置基站出厂编码(内)|[setBsSN](#setbssn)|[fEvtBsSN](#fevtbssn)|
+|识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)|
+|识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)|
+|识别设置 - 品牌识别码|获取基站品牌识别码|[getBsBIC](#getbsbic)|[fEvtBsBIC](#fevtbsbic)|
+||设置基站品牌识别码(内)|[setBsBIC](#setbsbic)|[fEvtBsBIC](#fevtbsbic)|
+|组网设置 - 组网模式|获取基站组网模式|[getBsNetworkMode](#getbsnetworkmode)|[fEvtBsNetworkMode](#fevtbsnetworkmode)|
+||设置基站组网模式
(前期不开放,后期需要)|[setBsNetworkMode](#setbsnetworkmode)|[fEvtBsNetworkMode](#fevtbsnetworkmode)|
+|组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
+||设置基站配对码(内)|[setBsPairCode](#setbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
+|组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|
+||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
+|组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)|
+||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
+|登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)|
+||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
+|键盘统一设置 - 键盘语言|获取键盘语言|[getBsKpLanguage](#getbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|
+||设置键盘语言|[setBsKpLanguage](#setbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)||
+|键盘统一设置 - 状态语模式|获取状态语设置状态|[getBsKpStbMsgMode](#getbskpstbmsgmode)|[fEvtBsKpStbMsgMode](#fevtbskpstbmsgmode)|
+||设置状态语工作状态|[setBsKpStbMsgMode](#setbskpstbmsgmode)|[fEvtBsKpStbMsgMode](#fevtbskpstbmsgmode)|||
+|TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
+||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
+|MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
+||设置MQTT参数|[setBsMqttParams](#setbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)||
+|基站升级|开启基站升级(内)|[startBsUpdate](#startbsupdate)|[fEvtStartBsUpate](#fevtstartbsupate)
[fEvtBsUpdateProgress](#fevtbsupdateprogress)|
+### 键盘管理
+|功能归类|功能|API指令|指令事件|
+|---|---|---|---|
+|识别设置 - 识别模式(内)|获取键盘识别模式(内)|[getKpIdentityMode](#getkpidentitymode)|[fEvtKpIdentityMode](#fevtkpidentitymode)|
+||设置键盘识别模式(内)|[setKpIdentityMode](#setkpidentitymode)|[fEvtKpIdentityMode](#fevtkpidentitymode)|
+|交互设置 - 用户内置状态语|设置用户内置状态语|[setKpUserStbMsg](#setkpuserstbmsg)|[fEvtKpUserStbMsg]()|
+|交互设置 - 用户实时提示信息|实时设置提示反馈信息|[rtSetKpUserPrompt](#rtsetkpuserprompt)|[fEvtSetKpUserPrompt]()|
+|维护功能 - 遥控功能|遥控键盘关机|[remoteKpPowerOff](#remotekppoweroff)|[fEvtRemoteKpPowerOff](#fevtremotekppoweroff)|
+||遥控键盘休眠|[remoteKpSleep](#remotekpsleep)|[fEvtRemoteKpSleep](#fevtremotekpsleep)|
+|维护功能 - 遥控功能|启动键盘无线升级(内)|[startKpFWUpdate](#startkpfwupdate)|[fEvtStartKpFWUpdate](#fevtstartkpfwupdate)
[fEvtKpUpdateProgress](#fevtkpupdateprogress)
[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
+### 绑定
+|功能归类|功能|API指令|指令事件|
+|---|---|---|---|
+|无线绑定|设置绑定信息到键盘|[rtSetKpBindingInfo](#rtsetkpbindinginfo)|[fEvtSetKpBindingInfo](#fevtsetkpbindinginfo)|
+||清除键盘绑定信息|[clearKpBindingInfo](#clearkpbindinginfo)|[fEvtClearKpBindingInfo](#fevtclearkpbindinginfo)|
+### 签到
+|功能归类|功能|API指令|指令事件|
+|---|---|---|---|
+|随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[fEvtStartKpSignIn](#fevtstartkpsignin)
[fEvtKpSignIn](#fevtkpsignin)|
+||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[fEvtStopKpSignIn](#fevtstopkpsignin)|
+||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[fEvtSetKpLoginAllowed](#fevtsetkploginallowed)|
+### 按键反馈
+|功能归类|功能|API指令|指令事件|
+|---|---|---|---|
+|判断题|启动判断题答题|[startQATrueFalse](#startQAtruefalse)|[fEvtStartQATrueFalse](#fevtstartQAtruefalse)
[fEvtQATrueFalse](#fevtQAtruefalse)|
+||停止判断题答题|[stopQATrueFalse](#stopQAtruefalse)|[fEvtStopQATrueFalse](#fevtstopQAtruefalse)|
+|选择题|启动选择题答题|[startQAChoice](#startQAchoice)|[fEvtStartQAChoice](#fevtstartQAchoice)
[fEvtQAChoice](#fevtQAchoice)|
+||停止选择题答题|[stopQAChoice](#stopQAchoice)|[fEvtStopQAChoice](#fevtstopQAchoice)|
+|数字题|启动数字题答题|[startQANum](#startQAnum)|[fEvtStartQANum](#fevtstartQAnum)
[fEvtQANum](#fevtQAnum)|
+||停止数字题答题|[stopQANum](#stopQAnum)|[fEvtStopQANum](#fevtstopQAnum)|
+|抢答题|启动抢答题答题|[startQAQuicker](#startQAquicker)|[fEvtStartQAQuicker](#fevtstartQAquicker)
[fEvtQAQuicker](#fevtQAquicker)|
+||停止抢答题答题|[stopQAQuicker](#stopQAquicker)|[fEvtStopQAQuicker](#fevtstopQAquicker)|
+### 在线测验
+|功能归类|功能|API指令|指令事件|
+|---|---|---|---|
+|标准测验|启动标准测验|[startKpExam](#startkpexam)|[fEvtStartKpExam](#fevtstartkpexam)
[fEvtKpExam](#fevtkpexam)
[fEvtFinalSubmit](#fevtfinalsubmit)|
+||停止标准测验|[stopKpExam](#stopkpexam)|[fEvtStopKpExam](#fevtstopkpexam)|
+||刷新作答数据|[rtGetKpExamData](#rtgetkpexamdata)|[fEvtKpExam](#fevtkpexam)|
+||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[fEvtAllowEdited](#fevtallowedited)|
+
+## 公共事件
+### sEvtBsConnectState
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:基站连接成功时返回基站型号和基站SN,基站从已连接状态断开返回连接断开
+备注:Last Will and Testament (LWT)。这是MQTT协议提供的一项特性,允许客户端在异常断开连接时向其他订阅了特定主题的客户端发布一条消息。这通常用于通知系统中的其他设备或服务,该客户端已离线或处于不可达状态。当客户端与MQTT服务器(broker)的连接意外中断(如网络问题或客户端崩溃),服务器将自动发布这条预设的消息至指定主题。
+基站需处理LWT
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|-----|-----|-----|-----|-----|
+|fun|string|-|是|事件类型|
+|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+baseModel|int||否|基站的型号码|
+|+state|int||是|基站的连接状态
1-已连接
2-连接断开|
+|+version|string||否|基站固件版本|
+
+- **示例代码**
+```Json
+//连接成功
+{
+ "fun":"sEvtBsConnectState",
+ "dataTag":"1",
+ "data":{
+ "state":1,
+ "baseModel":218,
+ "version":"1.0.3"
+ }
+}
+//连接断开
+{
+ "fun":"sEvtBsConnectState",
+ "dataTag":"1",
+ "data":{
+ "state":2
+ }
+}
+```
+### sEvtBsChannelConflict
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:基站信道冲突时主动上报,应用程序可根据实际业务修改基站信道
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|int||是|有冲突的信道|
+
+- **示例代码**
+```Json
+{
+ "fun":"sEvtBsChannelConflict",
+ "dataTag":"1",
+ "data":{
+ "value":5 //信道5有多个基站使用
+ }
+}
+```
+### sEvtBsNfcResults
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:键盘刷卡时主动上报,如果超出基站容量会上报失败
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySN|string||是|刷卡的键盘SN|
+|+value|int||是|刷卡的状态
1-成功
2-失败|
+
+- **示例代码**
+```Json
+{
+ "fun":"sEvtBsNfcResults",
+ "dataTag":"1", //不需要时可传空字符串
+ "data":{
+ "keySN":"1234567890",
+ "value":1
+ }
+}
+```
+
+### sEvtBsKpOnlineMsg
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:键盘上线通知,主动上报,键盘升级成功后也会上报
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识|
+|data|object|-|是|传送参数的对象|
+|+keySN|string||是|键盘SN|
+|+version|string||是|键盘固件版本|
+|+model|int||是|键盘型号|
+|+voltage|double||是|键盘电压|
+
+- **示例代码**
+```Json
+{
+ "fun":"sEvtBsKpOnlineMsg",
+ "dataTag":"1",
+ "data":{
+ "keySN":"1234567890",
+ "version":"1.0.0",
+ "model":67,
+ "voltage":2.8
+ }
+}
+```
+### sEvtErrorCode
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回错误信息,调用方法后如果出错则返回此事件
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识|
+|data|object|-|是|传送参数的对象|
+|+funName|string||是|出错的指令名称|
+|+code|string||是|错误码,含义见下表|
+
+|错误码|说明|
+|---|---|
+|10001|不能正确解析的JSON数据|
+|10002|解析JSON错误|
+|20001|基站未连接|
+|20002|功能不支持|
+|20003|基站SN格式不正确|
+|20004|参数错误|
+|20005|基站在答题中|
+|30001|找不到对应的SN|
+|30002|找不到对应的BaseID|
+|30003|基站SN不是对应的BaseID|
+|40001|升级功能只能支持一个基站|
+|50001|此功能必须指定基站|
+|60001|此功能必须指定键盘SN|
+
+- **示例代码**
+```Json
+{
+ "fun":"sEvtErrorCode",
+ "dataTag":"1",
+ "data":{
+ "funName":"startKpRollCall",
+ "code":"20005"
+ }
+}
+```
+
+## 基站管理
+### 基站连接
+#### 方法
+##### getBsOnlineState
+- **主题**:/client/multiBase/send
+- **功能描述**:主动获取所有在线基站信息,在线基站回复
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|固定指令名称|
+|dataTag|string|-|否|数据包标识|
+- **示例代码**
+```Json
+{
+ "fun":"getBsOnlineState",
+ "dataTag":"1"
+}
+```
+
+##### getBsConnectState
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:主动获取基站连接状态
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|固定指令名称|
+|dataTag|string|-|否|数据包标识|
+- **示例代码**
+```Json
+{
+ "fun":"getBsConnectState",
+ "dataTag":"1"
+}
+```
+#### 事件
+##### [sEvtBsConnectState](#sevtbsconnectstate)
+参见基站连接变化系统通知
+
+##### fevtBsOnlineState
+- **主题**: /basestation/mutilBase/recive
+- **功能描述**:基站在线返回基站型号和基站SN
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|-----|-----|-----|-----|-----|
+|fun|string|-|是|事件类型|
+|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+baseModel|int||否|基站的型号码|
+|+version|string||否|基站固件版本|
+|+baseSN|string||否|基站SN|
+
+- **示例代码**
+```Json
+//连接成功
+{
+ "fun":"fevtBsOnlineState",
+ "dataTag":"1",
+ "data":{
+ "baseModel":218,
+ "version":"1.0.3",
+ "baseSN":"2024041401"
+ }
+}
+```
+
+### 识别设置
+#### 方法
+##### setBsSN
+- **主题**:/manage/\${baseSN}/send
+- **功能描述**:设置基站的SN,需订阅新SN的主题,以获取事件返回
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识|
+|data|object|-|是|传送参数的对象|
+|+value|string|数字|是|设置的基站SN,长度为10位数字|
+|+time|string|数字|是|时间,yyyyMMddHHmmss|
+|+crc|string||是|内部主题校验码,时间+固定key加密|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsSN",
+ "dataTag":"1",
+ "data":{
+ "value":"2024041201"
+ }
+}
+```
+##### getBsModel
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站型号
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsModel",
+ "dataTag":"1"
+}
+```
+##### getBsFWVersion
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站固件版本
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsFWVersion",
+ "dataTag":"1"
+}
+```
+##### getBsBIC
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站品牌识别码
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsBIC",
+ "dataTag":"1"
+}
+```
+##### setBsBIC
+- **主题**:/manage/\${baseSN}/send
+- **功能描述**:设置基站品牌识别码
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|设置的基站品牌码|
+|+time|string|数字|是|时间,yyyyMMddHHmmss|
+|+crc|string||是|内部主题校验码,时间+固定key加密|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsBIC",
+ "dataTag":"1",
+ "data":{
+ "value":"sunvote"
+ }
+}
+```
+#### 事件
+##### fEvtBsSN
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站的出厂编码
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识|
+|data|object|-|是|传送参数的对象|
+|+value|string|-|是|基站的出厂编码|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsSN",
+ "dataTag":"1",
+ "data":{
+ "value":"2024041201"
+ }
+}
+```
+##### fEvtBsModel
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站的型号
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识|
+|data|object|-|是|传送参数的对象|
+|+value|string|-|是|基站的型号码|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsModel",
+ "dataTag":"1",
+ "data":{
+ "value":"218"
+ }
+}
+```
+##### fEvtBsFWVersion
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站的固件版本
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|基站的固件版本号|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsFWVersion",
+ "dataTag":"1",
+ "data":{
+ "value":"1.0.3"
+ }
+}
+```
+##### fEvtBsBIC
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站的品牌码
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|基站的品牌码|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsBIC",
+ "dataTag":"1",
+ "data":{
+ "value":"sunvote"
+ }
+}
+```
+### 组网设置
+#### 方法
+##### getBsNetworkMode
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站组网模式
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsNetworkMode",
+ "dataTag":"1"
+}
+```
+##### setBsNetworkMode
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置基站组网模式
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string|-|是|设置的基站组网模式
1-配对模式
2-白名单模式|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsNetworkMode",
+ "dataTag":"1",
+ "data":{
+ "value":"1"
+ }
+}
+```
+##### getBsPairCode
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站配对码
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsPairCode",
+ "dataTag":"1"
+}
+```
+##### setBsPairCode
+- **主题**:/manage/\${baseSN}/send
+- **功能描述**:设置基站配对码
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|否|传送参数的对象|
+|+value|string|-|否|设置的基站配对码,6位数字|
+|+time|string|数字|是|时间,yyyyMMddHHmmss|
+|+crc|string||是|内部主题校验码,时间+固定key加密|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsPairCode",
+ "dataTag":"1",
+ "data":{
+ "value":"041201"
+ }
+}
+```
+##### getBsNfcLogin
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取刷卡配对状态
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsNfcLogin",
+ "dataTag":"1"
+}
+```
+##### setBsNfcLogin
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置基站刷卡配对状态
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string|-|是|设置的基站刷卡配对状态
0-关闭刷卡配对
1-开启刷卡配对|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsPairCode",
+ "dataTag":"1",
+ "data":{
+ "value":"1"
+ }
+}
+```
+##### getBsChannel
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站信道
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsChannel",
+ "dataTag":"1"
+}
+```
+##### setBsChannel
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置基站信道
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string|-|是|设置的基站信道,可设范围:1-80|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsChannel",
+ "dataTag":"1",
+ "data":{
+ "value":"23"
+ }
+}
+```
+#### 事件
+##### fEvtBsNetworkMode
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站组网模式
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识,可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|基站的组网模式
1-配对模式
2-白名单模式|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsNetworkMode",
+ "dataTag":"1",
+ "data":{
+ "value":"1"
+ }
+}
+```
+##### fEvtBsPairCode
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站配对码
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识,可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|基站的组网模式
1-配对模式
2-白名单模式|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsNetworkMode",
+ "dataTag":"1",
+ "data":{
+ "value":"1"
+ }
+}
+```
+
+##### fEvtBsChannel
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站信道
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识,可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|基站信道|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsChannel",
+ "dataTag":"1",
+ "data":{
+ "value":"5"
+ }
+}
+```
+### 登录设置
+#### 方法
+##### getBsSSID
+获取基站登录名称
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站登录名称
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|固定指令名称|
+|dataTag|string|-|否|数据包标识|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsSSID",
+ "dataTag":"1"
+}
+```
+##### setBsSSID
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置基站登录名称
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|设置的基站SSID,最长12字符|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsSSID",
+ "dataTag":"1",
+ "data":{
+ "value":"1901班"
+ }
+}
+```
+#### 事件
+##### fEvtBsSSID
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站名称
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识,可传空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|基站名称|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsSSID",
+ "dataTag":"1",
+ "data":{
+ "value":"1901班"
+ }
+}
+```
+### 键盘统一设置
+#### 方法
+##### getBsKpLanguage
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取键盘语言
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsKpLanguage",
+ "dataTag":"1"
+}
+```
+##### setBsKpLanguage
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置键盘语言
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|设置键盘显示的语言
1-简体中文
2-英文|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsKpLanguage",
+ "dataTag":"1",
+ "data":{
+ "value":"1"
+ }
+}
+```
+##### getBsKpStbMsgMode
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取状态语设置状态
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsKpStbMsgMode",
+ "dataTag":"1"
+}
+```
+##### setBsKpStbMsgMode
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置状态语工作状态
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|设置状态语工作状态
0-系统默认
1-用户内置|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsKpStbMsgMode",
+ "dataTag":"1",
+ "data":{
+ "value":"0"
+ }
+}
+```
+##### getBsTcpipParams
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站TCP/IP参数
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsTcpipParams",
+ "dataTag":"1"
+}
+```
+##### setBsTcpipParams
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置基站TCP/IP参数
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+ip|string||否|IP地址|
+|+mask|string||否|子网掩码|
+|+gateway|string||否|网关地址|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsKpStbMsgMode",
+ "dataTag":"1",
+ "data":{
+ "ip":"192.168.0.10",
+ "mask":"255.255.255.0",
+ "gateway":"192.168.0.1"
+ }
+}
+```
+##### getBsMqttParams
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站MQTT参数
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsMqttParams",
+ "dataTag":"1"
+}
+```
+##### setBsMqttParams
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置基站MQTT参数
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+server|string||是|服务器IP地址|
+|+port|int||是|端口,默认1883|
+|+userName|string||否|连接服务器的用户名,可不设置|
+|+password|string||否|连接服务器的密码,可不设置|
+|+ipAllocation|int||否|基站IP获取方式
0 - 手动指定
1 - DHCP获取|
+
+- **示例代码**
+```Json
+{
+ "fun":"setBsKpStbMsgMode",
+ "dataTag":"1",
+ "baseSN": "2024041201",
+ "data":{
+ "server":"192.168.10.10",
+ "port":1883,
+ "userName":"",
+ "password":"",
+ "ipAllocation":1
+ }
+}
+```
+#### 事件
+##### fEvtBsKpLanguage
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回键盘语言
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|设置键盘显示的语言
1-简体中文
2-英文|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsKpLanguage",
+ "dataTag":"1",
+ "data":{
+ "value":"1"
+ }
+}
+```
+##### fEvtBsKpStbMsgMode
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回状态语工作状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|返回状态语工作状态
0-系统默认
1-用户内置|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsKpStbMsgMode",
+ "dataTag":"1",
+ "data":{
+ "value":"0"
+ }
+}
+```
+
+##### fEvtBsTcpipParams
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站TCP/IP参数
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+mac|string||是|MAC地址|
+|+ip|string||是|IP地址|
+|+mask|string||是|子网掩码|
+|+gateway|string||是|网关地址|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsTcpipParams",
+ "dataTag":"1",
+ "data":{
+ "mac":"FF:FF:FF:FF:FF:FF",
+ "ip":"192.168.0.10",
+ "mask":"255.255.255.0",
+ "gateway":"192.168.0.1"
+ }
+}
+```
+##### fEvtBsMqttParams
+- **主题**: /basestation/\${baseSN}/recive
+- **功能描述**:返回基站MQTT参数
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+server|string||是|服务器地址,IP|
+|+port|int||是|端口,默认1883|
+|+userName|string||否|连接服务器的用户名,可不设置|
+|+password|string||否|连接服务器的密码,可不设置|
+|+ipAllocation|int||是|基站IP获取方式
0 - 手动指定
1 - DHCP获取|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsMqttParams",
+ "dataTag":"1",
+ "data":{
+ "server":"192.168.10.10",
+ "port":1883,
+ "userName":"",
+ "password":"",
+ "ipAllocation":1
+ }
+}
+```
+### 基站升级
+#### 方法
+##### startBsUpdate
+- **主题**:/manage/\${baseSN}/send
+- **功能描述**:基站升级
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+url|string||是|待升级的固件地址,可访问的网络url|
+|+version|string||是|待升级的基站版本|
+|+time|string|数字|是|时间,yyyyMMddHHmmss|
+|+crc|string||是|内部主题校验码,时间+固定key加密|
+
+- **示例代码**
+```Json
+{
+ "fun":"startBsUpdate",
+ "dataTag":"1",
+ "data":{
+ "url":"http://192.168.10.10/V1.0.3.bin",
+ "version":"1.0.3",
+ "crc":""
+ }
+}
+```
+#### 事件
+##### fEvtStartBsUpate
+- **主题**: /manage/\${baseSN}/recive
+- **功能描述**:返回基站启动升级状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动升级状态
0 - 成功
1 - 失败
+|+msg|string||否|返回的失败原因
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtStartBsUpate",
+ "dataTag":"1",
+ "data":{
+ "state":1,
+ "msg":"error msg"
+ }
+}
+```
+
+##### fEvtBsUpdateProgress
+- **主题**: /manage/\${baseSN}/recive
+- **功能描述**:返回基站升级进度
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+progress|int||是|升级进度,百分比|
+|+status|int||是|升级状态
0 - 未开始
1 - 升级中
2 - 升级完成|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsUpdateProgress",
+ "dataTag":"1",
+ "data":{
+ "progress":20,
+ "status":1
+ }
+}
+```
+## 键盘管理
+### 识别设置
+#### 方法
+##### getKpIdentityMode
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取键盘识别模式
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getKpIdentityMode",
+ "dataTag":"1"
+}
+```
+
+##### setKpIdentityMode
+- **主题**:/manage/\${baseSN}/send
+- **功能描述**:设置键盘识别模式
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|设置键盘识别模式
0 - SN模式
1 - ID+SN模式|
+|+time|string|数字|是|时间,yyyyMMddHHmmss|
+|+crc|string||是|内部主题校验码,时间+固定key加密|
+
+- **示例代码**
+```Json
+{
+ "fun":"setKpIdentityMode",
+ "dataTag":"1",
+ "data":{
+ "value":"0"
+ }
+}
+```
+#### 事件
+##### fEvtKpIdentityMode
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:设置键盘识别模式
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|设置键盘识别模式
0 - SN模式
1 - ID+SN模式|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtKpIdentityMode",
+ "dataTag":"1",
+ "data":{
+ "value":"0"
+ }
+}
+```
+### 交互设置
+#### 方法
+##### setKpUserStbMsg
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置用户内置状态语
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+online|string||是|在线状态显示的待机语|
+|+offline|string||是|离线状态显示的待机语|
+|+submitting|string||是|提交中状态语|
+|+submitted|string||是|已提交状态语|
+
+- **示例代码**
+```Json
+{
+ "fun":"setKpUserStbMsg",
+ "dataTag":"1",
+ "data":{
+ "online":"请认真听讲",
+ "offline":"离线",
+ "submitting":"提交中",
+ "submitted":"提交成功"
+ }
+}
+```
+##### rtSetKpUserPrompt
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:实时设置提示反馈信息
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|否|传送参数的对象数组|
+|++keySN|string||否|需要设置绑定信息的键盘SN,
可设置多个SN,用英文字符","分隔|
+|++info|string||否|设置的反馈信息,
不同键盘可设置不同反馈信息|
+```json
+{
+ "fun": "rtSetKpBindingInfo",
+ "dataTag":"1",
+ "data": [
+ {
+ "keySn": "1479824643,1479824645",
+ "info": "答对了"
+ },
+ {
+ "keySn": "1479824644",
+ "info": "答错了"
+ }
+ ]
+}
+```
+#### 事件
+##### fEvtKpUserStbMsg
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回设置状态语的状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|否|传送参数的对象|
+|+state|string||是|设置状态语是否成功
0 - 成功
1 - 失败|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtKpUserStbMsg",
+ "dataTag":"1",
+ "data":{
+ "state":"1"
+ }
+}
+```
+##### fEvtSetKpUserPrompt
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回实时设置提示语是否成功
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySN|string||是|设置提示语信息的键盘SN|
+|++state|string||是|设置的提示语是否成功
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtSetKpUserPrompt",
+ "dataTag":"1",
+ "data": [
+ {
+ "keySn": "1479824643",
+ "state": "0"
+ },
+ {
+ "keySn": "1479824645",
+ "state": "0"
+ },
+ {
+ "keySn": "1479824644",
+ "state": "1"
+ }
+ ]
+}
+```
+### 维护功能
+#### 方法
+##### remoteKpPowerOff
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:遥控键盘关机
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象数组|
+|+keySns|array||否|需要执行指令的键盘SN数组,
为空表示所有键盘|
+
+- **示例代码**
+```Json
+{
+ "fun":"remoteKpPowerOff",
+ "dataTag":"1",
+ "data":{
+ "keySns":["1479824644"]
+ }
+}
+```
+##### remoteKpSleep
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:遥控键盘休眠
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象数组|
+|+keySns|array||否|需要执行指令的键盘SN数组,为空表示所有键盘|
+
+- **示例代码**
+```Json
+{
+ "fun":"remoteKpSleep",
+ "dataTag":"1",
+ "data":{
+ "keySns":["1479824644"]
+ }
+}
+```
+##### startKpFWUpdate
+- **主题**:/manage/\${baseSN}/send
+- **功能描述**:键盘升级
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+url|string||是|待升级的固件地址,可访问的网络url|
+|+version|string||是|待升级的键盘版本|
+|+time|string|数字|是|时间,yyyyMMddHHmmss|
+|+crc|string||是|内部主题校验码,时间+固定key加密|
+
+- **示例代码**
+```Json
+{
+ "fun":"startKpFWUpdate",
+ "dataTag":"1",
+ "data":{
+ "url":"http://192.168.10.10/V1.0.3.bin",
+ "version":"1.0.3",
+ "crc":""
+ }
+}
+```
+#### 事件
+##### fEvtRemoteKpPowerOff
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回设置键盘关机是否成功
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|否|传送参数的对象数组|
+|++keySN|string||是|键盘SN|
+|++state|string||是|设置是否成功
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtRemoteKpPowerOff",
+ "dataTag":"1",
+ "data": [
+ {
+ "keySn": "1479824644",
+ "state": "0"
+ }
+ ]
+}
+```
+##### fEvtRemoteKpSleep
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回实时设置键盘休眠是否成功
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|否|传送参数的对象数组|
+|++keySN|string||是|键盘SN|
+|++state|string||是|设置是否成功
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtRemoteKpPowerOff",
+ "dataTag":"1",
+ "data": [
+ {
+ "keySn": "1479824644",
+ "state": "0"
+ }
+ ]
+}
+```
+##### fEvtStartKpFWUpdate
+- **主题**: /manage/\${baseSN}/recive
+- **功能描述**:返回基站启动升级状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动升级状态
0 - 成功
1 - 失败
+|+msg|string||否|返回的失败原因
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtStartKpFWUpdate",
+ "dataTag":"1",
+ "data":{
+ "state":0,
+ "msg":""
+ }
+}
+```
+##### fEvtKpUpdateProgress
+- **主题**: /manage/\${baseSN}/recive
+- **功能描述**:返回基站升级进度
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+progress|int||是|升级进度,百分比|
+|+status|int||是|升级状态
0 - 未开始
1 - 升级中
2 - 升级完成|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtKpUpdateProgress",
+ "dataTag":"1",
+ "data":{
+ "progress":20,
+ "status":1
+ }
+}
+```
+## 绑定
+### 无线绑定
+#### 方法
+##### rtSetKpBindingInfo
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:实时设置绑定信息到键盘
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组,不可为空|
+|++keySN|string||是|需要设置绑定信息的键盘SN|
+|++info|string||是|设置的绑定信息,一般为学生姓名|
+```json
+{
+ "fun": "rtSetKpBindingInfo",
+ "dataTag":"1",
+ "baseSn":"2024041201",
+ "data": [
+ {
+ "keySn": "1479824643",
+ "info": "张三"
+ },
+ {
+ "keySn": "1479824644",
+ "info": "李四"
+ }
+ ]
+}
+```
+
+##### clearKpBindingInfo
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:清除键盘绑定信息
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象数组|
+|+keySNs|array||否|需要清除绑定信息键盘SN数组,
为空表示清空所有键盘|
+```json
+{
+ "fun": "clearKpBindingInfo",
+ "dataTag":"1",
+ "data": {
+ "keySns":["1479824643","1479824644","1479824645"]
+ }
+}
+```
+#### 事件
+##### fEvtSetKpBindingInfo
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回实时设置绑定信息的状态是否成功
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|否|传送参数的对象数组|
+|++keySN|string||是|需要设置绑定信息的键盘SN|
+|++state|string||是|设置的绑定信息是否成功
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtSetKpBindingInfo",
+ "dataTag":"1",
+ "data": [
+ {
+ "keySn": "1479824643",
+ "state": "0"
+ },
+ {
+ "keySn": "1479824644",
+ "state": "1"
+ }
+ ]
+}
+```
+##### fEvtClearKpBindingInfo
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回实时设置绑定信息的状态是否成功
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySN|string||是|需要设置绑定信息的键盘SN|
+|++state|string||是|清空绑定信息是否成功
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtClearKpBindingInfo",
+ "dataTag":"1",
+ "data": [
+ {
+ "keySn": "1479824643",
+ "state": "0"
+ },
+ {
+ "keySn": "1479824644",
+ "state": "1"
+ }
+ ]
+}
+```
+## 签到
+### 随时签到
+#### 方法
+##### rtStartKpSignIn
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动随时签到绑定
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传递参数的对象|
+|+mode|int|-|是|签到模式
0-按键签到,按OK键签到自动授权
1-PIN码签到,输入pin码后由应用程序决定是否授权|
+```json
+{
+ "fun": "rtStartKpSignIn",
+ "dataTag":"1",
+ "data":{
+ "mode":1
+ }
+}
+```
+##### rtStopKpSignIn
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止签到绑定
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+```json
+{
+ "fun": "rtStopKpSignIn",
+ "dataTag":"1"
+}
+```
+##### rtSetKpLoginAllowed
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:实时PIN绑定授权,可取消授权
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传递参数的对象|
+|+keySn|string|-|是|键盘SN|
+|+state|int|-|是|1-授权成功
2-授权失败
3-解除已授权|
+```json
+{
+ "fun": "rtSetKpLoginAllowed",
+ "dataTag":"1",
+ "data":{
+ "keySn":"1479824643",
+ "state":1
+ }
+}
+```
+#### 事件
+##### fEvtStartKpSignIn
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回启动随时签到绑定状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStartKpSignIn",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtKpSignIn
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘提交签到信息
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++keyValue|string||是|键盘提交的按键值|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+```json
+{
+ "fun": "fEvtKpSignIn",
+ "dataTag":"1",
+ "data": [{
+ "keySn": "1234567890",
+ "keyValue":"1004",
+ "keyTime":30.2
+ },
+ {
+ "keySn": "1234567891",
+ "keyValue":"1003",
+ "keyTime":32.5
+ }
+ ]
+}
+```
+##### fEvtStopKpSignIn
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回停止异步绑定状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStopKpSignIn",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtSetKpLoginAllowed
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘授权状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySn|string||是|键盘SN|
+|+state|string||是|1-授权成功
2-授权失败
3-解除已授权|
+```json
+{
+ "fun": "fEvtSetKpLoginAllowed",
+ "dataTag":"1",
+ "data": {
+ "keySn":"1479824643",
+ "state":1
+ }
+}
+```
+
+## 按键反馈
+### 判断题
+#### 方法
+##### startQATrueFalse
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动判断题答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|string||是|指定的键盘SN,可空表示全部在线键盘,
多个SN用英文","分隔|
+|+count|int||是|题目数量,1-16,>1多题快答|
+|+mode|int||是|1 - True/False 对/错
2 - Yes/No 是/否
3 - √/×|
+|+allowModify|int||是|0 - 不允许修改
1 - 允许修改|
+|+tip|string||否|提示的标题,长度不超过16字符|
+|+simParams|object||否|内部模拟测试参数设置对象|
+|++answer|string||是|预设提交的按键值|
+|++delay|int||是|提交延迟,单位ms
0:并发提交
>0:范围内随机延迟提交|
+```json
+{
+ "fun": "startQATrueFalse",
+ "dataTag":"1",
+ "data":{
+ "keySns":"",
+ "count":1,
+ "mode":0,
+ "allowModify":1,
+ "tip":"请判断对错"
+ }
+}
+```
+##### stopQATrueFalse
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止判断题答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+```json
+{
+ "fun": "stopQATrueFalse",
+ "dataTag":"1"
+}
+```
+#### 事件
+##### fEvtStartQATrueFalse
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回启动判断题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStartQATrueFalse",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtQATrueFalse
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘提交答题信息
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++keyValue|string||是|键盘提交的按键值
1-对
2-错|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+```json
+{
+ "fun": "fEvtQATrueFalse",
+ "dataTag":"1",
+ "data": [{
+ "keySn": "1234567890",
+ "keyValue":"1",
+ "keyTime":30.2
+ }
+ ]
+}
+```
+##### fEvtStopQATrueFalse
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回停止判断题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|停止状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStopQATrueFalse",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+### 选择题
+#### 方法
+##### startQAChoice
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动选择题答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|string||是|指定的键盘SN,可空表示全部在线键盘,
多个SN用英文","分隔|
+|+count|int||是|题目数量,1-16,>1多题快答|
+|+mode|int||是|显示模式
1:显示字母(默认值) 2:显示数字 |
+|+secrecyMode|int||是|保密模式
0:不保密(默认值)1:保密 |
+|+lessMode|int||是|迫选模式
0:可缺选(默认值) 1:不可缺选2:允许重复输入3:允许重复输入且不可缺选 |
+|+options|int||是|选项数量,1≤M≤10(默认值4)|
+|+optionalN|int||是|可选项个数,1≤N≤M(默认值1)|
+|+allowModify|int||是|修改模式
0 - 不允许修改
1 - 允许修改|
+|+tip|string||否|提示的标题,长度不超过16字符|
+|+simParams|object||否|内部模拟测试参数设置对象|
+|++answer|string||是|预设提交的按键值|
+```json
+{
+ "fun": "startQAChoice",
+ "dataTag":"1",
+ "data":{
+ "keySns":"",
+ "mode": 1,
+ "secrecyMode": 0,
+ "lessMode": 0,
+ "options": 4,
+ "optionalN": 1,
+ "allowModify":1,
+ "tip":"请选择"
+ }
+}
+```
+##### stopQAChoice
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止选择题答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+```json
+{
+ "fun": "stopQAChoice",
+ "dataTag":"1"
+}
+```
+#### 事件
+##### fEvtStartQAChoice
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回启动选择题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStartQAChoice",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtQAChoice
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘提交答题信息
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++keyValue|string||是|键盘提交的按键值|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+```json
+{
+ "fun": "fEvtQAChoice",
+ "dataTag":"1",
+ "data": [{
+ "keySn": "1234567890",
+ "keyValue":"A",
+ "keyTime":3.2
+ }]
+}
+```
+##### fEvtstopQAChoice
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回停止选择题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|停止状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtstopQAChoice",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+### 数字题
+#### 方法
+##### startQANum
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动数字题答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|string||是|指定的键盘SN,可空表示全部在线键盘,
多个SN用英文","分隔|
+|+mode|int||是|模式
0:无规则 (S6最多16位,T2最多14位)
1:预留
2:预留
3:带小数位上下限(T2不支持)|
+|+secrecyMode|int||是|保密模式
0:不保密(默认值)1:保密 |
+|+digits|int||是|小数位数,0-2
+|+numMin|int||是|可输入下限,mode=3有效
digits=0时 范围:0~65535
digits=1时 范围:0~6553
digits=2时 范围:0~655|
+|+numMax|int||是|可输入上限,mode=3有效
digits=0 范围:0~65535
digits=1 范围:0~6553
digits=2 范围:0~655|
+|+allowModify|int||是|修改模式
0 - 不允许修改
1 - 允许修改|
+|+tip|string||否|提示的标题,长度不超过16字符|
+|+simParams|object||否|内部模拟测试参数设置对象|
+|++answer|string||是|预设提交的按键值|
+```json
+{
+ "fun": "startQANum",
+ "dataTag":"1",
+ "data":{
+ "keySns":"",
+ "mode": 3,
+ "secrecyMode": 0,
+ "digits": 1,
+ "numMin": 0,
+ "numMax": 100,
+ "allowModify":1,
+ "tip":"请输入数字"
+ }
+}
+```
+##### stopQANum
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止数字题答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+```json
+{
+ "fun": "stopQANum",
+ "dataTag":"1"
+}
+```
+#### 事件
+##### fEvtStartQANum
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回启动数字题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStartQANum",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtQANum
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘提交答题信息
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++keyValue|string||是|键盘提交的按键值|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+```json
+{
+ "fun": "fEvtQANum",
+ "dataTag":"1",
+ "data": {
+ "keySn": "1234567890",
+ "keyValue":"10",
+ "keyTime":3.2
+ }
+}
+```
+##### fEvtstopQANum
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回停止数字题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|停止状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtstopQANum",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+### 抢答题
+#### 方法
+##### startQAQuicker
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动抢答题答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|string||是|指定的键盘SN,可空表示全部在线键盘,
多个SN用英文","分隔|
+|+mode|int||是|模式
0:普通抢答|
+|+allowModify|int||是|修改模式
0 - 不允许修改
1 - 允许修改|
+|+tip|string||否|提示的标题,长度不超过16字符|
+|+simParams|object||否|内部模拟测试参数设置对象|
+|++answer|string||是|预设提交的按键值|
+```json
+{
+ "fun": "startQAQuicker",
+ "dataTag":"1",
+ "data":{
+ "keySns":"",
+ "mode": 0,
+ "allowModify":1,
+ "tip":"请按键抢答"
+ }
+}
+```
+##### stopQAQuicker
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止抢答答题
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+```json
+{
+ "fun": "stopQAQuicker",
+ "dataTag":"1"
+}
+```
+#### 事件
+##### fEvtStartQAQuicker
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回启动抢答题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStartQAQuicker",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtQAQuicker
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘提交答题信息
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++keyValue|string||是|键盘提交的按键值|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+```json
+{
+ "fun": "fEvtQAQuicker",
+ "dataTag":"1",
+ "data": [{
+ "keySn": "1234567890",
+ "keyValue":"1",
+ "keyTime":3.2
+ }]
+}
+```
+##### fEvtstopQAQuicker
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回停止抢答题状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|停止状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtstopQAQuicker",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+## 在线测验
+### 标准测验
+#### 方法
+##### startKpExam
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动标准测验
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|string||是|指定的键盘SN,可空表示全部在线键盘,
多个SN用英文","分隔|
+|+examNo|int||是|1-9999|
+|+mode|int||是|显示模式
0-不显示开头
1-显示“Q”开头
2-显示“题”开头|
+|+questions|array||是|题目详情|
+|++symbol | string||是 | 题号前缀,可为空 |
+|++quesType | int||是| 题目类型
1:单选
2:多选(排序)
3:数字
4:判断 |
+|++option |int||是 |选项数目
quesType = 1 有效。
quesType = 2 有效。
此项缺省时 默认4;
范围:1-10。|
+|++startNo | int||是| 起始题号 |
+|++count | int||是| 题目数量 |
+|+simParams|object||否|内部模拟测试参数设置对象|
+|++answer|string||是|预设提交的按键值
格式为"单选题答案;多选题答案;
数字题答案;判断题答案(1对2错)"
如"A;ABCD;10;1"|
+```json
+//自定义题号
+{
+ "fun": "startKpExam",
+ "dataTag":"1",
+ "data":{
+ "keySns":"",
+ "mode": 0,
+ "examNo": 1,
+ "questions": [{
+ //题号1-1-1 到1-1-10 共10题单选
+ "symbol": "1-1-",
+ "quesType": 1,
+ "startNo": 1,
+ "count":10
+ }, {
+ //题号2-2和2-3共两题 多选题,5个选项
+ "symbol": "2-",
+ "questionType": 2,
+ "option": 5,
+ "startNo": 2,
+ "count":2
+ }, {
+ //题号3-1和3-2共两道数字题
+ "symbol": "3-",
+ "questionType": 3,
+ "startNo": 1,
+ "count":2
+ }, {
+ //题号4和5 ,判断题
+ "symbol": "",
+ "questionType": 4,
+ "startNo": 4,
+ "count":2
+ }]
+ }
+}
+
+//显示Q开头
+{
+ "fun": "startKpExam",
+ "dataTag":"1",
+ "data":{
+ "keySns":"",
+ "mode": 1,
+ "examNo": 1,
+ "questions": [{
+ //Q1-Q20,单选题
+ "symbol": "",
+ "quesType": 1,
+ "startNo": 1,
+ "count":20
+ }]
+ }
+}
+
+//显示题开头
+{
+ "fun": "startKpExam",
+ "dataTag":"1",
+ "data":{
+ "keySns":"",
+ "mode": 2,
+ "examNo": 1,
+ "questions": [{
+ //题1-题20,单选题
+ "symbol": "",
+ "quesType": 1,
+ "startNo": 1,
+ "count":20
+ }]
+ }
+}
+```
+##### stopKpExam
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止标准测验
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+```json
+{
+ "fun": "stopKpExam",
+ "dataTag":"1"
+}
+```
+##### rtGetKpExamData
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:刷新作答数据
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|string||是|指定的键盘SN,可空表示全部在线键盘
多个SN用英文","分隔|
+```json
+{
+ "fun": "rtGetKpExamData",
+ "dataTag":"1",
+ "data":{
+ "keySns":"1234567890,1234567891",
+ }
+}
+```
+##### rtKpAllowEdited
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:键盘键盘后,允许键盘修改答案
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|string||是|指定的键盘SN,可空表示全部在线键盘,多个SN用英文","分隔|
+```json
+{
+ "fun": "rtKpAllowEdited",
+ "dataTag":"1",
+ "data":{
+ "keySns":"1234567890,1234567891",
+ }
+}
+```
+#### 事件
+##### fEvtStartKpExam
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回启动在线测验状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|启动状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtStartKpExam",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtKpExam
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘提交答题信息
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+```json
+{
+ "fun": "fEvtKpExam",
+ "dataTag":"1",
+ "data": [{
+ "keySn": "1234567890",
+ "keyValue":"1:A;2:B",
+ "keyTime":3.2
+ },
+ {
+ "keySn": "1234567891",
+ "keyValue":"1:B;2:B",
+ "keyTime":3.5
+ }
+ ]
+}
+```
+##### fEvtstopKpExam
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回停止在线测验状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+state|int||是|停止状态
0 - 成功
1 - 失败|
+```json
+{
+ "fun": "fEvtstopKpExam",
+ "dataTag":"1",
+ "data": {
+ "state": 0
+ }
+}
+```
+##### fEvtFinalSubmit
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回键盘手动交卷标识
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySn|string||是|键盘SN|
+|+keyTime|double||是|提交时间,从启动开始计算,单位秒|
+```json
+{
+ "fun": "fEvtFinalSubmit",
+ "dataTag":"1",
+ "data": {
+ "keySn": "1234567890",
+ "keyTime":3.2
+ }
+}
+```
+
+##### fEvtAllowEdited
+- **主题**:/basestation/\${baseSN}/recive
+- **功能描述**:返回允许键盘修改答案状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySn|string||是|键盘SN|
+|+state|int||是|0-成功
1-失败|
+```json
+{
+ "fun": "fEvtAllowEdited",
+ "dataTag":"1",
+ "data": {
+ "keySn": "1234567890",
+ "state":0
+ }
+}
+```
\ No newline at end of file