Commit 10d538508b65740b98676b5369003d49254f3664

Authored by 刘琴
1 parent 36437691

修改B200W协议内容,拆分键盘开机上线事件和扫描中状态上报事件

通讯协议-B200W-MQTT协议[内部].md
... ... @@ -120,7 +120,7 @@
120 120 |---|---|---|---|
121 121 |交互设置 - 用户内置状态语|设置用户内置状态语|[setKpUserStbMsg](#setkpuserstbmsg)|[fEvtKpUserStbMsg](#fevtkpuserstbmsg)|
122 122 |交互设置 - 用户实时提示信息|实时设置提示反馈信息|[rtSetKpUserPrompt](#rtsetkpuserprompt)|[sEvtStateCode](#sevtstatecode)<br>[fEvtSetKpUserPrompt](#fevtsetkpuserprompt)|
123   -|在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  123 +|在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpOnlineMsg](#fevtkponlinemsg)|
124 124 ||停止扫描在线键盘|[stopGetKpOnline](#stopgetkponline)|[sEvtStateCode](#sevtstatecode)|
125 125 |维护功能 - 遥控功能|遥控键盘关机|[remoteKpPowerOff](#remotekppoweroff)|[sEvtStateCode](#sevtstatecode)|
126 126 ||遥控键盘休眠|[remoteKpSleep](#remotekpsleep)|[sEvtStateCode](#sevtstatecode)|
... ... @@ -254,7 +254,6 @@
254 254 |+keySn|string||是|键盘SN|
255 255 |+version|string||是|键盘固件版本|
256 256 |+model|int||是|键盘型号|
257   -|+voltage|double||是|键盘电压|
258 257  
259 258 - **示例代码**
260 259 ```Json
... ... @@ -264,8 +263,7 @@
264 263 "data":{
265 264 "keySn":"1234567890",
266 265 "version":"1.0.0",
267   - "model":67,
268   - "voltage":2.8
  266 + "model":67
269 267 }
270 268 }
271 269 ```
... ... @@ -1032,6 +1030,8 @@
1032 1030 |---|---|---|---|---|
1033 1031 |fun|string|-|是|指令名称|
1034 1032 |dataTag|string|-|否|数据包标识,可为空字符串|
  1033 +
  1034 +- **示例代码**
1035 1035 ```json
1036 1036 {
1037 1037 "fun": "startBsFastPair",
... ... @@ -1047,6 +1047,8 @@
1047 1047 |---|---|---|---|---|
1048 1048 |fun|string|-|是|指令名称|
1049 1049 |dataTag|string|-|否|数据包标识,可为空字符串|
  1050 +
  1051 +- **示例代码**
1050 1052 ```json
1051 1053 {
1052 1054 "fun": "stopBsFastPair",
... ... @@ -1071,6 +1073,8 @@
1071 1073 |---|---|---|---|---|
1072 1074 |fun|string|-|是|指令名称|
1073 1075 |dataTag|string|-|否|数据包标识,可为空字符串|
  1076 +
  1077 +- **示例代码**
1074 1078 ```json
1075 1079 {
1076 1080 "fun": "getBsWhitelist",
... ... @@ -1088,6 +1092,8 @@
1088 1092 |dataTag|string|-|否|数据包标识,可为空字符串|
1089 1093 |data|object|-|是|传送参数的对象|
1090 1094 |+keySns|array|-|是|待写入的键盘SN数组|
  1095 +
  1096 +- **示例代码**
1091 1097 ```json
1092 1098 {
1093 1099 "fun": "setBsWhitelist",
... ... @@ -1106,6 +1112,8 @@
1106 1112 |---|---|---|---|---|
1107 1113 |fun|string|-|是|指令名称|
1108 1114 |dataTag|string|-|否|数据包标识,可为空字符串|
  1115 +
  1116 +- **示例代码**
1109 1117 ```json
1110 1118 {
1111 1119 "fun": "clearBsWhitelist",
... ... @@ -1123,6 +1131,8 @@
1123 1131 |dataTag|string|-|否|数据包标识,可为空字符串|
1124 1132 |data|object|-|是|传送参数的对象|
1125 1133 |+keySns|array|-|是|待添加的键盘SN列表|
  1134 +
  1135 +- **示例代码**
1126 1136 ```json
1127 1137 {
1128 1138 "fun": "addBsWhitelist",
... ... @@ -1143,6 +1153,8 @@
1143 1153 |dataTag|string|-|否|数据包标识,可为空字符串|
1144 1154 |data|object|-|是|传送参数的对象|
1145 1155 |+keySns|array|-|是|待删除的键盘SN列表|
  1156 +
  1157 +- **示例代码**
1146 1158 ```json
1147 1159 {
1148 1160 "fun": "delBsWhitelist",
... ... @@ -1638,6 +1650,8 @@
1638 1650 |data|array|-|否|传送参数的对象数组|
1639 1651 |++keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘<br><font color="red">注意:不允许空数组和指定SN数组混合使用<br>包含空数组默认为全部在线键盘,其他指定键盘无效</font>|
1640 1652 |++info|string||否|设置的反馈信息<br>不同键盘可设置不同反馈信息|
  1653 +
  1654 +- **示例代码**
1641 1655 ```json
1642 1656 //分别提示
1643 1657 {
... ... @@ -1728,13 +1742,15 @@
1728 1742 #### 方法
1729 1743 ##### startGetKpOnline
1730 1744 - **主题**:/client/\${baseSN}/send
1731   -- **功能描述**:开始获取键盘在线信息,键盘在线返回键盘信息 [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
  1745 +- **功能描述**:开始获取键盘在线信息,键盘在线返回键盘信息
1732 1746 - **参数说明**
1733 1747  
1734 1748 |参数名|类型|限制|是否必填|说明|
1735 1749 |---|---|---|---|---|
1736 1750 |fun|string|-|是|指令名称|
1737 1751 |dataTag|string|-|否|数据包标识,可为空字符串|
  1752 +
  1753 +- **示例代码**
1738 1754 ```json
1739 1755 {
1740 1756 "fun": "startGetKpOnline",
... ... @@ -1751,6 +1767,8 @@
1751 1767 |---|---|---|---|---|
1752 1768 |fun|string|-|是|指令名称|
1753 1769 |dataTag|string|-|否|数据包标识,可为空字符串|
  1770 +
  1771 +- **示例代码**
1754 1772 ```json
1755 1773 {
1756 1774 "fun": "stopGetKpOnline",
... ... @@ -1761,8 +1779,36 @@
1761 1779 ##### [sEvtStateCode](#sevtstatecode)
1762 1780 发送指令后返回此事件
1763 1781  
1764   -##### [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
1765   -键盘在线返回此事件
  1782 +##### fEvtKpOnlineMsg
  1783 +- **主题**: /basestation/\${baseSN}/receive
  1784 +- **功能描述**:主动获取在线键盘时,在线键盘状态报告
  1785 +- **参数说明**
  1786 +
  1787 +|参数名|类型|限制|非空|说明|
  1788 +|---|---|---|---|---|
  1789 +|fun|string|-|是|事件名称|
  1790 +|dataTag|string|-|否|数据包标识|
  1791 +|data|object|-|是|传送参数的对象|
  1792 +|+keySn|string||是|键盘SN|
  1793 +|+version|string||是|键盘固件版本|
  1794 +|+model|int||是|键盘型号|
  1795 +|+voltage|double||是|键盘电量<font color="red">(待键盘修改成百分比)</font>|
  1796 +|+isWeak|int||是|是否弱电, 0-正常,1-弱电<font color="red">(待键盘修改上报弱电状态)</font>|
  1797 +
  1798 +- **示例代码**
  1799 +```Json
  1800 +{
  1801 + "fun":"fEvtKpOnlineMsg",
  1802 + "dataTag":"1",
  1803 + "data":{
  1804 + "keySn":"1234567890",
  1805 + "version":"1.0.0",
  1806 + "model":67,
  1807 + "voltage":2.8,
  1808 + "isWeak":0
  1809 + }
  1810 +}
  1811 +```
1766 1812  
1767 1813 ### 维护功能
1768 1814 #### 方法
... ... @@ -1931,6 +1977,8 @@
1931 1977 |data|array|-|是|传送参数的对象数组,不可为空|
1932 1978 |++keySn|string||是|需要设置绑定信息的键盘SN|
1933 1979 |++info|string||是|设置的绑定信息,一般为学生姓名<br>最长48个字符,显示在键盘左上角|
  1980 +
  1981 +- **示例代码**
1934 1982 ```json
1935 1983 {
1936 1984 "fun": "rtSetKpBindingInfo",
... ... @@ -1959,6 +2007,8 @@
1959 2007 |dataTag|string|-|否|数据包标识,可为空字符串|
1960 2008 |data|object|-|是|传送参数的对象数组|
1961 2009 |+keySns|array||否|需要清除绑定信息键盘SN数组,<br>空数组表示清空所有键盘|
  2010 +
  2011 +- **示例代码**
1962 2012 ```json
1963 2013 {
1964 2014 "fun": "clearKpBindingInfo",
... ... @@ -1984,6 +2034,8 @@
1984 2034 |data|array|-|否|传送参数的对象数组|
1985 2035 |++keySn|string||是|需要设置绑定信息的键盘SN|
1986 2036 |++state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  2037 +
  2038 +- **示例代码**
1987 2039 ```json
1988 2040 {
1989 2041 "fun": "fEvtKpBindingInfo",
... ... @@ -2011,6 +2063,8 @@
2011 2063 |dataTag|string|-|否|数据包标识,可为空字符串|
2012 2064 |data|object|-|否|传送参数的对象|
2013 2065 |+state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  2066 +
  2067 +- **示例代码**
2014 2068 ```json
2015 2069 {
2016 2070 "fun": "fEvtClearKpBindingInfo",
... ... @@ -2034,6 +2088,8 @@
2034 2088 |dataTag|string|-|否|数据包标识,可为空字符串|
2035 2089 |data|object|-|是|传递参数的对象|
2036 2090 |+mode|int|-|是|签到模式<br>1-按键签到,按OK键签到自动授权(<font color="red">暂不支持</font>)<br>2-PIN码签到,输入pin码后由应用程序决定是否授权|
  2091 +
  2092 +- **示例代码**
2037 2093 ```json
2038 2094 {
2039 2095 "fun": "rtStartKpSignIn",
... ... @@ -2052,6 +2108,8 @@
2052 2108 |---|---|---|---|---|
2053 2109 |fun|string|-|是|指令名称|
2054 2110 |dataTag|string|-|否|数据包标识,可为空字符串|
  2111 +
  2112 +- **示例代码**
2055 2113 ```json
2056 2114 {
2057 2115 "fun": "rtStopKpSignIn",
... ... @@ -2070,6 +2128,8 @@
2070 2128 |data|object|-|是|传递参数的对象|
2071 2129 |+keySn|string|-|是|键盘SN|
2072 2130 |+state|int|-|是|1-授权成功<br>2-授权失败<br>3-解除已授权|
  2131 +
  2132 +- **示例代码**
2073 2133 ```json
2074 2134 {
2075 2135 "fun": "rtSetKpLoginAllowed",
... ... @@ -2097,6 +2157,8 @@
2097 2157 |++keySn|string||是|键盘SN|
2098 2158 |++keyValue|string||是|键盘提交的按键值|
2099 2159 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2160 +
  2161 +- **示例代码**
2100 2162 ```json
2101 2163 {
2102 2164 "fun": "fEvtKpSignIn",
... ... @@ -2126,6 +2188,8 @@
2126 2188 |data|object|-|是|传送参数的对象|
2127 2189 |+keySn|string||是|键盘SN|
2128 2190 |+state|string||是|0-执行成功<br> 1-执行失败|
  2191 +
  2192 +- **示例代码**
2129 2193 ```json
2130 2194 {
2131 2195 "fun": "fEvtKpLoginAllowed",
... ... @@ -2156,6 +2220,8 @@
2156 2220 |+tip|string||否|提示的标题,长度不超过16字符|
2157 2221 |+simParams|object||否|内部模拟测试参数设置对象|
2158 2222 |++answer|string||是|预设提交的按键值<br>1-对 <br>2-错|
  2223 +
  2224 +- **示例代码**
2159 2225 ```json
2160 2226 {
2161 2227 "fun": "startQATrueFalse",
... ... @@ -2181,6 +2247,8 @@
2181 2247 |---|---|---|---|---|
2182 2248 |fun|string|-|是|指令名称|
2183 2249 |dataTag|string|-|否|数据包标识,可为空字符串|
  2250 +
  2251 +- **示例代码**
2184 2252 ```json
2185 2253 {
2186 2254 "fun": "stopQATrueFalse",
... ... @@ -2204,6 +2272,8 @@
2204 2272 |++keySn|string||是|键盘SN|
2205 2273 |++keyValue|string||是|键盘提交的按键值<br>1-对<br>2-错|
2206 2274 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2275 +
  2276 +- **示例代码**
2207 2277 ```json
2208 2278 {
2209 2279 "fun": "fEvtQATrueFalse",
... ... @@ -2238,6 +2308,8 @@
2238 2308 |+tip|string||否|提示的标题,长度不超过16字符|
2239 2309 |+simParams|object||否|内部模拟测试参数设置对象|
2240 2310 |++answer|string||是|预设提交的按键值|
  2311 +
  2312 +- **示例代码**
2241 2313 ```json
2242 2314 {
2243 2315 "fun": "startQAChoice",
... ... @@ -2266,6 +2338,8 @@
2266 2338 |---|---|---|---|---|
2267 2339 |fun|string|-|是|指令名称|
2268 2340 |dataTag|string|-|否|数据包标识,可为空字符串|
  2341 +
  2342 +- **示例代码**
2269 2343 ```json
2270 2344 {
2271 2345 "fun": "stopQAChoice",
... ... @@ -2289,6 +2363,8 @@
2289 2363 |++keySn|string||是|键盘SN|
2290 2364 |++keyValue|string||是|键盘提交的按键值|
2291 2365 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2366 +
  2367 +- **示例代码**
2292 2368 ```json
2293 2369 {
2294 2370 "fun": "fEvtQAChoice",
... ... @@ -2321,6 +2397,8 @@
2321 2397 |+tip|string||否|提示的标题,长度不超过16字符|
2322 2398 |+simParams|object||否|内部模拟测试参数设置对象|
2323 2399 |++answer|string||是|预设提交的按键值|
  2400 +
  2401 +- **示例代码**
2324 2402 ```json
2325 2403 {
2326 2404 "fun": "startQANum",
... ... @@ -2348,6 +2426,8 @@
2348 2426 |---|---|---|---|---|
2349 2427 |fun|string|-|是|指令名称|
2350 2428 |dataTag|string|-|否|数据包标识,可为空字符串|
  2429 +
  2430 +- **示例代码**
2351 2431 ```json
2352 2432 {
2353 2433 "fun": "stopQANum",
... ... @@ -2371,6 +2451,8 @@
2371 2451 |++keySn|string||是|键盘SN|
2372 2452 |++keyValue|string||是|键盘提交的按键值|
2373 2453 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2454 +
  2455 +- **示例代码**
2374 2456 ```json
2375 2457 {
2376 2458 "fun": "fEvtQANum",
... ... @@ -2400,6 +2482,8 @@
2400 2482 |+tip|string||否|提示的标题,长度不超过16字符|
2401 2483 |+simParams|object||否|内部模拟测试参数设置对象|
2402 2484 |++answer|string||是|预设提交的按键值|
  2485 +
  2486 +- **示例代码**
2403 2487 ```json
2404 2488 {
2405 2489 "fun": "startQAQuicker",
... ... @@ -2424,6 +2508,8 @@
2424 2508 |---|---|---|---|---|
2425 2509 |fun|string|-|是|指令名称|
2426 2510 |dataTag|string|-|否|数据包标识,可为空字符串|
  2511 +
  2512 +- **示例代码**
2427 2513 ```json
2428 2514 {
2429 2515 "fun": "stopQAQuicker",
... ... @@ -2447,6 +2533,8 @@
2447 2533 |++keySn|string||是|键盘SN|
2448 2534 |++keyValue|string||是|键盘提交的按键值|
2449 2535 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2536 +
  2537 +- **示例代码**
2450 2538 ```json
2451 2539 {
2452 2540 "fun": "fEvtQAQuicker",
... ... @@ -2481,6 +2569,8 @@
2481 2569 |++count | int||是| 题目数量 |
2482 2570 |+simParams|object||否|内部模拟测试参数设置对象|
2483 2571 |++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|
  2572 +
  2573 +- **示例代码**
2484 2574 ```json
2485 2575 //自定义题号
2486 2576 {
... ... @@ -2570,6 +2660,8 @@
2570 2660 |---|---|---|---|---|
2571 2661 |fun|string|-|是|指令名称|
2572 2662 |dataTag|string|-|否|数据包标识,可为空字符串|
  2663 +
  2664 +- **示例代码**
2573 2665 ```json
2574 2666 {
2575 2667 "fun": "stopKpExam",
... ... @@ -2587,6 +2679,8 @@
2587 2679 |dataTag|string|-|否|数据包标识,可为空字符串|
2588 2680 |data|object|-|是|传送参数的对象|
2589 2681 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2682 +
  2683 +- **示例代码**
2590 2684 ```json
2591 2685 {
2592 2686 "fun": "rtGetKpExamData",
... ... @@ -2607,6 +2701,8 @@
2607 2701 |dataTag|string|-|否|数据包标识,可为空字符串|
2608 2702 |data|object|-|是|传送参数的对象|
2609 2703 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  2704 +
  2705 +- **示例代码**
2610 2706 ```json
2611 2707 {
2612 2708 "fun": "rtKpAllowEdited",
... ... @@ -2633,6 +2729,8 @@
2633 2729 |++keySn|string||是|键盘SN|
2634 2730 |++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B|
2635 2731 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2732 +
  2733 +- **示例代码**
2636 2734 ```json
2637 2735 {
2638 2736 "fun": "fEvtKpExam",
... ... @@ -2663,6 +2761,8 @@
2663 2761 |++keySn|string||是|键盘SN|
2664 2762 |++keyValue|string||是|0 - 未提交(提交完成后,允许键盘修改答案时上报)<br>1 - 已交卷|
2665 2763 |++keyTime|double||是|提交时间,从启动开始计算,单位秒|
  2764 +
  2765 +- **示例代码**
2666 2766 ```json
2667 2767 {
2668 2768 "fun": "fEvtFinalSubmit",
... ...
通讯协议-B200W-MQTT协议[外].md
... ... @@ -97,7 +97,7 @@
97 97 |功能归类|功能|API指令|指令事件|
98 98 |---|---|---|---|
99 99 |交互设置 - 用户实时提示信息|实时设置提示反馈信息|[rtSetKpUserPrompt](#rtsetkpuserprompt)|[sEvtStateCode](#sevtstatecode)<br>[fEvtSetKpUserPrompt](#fevtsetkpuserprompt)|
100   -|在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  100 +|在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpOnlineMsg](#fevtkponlinemsg)|
101 101 ||停止扫描在线键盘|[stopGetKpOnline](#stopgetkponline)|[sEvtStateCode](#sevtstatecode)|
102 102 |维护功能 - 遥控功能|遥控键盘休眠|[remoteKpSleep](#remotekpsleep)|[sEvtStateCode](#sevtstatecode)|
103 103 ### 绑定
... ... @@ -227,7 +227,6 @@
227 227 |+keySn|string||是|键盘SN|
228 228 |+version|string||是|键盘固件版本|
229 229 |+model|int||是|键盘型号|
230   -|+voltage|double||是|键盘电压|
231 230  
232 231 - **示例代码**
233 232 ```Json
... ... @@ -237,8 +236,7 @@
237 236 "data":{
238 237 "keySn":"1234567890",
239 238 "version":"1.0.0",
240   - "model":67,
241   - "voltage":2.8
  239 + "model":67
242 240 }
243 241 }
244 242 ```
... ... @@ -969,6 +967,9 @@
969 967 |data|array|-|否|传送参数的对象数组|
970 968 |++keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘<br><font color="red">注意:不允许空数组和指定SN数组混合使用<br>包含空数组默认为全部在线键盘,其他指定键盘无效</font>|
971 969 |++info|string||否|设置的反馈信息<br>不同键盘可设置不同反馈信息|
  970 +
  971 +- **示例代码**
  972 +
972 973 ```json
973 974 //分别提示
974 975 {
... ... @@ -1013,6 +1014,9 @@
1013 1014 |data|array|-|是|传送参数的对象数组|
1014 1015 |++keySn|string||是|设置提示语信息的键盘SN|
1015 1016 |++state|string||是|设置的提示语是否成功<br>0 - 成功<br>1 - 失败|
  1017 +
  1018 +- **示例代码**
  1019 +
1016 1020 ```json
1017 1021 {
1018 1022 "fun": "fEvtSetKpUserPrompt",
... ... @@ -1037,13 +1041,16 @@
1037 1041 #### 方法
1038 1042 ##### startGetKpOnline
1039 1043 - **主题**:/client/\${baseSN}/send
1040   -- **功能描述**:开始获取键盘在线信息,键盘在线返回键盘信息 [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
  1044 +- **功能描述**:开始获取键盘在线信息,键盘在线返回键盘信息
1041 1045 - **参数说明**
1042 1046  
1043 1047 |参数名|类型|限制|是否必填|说明|
1044 1048 |---|---|---|---|---|
1045 1049 |fun|string|-|是|指令名称|
1046 1050 |dataTag|string|-|否|数据包标识,可为空字符串|
  1051 +
  1052 +- **示例代码**
  1053 +
1047 1054 ```json
1048 1055 {
1049 1056 "fun": "startGetKpOnline",
... ... @@ -1060,6 +1067,9 @@
1060 1067 |---|---|---|---|---|
1061 1068 |fun|string|-|是|指令名称|
1062 1069 |dataTag|string|-|否|数据包标识,可为空字符串|
  1070 +
  1071 +- **示例代码**
  1072 +
1063 1073 ```json
1064 1074 {
1065 1075 "fun": "stopGetKpOnline",
... ... @@ -1070,8 +1080,34 @@
1070 1080 ##### [sEvtStateCode](#sevtstatecode)
1071 1081 发送指令后返回此事件
1072 1082  
1073   -##### [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
1074   -键盘在线返回此事件
  1083 +##### fEvtKpOnlineMsg
  1084 +- **主题**: /basestation/\${baseSN}/receive
  1085 +- **功能描述**:主动获取在线键盘时,在线键盘状态报告
  1086 +- **参数说明**
  1087 +
  1088 +|参数名|类型|限制|非空|说明|
  1089 +|---|---|---|---|---|
  1090 +|fun|string|-|是|事件名称|
  1091 +|dataTag|string|-|否|数据包标识|
  1092 +|data|object|-|是|传送参数的对象|
  1093 +|+keySn|string||是|键盘SN|
  1094 +|+version|string||是|键盘固件版本|
  1095 +|+model|int||是|键盘型号|
  1096 +|+voltage|double||是|键盘电量|
  1097 +
  1098 +- **示例代码**
  1099 +```Json
  1100 +{
  1101 + "fun":"fEvtKpOnlineMsg",
  1102 + "dataTag":"1",
  1103 + "data":{
  1104 + "keySn":"1234567890",
  1105 + "version":"1.0.0",
  1106 + "model":67,
  1107 + "voltage":2.8
  1108 + }
  1109 +}
  1110 +```
1075 1111  
1076 1112 ### 维护功能
1077 1113 #### 方法
... ... @@ -1116,6 +1152,9 @@
1116 1152 |data|array|-|是|传送参数的对象数组,不可为空|
1117 1153 |++keySn|string||是|需要设置绑定信息的键盘SN|
1118 1154 |++info|string||是|设置的绑定信息,一般为学生姓名<br>最长48个字符,显示在键盘左上角|
  1155 +
  1156 +- **示例代码**
  1157 +
1119 1158 ```json
1120 1159 {
1121 1160 "fun": "rtSetKpBindingInfo",
... ... @@ -1144,6 +1183,9 @@
1144 1183 |dataTag|string|-|否|数据包标识,可为空字符串|
1145 1184 |data|object|-|是|传送参数的对象数组|
1146 1185 |+keySns|array||否|需要清除绑定信息键盘SN数组,<br>空数组表示清空所有键盘|
  1186 +
  1187 +- **示例代码**
  1188 +
1147 1189 ```json
1148 1190 {
1149 1191 "fun": "clearKpBindingInfo",
... ... @@ -1169,6 +1211,9 @@
1169 1211 |data|array|-|否|传送参数的对象数组|
1170 1212 |++keySn|string||是|需要设置绑定信息的键盘SN|
1171 1213 |++state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  1214 +
  1215 +- **示例代码**
  1216 +
1172 1217 ```json
1173 1218 {
1174 1219 "fun": "fEvtKpBindingInfo",
... ... @@ -1196,6 +1241,9 @@
1196 1241 |dataTag|string|-|否|数据包标识,可为空字符串|
1197 1242 |data|object|-|否|传送参数的对象|
1198 1243 |+state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  1244 +
  1245 +- **示例代码**
  1246 +
1199 1247 ```json
1200 1248 {
1201 1249 "fun": "fEvtClearKpBindingInfo",
... ... @@ -1219,6 +1267,9 @@
1219 1267 |dataTag|string|-|否|数据包标识,可为空字符串|
1220 1268 |data|object|-|是|传递参数的对象|
1221 1269 |+mode|int|-|是|签到模式<br>2-PIN码签到,输入pin码后由应用程序决定是否授权|
  1270 +
  1271 +- **示例代码**
  1272 +
1222 1273 ```json
1223 1274 {
1224 1275 "fun": "rtStartKpSignIn",
... ... @@ -1237,6 +1288,9 @@
1237 1288 |---|---|---|---|---|
1238 1289 |fun|string|-|是|指令名称|
1239 1290 |dataTag|string|-|否|数据包标识,可为空字符串|
  1291 +
  1292 +- **示例代码**
  1293 +
1240 1294 ```json
1241 1295 {
1242 1296 "fun": "rtStopKpSignIn",
... ... @@ -1255,6 +1309,9 @@
1255 1309 |data|object|-|是|传递参数的对象|
1256 1310 |+keySn|string|-|是|键盘SN|
1257 1311 |+state|int|-|是|1-授权成功<br>2-授权失败<br>3-解除已授权|
  1312 +
  1313 +- **示例代码**
  1314 +
1258 1315 ```json
1259 1316 {
1260 1317 "fun": "rtSetKpLoginAllowed",
... ... @@ -1282,6 +1339,9 @@
1282 1339 |++keySn|string||是|键盘SN|
1283 1340 |++keyValue|string||是|键盘提交的按键值|
1284 1341 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1342 +
  1343 +- **示例代码**
  1344 +
1285 1345 ```json
1286 1346 {
1287 1347 "fun": "fEvtKpSignIn",
... ... @@ -1311,6 +1371,9 @@
1311 1371 |data|object|-|是|传送参数的对象|
1312 1372 |+keySn|string||是|键盘SN|
1313 1373 |+state|string||是|0-执行成功<br> 1-执行失败|
  1374 +
  1375 +- **示例代码**
  1376 +
1314 1377 ```json
1315 1378 {
1316 1379 "fun": "fEvtKpLoginAllowed",
... ... @@ -1338,6 +1401,9 @@
1338 1401 |+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×|
1339 1402 |+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改|
1340 1403 |+tip|string||否|提示的标题,长度不超过16字符|
  1404 +
  1405 +- **示例代码**
  1406 +
1341 1407 ```json
1342 1408 {
1343 1409 "fun": "startQATrueFalse",
... ... @@ -1359,6 +1425,9 @@
1359 1425 |---|---|---|---|---|
1360 1426 |fun|string|-|是|指令名称|
1361 1427 |dataTag|string|-|否|数据包标识,可为空字符串|
  1428 +
  1429 +- **示例代码**
  1430 +
1362 1431 ```json
1363 1432 {
1364 1433 "fun": "stopQATrueFalse",
... ... @@ -1382,6 +1451,9 @@
1382 1451 |++keySn|string||是|键盘SN|
1383 1452 |++keyValue|string||是|键盘提交的按键值<br>1-对<br>2-错|
1384 1453 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1454 +
  1455 +- **示例代码**
  1456 +
1385 1457 ```json
1386 1458 {
1387 1459 "fun": "fEvtQATrueFalse",
... ... @@ -1413,6 +1485,9 @@
1413 1485 |+optionalN|int||是|可选项个数,1≤N≤M(默认值1)|
1414 1486 |+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
1415 1487 |+tip|string||否|提示的标题,长度不超过16字符|
  1488 +
  1489 +- **示例代码**
  1490 +
1416 1491 ```json
1417 1492 {
1418 1493 "fun": "startQAChoice",
... ... @@ -1437,6 +1512,9 @@
1437 1512 |---|---|---|---|---|
1438 1513 |fun|string|-|是|指令名称|
1439 1514 |dataTag|string|-|否|数据包标识,可为空字符串|
  1515 +
  1516 +- **示例代码**
  1517 +
1440 1518 ```json
1441 1519 {
1442 1520 "fun": "stopQAChoice",
... ... @@ -1460,6 +1538,9 @@
1460 1538 |++keySn|string||是|键盘SN|
1461 1539 |++keyValue|string||是|键盘提交的按键值|
1462 1540 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1541 +
  1542 +- **示例代码**
  1543 +
1463 1544 ```json
1464 1545 {
1465 1546 "fun": "fEvtQAChoice",
... ... @@ -1490,6 +1571,9 @@
1490 1571 |+numMax|int||是|可输入上限,mode=1有效,范围0-100|
1491 1572 |+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
1492 1573 |+tip|string||否|提示的标题,长度不超过16字符|
  1574 +
  1575 +- **示例代码**
  1576 +
1493 1577 ```json
1494 1578 {
1495 1579 "fun": "startQANum",
... ... @@ -1514,6 +1598,9 @@
1514 1598 |---|---|---|---|---|
1515 1599 |fun|string|-|是|指令名称|
1516 1600 |dataTag|string|-|否|数据包标识,可为空字符串|
  1601 +
  1602 +- **示例代码**
  1603 +
1517 1604 ```json
1518 1605 {
1519 1606 "fun": "stopQANum",
... ... @@ -1537,11 +1624,14 @@
1537 1624 |++keySn|string||是|键盘SN|
1538 1625 |++keyValue|string||是|键盘提交的按键值|
1539 1626 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1627 +
  1628 +- **示例代码**
  1629 +
1540 1630 ```json
1541 1631 {
1542 1632 "fun": "fEvtQANum",
1543 1633 "dataTag":"1",
1544   - "data": [{
  1634 + "data":[{
1545 1635 "keySn": "1234567890",
1546 1636 "keyValue":"10",
1547 1637 "keyTime":3.2
... ... @@ -1564,6 +1654,9 @@
1564 1654 |+mode|int||是|模式<br>0:普通抢答|
1565 1655 |+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
1566 1656 |+tip|string||否|提示的标题,长度不超过16字符|
  1657 +
  1658 +- **示例代码**
  1659 +
1567 1660 ```json
1568 1661 {
1569 1662 "fun": "startQAQuicker",
... ... @@ -1585,6 +1678,9 @@
1585 1678 |---|---|---|---|---|
1586 1679 |fun|string|-|是|指令名称|
1587 1680 |dataTag|string|-|否|数据包标识,可为空字符串|
  1681 +
  1682 +- **示例代码**
  1683 +
1588 1684 ```json
1589 1685 {
1590 1686 "fun": "stopQAQuicker",
... ... @@ -1608,6 +1704,9 @@
1608 1704 |++keySn|string||是|键盘SN|
1609 1705 |++keyValue|string||是|键盘提交的按键值|
1610 1706 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1707 +
  1708 +- **示例代码**
  1709 +
1611 1710 ```json
1612 1711 {
1613 1712 "fun": "fEvtQAQuicker",
... ... @@ -1640,6 +1739,9 @@
1640 1739 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
1641 1740 |++startNo | int||是| 起始题号 |
1642 1741 |++count | int||是| 题目数量 |
  1742 +
  1743 +- **示例代码**
  1744 +
1643 1745 ```json
1644 1746 //自定义题号
1645 1747 {
... ... @@ -1720,6 +1822,9 @@
1720 1822 |---|---|---|---|---|
1721 1823 |fun|string|-|是|指令名称|
1722 1824 |dataTag|string|-|否|数据包标识,可为空字符串|
  1825 +
  1826 +- **示例代码**
  1827 +
1723 1828 ```json
1724 1829 {
1725 1830 "fun": "stopKpExam",
... ... @@ -1737,6 +1842,9 @@
1737 1842 |dataTag|string|-|否|数据包标识,可为空字符串|
1738 1843 |data|object|-|是|传送参数的对象|
1739 1844 |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  1845 +
  1846 +- **示例代码**
  1847 +
1740 1848 ```json
1741 1849 {
1742 1850 "fun": "rtKpAllowEdited",
... ... @@ -1763,6 +1871,9 @@
1763 1871 |++keySn|string||是|键盘SN|
1764 1872 |++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B|
1765 1873 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1874 +
  1875 +- **示例代码**
  1876 +
1766 1877 ```json
1767 1878 {
1768 1879 "fun": "fEvtKpExam",
... ... @@ -1793,6 +1904,9 @@
1793 1904 |++keySn|string||是|键盘SN|
1794 1905 |++keyValue|string||是|0 - 未提交(提交完成后,允许键盘修改答案时上报)<br>1 - 已交卷|
1795 1906 |++keyTime|double||是|提交时间,从启动开始计算,单位秒|
  1907 +
  1908 +- **示例代码**
  1909 +
1796 1910 ```json
1797 1911 {
1798 1912 "fun": "fEvtFinalSubmit",
... ...
通讯协议-平台化-应用部分.md 0 → 100644
  1 +<style>
  2 + table {
  3 + width: 100%; /* 或者具体的像素值,例如:1200px */
  4 + table-layout: fixed; /* 保持列宽固定 */
  5 + }
  6 + th, td {
  7 + word-wrap: break-word; /* 允许文本换行 */
  8 + }
  9 + .delline{
  10 + text-decoration:line-through;
  11 + }
  12 + .yellowFill{
  13 + background-color: yellow;
  14 + }
  15 +</style>
  16 +# SunVote 应用通讯协议
  17 +
  18 +[TOC]
  19 +
  20 +# 功能说明
  21 +应用与基站通讯可分为两种:一是直连基站,基站直接插在电脑的USB接口,应用程序通过WebSocket方式调用SDK与基站进行通讯,另一种是网连基站,基站直接连接网络,应用程序通过MQTT服务器发布和订阅相关的主题与基站进行通讯。两种连接方式通讯的数据格式统一为Json数据格式,内容一致,仅在连接方式和数据的发送形式有所不同。
  22 +本文档约定了应用程序和基站之间进行通讯的数据格式和内容,供开发人员查阅。
  23 +
  24 +## MQTT方式主题说明
  25 +\${baseSN}为指定的基站的SN编码,不能为空,接收基站反馈数据需要订阅对应基站SN的接收主题。
  26 +### 发布的主题
  27 +应用程序发布的主题,基站订阅
  28 +/client/\${baseSN}/send
  29 +/client/multiBase/send
  30 +
  31 +<span class="yellowFill">内部应用发布的主题,基站订阅
  32 +/manage/\${baseSN}/send</span>
  33 +
  34 +### 订阅的主题
  35 +应用程序订阅的主题,基站发布
  36 +/basestation/\\${baseSN}/receive
  37 +/basestation/multiBase/receive
  38 +
  39 +<span class="yellowFill">内部应用订阅的主题,基站发布
  40 +/manage/\${baseSN}/receive</span>
  41 +
  42 +## Websocket方式
  43 +WebSocket方式应用与SDK或基站建立长连接后,通过WebSocket接口发送接收数据即可。应用程序发送至基站约定为发送指令,基站返回数据约定为返回事件。
  44 +通过SDK连接基站时,需先初始化SDK,再与SDK建立WebSocket连接。
  45 +**init() 初始化SDK**
  46 +
  47 +|参数名|类型|限制|非空|说明|
  48 +|-----|-----|-----|-----|-----|
  49 +|ip|string|-|是|连接的服务器ip|
  50 +|port|int|-|是|服务器的端口|
  51 +
  52 +- **示例代码**
  53 +```C#
  54 + SunVoteSdk sdk = new SunVoteSdk();
  55 + sdk.init("127.0.0.1",9004);
  56 +```
  57 +
  58 +## 指令说明
  59 +|指令功能标识 |说明 |约束|
  60 +|---|---|---|
  61 +|get| 待机状态下获取参数属性状态及数据 |待机状态|
  62 +|set| 待机状态下设置参数属性状态及数据 |待机状态|
  63 +|start| 运行一个单进程业务实例(函数) |待机状态|
  64 +|stop| 停止一个单进程业务实例(函数) |待机状态|
  65 +|rtXXX| 在线状态下可实时执行方法及函数 ||
  66 +
  67 +## 事件说明
  68 +|事件标识| 说明| 约束|
  69 +|---|---|---|
  70 +|sEvtXXX|系统事件 |自动返回|
  71 +|fEvtXXX|指令事件 |调用对应指令后返回|
  72 +
  73 +## 数据格式约定
  74 +- 数据格式统一为**Json**格式,发送接收消息编码统一为**UTF-8**
  75 +- Json通用格式如下:
  76 +
  77 +```json
  78 + {
  79 + "fun":"xxx",
  80 + "dataTag":"xxx",
  81 + "baseSn":"xxxxxxxxx", //MQTT方式连接时,主题中已有baseSN,此字段可不传
  82 + "data":{
  83 + //内容
  84 + }
  85 + }
  86 +```
  87 +
  88 +<font color="red">注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式</font>
  89 +
  90 +## 功能速查一览表
  91 +### SDK管理
  92 +通过SDK直连基站时有效
  93 +|功能归类|功能|API指令|指令/系统事件|
  94 +|---|---|---|---|
  95 +|SDK连接 - 保持连接|发送心跳信号|[heartbeat](#heartbeat)|[heartbeat](#heartbeat)|
  96 +|SDK连接 - 保持连接|设置心跳间隔|[setHeartbeatInterval](#setheartbeatinterval)|[fEvtHeartbeatInterval](#fevtheartbeatinterval)|
  97 +|SDK识别 - SDK版本|获取SDK版本|[getSdkVersion](#getsdkversion)|[fEvtSdkVersion](#fevtsdkversion)|
  98 +|SDK连接 - 终止连接|关闭SDK连接|[closeSdk](#closesdk)|-|
  99 +
  100 +### 公共事件
  101 +无需调用指令,自动返回的事件
  102 +|功能归类|功能|API指令|指令/系统事件|
  103 +|---|---|---|---|
  104 +|公共事件|指令接收状态|-|[sEvtStateCode](#sevtstatecode)|
  105 +|公共事件|基站连接状态变化|-|[sEvtBsConnectState](#sevtbsconnectstate)|
  106 +|公共事件|基站信道冲突|-|[sEvtBsChannelConflict](#sevtbschannelconflict)|
  107 +|公共事件|键盘上线通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  108 +|公共事件|键盘刷卡事件|-|[sEvtBsNfcResults](#sevtbsnfcresults)|
  109 +|公共事件|在线键盘列表|-|[sEvtBsKpOnlineList](#sevtbskponlinelist)|
  110 +|公共事件|键盘待机实时按键反馈|-|[sEvtKpRtFeedback](#sevtkprtfeedback)|
  111 +|公共事件|键盘待机实时语音反馈|-|[sEvtKpRtVoice](#sevtkprtvoice)|
  112 +|公共事件|键盘举手键实时按键反馈|-|[sEvtKpHandUp](#sevtkphandup)|
  113 +|公共事件|遥控器实时按键反馈|-|[sEvtKpRemoteControl](#sevtkpremotecontrol)|
  114 +
  115 +### 基站管理
  116 +|功能归类|功能|API指令|指令/系统事件|
  117 +|---|---|---|---|
  118 +|基站连接 - 获取在线基站|主动获取在线基站信息<br>不确定基站SN时|[getBsOnlineState](#getbsonlinestate)|[fEvtBsOnlineState](#fevtbsonlinestate)|
  119 +|基站连接 - 主动获取状态|主动获取基站连接状态|[getBsConnectState](#getbsconnectstate)|[sEvtBsConnectState](#sevtbsconnectstate)|
  120 +|基站连接 - 自动获取状态|基站连接变化系统通知|-|[sEvtBsConnectState](#sevtbsconnectstate)|
  121 +|键盘上线通知|单个键盘上线系统通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  122 +|识别设置 - 出厂编码|获取基站出厂编码|[getBsSN](#getbssn)|[fEvtBsSN](#fevtbssn)|
  123 +||<font color="red">设置基站出厂编码(内)|[setBsSN](#setbssn)|[fEvtBsSN](#fevtbssn)|
  124 +|识别设置 - 基站型号|读取基站型号|[getBsModel](#getbsmodel)|[fEvtBsModel](#fevtbsmodel)|
  125 +|识别设置 - 固件版本|获取基站固件版本|[getBsFWVersion](#getbsfwversion)|[fEvtBsFWVersion](#fevtbsfwversion)|
  126 +|识别设置 - 品牌识别码|获取基站品牌识别码|[getBsBIC](#getbsbic)|[fEvtBsBIC](#fevtbsbic)|
  127 +||<font color="red">设置基站品牌识别码(内)|[setBsBIC](#setbsbic)|[fEvtBsBIC](#fevtbsbic)|
  128 +|组网设置 - 组网模式|获取基站组网模式|[getBsNetworkMode](#getbsnetworkmode)|[fEvtBsNetworkMode](#fevtbsnetworkmode)|
  129 +||设置基站组网模式|[setBsNetworkMode](#setbsnetworkmode)|[fEvtBsNetworkMode](#fevtbsnetworkmode)|
  130 +|组网设置 - 配对码|获取基站配对码|[getBsPairCode](#getbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
  131 +||<font color="red">设置基站配对码(内)</font>|[setBsPairCode](#setbspaircode)|[fEvtBsPairCode](#fevtbspaircode)|
  132 +|组网设置 - 刷卡配对状态|获取刷卡配对状态|[getBsNfcLogin](#getbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)|
  133 +||设置刷卡配对状态|[setBsNfcLogin](#setbsnfclogin)|[fEvtBsNfcLogin](#fevtbsnfclogin)||
  134 +|组网设置 - 组网容量|获取基站容量|[getBsCapacity](#getbscapacity)|[fEvtBsCapacity](#fevtbscapacity)|
  135 +||设置基站连接容量|[setBsCapacity](#setbscapacity)|[fEvtBsCapacity](#fevtbscapacity)||
  136 +|组网设置 - 工作信道|获取基站工作信道|[getBsChannel](#getbschannel)|[fEvtBsChannel](#fevtbschannel)|
  137 +||设置基站工作信道|[setBsChannel](#setbschannel)|[fEvtBsChannel](#fevtbschannel)||
  138 +|登录设置 - 登录名称|获取基站登录名称|[getBsSSID](#getbsssid)|[fEvtBsSSID](#fevtbsssid)|
  139 +||设置基站登录名称|[setBsSSID](#setbsssid)|[fEvtBsSSID](#fevtbsssid)||
  140 +|登录设置 - 登录密码|获取基站登录密码|[getBsLoginPwd](#getbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)|
  141 +||设置基站登录密码|[setBsLoginPwd](#setbsloginpwd)|[fEvtBsLoginPwd](#fevtbsloginpwd)||
  142 +|登录设置 - 基站登录状态|获取基站登录状态|[getBsLoginState](#getbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)|
  143 +||设置基站登录状态|[setBsLoginState](#setbsloginstate)|[fEvtBsLoginState](#fevtbsloginstate)||
  144 +|键盘统一设置 - 键盘语言|获取键盘语言|[getBsKpLanguage](#getbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)|
  145 +||设置键盘语言|[setBsKpLanguage](#setbskplanguage)|[fEvtBsKpLanguage](#fevtbskplanguage)||
  146 +|键盘统一设置 - 状态语模式|获取状态语设置状态|[getBsKpStbMsgMode](#getbskpstbmsgmode)|[fEvtBsKpStbMsgMode](#fevtbskpstbmsgmode)|
  147 +||设置状态语工作状态|[setBsKpStbMsgMode](#setbskpstbmsgmode)|[fEvtBsKpStbMsgMode](#fevtbskpstbmsgmode)|||
  148 +|键盘统一设置 - 登录菜单|获取键盘登录菜单状态|[getBsKpLoginMenu](#getbskploginmenu)|[fEvtBsKpLoginMenu](#fevtbskploginmenu)|
  149 +||设置键盘登录菜单状态|[setBsKpLoginMenu](#setbskploginmenu)|[fEvtBsKpLoginMenu](#fevtbskploginmenu)|||
  150 +|键盘统一设置 - LED模式|获取LED设置状态|[getBsKpLedMode](#getbskpledmode)|[fEvtBsKpLedMode](#fevtbskpledmode)|
  151 +||设置LED工作状态|[setBsKpLedMode](#setbskpledmode)|[fEvtBsKpLedMode](#fevtbskpledmode)|
  152 +|键盘统一设置 - Beep模式|获取Beep设置状态|[getBsKpBeepMode](#getbskpbeepmode)|[fEvtBsKpBeepMode](#fevtbskpbeepmode)|
  153 +||设置Beep工作状态|[setBsKpBeepMode](#setbskpbeepmode)|[fEvtBsKpBeepMode](#fevtbskpbeepmode)|
  154 +|键盘统一设置 - 长距考勤|获取键盘长距考勤状态|[getBsKpRFIDState](#getbskprfidstate)|[fEvtBsKpRFIDState](#fevtbskprfidstate)|
  155 +||设置键盘长距考勤状态|[setBsKpRFIDState](#setbskprfidstate)|[fEvtBsKpRFIDState](#fevtbskprfidstate)|
  156 +|键盘统一设置 - 暂停休眠|设置键盘暂停休眠状态|[setBsKpPauseSleep](#setbskppausesleep)|[fEvtBsKpPauseSleep](#fevtbskppausesleep)|
  157 +|配对模式 - 快速配对|启动基站快速配对|[startBsFastPair](#startbsfastpair)|[sEvtStateCode](#sevtstatecode)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  158 +||停止基站快速配对|[stopBsFastPair](#stopbsfastpair)|[sEvtStateCode](#sevtstatecode)|
  159 +|白名单模式 - 白名单管理|获取白名单|[getBsWhitelist](#getbswhitelist)|[fEvtBsWhitelist](#fevtbswhitelist)|
  160 +||设置白名单|[setBsWhitelist](#setbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
  161 +||清空白名单|[clearBsWhitelist](#clearbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
  162 +||增加白名单|[addBsWhitelist](#addbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtAddBsWhitelist](#fevtaddbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
  163 +||删除白名单|[delBsWhitelist](#delbswhitelist)|[sEvtStateCode](#sevtstatecode)<br>[fEvtDelBsWhitelist](#fevtdelbswhitelist)<br>[fEvtBsWhitelist](#fevtbswhitelist)|
  164 +||锁定白名单|[lockBsWhitelistKp](#lockbswhitelistkp)|[fEvtLockBsWhitelistKp](#fevtlockbswhitelistkp)|
  165 +||解锁白名单|[unlockBsWhitelistKp](#unlockbswhitelistkp)|[fEvtLockBsWhitelistKp](#fevtlockbswhitelistkp)|
  166 +|基站加密 - 软件狗|获取基站软件狗|[getBsSoftwareKey](#getbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
  167 +||设置基站软件狗|[setBsSoftwareKey](#setbssoftwarekey)|[fEvtBsSoftwareKey](#fevtbssoftwarekey)|
  168 +|基站加密 - AES加密|获取基站AES加密状态|[getBsAES](#getbsaes)|[fEvtBsAES](#fevtbsaes)|
  169 +||设置基站AES加密状态|[setBsAES](#setbsaes)|[fEvtBsAES](#fevtbsaes)|
  170 +|网络设置 - TCP/IP参数|获取TCP/IP参数|[getBsTcpipParams](#getbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
  171 +||设置TCP/IP参数|[setBsTcpipParams](#setbstcpipparams)|[fEvtBsTcpipParams](#fevtbstcpipparams)|
  172 +|网络设置 - MQTT参数|获取MQTT参数|[getBsMqttParams](#getbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
  173 +||设置MQTT参数|[setBsMqttParams](#setbsmqttparams)|[fEvtBsMqttParams](#fevtbsmqttparams)|
  174 +|基站升级|<font color="red">开启基站升级(内)|[startBsUpdate](#startbsupdate)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsUpateState](#fevtbsupatestate)<br>[fEvtBsUpdateProgress](#fevtbsupdateprogress)|
  175 +||<font color="red">下载字库(内)|[downloadFontLib](#downloadfontlib)|[sEvtStateCode](#sevtstatecode)<br>[fEvtBsFontLibState](#fevtbsfontlibstate)<br>[fEvtBsFontLibProgress](#fevtbsfontlibprogress)|
  176 +### 键盘管理
  177 +|功能归类|功能|API指令|指令事件|
  178 +|---|---|---|---|
  179 +|<font color="red">识别设置 - 出厂编码(内)|<font color="red">设置键盘出厂编码(内)|[setKpSN](#setkpsn)|[fEvtKpSN](#fevtkpsn)|
  180 +|识别设置 - 键盘编号|获取键盘编号|[getKpID](#getkpid)|[fEvtKpID](#fevtkpid)|
  181 +|<font color="red">识别设置 - 键盘编号(内)|<font color="red">设置键盘编号(内)|[setKpID](#setkpid)|[fEvtKpID](#fevtkpid)|
  182 +|识别设置 - 键盘型号|获取键盘型号|[getKpModel](#getkpmodel)|[fEvtKpModel](#fevtkpmodel)|
  183 +|识别设置 - 键盘固件版本|获取键盘固件版本|[getKpFWVersion](#getKpfwversion)|[fEvtKpFWVersion](#fevtkpfwversion)|
  184 +|<font color="red">识别设置 - 识别模式(内)|<font color="red">获取键盘识别模式(内)|[getKpIdentityMode](#getkpidentitymode)|[fEvtKpIdentityMode](#fevtkpidentitymode)|
  185 +||<font color="red">设置键盘识别模式(内)|[setKpIdentityMode](#setkpidentitymode)|[fEvtKpIdentityMode](#fevtkpidentitymode)|
  186 +|交互设置 - 用户内置状态语|设置用户内置状态语|[setKpUserStbMsg](#setkpuserstbmsg)|[fEvtKpUserStbMsg](#fevtkpuserstbmsg)|
  187 +|交互设置 - 用户实时提示反馈信息|实时设置提示反馈信息|[rtSetKpUserPrompt](#rtsetkpuserprompt)|[sEvtStateCode](#sevtstatecode)<br>[fEvtSetKpUserPrompt](#fevtsetkpuserprompt)|
  188 +||实时设置LED效果|[rtSetKpUserLedEffects](#rtsetkpuserledeffects)|[sEvtStateCode](#sevtstatecode)|
  189 +||实时设置振动效果|[rtSetKpUserVibEffects](#rtsetkpuservibeffects)|[sEvtStateCode](#sevtstatecode)|
  190 +||实时设置Beep效果|[rtSetKpUserBeepEffects](#rtsetkpuserbeepeffects)|[sEvtStateCode](#sevtstatecode)|
  191 +|在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpOnlineMsg](#fevtkponlinemsg)|
  192 +||停止扫描在线键盘|[stopGetKpOnline](#stopgetkponline)|[sEvtStateCode](#sevtstatecode)|
  193 +|维护功能 - 遥控功能|遥控键盘关机|[remoteKpPowerOff](#remotekppoweroff)|[sEvtStateCode](#sevtstatecode)|
  194 +||遥控键盘休眠|[remoteKpSleep](#remotekpsleep)|[sEvtStateCode](#sevtstatecode)|
  195 +|维护功能 - 键盘升级|<font color="red">启动键盘无线升级(内)|[startKpFWUpdate](#startkpfwupdate)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpFWUpdateState](#fevtkpfwupdatestate)<br>[fEvtKpUpdateProgress](#fevtkpupdateprogress)<br>[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)|
  196 +||<font color="red">停止键盘无线升级(内)|[stopKpFWUpdate](#stopkpfwupdate)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpFWUpdateState](#fevtkpfwupdatestate)|
  197 +### 绑定
  198 +|功能归类|功能|API指令|指令事件|
  199 +|---|---|---|---|
  200 +|无线绑定|设置绑定信息到键盘|[rtSetKpBindingInfo](#rtsetkpbindinginfo)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpBindingInfo](#fevtkpbindinginfo)|
  201 +||清除键盘绑定信息|[clearKpBindingInfo](#clearkpbindinginfo)|[sEvtStateCode](#sevtstatecode)<br>[fEvtClearKpBindingInfo](#fevtclearkpbindinginfo)|
  202 +### 签到
  203 +|功能归类|功能|API指令|指令事件|
  204 +|---|---|---|---|
  205 +|同步签到|启动同步签到|[startKpSignIn](#startkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
  206 +||停止同步签到|[stopKpSignIn](#stopkpsignin)|[sEvtStateCode](#sevtstatecode)|
  207 +|随时签到|启动随时签到|[rtStartKpSignIn](#rtstartkpsignin)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpSignIn](#fevtkpsignin)|
  208 +||停止随时签到|[rtStopKpSignIn](#rtstopkpsignin)|[sEvtStateCode](#sevtstatecode)|
  209 +||实时PIN签到授权|[rtSetKpLoginAllowed](#rtsetkploginallowed)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpLoginAllowed](#fevtkploginallowed)|
  210 +### 按键反馈
  211 +|功能归类|功能|API指令|指令事件|
  212 +|---|---|---|---|
  213 +|判断题|启动判断题答题|[startQATrueFalse](#startqatruefalse)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQATrueFalse](#fevtqatruefalse)|
  214 +||停止判断题答题|[stopQATrueFalse](#stopqatruefalse)|[sEvtStateCode](#sevtstatecode)|
  215 +|选择题|启动选择题答题|[startQAChoice](#startqachoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAChoice](#fevtqachoice)|
  216 +||停止选择题答题|[stopQAChoice](#stopqachoice)|[sEvtStateCode](#sevtstatecode)|
  217 +|数字题|启动数字题答题|[startQANum](#startqanum)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQANum](#fevtqanum)|
  218 +||停止数字题答题|[stopQANum](#stopqanum)|[sEvtStateCode](#sevtstatecode)|
  219 +|抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAQuicker](#fevtqaquicker)|
  220 +||停止抢答题答题|[stopQAQuicker](#stopqaquicker)|[sEvtStateCode](#sevtstatecode)|
  221 +|英文题|启动英文题答题|[startQAEText](#startqaetext)|[sEvtStateCode](#sevtstatecode)<br>[fEvtQAEText](#fevtqaetext)|
  222 +||停止英文题答题|[stopQAEText](#stopqaetext)|[sEvtStateCode](#sevtstatecode)|
  223 +|短信息|发送标准短信|[sendKpMsg](#sendkpmsg)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpMsg](#fevtkpmsg)|
  224 +||实时发送弹窗提醒|[rtSendKpNotice](#rtsendkpnotice)|[sEvtStateCode](#sevtstatecode)|
  225 +|待机实时反馈|启动待机实时反馈|[startKpStbResponse](#startkpstbresponse)|[sEvtStateCode](#sevtstatecode)<br>[sEvtKpRtFeedback](#sevtkprtfeedback)<br>[sEvtKpHandUp](#sevtkphandup)|
  226 +||停止待机实时反馈|[stopKpStbResponse](#stopkpstbresponse)|[sEvtStateCode](#sevtstatecode)|
  227 +### 语音反馈
  228 +|功能归类|功能|API指令|指令事件|
  229 +|---|---|---|---|
  230 +|语音反馈-单题语音评测|启动单题语音评测|[startQAVoice](#startqavoice)|[sEvtStateCode](#sevtstatecode)<br>[fEvtVoiceFile](#fevtvoicefile)<br>[fEvtVoiceStream](#fevtvoicestream)<br>[fEvtVoicePacketLossInfo](#fevtvoicepacketlossinfo)|
  231 +||停止单题语音评测|[stopQAVoice](#stopqavoice)|[sEvtStateCode](#sevtstatecode)|
  232 +|语音反馈-选定键盘发言|启动选定键盘发言|[startKpDSpeaker](#startkpdspeaker)|[sEvtStateCode](#sevtstatecode)<br>[fEvtVoiceStream](#fevtvoicestream)|
  233 +||停止选定键盘发言|[stopKpDSpeaker](#stopkpdspeaker)|[sEvtStateCode](#sevtstatecode)|
  234 +|语音反馈-待机实时反馈|启动待机实时反馈|[startVoiceStbResponse](#startvoicestbresponse)|[sEvtStateCode](#sevtstatecode)<br>[sEvtKpRtVoice](#sevtkprtvoice)|
  235 +||停止待机实时反馈|[stopVoiceStbResponse](#stopvoicestbresponse)|[sEvtStateCode](#sevtstatecode)|
  236 +### 在线测验
  237 +|功能归类|功能|API指令|指令事件|
  238 +|---|---|---|---|
  239 +|标准测验|启动标准测验|[startKpExam](#startkpexam)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  240 +||停止标准测验|[stopKpExam](#stopkpexam)|[sEvtStateCode](#sevtstatecode)|
  241 +||刷新作答数据|[rtGetKpExamData](#rtgetkpexamdata)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpExam](#fevtkpexam)|
  242 +||判卷结果回传|[rtSetKpExamResult](#rtgetkpexamdata)|[sEvtStateCode](#sevtstatecode)<br>[fEvtSetKpExamResult](#fevtsetkpexamresult)|
  243 +||允许键盘提交后退回修改|[rtAllowEdited](#rtkpallowedited)|[sEvtStateCode](#sevtstatecode)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  244 +|自主录分|启动自主录分|[startKpScoreInput](#startkpscoreinput)|[sEvtStateCode](#sevtstatecode)<br>[fEvtKpScore](#fevtkpscore)<br>[fEvtFinalSubmit](#fevtfinalsubmit)|
  245 +||停止自主录分|[stopKpScoreInput](#stopkpscoreinput)|[sEvtStateCode](#sevtstatecode)|
  246 +
  247 +## SDK管理
  248 +### 方法
  249 +#### heartbeat
  250 +- **功能描述**: 应用和SDK之间发送心跳,用于维持WebSocket连接,可在初始化SDK时指定是否由SDK主动发起,收到heartbeat包后返回相同dataTag的heartbeat包
  251 +- **参数说明**
  252 +
  253 +|参数名|类型|限制|非空|说明|
  254 +|-----|-----|-----|-----|-----|
  255 +|fun|string|-|是|指令名称|
  256 +|dataTag|string|-|是|数据包标识,不需要时可传空字符串|
  257 +
  258 +- **示例代码**
  259 +```Json
  260 +{
  261 + "fun":"heartbeat",
  262 + "dataTag":"1"
  263 +}
  264 +```
  265 +#### setHeartbeatInterval
  266 +- **功能描述**: 设置心跳间隔时间,SDK为WebSocket的客户端时,如果超时未收到心跳包,自动重连服务器
  267 +- **参数说明**
  268 +
  269 +|参数名|类型|限制|非空|说明|
  270 +|-----|-----|-----|-----|-----|
  271 +|fun|string|-|是|指令名称|
  272 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  273 +|data|object|-|是|传送参数的对象|
  274 +|+value|int||是|心跳间隔,单位秒,建议设置时长>10秒<br>设为0时不主动发送心跳包,只被动回复心跳包<br>>0时,主动在间隔时长发送心跳包(无消息通讯时)|
  275 +
  276 +- **示例代码**
  277 +```Json
  278 +{
  279 + "fun":"setHeartbeatInterval",
  280 + "dataTag":"1",
  281 + "data":{
  282 + "value":30
  283 + }
  284 +}
  285 +```
  286 +#### getSdkVersion
  287 +- **功能描述**: 获取SDK版本信息
  288 +- **参数说明**
  289 +
  290 +|参数名|类型|限制|非空|说明|
  291 +|-----|-----|-----|-----|-----|
  292 +|fun|string|-|是|指令名称|
  293 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  294 +
  295 +- **示例代码**
  296 +```Json
  297 +{
  298 + "fun":"getSdkVersion",
  299 + "dataTag":"1"
  300 +}
  301 +```
  302 +#### closeSdk
  303 +- **功能描述**: 关闭SDK
  304 +- **参数说明**
  305 +
  306 +|参数名|类型|限制|非空|说明|
  307 +|-----|-----|-----|-----|-----|
  308 +|fun|string|-|是|指令名称|
  309 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  310 +
  311 +- **示例代码**
  312 +```Json
  313 +{
  314 + "fun":"closeSdk",
  315 + "dataTag":"1"
  316 +}
  317 +```
  318 +### 事件
  319 +#### heartbeat
  320 +- **功能描述**:收到心跳包时返回的事件
  321 +- **参数说明**
  322 +
  323 +|参数名|类型|限制|非空|说明|
  324 +|---|---|---|---|---|
  325 +|fun|string|-|是|事件名称|
  326 +|dataTag|string|-|否|数据包标识,返回收到的数据包dataTag|
  327 +
  328 +- **示例代码**
  329 +```Json
  330 +{
  331 + "fun":"heartbeat",
  332 + "dataTag":"1"
  333 +}
  334 +```
  335 +#### fEvtHeartbeatInterval
  336 +- **功能描述**:返回设置的心跳间隔时长
  337 +- **参数说明**
  338 +
  339 +|参数名|类型|限制|非空|说明|
  340 +|---|---|---|---|---|
  341 +|fun|string|-|是|事件名称|
  342 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  343 +|data|object|-|是|传送参数的对象|
  344 +|+value|int||是|心跳间隔时长,单位秒|
  345 +
  346 +- **示例代码**
  347 +```Json
  348 +{
  349 + "fun":"fEvtHeartbeatInterval",
  350 + "dataTag":"1",
  351 + "data":{
  352 + "value":30
  353 + }
  354 +}
  355 +```
  356 +#### fEvtSdkVersion
  357 +- **功能描述**:返回SDK版本信息
  358 +- **参数说明**
  359 +
  360 +|参数名|类型|限制|非空|说明|
  361 +|---|---|---|---|---|
  362 +|fun|string|-|是|事件名称|
  363 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  364 +|data|object|-|是|传送参数的对象|
  365 +|+value|string||是|返回SDK的版本信息|
  366 +
  367 +- **示例代码**
  368 +```Json
  369 +{
  370 + "fun":"fEvtSdkVersion",
  371 + "dataTag":"1",
  372 + "data":{
  373 + "value":"1.0.0.0"
  374 + }
  375 +}
  376 +```
  377 +## 公共事件
  378 +### sEvtBsConnectState
  379 +- **主题**: /basestation/\${baseSN}/receive (MQTT连接方式)
  380 +- **功能描述**:基站连接成功时返回基站型号和基站SN,基站从已连接状态断开返回连接断开
  381 +- **参数说明**
  382 +
  383 +|参数名|类型|限制|非空|说明|
  384 +|-----|-----|-----|-----|-----|
  385 +|fun|string|-|是|事件类型|
  386 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  387 +|data|object|-|是|传送参数的对象|
  388 +|+baseSn|string||是|基站的出厂编码|
  389 +|+baseModel|int||否|基站的型号码|
  390 +|+modelName|string||否|基站的型号名称|
  391 +|+state|int||是|基站的连接状态<br>1-已连接<br>2-连接断开|
  392 +|+version|string||否|基站固件版本|
  393 +
  394 +- **示例代码**
  395 +```Json
  396 +//连接成功
  397 +{
  398 + "fun":"sEvtBsConnectState",
  399 + "dataTag":"1",
  400 + "data":{
  401 + "baseSn":"2024061101",
  402 + "state":1,
  403 + "baseModel":218,
  404 + "modelName":"B200",
  405 + "version":"1.0.3"
  406 + }
  407 +}
  408 +//连接断开
  409 +{
  410 + "fun":"sEvtBsConnectState",
  411 + "dataTag":"1",
  412 + "data":{
  413 + "baseSn":"2024061101",
  414 + "state":2
  415 + }
  416 +}
  417 +```
  418 +### sEvtBsChannelConflict
  419 +- **主题**: /basestation/\${baseSN}/receive
  420 +- **功能描述**:基站信道冲突时主动上报,应用程序可根据实际业务修改基站信道
  421 +- **参数说明**
  422 +
  423 +|参数名|类型|限制|非空|说明|
  424 +|---|---|---|---|---|
  425 +|fun|string|-|是|事件名称|
  426 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  427 +|data|object|-|是|传送参数的对象|
  428 +|+value|int||是|有冲突的信道|
  429 +
  430 +- **示例代码**
  431 +```Json
  432 +{
  433 + "fun":"sEvtBsChannelConflict",
  434 + "dataTag":"1",
  435 + "data":{
  436 + "value":5 //信道5有多个基站使用
  437 + }
  438 +}
  439 +```
  440 +### sEvtBsNfcResults
  441 +- **主题**: /basestation/\${baseSN}/receive
  442 +- **功能描述**:键盘刷卡时主动上报,如果超出基站容量会上报失败
  443 +- **参数说明**
  444 +
  445 +|参数名|类型|限制|非空|说明|
  446 +|---|---|---|---|---|
  447 +|fun|string|-|是|事件名称|
  448 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  449 +|data|object|-|是|传送参数的对象|
  450 +|+keySn|string||是|刷卡的键盘SN|
  451 +|+value|int||是|刷卡的状态<br>1-成功<br>2-失败|
  452 +
  453 +- **示例代码**
  454 +```Json
  455 +{
  456 + "fun":"sEvtBsNfcResults",
  457 + "dataTag":"1", //不需要时可传空字符串
  458 + "data":{
  459 + "keySn":"1234567890",
  460 + "value":1
  461 + }
  462 +}
  463 +```
  464 +
  465 +### sEvtBsKpOnlineMsg
  466 +- **主题**: /basestation/\${baseSN}/receive
  467 +- **功能描述**:键盘上线通知,主动上报,键盘升级成功后也会上报
  468 +- **参数说明**
  469 +
  470 +|参数名|类型|限制|非空|说明|
  471 +|---|---|---|---|---|
  472 +|fun|string|-|是|事件名称|
  473 +|dataTag|string|-|否|数据包标识|
  474 +|data|object|-|是|传送参数的对象|
  475 +|+keySn|string||是|键盘SN|
  476 +|+version|string||是|键盘固件版本|
  477 +|+model|int||是|键盘型号|
  478 +|+voltage|double||是|键盘电压|
  479 +
  480 +- **示例代码**
  481 +```Json
  482 +{
  483 + "fun":"sEvtBsKpOnlineMsg",
  484 + "dataTag":"1",
  485 + "data":{
  486 + "keySn":"1234567890",
  487 + "version":"1.0.0",
  488 + "model":67
  489 + }
  490 +}
  491 +```
  492 +### sEvtBsKpOnlineList
  493 +- **主题**: /basestation/\${baseSN}/receive
  494 +- **功能描述**:键盘在线列表发生变化时主动上报(T2专属)
  495 +- **参数说明**
  496 +
  497 +|参数名|类型|限制|非空|说明|
  498 +|---|---|---|---|---|
  499 +|fun|string|-|是|事件名称|
  500 +|dataTag|string|-|否|数据包标识|
  501 +|data|array|-|是|传送参数的对象数组|
  502 +|++keySn|string||是|键盘SN|
  503 +|++version|string||是|键盘固件版本|
  504 +|++model|int||是|键盘型号|
  505 +|++voltage|double||是|键盘电压|
  506 +
  507 +- **示例代码**
  508 +```Json
  509 +{
  510 + "fun":"sEvtBsKpOnlineList",
  511 + "dataTag":"1",
  512 + "data":[{
  513 + "keySn":"1234567890",
  514 + "version":"1.0.0",
  515 + "model":67,
  516 + "voltage":2.8
  517 + }]
  518 +}
  519 +```
  520 +### sEvtKpRtFeedback
  521 +- **主题**: /basestation/\${baseSN}/receive
  522 +- **功能描述**:开启键盘实时反馈后,键盘按键时上报
  523 +- **参数说明**
  524 +
  525 +|参数名|类型|限制|非空|说明|
  526 +|---|---|---|---|---|
  527 +|fun|string|-|是|事件名称|
  528 +|dataTag|string|-|否|数据包标识|
  529 +|data|object|-|是|传送参数的对象|
  530 +|+keySn|string||是|键盘SN|
  531 +|+keyValue|string||是|键盘提交的按键值|
  532 +
  533 +- **示例代码**
  534 +```Json
  535 +{
  536 + "fun":"sEvtKpRtFeedback",
  537 + "dataTag":"1",
  538 + "data":{
  539 + "keySn":"1234567890",
  540 + "keyValue":"A"
  541 + }
  542 +}
  543 +```
  544 +### sEvtKpRtVoice
  545 +- **主题**: /basestation/\${baseSN}/receive
  546 +- **功能描述**:开启键盘语音实时反馈后,键盘发送语音时上报
  547 +- **参数说明**(待定)
  548 +
  549 +|参数名|类型|限制|非空|说明|
  550 +|---|---|---|---|---|
  551 +|fun|string|-|是|事件名称|
  552 +|dataTag|string|-|否|数据包标识|
  553 +|data|object|-|是|传送参数的对象|
  554 +|+keySn|string||是|键盘SN|
  555 +|+keyValue|string||是|键盘提交的按键值|
  556 +
  557 +- **示例代码**
  558 +```Json
  559 +{
  560 + "fun":"sEvtKpRtVoice",
  561 + "dataTag":"1",
  562 + "data":{
  563 + "keySn":"1234567890",
  564 + "keyValue":"A"
  565 + }
  566 +}
  567 +```
  568 +### sEvtKpHandUp
  569 +- **主题**: /basestation/\${baseSN}/receive
  570 +- **功能描述**:开启键盘举手功能后,键盘按举手键时上报
  571 +- **参数说明**
  572 +
  573 +|参数名|类型|限制|非空|说明|
  574 +|---|---|---|---|---|
  575 +|fun|string|-|是|事件名称|
  576 +|dataTag|string|-|否|数据包标识|
  577 +|data|object|-|是|传送参数的对象|
  578 +|+keySn|string||是|举手的键盘SN|
  579 +
  580 +- **示例代码**
  581 +```Json
  582 +{
  583 + "fun":"sEvtKpHandUp",
  584 + "dataTag":"1",
  585 + "data":{
  586 + "keySn":"1234567890"
  587 + }
  588 +}
  589 +```
  590 +### sEvtKpRemoteControl
  591 +- **主题**: /basestation/\${baseSN}/receive
  592 +- **功能描述**:遥控器按键实时上报
  593 +- **参数说明**
  594 +
  595 +|参数名|类型|限制|非空|说明|
  596 +|---|---|---|---|---|
  597 +|fun|string|-|是|事件名称|
  598 +|dataTag|string|-|否|数据包标识|
  599 +|data|object|-|是|传送参数的对象|
  600 +|+keySn|string||是|遥控器SN|
  601 +|+keyValue|string||是|遥控器提交的按键值,按键值含义参见遥控器说明|
  602 +
  603 +- **示例代码**
  604 +```Json
  605 +{
  606 + "fun":"sEvtKpRtFeedback",
  607 + "dataTag":"1",
  608 + "data":{
  609 + "keySn":"1234567890",
  610 + "keyValue":"1"
  611 + }
  612 +}
  613 +```
  614 +### sEvtStateCode
  615 +- **主题**: /basestation/\${baseSN}/receive
  616 +- **功能描述**:返回基站接收指令状态信息
  617 +- **参数说明**
  618 +
  619 +|参数名|类型|限制|非空|说明|
  620 +|---|---|---|---|---|
  621 +|fun|string|-|是|事件名称|
  622 +|dataTag|string|-|否|数据包标识|
  623 +|data|object|-|是|传送参数的对象|
  624 +|+funName|string||是|指令名称|
  625 +|+code|string||是|状态码,含义见下表|
  626 +
  627 +|错误码|说明|
  628 +|---|---|
  629 +|0|指令收取成功|
  630 +|10001|不能正确解析的JSON数据|
  631 +|10002|解析JSON错误|
  632 +|20001|基站未连接|
  633 +|20002|功能不支持|
  634 +|20003|基站SN格式不正确|
  635 +|20004|参数错误|
  636 +|20005|基站在答题中|
  637 +|40001|升级功能只能支持一个基站|
  638 +|50001|此功能必须指定基站|
  639 +|60001|此功能必须指定键盘SN|
  640 +
  641 +- **示例代码**
  642 +```Json
  643 +{
  644 + "fun":"sEvtStateCode",
  645 + "dataTag":"1",
  646 + "data":{
  647 + "funName":"startKpSignIn",
  648 + "code":"20005"
  649 + }
  650 +}
  651 +```
  652 +## 基站管理
  653 +### 基站连接
  654 +#### 方法
  655 +##### getBsOnlineState
  656 +- **主题**:<span class="yellowFill">/client/multiBase/send</span>
  657 +- **功能描述**:主动获取所有在线基站信息,在线基站回复
  658 +- **参数说明**
  659 +
  660 +|参数名|类型|限制|是否必填|说明|
  661 +|---|---|---|---|---|
  662 +|fun|string|-|是|固定指令名称|
  663 +|dataTag|string|-|否|数据包标识|
  664 +- **示例代码**
  665 +```Json
  666 +{
  667 + "fun":"getBsOnlineState",
  668 + "dataTag":"1"
  669 +}
  670 +```
  671 +
  672 +##### getBsConnectState
  673 +- **主题**:/client/\${baseSN}/send
  674 +- **功能描述**:主动获取基站连接状态
  675 +- **参数说明**
  676 +
  677 +|参数名|类型|限制|是否必填|说明|
  678 +|---|---|---|---|---|
  679 +|fun|string|-|是|固定指令名称|
  680 +|dataTag|string|-|否|数据包标识|
  681 +- **示例代码**
  682 +```Json
  683 +{
  684 + "fun":"getBsConnectState",
  685 + "dataTag":"1"
  686 +}
  687 +```
  688 +#### 事件
  689 +##### [sEvtBsConnectState](#sevtbsconnectstate)
  690 +参见基站连接变化系统通知
  691 +
  692 +##### fEvtBsOnlineState
  693 +- **主题**: <span class="yellowFill">/basestation/mutilBase/receive</span>
  694 +- **功能描述**:基站在线返回基站型号和基站SN
  695 +- **参数说明**
  696 +
  697 +|参数名|类型|限制|非空|说明|
  698 +|-----|-----|-----|-----|-----|
  699 +|fun|string|-|是|事件类型|
  700 +|dataTag|string|-|否|数据包标识,不需要时可传空字符串|
  701 +|data|object|-|是|传送参数的对象|
  702 +|+baseModel|int||否|基站的型号码|
  703 +|+modelName|string||否|基站的型号名称|
  704 +|+version|string||否|基站固件版本|
  705 +|+baseSN|string||否|基站SN|
  706 +
  707 +- **示例代码**
  708 +```Json
  709 +//连接成功
  710 +{
  711 + "fun":"fEvtBsOnlineState",
  712 + "dataTag":"1",
  713 + "data":{
  714 + "baseModel":218,
  715 + "modelName":"B200",
  716 + "version":"1.0.3",
  717 + "baseSN":"2024041401"
  718 + }
  719 +}
  720 +```
  721 +
  722 +### 识别设置
  723 +#### 方法
  724 +##### setBsSN
  725 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  726 +- **功能描述**:设置基站的SN,<font color="red">需预先订阅新SN的主题,以获取事件返回</font>
  727 +- **参数说明**
  728 +
  729 +|参数名|类型|限制|是否必填|说明|
  730 +|---|---|---|---|---|
  731 +|fun|string|-|是|指令名称|
  732 +|dataTag|string|-|否|数据包标识|
  733 +|data|object|-|是|传送参数的对象|
  734 +|+value|string|数字|是|设置的基站SN,长度为10位数字|
  735 +|+time|string|数字|是|时间,yyyyMMddHHmmss|
  736 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  737 +
  738 +- **示例代码**
  739 +```Json
  740 +{
  741 + "fun":"setBsSN",
  742 + "dataTag":"1",
  743 + "data":{
  744 + "value":"2024041201"
  745 + }
  746 +}
  747 +```
  748 +##### getBsModel
  749 +- **主题**:/client/\${baseSN}/send
  750 +- **功能描述**:获取基站型号
  751 +- **参数说明**
  752 +
  753 +|参数名|类型|限制|是否必填|说明|
  754 +|---|---|---|---|---|
  755 +|fun|string|-|是|指令名称|
  756 +|dataTag|string|-|否|数据包标识,可为空字符串|
  757 +
  758 +- **示例代码**
  759 +```Json
  760 +{
  761 + "fun":"getBsModel",
  762 + "dataTag":"1"
  763 +}
  764 +```
  765 +##### getBsFWVersion
  766 +- **主题**:/client/\${baseSN}/send
  767 +- **功能描述**:获取基站固件版本
  768 +- **参数说明**
  769 +
  770 +|参数名|类型|限制|是否必填|说明|
  771 +|---|---|---|---|---|
  772 +|fun|string|-|是|指令名称|
  773 +|dataTag|string|-|否|数据包标识,可为空字符串|
  774 +
  775 +- **示例代码**
  776 +```Json
  777 +{
  778 + "fun":"getBsFWVersion",
  779 + "dataTag":"1"
  780 +}
  781 +```
  782 +##### getBsBIC
  783 +- **主题**:/client/\${baseSN}/send
  784 +- **功能描述**:获取基站品牌识别码
  785 +- **参数说明**
  786 +
  787 +|参数名|类型|限制|是否必填|说明|
  788 +|---|---|---|---|---|
  789 +|fun|string|-|是|指令名称|
  790 +|dataTag|string|-|否|数据包标识,可为空字符串|
  791 +
  792 +- **示例代码**
  793 +```Json
  794 +{
  795 + "fun":"getBsBIC",
  796 + "dataTag":"1"
  797 +}
  798 +```
  799 +##### setBsBIC
  800 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  801 +- **功能描述**:设置基站品牌识别码
  802 +- **参数说明**
  803 +
  804 +|参数名|类型|限制|是否必填|说明|
  805 +|---|---|---|---|---|
  806 +|fun|string|-|是|指令名称|
  807 +|dataTag|string|-|否|数据包标识,可为空字符串|
  808 +|data|object|-|是|传送参数的对象|
  809 +|+value|string||是|设置的基站品牌码|
  810 +|+time|string|数字|是|时间,yyyyMMddHHmmss|
  811 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  812 +
  813 +- **示例代码**
  814 +```Json
  815 +{
  816 + "fun":"setBsBIC",
  817 + "dataTag":"1",
  818 + "data":{
  819 + "value":"sunvote"
  820 + }
  821 +}
  822 +```
  823 +#### 事件
  824 +##### fEvtBsSN
  825 +- **主题**: /basestation/\${baseSN}/receive
  826 +- **功能描述**:返回基站的出厂编码
  827 +- **参数说明**
  828 +
  829 +|参数名|类型|限制|非空|说明|
  830 +|---|---|---|---|---|
  831 +|fun|string|-|是|事件名称|
  832 +|dataTag|string|-|否|数据包标识|
  833 +|data|object|-|是|传送参数的对象|
  834 +|+value|string|-|是|基站的出厂编码|
  835 +
  836 +- **示例代码**
  837 +```Json
  838 +{
  839 + "fun":"fEvtBsSN",
  840 + "dataTag":"1",
  841 + "data":{
  842 + "value":"2024041201"
  843 + }
  844 +}
  845 +```
  846 +##### fEvtBsModel
  847 +- **主题**: /basestation/\${baseSN}/receive
  848 +- **功能描述**:返回基站的型号
  849 +- **参数说明**
  850 +
  851 +|参数名|类型|限制|是否必填|说明|
  852 +|---|---|---|---|---|
  853 +|fun|string|-|是|事件名称|
  854 +|dataTag|string|-|否|数据包标识|
  855 +|data|object|-|是|传送参数的对象|
  856 +|+value|string|-|是|基站的型号名称|
  857 +
  858 +- **示例代码**
  859 +```Json
  860 +{
  861 + "fun":"fEvtBsModel",
  862 + "dataTag":"1",
  863 + "data":{
  864 + "value":"B200"
  865 + }
  866 +}
  867 +```
  868 +##### fEvtBsFWVersion
  869 +- **主题**: /basestation/\${baseSN}/receive
  870 +- **功能描述**:返回基站的固件版本
  871 +- **参数说明**
  872 +
  873 +|参数名|类型|限制|是否必填|说明|
  874 +|---|---|---|---|---|
  875 +|fun|string|-|是|事件名称|
  876 +|dataTag|string|-|否|数据包标识|
  877 +|data|object|-|是|传送参数的对象|
  878 +|+value|string||是|基站的固件版本号|
  879 +
  880 +- **示例代码**
  881 +```Json
  882 +{
  883 + "fun":"fEvtBsFWVersion",
  884 + "dataTag":"1",
  885 + "data":{
  886 + "value":"1.0.3"
  887 + }
  888 +}
  889 +```
  890 +##### fEvtBsBIC
  891 +- **主题**: /basestation/\${baseSN}/receive
  892 +- **功能描述**:返回基站的品牌码
  893 +- **参数说明**
  894 +
  895 +|参数名|类型|限制|是否必填|说明|
  896 +|---|---|---|---|---|
  897 +|fun|string|-|是|事件名称|
  898 +|dataTag|string|-|否|数据包标识|
  899 +|data|object|-|是|传送参数的对象|
  900 +|+value|string||是|基站的品牌码|
  901 +
  902 +- **示例代码**
  903 +```Json
  904 +{
  905 + "fun":"fEvtBsBIC",
  906 + "dataTag":"1",
  907 + "data":{
  908 + "value":"sunvote"
  909 + }
  910 +}
  911 +```
  912 +### 组网设置
  913 +#### 方法
  914 +##### getBsNetworkMode
  915 +- **主题**:/client/\${baseSN}/send
  916 +- **功能描述**:获取基站组网模式
  917 +- **参数说明**
  918 +
  919 +|参数名|类型|限制|是否必填|说明|
  920 +|---|---|---|---|---|
  921 +|fun|string|-|是|指令名称|
  922 +|dataTag|string|-|否|数据包标识,可为空字符串|
  923 +
  924 +- **示例代码**
  925 +```Json
  926 +{
  927 + "fun":"getBsNetworkMode",
  928 + "dataTag":"1"
  929 +}
  930 +```
  931 +##### setBsNetworkMode
  932 +- **主题**:/client/\${baseSN}/send
  933 +- **功能描述**:设置基站组网模式
  934 +- **参数说明**
  935 +
  936 +|参数名|类型|限制|是否必填|说明|
  937 +|---|---|---|---|---|
  938 +|fun|string|-|是|指令名称|
  939 +|dataTag|string|-|否|数据包标识,可为空字符串|
  940 +|data|object|-|是|传送参数的对象|
  941 +|+value|string|-|是|设置的基站组网模式<br>1-配对模式<br>2-白名单模式|
  942 +
  943 +- **示例代码**
  944 +```Json
  945 +{
  946 + "fun":"setBsNetworkMode",
  947 + "dataTag":"1",
  948 + "data":{
  949 + "value":"1"
  950 + }
  951 +}
  952 +```
  953 +##### getBsPairCode
  954 +- **主题**:/client/\${baseSN}/send
  955 +- **功能描述**:获取基站配对码
  956 +- **参数说明**
  957 +
  958 +|参数名|类型|限制|是否必填|说明|
  959 +|---|---|---|---|---|
  960 +|fun|string|-|是|指令名称|
  961 +|dataTag|string|-|否|数据包标识,可为空字符串|
  962 +
  963 +- **示例代码**
  964 +```Json
  965 +{
  966 + "fun":"getBsPairCode",
  967 + "dataTag":"1"
  968 +}
  969 +```
  970 +##### setBsPairCode
  971 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  972 +- **功能描述**:设置基站配对码
  973 +- **参数说明**
  974 +
  975 +|参数名|类型|限制|是否必填|说明|
  976 +|---|---|---|---|---|
  977 +|fun|string|-|是|指令名称|
  978 +|dataTag|string|-|否|数据包标识,可为空字符串|
  979 +|data|object|-|否|传送参数的对象|
  980 +|+value|string|-|否|设置的基站配对码,8位数字|
  981 +|+time|string|数字|是|时间,yyyyMMddHHmmss|
  982 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  983 +
  984 +- **示例代码**
  985 +```Json
  986 +{
  987 + "fun":"setBsPairCode",
  988 + "dataTag":"1",
  989 + "data":{
  990 + "value":"04120101"
  991 + }
  992 +}
  993 +```
  994 +##### getBsNfcLogin
  995 +- **主题**:/client/\${baseSN}/send
  996 +- **功能描述**:获取刷卡配对状态
  997 +- **参数说明**
  998 +
  999 +|参数名|类型|限制|是否必填|说明|
  1000 +|---|---|---|---|---|
  1001 +|fun|string|-|是|指令名称|
  1002 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1003 +
  1004 +- **示例代码**
  1005 +```Json
  1006 +{
  1007 + "fun":"getBsNfcLogin",
  1008 + "dataTag":"1"
  1009 +}
  1010 +```
  1011 +##### setBsNfcLogin
  1012 +- **主题**:/client/\${baseSN}/send
  1013 +- **功能描述**:设置基站刷卡配对状态
  1014 +- **参数说明**
  1015 +
  1016 +|参数名|类型|限制|是否必填|说明|
  1017 +|---|---|---|---|---|
  1018 +|fun|string|-|是|指令名称|
  1019 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1020 +|data|object|-|是|传送参数的对象|
  1021 +|+value|string|-|是|设置的基站刷卡配对状态<br>0-关闭刷卡配对<br>1-开启刷卡配对|
  1022 +
  1023 +- **示例代码**
  1024 +```Json
  1025 +{
  1026 + "fun":"setBsNfcLogin",
  1027 + "dataTag":"1",
  1028 + "data":{
  1029 + "value":"1"
  1030 + }
  1031 +}
  1032 +```
  1033 +
  1034 +##### getBsCapacity
  1035 +- **主题**:/client/\${baseSN}/send
  1036 +- **功能描述**:获取基站容量参数
  1037 +- **参数说明**
  1038 +
  1039 +|参数名|类型|限制|是否必填|说明|
  1040 +|---|---|---|---|---|
  1041 +|fun|string|-|是|指令名称|
  1042 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1043 +|data|object|-|是|传送参数的对象|
  1044 +
  1045 +- **示例代码**
  1046 +```Json
  1047 +{
  1048 + "fun":"getBsCapacity",
  1049 + "dataTag":"1"
  1050 +}
  1051 +```
  1052 +##### setBsCapacity
  1053 +- **主题**:/client/\${baseSN}/send
  1054 +- **功能描述**:设置基站容量
  1055 +- **参数说明**
  1056 +
  1057 +|参数名|类型|限制|是否必填|说明|
  1058 +|---|---|---|---|---|
  1059 +|fun|string|-|是|指令名称|
  1060 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1061 +|data|object|-|是|传送参数的对象|
  1062 +|+value|string|-|是|设置基站的键盘容量,<=200|
  1063 +
  1064 +- **示例代码**
  1065 +```Json
  1066 +{
  1067 + "fun":"setBsCapacity",
  1068 + "dataTag":"1",
  1069 + "data":{
  1070 + "value":"60"
  1071 + }
  1072 +}
  1073 +```
  1074 +
  1075 +##### getBsChannel
  1076 +- **主题**:/client/\${baseSN}/send
  1077 +- **功能描述**:获取基站信道
  1078 +- **参数说明**
  1079 +
  1080 +|参数名|类型|限制|是否必填|说明|
  1081 +|---|---|---|---|---|
  1082 +|fun|string|-|是|指令名称|
  1083 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1084 +
  1085 +- **示例代码**
  1086 +```Json
  1087 +{
  1088 + "fun":"getBsChannel",
  1089 + "dataTag":"1"
  1090 +}
  1091 +```
  1092 +##### setBsChannel
  1093 +- **主题**:/client/\${baseSN}/send
  1094 +- **功能描述**:设置基站信道
  1095 +- **参数说明**
  1096 +
  1097 +|参数名|类型|限制|是否必填|说明|
  1098 +|---|---|---|---|---|
  1099 +|fun|string|-|是|指令名称|
  1100 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1101 +|data|object|-|是|传送参数的对象|
  1102 +|+value|string|-|是|设置的基站信道,可设范围:1-80|
  1103 +
  1104 +- **示例代码**
  1105 +```Json
  1106 +{
  1107 + "fun":"setBsChannel",
  1108 + "dataTag":"1",
  1109 + "data":{
  1110 + "value":"23"
  1111 + }
  1112 +}
  1113 +```
  1114 +#### 事件
  1115 +##### fEvtBsNetworkMode
  1116 +- **主题**: /basestation/\${baseSN}/receive
  1117 +- **功能描述**:返回基站组网模式
  1118 +- **参数说明**
  1119 +
  1120 +|参数名|类型|限制|非空|说明|
  1121 +|---|---|---|---|---|
  1122 +|fun|string|-|是|事件名称|
  1123 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1124 +|data|object|-|是|传送参数的对象|
  1125 +|+value|string||是|基站的组网模式<br>1-配对模式<br>2-白名单模式|
  1126 +
  1127 +- **示例代码**
  1128 +```Json
  1129 +{
  1130 + "fun":"fEvtBsNetworkMode",
  1131 + "dataTag":"1",
  1132 + "data":{
  1133 + "value":"1"
  1134 + }
  1135 +}
  1136 +```
  1137 +##### fEvtBsPairCode
  1138 +- **主题**: /basestation/\${baseSN}/receive
  1139 +- **功能描述**:返回基站配对码
  1140 +- **参数说明**
  1141 +
  1142 +|参数名|类型|限制|非空|说明|
  1143 +|---|---|---|---|---|
  1144 +|fun|string|-|是|事件名称|
  1145 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1146 +|data|object|-|是|传送参数的对象|
  1147 +|+value|string||是|基站的配对码|
  1148 +
  1149 +- **示例代码**
  1150 +```Json
  1151 +{
  1152 + "fun":"fEvtBsPairCode",
  1153 + "dataTag":"1",
  1154 + "data":{
  1155 + "value":"123456"
  1156 + }
  1157 +}
  1158 +```
  1159 +##### fEvtBsCapacity
  1160 +- **主题**: /basestation/\${baseSN}/receive
  1161 +- **功能描述**:返回基站容量
  1162 +- **参数说明**
  1163 +
  1164 +|参数名|类型|限制|非空|说明|
  1165 +|---|---|---|---|---|
  1166 +|fun|string|-|是|事件名称|
  1167 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1168 +|data|object|-|是|传送参数的对象|
  1169 +|+value|string||是|基站容量|
  1170 +
  1171 +- **示例代码**
  1172 +```Json
  1173 +{
  1174 + "fun":"fEvtBsCapacity",
  1175 + "dataTag":"1",
  1176 + "data":{
  1177 + "value":"60"
  1178 + }
  1179 +}
  1180 +```
  1181 +##### fEvtBsChannel
  1182 +- **主题**: /basestation/\${baseSN}/receive
  1183 +- **功能描述**:返回基站信道
  1184 +- **参数说明**
  1185 +
  1186 +|参数名|类型|限制|非空|说明|
  1187 +|---|---|---|---|---|
  1188 +|fun|string|-|是|事件名称|
  1189 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1190 +|data|object|-|是|传送参数的对象|
  1191 +|+value|string||是|基站信道|
  1192 +
  1193 +- **示例代码**
  1194 +```Json
  1195 +{
  1196 + "fun":"fEvtBsChannel",
  1197 + "dataTag":"1",
  1198 + "data":{
  1199 + "value":"5"
  1200 + }
  1201 +}
  1202 +```
  1203 +##### fEvtBsNfcLogin
  1204 +- **主题**: /basestation/\${baseSN}/receive
  1205 +- **功能描述**:返回基站是否允许NFC刷卡
  1206 +- **参数说明**
  1207 +
  1208 +|参数名|类型|限制|非空|说明|
  1209 +|---|---|---|---|---|
  1210 +|fun|string|-|是|事件名称|
  1211 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1212 +|data|object|-|是|传送参数的对象|
  1213 +|+value|string||是|0-关闭 1-开启|
  1214 +
  1215 +- **示例代码**
  1216 +```Json
  1217 +{
  1218 + "fun":"fEvtBsNfcLogin",
  1219 + "dataTag":"1",
  1220 + "data":{
  1221 + "value":"1"
  1222 + }
  1223 +}
  1224 +```
  1225 +### 登录设置
  1226 +#### 方法
  1227 +##### getBsSSID
  1228 +获取基站登录名称
  1229 +- **主题**:/client/\${baseSN}/send
  1230 +- **功能描述**:获取基站登录名称
  1231 +- **参数说明**
  1232 +
  1233 +|参数名|类型|限制|是否必填|说明|
  1234 +|---|---|---|---|---|
  1235 +|fun|string|-|是|固定指令名称|
  1236 +|dataTag|string|-|否|数据包标识|
  1237 +
  1238 +- **示例代码**
  1239 +```Json
  1240 +{
  1241 + "fun":"getBsSSID",
  1242 + "dataTag":"1"
  1243 +}
  1244 +```
  1245 +##### setBsSSID
  1246 +- **主题**:/client/\${baseSN}/send
  1247 +- **功能描述**:设置基站登录名称
  1248 +- **参数说明**
  1249 +
  1250 +|参数名|类型|限制|是否必填|说明|
  1251 +|---|---|---|---|---|
  1252 +|fun|string|-|是|指令名称|
  1253 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1254 +|data|object|-|是|传送参数的对象|
  1255 +|+value|string||是|设置的基站SSID,最长12字符|
  1256 +
  1257 +- **示例代码**
  1258 +```Json
  1259 +{
  1260 + "fun":"setBsSSID",
  1261 + "dataTag":"1",
  1262 + "data":{
  1263 + "value":"1901班"
  1264 + }
  1265 +}
  1266 +```
  1267 +##### getBsLoginPwd
  1268 +- **主题**:/client/\${baseSN}/send
  1269 +- **功能描述**:获取基站登录密码
  1270 +- **参数说明**
  1271 +
  1272 +|参数名|类型|限制|是否必填|说明|
  1273 +|---|---|---|---|---|
  1274 +|fun|string|-|是|固定指令名称|
  1275 +|dataTag|string|-|否|数据包标识|
  1276 +
  1277 +- **示例代码**
  1278 +```Json
  1279 +{
  1280 + "fun":"getBsLoginPwd",
  1281 + "dataTag":"1"
  1282 +}
  1283 +```
  1284 +##### setBsLoginPwd
  1285 +- **主题**:/client/\${baseSN}/send
  1286 +- **功能描述**:设置基站登录密码
  1287 +- **参数说明**
  1288 +
  1289 +|参数名|类型|限制|是否必填|说明|
  1290 +|---|---|---|---|---|
  1291 +|fun|string|-|是|指令名称|
  1292 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1293 +|data|object|-|是|传送参数的对象|
  1294 +|+value|string||是|设置的基站登录密码,数字类型,为空代表无需密码登录|
  1295 +
  1296 +- **示例代码**
  1297 +```Json
  1298 +{
  1299 + "fun":"setBsLoginPwd",
  1300 + "dataTag":"1",
  1301 + "data":{
  1302 + "value":"123456"
  1303 + }
  1304 +}
  1305 +```
  1306 +##### getBsLoginState
  1307 +获取基站登录名称
  1308 +- **主题**:/client/\${baseSN}/send
  1309 +- **功能描述**:获取基站登录状态
  1310 +- **参数说明**
  1311 +
  1312 +|参数名|类型|限制|是否必填|说明|
  1313 +|---|---|---|---|---|
  1314 +|fun|string|-|是|固定指令名称|
  1315 +|dataTag|string|-|否|数据包标识|
  1316 +
  1317 +- **示例代码**
  1318 +```Json
  1319 +{
  1320 + "fun":"getBsLoginState",
  1321 + "dataTag":"1"
  1322 +}
  1323 +```
  1324 +##### setBsLoginState
  1325 +- **主题**:/client/\${baseSN}/send
  1326 +- **功能描述**:设置基站登录状态
  1327 +- **参数说明**
  1328 +
  1329 +|参数名|类型|限制|是否必填|说明|
  1330 +|---|---|---|---|---|
  1331 +|fun|string|-|是|指令名称|
  1332 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1333 +|data|object|-|是|传送参数的对象|
  1334 +|+value|string||是|设置是否允许键盘自主登入<br>0 - 不允许键盘登入<br>1 - 允许键盘登入|
  1335 +
  1336 +- **示例代码**
  1337 +```Json
  1338 +{
  1339 + "fun":"setBsLoginState",
  1340 + "dataTag":"1",
  1341 + "data":{
  1342 + "value":"1"
  1343 + }
  1344 +}
  1345 +```
  1346 +
  1347 +#### 事件
  1348 +##### fEvtBsSSID
  1349 +- **主题**: /basestation/\${baseSN}/receive
  1350 +- **功能描述**:返回基站名称
  1351 +- **参数说明**
  1352 +
  1353 +|参数名|类型|限制|非空|说明|
  1354 +|---|---|---|---|---|
  1355 +|fun|string|-|是|事件名称|
  1356 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1357 +|data|object|-|是|传送参数的对象|
  1358 +|+value|string||是|基站名称|
  1359 +
  1360 +- **示例代码**
  1361 +```Json
  1362 +{
  1363 + "fun":"fEvtBsSSID",
  1364 + "dataTag":"1",
  1365 + "data":{
  1366 + "value":"1901班"
  1367 + }
  1368 +}
  1369 +```
  1370 +##### fEvtBsLoginPwd
  1371 +- **主题**: /basestation/\${baseSN}/receive
  1372 +- **功能描述**:返回基站登录密码
  1373 +- **参数说明**
  1374 +
  1375 +|参数名|类型|限制|非空|说明|
  1376 +|---|---|---|---|---|
  1377 +|fun|string|-|是|事件名称|
  1378 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1379 +|data|object|-|是|传送参数的对象|
  1380 +|+value|string||是|基站登录密码|
  1381 +
  1382 +- **示例代码**
  1383 +```Json
  1384 +{
  1385 + "fun":"fEvtBsLoginPwd",
  1386 + "dataTag":"1",
  1387 + "data":{
  1388 + "value":"123456"
  1389 + }
  1390 +}
  1391 +```
  1392 +##### fEvtBsLoginState
  1393 +- **主题**: /basestation/\${baseSN}/receive
  1394 +- **功能描述**:返回基站登录状态
  1395 +- **参数说明**
  1396 +
  1397 +|参数名|类型|限制|非空|说明|
  1398 +|---|---|---|---|---|
  1399 +|fun|string|-|是|事件名称|
  1400 +|dataTag|string|-|否|数据包标识,可传空字符串|
  1401 +|data|object|-|是|传送参数的对象|
  1402 +|+value|string||是|基站登录状态|
  1403 +
  1404 +- **示例代码**
  1405 +```Json
  1406 +{
  1407 + "fun":"fEvtBsLoginState",
  1408 + "dataTag":"1",
  1409 + "data":{
  1410 + "value":"1"
  1411 + }
  1412 +}
  1413 +```
  1414 +### 键盘统一设置
  1415 +#### 方法
  1416 +##### getBsKpLanguage
  1417 +- **主题**:/client/\${baseSN}/send
  1418 +- **功能描述**:获取键盘语言
  1419 +- **参数说明**
  1420 +
  1421 +|参数名|类型|限制|是否必填|说明|
  1422 +|---|---|---|---|---|
  1423 +|fun|string|-|是|指令名称|
  1424 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1425 +
  1426 +- **示例代码**
  1427 +```Json
  1428 +{
  1429 + "fun":"getBsKpLanguage",
  1430 + "dataTag":"1"
  1431 +}
  1432 +```
  1433 +##### setBsKpLanguage
  1434 +- **主题**:/client/\${baseSN}/send
  1435 +- **功能描述**:设置键盘语言
  1436 +- **参数说明**
  1437 +
  1438 +|参数名|类型|限制|是否必填|说明|
  1439 +|---|---|---|---|---|
  1440 +|fun|string|-|是|指令名称|
  1441 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1442 +|data|object|-|是|传送参数的对象|
  1443 +|+value|string||是|设置键盘显示的语言<br>1-简体中文<br>2-英文|
  1444 +
  1445 +- **示例代码**
  1446 +```Json
  1447 +{
  1448 + "fun":"setBsKpLanguage",
  1449 + "dataTag":"1",
  1450 + "data":{
  1451 + "value":"1"
  1452 + }
  1453 +}
  1454 +```
  1455 +##### getBsKpStbMsgMode
  1456 +- **主题**:/client/\${baseSN}/send
  1457 +- **功能描述**:获取状态语设置状态
  1458 +- **参数说明**
  1459 +
  1460 +|参数名|类型|限制|是否必填|说明|
  1461 +|---|---|---|---|---|
  1462 +|fun|string|-|是|指令名称|
  1463 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1464 +
  1465 +- **示例代码**
  1466 +```Json
  1467 +{
  1468 + "fun":"getBsKpStbMsgMode",
  1469 + "dataTag":"1"
  1470 +}
  1471 +```
  1472 +##### setBsKpStbMsgMode
  1473 +- **主题**:/client/\${baseSN}/send
  1474 +- **功能描述**:设置状态语工作状态
  1475 +- **参数说明**
  1476 +
  1477 +|参数名|类型|限制|是否必填|说明|
  1478 +|---|---|---|---|---|
  1479 +|fun|string|-|是|指令名称|
  1480 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1481 +|data|object|-|是|传送参数的对象|
  1482 +|+value|string||是|设置状态语工作状态<br>0-系统默认<br>1-用户内置|
  1483 +
  1484 +- **示例代码**
  1485 +```Json
  1486 +{
  1487 + "fun":"setBsKpStbMsgMode",
  1488 + "dataTag":"1",
  1489 + "data":{
  1490 + "value":"0"
  1491 + }
  1492 +}
  1493 +```
  1494 +##### getBsKpLoginMenu
  1495 +- **主题**:/client/\${baseSN}/send
  1496 +- **功能描述**:获取键盘登录菜单显示状态
  1497 +- **参数说明**
  1498 +
  1499 +|参数名|类型|限制|是否必填|说明|
  1500 +|---|---|---|---|---|
  1501 +|fun|string|-|是|指令名称|
  1502 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1503 +
  1504 +- **示例代码**
  1505 +```Json
  1506 +{
  1507 + "fun":"getBsKpLoginMenu",
  1508 + "dataTag":"1"
  1509 +}
  1510 +```
  1511 +
  1512 +##### setBsKpLoginMenu
  1513 +- **主题**:/client/\${baseSN}/send
  1514 +- **功能描述**:设置键盘登录菜单显示状态
  1515 +- **参数说明**
  1516 +
  1517 +|参数名|类型|限制|是否必填|说明|
  1518 +|---|---|---|---|---|
  1519 +|fun|string|-|是|指令名称|
  1520 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1521 +|data|object|-|是|传送参数的对象|
  1522 +|+value|string||是|设置键盘登录菜单显示状态<br>0-不显示<br>1-显示|
  1523 +
  1524 +- **示例代码**
  1525 +```Json
  1526 +{
  1527 + "fun":"setBsKpLoginMenu",
  1528 + "dataTag":"1",
  1529 + "data":{
  1530 + "value":"1"
  1531 + }
  1532 +}
  1533 +```
  1534 +##### getBsKpLedMode
  1535 +##### setBsKpLedMode
  1536 +##### getBsKpBeepMode
  1537 +##### setBsKpBeepMode
  1538 +
  1539 +##### getBsKpRFIDState
  1540 +- **主题**:/client/\${baseSN}/send
  1541 +- **功能描述**:获取键盘长距离考勤开启状态
  1542 +- **参数说明**
  1543 +
  1544 +|参数名|类型|限制|是否必填|说明|
  1545 +|---|---|---|---|---|
  1546 +|fun|string|-|是|指令名称|
  1547 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1548 +
  1549 +- **示例代码**
  1550 +```Json
  1551 +{
  1552 + "fun":"getBsKpRFIDState",
  1553 + "dataTag":"1"
  1554 +}
  1555 +```
  1556 +##### setBsKpRFIDState
  1557 +- **主题**:/client/\${baseSN}/send
  1558 +- **功能描述**:设置键盘长距离考勤开启状态
  1559 +- **参数说明**
  1560 +
  1561 +|参数名|类型|限制|是否必填|说明|
  1562 +|---|---|---|---|---|
  1563 +|fun|string|-|是|指令名称|
  1564 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1565 +|data|object|-|是|传送参数的对象|
  1566 +|+value|string||是|设置键盘长距离考勤开启状态<br>0-不开启<br>1-开启|
  1567 +
  1568 +- **示例代码**
  1569 +```Json
  1570 +{
  1571 + "fun":"setBsKpRFIDState",
  1572 + "dataTag":"1",
  1573 + "data":{
  1574 + "value":"1"
  1575 + }
  1576 +}
  1577 +```
  1578 +##### setBsKpPauseSleep
  1579 +- **主题**:/client/\${baseSN}/send
  1580 +- **功能描述**:设置键盘暂停休眠是否开启<br><font color="red">注意:请谨慎使用本功能,务必在相关测试或功能完成后关闭,否则可能会导致键盘异常耗电</font>
  1581 +- **参数说明**
  1582 +
  1583 +|参数名|类型|限制|是否必填|说明|
  1584 +|---|---|---|---|---|
  1585 +|fun|string|-|是|指令名称|
  1586 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1587 +|data|object|-|是|传送参数的对象|
  1588 +|+value|string||是|设置键盘暂停休眠是否开启<br>0-关闭暂停休眠<br>1-开启暂停休眠|
  1589 +
  1590 +- **示例代码**
  1591 +```Json
  1592 +{
  1593 + "fun":"setBsKpPauseSleep",
  1594 + "dataTag":"1",
  1595 + "data":{
  1596 + "value":"1"
  1597 + }
  1598 +}
  1599 +```
  1600 +
  1601 +#### 事件
  1602 +##### fEvtBsKpLanguage
  1603 +- **主题**: /basestation/\${baseSN}/receive
  1604 +- **功能描述**:返回键盘语言
  1605 +- **参数说明**
  1606 +
  1607 +|参数名|类型|限制|非空|说明|
  1608 +|---|---|---|---|---|
  1609 +|fun|string|-|是|指令名称|
  1610 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1611 +|data|object|-|是|传送参数的对象|
  1612 +|+value|string||是|设置键盘显示的语言<br>1-简体中文<br>2-英文|
  1613 +
  1614 +- **示例代码**
  1615 +```Json
  1616 +{
  1617 + "fun":"fEvtBsKpLanguage",
  1618 + "dataTag":"1",
  1619 + "data":{
  1620 + "value":"1"
  1621 + }
  1622 +}
  1623 +```
  1624 +##### fEvtBsKpStbMsgMode
  1625 +- **主题**: /basestation/\${baseSN}/receive
  1626 +- **功能描述**:返回状态语工作状态
  1627 +- **参数说明**
  1628 +
  1629 +|参数名|类型|限制|非空|说明|
  1630 +|---|---|---|---|---|
  1631 +|fun|string|-|是|指令名称|
  1632 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1633 +|data|object|-|是|传送参数的对象|
  1634 +|+value|string||是|返回状态语工作状态<br>0-系统默认<br>1-用户内置|
  1635 +
  1636 +- **示例代码**
  1637 +```Json
  1638 +{
  1639 + "fun":"fEvtBsKpStbMsgMode",
  1640 + "dataTag":"1",
  1641 + "data":{
  1642 + "value":"0"
  1643 + }
  1644 +}
  1645 +```
  1646 +##### fEvtBsKpLoginMenu
  1647 +- **主题**: /basestation/\${baseSN}/receive
  1648 +- **功能描述**:返回键盘登录菜单显示状态
  1649 +- **参数说明**
  1650 +
  1651 +|参数名|类型|限制|非空|说明|
  1652 +|---|---|---|---|---|
  1653 +|fun|string|-|是|指令名称|
  1654 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1655 +|data|object|-|是|传送参数的对象|
  1656 +|+value|string||是|返回键盘登录菜单显示状态<br>0-不显示<br>1-显示|
  1657 +
  1658 +- **示例代码**
  1659 +```Json
  1660 +{
  1661 + "fun":"fEvtBsKpLoginMenu",
  1662 + "dataTag":"1",
  1663 + "data":{
  1664 + "value":"0"
  1665 + }
  1666 +}
  1667 +```
  1668 +##### fEvtBsKpLedMode
  1669 +##### fEvtBsKpBeepMode
  1670 +
  1671 +##### fEvtBsKpRFIDState
  1672 +- **主题**: /basestation/\${baseSN}/receive
  1673 +- **功能描述**:返回键盘长距离考勤开启状态
  1674 +- **参数说明**
  1675 +
  1676 +|参数名|类型|限制|非空|说明|
  1677 +|---|---|---|---|---|
  1678 +|fun|string|-|是|指令名称|
  1679 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1680 +|data|object|-|是|传送参数的对象|
  1681 +|+value|string||是|返回键盘长距离考勤开启状态<br>0-不开启<br>1-开启|
  1682 +
  1683 +- **示例代码**
  1684 +```Json
  1685 +{
  1686 + "fun":"fEvtBsKpRFIDState",
  1687 + "dataTag":"1",
  1688 + "data":{
  1689 + "value":"0"
  1690 + }
  1691 +}
  1692 +```
  1693 +##### fEvtBsKpPauseSleep
  1694 +- **主题**: /basestation/\${baseSN}/receive
  1695 +- **功能描述**:返回暂停键盘休眠开启状态
  1696 +- **参数说明**
  1697 +
  1698 +|参数名|类型|限制|非空|说明|
  1699 +|---|---|---|---|---|
  1700 +|fun|string|-|是|指令名称|
  1701 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1702 +|data|object|-|是|传送参数的对象|
  1703 +|+value|string||是|返回暂停键盘休眠开启状态<br>0-未开启暂停休眠<br>1-开启暂停休眠|
  1704 +
  1705 +- **示例代码**
  1706 +```Json
  1707 +{
  1708 + "fun":"fEvtBsKpPauseSleep",
  1709 + "dataTag":"1",
  1710 + "data":{
  1711 + "value":"0"
  1712 + }
  1713 +}
  1714 +```
  1715 +### 网络设置
  1716 +#### 方法
  1717 +##### getBsTcpipParams
  1718 +- **主题**:/client/\${baseSN}/send
  1719 +- **功能描述**:获取基站TCP/IP参数
  1720 +- **参数说明**
  1721 +
  1722 +|参数名|类型|限制|是否必填|说明|
  1723 +|---|---|---|---|---|
  1724 +|fun|string|-|是|指令名称|
  1725 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1726 +
  1727 +- **示例代码**
  1728 +```Json
  1729 +{
  1730 + "fun":"getBsTcpipParams",
  1731 + "dataTag":"1"
  1732 +}
  1733 +```
  1734 +##### setBsTcpipParams
  1735 +- **主题**:/client/\${baseSN}/send
  1736 +- **功能描述**:设置基站TCP/IP参数
  1737 +- **参数说明**
  1738 +
  1739 +|参数名|类型|限制|是否必填|说明|
  1740 +|---|---|---|---|---|
  1741 +|fun|string|-|是|指令名称|
  1742 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1743 +|data|object|-|是|传送参数的对象|
  1744 +|+ip|string||否|IP地址|
  1745 +|+mask|string||否|子网掩码|
  1746 +|+gateway|string||否|网关地址|
  1747 +|+ipAllocation|int||否|基站IP获取方式<br>0 - 手动指定<br>1 - DHCP获取|
  1748 +
  1749 +- **示例代码**
  1750 +```Json
  1751 +{
  1752 + "fun":"setBsTcpipParams",
  1753 + "dataTag":"1",
  1754 + "data":{
  1755 + "ip":"192.168.0.10",
  1756 + "mask":"255.255.255.0",
  1757 + "gateway":"192.168.0.1",
  1758 + "ipAllocation":1
  1759 + }
  1760 +}
  1761 +```
  1762 +##### getBsMqttParams
  1763 +- **主题**:/client/\${baseSN}/send
  1764 +- **功能描述**:获取基站MQTT参数
  1765 +- **参数说明**
  1766 +
  1767 +|参数名|类型|限制|是否必填|说明|
  1768 +|---|---|---|---|---|
  1769 +|fun|string|-|是|指令名称|
  1770 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1771 +
  1772 +- **示例代码**
  1773 +```Json
  1774 +{
  1775 + "fun":"getBsMqttParams",
  1776 + "dataTag":"1"
  1777 +}
  1778 +```
  1779 +##### setBsMqttParams
  1780 +- **主题**:/client/\${baseSN}/send
  1781 +- **功能描述**:设置基站MQTT参数
  1782 +- **参数说明**
  1783 +
  1784 +|参数名|类型|限制|是否必填|说明|
  1785 +|---|---|---|---|---|
  1786 +|fun|string|-|是|指令名称|
  1787 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1788 +|data|object|-|是|传送参数的对象|
  1789 +|+server|string||是|服务器IP地址|
  1790 +|+port|int||是|端口,默认1883|
  1791 +|+userName|string||否|连接服务器的用户名,可不设置|
  1792 +|+password|string||否|连接服务器的密码,可不设置|
  1793 +|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
  1794 +
  1795 +- **示例代码**
  1796 +```Json
  1797 +{
  1798 + "fun":"setBsMqttParams",
  1799 + "dataTag":"1",
  1800 + "data":{
  1801 + "server":"192.168.10.10",
  1802 + "port":1883,
  1803 + "userName":"",
  1804 + "password":"",
  1805 + "interval":30
  1806 + }
  1807 +}
  1808 +```
  1809 +#### 事件
  1810 +##### fEvtBsTcpipParams
  1811 +- **主题**: /basestation/\${baseSN}/receive
  1812 +- **功能描述**:返回基站TCP/IP参数
  1813 +- **参数说明**
  1814 +
  1815 +|参数名|类型|限制|非空|说明|
  1816 +|---|---|---|---|---|
  1817 +|fun|string|-|是|指令名称|
  1818 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1819 +|data|object|-|是|传送参数的对象|
  1820 +|+mac|string||是|MAC地址|
  1821 +|+ip|string||是|IP地址|
  1822 +|+mask|string||是|子网掩码|
  1823 +|+gateway|string||是|网关地址|
  1824 +|+ipAllocation|int||否|基站IP获取方式<br>0 - 手动指定<br>1 - DHCP获取|
  1825 +
  1826 +- **示例代码**
  1827 +```Json
  1828 +{
  1829 + "fun":"fEvtBsTcpipParams",
  1830 + "dataTag":"1",
  1831 + "data":{
  1832 + "mac":"FF:FF:FF:FF:FF:FF",
  1833 + "ip":"192.168.0.10",
  1834 + "mask":"255.255.255.0",
  1835 + "gateway":"192.168.0.1",
  1836 + "ipAllocation":1
  1837 + }
  1838 +}
  1839 +```
  1840 +##### fEvtBsMqttParams
  1841 +- **主题**: /basestation/\${baseSN}/receive
  1842 +- **功能描述**:返回基站MQTT参数
  1843 +- **参数说明**
  1844 +
  1845 +|参数名|类型|限制|非空|说明|
  1846 +|---|---|---|---|---|
  1847 +|fun|string|-|是|指令名称|
  1848 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1849 +|data|object|-|是|传送参数的对象|
  1850 +|+server|string||是|服务器地址,IP|
  1851 +|+port|int||是|端口,默认1883|
  1852 +|+userName|string||否|连接服务器的用户名,可不设置|
  1853 +|+password|string||否|连接服务器的密码,可不设置|
  1854 +|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
  1855 +
  1856 +- **示例代码**
  1857 +```Json
  1858 +{
  1859 + "fun":"fEvtBsMqttParams",
  1860 + "dataTag":"1",
  1861 + "data":{
  1862 + "server":"192.168.10.10",
  1863 + "port":1883,
  1864 + "userName":"",
  1865 + "password":"",
  1866 + "interval":30
  1867 + }
  1868 +}
  1869 +```
  1870 +### 配对模式
  1871 +#### 方法
  1872 +##### startBsFastPair
  1873 +- **主题**:/client/\${baseSN}/send
  1874 +- **功能描述**:启动快速配对,键盘配对成功返回键盘信息 [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
  1875 +- **参数说明**
  1876 +
  1877 +|参数名|类型|限制|是否必填|说明|
  1878 +|---|---|---|---|---|
  1879 +|fun|string|-|是|指令名称|
  1880 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1881 +
  1882 +- **示例代码**
  1883 +```Json
  1884 +{
  1885 + "fun": "startBsFastPair",
  1886 + "dataTag":"1"
  1887 +}
  1888 +```
  1889 +##### stopBsFastPair
  1890 +- **主题**:/client/\${baseSN}/send
  1891 +- **功能描述**:停止快速配对
  1892 +- **参数说明**
  1893 +
  1894 +|参数名|类型|限制|是否必填|说明|
  1895 +|---|---|---|---|---|
  1896 +|fun|string|-|是|指令名称|
  1897 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1898 +
  1899 +- **示例代码**
  1900 +```Json
  1901 +{
  1902 + "fun": "stopBsFastPair",
  1903 + "dataTag":"1"
  1904 +}
  1905 +```
  1906 +#### 事件
  1907 +##### [sEvtStateCode](#sevtstatecode)
  1908 +发送指令后返回此事件
  1909 +
  1910 +##### [sEvtBsKpOnlineMsg](#sevtbskponlinemsg)
  1911 +键盘配对成功后在线返回此事件
  1912 +
  1913 +### 白名单模式
  1914 +#### 方法
  1915 +##### getBsWhitelist
  1916 +- **主题**:/client/\${baseSN}/send
  1917 +- **功能描述**:获取基站白名单列表
  1918 +- **参数说明**
  1919 +
  1920 +|参数名|类型|限制|是否必填|说明|
  1921 +|---|---|---|---|---|
  1922 +|fun|string|-|是|指令名称|
  1923 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1924 +
  1925 +- **示例代码**
  1926 +```Json
  1927 +{
  1928 + "fun": "getBsWhitelist",
  1929 + "dataTag":"1"
  1930 +}
  1931 +```
  1932 +##### setBsWhitelist
  1933 +- **主题**:/client/\${baseSN}/send
  1934 +- **功能描述**:设置基站白名单列表,将基站白名单替换为写入的键盘SN列表
  1935 +- **参数说明**
  1936 +
  1937 +|参数名|类型|限制|是否必填|说明|
  1938 +|---|---|---|---|---|
  1939 +|fun|string|-|是|指令名称|
  1940 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1941 +|data|object|-|是|传送参数的对象|
  1942 +|+keySns|array|-|是|待写入的键盘SN数组|
  1943 +
  1944 +- **示例代码**
  1945 +```Json
  1946 +{
  1947 + "fun": "setBsWhitelist",
  1948 + "dataTag":"1",
  1949 + "data":{
  1950 + "keySns":["2024021001","2024021002","2024021003","2024021004"]
  1951 + }
  1952 +}
  1953 +```
  1954 +##### clearBsWhitelist
  1955 +- **主题**:/client/\${baseSN}/send
  1956 +- **功能描述**:清空基站白名单列表
  1957 +- **参数说明**
  1958 +
  1959 +|参数名|类型|限制|是否必填|说明|
  1960 +|---|---|---|---|---|
  1961 +|fun|string|-|是|指令名称|
  1962 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1963 +
  1964 +- **示例代码**
  1965 +```Json
  1966 +{
  1967 + "fun": "clearBsWhitelist",
  1968 + "dataTag":"1"
  1969 +}
  1970 +```
  1971 +##### addBsWhitelist
  1972 +- **主题**:/client/\${baseSN}/send
  1973 +- **功能描述**:添加键盘至基站白名单列表
  1974 +- **参数说明**
  1975 +
  1976 +|参数名|类型|限制|是否必填|说明|
  1977 +|---|---|---|---|---|
  1978 +|fun|string|-|是|指令名称|
  1979 +|dataTag|string|-|否|数据包标识,可为空字符串|
  1980 +|data|object|-|是|传送参数的对象|
  1981 +|+keySns|array|-|是|待添加的键盘SN列表|
  1982 +
  1983 +- **示例代码**
  1984 +```Json
  1985 +{
  1986 + "fun": "addBsWhitelist",
  1987 + "dataTag":"1",
  1988 + "data":{
  1989 + "keySns":["2024021001"]
  1990 + }
  1991 +}
  1992 +```
  1993 +##### delBsWhitelist
  1994 +- **主题**:/client/\${baseSN}/send
  1995 +- **功能描述**:从基站白名单列表中删除键盘
  1996 +- **参数说明**
  1997 +
  1998 +|参数名|类型|限制|是否必填|说明|
  1999 +|---|---|---|---|---|
  2000 +|fun|string|-|是|指令名称|
  2001 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2002 +|data|object|-|是|传送参数的对象|
  2003 +|+keySns|array|-|是|待删除的键盘SN列表|
  2004 +
  2005 +- **示例代码**
  2006 +```Json
  2007 +{
  2008 + "fun": "delBsWhitelist",
  2009 + "dataTag":"1",
  2010 + "data":{
  2011 + "keySns":["2024021001"]
  2012 + }
  2013 +}
  2014 +```
  2015 +##### lockBsWhitelistKp
  2016 +- **主题**:/client/\${baseSN}/send
  2017 +- **功能描述**:锁定指定的键盘SN,基站限制容量时,被锁定键盘SN不会被新刷卡加入的键盘挤出
  2018 +- **参数说明**
  2019 +
  2020 +|参数名|类型|限制|是否必填|说明|
  2021 +|---|---|---|---|---|
  2022 +|fun|string|-|是|指令名称|
  2023 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2024 +|data|object|-|是|传送参数的对象|
  2025 +|+keySns|array|-|是|待锁定的键盘SN列表,空数组代表锁定所有键盘|
  2026 +
  2027 +- **示例代码**
  2028 +```Json
  2029 +{
  2030 + "fun": "lockBsWhitelistKp",
  2031 + "dataTag":"1",
  2032 + "data":{
  2033 + "keySns":["2024021001"]
  2034 + }
  2035 +}
  2036 +```
  2037 +##### unlockBsWhitelistKp
  2038 +- **主题**:/client/\${baseSN}/send
  2039 +- **功能描述**:解锁键盘SN
  2040 +- **参数说明**
  2041 +
  2042 +|参数名|类型|限制|是否必填|说明|
  2043 +|---|---|---|---|---|
  2044 +|fun|string|-|是|指令名称|
  2045 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2046 +|data|object|-|是|传送参数的对象|
  2047 +|+keySns|array|-|是|待解锁的键盘SN列表,空数组代表解锁所有键盘|
  2048 +
  2049 +- **示例代码**
  2050 +```Json
  2051 +{
  2052 + "fun": "unlockBsWhitelistKp",
  2053 + "dataTag":"1",
  2054 + "data":{
  2055 + "keySn":["2024021001"]
  2056 + }
  2057 +}
  2058 +```
  2059 +#### 事件
  2060 +##### [sEvtStateCode](#sevtstatecode)
  2061 +发送指令后返回此事件
  2062 +
  2063 +##### fEvtBsWhitelist
  2064 +- **主题**:/basestation/\${baseSN}/receive
  2065 +- **功能描述**:返回基站白名单列表
  2066 +- **参数说明**
  2067 +
  2068 +|参数名|类型|限制|非空|说明|
  2069 +|---|---|---|---|---|
  2070 +|fun|string|-|是|指令名称|
  2071 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2072 +|data|object|-|是|传送参数的对象|
  2073 +|+keySns|array||是|基站当前的白名单列表|
  2074 +
  2075 +- **示例代码**
  2076 +```Json
  2077 +{
  2078 + "fun":"fEvtBsWhitelist",
  2079 + "dataTag":"1",
  2080 + "data":{
  2081 + "keySns":["2024021001","2024021002","2024021003","2024021004"]
  2082 + }
  2083 +}
  2084 +```
  2085 +
  2086 +##### fEvtAddBsWhitelist
  2087 +- **主题**:/basestation/\${baseSN}/receive
  2088 +- **功能描述**:返回增加键盘状态
  2089 +- **参数说明**
  2090 +
  2091 +|参数名|类型|限制|非空|说明|
  2092 +|---|---|---|---|---|
  2093 +|fun|string|-|是|指令名称|
  2094 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2095 +|data|array|-|是|传送参数的对象数组|
  2096 +|++keySn|string||是|键盘SN|
  2097 +|++state|int||是|键盘的增加状态 <br>0-增加成功<br> 1-增加失败|
  2098 +
  2099 +- **示例代码**
  2100 +```Json
  2101 +{
  2102 + "fun":"fEvtAddBsWhitelist",
  2103 + "dataTag":"1",
  2104 + "data":[{
  2105 + "keySn":"2024021001",
  2106 + "state":0
  2107 + }]
  2108 +}
  2109 +```
  2110 +
  2111 +##### fEvtDelBsWhitelist
  2112 +- **主题**:/basestation/\${baseSN}/receive
  2113 +- **功能描述**:返回删除键盘状态
  2114 +- **参数说明**
  2115 +
  2116 +|参数名|类型|限制|非空|说明|
  2117 +|---|---|---|---|---|
  2118 +|fun|string|-|是|指令名称|
  2119 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2120 +|data|array|-|是|传送参数的对象数组|
  2121 +|++keySn|string||是|键盘SN|
  2122 +|++state|int||是|键盘的删除状态 <br>0-删除成功<br> 1-删除失败|
  2123 +
  2124 +- **示例代码**
  2125 +```Json
  2126 +{
  2127 + "fun":"fEvtDelBsWhitelist",
  2128 + "dataTag":"1",
  2129 + "data":[{
  2130 + "keySn":"2024021001",
  2131 + "state":0
  2132 + }]
  2133 +}
  2134 +```
  2135 +
  2136 +##### fEvtLockBsWhitelistKp
  2137 +- **主题**:/basestation/\${baseSN}/receive
  2138 +- **功能描述**:返回键盘锁定状态
  2139 +- **参数说明**
  2140 +
  2141 +|参数名|类型|限制|非空|说明|
  2142 +|---|---|---|---|---|
  2143 +|fun|string|-|是|指令名称|
  2144 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2145 +|data|array|-|是|传送参数的对象数组|
  2146 +|++keySn|string||是|解锁或锁定的键盘SN|
  2147 +|++state|int||是|键盘的锁定状态 <br>0-未锁定<br> 1-锁定|
  2148 +
  2149 +- **示例代码**
  2150 +```Json
  2151 +{
  2152 + "fun":"fEvtLockBsWhitelistKp",
  2153 + "dataTag":"1",
  2154 + "data":[{
  2155 + "keySn":"2024021001",
  2156 + "state":1
  2157 + }]
  2158 +}
  2159 +```
  2160 +### 基站加密
  2161 +#### 方法
  2162 +##### getBsSoftwareKey
  2163 +- **主题**:/client/\${baseSN}/send
  2164 +- **功能描述**:获取基站软件狗密钥
  2165 +- **参数说明**
  2166 +
  2167 +|参数名|类型|限制|是否必填|说明|
  2168 +|---|---|---|---|---|
  2169 +|fun|string|-|是|指令名称|
  2170 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2171 +
  2172 +- **示例代码**
  2173 +```Json
  2174 +{
  2175 + "fun": "getBsSoftwareKey",
  2176 + "dataTag":"1"
  2177 +}
  2178 +```
  2179 +##### setBsSoftwareKey
  2180 +- **主题**:/client/\${baseSN}/send
  2181 +- **功能描述**:设置基站软件狗密钥
  2182 +- **参数说明**
  2183 +
  2184 +|参数名|类型|限制|是否必填|说明|
  2185 +|---|---|---|---|---|
  2186 +|fun|string|-|是|指令名称|
  2187 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2188 +|data|object|-|是|传送参数的对象|
  2189 +|+value|string|-|是|基站软件狗密钥,长度不超过32字节|
  2190 +
  2191 +- **示例代码**
  2192 +```Json
  2193 +{
  2194 + "fun": "setBsSoftwareKey",
  2195 + "dataTag":"1",
  2196 + "data":{
  2197 + "value":"sunvote123456"
  2198 + }
  2199 +}
  2200 +```
  2201 +##### getBsAES
  2202 +- **主题**:/client/\${baseSN}/send
  2203 +- **功能描述**:获取基站加密方式
  2204 +- **参数说明**
  2205 +
  2206 +|参数名|类型|限制|是否必填|说明|
  2207 +|---|---|---|---|---|
  2208 +|fun|string|-|是|指令名称|
  2209 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2210 +
  2211 +- **示例代码**
  2212 +```Json
  2213 +{
  2214 + "fun": "getBsAES",
  2215 + "dataTag":"1"
  2216 +}
  2217 +```
  2218 +##### setBsAES
  2219 +- **主题**:/client/\${baseSN}/send
  2220 +- **功能描述**:设置基站加密方式
  2221 +- **参数说明**
  2222 +
  2223 +|参数名|类型|限制|是否必填|说明|
  2224 +|---|---|---|---|---|
  2225 +|fun|string|-|是|指令名称|
  2226 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2227 +|data|object|-|是|传送参数的对象|
  2228 +|+value|string|-|是|无线加密方式<br>0:不加密<br>1:AES128加密<br>2:AES256加密 |
  2229 +
  2230 +- **示例代码**
  2231 +```Json
  2232 +{
  2233 + "fun": "setBsAES",
  2234 + "dataTag":"1",
  2235 + "data":{
  2236 + "value":"0"
  2237 + }
  2238 +}
  2239 +```
  2240 +#### 事件
  2241 +##### fEvtBsSoftwareKey
  2242 +- **主题**:/basestation/\${baseSN}/receive
  2243 +- **功能描述**:返回基站的软件狗密钥
  2244 +- **参数说明**
  2245 +
  2246 +|参数名|类型|限制|非空|说明|
  2247 +|---|---|---|---|---|
  2248 +|fun|string|-|是|指令名称|
  2249 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2250 +|data|object|-|是|传送参数的对象|
  2251 +|+value|string||是|返回基站的软件狗密钥|
  2252 +
  2253 +- **示例代码**
  2254 +```Json
  2255 +{
  2256 + "fun":"fEvtBsSoftwareKey",
  2257 + "dataTag":"1",
  2258 + "data":{
  2259 + "value":"sunvote123456"
  2260 + }
  2261 +}
  2262 +```
  2263 +##### fEvtBsAES
  2264 +- **主题**:/basestation/\${baseSN}/receive
  2265 +- **功能描述**:返回基站的无线加密模式
  2266 +- **参数说明**
  2267 +
  2268 +|参数名|类型|限制|非空|说明|
  2269 +|---|---|---|---|---|
  2270 +|fun|string|-|是|指令名称|
  2271 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2272 +|data|object|-|是|传送参数的对象|
  2273 +|+value|string||是|返回基站的无线加密模式<br>0:不加密<br>1:AES128加密<br>2:AES256加密|
  2274 +
  2275 +- **示例代码**
  2276 +```Json
  2277 +{
  2278 + "fun":"fEvtBsAES",
  2279 + "dataTag":"1",
  2280 + "data":{
  2281 + "value":"0"
  2282 + }
  2283 +}
  2284 +```
  2285 +### 基站升级
  2286 +#### 方法
  2287 +##### startBsUpdate
  2288 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  2289 +- **功能描述**:基站固件升级
  2290 +- **参数说明**
  2291 +
  2292 +|参数名|类型|限制|是否必填|说明|
  2293 +|---|---|---|---|---|
  2294 +|fun|string|-|是|指令名称|
  2295 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2296 +|data|object|-|是|传送参数的对象|
  2297 +|+partition|int||是|存储区域<br> 1-备份区<font class="yellowFill"> 使用备份区固件的方法:打开基站盖子,按住SW1按钮,然后上电,这时基站固件就会更新成备份区的固件</font><br>2-更新区,实时升级基站固件|
  2298 +|+url|string||是|待升级的固件地址,可访问的网络url<br>直连基站为本地的文件路径|
  2299 +|+version|string||是|待升级的基站固件版本|
  2300 +|+crc|uint||是|固件CRC校验码,10进制数字|
  2301 +|+time|string||是|时间,yyyyMMddHHmmss|
  2302 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  2303 +
  2304 +- **示例代码**
  2305 +```Json
  2306 +{
  2307 + "fun":"startBsUpdate",
  2308 + "dataTag":"1",
  2309 + "data":{
  2310 + "partition":2,
  2311 + "url":"http://192.168.10.10/V1.0.3.bin",
  2312 + "version":"1.0.3",
  2313 + "crc":1429319861
  2314 + }
  2315 +}
  2316 +```
  2317 +##### downloadFontLib
  2318 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  2319 +- **功能描述**:下载更新基站字库文件
  2320 +- **参数说明**
  2321 +
  2322 +|参数名|类型|限制|是否必填|说明|
  2323 +|---|---|---|---|---|
  2324 +|fun|string|-|是|指令名称|
  2325 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2326 +|data|object|-|是|传送参数的对象|
  2327 +|+url|string||是|待下载的字库地址,可访问的网络url<br>直连基站为本地的文件路径|
  2328 +|+version|string||是|待升级的字库版本|
  2329 +|+crc|int||是|字库CRC校验码,10进制数字|
  2330 +|+time|string||是|时间,yyyyMMddHHmmss|
  2331 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  2332 +
  2333 +- **示例代码**
  2334 +```Json
  2335 +{
  2336 + "fun":"downloadFontLib",
  2337 + "dataTag":"1",
  2338 + "data":{
  2339 + "url":"http://192.168.10.10/V1.0.3.bin",
  2340 + "version":"1.0.3",
  2341 + "crc":1429319861
  2342 + }
  2343 +}
  2344 +```
  2345 +
  2346 +#### 事件
  2347 +##### [sEvtStateCode](#sevtstatecode)
  2348 +返回升级指令的接收状态
  2349 +注意:升级指令的接收状态需从**主题: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>** 返回
  2350 +
  2351 +##### fEvtBsUpateState
  2352 +- **主题**: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  2353 +- **功能描述**:返回基站启动升级状态
  2354 +- **参数说明**
  2355 +
  2356 +|参数名|类型|限制|非空|说明|
  2357 +|---|---|---|---|---|
  2358 +|fun|string|-|是|指令名称|
  2359 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2360 +|data|object|-|是|传送参数的对象|
  2361 +|+state|int||是|启动升级状态<br>0 - 准备升级<br>1 - 升级成功<br>2 - 升级失败
  2362 +|+msg|string||否|返回的失败原因
  2363 +
  2364 +- **示例代码**
  2365 +```Json
  2366 +{
  2367 + "fun":"fEvtBsUpateState",
  2368 + "dataTag":"1",
  2369 + "data":{
  2370 + "state":2,
  2371 + "msg":"error msg"
  2372 + }
  2373 +}
  2374 +```
  2375 +
  2376 +##### fEvtBsUpdateProgress
  2377 +- **主题**: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  2378 +- **功能描述**:返回基站升级进度
  2379 +- **参数说明**
  2380 +
  2381 +|参数名|类型|限制|非空|说明|
  2382 +|---|---|---|---|---|
  2383 +|fun|string|-|是|指令名称|
  2384 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2385 +|data|object|-|是|传送参数的对象|
  2386 +|+progress|int||是|升级进度,百分比|
  2387 +
  2388 +- **示例代码**
  2389 +```Json
  2390 +{
  2391 + "fun":"fEvtBsUpdateProgress",
  2392 + "dataTag":"1",
  2393 + "data":{
  2394 + "progress":20
  2395 + }
  2396 +}
  2397 +```
  2398 +##### fEvtBsFontLibState
  2399 +- **主题**: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  2400 +- **功能描述**:返回基站下载字库状态
  2401 +- **参数说明**
  2402 +
  2403 +|参数名|类型|限制|非空|说明|
  2404 +|---|---|---|---|---|
  2405 +|fun|string|-|是|指令名称|
  2406 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2407 +|data|object|-|是|传送参数的对象|
  2408 +|+state|int||是|启动升级状态<br>0 - 准备下载<br>1 - 下载完成<br>2 - 下载失败
  2409 +|+msg|string||否|返回的失败原因
  2410 +
  2411 +- **示例代码**
  2412 +```Json
  2413 +{
  2414 + "fun":"fEvtBsFontLibState",
  2415 + "dataTag":"1",
  2416 + "data":{
  2417 + "state":2,
  2418 + "msg":"error msg"
  2419 + }
  2420 +}
  2421 +```
  2422 +
  2423 +##### fEvtBsFontLibProgress
  2424 +- **主题**: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  2425 +- **功能描述**:返回基站下载字库进度
  2426 +- **参数说明**
  2427 +
  2428 +|参数名|类型|限制|非空|说明|
  2429 +|---|---|---|---|---|
  2430 +|fun|string|-|是|指令名称|
  2431 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2432 +|data|object|-|是|传送参数的对象|
  2433 +|+progress|int||是|下载进度,百分比|
  2434 +
  2435 +- **示例代码**
  2436 +```Json
  2437 +{
  2438 + "fun":"fEvtBsFontLibProgress",
  2439 + "dataTag":"1",
  2440 + "data":{
  2441 + "progress":20
  2442 + }
  2443 +}
  2444 +```
  2445 +
  2446 +## 键盘管理
  2447 +### 识别设置
  2448 +#### 方法
  2449 +##### setKpSN
  2450 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  2451 +- **功能描述**:设置指定键盘的出厂编码
  2452 +- **参数说明**
  2453 +
  2454 +|参数名|类型|限制|是否必填|说明|
  2455 +|---|---|---|---|---|
  2456 +|fun|string|-|是|指令名称|
  2457 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2458 +|data|object|-|是|传送参数的对象|
  2459 +|+oldKeySn|string||是|键盘原SN|
  2460 +|+newKeySn|string||是|待设置的新SN|
  2461 +|+time|string|数字|是|时间,yyyyMMddHHmmss|
  2462 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  2463 +
  2464 +- **示例代码**
  2465 +```Json
  2466 +{
  2467 + "fun":"setKpIdentityMode",
  2468 + "dataTag":"1",
  2469 + "data":{
  2470 + "oldKeySn":"1234567890",
  2471 + "newKeySn":"2024021011"
  2472 + }
  2473 +}
  2474 +```
  2475 +##### getKpID
  2476 +- **主题**:/client/\${baseSN}/send
  2477 +- **功能描述**:获取键盘编号
  2478 +- **参数说明**
  2479 +
  2480 +|参数名|类型|限制|是否必填|说明|
  2481 +|---|---|---|---|---|
  2482 +|fun|string|-|是|指令名称|
  2483 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2484 +|data|object|-|是|传送参数的对象|
  2485 +|+keySn|string||是|需读取编号的键盘SN|
  2486 +
  2487 +- **示例代码**
  2488 +```Json
  2489 +{
  2490 + "fun":"getKpID",
  2491 + "dataTag":"1",
  2492 + "data":{
  2493 + "keySn":"2024021011"
  2494 + }
  2495 +}
  2496 +```
  2497 +##### setKpID
  2498 +- **主题**:/client/\${baseSN}/send
  2499 +- **功能描述**:设置键盘编号
  2500 +- **参数说明**
  2501 +
  2502 +|参数名|类型|限制|是否必填|说明|
  2503 +|---|---|---|---|---|
  2504 +|fun|string|-|是|指令名称|
  2505 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2506 +|data|object|-|是|传送参数的对象|
  2507 +|+keySn|string||是|需设置编号的键盘SN|
  2508 +|+keyId|int||是|键盘编号,不超过65535|
  2509 +- **示例代码**
  2510 +```Json
  2511 +{
  2512 + "fun":"setKpID",
  2513 + "dataTag":"1",
  2514 + "data":{
  2515 + "keySn":"2024021011",
  2516 + "keyId":1
  2517 + }
  2518 +}
  2519 +```
  2520 +##### getKpModel
  2521 +- **主题**:/client/\${baseSN}/send
  2522 +- **功能描述**:获取键盘型号
  2523 +- **参数说明**
  2524 +
  2525 +|参数名|类型|限制|是否必填|说明|
  2526 +|---|---|---|---|---|
  2527 +|fun|string|-|是|指令名称|
  2528 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2529 +|data|object|-|是|传送参数的对象|
  2530 +|+keySn|string||是|需读取型号的键盘SN|
  2531 +
  2532 +- **示例代码**
  2533 +```Json
  2534 +{
  2535 + "fun":"getKpModel",
  2536 + "dataTag":"1",
  2537 + "data":{
  2538 + "keySn":"2024021011"
  2539 + }
  2540 +}
  2541 +```
  2542 +
  2543 +##### getKpFWVersion
  2544 +- **主题**:/client/\${baseSN}/send
  2545 +- **功能描述**:获取键盘型号
  2546 +- **参数说明**
  2547 +
  2548 +|参数名|类型|限制|是否必填|说明|
  2549 +|---|---|---|---|---|
  2550 +|fun|string|-|是|指令名称|
  2551 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2552 +|data|object|-|是|传送参数的对象|
  2553 +|+keySn|string||是|需读取版本的键盘SN|
  2554 +
  2555 +- **示例代码**
  2556 +```Json
  2557 +{
  2558 + "fun":"getKpFWVersion",
  2559 + "dataTag":"1",
  2560 + "data":{
  2561 + "keySn":"2024021011"
  2562 + }
  2563 +}
  2564 +```
  2565 +
  2566 +##### getKpIdentityMode
  2567 +- **主题**:/client/\${baseSN}/send
  2568 +- **功能描述**:获取键盘识别模式
  2569 +- **参数说明**
  2570 +
  2571 +|参数名|类型|限制|是否必填|说明|
  2572 +|---|---|---|---|---|
  2573 +|fun|string|-|是|指令名称|
  2574 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2575 +
  2576 +- **示例代码**
  2577 +```Json
  2578 +{
  2579 + "fun":"getKpIdentityMode",
  2580 + "dataTag":"1"
  2581 +}
  2582 +```
  2583 +##### setKpIdentityMode
  2584 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  2585 +- **功能描述**:设置键盘识别模式
  2586 +- **参数说明**
  2587 +
  2588 +|参数名|类型|限制|是否必填|说明|
  2589 +|---|---|---|---|---|
  2590 +|fun|string|-|是|指令名称|
  2591 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2592 +|data|object|-|是|传送参数的对象|
  2593 +|+value|string||是|设置键盘识别模式<br>0 - SN模式<br>1 - ID+SN模式|
  2594 +|+time|string|数字|是|时间,yyyyMMddHHmmss|
  2595 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  2596 +
  2597 +- **示例代码**
  2598 +```Json
  2599 +{
  2600 + "fun":"setKpIdentityMode",
  2601 + "dataTag":"1",
  2602 + "data":{
  2603 + "value":"0"
  2604 + }
  2605 +}
  2606 +```
  2607 +#### 事件
  2608 +##### fEvtKpIdentityMode
  2609 +- **主题**:/basestation/\${baseSN}/receive
  2610 +- **功能描述**:返回键盘识别模式
  2611 +- **参数说明**
  2612 +
  2613 +|参数名|类型|限制|非空|说明|
  2614 +|---|---|---|---|---|
  2615 +|fun|string|-|是|指令名称|
  2616 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2617 +|data|object|-|是|传送参数的对象|
  2618 +|+value|string||是|设置键盘识别模式<br>0 - SN模式<br>1 - ID+SN模式|
  2619 +
  2620 +- **示例代码**
  2621 +```Json
  2622 +{
  2623 + "fun":"fEvtKpIdentityMode",
  2624 + "dataTag":"1",
  2625 + "data":{
  2626 + "value":"0"
  2627 + }
  2628 +}
  2629 +```
  2630 +##### fEvtKpSN
  2631 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  2632 +- **功能描述**:返回写键盘SN状态
  2633 +- **参数说明**
  2634 +
  2635 +|参数名|类型|限制|非空|说明|
  2636 +|---|---|---|---|---|
  2637 +|fun|string|-|是|指令名称|
  2638 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2639 +|data|object|-|是|传送参数的对象|
  2640 +|+keySn|string||是|设置键盘SN的原SN|
  2641 +|+state|string||是|设置是否成功<br>0-设置成功<br>1-设置失败|
  2642 +
  2643 +- **示例代码**
  2644 +```Json
  2645 +{
  2646 + "fun":"fEvtKpSN",
  2647 + "dataTag":"1",
  2648 + "data":{
  2649 + "keySn":"1234567890",
  2650 + "state":"0"
  2651 + }
  2652 +}
  2653 +```
  2654 +##### fEvtKpID
  2655 +- **主题**:/basestation/\${baseSN}/receive
  2656 +- **功能描述**:返回键盘编号
  2657 +- **参数说明**
  2658 +
  2659 +|参数名|类型|限制|非空|说明|
  2660 +|---|---|---|---|---|
  2661 +|fun|string|-|是|指令名称|
  2662 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2663 +|data|object|-|是|传送参数的对象|
  2664 +|+keySn|string||是|设置键盘SN的原SN|
  2665 +|+keyId|int||是|键盘编号|
  2666 +
  2667 +- **示例代码**
  2668 +```Json
  2669 +{
  2670 + "fun":"fEvtKpID",
  2671 + "dataTag":"1",
  2672 + "data":{
  2673 + "keySn":"2024021011",
  2674 + "keyId":11
  2675 + }
  2676 +}
  2677 +```
  2678 +##### fEvtKpModel
  2679 +- **主题**:/basestation/\${baseSN}/receive
  2680 +- **功能描述**:返回键盘型号
  2681 +- **参数说明**
  2682 +
  2683 +|参数名|类型|限制|非空|说明|
  2684 +|---|---|---|---|---|
  2685 +|fun|string|-|是|指令名称|
  2686 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2687 +|data|object|-|是|传送参数的对象|
  2688 +|+keySn|string||是|设置键盘SN的原SN|
  2689 +|+model|int||是|键盘型号代码|
  2690 +
  2691 +- **示例代码**
  2692 +```Json
  2693 +{
  2694 + "fun":"fEvtKpModel",
  2695 + "dataTag":"1",
  2696 + "data":{
  2697 + "keySn":"2024021011",
  2698 + "model":67
  2699 + }
  2700 +}
  2701 +```
  2702 +
  2703 +##### fEvtKpFWVersion
  2704 +- **主题**:/basestation/\${baseSN}/receive
  2705 +- **功能描述**:返回键盘型号
  2706 +- **参数说明**
  2707 +
  2708 +|参数名|类型|限制|非空|说明|
  2709 +|---|---|---|---|---|
  2710 +|fun|string|-|是|指令名称|
  2711 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2712 +|data|object|-|是|传送参数的对象|
  2713 +|+keySn|string||是|设置键盘SN的原SN|
  2714 +|+version|string||是|键盘固件版本|
  2715 +
  2716 +- **示例代码**
  2717 +```Json
  2718 +{
  2719 + "fun":"fEvtKpFWVersion",
  2720 + "dataTag":"1",
  2721 + "data":{
  2722 + "keySn":"2024021011",
  2723 + "version":"1.0.0"
  2724 + }
  2725 +}
  2726 +```
  2727 +
  2728 +### 交互设置
  2729 +#### 方法
  2730 +##### setKpUserStbMsg
  2731 +- **主题**:/client/\${baseSN}/send
  2732 +- **功能描述**:设置用户内置状态语
  2733 +- **参数说明**
  2734 +
  2735 +|参数名|类型|限制|是否必填|说明|
  2736 +|---|---|---|---|---|
  2737 +|fun|string|-|是|指令名称|
  2738 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2739 +|data|object|-|是|传送参数的对象|
  2740 +|+online|string||是|在线状态显示的待机语<br>空字符串清除|
  2741 +|+offline|string||是|离线状态显示的待机语<br>空字符串清除|
  2742 +|+submitting|string||是|提交中状态语<br>空字符串清除|
  2743 +|+submitted|string||是|已提交状态语<br>空字符串清除|
  2744 +
  2745 +- **示例代码**
  2746 +```Json
  2747 +{
  2748 + "fun":"setKpUserStbMsg",
  2749 + "dataTag":"1",
  2750 + "data":{
  2751 + "online":"请认真听讲",
  2752 + "offline":"离线",
  2753 + "submitting":"提交中",
  2754 + "submitted":"提交成功"
  2755 + }
  2756 +}
  2757 +```
  2758 +##### rtSetKpUserPrompt
  2759 +- **主题**:/client/\${baseSN}/send
  2760 +- **功能描述**:实时设置提示反馈信息
  2761 +- **参数说明**
  2762 +
  2763 +|参数名|类型|限制|是否必填|说明|
  2764 +|---|---|---|---|---|
  2765 +|fun|string|-|是|指令名称|
  2766 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2767 +|data|array|-|否|传送参数的对象数组|
  2768 +|++keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘<br><font color="red">注意:不允许空数组和指定SN数组混合使用<br>包含空数组默认为全部在线键盘,其他指定键盘无效</font>|
  2769 +|++info|string||否|设置的反馈信息<br>不同键盘可设置不同反馈信息|
  2770 +
  2771 +- **示例代码**
  2772 +```Json
  2773 +//分别提示
  2774 +{
  2775 + "fun": "rtSetKpUserPrompt",
  2776 + "dataTag":"1",
  2777 + "data": [
  2778 + {
  2779 + "keySns": ["1479824643","1479824645"],
  2780 + "info": "答对了"
  2781 + },
  2782 + {
  2783 + "keySns": ["1479824644"],
  2784 + "info": "答错了"
  2785 + }
  2786 + ]
  2787 +}
  2788 +//统一提示
  2789 +{
  2790 + "fun": "rtSetKpUserPrompt",
  2791 + "dataTag":"1",
  2792 + "data": [
  2793 + {
  2794 + "keySns": [],
  2795 + "info": "答题结束"
  2796 + }
  2797 + ]
  2798 +}
  2799 +```
  2800 +
  2801 +##### rtSetKpUserLedEffects
  2802 +##### rtSetKpUserVibEffects
  2803 +##### rtSetKpUserBeepEffects
  2804 +
  2805 +#### 事件
  2806 +##### [sEvtStateCode](#sevtstatecode)
  2807 +发送指令后返回接收状态
  2808 +
  2809 +##### fEvtKpUserStbMsg
  2810 +- **主题**:/basestation/\${baseSN}/receive
  2811 +- **功能描述**:返回设置状态语的状态
  2812 +- **参数说明**
  2813 +
  2814 +|参数名|类型|限制|非空|说明|
  2815 +|---|---|---|---|---|
  2816 +|fun|string|-|是|指令名称|
  2817 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2818 +|data|object|-|否|传送参数的对象|
  2819 +|+state|string||是|设置状态语是否成功<br> 0 - 成功<br> 1 - 失败|
  2820 +
  2821 +- **示例代码**
  2822 +```Json
  2823 +{
  2824 + "fun":"fEvtKpUserStbMsg",
  2825 + "dataTag":"1",
  2826 + "data":{
  2827 + "state":"0"
  2828 + }
  2829 +}
  2830 +```
  2831 +##### fEvtSetKpUserPrompt
  2832 +- **主题**:/basestation/\${baseSN}/receive
  2833 +- **功能描述**:返回实时设置提示语是否成功
  2834 +- **参数说明**
  2835 +
  2836 +|参数名|类型|限制|非空|说明|
  2837 +|---|---|---|---|---|
  2838 +|fun|string|-|是|指令名称|
  2839 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2840 +|data|array|-|是|传送参数的对象数组|
  2841 +|++keySn|string||是|设置提示语信息的键盘SN|
  2842 +|++state|string||是|设置的提示语是否成功<br>0 - 成功<br>1 - 失败|
  2843 +
  2844 +- **示例代码**
  2845 +```Json
  2846 +{
  2847 + "fun": "fEvtSetKpUserPrompt",
  2848 + "dataTag":"1",
  2849 + "data": [
  2850 + {
  2851 + "keySn": "1479824643",
  2852 + "state": "0"
  2853 + },
  2854 + {
  2855 + "keySn": "1479824645",
  2856 + "state": "0"
  2857 + },
  2858 + {
  2859 + "keySn": "1479824644",
  2860 + "state": "1"
  2861 + }
  2862 + ]
  2863 +}
  2864 +```
  2865 +### 在线状态
  2866 +#### 方法
  2867 +##### startGetKpOnline
  2868 +- **主题**:/client/\${baseSN}/send
  2869 +- **功能描述**:开始获取键盘在线信息,键盘在线返回键盘信息
  2870 +- **参数说明**
  2871 +
  2872 +|参数名|类型|限制|是否必填|说明|
  2873 +|---|---|---|---|---|
  2874 +|fun|string|-|是|指令名称|
  2875 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2876 +
  2877 +- **示例代码**
  2878 +```Json
  2879 +{
  2880 + "fun": "startGetKpOnline",
  2881 + "dataTag":"1"
  2882 +}
  2883 +```
  2884 +
  2885 +##### stopGetKpOnline
  2886 +- **主题**:/client/\${baseSN}/send
  2887 +- **功能描述**:停止获取键盘在线信息
  2888 +- **参数说明**
  2889 +
  2890 +|参数名|类型|限制|是否必填|说明|
  2891 +|---|---|---|---|---|
  2892 +|fun|string|-|是|指令名称|
  2893 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2894 +
  2895 +- **示例代码**
  2896 +```Json
  2897 +{
  2898 + "fun": "stopGetKpOnline",
  2899 + "dataTag":"1"
  2900 +}
  2901 +```
  2902 +#### 事件
  2903 +##### [sEvtStateCode](#sevtstatecode)
  2904 +发送指令后返回此事件
  2905 +
  2906 +##### fEvtKpOnlineMsg
  2907 +- **主题**: /basestation/\${baseSN}/receive
  2908 +- **功能描述**:主动获取在线键盘时,在线键盘状态报告
  2909 +- **参数说明**
  2910 +
  2911 +|参数名|类型|限制|非空|说明|
  2912 +|---|---|---|---|---|
  2913 +|fun|string|-|是|事件名称|
  2914 +|dataTag|string|-|否|数据包标识|
  2915 +|data|object|-|是|传送参数的对象|
  2916 +|+keySn|string||是|键盘SN|
  2917 +|+version|string||是|键盘固件版本|
  2918 +|+model|int||是|键盘型号|
  2919 +|+voltage|double||是|键盘电量<font color="red">(待键盘修改成百分比)</font>|
  2920 +|+isWeak|int||是|是否弱电, 0-正常,1-弱电<font color="red">(待键盘修改上报弱电状态)</font>|
  2921 +
  2922 +- **示例代码**
  2923 +```Json
  2924 +{
  2925 + "fun":"fEvtKpOnlineMsg",
  2926 + "dataTag":"1",
  2927 + "data":{
  2928 + "keySn":"1234567890",
  2929 + "version":"1.0.0",
  2930 + "model":67,
  2931 + "voltage":2.8,
  2932 + "isWeak":0
  2933 + }
  2934 +}
  2935 +```
  2936 +
  2937 +### 维护功能
  2938 +#### 方法
  2939 +##### remoteKpPowerOff
  2940 +- **主题**:/client/\${baseSN}/send
  2941 +- **功能描述**:遥控键盘关机
  2942 +- **参数说明**
  2943 +
  2944 +|参数名|类型|限制|是否必填|说明|
  2945 +|---|---|---|---|---|
  2946 +|fun|string|-|是|指令名称|
  2947 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2948 +|data|object|-|是|传送参数的对象数组|
  2949 +|+keySns|array||否|需要执行指令的键盘SN数组,<br>空数组表示所有键盘|
  2950 +
  2951 +- **示例代码**
  2952 +```Json
  2953 +{
  2954 + "fun":"remoteKpPowerOff",
  2955 + "dataTag":"1",
  2956 + "data":{
  2957 + "keySns":["1479824644"]
  2958 + }
  2959 +}
  2960 +```
  2961 +##### remoteKpSleep
  2962 +- **主题**:/client/\${baseSN}/send
  2963 +- **功能描述**:遥控键盘休眠
  2964 +- **参数说明**
  2965 +
  2966 +|参数名|类型|限制|是否必填|说明|
  2967 +|---|---|---|---|---|
  2968 +|fun|string|-|是|指令名称|
  2969 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2970 +|data|object|-|是|传送参数的对象数组|
  2971 +|+keySns|array||否|需要执行指令的键盘SN数组,空数组表示所有键盘|
  2972 +
  2973 +- **示例代码**
  2974 +```Json
  2975 +{
  2976 + "fun":"remoteKpSleep",
  2977 + "dataTag":"1",
  2978 + "data":{
  2979 + "keySns":["1479824644"]
  2980 + }
  2981 +}
  2982 +```
  2983 +##### startKpFWUpdate
  2984 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  2985 +- **功能描述**:键盘升级
  2986 +- **参数说明**
  2987 +
  2988 +|参数名|类型|限制|是否必填|说明|
  2989 +|---|---|---|---|---|
  2990 +|fun|string|-|是|指令名称|
  2991 +|dataTag|string|-|否|数据包标识,可为空字符串|
  2992 +|data|object|-|是|传送参数的对象|
  2993 +|+partition|int||是|存储区域<br> 1-备份区<br>2-更新区|
  2994 +|+url|string||是|待升级的固件地址,可访问的网络url<br>直连基站可为本地的文件路径|
  2995 +|+version|string||是|待升级的固件版本号|
  2996 +|+crc|uint||是|固件CRC校验码,10进制数字|
  2997 +|+time|string|数字|是|时间,yyyyMMddHHmmss|
  2998 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  2999 +
  3000 +- **示例代码**
  3001 +```Json
  3002 +{
  3003 + "fun":"startKpFWUpdate",
  3004 + "dataTag":"1",
  3005 + "data":{
  3006 + "partition":1,
  3007 + "url":"http://192.168.10.10/V1.0.3.bin",
  3008 + "version":"1.0.3",
  3009 + "crc":1429319861
  3010 + }
  3011 +}
  3012 +```
  3013 +##### stopKpFWUpdate
  3014 +- **主题**:<sapn class="yellowFill">/manage/\${baseSN}/send</span>
  3015 +- **功能描述**:停止键盘升级
  3016 +- **参数说明**
  3017 +
  3018 +|参数名|类型|限制|是否必填|说明|
  3019 +|---|---|---|---|---|
  3020 +|fun|string|-|是|指令名称|
  3021 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3022 +|data|object|-|是|传送参数的对象|
  3023 +|+time|string|数字|是|时间,yyyyMMddHHmmss|
  3024 +|+verCode|string||是|内部主题校验码,时间+固定key加密|
  3025 +
  3026 +- **示例代码**
  3027 +```Json
  3028 +{
  3029 + "fun":"stopKpFWUpdate",
  3030 + "dataTag":"1",
  3031 + "data":{
  3032 + "time":"",
  3033 + "verCode":""
  3034 + }
  3035 +}
  3036 +```
  3037 +
  3038 +#### 事件
  3039 +##### [sEvtStateCode](#sevtstatecode)
  3040 +返回升级指令的接收状态
  3041 +注意:升级指令的接收状态需从**主题: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>** 返回
  3042 +
  3043 +##### fEvtKpFWUpdateState
  3044 +- **主题**: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  3045 +- **功能描述**:返回键盘升级状态
  3046 +- **参数说明**
  3047 +
  3048 +|参数名|类型|限制|非空|说明|
  3049 +|---|---|---|---|---|
  3050 +|fun|string|-|是|指令名称|
  3051 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3052 +|data|object|-|是|传送参数的对象|
  3053 +|+state|int||是|升级状态<br>0 - 进入升级<br>1 - 升级成功 <br> 2 - 升级失败 <br> 3 - 已停止(接收到停止指令)
  3054 +|+msg|string||否|返回的失败原因
  3055 +
  3056 +- **示例代码**
  3057 +```Json
  3058 +{
  3059 + "fun":"fEvtKpFWUpdateState",
  3060 + "dataTag":"1",
  3061 + "data":{
  3062 + "state":0,
  3063 + "msg":""
  3064 + }
  3065 +}
  3066 +```
  3067 +##### fEvtKpUpdateProgress
  3068 +- **主题**: <sapn class="yellowFill">/manage/\${baseSN}/receive</span>
  3069 +- **功能描述**:返回键盘升级进度
  3070 +- **参数说明**
  3071 +
  3072 +|参数名|类型|限制|非空|说明|
  3073 +|---|---|---|---|---|
  3074 +|fun|string|-|是|指令名称|
  3075 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3076 +|data|object|-|是|传送参数的对象|
  3077 +|+progress|int||是|升级进度,百分比|
  3078 +
  3079 +- **示例代码**
  3080 +```Json
  3081 +{
  3082 + "fun":"fEvtKpUpdateProgress",
  3083 + "dataTag":"1",
  3084 + "data":{
  3085 + "progress":20
  3086 + }
  3087 +}
  3088 +```
  3089 +## 绑定
  3090 +### 无线绑定
  3091 +#### 方法
  3092 +##### rtSetKpBindingInfo
  3093 +- **主题**:/client/\${baseSN}/send
  3094 +- **功能描述**:实时设置绑定信息到键盘
  3095 +- **参数说明**
  3096 +
  3097 +|参数名|类型|限制|是否必填|说明|
  3098 +|---|---|---|---|---|
  3099 +|fun|string|-|是|指令名称|
  3100 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3101 +|data|array|-|是|传送参数的对象数组,不可为空|
  3102 +|++keySn|string||是|需要设置绑定信息的键盘SN|
  3103 +|++info|string||是|设置的绑定信息,一般为学生姓名<br>最长48个字符,显示在键盘左上角|
  3104 +
  3105 +- **示例代码**
  3106 +```Json
  3107 +{
  3108 + "fun": "rtSetKpBindingInfo",
  3109 + "dataTag":"1",
  3110 + "data": [
  3111 + {
  3112 + "keySn": "1479824643",
  3113 + "info": "张三"
  3114 + },
  3115 + {
  3116 + "keySn": "1479824644",
  3117 + "info": "李四"
  3118 + }
  3119 + ]
  3120 +}
  3121 +```
  3122 +
  3123 +##### clearKpBindingInfo
  3124 +- **主题**:/client/\${baseSN}/send
  3125 +- **功能描述**:清除键盘绑定信息
  3126 +- **参数说明**
  3127 +
  3128 +|参数名|类型|限制|是否必填|说明|
  3129 +|---|---|---|---|---|
  3130 +|fun|string|-|是|指令名称|
  3131 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3132 +|data|object|-|是|传送参数的对象数组|
  3133 +|+keySns|array||否|需要清除绑定信息键盘SN数组,<br>空数组表示清空所有键盘|
  3134 +
  3135 +- **示例代码**
  3136 +```Json
  3137 +{
  3138 + "fun": "clearKpBindingInfo",
  3139 + "dataTag":"1",
  3140 + "data": {
  3141 + "keySns":["1479824643","1479824644","1479824645"]
  3142 + }
  3143 +}
  3144 +```
  3145 +#### 事件
  3146 +##### [sEvtStateCode](#sevtstatecode)
  3147 +发送指令后返回接收状态
  3148 +
  3149 +##### fEvtKpBindingInfo
  3150 +- **主题**:/basestation/\${baseSN}/receive
  3151 +- **功能描述**:返回键盘实时设置绑定信息的状态是否成功
  3152 +- **参数说明**
  3153 +
  3154 +|参数名|类型|限制|非空|说明|
  3155 +|---|---|---|---|---|
  3156 +|fun|string|-|是|指令名称|
  3157 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3158 +|data|array|-|否|传送参数的对象数组|
  3159 +|++keySn|string||是|需要设置绑定信息的键盘SN|
  3160 +|++state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  3161 +
  3162 +- **示例代码**
  3163 +```Json
  3164 +{
  3165 + "fun": "fEvtKpBindingInfo",
  3166 + "dataTag":"1",
  3167 + "data": [
  3168 + {
  3169 + "keySn": "1479824643",
  3170 + "state": "0"
  3171 + },
  3172 + {
  3173 + "keySn": "1479824644",
  3174 + "state": "1"
  3175 + }
  3176 + ]
  3177 +}
  3178 +```
  3179 +##### fEvtClearKpBindingInfo
  3180 +- **主题**:/basestation/\${baseSN}/receive
  3181 +- **功能描述**:返回清空绑定信息的指令状态是否成功
  3182 +- **参数说明**
  3183 +
  3184 +|参数名|类型|限制|非空|说明|
  3185 +|---|---|---|---|---|
  3186 +|fun|string|-|是|指令名称|
  3187 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3188 +|data|object|-|否|传送参数的对象|
  3189 +|+state|string||是|设置的绑定信息是否成功<br>0 - 成功<br>1 - 失败|
  3190 +
  3191 +- **示例代码**
  3192 +```Json
  3193 +{
  3194 + "fun": "fEvtClearKpBindingInfo",
  3195 + "dataTag":"1",
  3196 + "data": {
  3197 + "state": "0"
  3198 + }
  3199 +}
  3200 +```
  3201 +## 签到
  3202 +### 同步签到
  3203 +#### 方法
  3204 +##### startKpSignIn
  3205 +- **主题**:/client/\${baseSN}/send
  3206 +- **功能描述**:启动同步签到
  3207 +- **参数说明**
  3208 +
  3209 +|参数名|类型|限制|是否必填|说明|
  3210 +|---|---|---|---|---|
  3211 +|fun|string|-|是|指令名称|
  3212 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3213 +|data|object|-|是|传递参数的对象|
  3214 +|+mode|int|-|是|签到模式<br>1-按键签到<br>2-PIN码签到<br>3-指纹签到|
  3215 +
  3216 +- **示例代码**
  3217 +```Json
  3218 +{
  3219 + "fun": "startKpSignIn",
  3220 + "dataTag":"1",
  3221 + "data":{
  3222 + "mode":2
  3223 + }
  3224 +}
  3225 +```
  3226 +##### stopKpSignIn
  3227 +- **主题**:/client/\${baseSN}/send
  3228 +- **功能描述**:停止同步签到
  3229 +- **参数说明**
  3230 +
  3231 +|参数名|类型|限制|是否必填|说明|
  3232 +|---|---|---|---|---|
  3233 +|fun|string|-|是|指令名称|
  3234 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3235 +
  3236 +- **示例代码**
  3237 +```Json
  3238 +{
  3239 + "fun": "stopKpSignIn",
  3240 + "dataTag":"1"
  3241 +}
  3242 +```
  3243 +#### 事件
  3244 +##### [sEvtStateCode](#sevtstatecode)
  3245 +发送指令后返回接收状态
  3246 +
  3247 +##### [fEvtKpSignIn](#fevtkpsignin)
  3248 +返回键盘提交的签到数据
  3249 +
  3250 +### 随时签到
  3251 +#### 方法
  3252 +##### rtStartKpSignIn
  3253 +- **主题**:/client/\${baseSN}/send
  3254 +- **功能描述**:启动随时签到绑定
  3255 +- **参数说明**
  3256 +
  3257 +|参数名|类型|限制|是否必填|说明|
  3258 +|---|---|---|---|---|
  3259 +|fun|string|-|是|指令名称|
  3260 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3261 +|data|object|-|是|传递参数的对象|
  3262 +|+mode|int|-|是|签到模式<br>1-按键签到,按OK键签到自动授权(<font color="red">暂不支持</font>)<br>2-PIN码签到,输入pin码后由应用程序决定是否授权<br>3-指纹签到(<font color="red">暂不支持</font>)|
  3263 +
  3264 +- **示例代码**
  3265 +```Json
  3266 +{
  3267 + "fun": "rtStartKpSignIn",
  3268 + "dataTag":"1",
  3269 + "data":{
  3270 + "mode":2
  3271 + }
  3272 +}
  3273 +```
  3274 +##### rtStopKpSignIn
  3275 +- **主题**:/client/\${baseSN}/send
  3276 +- **功能描述**:停止签到绑定
  3277 +- **参数说明**
  3278 +
  3279 +|参数名|类型|限制|是否必填|说明|
  3280 +|---|---|---|---|---|
  3281 +|fun|string|-|是|指令名称|
  3282 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3283 +
  3284 +- **示例代码**
  3285 +```Json
  3286 +{
  3287 + "fun": "rtStopKpSignIn",
  3288 + "dataTag":"1"
  3289 +}
  3290 +```
  3291 +##### rtSetKpLoginAllowed
  3292 +- **主题**:/client/\${baseSN}/send
  3293 +- **功能描述**:实时PIN绑定授权,可取消授权
  3294 +- **参数说明**
  3295 +
  3296 +|参数名|类型|限制|是否必填|说明|
  3297 +|---|---|---|---|---|
  3298 +|fun|string|-|是|指令名称|
  3299 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3300 +|data|object|-|是|传递参数的对象|
  3301 +|+keySn|string|-|是|键盘SN|
  3302 +|+state|int|-|是|1-授权成功<br>2-授权失败<br>3-解除已授权|
  3303 +
  3304 +- **示例代码**
  3305 +```Json
  3306 +{
  3307 + "fun": "rtSetKpLoginAllowed",
  3308 + "dataTag":"1",
  3309 + "data":{
  3310 + "keySn":"1479824643",
  3311 + "state":1
  3312 + }
  3313 +}
  3314 +```
  3315 +#### 事件
  3316 +##### [sEvtStateCode](#sevtstatecode)
  3317 +发送指令后返回接收状态
  3318 +
  3319 +##### fEvtKpSignIn
  3320 +- **主题**:/basestation/\${baseSN}/receive
  3321 +- **功能描述**:返回键盘提交签到信息
  3322 +- **参数说明**
  3323 +
  3324 +|参数名|类型|限制|非空|说明|
  3325 +|---|---|---|---|---|
  3326 +|fun|string|-|是|指令名称|
  3327 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3328 +|data|array|-|是|传送参数的对象数组|
  3329 +|++keySn|string||是|键盘SN|
  3330 +|++keyValue|string||是|键盘提交的按键值|
  3331 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  3332 +
  3333 +- **示例代码**
  3334 +```Json
  3335 +{
  3336 + "fun": "fEvtKpSignIn",
  3337 + "dataTag":"1",
  3338 + "data": [{
  3339 + "keySn": "1234567890",
  3340 + "keyValue":"1004",
  3341 + "keyTime":30.2
  3342 + },
  3343 + {
  3344 + "keySn": "1234567891",
  3345 + "keyValue":"1003",
  3346 + "keyTime":32.5
  3347 + }
  3348 + ]
  3349 +}
  3350 +```
  3351 +##### fEvtKpLoginAllowed
  3352 +- **主题**:/basestation/\${baseSN}/receive
  3353 +- **功能描述**:返回键盘授权状态
  3354 +- **参数说明**
  3355 +
  3356 +|参数名|类型|限制|非空|说明|
  3357 +|---|---|---|---|---|
  3358 +|fun|string|-|是|指令名称|
  3359 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3360 +|data|object|-|是|传送参数的对象|
  3361 +|+keySn|string||是|键盘SN|
  3362 +|+state|string||是|0-执行成功<br> 1-执行失败|
  3363 +
  3364 +- **示例代码**
  3365 +```Json
  3366 +{
  3367 + "fun": "fEvtKpLoginAllowed",
  3368 + "dataTag":"1",
  3369 + "data": {
  3370 + "keySn":"1479824643",
  3371 + "state":"0"
  3372 + }
  3373 +}
  3374 +```
  3375 +## 按键反馈
  3376 +### 判断题
  3377 +#### 方法
  3378 +##### startQATrueFalse
  3379 +- **主题**:/client/\${baseSN}/send
  3380 +- **功能描述**:启动判断题答题
  3381 +- **参数说明**
  3382 +
  3383 +|参数名|类型|限制|是否必填|说明|
  3384 +|---|---|---|---|---|
  3385 +|fun|string|-|是|指令名称|
  3386 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3387 +|data|object|-|是|传送参数的对象|
  3388 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  3389 +|+count|int||是|题目数量,1-16,>1多题快答|
  3390 +|+mode|int||是|1 - True/False 对/错 <br>2 - Yes/No 是/否<br> 3 - √/×|
  3391 +|+allowModify|int||是|0 - 不允许修改<br>1 - 允许修改|
  3392 +|+tip|string||否|提示的标题,长度不超过16字符|
  3393 +|+simParams|object||否|内部模拟测试参数设置对象|
  3394 +|++answer|string||是|预设提交的按键值<br>1-对 <br>2-错|
  3395 +
  3396 +- **示例代码**
  3397 +```Json
  3398 +{
  3399 + "fun": "startQATrueFalse",
  3400 + "dataTag":"1",
  3401 + "data":{
  3402 + "keySns":[],
  3403 + "count":1,
  3404 + "mode":1,
  3405 + "allowModify":1,
  3406 + "tip":"请判断对错",
  3407 + "simParams":{
  3408 + "answer":"1"
  3409 + }
  3410 + }
  3411 +}
  3412 +```
  3413 +##### stopQATrueFalse
  3414 +- **主题**:/client/\${baseSN}/send
  3415 +- **功能描述**:停止判断题答题
  3416 +- **参数说明**
  3417 +
  3418 +|参数名|类型|限制|是否必填|说明|
  3419 +|---|---|---|---|---|
  3420 +|fun|string|-|是|指令名称|
  3421 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3422 +
  3423 +- **示例代码**
  3424 +```Json
  3425 +{
  3426 + "fun": "stopQATrueFalse",
  3427 + "dataTag":"1"
  3428 +}
  3429 +```
  3430 +#### 事件
  3431 +##### [sEvtStateCode](#sevtstatecode)
  3432 +发送指令后返回接收状态
  3433 +
  3434 +##### fEvtQATrueFalse
  3435 +- **主题**:/basestation/\${baseSN}/receive
  3436 +- **功能描述**:返回键盘提交答题信息
  3437 +- **参数说明**
  3438 +
  3439 +|参数名|类型|限制|非空|说明|
  3440 +|---|---|---|---|---|
  3441 +|fun|string|-|是|指令名称|
  3442 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3443 +|data|array|-|是|传送参数的对象数组|
  3444 +|++keySn|string||是|键盘SN|
  3445 +|++keyValue|string||是|键盘提交的按键值<br>1-对<br>2-错|
  3446 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  3447 +
  3448 +- **示例代码**
  3449 +```Json
  3450 +{
  3451 + "fun": "fEvtQATrueFalse",
  3452 + "dataTag":"1",
  3453 + "data": [{
  3454 + "keySn": "1234567890",
  3455 + "keyValue":"1",
  3456 + "keyTime":30.2
  3457 + }
  3458 + ]
  3459 +}
  3460 +```
  3461 +### 选择题
  3462 +#### 方法
  3463 +##### startQAChoice
  3464 +- **主题**:/client/\${baseSN}/send
  3465 +- **功能描述**:启动选择题答题
  3466 +- **参数说明**
  3467 +
  3468 +|参数名|类型|限制|是否必填|说明|
  3469 +|---|---|---|---|---|
  3470 +|fun|string|-|是|指令名称|
  3471 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3472 +|data|object|-|是|传送参数的对象|
  3473 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  3474 +|+count|int||是|题目数量,1-16,>1多题快答<br>optionalN >1时无效|
  3475 +|+mode|int||是|显示模式<br>1:显示字母(默认值) </br>2:显示数字 |
  3476 +|+lessMode|int||是|迫选模式<br>0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 |
  3477 +|+options|int||是|选项数量,1≤M≤10(默认值4)|
  3478 +|+optionalN|int||是|可选项个数,1≤N≤M(默认值1)|
  3479 +|+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
  3480 +|+tip|string||否|提示的标题,长度不超过16字符|
  3481 +|+simParams|object||否|内部模拟测试参数设置对象|
  3482 +|++answer|string||是|预设提交的按键值|
  3483 +
  3484 +- **示例代码**
  3485 +```Json
  3486 +{
  3487 + "fun": "startQAChoice",
  3488 + "dataTag":"1",
  3489 + "data":{
  3490 + "keySns":[],
  3491 + "mode": 1,
  3492 + "count":1,
  3493 + "lessMode": 0,
  3494 + "options": 4,
  3495 + "optionalN": 1,
  3496 + "allowModify":1,
  3497 + "tip":"请选择",
  3498 + "simParams":{
  3499 + "answer":"A"
  3500 + }
  3501 + }
  3502 +}
  3503 +```
  3504 +##### stopQAChoice
  3505 +- **主题**:/client/\${baseSN}/send
  3506 +- **功能描述**:停止选择题答题
  3507 +- **参数说明**
  3508 +
  3509 +|参数名|类型|限制|是否必填|说明|
  3510 +|---|---|---|---|---|
  3511 +|fun|string|-|是|指令名称|
  3512 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3513 +
  3514 +- **示例代码**
  3515 +```Json
  3516 +{
  3517 + "fun": "stopQAChoice",
  3518 + "dataTag":"1"
  3519 +}
  3520 +```
  3521 +#### 事件
  3522 +##### [sEvtStateCode](#sevtstatecode)
  3523 +发送指令后返回接收状态
  3524 +
  3525 +##### fEvtQAChoice
  3526 +- **主题**:/basestation/\${baseSN}/receive
  3527 +- **功能描述**:返回键盘提交答题信息
  3528 +- **参数说明**
  3529 +
  3530 +|参数名|类型|限制|非空|说明|
  3531 +|---|---|---|---|---|
  3532 +|fun|string|-|是|指令名称|
  3533 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3534 +|data|array|-|是|传送参数的对象数组|
  3535 +|++keySn|string||是|键盘SN|
  3536 +|++keyValue|string||是|键盘提交的按键值|
  3537 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  3538 +
  3539 +- **示例代码**
  3540 +```Json
  3541 +{
  3542 + "fun": "fEvtQAChoice",
  3543 + "dataTag":"1",
  3544 + "data": [{
  3545 + "keySn": "1234567890",
  3546 + "keyValue":"A",
  3547 + "keyTime":3.2
  3548 + }]
  3549 +}
  3550 +```
  3551 +### 数字题
  3552 +#### 方法
  3553 +##### startQANum
  3554 +- **主题**:/client/\${baseSN}/send
  3555 +- **功能描述**:启动数字题答题
  3556 +- **参数说明**
  3557 +
  3558 +|参数名|类型|限制|是否必填|说明|
  3559 +|---|---|---|---|---|
  3560 +|fun|string|-|是|指令名称|
  3561 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3562 +|data|object|-|是|传送参数的对象|
  3563 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  3564 +|+mode|int||是|模式<br>0:无规则 (S6最多16位,T2最多14位)<br>1:带小数位上下限(T2不支持)|
  3565 +|+digits|int||是|小数位数,范围0-2,mode=1时有效
  3566 +|+numMin|int||是|可输入下限,mode=1有效<br> digits=0时 范围:0~65535 <br> digits=1时 范围:0~6553 <br> digits=2时 范围:0~655|
  3567 +|+numMax|int||是|可输入上限,mode=1有效<br>digits=0 范围:0~65535 <br> digits=1 范围:0~6553 <br> digits=2 范围:0~655|
  3568 +|+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
  3569 +|+tip|string||否|提示的标题,长度不超过16字符|
  3570 +|+simParams|object||否|内部模拟测试参数设置对象|
  3571 +|++answer|string||是|预设提交的按键值|
  3572 +
  3573 +- **示例代码**
  3574 +```Json
  3575 +{
  3576 + "fun": "startQANum",
  3577 + "dataTag":"1",
  3578 + "data":{
  3579 + "keySns":[],
  3580 + "mode": 1,
  3581 + "digits": 1,
  3582 + "numMin": 0,
  3583 + "numMax": 100,
  3584 + "allowModify":1,
  3585 + "tip":"请输入数字",
  3586 + "simParams":{
  3587 + "answer":"10"
  3588 + }
  3589 + }
  3590 +}
  3591 +```
  3592 +##### stopQANum
  3593 +- **主题**:/client/\${baseSN}/send
  3594 +- **功能描述**:停止数字题答题
  3595 +- **参数说明**
  3596 +
  3597 +|参数名|类型|限制|是否必填|说明|
  3598 +|---|---|---|---|---|
  3599 +|fun|string|-|是|指令名称|
  3600 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3601 +
  3602 +- **示例代码**
  3603 +```Json
  3604 +{
  3605 + "fun": "stopQANum",
  3606 + "dataTag":"1"
  3607 +}
  3608 +```
  3609 +#### 事件
  3610 +##### [sEvtStateCode](#sevtstatecode)
  3611 +发送指令后返回接收状态
  3612 +
  3613 +##### fEvtQANum
  3614 +- **主题**:/basestation/\${baseSN}/receive
  3615 +- **功能描述**:返回键盘提交答题信息
  3616 +- **参数说明**
  3617 +
  3618 +|参数名|类型|限制|非空|说明|
  3619 +|---|---|---|---|---|
  3620 +|fun|string|-|是|指令名称|
  3621 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3622 +|data|array|-|是|传送参数的对象数组|
  3623 +|++keySn|string||是|键盘SN|
  3624 +|++keyValue|string||是|键盘提交的按键值|
  3625 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  3626 +
  3627 +- **示例代码**
  3628 +```Json
  3629 +{
  3630 + "fun": "fEvtQANum",
  3631 + "dataTag":"1",
  3632 + "data": [{
  3633 + "keySn": "1234567890",
  3634 + "keyValue":"10",
  3635 + "keyTime":3.2
  3636 + }]
  3637 +}
  3638 +```
  3639 +### 抢答题
  3640 +#### 方法
  3641 +##### startQAQuicker
  3642 +- **主题**:/client/\${baseSN}/send
  3643 +- **功能描述**:启动抢答题答题
  3644 +- **参数说明**
  3645 +
  3646 +|参数名|类型|限制|是否必填|说明|
  3647 +|---|---|---|---|---|
  3648 +|fun|string|-|是|指令名称|
  3649 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3650 +|data|object|-|是|传送参数的对象|
  3651 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  3652 +|+mode|int||是|模式<br>0:普通抢答|
  3653 +|+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
  3654 +|+tip|string||否|提示的标题,长度不超过16字符|
  3655 +|+simParams|object||否|内部模拟测试参数设置对象|
  3656 +|++answer|string||是|预设提交的按键值|
  3657 +
  3658 +- **示例代码**
  3659 +```Json
  3660 +{
  3661 + "fun": "startQAQuicker",
  3662 + "dataTag":"1",
  3663 + "data":{
  3664 + "keySns":[],
  3665 + "mode": 0,
  3666 + "allowModify":1,
  3667 + "tip":"请按键抢答",
  3668 + "simParams":{
  3669 + "answer":"1"
  3670 + }
  3671 + }
  3672 +}
  3673 +```
  3674 +##### stopQAQuicker
  3675 +- **主题**:/client/\${baseSN}/send
  3676 +- **功能描述**:停止抢答答题
  3677 +- **参数说明**
  3678 +
  3679 +|参数名|类型|限制|是否必填|说明|
  3680 +|---|---|---|---|---|
  3681 +|fun|string|-|是|指令名称|
  3682 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3683 +
  3684 +- **示例代码**
  3685 +```Json
  3686 +{
  3687 + "fun": "stopQAQuicker",
  3688 + "dataTag":"1"
  3689 +}
  3690 +```
  3691 +#### 事件
  3692 +##### [sEvtStateCode](#sevtstatecode)
  3693 +发送指令后返回接收状态
  3694 +
  3695 +##### fEvtQAQuicker
  3696 +- **主题**:/basestation/\${baseSN}/receive
  3697 +- **功能描述**:返回键盘提交答题信息
  3698 +- **参数说明**
  3699 +
  3700 +|参数名|类型|限制|非空|说明|
  3701 +|---|---|---|---|---|
  3702 +|fun|string|-|是|指令名称|
  3703 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3704 +|data|array|-|是|传送参数的对象数组|
  3705 +|++keySn|string||是|键盘SN|
  3706 +|++keyValue|string||是|键盘提交的按键值|
  3707 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  3708 +
  3709 +- **示例代码**
  3710 +```Json
  3711 +{
  3712 + "fun": "fEvtQAQuicker",
  3713 + "dataTag":"1",
  3714 + "data": [{
  3715 + "keySn": "1234567890",
  3716 + "keyValue":"1",
  3717 + "keyTime":3.2
  3718 + }]
  3719 +}
  3720 +```
  3721 +### 英文题
  3722 +#### 方法
  3723 +##### startQAEText
  3724 +- **主题**:/client/\${baseSN}/send
  3725 +- **功能描述**:启动英文题答题
  3726 +- **参数说明**
  3727 +
  3728 +|参数名|类型|限制|是否必填|说明|
  3729 +|---|---|---|---|---|
  3730 +|fun|string|-|是|指令名称|
  3731 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3732 +|data|object|-|是|传送参数的对象|
  3733 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  3734 +|+mode|int||是|模式<br>0:自由输入|
  3735 +|+allowModify|int||是|修改模式<br>0 - 不允许修改<br>1 - 允许修改|
  3736 +|+tip|string||否|提示的标题,长度不超过16字符|
  3737 +|+simParams|object||否|内部模拟测试参数设置对象|
  3738 +|++answer|string||是|预设提交的按键值|
  3739 +
  3740 +- **示例代码**
  3741 +```Json
  3742 +{
  3743 + "fun": "startQAEText",
  3744 + "dataTag":"1",
  3745 + "data":{
  3746 + "keySns":[],
  3747 + "mode": 0,
  3748 + "allowModify":1,
  3749 + "tip":"请输入英文文本",
  3750 + "simParams":{
  3751 + "answer":"AAAAAAA"
  3752 + }
  3753 + }
  3754 +}
  3755 +```
  3756 +##### stopQAEText
  3757 +- **主题**:/client/\${baseSN}/send
  3758 +- **功能描述**:停止英文题答题
  3759 +- **参数说明**
  3760 +
  3761 +|参数名|类型|限制|是否必填|说明|
  3762 +|---|---|---|---|---|
  3763 +|fun|string|-|是|指令名称|
  3764 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3765 +
  3766 +- **示例代码**
  3767 +```Json
  3768 +{
  3769 + "fun": "stopQAEText",
  3770 + "dataTag":"1"
  3771 +}
  3772 +```
  3773 +#### 事件
  3774 +##### [sEvtStateCode](#sevtstatecode)
  3775 +发送指令后返回接收状态
  3776 +
  3777 +##### fEvtQAEText
  3778 +- **主题**:/basestation/\${baseSN}/receive
  3779 +- **功能描述**:返回键盘提交答题信息
  3780 +- **参数说明**
  3781 +
  3782 +|参数名|类型|限制|非空|说明|
  3783 +|---|---|---|---|---|
  3784 +|fun|string|-|是|指令名称|
  3785 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3786 +|data|array|-|是|传送参数的对象数组|
  3787 +|++keySn|string||是|键盘SN|
  3788 +|++keyValue|string||是|键盘提交的按键值|
  3789 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  3790 +
  3791 +- **示例代码**
  3792 +```Json
  3793 +{
  3794 + "fun": "fEvtQAEText",
  3795 + "dataTag":"1",
  3796 + "data": [{
  3797 + "keySn": "1234567890",
  3798 + "keyValue":"hello",
  3799 + "keyTime":3.2
  3800 + }]
  3801 +}
  3802 +```
  3803 +
  3804 +### 短信息
  3805 +#### 方法
  3806 +##### sendKpMsg
  3807 +- **主题**:/client/\${baseSN}/send
  3808 +- **功能描述**:指定键盘发送短信息
  3809 +- **参数说明**
  3810 +
  3811 +|参数名|类型|限制|是否必填|说明|
  3812 +|---|---|---|---|---|
  3813 +|fun|string|-|是|指令名称|
  3814 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3815 +|data|array|-|是|传送参数的对象数组,不可为空|
  3816 +|++keySn|string||是|需要设置绑定信息的键盘SN<br>空字符串且只有一条信息时代表群发所有在线键盘|
  3817 +|++month|int||是|月份,范围1-12|
  3818 +|++day|int||是|日期,范围1-31|
  3819 +|++info|string||是|信息内容|
  3820 +
  3821 +- **示例代码**
  3822 +```Json
  3823 +//指定键盘发送信息
  3824 +{
  3825 + "fun": "sendKpMsg",
  3826 + "dataTag":"1",
  3827 + "data": [
  3828 + {
  3829 + "keySn": "1479824643",
  3830 + "month":6,
  3831 + "day":10,
  3832 + "info": "短信息1"
  3833 + },
  3834 + {
  3835 + "keySn": "1479824644",
  3836 + "month":6,
  3837 + "day":10,
  3838 + "info": "短信息2"
  3839 + }
  3840 + ]
  3841 +}
  3842 +
  3843 +//广播信息
  3844 +{
  3845 + "fun": "sendKpMsg",
  3846 + "dataTag":"1",
  3847 + "data": [
  3848 + {
  3849 + "keySn": "",
  3850 + "month":6,
  3851 + "day":10,
  3852 + "info": "广播信息"
  3853 + }
  3854 + ]
  3855 +}
  3856 +```
  3857 +##### rtSendKpNotice
  3858 +(待定)
  3859 +
  3860 +#### 事件
  3861 +##### [sEvtStateCode](#sevtstatecode)
  3862 +发送指令后返回接收状态
  3863 +
  3864 +##### fEvtKpMsg
  3865 +- **主题**:/basestation/\${baseSN}/receive
  3866 +- **功能描述**:返回短信息是否成功发送至键盘
  3867 +- **参数说明**
  3868 +
  3869 +|参数名|类型|限制|非空|说明|
  3870 +|---|---|---|---|---|
  3871 +|fun|string|-|是|指令名称|
  3872 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3873 +|data|array|-|否|传送参数的对象数组|
  3874 +|++keySn|string||是|键盘SN|
  3875 +|++state|string||是|短信息是否成功发送<br>0 - 成功<br>1 - 失败|
  3876 +
  3877 +- **示例代码**
  3878 +```Json
  3879 +{
  3880 + "fun": "fEvtKpMsg",
  3881 + "dataTag":"1",
  3882 + "data": [
  3883 + {
  3884 + "keySn": "1479824643",
  3885 + "state": "0"
  3886 + },
  3887 + {
  3888 + "keySn": "1479824644",
  3889 + "state": "1"
  3890 + }
  3891 + ]
  3892 +}
  3893 +```
  3894 +
  3895 +### 待机实时反馈
  3896 +#### 方法
  3897 +##### startKpStbResponse
  3898 +- **主题**:/client/\${baseSN}/send
  3899 +- **功能描述**:启动待机实时反馈
  3900 +- **参数说明**
  3901 +
  3902 +|参数名|类型|限制|是否必填|说明|
  3903 +|---|---|---|---|---|
  3904 +|fun|string|-|是|指令名称|
  3905 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3906 +|data|object|-|是|传送参数的对象|
  3907 +|+mode|int||是|启动待机反馈类型<br>0-举手<br>1-指定按键反馈|
  3908 +|+keys|int||是|有效按键数量,mode=1时有效, 范围1-10|
  3909 +
  3910 +- **示例代码**
  3911 +```Json
  3912 +//启用举手反馈
  3913 +{
  3914 + "fun": "startKpStbResponse",
  3915 + "dataTag":"1",
  3916 + "data":{
  3917 + "mode":0
  3918 + }
  3919 +}
  3920 +//待机按键反馈
  3921 +{
  3922 + "fun": "startKpStbResponse",
  3923 + "dataTag":"1",
  3924 + "data":{
  3925 + "mode":1,
  3926 + "keys":4
  3927 + }
  3928 +}
  3929 +```
  3930 +
  3931 +##### stopKpStbResponse
  3932 +- **主题**:/client/\${baseSN}/send
  3933 +- **功能描述**:停止待机实时反馈
  3934 +- **参数说明**
  3935 +
  3936 +|参数名|类型|限制|是否必填|说明|
  3937 +|---|---|---|---|---|
  3938 +|fun|string|-|是|指令名称|
  3939 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3940 +
  3941 +- **示例代码**
  3942 +```Json
  3943 +{
  3944 + "fun": "stopKpStbResponse",
  3945 + "dataTag":"1"
  3946 +}
  3947 +```
  3948 +
  3949 +#### 事件
  3950 +##### [sEvtStateCode](#sevtstatecode)
  3951 +发送指令后返回接收状态
  3952 +
  3953 +##### [sEvtKpRtFeedback](#sevtkprtfeedback)
  3954 +返回待机时键盘返回的按键值
  3955 +
  3956 +##### [sEvtKpHandup](#sevtkphandup)
  3957 +启动待机按键反馈类型为举手提问时返回此事件
  3958 +
  3959 +## 语音反馈
  3960 +### 方法
  3961 +#### 单题语音评测
  3962 +##### startQAVoice
  3963 +- **主题**:/client/\${baseSN}/send
  3964 +- **功能描述**:启动单题语音评测
  3965 +- **参数说明**
  3966 +
  3967 +|参数名|类型|限制|是否必填|说明|
  3968 +|---|---|---|---|---|
  3969 +|fun|string|-|是|指令名称|
  3970 +|dataTag|string|-|否|数据包标识,可为空字符串|
  3971 +|data|object|-|是|传送参数的对象|
  3972 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  3973 +|+mode|int||是|录音模式<br>0-按键录音(默认值)<br>1-自动录音<br>2-语音红包<br>3-数据信道传输测试|
  3974 +|+submitTimes|int||是|允许提交次数,0-255, 0 - 不限次数|
  3975 +|+timeLimit|int||否|限制的录音时长,0-255, 0-不限时长|
  3976 +|+format|int||否|录音格式<br>0-录音文件(SDK直连基站支持)<br>1-实时流|
  3977 +|+audioFormat|int||否|音频格式<br>0-pcm<br>1-mp3(默认值1)<br>2-wav<br>3-speex|
  3978 +|+tip|string||否|提示的标题,长度不超过16字符|
  3979 +
  3980 +- **示例代码**
  3981 +```Json
  3982 +{
  3983 + "fun": "startQAVoice",
  3984 + "dataTag":"1",
  3985 + "data": {
  3986 + "keySns": [],
  3987 + "mode":0,
  3988 + "submitTimes":0,
  3989 + "timeLimit":30,
  3990 + "format":0,
  3991 + "audioFormat":1,
  3992 + "tip":"请按键录音"
  3993 + }
  3994 +}
  3995 +```
  3996 +##### stopQAVoice
  3997 +- **主题**:/client/\${baseSN}/send
  3998 +- **功能描述**:停止单题语音评测
  3999 +- **参数说明**
  4000 +
  4001 +|参数名|类型|限制|是否必填|说明|
  4002 +|---|---|---|---|---|
  4003 +|fun|string|-|是|指令名称|
  4004 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4005 +
  4006 +- **示例代码**
  4007 +```Json
  4008 +{
  4009 + "fun": "stopQAVoice",
  4010 + "dataTag":"1"
  4011 +}
  4012 +```
  4013 +
  4014 +#### 选定键盘发言
  4015 +##### startKpDSpeaker
  4016 +- **主题**:/client/\${baseSN}/send
  4017 +- **功能描述**:选定键盘发言,返回实时流语音
  4018 +- **参数说明**
  4019 +
  4020 +|参数名|类型|限制|是否必填|说明|
  4021 +|---|---|---|---|---|
  4022 +|fun|string|-|是|指令名称|
  4023 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4024 +|data|object|-|是|传送参数的对象|
  4025 +|+keySn|string||是|指定的键盘SN|
  4026 +|+mode|int||是|录音模式<br>0-按键录音(默认值)<br>1-自动录音<br>|
  4027 +|+timeLimit|int||否|限制的录音时长,0-255, 0-不限时长|
  4028 +|+audioFormat|int||否|音频格式<br>0-pcm<br>1-mp3(默认值1)<br>2-wav<br>3-speex|
  4029 +|+tip|string||否|提示的标题,长度不超过16字符|
  4030 +
  4031 +- **示例代码**
  4032 +```Json
  4033 +{
  4034 + "fun": "startKpDSpeaker",
  4035 + "dataTag":"1",
  4036 + "data": {
  4037 + "keySn": "1234567890",
  4038 + "mode":0,
  4039 + "timeLimit":30,
  4040 + "audioFormat":1,
  4041 + "tip":"请按键发言"
  4042 + }
  4043 +}
  4044 +```
  4045 +##### stopKpDSpeaker
  4046 +- **主题**:/client/\${baseSN}/send
  4047 +- **功能描述**:停止键盘发言
  4048 +- **参数说明**
  4049 +
  4050 +|参数名|类型|限制|是否必填|说明|
  4051 +|---|---|---|---|---|
  4052 +|fun|string|-|是|指令名称|
  4053 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4054 +
  4055 +- **示例代码**
  4056 +```Json
  4057 +{
  4058 + "fun": "stopKpDSpeaker",
  4059 + "dataTag":"1"
  4060 +}
  4061 +```
  4062 +
  4063 +#### 语音实时反馈
  4064 +##### startVoiceStbResponse
  4065 +- **主题**:/client/\${baseSN}/send
  4066 +- **功能描述**:启动待机实时反馈
  4067 +- **参数说明**
  4068 +
  4069 +|参数名|类型|限制|是否必填|说明|
  4070 +|---|---|---|---|---|
  4071 +|fun|string|-|是|指令名称|
  4072 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4073 +|data|object|-|是|传送参数的对象|
  4074 +|+mode|int||是|启动待机反馈类型<br>0-语音待机反馈|
  4075 +|+timeLimit|int||否|限制的录音时长,0-255秒, 0-不限时长|
  4076 +
  4077 +- **示例代码**
  4078 +```Json
  4079 +{
  4080 + "fun": "startVoiceStbResponse",
  4081 + "dataTag":"1",
  4082 + "data":{
  4083 + "mode":,
  4084 + "timeLimit":30
  4085 + }
  4086 +}
  4087 +```
  4088 +
  4089 +##### stopVoiceStbResponse
  4090 +- **主题**:/client/\${baseSN}/send
  4091 +- **功能描述**:停止待机实时反馈
  4092 +- **参数说明**
  4093 +
  4094 +|参数名|类型|限制|是否必填|说明|
  4095 +|---|---|---|---|---|
  4096 +|fun|string|-|是|指令名称|
  4097 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4098 +
  4099 +- **示例代码**
  4100 +```Json
  4101 +{
  4102 + "fun": "stopVoiceStbResponse",
  4103 + "dataTag":"1"
  4104 +}
  4105 +```
  4106 +
  4107 +### 事件
  4108 +#### [sEvtStateCode](#sevtstatecode)
  4109 +发送指令后返回接收状态
  4110 +
  4111 +#### fEvtVoiceFile
  4112 +- **主题**:/basestation/\${baseSN}/receive
  4113 +- **功能描述**:开启录音格式为录音文件方式时返回此事件
  4114 +- **参数说明**
  4115 +
  4116 +|参数名|类型|限制|非空|说明|
  4117 +|---|---|---|---|---|
  4118 +|fun|string|-|是|指令名称|
  4119 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4120 +|data|array|-|是|传送参数的对象数组|
  4121 +|++keySn|string||是|键盘SN|
  4122 +|++filePath|string||是|键盘提交语音文件的路径|
  4123 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  4124 +
  4125 +- **示例代码**
  4126 +```Json
  4127 +{
  4128 + "fun": "fEvtVoiceFile",
  4129 + "dataTag":"1",
  4130 + "data": [{
  4131 + "keySn": "1479824643",
  4132 + "filePath":"D:\\SunARSSDK\\voice\\20240502\\voice_1479824643_1635832534000.mp3",
  4133 + "keyTime":3.2
  4134 + }]
  4135 +}
  4136 +```
  4137 +#### fEvtVoiceStream
  4138 +- **主题**:/basestation/\${baseSN}/receive
  4139 +- **功能描述**:开启录音格式为实时流方式时返回此事件
  4140 +- **参数说明**
  4141 +
  4142 +|参数名|类型|限制|非空|说明|
  4143 +|---|---|---|---|---|
  4144 +|fun|string|-|是|指令名称|
  4145 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4146 +|data|object|-|是|传送参数的对象|
  4147 +|+keySn|string||是|键盘SN|
  4148 +|+voiceId|int||是|语音id,答题时间内,可重复提交语音,每段语音流加一个id,用于区分作答|
  4149 +|+sampleRate|int||是|音频采样率|
  4150 +|+bits|int||是|音频采样精度|
  4151 +|+channel|int||是|声道数|
  4152 +|+voiceData|string||是|音频数据,将原始数据通过Base64编码后得出<br>应用可通过Base64解码得到原始语音数据|
  4153 +|+dataLen|int||是|Base64编码后的数据字符串长度|
  4154 +|+endFlag|int||是|语音流结束标识<br>0-未结束<br>1-结束包|
  4155 +
  4156 +- **示例代码**
  4157 +```Json
  4158 +{
  4159 + "fun": "fEvtQAQuicker",
  4160 + "dataTag":"1",
  4161 + "data": {
  4162 + "keySn":"1479824643",
  4163 + "voiceId":"1",
  4164 + "sampleRate":16000,
  4165 + "bits":16,
  4166 + "channel":1,
  4167 + "endFlag":0,
  4168 + "dataLen":856,
  4169 + "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=="
  4170 + }
  4171 +}
  4172 +```
  4173 +#### fEvtVoicePacketLossInfo
  4174 +- **主题**:/basestation/\${baseSN}/receive
  4175 +- **功能描述**:开启录音格式为实时流方式,录音结束时返回此次录音的丢包率信息
  4176 +- **参数说明**
  4177 +
  4178 +|参数名|类型|限制|非空|说明|
  4179 +|---|---|---|---|---|
  4180 +|fun|string|-|是|指令名称|
  4181 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4182 +|data|object|-|是|传送参数的对象|
  4183 +|+keySn|string||是|键盘SN|
  4184 +|+voiceId|string||是|语音id|
  4185 +|+receive|double||是|收到语言流包数|
  4186 +|+shouldSend|string||是|应发数据包数|
  4187 +|+actualSend|string||是|实发数据包数|
  4188 +|+lossRate|double||是|丢包率,百分比|
  4189 +|+delay|double||是|延时,单位毫秒|
  4190 +
  4191 +- **示例代码**
  4192 +```Json
  4193 +{
  4194 + "fun": "fEvtQAQuicker",
  4195 + "dataTag":"1",
  4196 + "data": {
  4197 + "keySn":"1837454011",
  4198 + "voiceId":"1",
  4199 + "receive":"42",
  4200 + "shouldSend":"56",
  4201 + "actualSend":"56",
  4202 + "lossRate":"0",
  4203 + "delay":"20"
  4204 + }
  4205 +}
  4206 +```
  4207 +
  4208 +## 在线测验
  4209 +### 标准测验
  4210 +#### 方法
  4211 +##### startKpExam
  4212 +- **主题**:/client/\${baseSN}/send
  4213 +- **功能描述**:启动标准测验
  4214 +- **参数说明**
  4215 +
  4216 +|参数名|类型|限制|是否必填|说明|
  4217 +|---|---|---|---|---|
  4218 +|fun|string|-|是|指令名称|
  4219 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4220 +|data|object|-|是|传送参数的对象|
  4221 +|+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
  4222 +|+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
  4223 +|+questions|array||是|题目详情|
  4224 +|++symbol | string||是 | 题号前缀,可为空 |
  4225 +|++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  4226 +|++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  4227 +|++startNo | int||是| 起始题号 |
  4228 +|++count | int||是| 题目数量 |
  4229 +|+simParams|object||否|内部模拟测试参数设置对象|
  4230 +|++answer|array||是|预设提交的按键值<br>格式为"单选题答案,多选题答案;<br>数字题答案;判断题答案(1对2错)"<br>如["A","ABCD","10","1"]|
  4231 +
  4232 +- **示例代码**
  4233 +```Json
  4234 +//自定义题号
  4235 +{
  4236 + "fun": "startKpExam",
  4237 + "dataTag":"1",
  4238 + "data":{
  4239 + "mode": 0,
  4240 + "examNo": 1,
  4241 + "questions": [{
  4242 + //题号1-1-1 到1-1-10 共10题单选
  4243 + "symbol": "1-1-",
  4244 + "quesType": 1,
  4245 + "startNo": 1,
  4246 + "count":10
  4247 + }, {
  4248 + //题号2-2和2-3共两题 多选题,5个选项
  4249 + "symbol": "2-",
  4250 + "quesType": 2,
  4251 + "option": 5,
  4252 + "startNo": 2,
  4253 + "count":2
  4254 + }, {
  4255 + //题号3-1和3-2共两道数字题
  4256 + "symbol": "3-",
  4257 + "quesType": 3,
  4258 + "startNo": 1,
  4259 + "count":2
  4260 + }, {
  4261 + //题号4和5 ,判断题
  4262 + "symbol": "",
  4263 + "quesType": 4,
  4264 + "startNo": 4,
  4265 + "count":2
  4266 + }],
  4267 + "simParams":{
  4268 + "answer":["A","ABCD","10","1"]
  4269 + }
  4270 + }
  4271 +}
  4272 +
  4273 +//显示Q开头
  4274 +{
  4275 + "fun": "startKpExam",
  4276 + "dataTag":"1",
  4277 + "data":{
  4278 + "mode": 1,
  4279 + "examNo": 1,
  4280 + "questions": [{
  4281 + //Q1-Q20,单选题
  4282 + "symbol": "",
  4283 + "quesType": 1,
  4284 + "startNo": 1,
  4285 + "count":20
  4286 + }],
  4287 + "simParams":{
  4288 + "answer":["A","","",""]
  4289 + }
  4290 + }
  4291 +}
  4292 +
  4293 +//显示题开头
  4294 +{
  4295 + "fun": "startKpExam",
  4296 + "dataTag":"1",
  4297 + "data":{
  4298 + "mode": 2,
  4299 + "examNo": 1,
  4300 + "questions": [{
  4301 + //题1-题20,单选题
  4302 + "symbol": "",
  4303 + "quesType": 1,
  4304 + "startNo": 1,
  4305 + "count":20
  4306 + }],
  4307 + "simParams":{
  4308 + "answer":["A","","",""]
  4309 + }
  4310 + }
  4311 +}
  4312 +```
  4313 +##### stopKpExam
  4314 +- **主题**:/client/\${baseSN}/send
  4315 +- **功能描述**:停止标准测验
  4316 +- **参数说明**
  4317 +
  4318 +|参数名|类型|限制|是否必填|说明|
  4319 +|---|---|---|---|---|
  4320 +|fun|string|-|是|指令名称|
  4321 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4322 +
  4323 +- **示例代码**
  4324 +```Json
  4325 +{
  4326 + "fun": "stopKpExam",
  4327 + "dataTag":"1"
  4328 +}
  4329 +```
  4330 +##### rtGetKpExamData
  4331 +- **主题**:/client/\${baseSN}/send
  4332 +- **功能描述**:刷新作答数据
  4333 +- **参数说明**
  4334 +
  4335 +|参数名|类型|限制|是否必填|说明|
  4336 +|---|---|---|---|---|
  4337 +|fun|string|-|是|指令名称|
  4338 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4339 +|data|object|-|是|传送参数的对象|
  4340 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  4341 +
  4342 +- **示例代码**
  4343 +```Json
  4344 +{
  4345 + "fun": "rtGetKpExamData",
  4346 + "dataTag":"1",
  4347 + "data":{
  4348 + "keySns":["1234567890","1234567891"]
  4349 + }
  4350 +}
  4351 +```
  4352 +##### rtSetKpExamResult
  4353 +- **主题**:/client/\${baseSN}/send
  4354 +- **功能描述**:考试结果回传键盘
  4355 +- **参数说明**
  4356 +
  4357 +|参数名|类型|限制|是否必填|说明|
  4358 +|---|---|---|---|---|
  4359 +|fun|string|-|是|指令名称|
  4360 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4361 +|data|object|-|是|传送参数的对象|
  4362 +|+examNo|string||是|回传答案的测验卷号|
  4363 +|+answer|string||是|回传题目的正确答案,用于客观题判卷,A,AB,1表示正确答案依次为A、AB、1|
  4364 +
  4365 +- **示例代码**
  4366 +```Json
  4367 +{
  4368 + "fun": "rtSetKpExamResult",
  4369 + "dataTag":"1",
  4370 + "data":{
  4371 + "examNo":1,
  4372 + "answer":"A,AB,1"
  4373 + }
  4374 +}
  4375 +```
  4376 +
  4377 +##### rtKpAllowEdited
  4378 +- **主题**:/client/\${baseSN}/send
  4379 +- **功能描述**:键盘提交后,允许键盘修改答案
  4380 +- **参数说明**
  4381 +
  4382 +|参数名|类型|限制|是否必填|说明|
  4383 +|---|---|---|---|---|
  4384 +|fun|string|-|是|指令名称|
  4385 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4386 +|data|object|-|是|传送参数的对象|
  4387 +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘|
  4388 +
  4389 +- **示例代码**
  4390 +```Json
  4391 +{
  4392 + "fun": "rtKpAllowEdited",
  4393 + "dataTag":"1",
  4394 + "data":{
  4395 + "keySns":["1234567890","1234567891"]
  4396 + }
  4397 +}
  4398 +```
  4399 +#### 事件
  4400 +##### [sEvtStateCode](#sevtstatecode)
  4401 +发送指令后返回接收状态
  4402 +
  4403 +##### fEvtKpExam
  4404 +- **主题**:/basestation/\${baseSN}/receive
  4405 +- **功能描述**:返回键盘提交答题信息
  4406 +- **参数说明**
  4407 +
  4408 +|参数名|类型|限制|非空|说明|
  4409 +|---|---|---|---|---|
  4410 +|fun|string|-|是|指令名称|
  4411 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4412 +|data|array|-|是|传送参数的对象数组|
  4413 +|++keySn|string||是|键盘SN|
  4414 +|++keyValue|string||是|键盘提交的按键值,1:A;2:B表示第1题提交A,第二题提交B|
  4415 +|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  4416 +
  4417 +- **示例代码**
  4418 +```Json
  4419 +{
  4420 + "fun": "fEvtKpExam",
  4421 + "dataTag":"1",
  4422 + "data": [{
  4423 + "keySn": "1234567890",
  4424 + "keyValue":"1:A;2:B",
  4425 + "keyTime":3.2
  4426 + },
  4427 + {
  4428 + "keySn": "1234567891",
  4429 + "keyValue":"1:B;2:B",
  4430 + "keyTime":3.5
  4431 + }
  4432 + ]
  4433 +}
  4434 +```
  4435 +##### fEvtFinalSubmit
  4436 +- **主题**:/basestation/\${baseSN}/receive
  4437 +- **功能描述**:返回键盘手动交卷标识
  4438 +- **参数说明**
  4439 +
  4440 +|参数名|类型|限制|非空|说明|
  4441 +|---|---|---|---|---|
  4442 +|fun|string|-|是|指令名称|
  4443 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4444 +|data|array|-|是|传送参数的对象数组|
  4445 +|++keySn|string||是|键盘SN|
  4446 +|++keyValue|string||是|0 - 未提交(提交完成后,允许键盘修改答案时上报)<br>1 - 已交卷|
  4447 +|++keyTime|double||是|提交时间,从启动开始计算,单位秒|
  4448 +
  4449 +- **示例代码**
  4450 +```Json
  4451 +{
  4452 + "fun": "fEvtFinalSubmit",
  4453 + "dataTag":"1",
  4454 + "data": [{
  4455 + "keySn": "1234567890",
  4456 + "keyValue":"1",
  4457 + "keyTime":3.2
  4458 + }]
  4459 +}
  4460 +```
  4461 +
  4462 +##### fEvtSetKpExamResult
  4463 +- **主题**:/basestation/\${baseSN}/receive
  4464 +- **功能描述**:返回回传键盘判卷结果状态
  4465 +- **参数说明**
  4466 +
  4467 +|参数名|类型|限制|非空|说明|
  4468 +|---|---|---|---|---|
  4469 +|fun|string|-|是|指令名称|
  4470 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4471 +|data|object|-|是|传送参数的对象|
  4472 +|+examNo|int||是|测验卷号|
  4473 +|+state|string||是|0 - 回传成功<br>1 - 回传失败|
  4474 +
  4475 +- **示例代码**
  4476 +```Json
  4477 +{
  4478 + "fun": "fEvtSetKpExamResult",
  4479 + "dataTag":"1",
  4480 + "data": {
  4481 + "examNo": 1,
  4482 + "state":0
  4483 + }
  4484 +}
  4485 +```
  4486 +
  4487 +### 自主录分
  4488 +#### 方法
  4489 +##### startKpScoreInput
  4490 +- **主题**:/client/\${baseSN}/send
  4491 +- **功能描述**:启动标准测验
  4492 +- **参数说明**
  4493 +
  4494 +|参数名|类型|限制|是否必填|说明|
  4495 +|---|---|---|---|---|
  4496 +|fun|string|-|是|指令名称|
  4497 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4498 +|data|object|-|是|传送参数的对象|
  4499 +|+examNo|int||是|0-9999<br>=0,新的录分<br>>0时,与上次启动卷号一致继续录分,不一致进入新的录分|
  4500 +|+mode|int||是|录分模式<br>0-自主录分<br>1-交叉录分,需先输入录分的人员标识|
  4501 +|+questions|array||是|题目详情|
  4502 +|++symbol | string||是 | 题号前缀,可为空 |
  4503 +|++min |int||是|可输入的最小值,默认为0|
  4504 +|++max |int||是|可输入的最大值,<=100|
  4505 +|++digits|int||是|可输入的小数位数,范围0-2|
  4506 +|++startNo | int||是| 起始题号|
  4507 +|++count | int||是| 题目数量|
  4508 +
  4509 +- **示例代码**
  4510 +```Json
  4511 +{
  4512 + "fun": "startKpScoreInput",
  4513 + "dataTag":"1",
  4514 + "data":{
  4515 + "mode": 0,
  4516 + "examNo": 0,
  4517 + "questions": [{
  4518 + //题号1-1-1 到1-1-2 共2题,单题满分10分
  4519 + "symbol": "1-",
  4520 + "min": 0,
  4521 + "max":10,
  4522 + "digits":1,
  4523 + "startNo": 1,
  4524 + "count":2
  4525 + }, {
  4526 + //题号3到6 共4道题,单题满分5
  4527 + "symbol": "",
  4528 + "min": 0,
  4529 + "max":5,
  4530 + "digits":0,
  4531 + "startNo": 3,
  4532 + "count":4
  4533 + }]
  4534 + }
  4535 +}
  4536 +```
  4537 +
  4538 +##### stopKpScoreInput
  4539 +- **主题**:/client/\${baseSN}/send
  4540 +- **功能描述**:停止自主录分
  4541 +- **参数说明**
  4542 +
  4543 +|参数名|类型|限制|是否必填|说明|
  4544 +|---|---|---|---|---|
  4545 +|fun|string|-|是|指令名称|
  4546 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4547 +
  4548 +- **示例代码**
  4549 +```Json
  4550 +{
  4551 + "fun": "stopKpScoreInput",
  4552 + "dataTag":"1"
  4553 +}
  4554 +```
  4555 +#### 事件
  4556 +##### [sEvtStateCode](#sevtstatecode)
  4557 +发送指令后返回接收状态
  4558 +
  4559 +##### fEvtKpScore
  4560 +- **主题**:/basestation/\${baseSN}/receive
  4561 +- **功能描述**:返回键盘提交录分信息
  4562 +- **参数说明**
  4563 +
  4564 +|参数名|类型|限制|非空|说明|
  4565 +|---|---|---|---|---|
  4566 +|fun|string|-|是|指令名称|
  4567 +|dataTag|string|-|否|数据包标识,可为空字符串|
  4568 +|data|array|-|是|传送参数的对象数组|
  4569 +|++scoreTag|string||是|录分标识,自主录分为空,交叉录分为键盘录分前输入的标识|
  4570 +|++keySn|string||是|键盘SN|
  4571 +|++keyValue|string||是|键盘提交的分值,1:10;2:0表示第1题提交10分,第二题提交0分|
  4572 +|++keyTime|double||是|录分时间,从启动录分开始计算,单位秒|
  4573 +
  4574 +- **示例代码**
  4575 +```Json
  4576 +{
  4577 + "fun": "fEvtKpScore",
  4578 + "dataTag":"1",
  4579 + "data": [{
  4580 + "scoreTag":"5",
  4581 + "keySn": "1234567890",
  4582 + "keyValue":"1:8;2:7.5;3:2;4:3",
  4583 + "keyTime":3.2
  4584 + },
  4585 + {
  4586 + "scoreTag":"3",
  4587 + "keySn": "1234567891",
  4588 + "keyValue":"1:10;2:0",
  4589 + "keyTime":3.5
  4590 + }
  4591 + ]
  4592 +}
  4593 +```
0 4594 \ No newline at end of file
... ...