通讯协议-B200W-MQTT协议[内部].md 111 KB
table { width: 100%; /* 或者具体的像素值,例如:1200px */ table-layout: fixed; /* 保持列宽固定 */ } th, td { word-wrap: break-word; /* 允许文本换行 */ } .delline{ text-decoration:line-through; } .yellowFill{ background-color: yellow; }

[TOC]

SunVote B200W_MQTT 接口协议

功能说明

主题说明

\${baseSN}为指定的基站的SN编码,不能为空,接收基站反馈数据需要订阅对应基站SN的接收主题。

发布的主题

应用程序发布的主题,基站订阅 /client/\${baseSN}/send /client/multiBase/send

内部应用发布的主题,基站订阅 /manage/\${baseSN}/send

订阅的主题

应用程序订阅的主题,基站发布 /basestation/\${baseSN}/receive /basestation/multiBase/receive

内部应用订阅的主题,基站发布 /manage/\${baseSN}/receive

指令说明

指令功能标识 说明 约束
get 待机状态下获取参数属性状态及数据 待机状态
set 待机状态下设置参数属性状态及数据 待机状态
start 运行一个单进程业务实例(函数) 待机状态
stop 停止一个单进程业务实例(函数) 待机状态
rtXXX 在线状态下可实时执行方法及函数

事件说明

事件标识 说明 约束
sEvtXXX 系统事件 自动返回
fEvtXXX 指令事件 调用对应指令后返回

数据格式约定

  • 数据格式统一为Json格式,MQTT发送接收消息编码统一为UTF-8
  • Json通用格式如下:
  {
    "fun":"xxx", 
    "dataTag":"xxx", 
    "data":{    
       //内容
    }
  }
参数 说明 约束
fun 指令或事件名称
dataTag 数据标签,用于对应收发数据 长度不超过4,可为0-9a-zA-Z的组合
data 数据内容 对象或者数组,可为空

注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式

功能速查一览表

公共方法

可以在多种业务中调用的通用方法 |功能归类|功能|API指令|指令/系统事件| |---|---|---|---| |停止投票|可停止通过调用startXXX启动的答题业务|stopKpVote|sEvtStateCode||

公共事件

无需调用指令,自动返回的事件 |功能归类|功能|API指令|指令/系统事件| |---|---|---|---| |公共事件|指令接收状态|-|sEvtStateCode| |公共事件|基站连接状态变化|-|sEvtBsConnectState| |公共事件|基站信道冲突|-|sEvtBsChannelConflict| |公共事件|键盘上线通知|-|sEvtBsKpOnlineMsg| |公共事件|键盘刷卡事件|-|sEvtBsNfcResults| |公共事件|键盘待机实时按键反馈|-|sEvtKpRtFeedback| |公共事件|键盘举手键实时按键反馈|-|sEvtKpHandUp|

基站管理

功能归类 功能 API指令 指令/系统事件
基站连接 - 获取在线基站 主动获取在线基站信息
不确定基站SN时
getBsOnlineState fEvtBsOnlineState
基站连接 - 主动获取状态 主动获取基站连接状态 getBsConnectState sEvtBsConnectState
基站连接 - 自动获取状态 基站连接变化系统通知 - sEvtBsConnectState
基站授时 对基站授时用于校准时间 timeSync sEvtStateCode
键盘上线通知 单个键盘上线系统通知 - sEvtBsKpOnlineMsg
识别设置 - 出厂编码 设置基站出厂编码(内) setBsSN fEvtBsSN
识别设置 - 基站型号 读取基站型号 getBsModel fEvtBsModel
识别设置 - 固件版本 获取基站固件版本 getBsFWVersion fEvtBsFWVersion
识别设置 - 品牌识别码 获取基站品牌识别码(内) getBsBIC fEvtBsBIC
设置基站品牌识别码(内) setBsBIC fEvtBsBIC
组网设置 - 组网模式 获取基站组网模式 getBsNetworkMode fEvtBsNetworkMode
设置基站组网模式
(前期不开放,后期需要)
setBsNetworkMode fEvtBsNetworkMode
组网设置 - 配对码 获取基站配对码 getBsPairCode fEvtBsPairCode
设置基站配对码(内) setBsPairCode fEvtBsPairCode
组网设置 - 刷卡配对状态 获取刷卡配对状态 getBsNfcLogin fEvtBsNfcLogin
设置刷卡配对状态 setBsNfcLogin fEvtBsNfcLogin
组网设置 - 工作信道 获取基站工作信道 getBsChannel fEvtBsChannel
设置基站工作信道 setBsChannel fEvtBsChannel
登录设置 - 登录名称 获取基站登录名称 getBsSSID fEvtBsSSID
设置基站登录名称 setBsSSID fEvtBsSSID
登录设置 - 登录密码 获取基站登录密码 getBsLoginPwd fEvtBsLoginPwd
设置基站登录密码 setBsLoginPwd fEvtBsLoginPwd
登录设置 - 基站登录状态 获取基站登录状态 getBsLoginState fEvtBsLoginState
设置基站登录状态 setBsLoginState fEvtBsLoginState
键盘统一设置 - 键盘语言 获取键盘语言 getBsKpLanguage fEvtBsKpLanguage
设置键盘语言 setBsKpLanguage fEvtBsKpLanguage
键盘统一设置 - 状态语模式 获取状态语设置状态 getBsKpStbMsgMode fEvtBsKpStbMsgMode
设置状态语工作状态 setBsKpStbMsgMode fEvtBsKpStbMsgMode
键盘统一设置 - 登录菜单 获取键盘登录菜单状态 getBsKpLoginMenu fEvtBsKpLoginMenu
设置键盘登录菜单状态 setBsKpLoginMenu fEvtBsKpLoginMenu
键盘统一设置 - 键盘休眠 设置键盘休眠等级(内) setBsKpSleepLevel fEvtBsKpSleepLevel
获取键盘休眠等级(内) getBsKpSleepLevel fEvtBsKpSleepLevel
设置键盘暂停休眠状态(内) setBsKpPauseSleep fEvtBsKpPauseSleep
获取键盘暂停休眠状态(内) getBsKpPauseSleep fEvtBsKpPauseSleep
配对模式 - 快速配对 启动基站快速配对 startBsFastPair sEvtStateCode
sEvtBsKpOnlineMsg
停止基站快速配对 stopBsFastPair sEvtStateCode
白名单模式 - 白名单管理 获取白名单 getBsWhitelist fEvtBsWhitelist
设置白名单 setBsWhitelist sEvtStateCode
fEvtSetBsWhitelist
清空白名单 clearBsWhitelist sEvtStateCode
fEvtBsWhitelist
增加白名单 addBsWhitelist sEvtStateCode
fEvtAddBsWhitelist
fEvtBsWhitelist
删除白名单 delBsWhitelist sEvtStateCode
fEvtDelBsWhitelist
fEvtBsWhitelist
基站加密 - 软件狗 获取基站软件狗 getBsSoftwareKey fEvtBsSoftwareKey
设置基站软件狗 setBsSoftwareKey fEvtBsSoftwareKey
网络设置 - TCP/IP参数 获取TCP/IP参数 getBsTcpipParams fEvtBsTcpipParams
设置TCP/IP参数 setBsTcpipParams fEvtBsTcpipParams
网络设置 - MQTT参数 获取MQTT参数 getBsMqttParams fEvtBsMqttParams
设置MQTT参数 setBsMqttParams fEvtBsMqttParams
基站维护 获取基站日志信息(内) getBsLogInfo sEvtStateCode
fEvtBsLogInfo
清空基站日志(内) clearBsLogInfo sEvtStateCode
基站软复位 resetBsSystem sEvtStateCode
sEvtBsConnectState
基站断电复位 resetBsPower sEvtStateCode
sEvtBsConnectState
基站自检(内) startBsSelfCheck sEvtStateCode
fEvtBsSelfCheck
基站升级 开启基站升级(内) startBsUpdate sEvtStateCode
fEvtBsUpateState
fEvtBsUpdateProgress
下载字库(内) downloadFontLib sEvtStateCode
fEvtBsFontLibState
fEvtBsFontLibProgress

键盘管理

功能归类 功能 API指令 指令事件
识别设置 - 出厂编码(内) 设置键盘出厂编码(内) setKpSN fEvtSetKpSN
识别设置 - 键盘编号(内) 设置键盘编号(内) setKpID fEvtSetKpID
识别设置 - 键盘信息(内) 开始获取键盘信息(内) startGetKpInfo sEvtStateCode
fEvtKpInfo
停止获取键盘信息(内) stopGetKpInfo sEvtStateCode
交互设置 - 用户内置状态语 设置用户内置状态语 setKpUserStbMsg fEvtKpUserStbMsg
交互设置 - 用户实时提示反馈信息 实时设置提示反馈信息 rtSetKpUserPrompt sEvtStateCode
fEvtSetKpUserPrompt
在线状态获取 开启扫描在线键盘 startGetKpOnline sEvtStateCode
fEvtKpOnlineMsg
停止扫描在线键盘 stopGetKpOnline sEvtStateCode
维护功能 - 遥控功能 遥控键盘休眠 remoteKpSleep sEvtStateCode
维护功能 - 键盘升级 启动键盘无线升级(内) startKpFWUpdate sEvtStateCode
fEvtKpFWUpdateState
fEvtKpUpdateProgress
sEvtBsKpOnlineMsg
停止键盘无线升级(内) stopKpFWUpdate sEvtStateCode
fEvtKpFWUpdateState

绑定

功能归类 功能 API指令 指令事件
无线绑定 设置绑定信息到键盘 rtSetKpBindingInfo sEvtStateCode
fEvtKpBindingInfo
清除键盘绑定信息 clearKpBindingInfo sEvtStateCode
fEvtClearKpBindingInfo

签到

功能归类 功能 API指令 指令事件
同步签到 启动同步签到 startKpSignIn sEvtStateCode
fEvtKpSignIn
停止同步签到 stopKpVote sEvtStateCode
随时签到 启动随时签到 rtStartKpSignIn sEvtStateCode
fEvtKpSignIn
停止随时签到 rtStopKpSignIn sEvtStateCode
实时PIN签到授权 rtSetKpLoginAllowed sEvtStateCode
fEvtKpLoginAllowed

按键反馈

功能归类 功能 API指令 指令事件
判断题 启动判断题答题 startQATrueFalse sEvtStateCode
fEvtQATrueFalse
停止判断题答题 stopKpVote sEvtStateCode
选择题 启动选择题答题 startQAChoice sEvtStateCode
fEvtQAChoice
停止选择题答题 stopKpVote sEvtStateCode
数字题 启动数字题答题 startQANum sEvtStateCode
fEvtQANum
停止数字题答题 stopKpVote sEvtStateCode
抢答题 启动抢答题答题 startQAQuicker sEvtStateCode
fEvtQAQuicker
停止抢答题答题 stopKpVote sEvtStateCode
待机实时反馈 设置待机实时反馈状态 setKpStbResponse fEvtKpStbResponse
sEvtKpRtFeedback
sEvtKpHandUp
设置待机实时反馈状态 getKpStbResponse fEvtKpStbResponse

在线测验

功能归类 功能 API指令 指令事件
标准测验 启动标准测验 startKpExam sEvtStateCode
fEvtKpExam
fEvtFinalSubmit
停止标准测验 stopKpVote sEvtStateCode
刷新作答数据 rtGetKpExamData sEvtStateCode
fEvtKpExam
允许键盘提交后退回修改 rtAllowEdited sEvtStateCode
fEvtFinalSubmit
多科测验 启动多科测验 startKpMultiExam sEvtStateCode
fEvtKpExam
fEvtFinalSubmit
停止标准测验 stopKpVote sEvtStateCode
自主录分 启动自主录分 startKpScoreInput sEvtStateCode
fEvtKpScore
fEvtFinalSubmit
停止自主录分 stopKpVote sEvtStateCode

公共方法

stopKpVote

  • 主题: /client/\${baseSN}/send
  • 功能描述:通用停止键盘答题方法,可以停止如同步签到、按键反馈、在线测验中调用startXXX方法启动的业务
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 事件类型
dataTag string 数据包标识,不需要时可传空字符串
  • 示例代码 json { "fun":"stopKpVote", "dataTag":"1" }

公共事件

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
+cardType int 刷卡的键盘类型
1-NFC类型
2-M1类型
+value int 刷卡的状态
1-成功
2-失败
  • 示例代码 json { "fun":"sEvtBsNfcResults", "dataTag":"1", //不需要时可传空字符串 "data":{ "keySn":"1234567890", "cardType":1, "value":1 } }

sEvtBsKpOnlineMsg

  • 主题: /basestation/\${baseSN}/receive
  • 功能描述:键盘上线通知,主动上报,键盘升级成功后也会上报
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 事件名称
dataTag string - 数据包标识
data object - 传送参数的对象
+keySn string 键盘SN
+version string 键盘固件版本
+model int 键盘型号
  • 示例代码 json { "fun":"sEvtBsKpOnlineMsg", "dataTag":"1", "data":{ "keySn":"1234567890", "version":"1.0.0", "model":67 } } ### sEvtKpRtFeedback
  • 主题: /basestation/\${baseSN}/receive
  • 功能描述:开启键盘实时反馈后,键盘按键时上报
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 事件名称
dataTag string - 数据包标识
data array - 传送参数的对象数组
++keySn string 键盘SN
++keyValue string 键盘提交的按键值
++voltage double 键盘电量
++retryCount int 键盘提交数据的重发次数
  • 示例代码 json { "fun":"sEvtKpRtFeedback", "dataTag":"1", "data":[{ "keySn":"1234567890", "keyValue":"A", "voltage":2.6, "retryCount":1 }] } ### sEvtKpHandUp
  • 主题: /basestation/\${baseSN}/receive
  • 功能描述:开启键盘举手功能后,键盘按举手键时上报
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 事件名称
dataTag string - 数据包标识
data object - 传送参数的对象
+keySn string 举手的键盘SN
  • 示例代码 json { "fun":"sEvtKpHandUp", "dataTag":"1", "data":{ "keySn":"1234567890" } } ### sEvtStateCode
  • 主题: /basestation/\${baseSN}/receive
  • 功能描述:返回基站接收指令状态信息
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 事件名称
dataTag string - 数据包标识
data object - 传送参数的对象
+funName string 指令名称
+code string 状态码,含义见下表
状态码 说明
0 指令收取成功
10001 不能正确解析的JSON数据
10002 解析JSON错误
10003 下发数据包超长
20001 基站未连接
20002 功能不支持
20003 基站SN格式不正确
20004 参数错误
20005 dataTag错误
20006 键盘SN错误
20007 tip参数错误
20008 value参数错误
30001 基站在答题中
30002 基站忙(内存不足)
30003 基站执行失败
40001 升级功能只能支持一个基站
50001 此功能必须指定基站
60001 此功能必须指定键盘SN
70001 没有字库
  • 示例代码 json { "fun":"sEvtStateCode", "dataTag":"1", "data":{ "funName":"startKpSignIn", "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 参见基站连接变化系统通知
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 返回指令的接收状态

识别设置

方法

setBsSN
  • 主题:/manage/\${baseSN}/send
  • 功能描述:设置基站的SN,需预先订阅新SN的主题,以获取事件返回
  • 参数说明
参数名 类型 限制 是否必填 说明
fun string - 指令名称
dataTag string - 数据包标识
data object - 传送参数的对象
+value string 数字 设置的基站SN,长度为10位数字
stopKpVote

停止判断题答题

事件

sEvtStateCode

发送指令后返回接收状态

fEvtQATrueFalse
  • 主题:/basestation/\${baseSN}/receive
  • 功能描述:返回键盘提交答题信息
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data array - 传送参数的对象数组
++keySn string 键盘SN
++keyValue string 键盘提交的按键值
1-对
2-错
++keyTime double 答题时间,从启动开始计算,单位秒
++voltage double 键盘电量
++retryCount int 键盘提交数据的重发次数
  • 示例代码 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数组,空数组表示全部在线键盘
+count int 题目数量,1-16,>1多题快答
optionalN >1时无效
+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字符
+simParams object 内部模拟测试参数设置对象
++answer string 预设提交的按键值
  • 示例代码 json { "fun":"startQAChoice", "dataTag":"1", "data":{ "keySns":[], "mode": 1, "count":1, "lessMode": 0, "options": 4, "optionalN": 1, "allowModify":1, "tip":"请选择", "simParams":{ "answer":"A" } } } ##### stopKpVote 停止选择题答题

事件

sEvtStateCode

发送指令后返回接收状态

fEvtQAChoice
  • 主题:/basestation/\${baseSN}/receive
  • 功能描述:返回键盘提交答题信息
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data array - 传送参数的对象数组
++keySn string 键盘SN
++keyValue string 键盘提交的按键值
++keyTime double 答题时间,从启动开始计算,单位秒
++voltage double 键盘电量
++retryCount int 键盘提交数据的重发次数
  • 示例代码 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字符
+simParams object 内部模拟测试参数设置对象
++answer string 预设提交的按键值
  • 示例代码 json { "fun":"startQANum", "dataTag":"1", "data":{ "keySns":[], "mode": 1, "digits": 1, "numMin": 0, "numMax": 100, "allowModify":1, "tip":"请输入数字", "simParams":{ "answer":"10" } } } ##### stopKpVote 停止数字题答题

事件

sEvtStateCode

发送指令后返回接收状态

fEvtQANum
  • 主题:/basestation/\${baseSN}/receive
  • 功能描述:返回键盘提交答题信息
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data array - 传送参数的对象数组
++keySn string 键盘SN
++keyValue string 键盘提交的按键值
++keyTime double 答题时间,从启动开始计算,单位秒
++voltage double 键盘电量
++retryCount int 键盘提交数据的重发次数
  • 示例代码 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字符
+simParams object 内部模拟测试参数设置对象
++answer string 预设提交的按键值
  • 示例代码 json { "fun":"startQAQuicker", "dataTag":"1", "data":{ "keySns":[], "mode": 0, "allowModify":1, "tip":"请按键抢答", "simParams":{ "answer":"1" } } }
stopKpVote

停止抢答

事件

sEvtStateCode

发送指令后返回接收状态

fEvtQAQuicker
  • 主题:/basestation/\${baseSN}/receive
  • 功能描述:返回键盘提交答题信息
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data array - 传送参数的对象数组
++keySn string 键盘SN
++keyValue string 键盘提交的按键值
++keyTime double 答题时间,从启动开始计算,单位秒
++voltage double 键盘电量
++retryCount int 键盘提交数据的重发次数
  • 示例代码 json { "fun":"fEvtQAQuicker", "dataTag":"1", "data": [{ "keySn": "1234567890", "keyValue":"1", "keyTime":3.2 }] } ### 待机实时反馈 #### 方法 ##### setKpStbResponse
  • 主题:/client/\${baseSN}/send
  • 功能描述:启动待机实时反馈
  • 参数说明
参数名 类型 限制 是否必填 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data object - 传送参数的对象
+state int 启用待机实时反馈
0-不启用
1-启用
+mode int 启动待机反馈类型,state=1时有效
0-举手
1-指定按键反馈
+keys int 有效按键数量,state=1且mode=1时有效, 范围1-10
  • 示例代码 json //启用举手反馈 { "fun":"setKpStbResponse", "dataTag":"1", "data":{ "state":1, "mode":0 } } //启用待机按键反馈 { "fun":"setKpStbResponse", "dataTag":"1", "data":{ "state":1, "mode":1, "keys":4 } } //关闭待机按键反馈 { "fun":"setKpStbResponse", "dataTag":"1", "data":{ "state":0 } }
getKpStbResponse
  • 主题:/client/\${baseSN}/send
  • 功能描述:获取实时反馈是否打开
  • 参数说明
参数名 类型 限制 是否必填 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
  • 示例代码 json //启用举手反馈 { "fun":"getKpStbResponse", "dataTag":"1" }

事件

fEvtKpStbResponse

  • 主题:/basestation/\${baseSN}/receive
  • 功能描述:返回当前待机按键反馈开启状态
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data array - 传送参数的对象数组
+state int 启用待机实时反馈
0-未启用
1-启用
+mode int 当前启动待机反馈类型,state=1时返回
0-举手
1-指定按键反馈
  • 示例代码 ```json //当前启用待机实时反馈,模式为指定按键反馈 { "fun":"fEvtKpStbResponse", "dataTag":"1", "data": { "state": 1, "mode": 1 } }

//当前未启用待机反馈 { "fun":"fEvtKpStbResponse", "dataTag":"1", "data": { "state": 0 } }


##### [sEvtKpRtFeedback](#sevtkprtfeedback)
返回待机时键盘返回的按键值

##### [sEvtKpHandup](#sevtkphandup)
启动待机按键反馈类型为举手提问时返回此事件

## 在线测验
### 标准测验
#### 方法
##### startKpExam
- **主题**:/client/\${baseSN}/send
- **功能描述**:启动标准测验
- **参数说明**

|参数名|类型|限制|是否必填|说明|
|---|---|---|---|---|
|fun|string|-|是|指令名称|
|dataTag|string|-|否|数据包标识,可为空字符串|
|data|object|-|是|传送参数的对象|
|+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
|+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
|+questions|array||是|题目详情|
|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级大题<br><font color="red">最多为三级题号,即最多可以设为x-x-</font>|
|++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
|++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时  默认4;<br>范围:1-10。|
|++startNo | int||是| 起始题号 |
|++count | int||是| 题目数量 |
|+simParams|object||否|内部模拟测试参数设置对象|
|++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|

- **示例代码**

**常用样例**:一级题型 + 显示“Q”开头, 单一题型,全单选题共10题
```json
{
  "fun":"startKpExam",
  "dataTag":"1",
  "data":{
    "mode": 1,
    "examNo": 1,
    "questions": [{          
        "quesType": 1,  //单选题
        "startNo": 1,  //题号从1开始
        "count":10  //连续10题
      }],
      "simParams":{
        "answer":["A","ABCD","10","1"]
      }
  }
}

指令样例:一级题型 + 不显示开头,总题数6题

{
  "fun":"startKpExam",
  "dataTag":"1",
  "data":{
    "mode": 0,
    "examNo": 1,
    //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题
    "questions": [{ 
        "quesType": 1,  //单选题
        "startNo": 1,  //题号从1开始
        "count":2  //连续2
      },{
        "quesType": 2,  //多选题
        "startNo": 3,  //题号从3开始
        "count":2,  //连续2题
        "option":5   
      },{
        "quesType": 1,  //数字题
        "startNo": 5,  //题号从5开始
        "count":1  //连续1
      },{
        "quesType": 4,  //判断题
        "startNo": 6,  //题号从6开始
        "count":1  //连续1
      }],
      "simParams":{
        "answer":["A","ABCD","10","1"]
      }
  }
}

指令样例:二级题型 + 不显示开头,总题数6题

{
  "fun":"startKpExam",
  "dataTag":"1",
  "data":{
    "mode": 0,
    "examNo": 1,
    //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题
    "questions": [{        
        "symbol": "1-",  
        "quesType": 1,  //单选题
        "startNo": 1,  //题号从1-1开始
        "count":2  //连续2
      },{
        "symbol": "2-", 
        "quesType": 2,  //多选题
        "startNo": 1,  //题号从2-1开始
        "count":2,  //连续2题
        "option":5 
      },{
        "symbol": "3-",
        "quesType": 3,  //数字题
        "startNo": 1,  //题号从3-1开始
        "count":1  //连续1
      },{
        "symbol": "4-",
        "quesType": 4,  //判断题
        "startNo": 1,  //题号从4-1开始
        "count":1  //连续1
      }],
      "simParams":{
        "answer":["A","ABCD","10","1"]
      }
  }
}

指令样例:三级题型 + 不显示开头,总题数6题

{
  "fun":"startKpExam",
  "dataTag":"1",
  "data":{
    "mode": 0,
    "examNo": 1,
    //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题
    "questions": [{        
        "symbol": "1-1-",  
        "quesType": 1,  //单选题
        "startNo": 1,  //题号从1-1-1开始
        "count":2  //连续2
      },{
        "symbol": "1-2-", 
        "quesType": 2,  //多选题
        "startNo": 1,  //题号从1-2-1开始
        "count":2,  //连续2题
        "option":5 
      },{
        "symbol": "2-1-",
        "quesType": 3,  //数字题
        "startNo": 1,  //题号从2-1-1开始
        "count":1  //连续1
      },{
        "symbol": "3-1-",
        "quesType": 4,  //判断题
        "startNo": 1,  //题号从3-1-1开始
        "count":1  //连续1
      }],
      "simParams":{
        "answer":["A","ABCD","10","1"]
      }
  }
}

指令样例:一级题型 + 显示“Q”开头, 共6题

{
  "fun":"startKpExam",
  "dataTag":"1",
  "data":{
    "mode": 1,
    "examNo": 1,
    "questions": [{  
        "quesType": 1,  //单选题
        "startNo": 1,  //题号从1开始
        "count":2  //连续2
      },{
        "quesType": 2,  //多选题
        "startNo": 3,  //题号从3开始
        "count":2,  //连续2题
        "option":5   
      },{
        "quesType": 1,  //数字题
        "startNo": 5,  //题号从5开始
        "count":1  //连续1
      },{
        "quesType": 4,  //判断题
        "startNo": 6,  //题号从6开始
        "count":1  //连续1
      }],
      "simParams":{
        "answer":["A","ABCD","10","1"]
      }
  }
}

指令样例:一级题型 + 显示“题”开头, 共6题

{
  "fun":"startKpExam",
  "dataTag":"1",
  "data":{
    "mode": 2,
    "examNo": 1,
    "questions": [{ 
        "quesType": 1,  //单选题
        "startNo": 1,  //题号从1开始
        "count":2  //连续2
      },{
        "quesType": 2,  //多选题
        "startNo": 3,  //题号从3开始
        "count":2,  //连续2题
        "option":5   
      },{
        "quesType": 1,  //数字题
        "startNo": 5,  //题号从5开始
        "count":1  //连续1
      },{
        "quesType": 4,  //判断题
        "startNo": 6,  //题号从6开始
        "count":1  //连续1
      }],
      "simParams":{
        "answer":["A","ABCD","10","1"]
      }
  }
}
stopKpVote

停止在线测验

rtGetKpExamData
  • 主题:/client/\${baseSN}/send
  • 功能描述:刷新作答数据
  • 参数说明
参数名 类型 限制 是否必填 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data object - 传送参数的对象
+keySns array 指定的键盘SN数组,空数组表示全部在线键盘
  • 示例代码 json { "fun":"rtGetKpExamData", "dataTag":"1", "data":{ "keySns":["1234567890","1234567891"] } } ##### rtKpAllowEdited
  • 主题:/client/\${baseSN}/send
  • 功能描述:键盘提交后,允许键盘修改答案
  • 参数说明
参数名 类型 限制 是否必填 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data object - 传送参数的对象
+keySns array 指定的键盘SN数组,空数组表示全部在线键盘
  • 示例代码 json { "fun":"rtKpAllowEdited", "dataTag":"1", "data":{ "keySns":["1234567890","1234567891"] } } #### 事件 ##### 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 答题时间,从启动开始计算,单位秒
++voltage double 键盘电量
++retryCount int 键盘提交数据的重发次数
  • 示例代码 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 array - 传送参数的对象数组
++keySn string 键盘SN
++keyValue string 0 - 未提交(提交完成后,允许键盘修改答案时上报)
1 - 已交卷
++keyTime double 提交时间,从启动开始计算,单位秒
  • 示例代码 json { "fun":"fEvtFinalSubmit", "dataTag":"1", "data": [{ "keySn": "1234567890", "keyValue":"1", "keyTime":3.2 }] }

多科测验

方法

startKpMultiExam
  • 主题:/client/\${baseSN}/send
  • 功能描述:启动多科测验
  • 参数说明
参数名 类型 限制 是否必填 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data object - 传送参数的对象
+examNo int 0-9999
=0,新的测验
>0时,与上次启动卷号一致继续测验,不一致进入新的测验
+mode int 显示模式
0-不显示开头
1-显示“Q”开头
2-显示“题”开头
+questions array 题目详情
++subject int 科目序号,1-9,对应键盘中内置的科目1-9
键盘答题时可选择科目切换答题
++symbol string 题号前缀,分级标识为-,可为空,为空表示1级题目
多科测验题目编号最多只能两级(即symbol可设置为空或x-),超出无效
++quesType int 题目类型
1:单选
2:多选(排序)
3:数字
4:判断
++option int 选项数目
quesType = 1 有效。
quesType = 2 有效。
此项缺省时 默认4;
范围:1-10。
++startNo int 起始题号
++count int 题目数量
+simParams object 内部模拟测试参数设置对象
++answer array 预设提交的按键值
格式为"单选题答案,多选题答案;
数字题答案;判断题答案(1对2错)"
如["A","ABCD","10","1"]
  • 示例代码 ```json //自定义题号 { "fun":"startKpMultiExam", "dataTag":"1", "data":{ "mode": 0, "examNo": 0, "questions": [{ "subject":1, //科目1 //题号1-1 到1-10 共10题单选 "symbol": "1-", "quesType": 1, "startNo": 1, "count":10 }, { "subject":2, //科目2 //题号2-2和2-3共两题 多选题,5个选项 "symbol": "2-", "quesType": 2, "option": 5, "startNo": 2, "count":2 }, { "subject":3, //科目3 //题号3-1和3-2共两道数字题 "symbol": "3-", "quesType": 3, "startNo": 1, "count":2 }, { "subject":1, //科目1 //题号4和5 ,判断题 "quesType": 4, "startNo": 4, "count":2 }], "simParams":{ "answer":["A","ABCD","10","1"] } } }

//显示Q开头 { "fun":"startKpMultiExam", "dataTag":"1", "data":{ "mode": 1, "examNo": 0, "questions": [{ "subject":1, //Q1-Q20,单选题 "quesType": 1, "startNo": 1, "count":20 }], "simParams":{ "answer":["A","","",""] } } }

//显示题开头 { "fun":"startKpMultiExam", "dataTag":"1", "data":{ "mode": 2, "examNo": 0, "questions": [{ "subject":1, //题1-题20,单选题 "quesType": 1, "startNo": 1, "count":20 }], "simParams":{ "answer":["A","","",""] } } }


<!-- ##### stopKpMultiExam
- **主题**:/client/\${baseSN}/send
- **功能描述**:停止多科测验
- **参数说明**

|参数名|类型|限制|是否必填|说明|
|---|---|---|---|---|
|fun|string|-|是|指令名称|
|dataTag|string|-|否|数据包标识,可为空字符串|

- **示例代码**
```json
{
  "fun":"stopKpMultiExam",
  "dataTag":"1"
}
``` -->
##### [stopKpVote](#stopkpvote)
停止多科测验

#### 事件
##### [sEvtStateCode](#sevtstatecode)
发送指令后返回接收状态

##### [fEvtKpExam](#fevtkpexam)
返回测验中键盘提交答题数据

##### [fEvtFinalSubmit](#fevtfinalsubmit)
返回键盘手动交卷标识

### 自主录分
#### 方法
##### startKpScoreInput
- **主题**:/client/\${baseSN}/send
- **功能描述**:启动标准测验
- **参数说明**

|参数名|类型|限制|是否必填|说明|
|---|---|---|---|---|
|fun|string|-|是|指令名称|
|dataTag|string|-|否|数据包标识,可为空字符串|
|data|object|-|是|传送参数的对象|
|+examNo|int||是|0-9999<br>=0,新的录分<br>>0时,与上次启动卷号一致继续录分,不一致进入新的录分|
|+mode|int||是|录分模式<br>0-自主录分<br>1-交叉录分,需先输入录分的人员标识|
|+questions|array||是|题目详情|
|++max |int||是|可输入的最大值,<=100|
|++digits|int||是|可输入的小数位数,范围0-2|
|++startNo | int||是| 起始题号|
|++count | int||是| 题目数量|

- **示例代码**
```json
{
  "fun":"startKpScoreInput",
  "dataTag":"1",
  "data":{
    "mode": 0,
    "examNo": 0,
    "questions": [{
      //题号1 到 2 共2题,单题满分10分
      "max":10,
      "digits":1,
      "startNo": 1,
      "count":2
    }, {
      //题号3到6 共4道题,单题满分5
      "max":5,
      "digits":0,
      "startNo": 3,
      "count":4
    }]
  }
}
stopKpVote

停止自主录分

事件

sEvtStateCode

发送指令后返回接收状态

fEvtKpScore
  • 主题:/basestation/\${baseSN}/receive
  • 功能描述:返回键盘提交录分信息
  • 参数说明
参数名 类型 限制 非空 说明
fun string - 指令名称
dataTag string - 数据包标识,可为空字符串
data array - 传送参数的对象数组
++keySn string 键盘SN
++keyValue string 键盘提交的分值,1:10;2:0表示第1题提交10分,第二题提交0分
++keyTime double 录分时间,从启动录分开始计算,单位秒
++voltage double 键盘电量
++retryCount int 键盘提交数据的重发次数
  • 示例代码 json { "fun":"fEvtKpScore", "dataTag":"1", "data": [{ "keySn": "1234567890", "keyValue":"1:8;2:7.5;3:2;4:3", "keyTime":3.2 }, { "keySn": "1234567891", "keyValue":"1:10;2:0", "keyTime":3.5 } ] }