diff --git a/通讯协议-B200W-MQTT协议[外].md b/通讯协议-B200W-MQTT协议[外].md new file mode 100644 index 0000000..12e9287 --- /dev/null +++ b/通讯协议-B200W-MQTT协议[外].md @@ -0,0 +1,1855 @@ + +# SunVote B200W MQTT通讯协议 + +[TOC] + + + +# 开发流程 + +C200K基站,采用MQTT协议进行开发,基站接入MQTT服务器,应用从MQTT服务器下发指令和接收数据 + +整个交互图如下: + +![](img/mqtt_1.png) + + +## MQTT服务器准备 + +MQTT服务器要求: + +厂家使用EMQX 进行测试 + +能够正常收发MQTT数据。 + +服务器的性能参数由业务决定。 + +域名: + +公网域名或ip或者基站所处局域网ip。 + +MQTT服务器配置结果检查 + +使用MQTT.FX客户端,配置域名,端口,用户名和密码信息,然后连接,如果提示连接成功,则表示MQTT服务器可用。基站clientid 是基站编号。 + +![](img/mqtt_2.png) + + +## 2.2 基站配置 + +通过USB连接基站,打开基站服务器配置软件。 + +![](img/mqtt_3.png) + +如果基站没有连接电脑,工具显示检测基站中,这时候读写无效。 + +连接正常后,按照各个信息进行写入。 + +设置基站服务器域名(ip)、端口,用户信息、密码信息,写入基站。 + +如果MQTT服务器没有启用用户密码验证,用户密码信息可以随机设置。 + +拔掉USB,连接网线,接入网络,查看网络是否连接正常。(基站上面的灯是否蓝色闪烁) + +基站说明 + +![](img/mqtt_4.png) + +# 功能说明 + +## 主题说明 +\${baseSN}为指定的基站的SN编码,不能为空,接收基站反馈数据需要订阅对应基站SN的接收主题。 +### 发布的主题 +应用程序发布的主题,基站订阅 +/client/\${baseSN}/send +/client/multiBase/send + +### 订阅的主题 +应用程序订阅的主题,基站发布 +/basestation/\\${baseSN}/receive +/basestation/multiBase/receive + +## 指令说明 +|指令功能标识 |说明 |约束| +|---|---|---| +|get| 待机状态下获取参数属性状态及数据 |待机状态| +|set| 待机状态下设置参数属性状态及数据 |待机状态| +|start| 运行一个单进程业务实例(函数) |待机状态| +|stop| 停止一个单进程业务实例(函数) |待机状态| +|rtXXX| 在线状态下可实时执行方法及函数 || + +## 事件说明 +|事件标识| 说明| 约束| +|---|---|---| +|sEvtXXX|系统事件 |自动返回| +|fEvtXXX|指令事件 |调用对应指令后返回| + +## 数据格式约定 +- 数据格式统一为**Json**格式,MQTT发送接收消息编码统一为**UTF-8** +- Json通用格式如下: +```json + { + "fun":"xxx", + "dataTag":"xxx", + "data":{ + //内容 + } + } +``` +|参数 |说明 |约束| +|---|---|---| +|fun| 指令或事件名称|| +|dataTag| 数据标签,用于对应收发数据|长度不超过4,可为0-9a-zA-Z的组合| +|data| 数据内容|对象或者数组,可为空| + + +## 功能速查一览表 +### 基站管理 +|功能归类|功能|API指令|指令/系统事件| +|---|---|---|---| +|基站连接 - 获取在线基站|主动获取在线基站信息
不确定基站SN时|[getBsOnlineState](#getbsonlinestate)|[fEvtBsOnlineState](#fevtbsonlinestate)|| +|基站连接 - 主动获取状态|主动获取基站连接状态|[getBsConnectState](#getbsconnectstate)|[sEvtBsConnectState](#sevtbsconnectstate)|| +|基站连接 - 自动获取状态|基站连接变化系统通知|-|[sEvtBsConnectState](#sevtbsconnectstate)|| +|基站授时|对基站授时用于校准时间|[timeSync](#timesync)|[sEvtStateCode](#sevtstatecode)|| +|键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|| +|识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)| +|识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)| +|组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[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)|| +|网络设置 - 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)|| +|基站维护|获取基站日志信息|[getBsLogInfo](#getbsloginfo)|[sEvtStateCode](#sevtstatecode)| +### 键盘管理 +|功能归类|功能|API指令|指令事件| +|---|---|---|---| +|交互设置 - 用户实时提示信息|实时设置提示反馈信息|[rtSetKpUserPrompt](#rtsetkpuserprompt)|[sEvtStateCode](#sevtstatecode)
[fEvtSetKpUserPrompt](#fevtsetkpuserprompt)| +|在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)
[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)| +||停止扫描在线键盘|[stopGetKpOnline](#stopgetkponline)|[sEvtStateCode](#sevtstatecode)| +|维护功能 - 遥控功能|遥控键盘休眠|[remoteKpSleep](#remotekpsleep)|[sEvtStateCode](#sevtstatecode)| +### 绑定 +|功能归类|功能|API指令|指令事件| +|---|---|---|---| +|无线绑定|设置绑定信息到键盘|[rtSetKpBindingInfo](#rtsetkpbindinginfo)|[sEvtStateCode](#sevtstatecode)
[fEvtKpBindingInfo](#fevtkpbindinginfo)| +||清除键盘绑定信息|[clearKpBindingInfo](#clearkpbindinginfo)|[sEvtStateCode](#sevtstatecode)
[fEvtClearKpBindingInfo](#fevtclearkpbindinginfo)| +### 签到 +|功能归类|功能|API指令|指令事件| +|---|---|---|---| +|随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)
[fEvtKpSignIn](#fevtkpsignin)| +||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)| +||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)
[fEvtKpLoginAllowed](#fevtkploginallowed)| +### 按键反馈 +|功能归类|功能|API指令|指令事件| +|---|---|---|---| +|判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)
[fEvtQATrueFalse](#fevtqatruefalse)| +||停止判断题答题|[stopQATrueFalse](#stopqatruefalse)|[sEvtStateCode](#sevtstatecode)| +|选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)
[fEvtQAChoice](#fevtqachoice)| +||停止选择题答题|[stopQAChoice](#stopqachoice)|[sEvtStateCode](#sevtstatecode)| +|数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)
[fEvtQANum](#fevtqanum)| +||停止数字题答题|[stopQANum](#stopqanum)|[sEvtStateCode](#sevtstatecode)| +|抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)
[fEvtQAQuicker](#fevtqaquicker)| +||停止抢答题答题|[stopQAQuicker](#stopqaquicker)|[sEvtStateCode](#sevtstatecode)| +### 在线测验 +|功能归类|功能|API指令|指令事件| +|---|---|---|---| +|标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)
[fEvtKpExam](#fevtkpexam)
[fEvtFinalSubmit](#fevtfinalsubmit)| +||停止标准测验|[stopKpExam](#stopkpexam)|[sEvtStateCode](#sevtstatecode)| +||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)
[fEvtFinalSubmit](#fevtfinalsubmit)| + +## 公共事件 +### sEvtBsConnectState +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:基站连接成功时返回基站型号和基站SN,基站从已连接状态断开返回连接断开 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|-----|-----|-----|-----|-----| +|fun|string|-|是|事件类型| +|dataTag|string|-|否|数据包标识,不需要时可传空字符串| +|data|object|-|是|传送参数的对象| +|+baseModel|int||否|基站的型号码| +|+modelName|string||否|基站的型号名称| +|+state|int||是|基站的连接状态
1-已连接
2-连接断开| +|+version|string||否|基站固件版本| + +- **示例代码** +```Json +//连接成功 +{ + "fun":"sEvtBsConnectState", + "dataTag":"1", + "data":{ + "state":1, + "baseModel":218, + "modelName":"B200", + "version":"1.0.3" + } +} +//连接断开 +{ + "fun":"sEvtBsConnectState", + "dataTag":"1", + "data":{ + "state":2 + } +} +``` +### sEvtBsChannelConflict +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:基站信道冲突时主动上报,应用程序可根据实际业务修改基站信道 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识,不需要时可传空字符串| +|data|object|-|是|传送参数的对象| +|+value|int||是|有冲突的信道| + +- **示例代码** +```Json +{ + "fun":"sEvtBsChannelConflict", + "dataTag":"1", + "data":{ + "value":5 //信道5有多个基站使用 + } +} +``` +### sEvtBsNfcResults +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:键盘刷卡时主动上报,如果超出基站容量会上报失败 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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}/receive +- **功能描述**:键盘上线通知,主动上报,键盘升级成功后也会上报 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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 + } +} +``` +### sEvtStateCode +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站接收指令状态信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识| +|data|object|-|是|传送参数的对象| +|+funName|string||是|指令名称| +|+code|string||是|状态码,含义见下表| + +|状态码|说明| +|---|---| +|0|指令收取成功| +|10001|不能正确解析的JSON数据| +|10002|解析JSON错误| +|20001|基站未连接| +|20002|功能不支持| +|20003|基站SN格式不正确| +|20004|参数错误| +|20005|基站在答题中| +|40001|升级功能只能支持一个基站| +|50001|此功能必须指定基站| +|60001|此功能必须指定键盘SN| + +- **示例代码** +```Json +{ + "fun":"sEvtStateCode", + "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/receive +- **功能描述**:基站在线返回基站型号和基站SN +- **参数说明** + +|参数名|类型|限制|非空|说明| +|-----|-----|-----|-----|-----| +|fun|string|-|是|事件类型| +|dataTag|string|-|否|数据包标识,不需要时可传空字符串| +|data|object|-|是|传送参数的对象| +|+baseModel|int||否|基站的型号码| +|+modelName|string||否|基站的型号名称| +|+version|string||否|基站固件版本| +|+baseSN|string||否|基站SN| + +- **示例代码** +```Json +//连接成功 +{ + "fun":"fEvtBsOnlineState", + "dataTag":"1", + "data":{ + "baseModel":218, + "modelName":"B200", + "version":"1.0.3", + "baseSN":"2024041401" + } +} +``` + +### 基站授时 +#### 方法 +##### timeSync +- **主题**:/client/\${baseSN}/send +- **功能描述**:发送当前时间戳给基站进行校时 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|固定指令名称| +|dataTag|string|-|否|数据包标识| +|data|object|-|是|传送参数的对象| +|+timeStamp|long ||否|当前时间的时间戳| + +- **示例代码** +```Json +{ + "fun":"timeSync", + "dataTag":"1", + "data":{ + "timeStamp":1718247133290 + } +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +返回指令的接收状态 + +### 识别设置 +#### 方法 +##### 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" +} +``` +#### 事件 +##### fEvtBsSN +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站的出厂编码 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识| +|data|object|-|是|传送参数的对象| +|+value|string|-|是|基站的出厂编码| + +- **示例代码** +```Json +{ + "fun":"fEvtBsSN", + "dataTag":"1", + "data":{ + "value":"2024041201" + } +} +``` +##### fEvtBsModel +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站的型号 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识| +|data|object|-|是|传送参数的对象| +|+value|string|-|是|基站的型号名称| + +- **示例代码** +```Json +{ + "fun":"fEvtBsModel", + "dataTag":"1", + "data":{ + "value":"B200" + } +} +``` +##### fEvtBsFWVersion +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站的固件版本 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识| +|data|object|-|是|传送参数的对象| +|+value|string||是|基站的固件版本号| + +- **示例代码** +```Json +{ + "fun":"fEvtBsFWVersion", + "dataTag":"1", + "data":{ + "value":"1.0.3" + } +} +``` +### 组网设置 +#### 方法 +##### getBsPairCode +- **主题**:/client/\${baseSN}/send +- **功能描述**:获取基站配对码 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| + +- **示例代码** +```Json +{ + "fun":"getBsPairCode", + "dataTag":"1" +} +``` +##### 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":"setBsNfcLogin", + "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" + } +} +``` +#### 事件 +##### fEvtBsPairCode +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站配对码 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识,可传空字符串| +|data|object|-|是|传送参数的对象| +|+value|string||是|基站的配对码| + +- **示例代码** +```Json +{ + "fun":"fEvtBsPairCode", + "dataTag":"1", + "data":{ + "value":"123456" + } +} +``` + +##### fEvtBsChannel +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站信道 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识,可传空字符串| +|data|object|-|是|传送参数的对象| +|+value|string||是|基站信道| + +- **示例代码** +```Json +{ + "fun":"fEvtBsChannel", + "dataTag":"1", + "data":{ + "value":"5" + } +} +``` +##### fEvtBsNfcLogin +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站是否允许NFC刷卡 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识,可传空字符串| +|data|object|-|是|传送参数的对象| +|+value|string||是|0-关闭 1-开启| + +- **示例代码** +```Json +{ + "fun":"fEvtBsNfcLogin", + "dataTag":"1", + "data":{ + "value":"1" + } +} +``` +### 登录设置 +#### 方法 +##### 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}/receive +- **功能描述**:返回基站名称 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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" + } +} +``` +#### 事件 +##### fEvtBsKpLanguage +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回键盘语言 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+value|string||是|设置键盘显示的语言
1-简体中文
2-英文| + +- **示例代码** +```Json +{ + "fun":"fEvtBsKpLanguage", + "dataTag":"1", + "data":{ + "value":"1" + } +} +``` +### 网络参数设置 +#### 方法 +##### 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||否|网关地址| +|+ipAllocation|int||否|基站IP获取方式
0 - 手动指定
1 - DHCP获取| + +- **示例代码** +```Json +{ + "fun":"setBsTcpipParams", + "dataTag":"1", + "data":{ + "ip":"192.168.0.10", + "mask":"255.255.255.0", + "gateway":"192.168.0.1", + "ipAllocation":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||否|连接服务器的密码,可不设置| +|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒| + +- **示例代码** +```Json +{ + "fun":"setBsMqttParams", + "dataTag":"1", + "data":{ + "server":"192.168.10.10", + "port":1883, + "userName":"", + "password":"", + "interval":30 + } +} +``` +#### 事件 +##### fEvtBsTcpipParams +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站TCP/IP参数 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+mac|string||是|MAC地址| +|+ip|string||是|IP地址| +|+mask|string||是|子网掩码| +|+gateway|string||是|网关地址| +|+ipAllocation|int||否|基站IP获取方式
0 - 手动指定
1 - DHCP获取| + +- **示例代码** +```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", + "ipAllocation":1 + } +} +``` +##### fEvtBsMqttParams +- **主题**: /basestation/\${baseSN}/receive +- **功能描述**:返回基站MQTT参数 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+server|string||是|服务器地址,IP| +|+port|int||是|端口,默认1883| +|+userName|string||否|连接服务器的用户名,可不设置| +|+password|string||否|连接服务器的密码,可不设置| +|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒| + +- **示例代码** +```Json +{ + "fun":"fEvtBsMqttParams", + "dataTag":"1", + "data":{ + "server":"192.168.10.10", + "port":1883, + "userName":"", + "password":"", + "interval":30 + } +} +``` +### 基站维护 +#### 方法 +##### getBsLogInfo +- **主题**:/client/\${baseSN}/send +- **功能描述**:获取基站日志,用于出现故障需要排查问题时获取基站内部日志记录 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| + +- **示例代码** +```Json +{ + "fun":"getBsLogInfo", + "dataTag":"1" +} +``` + +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +返回指令的接收状态 + +## 键盘管理 +### 交互设置 +#### 方法 +##### rtSetKpUserPrompt +- **主题**:/client/\${baseSN}/send +- **功能描述**:实时设置提示反馈信息 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|array|-|否|传送参数的对象数组| +|++keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘
注意:不允许空数组和指定SN数组混合使用
包含空数组默认为全部在线键盘,其他指定键盘无效
| +|++info|string||否|设置的反馈信息
不同键盘可设置不同反馈信息| +```json +//分别提示 +{ + "fun": "rtSetKpUserPrompt", + "dataTag":"1", + "data": [ + { + "keySns": ["1479824643","1479824645"], + "info": "答对了" + }, + { + "keySns": ["1479824644"], + "info": "答错了" + } + ] +} +//统一提示 +{ + "fun": "rtSetKpUserPrompt", + "dataTag":"1", + "data": [ + { + "keySns": [], + "info": "答题结束" + } + ] +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtSetKpUserPrompt +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回实时设置提示语是否成功 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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" + } + ] +} +``` +### 在线状态 +#### 方法 +##### startGetKpOnline +- **主题**:/client/\${baseSN}/send +- **功能描述**:开始获取键盘在线信息,键盘在线返回键盘信息 [sEvtBsKpOnlineMsg](#sevtbskponlinemsg) +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +```json +{ + "fun": "startGetKpOnline", + "dataTag":"1" +} +``` + +##### stopGetKpOnline +- **主题**:/client/\${baseSN}/send +- **功能描述**:停止获取键盘在线信息 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +```json +{ + "fun": "stopGetKpOnline", + "dataTag":"1" +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回此事件 + +##### [sEvtBsKpOnlineMsg](#sevtbskponlinemsg) +键盘在线返回此事件 + +### 维护功能 +#### 方法 +##### remoteKpSleep +- **主题**:/client/\${baseSN}/send +- **功能描述**:遥控键盘休眠 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象数组| +|+keySns|array||否|需要执行指令的键盘SN数组,空数组表示所有键盘| + +- **示例代码** +```Json +{ + "fun":"remoteKpSleep", + "dataTag":"1", + "data":{ + "keySns":["1479824644"] + } +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +返回指令的接收状态 + +## 绑定 +### 无线绑定 +#### 方法 +##### rtSetKpBindingInfo +- **主题**:/client/\${baseSN}/send +- **功能描述**:实时设置绑定信息到键盘 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|array|-|是|传送参数的对象数组,不可为空| +|++keySn|string||是|需要设置绑定信息的键盘SN| +|++info|string||是|设置的绑定信息,一般为学生姓名
最长48个字符,显示在键盘左上角| +```json +{ + "fun": "rtSetKpBindingInfo", + "dataTag":"1", + "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"] + } +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtKpBindingInfo +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘实时设置绑定信息的状态是否成功 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|array|-|否|传送参数的对象数组| +|++keySn|string||是|需要设置绑定信息的键盘SN| +|++state|string||是|设置的绑定信息是否成功
0 - 成功
1 - 失败| +```json +{ + "fun": "fEvtKpBindingInfo", + "dataTag":"1", + "data": [ + { + "keySn": "1479824643", + "state": "0" + }, + { + "keySn": "1479824644", + "state": "1" + } + ] +} +``` +##### fEvtClearKpBindingInfo +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回清空绑定信息的指令状态是否成功 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|否|传送参数的对象| +|+state|string||是|设置的绑定信息是否成功
0 - 成功
1 - 失败| +```json +{ + "fun": "fEvtClearKpBindingInfo", + "dataTag":"1", + "data": { + "state": "0" + } +} +``` +## 签到 +### 随时签到 +#### 方法 +##### rtStartKpSignIn +- **主题**:/client/\${baseSN}/send +- **功能描述**:启动随时签到绑定 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传递参数的对象| +|+mode|int|-|是|签到模式
2-PIN码签到,输入pin码后由应用程序决定是否授权| +```json +{ + "fun": "rtStartKpSignIn", + "dataTag":"1", + "data":{ + "mode":2 + } +} +``` +##### 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 + } +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtKpSignIn +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘提交签到信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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 + } + ] +} +``` +##### fEvtKpLoginAllowed +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘授权状态 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+keySn|string||是|键盘SN| +|+state|string||是|0-执行成功
1-执行失败| +```json +{ + "fun": "fEvtKpLoginAllowed", + "dataTag":"1", + "data": { + "keySn":"1479824643", + "state":"0" + } +} +``` +## 按键反馈 +### 判断题 +#### 方法 +##### startQATrueFalse +- **主题**:/client/\${baseSN}/send +- **功能描述**:启动判断题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| +|+mode|int||是|1 - True/False 对/错
2 - Yes/No 是/否
3 - √/×| +|+allowModify|int||是|0 - 不允许修改
1 - 允许修改| +|+tip|string||否|提示的标题,长度不超过16字符| +```json +{ + "fun": "startQATrueFalse", + "dataTag":"1", + "data":{ + "keySns":[], + "mode":1, + "allowModify":1, + "tip":"请判断对错" + } +} +``` +##### stopQATrueFalse +- **主题**:/client/\${baseSN}/send +- **功能描述**:停止判断题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +```json +{ + "fun": "stopQATrueFalse", + "dataTag":"1" +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtQATrueFalse +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘提交答题信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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 + } + ] +} +``` +### 选择题 +#### 方法 +##### startQAChoice +- **主题**:/client/\${baseSN}/send +- **功能描述**:启动选择题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| +|+mode|int||是|显示模式
1:显示字母(默认值)
2:显示数字 | +|+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字符| +```json +{ + "fun": "startQAChoice", + "dataTag":"1", + "data":{ + "keySns":[], + "mode": 1, + "lessMode": 0, + "options": 4, + "optionalN": 1, + "allowModify":1, + "tip":"请选择" + } +} +``` +##### stopQAChoice +- **主题**:/client/\${baseSN}/send +- **功能描述**:停止选择题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +```json +{ + "fun": "stopQAChoice", + "dataTag":"1" +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtQAChoice +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘提交答题信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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 + }] +} +``` +### 数字题 +#### 方法 +##### startQANum +- **主题**:/client/\${baseSN}/send +- **功能描述**:启动数字题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| +|+mode|int||是|模式
0:无规则 (S6最多16位,T2最多14位)
1:带小数位上下限(T2不支持)| +|+digits|int||是|小数位数,范围0-2,mode=1时有效 +|+numMin|int||是|可输入下限,mode=1有效,范围0-100| +|+numMax|int||是|可输入上限,mode=1有效,范围0-100| +|+allowModify|int||是|修改模式
0 - 不允许修改
1 - 允许修改| +|+tip|string||否|提示的标题,长度不超过16字符| +```json +{ + "fun": "startQANum", + "dataTag":"1", + "data":{ + "keySns":[], + "mode": 1, + "digits": 1, + "numMin": 0, + "numMax": 100, + "allowModify":1, + "tip":"请输入数字" + } +} +``` +##### stopQANum +- **主题**:/client/\${baseSN}/send +- **功能描述**:停止数字题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +```json +{ + "fun": "stopQANum", + "dataTag":"1" +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtQANum +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘提交答题信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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 + } +} +``` +### 抢答题 +#### 方法 +##### startQAQuicker +- **主题**:/client/\${baseSN}/send +- **功能描述**:启动抢答题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| +|+mode|int||是|模式
0:普通抢答| +|+allowModify|int||是|修改模式
0 - 不允许修改
1 - 允许修改| +|+tip|string||否|提示的标题,长度不超过16字符| +```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" +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtQAQuicker +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘提交答题信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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 + }] +} +``` +## 在线测验 +### 标准测验 +#### 方法 +##### startKpExam +- **主题**:/client/\${baseSN}/send +- **功能描述**:启动标准测验 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+examNo|int||是|0-9999
=0,新的测验
>0时,与上次启动卷号一致继续测验,不一致进入新的测验| +|+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||是| 题目数量 | +```json +//自定义题号 +{ + "fun": "startKpExam", + "dataTag":"1", + "data":{ + "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-", + "quesType": 2, + "option": 5, + "startNo": 2, + "count":2 + }, { + //题号3-1和3-2共两道数字题 + "symbol": "3-", + "quesType": 3, + "startNo": 1, + "count":2 + }, { + //题号4和5 ,判断题 + "symbol": "", + "quesType": 4, + "startNo": 4, + "count":2 + }] + } +} + +//显示Q开头 +{ + "fun": "startKpExam", + "dataTag":"1", + "data":{ + "mode": 1, + "examNo": 1, + "questions": [{ + //Q1-Q20,单选题 + "symbol": "", + "quesType": 1, + "startNo": 1, + "count":20 + }] + } +} + +//显示题开头 +{ + "fun": "startKpExam", + "dataTag":"1", + "data":{ + "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" +} +``` +##### rtKpAllowEdited +- **主题**:/client/\${baseSN}/send +- **功能描述**:键盘键盘后,允许键盘修改答案 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| +```json +{ + "fun": "rtKpAllowEdited", + "dataTag":"1", + "data":{ + "keySns":["1234567890","1234567891"] + } +} +``` +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtKpExam +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘提交答题信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|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 + } + ] +} +``` +##### fEvtFinalSubmit +- **主题**:/basestation/\${baseSN}/receive +- **功能描述**:返回键盘手动交卷标识 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象数组| +|++keySn|string||是|键盘SN| +|++keyValue|string||是|0 - 未提交(修改键盘运行提交时上报)
1 - 已交卷| +|++keyTime|double||是|提交时间,从启动开始计算,单位秒| +```json +{ + "fun": "fEvtFinalSubmit", + "dataTag":"1", + "data": [{ + "keySn": "1234567890", + "keyValue":"1", + "keyTime":3.2 + }] +} +``` \ No newline at end of file