diff --git a/通讯协议-B200W-MQTT协议[内部].md b/通讯协议-B200W-MQTT协议[内部].md
index e0b85fd..6d60579 100644
--- a/通讯协议-B200W-MQTT协议[内部].md
+++ b/通讯协议-B200W-MQTT协议[内部].md
@@ -66,8 +66,6 @@
}
```
-注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式
-
|参数 |说明 |约束|
|---|---|---|
|fun| 指令或事件名称||
@@ -117,7 +115,7 @@
||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
|网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
||设置MQTT参数|[setBsMqttParams](#setbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)||
-|基站维护|获取基站日志信息|[getBsLogInfo](#getbsloginfo)|[sEvtStateCode](#sevtstatecode)
[fEvtBsLogInfo](#fevtbsloginfo)(内)|
+|基站维护|获取基站日志信息(内)|[getBsLogInfo](#getbsloginfo)|[sEvtStateCode](#sevtstatecode)
[fEvtBsLogInfo](#fevtbsloginfo)|
||基站软复位|[resetBsSystem](#resetbssystem)|[sEvtStateCode](#sevtstatecode)
[sEvtBsConnectState](#sevtbsconnectstate)|
||基站断电复位|[resetBsPower](#resetbspower)|[sEvtStateCode](#sevtstatecode)
[sEvtBsConnectState](#sevtbsconnectstate)|
|基站升级|开启基站升级(内)|[startBsUpdate](#startbsupdate)|[sEvtStateCode](#sevtstatecode)
[fEvtBsUpateState](#fevtbsupatestate)
[fEvtBsUpdateProgress](#fevtbsupdateprogress)|
@@ -164,6 +162,8 @@
||停止标准测验|[stopKpExam](#stopkpexam)|[sEvtStateCode](#sevtstatecode)|
||刷新作答数据|[rtGetKpExamData](#rtgetkpexamdata)|[fEvtKpExam](#fevtkpexam)|
||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)
[fEvtFinalSubmit](#fevtfinalsubmit)|
+|多科测验|启动多科测验|[startKpMultiExam](#startkpmultiexam)|[sEvtStateCode](#sevtstatecode)
[fEvtKpExam](#fevtkpexam)
[fEvtFinalSubmit](#fevtfinalsubmit)|
+||停止标准测验|[stopKpMultiExam](#stopkpmultiexam)|[sEvtStateCode](#sevtstatecode)|
## 公共事件
### sEvtBsConnectState
@@ -1506,7 +1506,7 @@
### 基站维护
#### 方法
##### getBsLogInfo
-- **主题**:/client/\${baseSN}/send
+- **主题**:/manage/\${baseSN}/receive
- **功能描述**:获取基站日志,用于出现故障需要排查问题时获取基站内部日志记录
- **参数说明**
@@ -1525,7 +1525,7 @@
##### resetBsSystem
- **主题**:/client/\${baseSN}/send
-- **功能描述**:软复位基站(公共主题可用,但不体现在外部版本协议中)
+- **功能描述**:软复位基站(公共主题可用,但不体现在外部版本协议中)
- **参数说明**
|参数名|类型|限制|是否必填|说明|
@@ -1543,7 +1543,7 @@
##### resetBsPower
- **主题**:/client/\${baseSN}/send
-- **功能描述**:断电复位基站(公共主题可用,但不体现在外部版本协议中)
+- **功能描述**:断电复位基站(公共主题可用,但不体现在外部版本协议中)
- **参数说明**
|参数名|类型|限制|是否必填|说明|
@@ -1562,6 +1562,7 @@
#### 事件
##### [sEvtStateCode](#sevtstatecode)
返回指令的接收状态
+注意:内部指令的接收状态需从**主题: /manage/\${baseSN}/receive** 返回
##### [sEvtBsConnectState](#sevtbsconnectstate)
复位基站后,基站重新连接成功后上报
@@ -1865,6 +1866,9 @@
|data|array|-|是|传送参数的对象数组|
|++keySn|string||是|设置提示语信息的键盘SN|
|++state|string||是|设置的提示语是否成功
0 - 成功
1 - 失败|
+
+- **示例代码**
+
```json
{
"fun":"fEvtSetKpUserPrompt",
@@ -2406,7 +2410,7 @@
"dataTag":"1",
"data": {
"keySn":"1479824643",
- "state":1
+ "state":"1"
}
}
```
@@ -2772,7 +2776,7 @@
|+examNo|int||是|0-9999
=0,新的测验
>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
|+mode|int||是|显示模式
0-不显示开头
1-显示“Q”开头
2-显示“题”开头|
|+questions|array||是|题目详情|
-|++symbol | string||是 | 题号前缀,可为空 |
+|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级大题
最多为三级题号,即最多可以设为x-x-|
|++quesType | int||是| 题目类型
1:单选
2:多选(排序)
3:数字
4:判断 |
|++option |int||是 |选项数目
quesType = 1 有效。
quesType = 2 有效。
此项缺省时 默认4;
范围:1-10。|
|++startNo | int||是| 起始题号 |
@@ -2937,7 +2941,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
|data|array|-|是|传送参数的对象数组|
|++keySn|string||是|键盘SN|
-|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B|
+|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B
注意:如启动的是多科测验,键盘提交的题目序号对应启动时下发的题目总序号,不按科目区分|
|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
- **示例代码**
@@ -2983,4 +2987,144 @@
"keyTime":3.2
}]
}
-```
\ No newline at end of file
+```
+
+### 多科测验
+#### 方法
+##### 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": 1,
+ "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 ,判断题
+ "symbol": "",
+ "quesType": 4,
+ "startNo": 4,
+ "count":2
+ }],
+ "simParams":{
+ "answer":["A","ABCD","10","1"]
+ }
+ }
+}
+
+//显示Q开头
+{
+ "fun":"startKpMultiExam",
+ "dataTag":"1",
+ "data":{
+ "mode": 1,
+ "examNo": 1,
+ "questions": [{
+ "subject":1,
+ //Q1-Q20,单选题
+ "symbol": "",
+ "quesType": 1,
+ "startNo": 1,
+ "count":20
+ }],
+ "simParams":{
+ "answer":["A","","",""]
+ }
+ }
+}
+
+//显示题开头
+{
+ "fun":"startKpMultiExam",
+ "dataTag":"1",
+ "data":{
+ "mode": 2,
+ "examNo": 1,
+ "questions": [{
+ "subject":1,
+ //题1-题20,单选题
+ "symbol": "",
+ "quesType": 1,
+ "startNo": 1,
+ "count":20
+ }],
+ "simParams":{
+ "answer":["A","","",""]
+ }
+ }
+}
+```
+
+##### stopKpMultiExam
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止多科测验
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```json
+{
+ "fun":"stopKpMultiExam",
+ "dataTag":"1"
+}
+```
+
+#### 事件
+##### [sEvtStateCode](#sevtstatecode)
+发送指令后返回接收状态
+
+##### [fEvtKpExam](#fevtkpexam)
+返回测验中键盘提交答题数据
+
+##### [fEvtFinalSubmit](#fevtfinalsubmit)
+返回键盘手动交卷标识
\ No newline at end of file
diff --git a/通讯协议-B200W-MQTT协议[外].md b/通讯协议-B200W-MQTT协议[外].md
index 7c77e5e..fc403fe 100644
--- a/通讯协议-B200W-MQTT协议[外].md
+++ b/通讯协议-B200W-MQTT协议[外].md
@@ -59,6 +59,8 @@
}
```
+注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式
+
|参数 |说明 |约束|
|---|---|---|
|fun| 指令或事件名称||
@@ -88,11 +90,17 @@
||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
|键盘统一设置 - 键盘语言|获取键盘语言|[getBsKpLanguage](#getbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|
||设置键盘语言|[setBsKpLanguage](#setbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)||
+|配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)
[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
+||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)|
+|白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)|
+||设置白名单|[setBsWhitelist](#setbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtSetBsWhitelist](#fevtsetbswhitelist)|
+||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtBsWhitelist](#fevtbswhitelist)|
+||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtAddBsWhitelist](#fevtaddbswhitelist)
[fEvtBsWhitelist](#fevtbswhitelist)|
+||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtDelBsWhitelist](#fevtdelbswhitelist)
[fEvtBsWhitelist](#fevtbswhitelist)|
|网络设置 - 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指令|指令事件|
|---|---|---|---|
@@ -108,6 +116,8 @@
### 签到
|功能归类|功能|API指令|指令事件|
|---|---|---|---|
+|同步签到|启动同步签到|[startKpSignIn](#startkpsignin)|[sEvtStateCode](#sevtstatecode)
[fEvtKpSignIn](#fevtkpsignin)|
+||停止同步签到|[stopKpSignIn](#stopkpsignin)|[sEvtStateCode](#sevtstatecode)|
|随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)
[fEvtKpSignIn](#fevtkpsignin)|
||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)|
||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)
[fEvtKpLoginAllowed](#fevtkploginallowed)|
@@ -773,6 +783,262 @@
}
}
```
+### 配对模式
+#### 方法
+##### startBsFastPair
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动快速配对,键盘配对成功返回键盘信息 [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```json
+{
+ "fun":"startBsFastPair",
+ "dataTag":"1"
+}
+```
+##### stopBsFastPair
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止快速配对
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```json
+{
+ "fun":"stopBsFastPair",
+ "dataTag":"1"
+}
+```
+#### 事件
+##### [sEvtStateCode](#sevtstatecode)
+发送指令后返回此事件
+
+##### [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
+键盘配对成功后在线返回此事件
+
+### 白名单模式
+#### 方法
+##### getBsWhitelist
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:获取基站白名单列表
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```json
+{
+ "fun":"getBsWhitelist",
+ "dataTag":"1"
+}
+```
+##### setBsWhitelist
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:设置基站白名单列表,将基站白名单替换为写入的键盘SN列表
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|array|-|是|待写入的键盘SN数组,最多不超过200
键盘SN为10位数字|
+
+- **示例代码**
+```json
+{
+ "fun":"setBsWhitelist",
+ "dataTag":"1",
+ "data":{
+ "keySns":["2024021001","2024021002","2024021003","2024021004"]
+ }
+}
+```
+##### clearBsWhitelist
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:清空基站白名单列表
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```json
+{
+ "fun":"clearBsWhitelist",
+ "dataTag":"1"
+}
+```
+##### addBsWhitelist
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:添加键盘至基站白名单列表
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|array|-|是|待添加的键盘SN列表
键盘SN为10位数字|
+
+- **示例代码**
+```json
+{
+ "fun":"addBsWhitelist",
+ "dataTag":"1",
+ "data":{
+ "keySns":["2024021001"]
+ }
+}
+```
+##### delBsWhitelist
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:从基站白名单列表中删除键盘
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|array|-|是|待删除的键盘SN列表
键盘SN为10位数字|
+
+- **示例代码**
+```json
+{
+ "fun":"delBsWhitelist",
+ "dataTag":"1",
+ "data":{
+ "keySns":["2024021001"]
+ }
+}
+```
+#### 事件
+##### [sEvtStateCode](#sevtstatecode)
+发送指令后返回此事件
+
+##### fEvtBsWhitelist
+- **主题**:/basestation/\${baseSN}/receive
+- **功能描述**:返回基站白名单列表
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+keySns|array||是|基站当前的白名单列表|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsWhitelist",
+ "dataTag":"1",
+ "data":{
+ "keySns":["2024021001","2024021002","2024021003","2024021004"]
+ }
+}
+```
+
+##### fEvtSetBsWhitelist
+- **主题**:/basestation/\${baseSN}/receive
+- **功能描述**:返回设置白名单状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySns|array||是|键盘SN数组|
+|++state|int||是|键盘SN的写入状态
0-写入成功
1-写入失败|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtSetBsWhitelist",
+ "dataTag":"1",
+ "data":[{
+ "keySns":["2024021001","2024021002"],
+ "state":0
+ },{
+ "keySns":["1211"],
+ "state":1
+ }]
+}
+```
+
+##### fEvtAddBsWhitelist
+- **主题**:/basestation/\${baseSN}/receive
+- **功能描述**:返回增加键盘状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySns|array||是|键盘SN数组|
+|++state|int||是|键盘的增加状态
0-增加成功
1-增加失败|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtAddBsWhitelist",
+ "dataTag":"1",
+ "data":[{
+ "keySns":["2024021001","2024021002"],
+ "state":0
+ },{
+ "keySns":["1211"],
+ "state":1
+ }]
+}
+```
+
+##### fEvtDelBsWhitelist
+- **主题**:/basestation/\${baseSN}/receive
+- **功能描述**:返回删除键盘状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySns|array||是|键盘SN数组|
+|++state|int||是|键盘的删除状态
0-删除成功
1-删除失败|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtDelBsWhitelist",
+ "dataTag":"1",
+ "data":[{
+ "keySns":["2024021002"],
+ "state":0
+ },{
+ "keySns":["2024021001"],
+ "state":1
+ }]
+}
+```
+
### 网络参数设置
#### 方法
##### getBsTcpipParams
@@ -928,29 +1194,6 @@
}
}
```
-### 基站维护
-#### 方法
-##### getBsLogInfo
-- **主题**:/client/\${baseSN}/send
-- **功能描述**:获取基站日志,用于出现故障需要排查问题时获取基站内部日志记录
-- **参数说明**
-
-|参数名|类型|限制|是否必填|说明|
-|---|---|---|---|---|
-|fun|string|-|是|指令名称|
-|dataTag|string|-|否|数据包标识,可为空字符串|
-
-- **示例代码**
-```Json
-{
- "fun":"getBsLogInfo",
- "dataTag":"1"
-}
-```
-
-#### 事件
-##### [sEvtStateCode](#sevtstatecode)
-返回指令的接收状态
## 键盘管理
### 交互设置
@@ -973,7 +1216,7 @@
```json
//分别提示
{
- "fun": "rtSetKpUserPrompt",
+ "fun":"rtSetKpUserPrompt",
"dataTag":"1",
"data": [
{
@@ -988,7 +1231,7 @@
}
//统一提示
{
- "fun": "rtSetKpUserPrompt",
+ "fun":"rtSetKpUserPrompt",
"dataTag":"1",
"data": [
{
@@ -1019,7 +1262,7 @@
```json
{
- "fun": "fEvtSetKpUserPrompt",
+ "fun":"fEvtSetKpUserPrompt",
"dataTag":"1",
"data": [
{
@@ -1053,7 +1296,7 @@
```json
{
- "fun": "startGetKpOnline",
+ "fun":"startGetKpOnline",
"dataTag":"1"
}
```
@@ -1072,7 +1315,7 @@
```json
{
- "fun": "stopGetKpOnline",
+ "fun":"stopGetKpOnline",
"dataTag":"1"
}
```
@@ -1157,7 +1400,7 @@
```json
{
- "fun": "rtSetKpBindingInfo",
+ "fun":"rtSetKpBindingInfo",
"dataTag":"1",
"data": [
{
@@ -1188,7 +1431,7 @@
```json
{
- "fun": "clearKpBindingInfo",
+ "fun":"clearKpBindingInfo",
"dataTag":"1",
"data": {
"keySns":["1479824643","1479824644","1479824645"]
@@ -1216,7 +1459,7 @@
```json
{
- "fun": "fEvtKpBindingInfo",
+ "fun":"fEvtKpBindingInfo",
"dataTag":"1",
"data": [
{
@@ -1246,7 +1489,7 @@
```json
{
- "fun": "fEvtClearKpBindingInfo",
+ "fun":"fEvtClearKpBindingInfo",
"dataTag":"1",
"data": {
"state": "0"
@@ -1254,6 +1497,75 @@
}
```
## 签到
+### 同步签到
+#### 方法
+##### startKpSignIn
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:启动同步签到
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传递参数的对象|
+|+mode|int|-|是|签到模式
1-按键签到,可指定按键
2-PIN码签到,可指定PIN码长度|
+|+allowModify |int|-|是 | 修改模式
0-不可修改
1-可以修改(默认值)|
+|+pinLen |int|-|是| 可输入pin码的最大长度 1≤N≤14 |
+|+keyValue |int|-|是 | 指定按键键值
0: 未指定(OK键签到)
1-9: 按键1-9
10: 按键0
11: 上键
12: 下键
13: OK键
14: ESC键
15: Menu键 |
+|+tipTitle |string|-|否| 提示标题,长度最多不超过16个字节|
+
+- **示例代码**
+```Json
+//按键签到
+{
+ "fun":"startKpSignIn",
+ "dataTag":"1",
+ "data":{
+ "mode":1,
+ "allowModify":1,
+ "keyValue":5,
+ "tip":"请按5键签到"
+ }
+}
+
+//pin签到
+{
+ "fun":"startKpSignIn",
+ "dataTag":"1",
+ "data":{
+ "mode":2,
+ "allowModify":1,
+ "pinLen":6,
+ "tip":"请输入PIN码签到"
+ }
+}
+```
+
+##### stopKpSignIn
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止同步签到
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"stopKpSignIn",
+ "dataTag":"1"
+}
+```
+#### 事件
+##### [sEvtStateCode](#sevtstatecode)
+发送指令后返回接收状态
+
+##### [fEvtKpSignIn](#fevtkpsignin)
+返回键盘提交的签到数据
+
### 随时签到
#### 方法
##### rtStartKpSignIn
@@ -1272,7 +1584,7 @@
```json
{
- "fun": "rtStartKpSignIn",
+ "fun":"rtStartKpSignIn",
"dataTag":"1",
"data":{
"mode":2
@@ -1281,7 +1593,7 @@
```
##### rtStopKpSignIn
- **主题**:/client/\${baseSN}/send
-- **功能描述**:停止签到绑定
+- **功能描述**:停止随时签到绑定
- **参数说明**
|参数名|类型|限制|是否必填|说明|
@@ -1293,7 +1605,7 @@
```json
{
- "fun": "rtStopKpSignIn",
+ "fun":"rtStopKpSignIn",
"dataTag":"1"
}
```
@@ -1314,7 +1626,7 @@
```json
{
- "fun": "rtSetKpLoginAllowed",
+ "fun":"rtSetKpLoginAllowed",
"dataTag":"1",
"data":{
"keySn":"1479824643",
@@ -1344,7 +1656,7 @@
```json
{
- "fun": "fEvtKpSignIn",
+ "fun":"fEvtKpSignIn",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -1376,7 +1688,7 @@
```json
{
- "fun": "fEvtKpLoginAllowed",
+ "fun":"fEvtKpLoginAllowed",
"dataTag":"1",
"data": {
"keySn":"1479824643",
@@ -1406,7 +1718,7 @@
```json
{
- "fun": "startQATrueFalse",
+ "fun":"startQATrueFalse",
"dataTag":"1",
"data":{
"keySns":[],
@@ -1430,7 +1742,7 @@
```json
{
- "fun": "stopQATrueFalse",
+ "fun":"stopQATrueFalse",
"dataTag":"1"
}
```
@@ -1456,7 +1768,7 @@
```json
{
- "fun": "fEvtQATrueFalse",
+ "fun":"fEvtQATrueFalse",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -1490,7 +1802,7 @@
```json
{
- "fun": "startQAChoice",
+ "fun":"startQAChoice",
"dataTag":"1",
"data":{
"keySns":[],
@@ -1517,7 +1829,7 @@
```json
{
- "fun": "stopQAChoice",
+ "fun":"stopQAChoice",
"dataTag":"1"
}
```
@@ -1543,7 +1855,7 @@
```json
{
- "fun": "fEvtQAChoice",
+ "fun":"fEvtQAChoice",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -1576,7 +1888,7 @@
```json
{
- "fun": "startQANum",
+ "fun":"startQANum",
"dataTag":"1",
"data":{
"keySns":[],
@@ -1603,7 +1915,7 @@
```json
{
- "fun": "stopQANum",
+ "fun":"stopQANum",
"dataTag":"1"
}
```
@@ -1629,7 +1941,7 @@
```json
{
- "fun": "fEvtQANum",
+ "fun":"fEvtQANum",
"dataTag":"1",
"data":[{
"keySn": "1234567890",
@@ -1659,7 +1971,7 @@
```json
{
- "fun": "startQAQuicker",
+ "fun":"startQAQuicker",
"dataTag":"1",
"data":{
"keySns":[],
@@ -1683,7 +1995,7 @@
```json
{
- "fun": "stopQAQuicker",
+ "fun":"stopQAQuicker",
"dataTag":"1"
}
```
@@ -1709,7 +2021,7 @@
```json
{
- "fun": "fEvtQAQuicker",
+ "fun":"fEvtQAQuicker",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -1745,7 +2057,7 @@
```json
//自定义题号
{
- "fun": "startKpExam",
+ "fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 0,
@@ -1781,7 +2093,7 @@
//显示Q开头
{
- "fun": "startKpExam",
+ "fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 1,
@@ -1798,7 +2110,7 @@
//显示题开头
{
- "fun": "startKpExam",
+ "fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 2,
@@ -1827,7 +2139,7 @@
```json
{
- "fun": "stopKpExam",
+ "fun":"stopKpExam",
"dataTag":"1"
}
```
@@ -1847,7 +2159,7 @@
```json
{
- "fun": "rtKpAllowEdited",
+ "fun":"rtKpAllowEdited",
"dataTag":"1",
"data":{
"keySns":["1234567890","1234567891"]
@@ -1876,7 +2188,7 @@
```json
{
- "fun": "fEvtKpExam",
+ "fun":"fEvtKpExam",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -1909,7 +2221,7 @@
```json
{
- "fun": "fEvtFinalSubmit",
+ "fun":"fEvtFinalSubmit",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
diff --git a/通讯协议-平台化-应用部分.md b/通讯协议-平台化-应用部分.md
index a6a2f02..c14f90e 100644
--- a/通讯协议-平台化-应用部分.md
+++ b/通讯协议-平台化-应用部分.md
@@ -159,7 +159,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
|配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)
[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)|
|白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)|
-||设置白名单|[setBsWhitelist](#setbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtBsWhitelist](#fevtbswhitelist)|
+||设置白名单|[setBsWhitelist](#setbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtSetBsWhitelist](#fevtsetbswhitelist)|
||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtBsWhitelist](#fevtbswhitelist)|
||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtAddBsWhitelist](#fevtaddbswhitelist)
[fEvtBsWhitelist](#fevtbswhitelist)|
||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtDelBsWhitelist](#fevtdelbswhitelist)
[fEvtBsWhitelist](#fevtbswhitelist)|
@@ -173,6 +173,9 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
|网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
||设置MQTT参数|[setBsMqttParams](#setbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
+|基站维护|获取基站日志信息(内)|[getBsLogInfo](#getbsloginfo)|[sEvtStateCode](#sevtstatecode)
[fEvtBsLogInfo](#fevtbsloginfo)|
+||基站软复位|[resetBsSystem](#resetbssystem)|[sEvtStateCode](#sevtstatecode)
[sEvtBsConnectState](#sevtbsconnectstate)|
+||基站断电复位|[resetBsPower](#resetbspower)|[sEvtStateCode](#sevtstatecode)
[sEvtBsConnectState](#sevtbsconnectstate)|
|基站升级|开启基站升级(内)|[startBsUpdate](#startbsupdate)|[sEvtStateCode](#sevtstatecode)
[fEvtBsUpateState](#fevtbsupatestate)
[fEvtBsUpdateProgress](#fevtbsupdateprogress)|
||下载字库(内)|[downloadFontLib](#downloadfontlib)|[sEvtStateCode](#sevtstatecode)
[fEvtBsFontLibState](#fevtbsfontlibstate)
[fEvtBsFontLibProgress](#fevtbsfontlibprogress)|
### 键盘管理
@@ -243,6 +246,8 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
||刷新作答数据|[rtGetKpExamData](#rtgetkpexamdata)|[sEvtStateCode](#sevtstatecode)
[fEvtKpExam](#fevtkpexam)|
||判卷结果回传|[rtSetKpExamResult](#rtgetkpexamdata)|[sEvtStateCode](#sevtstatecode)
[fEvtSetKpExamResult](#fevtsetkpexamresult)|
||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)
[fEvtFinalSubmit](#fevtfinalsubmit)|
+|多科测验|启动多科测验|[startKpMultiExam](#startkpmultiexam)|[sEvtStateCode](#sevtstatecode)
[fEvtKpExam](#fevtkpexam)
[fEvtFinalSubmit](#fevtfinalsubmit)|
+||停止标准测验|[stopKpMultiExam](#stopkpmultiexam)|[sEvtStateCode](#sevtstatecode)|
|自主录分|启动自主录分|[startKpScoreInput](#startkpscoreinput)|[sEvtStateCode](#sevtstatecode)
[fEvtKpScore](#fevtkpscore)
[fEvtFinalSubmit](#fevtfinalsubmit)|
||停止自主录分|[stopKpScoreInput](#stopkpscoreinput)|[sEvtStateCode](#sevtstatecode)|
@@ -1951,7 +1956,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startBsFastPair",
+ "fun":"startBsFastPair",
"dataTag":"1"
}
```
@@ -1968,7 +1973,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopBsFastPair",
+ "fun":"stopBsFastPair",
"dataTag":"1"
}
```
@@ -1994,7 +1999,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "getBsWhitelist",
+ "fun":"getBsWhitelist",
"dataTag":"1"
}
```
@@ -2013,7 +2018,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "setBsWhitelist",
+ "fun":"setBsWhitelist",
"dataTag":"1",
"data":{
"keySns":["2024021001","2024021002","2024021003","2024021004"]
@@ -2033,7 +2038,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "clearBsWhitelist",
+ "fun":"clearBsWhitelist",
"dataTag":"1"
}
```
@@ -2052,7 +2057,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "addBsWhitelist",
+ "fun":"addBsWhitelist",
"dataTag":"1",
"data":{
"keySns":["2024021001"]
@@ -2074,7 +2079,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "delBsWhitelist",
+ "fun":"delBsWhitelist",
"dataTag":"1",
"data":{
"keySns":["2024021001"]
@@ -2096,7 +2101,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "lockBsWhitelistKp",
+ "fun":"lockBsWhitelistKp",
"dataTag":"1",
"data":{
"keySns":["2024021001"]
@@ -2118,7 +2123,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "unlockBsWhitelistKp",
+ "fun":"unlockBsWhitelistKp",
"dataTag":"1",
"data":{
"keySn":["2024021001"]
@@ -2152,6 +2157,34 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
}
```
+##### fEvtSetBsWhitelist
+- **主题**:/basestation/\${baseSN}/receive
+- **功能描述**:返回设置白名单状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|array|-|是|传送参数的对象数组|
+|++keySns|array||是|键盘SN数组|
+|++state|int||是|键盘SN的写入状态
0-写入成功
1-写入失败|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtSetBsWhitelist",
+ "dataTag":"1",
+ "data":[{
+ "keySns":["2024021001","2024021002"],
+ "state":0
+ },{
+ "keySns":["1211"],
+ "state":1
+ }]
+}
+```
+
##### fEvtAddBsWhitelist
- **主题**:/basestation/\${baseSN}/receive
- **功能描述**:返回增加键盘状态
@@ -2162,7 +2195,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
|fun|string|-|是|指令名称|
|dataTag|string|-|否|数据包标识,可为空字符串|
|data|array|-|是|传送参数的对象数组|
-|++keySn|string||是|键盘SN|
+|++keySns|array||是|键盘SN数组|
|++state|int||是|键盘的增加状态
0-增加成功
1-增加失败|
- **示例代码**
@@ -2171,8 +2204,11 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
"fun":"fEvtAddBsWhitelist",
"dataTag":"1",
"data":[{
- "keySn":"2024021001",
+ "keySns":["2024021001","2024021002"],
"state":0
+ },{
+ "keySns":["1211"],
+ "state":1
}]
}
```
@@ -2187,7 +2223,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
|fun|string|-|是|指令名称|
|dataTag|string|-|否|数据包标识,可为空字符串|
|data|array|-|是|传送参数的对象数组|
-|++keySn|string||是|键盘SN|
+|++keySns|array||是|键盘SN数组|
|++state|int||是|键盘的删除状态
0-删除成功
1-删除失败|
- **示例代码**
@@ -2196,8 +2232,11 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
"fun":"fEvtDelBsWhitelist",
"dataTag":"1",
"data":[{
- "keySn":"2024021001",
+ "keySns":["2024021002"],
"state":0
+ },{
+ "keySns":["2024021001"],
+ "state":1
}]
}
```
@@ -2241,7 +2280,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "getBsSoftwareKey",
+ "fun":"getBsSoftwareKey",
"dataTag":"1"
}
```
@@ -2260,7 +2299,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "setBsSoftwareKey",
+ "fun":"setBsSoftwareKey",
"dataTag":"1",
"data":{
"value":"sunvote123456"
@@ -2280,7 +2319,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "getBsAES",
+ "fun":"getBsAES",
"dataTag":"1"
}
```
@@ -2299,7 +2338,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "setBsAES",
+ "fun":"setBsAES",
"dataTag":"1",
"data":{
"value":"0"
@@ -2351,6 +2390,96 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
}
}
```
+
+### 基站维护
+#### 方法
+##### getBsLogInfo
+- **主题**:/manage/\${baseSN}/receive
+- **功能描述**:获取基站日志,用于出现故障需要排查问题时获取基站内部日志记录
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"getBsLogInfo",
+ "dataTag":"1"
+}
+```
+
+##### resetBsSystem
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:软复位基站(公共主题可用,但不体现在外部版本协议中)
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"resetBsSystem",
+ "dataTag":"1"
+}
+```
+
+##### resetBsPower
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:断电复位基站(公共主题可用,但不体现在外部版本协议中)
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```Json
+{
+ "fun":"resetBsPower",
+ "dataTag":"1"
+}
+```
+
+#### 事件
+##### [sEvtStateCode](#sevtstatecode)
+返回指令的接收状态
+注意:内部指令的接收状态需从**主题: /manage/\${baseSN}/receive** 返回
+
+##### [sEvtBsConnectState](#sevtbsconnectstate)
+复位基站后,基站重新连接成功后上报
+
+##### fEvtBsLogInfo
+- **主题**: /manage/\${baseSN}/receive
+- **功能描述**:返回基站存储的日志内容
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|data|object|-|是|传送参数的对象|
+|+index|int||是|数据包序号,从1开始,传0代表日志已传完|
+|+info|string||是|日志内容
日志的时间依赖于基站授时,需要加上时区得到具体的时间|
+
+- **示例代码**
+```Json
+{
+ "fun":"fEvtBsLogInfo",
+ "dataTag":"1",
+ "data":{
+ "index":1,
+ "info":"XXXXXXXXXXXXX"
+ }
+}
+```
+
### 基站升级
#### 方法
##### startBsUpdate
@@ -2841,7 +2970,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
```Json
//分别提示
{
- "fun": "rtSetKpUserPrompt",
+ "fun":"rtSetKpUserPrompt",
"dataTag":"1",
"data": [
{
@@ -2856,7 +2985,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
}
//统一提示
{
- "fun": "rtSetKpUserPrompt",
+ "fun":"rtSetKpUserPrompt",
"dataTag":"1",
"data": [
{
@@ -2913,7 +3042,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtSetKpUserPrompt",
+ "fun":"fEvtSetKpUserPrompt",
"dataTag":"1",
"data": [
{
@@ -2946,7 +3075,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startGetKpOnline",
+ "fun":"startGetKpOnline",
"dataTag":"1"
}
```
@@ -2964,7 +3093,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopGetKpOnline",
+ "fun":"stopGetKpOnline",
"dataTag":"1"
}
```
@@ -3172,7 +3301,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "rtSetKpBindingInfo",
+ "fun":"rtSetKpBindingInfo",
"dataTag":"1",
"data": [
{
@@ -3202,7 +3331,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "clearKpBindingInfo",
+ "fun":"clearKpBindingInfo",
"dataTag":"1",
"data": {
"keySns":["1479824643","1479824644","1479824645"]
@@ -3229,7 +3358,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtKpBindingInfo",
+ "fun":"fEvtKpBindingInfo",
"dataTag":"1",
"data": [
{
@@ -3258,7 +3387,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtClearKpBindingInfo",
+ "fun":"fEvtClearKpBindingInfo",
"dataTag":"1",
"data": {
"state": "0"
@@ -3278,18 +3407,39 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
|fun|string|-|是|指令名称|
|dataTag|string|-|否|数据包标识,可为空字符串|
|data|object|-|是|传递参数的对象|
-|+mode|int|-|是|签到模式
1-按键签到
2-PIN码签到
3-指纹签到|
+|+mode|int|-|是|签到模式
1-按键签到,可指定按键
2-PIN码签到,可指定PIN码长度
3-指纹签到(暂不支持)|
+|+allowModify |int|-|是 | 修改模式
0:不可修改
1:可以修改(默认值)|
+|+pinLen |int|-|是| 可输入pin码的最大长度 1≤N≤14 |
+|+keyValue |int|-|是 | 指定按键键值
0: 未指定(OK键签到)
1-9: 按键1-9
10:按键0
11:上键
12:下键
13:OK键
14:ESC键
15: Menu键 |
+|+tipTitle |string|-|否| 提示标题,长度最多不超过16个字节|
- **示例代码**
```Json
+//按键签到
{
- "fun": "startKpSignIn",
+ "fun":"startKpSignIn",
"dataTag":"1",
"data":{
- "mode":2
+ "mode":1,
+ "allowModify":1,
+ "keyValue":5,
+ "tip":"请按5键签到"
+ }
+}
+
+//pin签到
+{
+ "fun":"startKpSignIn",
+ "dataTag":"1",
+ "data":{
+ "mode":2,
+ "allowModify":1,
+ "pinLen":6,
+ "tip":"请输入PIN码签到"
}
}
```
+
##### stopKpSignIn
- **主题**:/client/\${baseSN}/send
- **功能描述**:停止同步签到
@@ -3303,7 +3453,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopKpSignIn",
+ "fun":"stopKpSignIn",
"dataTag":"1"
}
```
@@ -3331,7 +3481,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "rtStartKpSignIn",
+ "fun":"rtStartKpSignIn",
"dataTag":"1",
"data":{
"mode":2
@@ -3351,7 +3501,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "rtStopKpSignIn",
+ "fun":"rtStopKpSignIn",
"dataTag":"1"
}
```
@@ -3371,7 +3521,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "rtSetKpLoginAllowed",
+ "fun":"rtSetKpLoginAllowed",
"dataTag":"1",
"data":{
"keySn":"1479824643",
@@ -3400,7 +3550,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtKpSignIn",
+ "fun":"fEvtKpSignIn",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -3431,7 +3581,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtKpLoginAllowed",
+ "fun":"fEvtKpLoginAllowed",
"dataTag":"1",
"data": {
"keySn":"1479824643",
@@ -3463,7 +3613,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startQATrueFalse",
+ "fun":"startQATrueFalse",
"dataTag":"1",
"data":{
"keySns":[],
@@ -3490,7 +3640,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopQATrueFalse",
+ "fun":"stopQATrueFalse",
"dataTag":"1"
}
```
@@ -3515,7 +3665,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtQATrueFalse",
+ "fun":"fEvtQATrueFalse",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -3551,7 +3701,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startQAChoice",
+ "fun":"startQAChoice",
"dataTag":"1",
"data":{
"keySns":[],
@@ -3581,7 +3731,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopQAChoice",
+ "fun":"stopQAChoice",
"dataTag":"1"
}
```
@@ -3606,7 +3756,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtQAChoice",
+ "fun":"fEvtQAChoice",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -3640,7 +3790,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startQANum",
+ "fun":"startQANum",
"dataTag":"1",
"data":{
"keySns":[],
@@ -3669,7 +3819,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopQANum",
+ "fun":"stopQANum",
"dataTag":"1"
}
```
@@ -3694,7 +3844,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtQANum",
+ "fun":"fEvtQANum",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -3725,7 +3875,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startQAQuicker",
+ "fun":"startQAQuicker",
"dataTag":"1",
"data":{
"keySns":[],
@@ -3751,7 +3901,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopQAQuicker",
+ "fun":"stopQAQuicker",
"dataTag":"1"
}
```
@@ -3776,7 +3926,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtQAQuicker",
+ "fun":"fEvtQAQuicker",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -3807,7 +3957,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startQAEText",
+ "fun":"startQAEText",
"dataTag":"1",
"data":{
"keySns":[],
@@ -3833,7 +3983,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopQAEText",
+ "fun":"stopQAEText",
"dataTag":"1"
}
```
@@ -3858,7 +4008,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtQAEText",
+ "fun":"fEvtQAEText",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -3889,7 +4039,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
```Json
//指定键盘发送信息
{
- "fun": "sendKpMsg",
+ "fun":"sendKpMsg",
"dataTag":"1",
"data": [
{
@@ -3909,7 +4059,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
//广播信息
{
- "fun": "sendKpMsg",
+ "fun":"sendKpMsg",
"dataTag":"1",
"data": [
{
@@ -3944,7 +4094,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtKpMsg",
+ "fun":"fEvtKpMsg",
"dataTag":"1",
"data": [
{
@@ -3978,7 +4128,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
```Json
//启用举手反馈
{
- "fun": "startKpStbResponse",
+ "fun":"startKpStbResponse",
"dataTag":"1",
"data":{
"mode":0
@@ -3986,7 +4136,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
}
//待机按键反馈
{
- "fun": "startKpStbResponse",
+ "fun":"startKpStbResponse",
"dataTag":"1",
"data":{
"mode":1,
@@ -4008,7 +4158,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopKpStbResponse",
+ "fun":"stopKpStbResponse",
"dataTag":"1"
}
```
@@ -4047,7 +4197,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startQAVoice",
+ "fun":"startQAVoice",
"dataTag":"1",
"data": {
"keySns": [],
@@ -4073,7 +4223,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopQAVoice",
+ "fun":"stopQAVoice",
"dataTag":"1"
}
```
@@ -4098,7 +4248,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startKpDSpeaker",
+ "fun":"startKpDSpeaker",
"dataTag":"1",
"data": {
"keySn": "1234567890",
@@ -4122,7 +4272,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopKpDSpeaker",
+ "fun":"stopKpDSpeaker",
"dataTag":"1"
}
```
@@ -4144,7 +4294,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startVoiceStbResponse",
+ "fun":"startVoiceStbResponse",
"dataTag":"1",
"data":{
"mode":,
@@ -4166,7 +4316,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopVoiceStbResponse",
+ "fun":"stopVoiceStbResponse",
"dataTag":"1"
}
```
@@ -4192,7 +4342,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtVoiceFile",
+ "fun":"fEvtVoiceFile",
"dataTag":"1",
"data": [{
"keySn": "1479824643",
@@ -4223,7 +4373,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtQAQuicker",
+ "fun":"fEvtQAQuicker",
"dataTag":"1",
"data": {
"keySn":"1479824643",
@@ -4258,7 +4408,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtQAQuicker",
+ "fun":"fEvtQAQuicker",
"dataTag":"1",
"data": {
"keySn":"1837454011",
@@ -4300,7 +4450,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
```Json
//自定义题号
{
- "fun": "startKpExam",
+ "fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 0,
@@ -4339,7 +4489,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
//显示Q开头
{
- "fun": "startKpExam",
+ "fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 1,
@@ -4359,7 +4509,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
//显示题开头
{
- "fun": "startKpExam",
+ "fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 2,
@@ -4390,7 +4540,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopKpExam",
+ "fun":"stopKpExam",
"dataTag":"1"
}
```
@@ -4409,7 +4559,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "rtGetKpExamData",
+ "fun":"rtGetKpExamData",
"dataTag":"1",
"data":{
"keySns":["1234567890","1234567891"]
@@ -4432,7 +4582,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "rtSetKpExamResult",
+ "fun":"rtSetKpExamResult",
"dataTag":"1",
"data":{
"examNo":1,
@@ -4456,7 +4606,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "rtKpAllowEdited",
+ "fun":"rtKpAllowEdited",
"dataTag":"1",
"data":{
"keySns":["1234567890","1234567891"]
@@ -4484,7 +4634,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtKpExam",
+ "fun":"fEvtKpExam",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -4516,7 +4666,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtFinalSubmit",
+ "fun":"fEvtFinalSubmit",
"dataTag":"1",
"data": [{
"keySn": "1234567890",
@@ -4542,7 +4692,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtSetKpExamResult",
+ "fun":"fEvtSetKpExamResult",
"dataTag":"1",
"data": {
"examNo": 1,
@@ -4551,6 +4701,146 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
}
```
+### 多科测验
+#### 方法
+##### 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": 1,
+ "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 ,判断题
+ "symbol": "",
+ "quesType": 4,
+ "startNo": 4,
+ "count":2
+ }],
+ "simParams":{
+ "answer":["A","ABCD","10","1"]
+ }
+ }
+}
+
+//显示Q开头
+{
+ "fun":"startKpMultiExam",
+ "dataTag":"1",
+ "data":{
+ "mode": 1,
+ "examNo": 1,
+ "questions": [{
+ "subject":1,
+ //Q1-Q20,单选题
+ "symbol": "",
+ "quesType": 1,
+ "startNo": 1,
+ "count":20
+ }],
+ "simParams":{
+ "answer":["A","","",""]
+ }
+ }
+}
+
+//显示题开头
+{
+ "fun":"startKpMultiExam",
+ "dataTag":"1",
+ "data":{
+ "mode": 2,
+ "examNo": 1,
+ "questions": [{
+ "subject":1,
+ //题1-题20,单选题
+ "symbol": "",
+ "quesType": 1,
+ "startNo": 1,
+ "count":20
+ }],
+ "simParams":{
+ "answer":["A","","",""]
+ }
+ }
+}
+```
+
+##### stopKpMultiExam
+- **主题**:/client/\${baseSN}/send
+- **功能描述**:停止多科测验
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+
+- **示例代码**
+```json
+{
+ "fun":"stopKpMultiExam",
+ "dataTag":"1"
+}
+```
+
+#### 事件
+##### [sEvtStateCode](#sevtstatecode)
+发送指令后返回接收状态
+
+##### [fEvtKpExam](#fevtkpexam)
+返回测验中键盘提交答题数据
+
+##### [fEvtFinalSubmit](#fevtfinalsubmit)
+返回键盘手动交卷标识
+
### 自主录分
#### 方法
##### startKpScoreInput
@@ -4576,7 +4866,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "startKpScoreInput",
+ "fun":"startKpScoreInput",
"dataTag":"1",
"data":{
"mode": 0,
@@ -4615,7 +4905,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "stopKpScoreInput",
+ "fun":"stopKpScoreInput",
"dataTag":"1"
}
```
@@ -4641,7 +4931,7 @@ WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口
- **示例代码**
```Json
{
- "fun": "fEvtKpScore",
+ "fun":"fEvtKpScore",
"dataTag":"1",
"data": [{
"scoreTag":"5",