SunVote Dll协议接口说明
Ver5.1.1
长沙中天电子设计开发有限公司
二〇二三年十月
文件控制:
文件名:SunVote Dll接口说明
起草人:陈定敏
最新版本作者: 陈定敏
| 文档版本 | 日期 | 作者 | 版本说明 |
|---|---|---|---|
|5.1.1| 2023年10月09日|陈定敏|1. 初始版|
[TOC]
# 系统概述
# 设计目的
# 通讯接口设计概要
# 通信方式
数据交互采取发送<-->应答的方式。应用程序发送数据到WSCmdApp,WSCmdApp收到后执行完成后回复。
应用程序没有数据发送给WSCmdApp时,需要发送心跳,WSCmdApp收到心跳后会回复心跳,用于判断与应用程序的连接状态。(配置文件中,如果启用了心跳检查,应用程序如果未按要求发送心跳,WSCmdApp会断开当前连接,重新尝试连接)
# 编程流程说明
# 回调函数部分
## 基站事件的回调
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|int mode|回调反馈数据模式|||
|const char* sInfo|回调反馈数据|根据模式解析数据||
回调接口代码:
```C++
typedef void(*HDParamCallBack)(int iBaseID, int mode, const char* sInfo);// 基站事件回调
```
设置回调代码:
```C++
extern"C" __declspec(dllexport) void SetHDParamCallBack(HDParamCallBack cb); //设置基站事件回调
```
## 投票事件回调
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|int mode|回调反馈数据模式|||
|const char* sInfo|回调反馈数据|根据模式解析数据||
回调接口代码:
```C++
typedef void(*VoteEventCallBack)(int iBaseID, int mode, const char* sInfo);// 投票事件回调
```
设置回调代码:
```C++
extern"C" __declspec(dllexport) void SetVoteEventCallBack(VoteEventCallBack cb); //设置投票事件回调
```
## 键盘事件回调
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|unsigned long long keySn|键盘SN|||
|float Time|反馈时间|||
|int mode|回调反馈数据模式|||
|int RxMode|预留|||
|const char* sInfo|回调反馈数据|根据模式解析数据||
回调接口代码:
```C++
typedef void(*KeyEventCallBack)(int iBaseID, unsigned long long keySn, float Time, int mode, int RxMode, const char* sInfo);// 键盘事件回调
```
设置回调代码:
```C++
extern"C" __declspec(dllexport) void SetKeyEventCallBack(KeyEventCallBack cb); //设置键盘事件回调回调
```
## 语音事件回调
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|unsigned long long keySn|键盘SN|||
|float Time|反馈时间|||
|int mode|回调反馈数据模式|||
|USHORT voiceId|语音按键ID|||
|USHORT dataIndex|语音数据包ID|||
|const char* data|回调反馈数据|根据模式解析数据||
|USHORT dataIndex|语音数据包ID|||
|int len|语音数据长度|||
|int sampleRate| |||
|int bitsPerSample| |||
|int channel| |||
|int recFlag| |||
回调接口代码:
```C++
typedef void(*VoiceStreamEventCallBack)(int iBaseID, ULONG keySn, int mode, USHORT voiceId, USHORT dataIndex, const char* data, int len, int sampleRate, int bitsPerSample, int channel, int recFlag);//
```
设置回调代码:
```C++
extern"C" __declspec(dllexport) void SetVoiceStreamEventCallBack(VoiceStreamEventCallBack); //设置语音数据回调函数
```
# 基站参数部分
## 复位基站
函数名称:resetBase
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
接口代码:
```C++
extern"C" __declspec(dllexport) bool resetBase(UCHAR iBaseID);
```
## 获取SDK Ver
函数名称:GetSDKVer
返回参数:字符串
接口代码:
```C++
extern"C" __declspec(dllexport) char* GetSDKVer();
```
## 退出线程释放资源
函数名称:SetThread_Exit
接口代码:
```C++
extern"C" __declspec(dllexport) void SetThread_Exit(void); //退出线程释放资源
```
# 投票业务部分
## 设置空闲模式功能[广播]
函数名称:EndFreeEvent
功能:设置空闲模式功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为空闲模式
接口代码:
```C++
extern"C" __declspec(dllexport) bool EndFreeEvent(void); //空闲模式功能
```
## 带参数进入空闲模式
函数名称:ExitEvent
功能:退出当前模式功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为空闲模式,并在回调 函数中说明是什么模式切换到空闲模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|int mode_ID|用户提供的当前需要的模式||websocket情况下使用|
接口代码:
```C++
extern"C" __declspec(dllexport) bool ExitEvent(int mode_ID); //带参数进入空闲模式功能
```
## 签到功能[广播]
函数名称:Start_Sign_in_Event
功能:签到功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为签到功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|int Moed1|签到模式| 1:指定键签到
2:PIN码签到(默认值)||
|int Moed2|修改模式|0:不可修改
1:可以修改(默认值)||
|int Moed3|迫选模式|0:(默认值)||
|int Moed4|选项数目|10:(默认值)||
|int Moed5|可选项数|1≤N≤14 (指定位数才需要设置)||
|int KeyValue|指定按键键值|0:未指定[OK键签到]
1:1
2:2
3:3
4:4
5:5
6:6
7:7
8:8
9:9
10:0
11:上键
12:下键
13:OK
14:ESC
15: Menu ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Sign_in_Event(
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0,
int Moed4 = 0,
int Moed5 = 0,
int KeyValue=0); //开始签到功能
```
## 签到功能[指定键盘SN]
函数名称:Start_Sign_in_Event_SN
功能:签到功能[指定键盘SN]
说明:把SDK管理的指定在线键盘设置为签到功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
|int Moed1|签到模式| 1:指定键签到
2:PIN码签到(默认值)||
|int Moed2|修改模式|0:不可修改
1:可以修改(默认值)||
|int Moed3|迫选模式|0:(默认值)||
|int Moed4|选项数目|10:(默认值)||
|int Moed5|可选项数|1≤N≤14 (指定位数才需要设置)||
|int KeyValue|指定按键键值|0:未指定[OK键签到]
1:1
2:2
3:3
4:4
5:5
6:6
7:7
8:8
9:9
10:0
11:上键
12:下键
13:OK
14:ESC
15: Menu ||
|UCHAR Txt_Len|提示标题长度|1~16字节||
|const char* Txt|提示标题|字符串||
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Sign_in_Event_SN(
UCHAR iBaseID,
ULONG KeySN,
int Moed1,
int Moed2,
int Moed3,
int Moed4,
int Moed5,
int KeyValue,
UCHAR Txt_Len,
const char* Txt); //开始签到功能
```
## 数字题功能[广播]
函数名称:Start_Number_Event
功能:数字题功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为数字功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
|secrecyMode|保密模式|0:不保密(默认值)
1:保密||
|modifyMode|修改模式|0:不可修改
1:可以修改(默认值)|
|aswOption|按键模式|0:无规则 (S6最多16位,T2最多14位)
1:预留
2:预留
3:带小数位上下限(T2不支持)|
|digits|小数位数|0:没有小数点
1:一位小数点
2:二位小数点|
|numMin|下限|aswOption=3
digits=0 范围:0~65535
digits=1 范围:0~6553
digits=2 范围:0~655|
|numMax|上限|aswOption=3
digits=0 范围:0~65535
digits=1 范围:0~6553
digits=2 范围:0~655|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Number_Event(
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0,
int digits = 0,
USHORT numMax = 0,
USHORT numMin = 0); //
```
## 数字题功能[指定键盘SN]
函数名称:Start_Number_Event_SN
功能:数字题功能[指定键盘SN]
说明:把SDK管理的指定在线键盘设置为数字题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
|secrecyMode|保密模式|0:不保密(默认值)
1:保密||
|modifyMode|修改模式|0:不可修改
1:可以修改(默认值)|
|aswOption|按键模式|0:无规则 (S6最多16位,T2最多14位)
1:预留
2:预留
3:带小数位上下限(T2不支持)|
|digits|小数位数|0:没有小数点
1:一位小数点
2:二位小数点|
|numMin|下限|aswOption=3
digits=0 范围:0~65535
digits=1 范围:0~6553
digits=2 范围:0~655|
|numMax|上限|aswOption=3
digits=0 范围:0~65535
digits=1 范围:0~6553
digits=2 范围:0~655|
|UCHAR Txt_Len|提示标题长度|1~16字节||
|Txt|提示标题|字符串,长度最多不超过16个字节|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Number_Event_SN(
UCHAR iBaseID,
ULONG KeySN,
int Moed1,
int Moed2,
int Moed3,
int digits,
USHORT numMax,
USHORT numMin,
UCHAR Txt_Len,
const char* Txt); //
```
## 判断题功能[广播]
函数名称:Start_TrueFalse_Event
功能:判断题功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为判断题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
| optionsMode | 选项类别 | 1:True/False 对/错 2:Yes/No 是/否 3:√/×|
| secrecyMode | 保密模式 | 0:不保密(默认值) 1:保密|
| modifyMode | 修改模式 | 0:不可修改1:可以修改(默认值)|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_TrueFalse_Event(
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0);
```
## 判断题功能[指定键盘SN]
函数名称:Start_TrueFalse_Event_SN
功能:判断题功能[指定键盘SN]
说明:把SDK管理的指定在线键盘设置为判断题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
| optionsMode | 选项类别 | 1:True/False 对/错 2:Yes/No 是/否 3:√/×|
| secrecyMode | 保密模式 | 0:不保密(默认值) 1:保密|
| modifyMode | 修改模式 | 0:不可修改1:可以修改(默认值)|
|UCHAR Txt_Len|提示标题长度|1~16字节||
|Txt|提示标题|字符串,长度最多不超过16个字节|
接口代码:
```C++
extern"C" __declspec(dllexport) bool T2_Start_TrueFalse_Event(
UCHAR iBaseID,
ULONG KeySN,
int Moed1,
int Moed2,
int Moed3,
UCHAR Txt_Len,
const char* Txt); //
```
## 选择题功能[广播]
函数名称:Start_TrueFalse_Event
功能:选择题功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为选择题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
|optionsMode|选项类别|1:显示字母(默认值) 2:显示数字 |
|secrecyMode|保密模式|0:不保密(默认值)1:保密 |
|modifyMode|修改模式|0:不可修改 1:可以修改(默认值) |
|lessMode|迫选模式| 0:可缺选(默认值) 1:不可缺选2:允许重复输入3:允许重复输入且不可缺选 |
| options|选项数目|1≤M≤10(默认值4)|
| optionalN|可选项数|1≤N≤M(默认值1)|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Choice_Event(
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0,
int Moed4 = 0,
int Moed5 = 0,
int Moed6 = 0);
```
## 选择题功能[指定键盘SN]
函数名称:Start_Choice_Event_SN
功能:选择题功能[指定键盘SN]
说明:把SDK管理的指定在线键盘设置为选择题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
|optionsMode|选项类别|1:显示字母(默认值) 2:显示数字 |
|secrecyMode|保密模式|0:不保密(默认值)1:保密 |
|modifyMode|修改模式|0:不可修改 1:可以修改(默认值) |
|lessMode|迫选模式| 0:可缺选(默认值) 1:不可缺选2:允许重复输入3:允许重复输入且不可缺选 |
| options|选项数目|1≤M≤10(默认值4)|
| optionalN|可选项数|1≤N≤M(默认值1)|
|UCHAR Txt_Len|提示标题长度|1~16字节||
|Txt|提示标题|字符串,长度最多不超过16个字节|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Choice_Event_SN(
UCHAR iBaseID,
ULONG KeySN,
int Moed1,
int Moed2,
int Moed3,
int Moed4,
int Moed5,
int Moed6,
UCHAR Txt_Len,
const char* Txt);
```
## 语音题功能[广播]
函数名称:Start_Voice_Event
功能:语音题功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为语音题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
|recordingMode|录音模式|0:按键录音(默认值)|
|submitTimes|提交次数|0 (0:不限制, 默认值0)|
|recordingTimeLimit|预留|0|
|recordingFormat|预留|0(默认值0)|
|recordAudioFormat|音频格式|0:mp3(默认值)
1:实时流|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Voice_Event(
int Moed1,
int Time,
int Num,
int Alert,
int OutMode);
```
## 语音题功能[指定键盘SN]
函数名称:Start_Voice_Event_SN
功能:语音题功能[指定键盘SN]
说明:把SDK管理的指定在线键盘设置为语音题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
|recordingMode|录音模式|0:按键录音(默认值)|
|submitTimes|提交次数|0 (0:不限制, 默认值0)|
|recordingTimeLimit|预留|0|
|recordingFormat|预留|0(默认值0)|
|recordAudioFormat|音频格式|0:mp3(默认值)
1:实时流|
|UCHAR Txt_Len|提示标题长度|1~16字节||
|Txt|提示标题|字符串,长度最多不超过16个字节|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Voice_Event_SN(
UCHAR iBaseID,
ULONG KeySN,
int Moed1,
int Time,
int Num,
int Alert,
int OutMode,
UCHAR Txt_Len,
const char* Txt);//
```
## 自由题功能
函数名称:Start_Free_Question_Event
功能:自由题功能
说明:把SDK管理的所有基站的在线键盘设置为自由题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Free_Question_Event(
UCHAR iBaseID,
ULONG KeySN);
```
## 抢答题功能
函数名称:Start_Rush_Answer_Event
功能:抢答题功能
说明:把SDK管理的所有基站的在线键盘设置为抢答题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
|rushAnswerMode| 抢答模式|0:普通抢答(默认值)|
|Moed2| 预留|0:(默认值)|
|modifyMode|修改模式|0:不可修改
1:可以修改(默认值)|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Rush_Answer_Event(
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0); //抢答
```
## 抢答题功能[指定键盘SN]
函数名称:Start_Rush_Answer_Event_SN
功能:抢答题功能[指定键盘SN]
说明:把SDK管理的指定在线键盘设置为抢答题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
|rushAnswerMode| 抢答模式|0:普通抢答(默认值)|
|Moed2| 预留|0:(默认值)|
|modifyMode|修改模式|0:不可修改
1:可以修改(默认值)|
|UCHAR Txt_Len|提示标题长度|1~16字节||
|Txt|提示标题|字符串,长度最多不超过16个字节|
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_Rush_Answer_Event_SN(
UCHAR iBaseID,
ULONG KeySN,
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0); //抢答模式
```
## 填空题功能
函数名称:Start_Rush_Answer_Event
功能:填空题功能
说明:把SDK管理的所有基站的在线键盘设置为填空题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
| optionsMode | 填空类型 | 1:任意输入(默认值) |
| modifyMode | 预留 | 1: (默认值) |
| secrecyMode | 预留 | 0: (默认值) |
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_TextAnswer_Event(
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0);
```
## 填空题功能[指定键盘SN]
函数名称:Start_Rush_Answer_Event_SN
功能:填空题功能[指定键盘SN]
说明:把SDK管理的指定在线键盘设置为填空题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|指定键盘SN|||
| optionsMode | 填空类型 | 1:任意输入(默认值) |
| modifyMode | 预留 | 1: (默认值) |
| secrecyMode | 预留 | 0: (默认值) |
接口代码:
```C++
extern"C" __declspec(dllexport) bool Start_TextAnswer_Event_SN(
UCHAR iBaseID,
ULONG KeySN,
int Moed1 = 1,
int Moed2 = 0,
int Moed3 = 0); //抢答模式
```
## 模拟测试功能[广播]
函数名称:MockTest_Event
功能:模拟测试功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为自由题功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
|UCHAR iBaseID|基站ID|0~32||
|int Moed1|模式|||
|UCHAR KeyTime|按键开启时间|||
|UCHAR GapTime|按键间隔时间|||
接口代码:
```C++
extern"C" __declspec(dllexport) bool MockTest_Event(
UCHAR iBaseID,
int Moed1 = 1,
UCHAR KeyTime = 1,
UCHAR GapTime = 1); //模拟测试[1 报告状态]
```
## 异步测验功能[广播]
函数名称:TestMode_Event
功能:异步测验功能[广播]
说明:把SDK管理的所有基站的在线键盘设置为异步测验功能模式
| **参数名称** | **参数说明** | **范围** | **备注** |
|---|---|---|---|
|UCHAR iBaseID|基站ID|0~32||
|int Moed|模式|||
|USHORT TestNum||||
接口代码:
```C++
extern"C" __declspec(dllexport) bool TestMode_Event(
UCHAR iBaseID,
int Moed,
USHORT TestNum);
```
# 键盘设置
## 键盘自定义姓名
### 设置键盘自定义姓名
函数名称:SetKeyNameTxt_C100B_S6
功能:设置键盘自定义姓名,C100B+S6键盘自定义姓名
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
|UCHAR Cont|操作类型|0:不操作
1:清除
2:写入||
|UCHAR Name_Len|姓名字符串长度| ||
|const char* Name|姓名字符串| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyNameTxt(
UCHAR iBaseID,
ULONG KeySN,
UCHAR Cont,
UCHAR Name_Len,
const char *Name);
```
## 键盘自定义姓名[C100B+S6]
### 设置C100B+S6键盘自定义姓名
函数名称:SetKeyNameTxt_C100B_S6
功能:设置键盘自定义姓名,C100B+S6键盘自定义姓名
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
|UCHAR Name_Len|姓名字符串长度| ||
|const char* Name|姓名字符串| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyNameTxt_C100B_S6(
UCHAR iBaseID,
ULONG KeySN,
UCHAR Name_Len,
const char* Name);
```
### 获取C100B+S6键盘自定义姓名
函数名称:GetKeyNameTxt_C100B_S6
功能:获取键盘自定义姓名,C100B+S6键盘自定义姓名
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool GetKeyNameTxt_C100B_S6(
UCHAR iBaseID,
ULONG KeySN);
```
### 设置键盘评分[积分]
函数名称:SetKeyScore
功能:设置键盘评分[积分]
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
|UCHAR Cont|操作类型|0:不操作
1:清除
2:字符串模式
3:五角星模式
4:爱心[S6有效]
5:写测验题分数[S6有效]||
|UCHAR Score_Len|积分字符串长度| ||
|char* Score|积分字符串| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyScore(
UCHAR iBaseID,
ULONG KeySN,
UCHAR Cont,
UCHAR Score_Len,
char* Score);
```
### 键盘自定义标题字符串[第二行]
函数名称:SetKeyTitleTxt2
功能:设置键盘自定义标题字符串[第二行]
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
|UCHAR Cont|操作类型|0:不操作
1:清除
2:写入||
|UCHAR Mode|操作类型|0:空闲模式[仅T2有效]
1:工作模式||
|UCHAR Txt_Len|字符串长度| ||
|const char* Txt|字符串| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyTitleTxt2(
UCHAR iBaseID,
ULONG KeySN,
UCHAR Cont,
UCHAR Mode,
UCHAR Txt_Len,
const char* Txt);
```
### 键盘自定义标题字符串[第三行]
函数名称:SetKeyTitleTxt3
功能:设置键盘自定义标题字符串[第三行]
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
|UCHAR Cont|操作类型|0:不操作
1:清除
2:写入||
|UCHAR Txt_Len|字符串长度| ||
|const char* Txt|字符串| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyTitleTxt3(
UCHAR iBaseID,
ULONG KeySN,
UCHAR Cont,
UCHAR Txt_Len,
const char* Txt);
```
### 键盘自定义评分[积分]和标题字符串[第二行]
函数名称:SetKeyScreTxt2
功能:设置键盘自定义评分[积分]和标题字符串[第二行]
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
|UCHAR Score_Type|操作类型|0:不操作
1:清除
2:字符串模式
3:五角星模式
4:爱心[S6有效]
5:写测验题分数[S6有效]||
|UCHAR Score_Len|字符串长度| ||
|char* Score|字符串| ||
|UCHAR Txt_Cont|操作类型|0:不操作
1:清除
2:写入||
|UCHAR Txt_Len|字符串长度| ||
|const char* Txt|字符串| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyScreTxt2(
UCHAR iBaseID,
ULONG KeySN,
UCHAR Score_Type,
UCHAR Score_Len,
char* Score,
UCHAR Txt_Cont,
UCHAR Txt_Len,
const char* Txt);
```
### 键盘自定义短信
函数名称:SetKeyMessage
功能:设置键盘自定义短信
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|ULONG KeySN|键盘SN| ||
|const char* Txt|字符串| ||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyMessage(
UCHAR iBaseID,
ULONG KeySN,
const char* Txt);
```
## 键盘暂停休眠时间
设置键盘暂停休眠时间
函数名称:Key_Pause_Sleep
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|UCHAR Time|休眠时间| 0:10秒[默认]||
接口代码:
```C++
extern"C" __declspec(dllexport) bool Key_Pause_Sleep(UCHAR iBaseID, UCHAR Time);//
```
## 键盘关机设置
获取键盘关机时间等级
函数名称:GetKeyboardAutoPowerOffLevel
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
接口代码:
```C++
extern"C" __declspec(dllexport) bool GetKeyboardAutoPowerOffLevel(UCHAR iBaseID);
```
设置键盘关机时间等级
函数名称:SetKeyboardAutoPowerOffLevel
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|UCHAR Level|关机时间等级|0:30秒
1:2分钟
2:15分钟
3:45分钟
255:不自动关机||
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyboardAutoPowerOffLevel(UCHAR iBaseID, UCHAR Level);
```
## 键盘外设操作[仅T2有效]
设置键盘外设操作[仅T2有效]
函数名称:SetKeyPeripheral
参数说明:写键盘外设,由led灯、蜂鸣器、马达组合
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
| keySn | 键盘SN |空字符串,为所有在线键盘|
| ledTimes | Led灯闪烁次数 | 0~255 (0是马上灭,255是长亮)|
| ledOnTime | Led灯每次开时间 |0~255 (单位0.1s)|
| ledOffTime | Led灯每次关时间 |0~255 (单位0.1s,为0就是连续亮)|
| ledColorR | Led灯灯颜色,红值 |0~255(现只支持0灭和1亮,,>1也认为是1)|
| ledColorG | Led灯灯颜色,绿值 |0~255(现只支持0灭和1亮,,>1也认为是1)|
| ledColorB | Led灯灯颜色,蓝值 |0~255(现只支持0灭和1亮,,>1也认为是1)|
| beepTimes | 蜂鸣器响次数 | 0~255 (0是马上响,255是长响) |
| beepOnTime | 蜂鸣器每次开时间 |0~255 (单位0.1s)|
| beepOffTime | 蜂鸣器每次关时间 |0~255 (单位0.1s,为0就是连续响)|
| motorTimes |马达震动次数|0~255|
| motorOnTime | 马达每次开时间 |0~255 (单位0.1s)|
| motorOffTime | 马达每次关时间 |0~255 (单位0.1s,为0就是连续振动)|
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyPeripheral(
UCHAR iBaseID,
ULONG KeySN,
UCHAR LED_CTRL,
UCHAR LED_TIMES,
UCHAR LED_TON,
UCHAR LED_TOFF,
UCHAR R,
UCHAR G,
UCHAR B,
UCHAR BEEP_CTRL,
UCHAR BEEP_TIMES,
UCHAR BEEP_TON,
UCHAR BEEP_TOFF,
UCHAR MOTO_CTRL,
UCHAR MOTO_TIMES,
UCHAR MOTO_TON,
UCHAR MOTO_TOFF);
```
## 键盘遥控关机
遥控关机
函数名称:SetKeyRemoteShutdown
参数说明:键盘遥控关机
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
| keySn | 键盘SN |空字符串,为所有在线键盘|
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyRemoteShutdown(
UCHAR iBaseID,
ULONG KeySN);
```
## 键盘ID遥控关机生产模式
键盘ID遥控关机生产模式
函数名称:SetKeyRemoteShutdown_Pro
参数说明:键盘遥控关机
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
|UCHAR Mode| 模式 |0~255;0:正常关机 255:一直遥控开机|
|USHORT KeyIdMin| 开始编号 |1~9999;指定键盘编号范围时候的开始值|
|USHORT KeyIdMax| 结束编号 |1~9999;指定键盘编号范围时候的结束值|
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyRemoteShutdown_Pro(
UCHAR iBaseID,
UCHAR Mode,
USHORT KeyIdMin,
USHORT KeyIdMax);
```
## 键盘恢复出厂设置
设置键盘恢复出厂设置
函数名称:SetKeyFactory
参数说明:
| **参数名称** | **参数说明** | **范围** | **备注** |
| --- | --- | --- | --- |
|UCHAR iBaseID|基站ID|0~32||
| keySn | 键盘SN |空字符串,为所有在线键盘|
接口代码:
```C++
extern"C" __declspec(dllexport) bool SetKeyFactory(
UCHAR iBaseID,
ULONG KeySN);
```
## 异常处理
### WSCmdApp收到数据异常
WSCmdApp收到异常数据,会不做处理,并返回以下错误信息描述。
接收:
fun: "error" //功能错误
baseId: //无该值
infos:{ "funId":"F0001","code":"10002"}//
指令样例:
```json
{
"fun": "error",
"infos": {
"funId": "F0001",
"code": "10002"
},
"packetTag": "1"
}
```
| **code** | **含义** |
| --- | --- |
|10001|不能正确解析的JSON数据|
|10002|解析JSON错误|
|20001|基站未连接|
|20002|功能不支持|
|20003|基站ID为负数,应用可以不传ID,默认为0|
|20004|参数错误|
|30001|找不到对应的SN|
|40001|升级功能只能支持一个基站在线|
|50001|此功能必须指定基站ID|
|60001|此功能必须指定键盘SN|
| **funId** | **含义** |
| --- | --- |
|F0001|基站未连接|
|F0002|读基站信道|
|F0003|写基站信道|
|F0004|读取基站baseId 、信道、RF功率等级|
|F0005|写基站baseId|
|F0006|读基站名称|
|F0007|写基站名称|
|F0008|读键盘关机时间等级|
|F0009|写键盘关机时间等级|
|F0010|读基站配对码|
|F0011|写基站配对码|
|F0012|读基站序列号|
|F0013|写基站序列号|
|F0014|读取基站的型号、硬件版本、软件版本、设备SN号|
|F0015|写基站硬件版本|
|F0016|读基站类型|
|F0017|写基站类型|
|F0018|读基站键盘容量和Lock|
|F0019|写基站键盘容量和Lock|
|F0020|读手动获取返回在线信息|
|F0021|写手动获取返回在线信息|
|F0022|读基站设备RF功率|
|F0023|写基站设备RF功率|
|F0024|基站设备配对模式或基站名称(自定义)|
|F0025|预留|
|F0026|读基站快速配对低功率模式|
|F0027|写基站快速配对低功率模式|
|F0028|读键盘登录菜单显示允许[S6适用]|
|F0029|写键盘登录菜单显示允许[S6适用]|
|F0030|读键盘登录密码[S6适用]|
|F0031|写键盘登录密码[S6适用]|
|F0032|读基站名称隐藏开关|
|F0033|写基站名称隐藏开关|
|F0034|读基站和键盘之间的心跳开关|
|F0035|写基站和键盘之间的心跳开关|
|F0036|读基站语言|
|F0037|写基站语言|
|F0038|读基站CRC|
|F0039|写基站CRC|
|F0040|写广播投票标题|
|F0041|核对投票开启密码|
|F0042|读基站获取投票开启密码|
|F0043|写基站获取投票开启密码|
|F0044|读基站用户自定义字符串|
|F0045|写基站用户自定义字符串|
|F0046|读基站UID|
|F0047|写基站UID|
|F0048|读键盘反馈模式参数|
|F0049|写键盘反馈模式参数|
|F0050|读基站当前是开启升级状态|
|F0051|写基站当前是开启升级状态|
|F0052|手动停止键盘升级状态|
|F0053|写键盘当前是开启升级状态|
|F0054|写踢出单只键盘|
|F0055|写清掉所有键盘|
|F0056|写锁定键盘|
|F0057|写解锁键盘|
|F0058|写T2键盘第二行文本【空闲模式】|
|F0059|读考勤基站时钟设置|
|F0060|写考勤基站时钟设置|
|F0061|读考勤键盘每秒发送考勤信号次数|
|F0062|写考勤键盘每秒发送考勤信号次数|
|F0063|读考勤键盘发送考勤信号功率|
|F0064|写考勤键盘发送考勤信号功率|
|F0065|写修改键盘配对码|
|F0066|写键盘功能提示预设字符串反馈|
|F0067|写空闲模式|
|F0068|单选多选带计时模式|
|F0069|判断题带计时模式|
|F0070|抢答题带计时模式|
|F0071|数字题带计时模式|
|F0072|绑定带计时模式|
|F0073|基站快速配对|
|F0074|读基站特征数据|
|F0075|遥控关机|
|F0076|读键盘在线SN|
|F0077|写基站复位|
|F0078|写键盘外设指令|
|F0079|写键盘配对码|
|F0080|写锁定键盘,解锁键盘|
|F0081|填空题模式|
|F0082|读NFC信息 姓名|
|F0083|写NFC信息 姓名|
|F0084|写NFC配对码|
|F0085|NFC清除指令|
|F0086|多题题型开始|
|F0087|多题题型暂停|
|F0088|多题题型继续上一次|
|F0089|多题题型正确答案下发|
|F0090|多题题型已答题结果转移|
|F0091|写白名单|
|F0092|读白名单|
|F0093|写基站黑名单|
|F0094|读基站黑名单|
|F0095|C100B+S6[旧款]写键盘姓名|
|F0096|C100B+S6[旧款]读键盘姓名|
|F0097|键盘暂停休眠操作|
|F0098|异步测试模式|
|F0099|Tcp参数读|
|F0100|Tcp参数写|
|F0101|自定义题型参数|
|F0102|写S6短信|
|F0103|写S6键盘FSN|
|F0104|自由题模式|
|F0105|基站AES|
|F0106|基站AES 克隆|
|F0107|基础参数配置|
|F0108|删除指定白名单SN|
|F0109|追加指定SN 到白名单|
|F0110|语音题模式|
|F0111|多题快答模式|
|F0112|快速配对模式|
|F0113|键盘测试模式|
|F0114|写入积分和第二行文本|
|F0115|写入键盘姓名|
|F0116|键盘关机时间等级|