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 //指定下发