diff --git a/通讯协议-平台化-应用部分[内部].md b/通讯协议-平台化-应用部分[内部].md
index 73f735a..e55bdfb 100644
--- a/通讯协议-平台化-应用部分[内部].md
+++ b/通讯协议-平台化-应用部分[内部].md
@@ -32,7 +32,7 @@ SunVote 二次开发
通讯协议
-Ver 1.0.4
+Ver 1.0.5
@@ -48,7 +48,7 @@ Ver 1.0.4
-二〇二五年五月
+二〇二五年六月
@@ -69,7 +69,8 @@ Ver 1.0.4
|1.0.1| 2025年3月24日|刘琴|1. 建立版本|
|1.0.2| 2025年4月24日|刘琴|1. 修改fEvtKpOnlineMsg返回为数组形式
2. 增加内部指令stopBsUpdate、stopFontLibUpdate,返回状态增加 3: 收到停止指令|
|1.0.3| 2025年5月20日|刘琴|1. 增加内部指令组呼开关读取和设置
2. 增加内置状态语下发可指定键盘|
-|1.0.4| 2025年5月26日|刘琴|1. 增加待机实时反馈的反馈类型
2. 增加待机实时反馈的按键内容自定义和清除
3. 增加键盘离线关机时间等级设置(内部指令)
4. 键盘升级增加静默升级选项,增加退出静默升级指令(内部指令)
5. 增加自定义测验题型名称的主观题录分类型|
+|1.0.4| 2025年5月26日|刘琴|1. 增加待机实时反馈的反馈类型
2. 增加待机实时反馈的按键内容自定义和清除
3. 增加自定义测验题型名称的主观题录分类型
4. 增加键盘离线关机时间等级设置(内部指令)
5. 键盘升级增加静默升级选项,增加退出静默升级指令(内部指令)|
+|1.0.5| 2025年6月5日|刘琴|1. 增加语音题接口
2. 增加拍照反馈接口
3. 增加锁定解锁白名单
4. 增加基站容量、基站加密(内部指令)|
@@ -87,21 +88,17 @@ Ver 1.0.4
/client/{baseSN}/send
/client/multiBase/send
-
内部应用发布的主题,基站订阅
/manage/{baseSN}/send
-
### 订阅的主题
应用程序订阅的主题,基站发布
/basestation/\{baseSN}/receive
/basestation/multiBase/receive
-
内部应用订阅的主题,基站发布
/manage/{baseSN}/receive
-
## Websocket方式
WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接收数据即可。应用程序发送至SDK约定为发送指令,SDK返回数据约定为返回事件。
通过SDK连接基站时,需先启动SDK,再与SDK建立WebSocket连接。
@@ -145,7 +142,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式
-
## 功能速查一览表
### SDK管理
通过SDK直连基站时有效
@@ -195,9 +191,11 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
||设置基站配对码(内)|[setBsPairCode](#setbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
|组网设置 - 组呼开关|获取组呼开关状态(内)|[getBsGroupCall](#getbsgroupcall)|[fEvtBsGroupCall](#fevtbsgroupcall)|
-||设置基站组呼开关|[setBsGroupCall](#setbsgroupcall)|[fEvtBsGroupCall](#fevtbsgroupcall)||
+||设置基站组呼开关(内)|[setBsGroupCall](#setbsgroupcall)|[fEvtBsGroupCall](#fevtbsgroupcall)||
|组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|
||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
+|组网设置 - 组网容量|获取基站容量|[getBsCapacity](#getbscapacity)|[fEvtBsCapacity](#fevtbscapacity)|
+||设置基站连接容量|[setBsCapacity](#setbscapacity)|[fEvtBsCapacity](#fevtbscapacity)||
|组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)|
||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
||读取已被占用信道|[getBsRFIChannel](#getbsrfichannel)|[fEvtBsRFIChannel](#fevtbsrfichannel)||
@@ -228,8 +226,12 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtBsWhitelist](#fevtbswhitelist)|
||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtAddBsWhitelist](#fevtaddbswhitelist)
[fEvtBsWhitelist](#fevtbswhitelist)|
||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)
[fEvtDelBsWhitelist](#fevtdelbswhitelist)
[fEvtBsWhitelist](#fevtbswhitelist)|
+||锁定白名单|[lockBsWhitelistKp](#lockbswhitelistkp)|[fEvtLockBsWhitelistKp](#fevtlockbswhitelistkp)|
+||解锁白名单|[unlockBsWhitelistKp](#unlockbswhitelistkp)|[fEvtLockBsWhitelistKp](#fevtlockbswhitelistkp)|
|基站加密 - 软件狗|获取基站软件狗|[getBsSoftwareKey](#getbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
||设置基站软件狗|[setBsSoftwareKey](#setbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
+|基站加密 - AES加密|获取基站AES加密状态(内)|[getBsAES](#getbsaes)|[fEvtBsAES](#fevtbsaes)|
+||设置基站AES加密状态(内)|[setBsAES](#setbsaes)|[fEvtBsAES](#fevtbsaes)|
|网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)||
|网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
@@ -291,6 +293,16 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
||获取待机实时反馈状态|[getKpStbResponse](#getkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)|
||自定义反馈按键内容|[setKpStbKeyInfo](#setkpstbkeyinfo)|[sEvtStateCode](#sevtstatecode)
[fEvtKpStbKeyInfo](#fevtkpstbkeyinfo)|
||清除自定义反馈按键内容|[clearKpStbKeyInfo](#clearkpstbkeyinfo)|[sEvtStateCode](#sevtstatecode)
[fEvtClearKpStbKeyInfo](#fevtclearkpstbkeyinfo)|
+### 语音反馈
+|功能归类|功能|API指令|指令事件|
+|---|---|---|---|
+|语音反馈-单题语音评测|启动单题语音评测|[startQAVoice](#startqavoice)|[sEvtStateCode](#sevtstatecode)
[fEvtVoiceFile](#fevtvoicefile)
[fEvtVoiceStream](#fevtvoicestream)
[fEvtVoicePacketLossInfo](#fevtvoicepacketlossinfo)|
+||停止单题语音评测|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
+### 拍照反馈
+|功能归类|功能|API指令|指令事件|
+|---|---|---|---|
+|拍照反馈-单题拍照反馈|启动单题拍照反馈|[startQAPhoto](#startQAPhoto)|[sEvtStateCode](#sevtstatecode)
[fEvtPhotoFile](#fEvtPhotoFile)|
+||停止单题拍照反馈|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)|
### 在线测验
|功能归类|功能|API指令|指令事件|
|---|---|---|---|
@@ -431,7 +443,7 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
"fun":"fEvtSdkVersion",
"dataTag":"1",
"data":{
- "value":"1.0.0"
+ "value":"1.0.0.0"
}
}
```
@@ -455,7 +467,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
## 公共事件
### sEvtBsConnectState
- **主题**: /basestation/{baseSN}/receive
@@ -669,6 +680,7 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}]
}
```
+
### sEvtKpHandUp
- **主题**: /basestation/{baseSN}/receive
- **功能描述**:开启键盘举手功能后,键盘按举手键时上报
@@ -874,7 +886,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
### 识别设置
#### 方法
-
##### setBsSN
- **主题**:/manage/{baseSN}/send
- **功能描述**:设置基站的SN,需预先订阅新SN的主题,以获取事件返回
@@ -888,7 +899,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|data|object|-|是|传送参数的对象|
|+value|string|数字|是|设置的基站SN,长度为10位数字|
-
- **示例代码**
```json
{
@@ -901,7 +911,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### getBsModel
- **主题**:/client/{baseSN}/send
- **功能描述**:获取基站型号
@@ -941,8 +950,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
-
##### getBsBIC
- **主题**:/manage/{baseSN}/send
- **功能描述**:获取基站品牌识别码
@@ -975,7 +982,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|data|object|-|是|传送参数的对象|
|+value|string||是|设置的基站品牌码|
-
- **示例代码**
```json
{
@@ -988,7 +994,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
#### 事件
##### fEvtBsSN
- **主题**: /basestation/{baseSN}/receive
@@ -1063,7 +1068,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### fEvtBsBIC
- **主题**: /manage/{baseSN}/receive
- **功能描述**:返回基站的品牌码
@@ -1089,7 +1093,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
### 组网设置
#### 方法
##### getBsNetworkMode
@@ -1112,7 +1115,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### setBsNetworkMode
- **主题**:/client/{baseSN}/send
- **功能描述**:设置基站组网模式
@@ -1138,7 +1140,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### getBsPairCode
- **主题**:/client/{baseSN}/send
- **功能描述**:获取基站配对码
@@ -1159,7 +1160,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### setBsPairCode
- **主题**:/manage/{baseSN}/send
- **功能描述**:设置基站配对码
@@ -1173,7 +1173,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|data|object|-|否|传送参数的对象|
|+value|string|-|否|设置的基站配对码,8位数字|
-
- **示例代码**
```json
{
@@ -1186,8 +1185,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
-
##### getBsGroupCall
- **主题**:/manage/{baseSN}/send
- **功能描述**:获取基站组呼开关状态
@@ -1221,7 +1218,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|data|object|-|否|传送参数的对象|
|+value|string|-|否|设置的基站组呼开关状态
0-关闭组呼
1-开启组呼|
-
- **示例代码**
```json
{
@@ -1234,7 +1230,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### getBsNfcLogin
- **主题**:/client/{baseSN}/send
- **功能描述**:获取刷卡配对状态
@@ -1278,6 +1273,51 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
}
```
+
+##### getBsCapacity
+- **主题**:/client/{baseSN}/send
+- **功能描述**:获取基站容量参数
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+
+- **示例代码**
+```json
+{
+ "fun":"getBsCapacity",
+ "dataTag":"1",
+ "baseSn":"2024061101"
+}
+```
+##### setBsCapacity
+- **主题**:/client/{baseSN}/send
+- **功能描述**:设置基站容量
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+value|string|-|是|设置基站的键盘容量,<=200|
+
+- **示例代码**
+```json
+{
+ "fun":"setBsCapacity",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data":{
+ "value":"60"
+ }
+}
+```
+
##### getBsChannel
- **主题**:/client/{baseSN}/send
- **功能描述**:获取基站信道
@@ -1391,7 +1431,30 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
}
```
+##### fEvtBsCapacity
+- **主题**: /basestation/{baseSN}/receive
+- **功能描述**:返回基站容量
+- **参数说明**
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|事件名称|
+|dataTag|string|-|否|数据包标识,可传空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|基站容量|
+
+- **示例代码**
+```json
+{
+ "fun":"fEvtBsCapacity",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data":{
+ "value":"60"
+ }
+}
+```
##### fEvtBsChannel
- **主题**: /basestation/{baseSN}/receive
- **功能描述**:返回基站信道
@@ -1452,7 +1515,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### fEvtBsGroupCall
- **主题**: /manage/{baseSN}/receive
- **功能描述**:返回基站组呼开关状态
@@ -1478,7 +1540,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### fEvtBsNfcLogin
- **主题**: /basestation/{baseSN}/receive
- **功能描述**:返回基站是否允许NFC刷卡
@@ -1766,7 +1827,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### getBsKpStbMsgMode
- **主题**:/manage/{baseSN}/send
- **功能描述**:获取状态语设置状态
@@ -1811,7 +1871,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### getBsKpLoginMenu
- **主题**:/client/{baseSN}/send
- **功能描述**:获取键盘登录菜单显示状态
@@ -1857,7 +1916,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### getBsKpRFIDState
- **主题**:/manage/{baseSN}/send
- **功能描述**:获取键盘长距离考勤开启状态
@@ -2037,7 +2095,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
#### 事件
##### fEvtBsKpLanguage
- **主题**: /basestation/{baseSN}/receive
@@ -2064,7 +2121,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### fEvtBsKpStbMsgMode
- **主题**: /manage/{baseSN}/receive
- **功能描述**:返回状态语工作状态
@@ -2090,7 +2146,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### fEvtBsKpLoginMenu
- **主题**: /basestation/{baseSN}/receive
- **功能描述**:返回键盘登录菜单显示状态
@@ -2116,7 +2171,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### fEvtBsKpRFIDState
- **主题**: /manage/{baseSN}/receive
- **功能描述**:返回键盘长距离考勤开启状态
@@ -2217,7 +2271,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
### 配对模式
#### 方法
##### startBsFastPair
@@ -2377,6 +2430,56 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
}
```
+
+##### lockBsWhitelistKp
+- **主题**:/client/{baseSN}/send
+- **功能描述**:锁定指定的键盘SN,基站限制容量时,被锁定键盘SN不会被新刷卡加入的键盘挤出
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+keySns|array|-|是|待锁定的键盘SN列表,空数组代表锁定当前名单中所有键盘|
+
+- **示例代码**
+```json
+{
+ "fun":"lockBsWhitelistKp",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data":{
+ "keySns":["2024021001"]
+ }
+}
+```
+##### unlockBsWhitelistKp
+- **主题**:/client/{baseSN}/send
+- **功能描述**:解锁键盘SN
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+keySns|array|-|是|待解锁的键盘SN列表,空数组代表解锁当前名单中所有键盘|
+
+- **示例代码**
+```json
+{
+ "fun":"unlockBsWhitelistKp",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data":{
+ "keySn":["2024021001"]
+ }
+}
+```
+
#### 事件
##### [sEvtStateCode](#sevtstatecode)
发送指令后返回此事件
@@ -2496,6 +2599,33 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
+##### fEvtLockBsWhitelistKp
+- **主题**:/basestation/{baseSN}/receive
+- **功能描述**:返回键盘锁定状态
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|解锁或锁定的键盘SN|
+|++state|int||是|键盘的锁定状态
0-未锁定
1-锁定|
+
+- **示例代码**
+```json
+{
+ "fun":"fEvtLockBsWhitelistKp",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data":[{
+ "keySn":"2024021001",
+ "state":1
+ }]
+}
+```
+
### 网络参数设置
#### 方法
##### getBsTcpipParams
@@ -2708,6 +2838,51 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
}
```
+
+##### getBsAES
+- **主题**:/manage/{baseSN}/send
+- **功能描述**:获取基站加密方式
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+
+- **示例代码**
+```json
+{
+ "fun":"getBsAES",
+ "dataTag":"1",
+ "baseSn":"2024061101"
+}
+```
+##### setBsAES
+- **主题**:/manage/{baseSN}/send
+- **功能描述**:设置基站加密方式
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+value|string|-|是|无线加密方式
0: 不加密
1: AES128加密
2: AES256加密 |
+
+- **示例代码**
+```json
+{
+ "fun":"setBsAES",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data":{
+ "value":"0"
+ }
+}
+```
+
#### 事件
##### fEvtBsSoftwareKey
- **主题**:/basestation/{baseSN}/receive
@@ -2734,6 +2909,30 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
+##### fEvtBsAES
+- **主题**:/manage/{baseSN}/receive
+- **功能描述**:返回基站的无线加密模式
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+value|string||是|返回基站的无线加密模式
0:不加密
1:AES128加密
2:AES256加密|
+
+- **示例代码**
+```json
+{
+ "fun":"fEvtBsAES",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data":{
+ "value":"0"
+ }
+}
+```
### 基站维护
#### 方法
@@ -2931,7 +3130,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|+version|string||是|待升级的基站固件版本|
|+crc|uint||是|固件CRC校验码,10进制数字|
-
- **示例代码**
```json
{
@@ -2959,7 +3157,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|baseSn|string||是|基站的出厂编码|
|data|object|-|是|传送参数的对象|
-
- **示例代码**
```json
{
@@ -2985,7 +3182,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|+version|string||是|待升级的字库版本|
|+crc|int||是|字库CRC校验码,10进制数字|
-
- **示例代码**
```json
{
@@ -3012,7 +3208,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|baseSn|string||是|基站的出厂编码|
|data|object|-|是|传送参数的对象|
-
- **示例代码**
```json
{
@@ -3022,7 +3217,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
#### 事件
##### [sEvtStateCode](#sevtstatecode)
返回升级指令的接收状态
@@ -3132,11 +3326,8 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
## 键盘管理
-
-
### 识别设置
#### 方法
##### setKpSN
@@ -3323,7 +3514,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
### 交互设置
#### 方法
##### rtSetKpUserPrompt
@@ -3373,7 +3563,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### setKpUserStbMsg
- **主题**:/manage/{baseSN}/send
- **功能描述**:设置用户内置状态语
@@ -3421,13 +3610,10 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
#### 事件
##### [sEvtStateCode](#sevtstatecode)
发送指令后返回接收状态
-
-
##### fEvtKpUserStbMsg
- **主题**:/manage/{baseSN}/receive
- **功能描述**:返回设置状态语的状态
@@ -3458,7 +3644,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### fEvtSetKpUserPrompt
- **主题**:/basestation/{baseSN}/receive
- **功能描述**:返回实时设置提示语是否成功
@@ -3630,7 +3815,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### startKpFWUpdate
- **主题**:/manage/{baseSN}/send
- **功能描述**:键盘升级
@@ -3648,7 +3832,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|+crc|uint||是|固件CRC校验码,10进制数字,直连基站可传0|
|+mode|int||是|升级模式,不传此字段默认为普通升级
0-普通升级(默认)
1-静默升级|
-
- **示例代码**
```json
{
@@ -3675,7 +3858,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|baseSn|string||是|基站的出厂编码|
|data|object|-|是|传送参数的对象|
-
- **示例代码**
```json
{
@@ -3696,7 +3878,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|dataTag|string|-|否|数据包标识,可为空字符串|
|baseSn|string||是|基站的出厂编码|
-
- **示例代码**
```json
{
@@ -3717,7 +3898,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|dataTag|string|-|否|数据包标识,可为空字符串|
|baseSn|string||是|基站的出厂编码|
-
- **示例代码**
```json
{
@@ -3727,7 +3907,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
#### 事件
##### [sEvtStateCode](#sevtstatecode)
返回指令的接收状态
@@ -3785,7 +3964,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
## 绑定
### 无线绑定
#### 方法
@@ -4150,7 +4328,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### [stopKpVote](#stopkpvote)
停止判断题答题
@@ -4387,7 +4564,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### [stopKpVote](#stopkpvote)
停止抢答
@@ -4459,7 +4635,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### [stopKpVote](#stopkpvote)
停止文本题答题
@@ -4678,7 +4853,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|+key|int||是|需设置自定义内容的按键,可设置1-10, 1-9代表键盘1-9键, 10代表 J/0 键|
|+info|string||是|设置的自定义内容,长度不大于15个字符|
-
- **示例代码**
```json
//指定下发
@@ -4853,6 +5027,262 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
+## 语音反馈
+### 方法
+#### 单题语音评测
+##### startQAVoice
+- **主题**:/client/{baseSN}/send
+- **功能描述**:启动单题语音评测
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
+|+mode|int||是|录音模式
0-按键录音(默认值)
1-自动录音|
+|+submitTimes|int||是|允许提交次数,0-255, 0 - 不限次数|
+|+timeLimit|int||否|限制的录音时长,0-255, 0-不限时长|
+|+format|int||否|录音格式
0-录音文件(SDK直连基站支持)
1-实时流|
+|+audioFormat|int||否|音频格式
0-pcm
1-mp3(默认值1)
2-wav
3-speex|
+|+tip|string||否|提示的标题,长度不超过16字符|
+
+- **示例代码**
+```json
+{
+ "fun":"startQAVoice",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data": {
+ "keySns": [],
+ "mode":0,
+ "submitTimes":0,
+ "timeLimit":30,
+ "format":0,
+ "audioFormat":1,
+ "tip":"请按键录音"
+ }
+}
+```
+##### stopQAVoice
+- **主题**:/client/{baseSN}/send
+- **功能描述**:停止单题语音评测
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+
+- **示例代码**
+```json
+{
+ "fun":"stopQAVoice",
+ "dataTag":"1",
+ "baseSn":"2024061101"
+}
+```
+
+### 事件
+#### [sEvtStateCode](#sevtstatecode)
+发送指令后返回接收状态
+
+#### fEvtVoiceFile
+- **主题**:/basestation/{baseSN}/receive
+- **功能描述**:开启录音格式为录音文件方式时返回此事件
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++filePath|string||是|键盘提交语音文件的路径|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+
+- **示例代码**
+```json
+{
+ "fun":"fEvtVoiceFile",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data": [{
+ "keySn": "1479824643",
+ "filePath":"D:\\SunVoteSDK\\voice\\20250502\\voice_1479824643_1635832534000.mp3",
+ "keyTime":3.2
+ }]
+}
+```
+#### fEvtVoiceStream
+- **主题**:/basestation/{baseSN}/receive
+- **功能描述**:开启录音格式为实时流方式时返回此事件
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+keySn|string||是|键盘SN|
+|+voiceId|int||是|语音id,答题时间内,可重复提交语音,每段语音流加一个id,用于区分作答|
+|+sampleRate|int||是|音频采样率|
+|+bits|int||是|音频采样精度|
+|+channel|int||是|声道数|
+|+voiceData|string||是|音频数据,将原始数据通过Base64编码后得出
应用可通过Base64解码得到原始语音数据|
+|+dataLen|int||是|Base64编码后的数据字符串长度|
+|+endFlag|int||是|语音流结束标识
0-未结束
1-结束包|
+
+- **示例代码**
+```json
+{
+ "fun":"fEvtQAQuicker",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data": {
+ "keySn":"1479824643",
+ "voiceId":"1",
+ "sampleRate":16000,
+ "bits":16,
+ "channel":1,
+ "endFlag":0,
+ "dataLen":856,
+ "voiceData":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAO7/AAARAAAA7v8AACMAAADK/wAA+gARAI8ANQDoAO7/EQDP/mwD6ADSBBkFgPm+/iH6J/ko/HD8F/8L/u7/rQGU/yMA4f5fAin/MgpDBwADvwRk+yn/fP1e/Jr+DAEAA+gAPAXpBnECgwK5BdEEmwFaA7oF4f63/DX9n/rJ+f75q/tA+5n7fP1q/Y79av1B/nb+Qf70AX0AfQNx/6b8EQBY/Ub9awD0AZUCfgahA4MCBgLV/az+L/5k/o79LwEdAYkBvv5q/X0AHf48BYMCgwKmAgYCdwH0/uL+0P6C/7j/sgApAsr/Kf+U/8T9L/ig+rL3HfVZA6AAsgYSBi8BIwMRABf/pvxB/nH/4v6m/7IAgv9f/7j/3P+gAAsB4gH0AS8BawAAANz/Kf8F/8r/RwAAACMA6ADoAKb/xAC4AgYCLwFBBO4FWQMAA7kFTQUYAnECiQRlASn/4v47/0H+uPxH/UH+L/6O/fn9F//Q/h3+rP5f/zv/8/5N/9z/uP+C/9z/RwBHACMAWQCgAH0ANQA1AEcAEQDK/8r/3P+4/5T/lP+m/5T/gv+C/5T/lP+C/5T/pv+m/w=="
+ }
+}
+```
+#### fEvtVoicePacketLossInfo
+- **主题**:/basestation/{baseSN}/receive
+- **功能描述**:开启录音格式为实时流方式,录音结束时返回此次录音的丢包率信息
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+keySn|string||是|键盘SN|
+|+voiceId|string||是|语音id|
+|+receive|double||是|收到语言流包数|
+|+shouldSend|string||是|应发数据包数|
+|+actualSend|string||是|实发数据包数|
+|+lossRate|double||是|丢包率,百分比|
+|+delay|double||是|延时,单位毫秒|
+
+- **示例代码**
+```json
+{
+ "fun":"fEvtQAQuicker",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data": {
+ "keySn":"1837454011",
+ "voiceId":"1",
+ "receive":"42",
+ "shouldSend":"56",
+ "actualSend":"56",
+ "lossRate":"0",
+ "delay":"20"
+ }
+}
+```
+
+## 拍照反馈
+### 方法
+#### 单题拍照反馈
+##### startQAPhoto
+- **主题**:/client/{baseSN}/send
+- **功能描述**:启动单题拍照反馈
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|object|-|是|传送参数的对象|
+|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
+|+mode|int||是|拍照模式(预留)
0 - 普通拍照(默认值)|
+|+submitTimes|int||是|允许提交次数,0-255
0 - 不限次数|
+|+format|int||否|拍照格式
0 - 图片文件(SDK直连基站支持)|
+|+imgFormat|int||否|图片格式
0 - bmp
1 - jpg(默认值1)|
+|+tip|string||否|提示的标题,长度不超过16字符|
+
+- **示例代码**
+```json
+{
+ "fun":"startQAPhoto",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data": {
+ "keySns": [],
+ "mode":0,
+ "submitTimes":0,
+ "format":0,
+ "audioFormat":1,
+ "tip":"请拍照提交"
+ }
+}
+```
+##### stopQAPhoto
+- **主题**:/client/{baseSN}/send
+- **功能描述**:停止单题拍照反馈
+- **参数说明**
+
+|参数名|类型|限制|是否必填|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+
+- **示例代码**
+```json
+{
+ "fun":"stopQAPhoto",
+ "dataTag":"1",
+ "baseSn":"2024061101"
+}
+```
+
+### 事件
+#### [sEvtStateCode](#sevtstatecode)
+发送指令后返回接收状态
+
+#### fEvtPhotoFile
+- **主题**:/basestation/{baseSN}/receive
+- **功能描述**:开启拍照格式为图片文件方式时返回此事件
+- **参数说明**
+
+|参数名|类型|限制|非空|说明|
+|---|---|---|---|---|
+|fun|string|-|是|指令名称|
+|dataTag|string|-|否|数据包标识,可为空字符串|
+|baseSn|string||是|基站的出厂编码|
+|data|array|-|是|传送参数的对象数组|
+|++keySn|string||是|键盘SN|
+|++filePath|string||是|键盘提交图片文件的路径|
+|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+
+- **示例代码**
+```json
+{
+ "fun":"fEvtPhotoFile",
+ "dataTag":"1",
+ "baseSn":"2024061101",
+ "data": [{
+ "keySn": "1479824643",
+ "filePath":"D:\\SunVoteSDK\\photo\\20250502\\photo_1479824643_1635832534000.jpg",
+ "keyTime":3.2
+ }]
+}
+```
+
## 在线测验
### 标准测验
#### 方法
@@ -5055,12 +5485,9 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### [stopKpVote](#stopkpvote)
停止在线测验
-
-
##### rtGetKpExamData
- **主题**:/client/{baseSN}/send
- **功能描述**:刷新作答数据
@@ -5086,7 +5513,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### rtKpAllowEdited
- **主题**:/client/{baseSN}/send
- **功能描述**:键盘提交后,允许键盘修改答案
@@ -5283,7 +5709,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
}
```
-
##### [stopKpVote](#stopkpvote)
停止多科测验
@@ -5405,7 +5830,6 @@ WebSocket方式应用与SDK建立长连接后,通过WebSocket接口发送接
|+type|int||是|需要设置的题目类型
1- 单选题
2- 多选题
3- 数字题
4- 判断题
5- 自判题
6- 主观题录分|
|+title|string||是|设置的标题内容,长度不大于15个字符|
-
- **示例代码**
```json
//指定下发