Commit ad44b4ccc11eff47b7965e647161aeaea9fb97f9

Authored by DMchen
1 parent ba162c03

1.修改文档中的图片。

2.修改文档中出现的错误。
3.将内部版和外部版分开。
img/image1.png

17.9 KB | W: | H:

15.9 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
img/image2.png

24.6 KB | W: | H:

23.1 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
img/image3.png

20.8 KB | W: | H:

20.3 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
img/image4.png

6.52 KB | W: | H:

6.66 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
通讯协议-SDK应用部分.md
... ... @@ -51,18 +51,18 @@ Ver5.1.1
51 51  
52 52 # 蝟餌膩
53 53  
54   -SunVote
55   -瑪頂蝏悖蝡unVoteWSTrayapp嚗SB銝蝡誘蝡
  54 +WSCmdApp
  55 +瑪頂蝏悖蝡SCmdApp嚗蝔SB銝蝡誘蝡
56 56  
57   -SunVoteWSTrayapp隞亥悟撘蝔unVote瑪頂蝏悖unVoteWSTrayappSunVoteWSTrayapp隞嚗ebsocket悖撘蝙JSON縑撘摰鈭蝟餌恣巨誘蝏憒![](img/image1.png)
  57 +WSCmdApp隞亥悟撘蝔SCmdApp瑪頂蝏悖SCmdApp蝔WSCmdApp隞嚗ebsocket悖撘蝙JSON縑撘摰鈭蝟餌恣巨誘蝏憒![](img/image1.png)
58 58  
59 59 憒撘嚗隞亙挽霈∴
60 60  
61 61 ![](img/image2.png)
62 62  
63   -unVoteWSTrayappindows蝟餌餈unVoteWSTrayapp蝔
  63 +SCmdAppindows蝟餌餈SCmdApp蝔
64 64  
65   -SunVoteWSTrayapp蝔葉config.ini蔭辣銝剖霈曄蔭WebSocket垢嚗誑銝蔭嚗
  65 +WSCmdApp蝔葉config.ini蔭辣銝剖霈曄蔭WebSocket垢嚗誑銝蔭嚗
66 66  
67 67 ![](img/image3.png)
68 68  
... ... @@ -72,15 +72,15 @@ SunVoteWSTrayapp蝔葉config.ini蔭辣銝剖霈曄蔭WebSocket垢嚗
72 72  
73 73 1悅ebsocket撠憟賜撅征楊摨雿輻蛹撟喳摨撘悖蝖
74 74  
75   -2蝔賒鈭unVoteWSTrayapp撘妍銝箏蝔鈭誘SunVoteWSTrayapp嚗unVoteWSTrayapp誘笆蝡蝔
  75 +2蝔賒鈭SCmdApp撘妍銝箏蝔鈭誘WSCmdApp嚗SCmdApp誘笆蝡蝔
76 76  
77 77 ![](img/image4.png)
78 78  
79 79 # 悖霈曇恣璁
80 80  
81   -摨蝔unVoteWSTrayapp銋Json縑嚗縑撘
  81 +摨蝔SCmdApp銋Json縑嚗縑撘
82 82  
83   -銝蝔 - \> SunVoteWSTrayapp
  83 +銝蝔 - \> WSCmdApp
84 84  
85 85 ```json
86 86 {
... ... @@ -97,7 +97,7 @@ baseId嚗蝡D嚗蝡,0隞”蝡1隞”1
97 97 params嚗嚗撖嫣嚗隞交蝏挾
98 98 packerTag:餈葵撅挾嚗捆閬蝔恣摨誘packerTag雿蔭隡泵銝莎靘踹蝔葵霈啣
99 99  
100   -unVoteWSTrayapp-\> 摨蝔
  100 +SCmdApp-> 摨蝔
101 101  
102 102 ```json
103 103 {
... ... @@ -110,7 +110,7 @@ packerTag:餈葵撅挾嚗捆閬蝔恣摨
110 110  
111 111 fun嚗 撖孵妍,憒:"BaseStationID"霂餃蝡d, " answerChoices" //憸.
112 112 baseId: 蝡D嚗蝡0畾誨銵冽蝡1隞”1蝡
113   -infos: SunVoteWSTrayappPP撅雿祕閫雿摰
  113 +infos: WSCmdAppPP撅雿祕閫雿摰
114 114 packetTag:餈葵撅挾嚗捆閬蝔恣泵銝脯
115 115  
116 116 摮挾潸秩
... ... @@ -119,36 +119,36 @@ packetTag:餈葵撅挾嚗捆閬蝔恣
119 119 X\~Y:潛
120 120  
121 121 # 縑撘
122   -鈭支<\--\>摨撘蝔SunVoteWSTrayapp嚗unVoteWSTrayapp銵
  122 +鈭支<-->摨撘蝔WSCmdApp嚗SCmdApp銵
123 123  
124   -摨蝔瓷unVoteWSTrayapp嚗閬歲嚗unVoteWSTrayapp敹歲歲嚗鈭銝蝔蔭辣銝哨鈭歲璉嚗蝔歲嚗unVoteWSTrayapp隡撘敶嚗撠嚗
  124 +摨蝔瓷SCmdApp嚗閬歲嚗SCmdApp敹歲歲嚗鈭銝蝔蔭辣銝哨鈭歲璉嚗蝔歲嚗SCmdApp隡撘敶嚗撠嚗
125 125  
126 126 # 蝻秩
127 127  
128   -雿輻SunVoteWSTrayapp蝻瘚
  128 +雿輻WSCmdApp蝻瘚
129 129 蔭嚗(蔭祕蔭辣config.ini)
130 130  
131   -1dk-\>role websocket
  131 +1dk->role websocket
132 132 芋撘lient:摰X蝡舀芋撘erver嚗蝡舀芋撘
133 133  
134   -2dk-\> ip 憒ebsocket憭恥蝡舀芋撘
  134 +2dk-> ip 憒ebsocket憭恥蝡舀芋撘
135 135 甇夕p銝箇ip嚗ebsocket憭蝡舀芋撘 甇夕p
136 136  
137   -3dk-\> port憒ebsocket憭恥蝡舀芋撘
  137 +3dk-> port憒ebsocket憭恥蝡舀芋撘
138 138 甇小ort銝箇port嚗ebsocket憭蝡舀芋撘
139 139 甇小ort銝箸蝡皰ort
140 140
141 141  
142 142 1蝙websocket悖嚗P銝截P
143   -2SunVoteApp.exe嚗unVoteWSTrayapp嚗
  143 +2WSCmdApp.exe嚗SCmdApp嚗
144 144 3頧臭辣餈停縑嚗縑撘蛹JSON(UTF-8蝻)雿霂瑞SON誘霂湔
145   -4頧臭辣誘嚗unVoteApp.exe嚗unVoteWSTrayapp嚗誘
  145 +4頧臭辣誘嚗SCmdApp.exe嚗SCmdApp嚗誘
146 146  
147 147 # JSON誘霂湔
148 148  
149   -摨蝔unVoteWSTrayapp銋Json縑嚗縑撘
  149 +摨蝔SCmdApp銋Json縑嚗縑撘
150 150  
151   -銝蝔 - \>SunVoteWSTrayapp
  151 +銝蝔 ->WSCmdApp
152 152  
153 153 ```json
154 154 {
... ... @@ -166,23 +166,23 @@ baseId嚗蝡D嚗摮掩雿蝡D嚗隞乩0
166 166 params嚗嚗隞乩蛹撖寡情蝏鈭撈隞支祕閫雿摰
167 167  
168 168 packerTag:
169   -倌摮泵銝,鈭敶誘銝隞誘蝔unVoteWSTrayapp隞亥摰嚗摰嚗隞乩蛹嚗隞亙銝芣unVoteWSTrayapp蝔嚗‵摨蝔倌
  169 +倌摮泵銝,鈭敶誘銝隞誘蝔SCmdApp隞亥摰嚗摰嚗隞乩蛹嚗隞亙銝芣SCmdApp蝔嚗‵摨蝔倌
170 170  
171   -unVoteWSTrayapp -> 摨蝔
  171 +SCmdApp -> 摨蝔
172 172  
173 173 ```json
174 174 {
175 175 fun: "" //摰
176 176 baseId: 1 //蝡d,摮掩
177 177 infos: {} //靽⊥撖寡情/蝏
178   - packetTag: "" // 倌摮泵銝莎鈭敶誘銝隞誘unVoteWSTrayapp蝔憓摮扇unVoteWSTrayapp蝔‵SunVoteWSTrayapp倌
  178 + packetTag: "" // 倌摮泵銝莎鈭敶誘銝隞誘SCmdApp蝔憓摮扇SCmdApp蝔‵WSCmdApp倌
179 179 }
180 180 ```
181 181  
182 182 fun嚗膩.
183 183 baseId:膩.
184   -infos:SunVoteWSTrayapp蝔雿祕閫雿摰
185   -packetTag:倌摮泵銝莎蛹摨蝔蒂unVoteWSTrayapp銝餃嚗銝蝏憓
  184 +infos:WSCmdApp蝔雿祕閫雿摰
  185 +packetTag:倌摮泵銝莎蛹摨蝔蒂SCmdApp銝餃嚗銝蝏憓
186 186  
187 187 摮挾潸秩
188 188 nfos銝剔挾state嚗K銵函內AIL銵函內憭梯揖
... ... @@ -191,7 +191,7 @@ X\~Y:潛
191 191  
192 192 ## 敹歲
193 193  
194   -摨蝔歲嚗unVoteWSTrayapp鈭餈
  194 +摨蝔歲嚗SCmdApp鈭餈
195 195  
196 196  
197 197  
... ... @@ -226,7 +226,7 @@ packetTag:&quot;1&quot;//倌
226 226  
227 227 ## 蝡撘
228 228  
229   -摨蝔unVoteWSTrayapp蝵敹歲嚗蝡誘蝡停隞乩unVote瑪頂蝏蝡悖
  229 +摨蝔SCmdApp蝵敹歲嚗蝡誘蝡停隞乩unVote瑪頂蝏蝡悖
230 230  
231 231 ### 餈蝡
232 232  
... ... @@ -288,7 +288,7 @@ packetTag:&quot;1&quot; //acketTag
288 288  
289 289 ### 撘蝡
290 290  
291   -SunVoteWSTrayapp銝靽⊥
  291 +WSCmdApp銝靽⊥
292 292  
293 293
294 294  
... ... @@ -302,9 +302,6 @@ packetTag:&quot;1&quot;
302 302 {
303 303 "fun": "disconnectBase",
304 304 "baseId": 1,
305   - "infos": {
306   - "state": "OK"
307   - },
308 305 "packetTag": "1"
309 306 }
310 307 ```
... ... @@ -374,7 +371,7 @@ params:{} //砲
374 371 誘靘
375 372  
376 373 ```json
377   -{...
  374 +{
378 375 "keySnList": [{
379 376 "keySn": "1837454011"
380 377 }, {
... ... @@ -429,7 +426,7 @@ params:{} //銝箇征
429 426 誘靘
430 427  
431 428 ```json
432   -{...
  429 +{
433 430 "keySnList": [{
434 431 "keySn": "1837454011"
435 432 }, {
... ... @@ -488,13 +485,13 @@ params嚗}
488 485  
489 486 |**Json摮挾**| **摮挾銋** | **韏澆銋**|
490 487 | --- | --- | --- |
491   -|bindMode| 蝑曉璅∪ 1. 蝑曉 </br> 2. PIN倌(暺恕) |
492   -| lessMode | 憸 0- (暺恕潘
493   -| modifyMode | 靽格璅∪ | 0-銝靽格 1-隞乩耨(暺恕)|
494   -| limitNumber | | 0-銝(暺恕) </br> 1- |
  488 +|bindMode| 蝑曉璅∪ 1:蝑曉 </br> 2:PIN倌(暺恕) |
  489 +| lessMode | 憸 0:(暺恕潘
  490 +| modifyMode | 靽格璅∪ | 0:銝靽格 1:隞乩耨(暺恕)|
  491 +| limitNumber | | 0:銝(暺恕) </br> 1: |
495 492 | options | 摰 | 摰10|
496 493 | optionalN | 摮 | 1N10 (閬挽蝵, 10銝0) |
497   -| keyValue | | 0. OK蝑曉] </br>1:1 </br>2:2 </br> 3:3 </br> 4:4 </br> 5:5 </br> 6:6 </br> 7:7 </br> 8:8 </br> 9:9 </br> 10:0 </br> 11:銝 </br> 12:銝 </br> 13:OK </br> 14:ESC </br> 15: Menu |
  494 +| keyValue | | 0:OK蝑曉] </br>1:1 </br>2:2 </br> 3:3 </br> 4:4 </br> 5:5 </br> 6:6 </br> 7:7 </br> 8:8 </br> 9:9 </br> 10:0 </br> 11:銝 </br> 12:銝 </br> 13:OK </br> 14:ESC </br> 15: Menu |
498 495 | tipTitle | 內 | 16銝芸 |
499 496  
500 497  
... ... @@ -1103,7 +1100,7 @@ infos: {}
1103 1100  
1104 1101 ####
1105 1102  
1106   -霂剝撖寡祕閫摰縑](\l)
  1103 +霂剝撖寡祕閫摰縑]
1107 1104  
1108 1105 #### 迫雿
1109 1106  
... ... @@ -1143,7 +1140,7 @@ infos:{&quot;state&quot;:&quot;OK&quot;}//餈,蛹OK
1143 1140  
1144 1141 #### 銝W縑
1145 1142  
1146   -霂剝蝏SunVoteWSTrayapp隡砲甈∟祗閮腺
  1143 +霂剝蝏WSCmdApp隡砲甈∟祗閮腺
1147 1144  
1148 1145 瘜冽迨霂剝摰瘚
1149 1146  
... ... @@ -1437,119 +1434,6 @@ infos:{&quot;state&quot;:&quot;OK&quot;}//餈,蛹OK
1437 1434 |B200-2.4G+S6|璅∪0- 憭16雿
1438 1435 |B200-5.8G+T2|璅∪0- 憭14雿<br>璅∪ (3-撣血雿)嚗
1439 1436  
1440   -
1441   -###
1442   -
1443   -#### 撘憪
1444   -
1445   -
1446   -
1447   -fun: "startKeyPadTest" //撘憪
1448   -params嚗}
1449   -
1450   -|Json摮挾|摮挾銋韏澆銋
1451   -|---|---|---|
1452   -|mode|瘚芋撘1-<br>2-璅⊥
1453   -|keyTime||0-60 0撽砌銵 暺恕銝0|
1454   -|gapTime||0-60 0 暺恕銝0|
1455   -
1456   -
1457   -誘靘
1458   -
1459   -```json
1460   -{
1461   - "fun": "startKeyPadTest",
1462   - "baseId": 0,
1463   - "params": {
1464   - "mode": "1",
1465   - "keyTime": "0",
1466   - "gapTime": "0"
1467   - },
1468   - "packetTag": "1"
1469   -}
1470   -```
1471   -
1472   -#### 雿
1473   -
1474   -嚗
1475   -
1476   -fun: "answerKeyPadTest" //瘚
1477   -baseId: "1"//誘蝡D
1478   -infos: {}
1479   -
1480   -|Json摮挾|摮挾銋韏澆銋
1481   -|---|---|---|
1482   -|Time|蝑|
1483   -|keySn|n||
1484   -|hModel|′隞嗅||
1485   -|keyValue|慝|
1486   -|ver|蔓隞嗥||
1487   -|volt|瘙T2潘6
1488   -
1489   -
1490   -誘靘
1491   -
1492   -```json
1493   -{
1494   - "fun": "answerKeyPadTest",
1495   - "baseId": 1,
1496   - "infos": {
1497   - "time": "2.42",
1498   - "keySn": "1479824643",
1499   - "hModel": "67",
1500   - "keyValue": "0",
1501   - "ver": "1.0.0",
1502   - "volt": "12"
1503   - },
1504   - "packetTag": "1"
1505   -}
1506   -```
1507   -
1508   -#### 迫雿
1509   -
1510   -
1511   -
1512   -fun: "stopKeyPadTest" //迫
1513   -params:{} //暺恕蝛
1514   -
1515   -誘靘
1516   -
1517   -```json
1518   -{
1519   - "fun": "stopKeyPadTest",
1520   - "baseId": 0,
1521   - "packetTag": "1"
1522   -}
1523   -```
1524   -
1525   -嚗
1526   -
1527   -fun: "stopKeyPadTest" //迫
1528   -baseId: "1"//蝡D
1529   -infos:{"state":"OK"}//餈,蛹OK
1530   -
1531   -誘靘
1532   -
1533   -```json
1534   -{
1535   - "fun": "stopKeyPadTest",
1536   - "baseId": 1,
1537   - "infos": {
1538   - "state": "OK"
1539   - },
1540   - "packetTag": "1"
1541   -}
1542   -```
1543   -
1544   -#### 挽憭秩
1545   -
1546   -|蝡+/銝憭釣|
1547   -|---|---|---|
1548   -|B100-2.4G+S6|瘙
1549   -|B200-2.4G+S6|瘙
1550   -|B200-5.8G+T2||
1551   -
1552   -
1553 1437 ### 憭
1554 1438 #### 撘憪
1555 1439  
... ... @@ -2862,9 +2746,8 @@ infos: {}
2862 2746  
2863 2747 | **Json摮挾** | **摮挾銋** | **韏澆銋** |
2864 2748 | --- | --- | --- |
2865   -| time | 蝑 | |
2866 2749 | keySn | n | |
2867   -| keyValue | | ABCD/1234/AA123 |
  2750 +| keyValue | | ABCD/1234 |
2868 2751  
2869 2752  
2870 2753 誘靘
... ... @@ -2888,7 +2771,6 @@ infos: {}
2888 2771  
2889 2772 | **Json摮挾** | **摮挾銋** | **韏澆銋** |
2890 2773 | --- | --- | --- |
2891   -| time | 蝑 | |
2892 2774 | keySn | n | |
2893 2775 | keyValue | |1~2|
2894 2776  
... ... @@ -2912,7 +2794,6 @@ infos: {}
2912 2794  
2913 2795 | **Json摮挾** | **摮挾銋** | **韏澆銋** |
2914 2796 | --- | --- | --- |
2915   -| time | 蝑 | |
2916 2797 | keySn | n | |
2917 2798 | keyValue | |漱慝
2918 2799  
... ... @@ -2971,259 +2852,6 @@ infos:{&quot;state&quot;:&quot;OK&quot;}//餈,蛹OK
2971 2852 | --- | --- | --- |
2972 2853 | B200-2.4G+S6 | |閬
2973 2854  
2974   -
2975   -### 摰
2976   -
2977   -#### 撘憪
2978   -
2979   -
2980   -
2981   -fun: "startKeyPadCustomQuestions" //撘憪
2982   -params嚗}
2983   -
2984   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
2985   -| --- | --- | --- |
2986   -|titleTable| 憸銵 |蝏摮泵銝淫|
2987   -| optionTable | ★銵 |蝏<br>"A嚗嚗嚗" [暺恕]<br>" 1嚗2嚗3嚗4 "<br>" 撖對 "<br>" "<br>" 笆嚗 "|
2988   -|ruleTable| 閫” |蝏捆霂瑕挾閫|
2989   -|permissionTable| 霈詨” |蝏
2990   -|configTable| 蔭銵 |蝏
2991   -
2992   -霈詨”蝏”霂湔
2993   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
2994   -| --- | --- | --- |
2995   -|permission| 霈詨 |0嚗暺恕]<br>1: 捂<br>2: 蝳迫|
2996   -|KeySnList| ” |蝏<br>"1479824643"<br>"1479824644"<br>"1479824645"<br>"1479824646"|
2997   -
2998   -
2999   -蔭銵函”霂湔
3000   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
3001   -| --- | --- | --- |
3002   -|ruleType| 憸 |1-200|
3003   -|titleID|憸銵沉D|1-200|
3004   -|optionID|★銵沉D|1-200|
3005   -|ruleID|閫”ID|1-200|
3006   -|permissionID|霈詨”ID|1-200|
3007   -
3008   -閫挾閫
3009   -閫掩1嚗
3010   -
3011   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
3012   -| --- | --- | --- |
3013   -|ruleType| 閫掩 |1|
3014   -|mode|璅∪0: 暺恕嚗嚗<br>1: 蝥舀摮 嚗嚗銝嚗<br>2: 憛怎征蝏撌勗颲撘<br>3: 憭蝷箸撘<br>4: 甈∟”甈∟悅<br>5: 甈∟<br>6: 蜀<br>7: 蝝航恣巨巨|
3015   -|modifyMode|靽格璅∪0:銝靽格<br> 1:靽格嚗恕|
3016   -|secrecyMode|靽芋撘0:銝恕<br> 1:靽
3017   -|lessMode|餈恍芋撘0:銝翰恕<br> 1:餈恍
3018   -|repeat|芋撘0:銝嚗恕<br> 1:葵★甈﹄
3019   -|sort|0:靽憿箏<br>1:★恕|
3020   -|max|憭批犖||
3021   -|min|撠犖||
3022   -|maximum|憭批靘憿寧|1-10|
3023   -|maxOptions||撠潭1嚗憭批潔maximum|
3024   -|topLimit|摮瘚桃撘泵銝琍
3025   -|lowerLimit|摮瘚桃撘泵銝琍
3026   -
3027   -閫掩2嚗
3028   -
3029   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
3030   -| --- | --- | --- |
3031   -|ruleType| 閫掩 |2|
3032   -|mode|璅∪0:暺恕嚗嚗
3033   -|modifyMode|靽格璅∪0:銝靽格<br> 1:靽格嚗恕|
3034   -|secrecyMode|靽芋撘0:銝恕<br> 1:靽
3035   -|lessMode|餈恍芋撘0:銝翰恕<br> 1:餈恍
3036   -|repeat|芋撘0:銝嚗恕<br>1:葵★甈﹄
3037   -|sort|0:靽憿箏<br>1:★恕|
3038   -|max|憭批犖||
3039   -|min|撠犖||
3040   -|retain|靽摮蝏 000-999|
3041   -|range|摮|蝏
3042   -
3043   -摮蝏
3044   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
3045   -| --- | --- | --- |
3046   -|rangeStart|摮撘憪瘚桃撘泵銝琍
3047   -|rangeEnd|摮蝏瘚桃撘泵銝琍
3048   -
3049   -
3050   -
3051   -誘靘
3052   -```json
3053   -{
3054   - "fun": "startKeyPadCustomQuestions",
3055   - "baseId": 0,
3056   - "params": {
3057   - "titleTable": ["", "摮”"],
3058   - "optionTable": [
3059   - ["A", "B", "C", "D"],
3060   - ["", "笆", "撘"]
3061   - ],
3062   - "ruleTable": [{
3063   - "ruleType": "1",
3064   - "mode": "0",
3065   - "modifyMode": "0",
3066   - "secrecyMode": "0",
3067   - "lessMode": "0",
3068   - "repeat": "0",
3069   - "sort": "1",
3070   - "max": "4",
3071   - "min": "1",
3072   - "maximum": "4",
3073   - "maxOptions": "1",
3074   - "topLimit": "100.0",
3075   - "lowerLimit": "0.1"
3076   - },
3077   - {
3078   - "ruleType": "2",
3079   - "mode": "0",
3080   - "modifyMode": "0",
3081   - "secrecyMode": "0",
3082   - "lessMode": "0",
3083   - "repeat": "0",
3084   - "sort": "1",
3085   - "max": "4",
3086   - "min": "1",
3087   - "retain": ["777", "999"],
3088   - "range": [{
3089   - "rangeStart": "1",
3090   - "rangeEnd": "100"
3091   - }, {
3092   - "rangeStart": "101",
3093   - "rangeEnd": "200"
3094   - }, {
3095   - "rangeStart": "201",
3096   - "rangeEnd": "300"
3097   - }]
3098   - }
3099   - ],
3100   - "permissionTable": [{
3101   - "permission": "2",
3102   - "keySnList": ["1479824643", "1479824644", "1479824645", "1479824646"]
3103   - },
3104   - {
3105   - "permission": "1",
3106   - "keySnList": ["1479824643", "1479824644", "1479824645", "1479824646"]
3107   - }
3108   - ],
3109   - "configTable": [{
3110   - "number": "1",
3111   - "titleID": "1",
3112   - "optionID": "1",
3113   - "ruleID": "1",
3114   - "permissionID": "0"
3115   - },
3116   - {
3117   - "number": "2",
3118   - "titleID": "2",
3119   - "optionID": "2",
3120   - "ruleID": "2",
3121   - "permissionID": "0"
3122   - }
3123   - ]
3124   - },
3125   - "packetTag": "59"
3126   -}
3127   -```
3128   -
3129   -嚗
3130   -
3131   -fun: "startKeyPadCustomQuestions" //撘憪摰
3132   -baseId: "1"//誘蝡D
3133   -infos:{"state":"OK"}//餈,蛹OK
3134   -
3135   -誘靘
3136   -
3137   -```json
3138   -{
3139   - "baseId": 1,
3140   - "fun": "startKeyPadCustomQuestions",
3141   - "infos": {
3142   - "state": "OK"
3143   - },
3144   - "packetTag": "59"
3145   -}
3146   -```
3147   -
3148   -#### 雿
3149   -
3150   -嚗
3151   -
3152   -fun: "answerKeyPadCustomQuestions" //摰
3153   -baseId: "1"//誘蝡D
3154   -infos: {}
3155   -
3156   -摮蝏
3157   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
3158   -| --- | --- | --- |
3159   -|Time|蝑|
3160   -|keySn|n||
3161   -|Seq|憸||
3162   -|keyValue|慝漱慝
3163   -
3164   -
3165   -
3166   -誘靘
3167   -```json
3168   -{
3169   - "fun": "answerKeyPadCustomQuestions",
3170   - "baseId": 1,
3171   - "infos": {
3172   - "time": "5.42",
3173   - "keySn": "1479824643",
3174   - "seq": "1",
3175   - "keyValue": "12"
3176   - },
3177   - "packetTag": "1"
3178   -}
3179   -```
3180   -
3181   -
3182   -#### 雿
3183   -
3184   -
3185   -
3186   -fun: "stopKeyPadCustomQuestions" //迫憭
3187   -params:{} //暺恕蝛
3188   -
3189   -
3190   -誘靘
3191   -```json
3192   -{
3193   - "fun": "stopKeyPadCustomQuestions",
3194   - "baseId": 0,
3195   - "packetTag": "1"
3196   -}
3197   -```
3198   -
3199   -
3200   -嚗
3201   -fun: "stopKeyPadCustomQuestions" //迫
3202   -baseId: "1"//蝡D
3203   -infos:{"state":"OK"}//餈,蛹OK
3204   -
3205   -
3206   -誘靘
3207   -```json
3208   -{
3209   - "fun": "stopKeyPadCustomQuestions",
3210   - "baseId": 1,
3211   - "infos": {
3212   - "state": "OK"
3213   - },
3214   - "packetTag": "1"
3215   -}
3216   -```
3217   -
3218   -
3219   -#### 挽憭秩
3220   -| **蝡+** | **** | **憭釣** |
3221   -| --- | --- | --- |
3222   -| B200-2.4G+M6 | |閬
3223   -
3224   -
3225   -
3226   -
3227 2855 ## NFC
3228 2856  
3229 2857
... ... @@ -3392,7 +3020,6 @@ params嚗}//銝‵
3392 3020  
3393 3021  
3394 3022  
3395   -
3396 3023 fun: "writeBaseStationChannel" //蝡
3397 3024 baseId: 1//1~32 (敹◆蝡)
3398 3025 params嚗"value":"1"}//1~12 嚗嚗
... ... @@ -3442,6 +3069,7 @@ infos:{&quot;value&quot;:&quot;3&quot;}//餈蝡
3442 3069 挽憭秩
3443 3070 | **蝡+** | **** | **憭釣** |
3444 3071 | --- | --- | --- |
  3072 +|B100-2.4GS+S6||憸1~80|
3445 3073 |B200-2.4GS+S6||憸1~80|
3446 3074 |B200-2.4GM+S6||憸1~80|
3447 3075 |B200-5.8G+T2||憸1~12|
... ... @@ -3524,7 +3152,7 @@ infos:{&quot;value&quot;:&quot;1&quot;}//餈敶蝷箏
3524 3152  
3525 3153  
3526 3154  
3527   -fun: "readBaseStationModel" //霂餃蝡
  3155 +fun: "readBaseStationModel" //霂餃蝡
3528 3156 baseId: 0//0~32 (暺恕銝0銵函內霂餃蝡)
3529 3157 params嚗}//銝‵
3530 3158  
... ... @@ -3545,7 +3173,7 @@ params嚗}//銝‵
3545 3173  
3546 3174 fun: "baseStationModel"
3547 3175 baseId: 1//蝡D
3548   -infos:{"value":"218"}//餈蝡
  3176 +infos:{"value":"218"}//餈蝡
3549 3177  
3550 3178  
3551 3179 誘靘
... ... @@ -4708,110 +4336,6 @@ infos:{ }//餈蝡
4708 4336 | --- | --- | --- |
4709 4337 | B200-5.8G+T2 | ||
4710 4338  
4711   -#### 蝡ES
4712   -
4713   -霂
4714   -
4715   -fun: "readBaseStationAES" //霂餃蝡ES
4716   -baseId: 0// 0~32 (誘銝aseID嚗恕銝0銵函內霂餃蝡)
4717   -params嚗}//銝‵
4718   -
4719   -誘靘
4720   -```json
4721   -{
4722   - "fun":"readBaseStationAES",
4723   - "baseId":0,
4724   - "packetTag":"1"
4725   -}
4726   -```
4727   -
4728   -
4729   -
4730   -fun: "writeBaseStationAES" //蝡ES
4731   -baseId: 1 //1~32 (敹◆蝡)
4732   -params嚗"value":"0"}//
4733   -
4734   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
4735   -| --- | --- | --- |
4736   -| baseId | 蝡D | 1~32 |
4737   -| value | 芋撘 | 0:瑪銝<br>1:瑪AES128<br>2:瑪 AES256 |
4738   -
4739   -誘靘
4740   -```json
4741   -{
4742   - "fun":"writeBaseStationAES",
4743   - "baseId":1,
4744   - "packetTag":"1"
4745   -}
4746   -```
4747   -
4748   -餈
4749   -嚗
4750   -fun: "baseStationAES"
4751   -baseId: 1//蝡D
4752   -infos:{"value":"1"}//餈蝡ES
4753   -
4754   -誘靘
4755   -```json
4756   -{
4757   - "fun": "baseStationAES",
4758   - "baseId": 1,
4759   - "infos": {
4760   - "value": "0"
4761   - },
4762   - "packetTag": "1"
4763   -}
4764   -```
4765   -
4766   -
4767   -
4768   -fun: "copyBaseStationAES" //蝡ES
4769   -baseId: 0
4770   -params嚗}//
4771   -
4772   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
4773   -| --- | --- | --- |
4774   -| destBaseID | 蝡D | 1~32 |
4775   -| sourceBaseID | 皞蝡D | 1~32 |
4776   -
4777   -
4778   -誘靘
4779   -```json
4780   -{
4781   - "fun": "copyBaseStationAES",
4782   - "baseId": 0,
4783   - "params": {
4784   - "destBaseID": "2",
4785   - "sourceBaseID": "1"
4786   - },
4787   - "packetTag": "1"
4788   -}
4789   -```
4790   -
4791   -餈
4792   -嚗
4793   -fun: " copyBaseStationAES "
4794   -baseId: 1//蝡D
4795   -infos:{"value":"OK"}//餈
4796   -
4797   -誘靘
4798   -```json
4799   -{
4800   - "fun": "baseStationAES",
4801   - "baseId": 1,
4802   - "infos": {
4803   - "value": "OK"
4804   - },
4805   - "packetTag": "1"
4806   -}
4807   -```
4808   -挽憭秩
4809   -
4810   -| **蝡+** | **** | **憭釣** |
4811   -| --- | --- | --- |
4812   -| B200-2.4GM+S6 | | |
4813   -
4814   -
4815 4339 ###
4816 4340  
4817 4341 隞乩N嚗笆蝥輸瓷縑銝閬N嚗
... ... @@ -4830,18 +4354,18 @@ params嚗} //
4830 4354 | **Json摮挾** | **摮挾銋** | **韏澆銋** |
4831 4355 | --- | --- | --- |
4832 4356 | keySn | N |蝛箏泵銝莎蛹蝥輸
4833   -| ledTimes | Led活 | 0\~255 (0撽砌嚗255鈭)|
4834   -| ledOnTime | Led瘥活撘 |0\~255 (0.1s)|
4835   -| ledOffTime | Led瘥活 |0\~255 (0.1s嚗蛹0撠望餈賒鈭)|
4836   -| ledColorR | Led憸,蝥W |0\~255(01鈭,嚗>1銋恕銝箸1)|
4837   -| ledColorG | Led憸,蝏踹 |0\~255(01鈭,嚗>1銋恕銝箸1)|
4838   -| ledColorB | Led憸, |0\~255(01鈭,嚗>1銋恕銝箸1)|
4839   -| beepTimes | 腦活 | 0\~255 (0撽砌255) |
4840   -| beepOnTime | 腦瘥活撘 |0\~255 (0.1s)|
4841   -| beepOffTime | 腦瘥活 |0\~255 (0.1s嚗蛹0撠望餈賒)|
4842   -| motorTimes |撽祈噢甈⊥|0\~255|
4843   -| motorOnTime | 撽祈噢瘥活撘 |0\~255 (0.1s)|
4844   -| motorOffTime | 撽祈噢瘥活 |0\~255 (0.1s嚗蛹0撠望餈賒)|
  4357 +| ledTimes | Led活 | 0~255 (0撽砌嚗255鈭)|
  4358 +| ledOnTime | Led瘥活撘 |0~255 (0.1s)|
  4359 +| ledOffTime | Led瘥活 |0~255 (0.1s嚗蛹0撠望餈賒鈭)|
  4360 +| ledColorR | Led憸,蝥W |0~255(01鈭,嚗>1銋恕銝箸1)|
  4361 +| ledColorG | Led憸,蝏踹 |0~255(01鈭,嚗>1銋恕銝箸1)|
  4362 +| ledColorB | Led憸, |0~255(01鈭,嚗>1銋恕銝箸1)|
  4363 +| beepTimes | 腦活 | 0~255 (0撽砌255) |
  4364 +| beepOnTime | 腦瘥活撘 |0~255 (0.1s)|
  4365 +| beepOffTime | 腦瘥活 |0~255 (0.1s嚗蛹0撠望餈賒)|
  4366 +| motorTimes |撽祈噢甈⊥|0~255|
  4367 +| motorOnTime | 撽祈噢瘥活撘 |0~255 (0.1s)|
  4368 +| motorOffTime | 撽祈噢瘥活 |0~255 (0.1s嚗蛹0撠望餈賒)|
4845 4369  
4846 4370 誘靘
4847 4371  
... ... @@ -4855,9 +4379,9 @@ params嚗} //
4855 4379 "ledTimes": "3",
4856 4380 "ledOnTime": "1",
4857 4381 "ledOffTime": "1",
4858   - "ledColorR": "128",
4859   - "ledColorG": "128",
4860   - "ledColorB": "128",
  4382 + "ledColorR": "1",
  4383 + "ledColorG": "1",
  4384 + "ledColorB": "1",
4861 4385 "beepTimes": "3",
4862 4386 "beepOnTime": "1",
4863 4387 "beepOffTime": "1",
... ... @@ -4901,9 +4425,9 @@ infos:{&quot;state&quot;:&quot;OK&quot;}//餈,蛹OK
4901 4425 "ledTimes": "3",
4902 4426 "ledOnTime": "1",
4903 4427 "ledOffTime": "1",
4904   - "ledColorR": "128",
4905   - "ledColorG": "128",
4906   - "ledColorB": "128",
  4428 + "ledColorR": "1",
  4429 + "ledColorG": "1",
  4430 + "ledColorB": "1",
4907 4431 "beepTimes": "3",
4908 4432 "beepOnTime": "1",
4909 4433 "beepOffTime": "1",
... ... @@ -4968,7 +4492,7 @@ params嚗&quot;mode&quot;:&quot;1&quot;, &quot;value&quot;:&quot;4&quot;}//
4968 4492  
4969 4493 | **Json摮挾** | **摮挾銋** | **韏澆銋** |
4970 4494 | --- | --- | --- |
4971   -|mode|芋撘 0:銝嚗恕0銝嚗<br>1:蝷漏
  4495 +|mode|芋撘 0:銝嚗恕0銝嚗<br>1:
4972 4496 |value|憭扳|1\~10|
4973 4497  
4974 4498 誘靘
... ... @@ -5024,17 +4548,17 @@ infos:{ &quot;mode&quot;:&quot;1&quot;, &quot;value&quot;:&quot;4&quot;}//餈芋撘
5024 4548  
5025 4549 fun: "immediateFeedback"
5026 4550 baseId: 1//蝡D
5027   -infos:{ "keySn":"1", "value":"A"}//餈芋撘
  4551 +infos:{ "keySn":"2307269906", "keyValue":"A"}//餈芋撘
5028 4552  
5029 4553 誘靘
5030 4554  
5031 4555 ```json
5032 4556 {
5033   - "fun": "immediateFeedback",
5034 4557 "baseId": 1,
  4558 + "fun": "immediateFeedback",
5035 4559 "infos": {
5036   - "keySn": "1479824643",
5037   - "value": "A"
  4560 + "keySn": "2307269906",
  4561 + "keyValue": "A"
5038 4562 },
5039 4563 "packetTag": "0"
5040 4564 }
... ... @@ -5082,11 +4606,11 @@ infos:{ &quot;keySn&quot;:&quot;1479824643&quot;}//餈芋撘
5082 4606
5083 4607 fun: " KeyboardHeartbeat"
5084 4608 baseId: 1//蝡D
5085   -infos:{ "keySn":"1479824643","keyValue":"0","ver":"1.0.0","volt":"50"}//餈芋撘
  4609 +infos:{ "hModel": "67","keySn":"1479824643","keyValue":"0","ver":"1.0.0","volt":"50"}//餈芋撘
5086 4610  
5087 4611 | **Json摮挾** | **摮挾銋** | **韏澆銋** |
5088 4612 | --- | --- | --- |
5089   -|hModel||75嚗 T2-5.8G<br>76嚗 S6-2.4G|
  4613 +|hModel||75嚗 T2-5.8G<br>67嚗 S6-2.4G|
5090 4614 |keySn|n||
5091 4615 |keyVer|||
5092 4616 |Volt|T2潘6
... ... @@ -5304,70 +4828,10 @@ infos:{}//蝏笆鞊,
5304 4828 | B100-2.4G+S6 | ||
5305 4829 | B200-2.4G+S6 | ||
5306 4830  
5307   -#### 耨FSN[雿輻誘]
5308   -
5309   -
5310   -
5311   -fun: "writeKeyFSN" //耨FSN
5312   -params嚗} // 蝏笆鞊,撖寡情銝剔恕潔蛹蝛箏泵銝
5313   -
5314   -| **Json摮挾** | **摮挾銋** | **韏澆銋** |
5315   -| --- | --- | --- |
5316   -|keySnOld|SN||
5317   -|keySnNew|SN||
5318   -
5319   -
5320   -誘靘
5321   -
5322   -
5323   -
5324   -```json
5325   -{
5326   - "fun": "writeKeyFSN",
5327   - "params": {
5328   - "keySnList": [{
5329   - "keySnOld": "0007899478",
5330   - "keySnNew": "0007899479"
5331   - },
5332   - {
5333   - "keySnOld": "0007899488",
5334   - "keySnNew": "0007899489"
5335   - }
5336   - ]
5337   - },
5338   - "packetTag": "1"
5339   -}
5340   -```
5341   -
5342   -餈
5343   -
5344   -fun: "writeKeyFSN"
5345   -infos:{}//蝏笆鞊,
5346   -
5347   -
5348   -誘靘
5349   -
5350   -```json
5351   -{
5352   - "baseId": 3,
5353   - "fun": "writeKeyFSN",
5354   - "infos": {
5355   - "keySn": "0007899478",
5356   - "state": "OK"
5357   - },
5358   - "packetTag": "1"
5359   -}
5360   -```
5361   -
5362   -挽憭秩
5363   -| **蝡+** | **** | **憭釣** |
5364   -| --- | --- | --- |
5365   -| B100-2.4G+S6 | ||
5366   -| B200-2.4G+S6 | ||
5367 4831  
5368 4832 ## 蝷箄挽蝵
5369 4833  
5370   -瘜剁誘銝剔"baseId\":0, 敹賜銝
  4834 +瘜剁誘銝剔"baseId":0, 敹賜銝
5371 4835  
5372 4836 ### 蝛粹
5373 4837  
... ...
通讯协议-SDK应用部分[内部].md 0 → 100644
Changes suppressed. Click to show
  1 +<br>
  2 +<br>
  3 +<br>
  4 +
  5 +<div style="text-align: center;font-size: 70px;">
  6 +WSCmdApp接口协议接口说明
  7 +</div>
  8 +
  9 +
  10 +<div style="text-align: center;font-size: 30px;">
  11 +Ver5.1.1
  12 +</div>
  13 +<br>
  14 +<br>
  15 +<br>
  16 +<br>
  17 +<br>
  18 +<br>
  19 +
  20 +<div style="text-align: center;font-size: 30px;">
  21 +长沙中天电子设计开发有限公司
  22 +</div>
  23 +
  24 +<br>
  25 +
  26 +<div style="text-align: center;font-size: 30px;">
  27 +二〇二三年五月
  28 +</div>
  29 +
  30 +<br>
  31 +<br>
  32 +<br>
  33 +<br>
  34 +
  35 +文件控制:
  36 +
  37 +文件名:WSCmdApp接口说明
  38 +
  39 +起草人:陈定敏
  40 +
  41 +最新版本作者: 陈定敏
  42 +<br>
  43 +<br>
  44 +| 文档版本 | 日期 | 作者 | 版本说明 |
  45 +|---|---|---|---|
  46 +|5.1.1| 2023年10月09日|陈定敏|1. 初始版|
  47 +
  48 +<br>
  49 +
  50 +[TOC]
  51 +
  52 +# 系统概述
  53 +
  54 +WSCmdApp
  55 +无线反馈系统是由手持的键盘、通讯基站、WSCmdApp(控制台程序)、控制电脑组成的。控制电脑通过USB接口与基站连接。控制指令由控制电脑通过基站发送给键盘。
  56 +
  57 +WSCmdApp可以让用户开发的应用程序与无线反馈系统通讯。WSCmdApp控制台程序(下文用WSCmdApp代替)提供websocket通讯方式,使用JSON通信格式,来实现互动系统的管理及投票指令的发送和接收功能。调用结构图如下:![](img/image1.png)
  58 +
  59 +如果用户想开发互联网应用,可以参考如下设计:
  60 +
  61 +![](img/image2.png)
  62 +
  63 +目前WSCmdApp只支持Windows系统。用户只需运行WSCmdApp程序即可。
  64 +
  65 +WSCmdApp程序中config.ini配置文件中可设置WebSocket的端口,见以下位置:
  66 +
  67 +![](img/image3.png)
  68 +
  69 +上述配置#号开头行,为注释行,对下面一个配置进行说明。每个配置参考上面说明。
  70 +
  71 +# 设计目的
  72 +
  73 +1、协议通过Websocket封装后将具有更好的扩展空间和跨应用使用能力,为平台应用开发提供数据通讯基础。
  74 +
  75 +2、应用程序(后续基于WSCmdApp开发的程序称为应用程序),基于业务发送指令到WSCmdApp,WSCmdApp收到指令后,完成对基站或键盘的操作后回复应用程序。
  76 +
  77 +![](img/image4.png)
  78 +
  79 +# 通讯接口设计概要
  80 +
  81 +应用程序和WSCmdApp之间采用Json数据通信,通信的基本格式如下:
  82 +
  83 +下发:应用程序 - > WSCmdApp
  84 +
  85 +```json
  86 +{
  87 + fun: "" // 功能定义
  88 + baseId: 1 // 基站id,数字类型
  89 + params: {} //参数对象/数组
  90 + packetTag: "" //数据包标签字符串
  91 +}
  92 +```
  93 +
  94 +fun 为功能对应的名称 如:"readBaseStationID" 读取基站的id,"startChoices" //开始选择题, "stopChoices" //停止选择题.
  95 +
  96 +baseId:基站ID,用来区分基站标志,0代表所有基站,1代表1号基站。
  97 +params:参数,功能相对于的参数,可以是数组或字段。
  98 +packerTag:这个是扩展字段,内容需要应用程序管理,功能相应的反馈指令packerTag位置会反馈相同字符串,方便应用程序跟踪记录。
  99 +
  100 +反馈:WSCmdApp-> 应用程序
  101 +
  102 +```json
  103 +{
  104 + fun: "" //功能定义
  105 + baseId: 1 //基站id,数字类型
  106 + infos: {} //信息对象/数组
  107 + packetTag: "" // 数据包标签字符串。
  108 +}
  109 +```
  110 +
  111 +fun: 功能对应的名称,如:"BaseStationID"读取基站id, " answerChoices" //选择题键盘反馈值.
  112 +baseId: 基站ID,用来区分基站标志;0特殊代表所有基站,1代表1号基站。
  113 +infos: WSCmdApp反馈给APP层的数据。具体详见具体功能定义。
  114 +packetTag:这个是扩展字段,内容需要应用程序管理,反馈接收到的字符串。
  115 +
  116 +字段值说明:
  117 +反馈infos中的状态字段state,OK表示成功,FAIL表示失败。
  118 +反馈infos中的硬件参数字段的值,FAIL表示失败,其他值为成功。
  119 +X\~Y:范围内的值特指整数。
  120 +
  121 +# 通信方式
  122 +数据交互采取发送<-->应答的方式。应用程序发送数据到WSCmdApp,WSCmdApp收到后执行完成后回复。
  123 +
  124 +应用程序没有数据发送给WSCmdApp时,需要发送心跳,WSCmdApp收到心跳后会回复心跳,用于判断与应用程序的连接状态。(配置文件中,如果启用了心跳检查,应用程序如果未按要求发送心跳,WSCmdApp会断开当前连接,重新尝试连接)
  125 +
  126 +# 编程流程说明
  127 +
  128 +用户使用WSCmdApp编程的基本流程如下:
  129 +配置参数:(可配置、详情见配置文件config.ini)
  130 +
  131 +1、sdk->role websocket
  132 +的运行模式【client:客户端模式,server:服务端模式】 。
  133 +
  134 +2、sdk-> ip 如果websocket处于客户端模式
  135 +此ip为目标服务器ip;如果websocket处于服务端模式 此ip无效。
  136 +
  137 +3、sdk-> port如果websocket处于客户端模式
  138 +此port为目标服务器port;如果websocket处于服务端模式
  139 +此port为本服务端port。
  140 +编程开发:
  141 +
  142 +1、使用websocket通讯,IP为IP地址
  143 +2、启动WSCmdApp.exe(WSCmdApp)进程
  144 +3、业务软件连接服务器后就可直接通信,通信的数据格式为JSON(UTF-8编码)。具体参数请看JSON指令说明部分。
  145 +4、业务软件发送退出指令,WSCmdApp.exe(WSCmdApp)收到指令后退出。
  146 +
  147 +# JSON指令说明
  148 +
  149 +应用程序和WSCmdApp之间采用Json数据通信,通信的基本格式如下:
  150 +
  151 +下发:应用程序 ->WSCmdApp
  152 +
  153 +```json
  154 +{
  155 + fun: "" // 功能定义
  156 + baseId: 1 // 基站id,数字类型
  157 + params: {} //参数对象/数组
  158 + packetTag: "" //数据包标签字符串
  159 +}
  160 +```
  161 +
  162 +fun:为功能定义,下发命令,要下发的命令函数
  163 +
  164 +baseId:基站ID,数字类型,如果不指定具体基站ID,可以传0或者不传该Key值。如果要指定多个基站ID,则需要多次下发该命令,切换不同的基站ID进行发送。
  165 +
  166 +params:参数,可以为对象或者数组,用于伴随命令下发的数据附属包,详见具体功能定义。
  167 +
  168 +packerTag:
  169 +数据标签字符串,用于区别当前指令与其他指令。应用程序发送给WSCmdApp的,用户可以自定义数据(如果用户无自定义数据,可以为包序号,这样可以区分回复的数据回复的是哪个数据包)。WSCmdApp回复应用程序时,直接回填应用程序收到的标签数据。
  170 +
  171 +反馈:WSCmdApp -> 应用程序
  172 +
  173 +```json
  174 +{
  175 + fun: "" //功能定义
  176 + baseId: 1 //基站id,数字类型
  177 + infos: {} //信息对象/数组
  178 + packetTag: "" // 数据包标签字符串,用于区别当前指令与其他指令。WSCmdApp发送给应用程序的用自增数字标记。WSCmdApp回复应用程序的,直接回填WSCmdApp收到的标签。
  179 +}
  180 +```
  181 +
  182 +fun:同下发描述.
  183 +baseId:同下发描述.
  184 +infos:WSCmdApp反馈给应用程序层的数据。具体详见具体功能定义。
  185 +packetTag:数据标签字符串,反馈功能函数的状态为应用程序附带的数据包,如果WSCmdApp主动发送数据,是一组自增数据。
  186 +
  187 +字段值说明:
  188 +反馈infos中的状态字段state,OK表示成功,FAIL表示失败。
  189 +反馈infos中的硬件参数字段的值,FAIL表示失败,其他值为成功。
  190 +X\~Y:范围内的值特指整数。
  191 +
  192 +## 心跳
  193 +
  194 +应用程序发送心跳,WSCmdApp回应,用于判断连接状态。
  195 +
  196 +发送:
  197 +
  198 +fun: "heartBeat" //心跳
  199 +baseId: //无该值
  200 +params:{}//无该值
  201 +packetTag:"1"//收到的packetTag,可用于分析通信状态
  202 +
  203 +指令样例:
  204 +```json
  205 +{
  206 + "fun": "heartBeat",
  207 + "packetTag": "1"
  208 +}
  209 +```
  210 +
  211 +接收:
  212 +
  213 +fun: "heartBeat" //心跳
  214 +baseId: //无该值
  215 +infos:{}//无该值
  216 +packetTag:"1"//数据包标签
  217 +
  218 +指令样例:
  219 +
  220 +```json
  221 +{
  222 + "fun": "heartBeat",
  223 + "packetTag": "1"
  224 +}
  225 +```
  226 +
  227 +## 基站的连接、断开和复位
  228 +
  229 +应用程序与WSCmdApp网络连接成功后(收到心跳),可发送连接基站指令。收到基站连接成功后就可以与SunVote无线反馈系统(基站、键盘)通讯。
  230 +
  231 +### 连接基站
  232 +
  233 +读取在线基站状态
  234 +发送:
  235 +fun: "readConnectBase" //连接基站
  236 +baseId:0 //基站ID
  237 +params:{} //为空
  238 +packetTag:"1" //
  239 +
  240 +指令样例:
  241 +```json
  242 +{
  243 + "fun": "readConnectBase",
  244 + "baseId": 0,
  245 + "packetTag": "1"
  246 +}
  247 +```
  248 +
  249 +接收:
  250 +
  251 +fun: "connectBase" //连接基站
  252 +baseId:1 //基站ID
  253 +infos: {"state":"OK"} //OK连接成功
  254 +packetTag:"1" //收到的packetTag
  255 +
  256 +指令样例:
  257 +```json
  258 +{
  259 + "fun": "connectBase",
  260 + "baseId": 1,
  261 + "infos": {
  262 + "state": "OK"
  263 + },
  264 + "packetTag": "1"
  265 +}
  266 +```
  267 +
  268 +基站连接后主动上报,WSCmdApp上报信息。
  269 +
  270 +接收:
  271 +
  272 +fun: "connectBase" //连接基站
  273 +baseId:1 //基站ID
  274 +infos: {"state":"OK"} //OK连接成功
  275 +packetTag:"1" //收到的packetTag
  276 +
  277 +指令样例:
  278 +```json
  279 +{
  280 + "fun": "connectBase",
  281 + "baseId": 1,
  282 + "infos": {
  283 + "state": "OK"
  284 + },
  285 + "packetTag": "1"
  286 +}
  287 +```
  288 +
  289 +### 断开基站
  290 +
  291 +WSCmdApp上报信息。
  292 +
  293 +接收:
  294 +
  295 +fun: "disconnectBase" //断开基站
  296 +baseId:1 //基站ID
  297 +infos: {} //无该值
  298 +packetTag:"1"
  299 +
  300 +指令样例:
  301 +```json
  302 +{
  303 + "fun": "disconnectBase",
  304 + "baseId": 1,
  305 + "packetTag": "1"
  306 +}
  307 +```
  308 +
  309 +
  310 +### 复位基站
  311 +
  312 +发送:
  313 +
  314 +fun: "resetBase" //复位基站
  315 +baseId:1,
  316 +params:{} //无该值
  317 +
  318 +指令样例:
  319 +
  320 +```json
  321 +{
  322 + "fun": "resetBase",
  323 + "baseId": 1,
  324 + "packetTag": "1"
  325 +}
  326 +```
  327 +
  328 +
  329 +
  330 +注意:B200支持此命令
  331 +
  332 +## 答题
  333 +
  334 +答题流程:
  335 +
  336 +![](img/image5.png)
  337 +
  338 +
  339 +在开始作答,各类答题都可指定显示标题和开始作答键盘,也可以为空。
  340 +
  341 +顶层对象增加的字段如下:
  342 +
  343 +
  344 +|**Json字段**|**字段含义**|**赋值及含义**|
  345 +| --- | --- | --- |
  346 +|keySnList|指定键盘列表|keySn数组,为空表示所有键盘都参与。|
  347 +
  348 +
  349 +
  350 +在停止作答时,各类答题都可指定停止作答键盘,也可以为空。
  351 +
  352 +顶层对象增加的字段如下:
  353 +
  354 +|**Json字段**|**字段含义**|**赋值及含义**|
  355 +| --- | --- | --- |
  356 +|keySnList|指定键盘列表|keySn数组,为空表示所有键盘都参与。|
  357 +
  358 +
  359 +
  360 +如果指定了键盘,则会逐个返回指定键盘的接收状态。收到的infos数组对象如下:
  361 +
  362 +|**Json字段**|**字段含义**|**赋值及含义**|
  363 +| --- | --- | --- |
  364 +|keySn|键盘Sn||
  365 +|state|状态|OK表示成功|
  366 +
  367 +
  368 +
  369 +开始作答
  370 +
  371 +指令样例:
  372 +
  373 +```json
  374 +{ 
  375 + "keySnList": [{            
  376 + "keySn": "1837454011"        
  377 + }, {            
  378 + "keySn": "1837454012"        
  379 + }]
  380 +}
  381 +```
  382 +
  383 +
  384 +
  385 +键盘的接收状态返回
  386 +
  387 +fun: "startXXKeypad" //开始XX作答键盘(XX是开始作答对应具体名称)
  388 +baseId: 1//接收到指令的基站ID
  389 +infos:{}//数组对象
  390 +指令样例:
  391 +
  392 +```json
  393 +{    
  394 + "fun": "startBindKeypad",
  395 + "baseId": 1,
  396 + "infos": [{            
  397 + "keySn": "1837454011",
  398 + "state": "OK"        
  399 + }],
  400 + "packetTag": "1"
  401 +}
  402 +```
  403 +
  404 +
  405 +
  406 +回复键盘的接收状态返回
  407 +
  408 +发送:
  409 +
  410 +fun: "startXXKeypad" //开始xx作答键盘
  411 +baseId:"1"//收到的基站ID
  412 +params:{} //为空
  413 +
  414 +指令样例:
  415 +
  416 +```json
  417 +{    
  418 + "fun": "startBindKeypad",
  419 + "baseId": 1,
  420 + "packetTag": "1"
  421 +}
  422 +```
  423 +
  424 +停止作答
  425 +
  426 +指令样例:
  427 +
  428 +```json
  429 +{
  430 + "keySnList": [{            
  431 + "keySn": "1837454011"        
  432 + }, {            
  433 + "keySn": "1837454012"        
  434 + }]
  435 +}
  436 +```
  437 +
  438 +键盘的接收状态返回
  439 +
  440 +fun: "stopXXKeypad" //停止XX作答键盘(XX是停止作答对应具体名称)
  441 +baseId: 1//接收到指令的基站ID
  442 +infos:{}//数组对象
  443 +
  444 +指令样例:
  445 +
  446 +```json
  447 +{
  448 + "fun": "stopBindKeypad",
  449 + "baseId": 1,
  450 + "infos": [{
  451 + "keySn": "1837454011",
  452 + "state": "OK"
  453 + }],
  454 + "packetTag": "1"
  455 +}
  456 +```
  457 +
  458 +回复键盘的接收状态返回
  459 +
  460 +发送:
  461 +
  462 +fun: "stopXXKeypad" //停止xx作答键盘
  463 +baseId: "1"//收到的基站ID
  464 +params:{} //为空
  465 +
  466 +指令样例:
  467 +```json
  468 +{
  469 + "fun": "stopBindKeypad",
  470 + "baseId": 1,
  471 + "packetTag": "1"
  472 +}
  473 +```
  474 +
  475 +
  476 +### 签到设备
  477 +
  478 +#### 开始签到
  479 +
  480 +发送:
  481 +
  482 +fun: "startBind" //开始签到
  483 +params:{}
  484 +
  485 +
  486 +|**Json字段**| **字段含义** | **赋值及含义**|
  487 +| --- | --- | --- |
  488 +|bindMode| 签到模式| 1:指定键签到 </br> 2:PIN码签到(默认值) |
  489 +| lessMode | 预留| 0:(默认值)|
  490 +| modifyMode | 修改模式 | 0:不可修改 1:可以修改(默认值)|
  491 +| limitNumber | 指定位数 | 0:不指定位数(默认值) </br> 1:指定位数 |
  492 +| options | 固定值 | 固定值10|
  493 +| optionalN | 可选数字 | 1≤N≤10 (指定位数才需要设置, 10为0) |
  494 +| keyValue | 指定按键键值 | 0:未指定[OK键签到] </br>1:1 </br>2:2 </br> 3:3 </br> 4:4 </br> 5:5 </br> 6:6 </br> 7:7 </br> 8:8 </br> 9:9 </br> 10:0 </br> 11:上键 </br> 12:下键 </br> 13:OK </br> 14:ESC </br> 15: Menu |
  495 +| tipTitle | 提示标题 | 16个字节 |
  496 +
  497 +
  498 +指令样例:
  499 +
  500 +```json
  501 +{
  502 + "fun": "startBind",
  503 + "baseId": 0,
  504 + "params": {
  505 + "bindMode": "1",
  506 + "lessMode": "0",
  507 + "modifyMode": "1",
  508 + "limitNumber": "1",
  509 + "options": "10",
  510 + "optionalN": "10",
  511 + "keyValue": "0"
  512 + },
  513 + "packetTag": "1"
  514 +}
  515 +```
  516 +
  517 +#### 接收签到信息
  518 +
  519 +接收:
  520 +
  521 +fun: "answerBind" //签到返回
  522 +baseId: "1"//接收到指令的基站ID
  523 +infos:{}
  524 +
  525 +| Json字段|字段含义|赋值及含义|
  526 +|---|---|---|
  527 +|time|答题时间|单位秒|
  528 +|keySn|键盘Sn||
  529 +|keyValue|键值|键盘提交的值|
  530 +
  531 +指令样例:
  532 +
  533 +```json
  534 +{
  535 + "fun": "answerBind",
  536 + "baseId": 1,
  537 + "infos": {
  538 + "time": "2.42",
  539 + "keySn": "1479824643",
  540 + "keyValue": "1234"
  541 + },
  542 + "packetTag": "1"
  543 +}
  544 +```
  545 +
  546 +#### 停止签到
  547 +
  548 +发送:
  549 +
  550 +fun: "stopBind" //停止签到
  551 +params:{} //默认空
  552 +
  553 +指令样例:
  554 +
  555 +```json
  556 +{
  557 + "fun": "stopBind",
  558 + "baseId": 0,
  559 + "packetTag": "1"
  560 +}
  561 +```
  562 +
  563 +接收:
  564 +
  565 +fun: "stopBind" //停止签到
  566 +baseId: "1"//收到的基站ID
  567 +infos:{"state":"OK"}//返回状态,成功为OK
  568 +
  569 +指令样例:
  570 +
  571 +```json
  572 +{
  573 + "fun": "stopBind",
  574 + "baseId": 1,
  575 + "infos": {
  576 + "state": "OK"
  577 + },
  578 + "packetTag": "1"
  579 +}
  580 +```
  581 +
  582 +#### 支持设备说明
  583 +
  584 +|**基站+键盘 **|**支持/不支持**|**备注**|
  585 +| --- | --- | --- |
  586 +|B100-2.4G+S6|支持||
  587 +|B200-2.4G+S6|支持||
  588 +|B200-5.8G+T2|支持||
  589 +
  590 +### 选择题
  591 +
  592 +#### 开始作答
  593 +
  594 +发送:
  595 +
  596 +fun: "startChoices" //开始选择题
  597 +params:{}
  598 +
  599 +|Json字段|字段含义|赋值及含义|
  600 +|---|---|---|
  601 +|optionsMode|选项类别|1:显示字母(默认值) </br>2:显示数字 |
  602 +|secrecyMode|保密模式|0:不保密(默认值)</br>1:保密 |
  603 +|modifyMode|修改模式|0:不可修改 </br>1:可以修改(默认值) |
  604 +| modifyMode | 修改模式 | 0:不可修改</br>1:可以修改(默认值)|
  605 +| lessMode | 迫选模式 | 0:可缺选(默认值) </br>1:不可缺选</br>2:允许重复输入</br>3:允许重复输入且不可缺选 |
  606 +| options | 选项数目 | 1≤M≤10(默认值4) |
  607 +| optionalN | 可选项数 | 1≤N≤M(默认值1) |
  608 +| tipTitle | 提示标题 | 16个字节 |
  609 +
  610 +
  611 +指令样例:
  612 +
  613 +```json
  614 +{
  615 + "fun": "startChoices",
  616 + "baseId": 0,
  617 + "params": {
  618 + "optionsMode": "1",
  619 + "secrecyMode": "0",
  620 + "modifyMode": "1",
  621 + "lessMode": "0",
  622 + "options": "4",
  623 + "optionalN": "1"
  624 + },
  625 + "packetTag": "1"
  626 +}
  627 +```
  628 +
  629 +接收:
  630 +
  631 +fun: "startChoices" //开始选择题
  632 +baseId: "1"//接收到指令的基站ID
  633 +infos:{"state":"OK"}//返回状态,成功为OK
  634 +
  635 +指令样例:
  636 +
  637 +```json
  638 +{
  639 + "fun": "startChoices",
  640 + "baseId": 1,
  641 + "infos": {
  642 + "state": "OK"
  643 + },
  644 + "packetTag": "1"
  645 +}
  646 +```
  647 +
  648 +
  649 +#### 接收作答
  650 +
  651 +接收:
  652 +
  653 +fun: "answerChoices" //选择题作答返回
  654 +baseId: "1"//接收到指令的基站ID
  655 +infos: {}
  656 +
  657 +|Json字段|字段含义|赋值及含义|
  658 +|---|---|---|
  659 +| time|答题时间|单位秒|
  660 +|keySn|键盘Sn||
  661 +|keyValue|键值|键盘提交的值|
  662 +
  663 +
  664 +指令样例:
  665 +```json
  666 +{
  667 + "fun": "answerChoices",
  668 + "baseId": 1,
  669 + "infos": {
  670 + "time": "2.42",
  671 + "keySn": "1479824643",
  672 + "keyValue": "A"
  673 + },
  674 + "packetTag": "1"
  675 +}
  676 +```
  677 +
  678 +#### 停止作答
  679 +
  680 +发送:
  681 +
  682 +fun: "stopChoices" //停止选择题
  683 +params:{} //默认空
  684 +指令样例:
  685 +
  686 +```json
  687 +{
  688 + "fun": "stopChoices",
  689 + "baseId": 0,
  690 + "packetTag": "1"
  691 +}
  692 +```
  693 +
  694 +接收:
  695 +
  696 +fun: "stopChoices" //停止选择题
  697 +baseId: "1"//收到的基站ID
  698 +infos:{"state":"OK"}//返回状态,成功为OK
  699 +
  700 +指令样例:
  701 +
  702 +```json
  703 +{
  704 + "fun": "stopChoices",
  705 + "baseId": 1,
  706 + "infos": {
  707 + "state": "OK"
  708 + },
  709 + "packetTag": "1"
  710 +}
  711 +```
  712 +
  713 +
  714 +#### 支持设备说明
  715 +|基站+键盘|支持/不支持|备注|
  716 +|---|---|---|
  717 +|B100-2.4G+S6|支持||
  718 +|B200-2.4G+S6|支持||
  719 +|B200-5.8G+T2|支持||
  720 +
  721 +
  722 +### 判断题
  723 +
  724 +#### 开始作答
  725 +
  726 +发送:
  727 +
  728 +fun: "startTrueFalse" //开始判断题
  729 +params:{}
  730 +
  731 +|**Json字段**|**字段含义**|**赋值及含义**|
  732 +|---|---|---|
  733 +| optionsMode | 选项类别 | 1:True/False 对/错 </br>2:Yes/No 是/否</br> 3:√/×|
  734 +| secrecyMode | 保密模式 | 0:不保密(默认值) </br> 1:保密|
  735 +| modifyMode | 修改模式 | 0:不可修改</br>1:可以修改(默认值)|
  736 +| tipTitle | 提示标题 | 16个字节|
  737 +
  738 +
  739 +指令样例:
  740 +```json
  741 +{
  742 + "fun": "startTrueFalse",
  743 + "baseId": 0,
  744 + "params": {
  745 + "optionsMode": "1",
  746 + "secrecyMode": "0",
  747 + "modifyMode": "1"
  748 + },
  749 + "packetTag": "1"
  750 +}
  751 +```
  752 +
  753 +接收:
  754 +
  755 +fun: "startTrueFalse" //开始判断题
  756 +baseId: "1"//接收到指令的基站ID
  757 +infos:{"state":"OK"}//返回状态,成功为OK
  758 +
  759 +指令样例:
  760 +
  761 +```json
  762 +{
  763 + "fun": "startTrueFalse",
  764 + "baseId": 1,
  765 + "infos": {
  766 + "state": "OK"
  767 + },
  768 + "packetTag": "1"
  769 +}
  770 +```
  771 +
  772 +#### 接收作答
  773 +
  774 +接收:
  775 +
  776 +fun: "answerTrueFalse" //判断题作答返回
  777 +baseId: "1"//接收到指令的基站ID
  778 +infos: {}
  779 +
  780 +|Json字段|字段含义|赋值及含义|
  781 +|---|---|---|
  782 +| time|答题时间|单位秒|
  783 +|keySn|键盘Sn||
  784 +|keyValue|键值|键盘提交的值(1对、2错)|
  785 +
  786 +
  787 +指令样例:
  788 +
  789 +```json
  790 +{
  791 + "fun": "answerTrueFalse",
  792 + "baseId": 1,
  793 + "infos": {
  794 + "time": "2.42",
  795 + "keySn": "1479824643",
  796 + "keyValue": "1"
  797 + },
  798 + "packetTag": "1"
  799 +}
  800 +```
  801 +
  802 +#### 停止作答
  803 +
  804 +发送:
  805 +
  806 +fun: "stopTrueFalse" //停止判断题
  807 +params:{} //默认空
  808 +
  809 +指令样例:
  810 +
  811 +```json
  812 +{
  813 + "fun": "stopTrueFalse",
  814 + "baseId": 0,
  815 + "packetTag": "1"
  816 +}
  817 +```
  818 +
  819 +接收:
  820 +
  821 +fun: "stopTrueFalse" //停止判断题
  822 +baseId: "1"//收到的基站ID
  823 +infos:{"state":"OK"}//返回状态,成功为OK
  824 +
  825 +指令样例:
  826 +
  827 +```json
  828 +{
  829 + "fun": "stopTrueFalse",
  830 + "baseId": 1,
  831 + "infos": {
  832 + "state": "OK"
  833 + },
  834 + "packetTag": "1"
  835 +}
  836 +```
  837 +
  838 +#### 支持设备说明
  839 +
  840 +|基站+键盘|支持/不支持|备注|
  841 +|---|---|---|
  842 +|B100-2.4G+S6|支持||
  843 +|B200-2.4G+S6|支持||
  844 +|B200-5.8G+T2|支持||
  845 +
  846 +### 多题快答
  847 +
  848 +#### 开始作答
  849 +
  850 +发送:
  851 +
  852 +fun: "startMulQuestions" //开始多小题
  853 +params:{}
  854 +
  855 +
  856 +|Json字段|字段含义|赋值及含义|
  857 +|---|---|---|
  858 +|questionType|题型|0:单选题(默认值)<br>1:判断题|
  859 +|secrecyMode| 保密模式| 0:不保密(默认值)<br>1:保密|
  860 +|modifyMode| 修改模式| 0:不可修改<br>1:可以修改(默认值)|
  861 +|lessMode| 预留|0|
  862 +|questionNumber|题目个数|1\~10 (默认值10)|
  863 +|options|选项数目|1~10 (单选题有效, 默认值4)|
  864 +|tipTitle|提示标题|16个字节|
  865 +
  866 +指令样例:
  867 +```json
  868 +{
  869 + "fun": "startMulQuestions",
  870 + "baseId": 0,
  871 + "params": {
  872 + "questionType": "0",
  873 + "secrecyMode": "0",
  874 + "modifyMode": "1",
  875 + "lessMode": "0",
  876 + "questionNumber": "10",
  877 + "options": "4"
  878 + },
  879 + "packetTag": "1"
  880 +}
  881 +```
  882 +
  883 +接收:
  884 +
  885 +fun: "startMulQuestions" //开始多小题
  886 +baseId: "1"//接收到指令的基站ID
  887 +infos:{"state":"OK"}//返回状态,成功为OK
  888 +
  889 +指令样例:
  890 +
  891 +```json
  892 +{
  893 + "fun": "startMulQuestions",
  894 + "baseId": 1,
  895 + "infos": {
  896 + "state": "OK"
  897 + },
  898 + "packetTag": "1"
  899 +}
  900 +```
  901 +
  902 +#### 接收作答
  903 +
  904 +接收:
  905 +
  906 +fun: "answerMulQuestions" //多小题作答返回
  907 +baseId: "1"//接收到指令的基站ID
  908 +infos: {}
  909 +
  910 +|Json字段|字段含义|赋值及含义|
  911 +|---|---|---|
  912 +|time|答题时间|单位秒|
  913 +|keySn|键盘Sn||
  914 +|keyValue|键值|键盘提交的值|
  915 +
  916 +指令样例:
  917 +
  918 +```json
  919 +{
  920 + "fun": "answerMulQuestions",
  921 + "baseId": 1,
  922 + "infos": {
  923 + "time": "2.42",
  924 + "keySn": "1479824643",
  925 + "keyValue": "AACDBDADBD"
  926 + },
  927 + "packetTag": "1"
  928 +}
  929 +```
  930 +
  931 +#### 停止作答
  932 +
  933 +发送:
  934 +
  935 +fun: "stopMulQuestions" //停止多小题
  936 +params:{} //默认空
  937 +
  938 +指令样例:
  939 +
  940 +```json
  941 +{
  942 + "fun": "stopMulQuestions",
  943 + "baseId": 0,
  944 + "packetTag": "1"
  945 +}
  946 +```
  947 +
  948 +接收:
  949 +
  950 +fun:"stopMulQuestions" //停止多小题
  951 +baseId: "1" //收到的基站ID
  952 +infos:{"state":"OK"} //返回状态,成功为OK
  953 +
  954 +指令样例:
  955 +
  956 +```json
  957 +{
  958 + "fun": "stopMulQuestions",
  959 + "baseId": 1,
  960 + "infos": {
  961 + "state": "OK"
  962 + },
  963 + "packetTag": "1"
  964 +}
  965 +```
  966 +
  967 +#### 支持设备说明
  968 +
  969 +|基站+键盘|支持/不支持|备注|
  970 +|---|---|---|
  971 +|B200-5.8G+T2|支持||
  972 +
  973 +### 语音题
  974 +
  975 +#### 开始作答
  976 +
  977 +发送:
  978 +
  979 +fun: "startVoice" //开始语音题
  980 +params:{}
  981 +
  982 +|Json字段|字段含义|赋值及含义|
  983 +|---|---|---|
  984 +|recordingMode|录音模式|0:按键录音(默认值)|
  985 +|submitTimes|提交次数|0 (0:不限制, 默认值0)|
  986 +|recordingTimeLimit|预留|0|
  987 +|recordingFormat|预留|0:固定传0|
  988 +|recordAudioFormat|音频格式|0:mp3<br>1:实时流(默认值1)|
  989 +|tipTitle|提示标题|16个字节|
  990 +
  991 +
  992 +指令样例:
  993 +
  994 +```json
  995 +{
  996 + "fun": "startVoice",
  997 + "baseId": 0,
  998 + "params": {
  999 + "recordingMode": "0",
  1000 + "submitTimes": "0",
  1001 + "recordingTimeLimit": "0",
  1002 + "recordingFormat": "0",
  1003 + "recordAudioFormat": "0"
  1004 + },
  1005 + "packetTag": "1"
  1006 +}
  1007 +```
  1008 +
  1009 +接收:
  1010 +
  1011 +fun: "startVoice" //开始语音题
  1012 +baseId: "1"//接收到指令的基站ID
  1013 +infos:{"state":"OK"}//返回状态,成功为OK
  1014 +
  1015 +指令样例:
  1016 +
  1017 +```json
  1018 +{
  1019 + "fun": "startVoice",
  1020 + "baseId": 1,
  1021 + "infos": {
  1022 + "state": "OK"
  1023 + },
  1024 + "packetTag": "1"
  1025 +}
  1026 +```
  1027 +
  1028 +#### 接收作答
  1029 +
  1030 +按开始作答时设置的录音格式分为录音文件和实时流两种。
  1031 +
  1032 +录音文件
  1033 +
  1034 +接收:
  1035 +
  1036 +fun: "answerVoiceFile" //录音文件返回
  1037 +baseId: "1"//接收到指令的基站ID
  1038 +infos: {}
  1039 +
  1040 +|Json字段|字段含义|赋值及含义|
  1041 +|---|---|---|
  1042 +|keySn|键盘Sn||
  1043 +|filePath|文件路径|录音文件路径|
  1044 +
  1045 +指令样例:
  1046 +
  1047 +```json
  1048 +{
  1049 + "fun": "answerVoiceFile",
  1050 + "baseId": 1,
  1051 + "infos": {
  1052 + "keySn": "1479749926",
  1053 + "filePath": "D:\voice\3_1479749926_196_2023-08-21 16-09-02 530.Mp3"
  1054 + },
  1055 + "packetTag": "1"
  1056 +}
  1057 +```
  1058 +
  1059 +实时流
  1060 +
  1061 +接收:
  1062 +
  1063 +fun: "answerVoiceStream" //语音实时流返回
  1064 +baseId: "1"//接收到指令的基站ID
  1065 +infos: {}
  1066 +
  1067 +|Json字段|字段含义|赋值及含义|
  1068 +|---|---|---|
  1069 +|keySn|键盘Sn||
  1070 +|voiceId|回话ID|答题时间内,可重复提交语音,每段语音流加一个回话ID,用于区分作答|
  1071 +|sampleRate|音频采样率||
  1072 +|bits|音频采样精度||
  1073 +|channel|声道数||
  1074 +|dataIndex|数据包号|1开始|
  1075 +|data|数据|将原始数据通过Base64编码后得到json中 "data" 字段。应用可通过Base64解码得到原始语音数据。|
  1076 +|dataLen|数据长度|Base64编码后的字符串长度。应该将 "data" 通过Base64解码后得到原始的数据长度。|
  1077 +|endFlag|结束标志|默认为0,为1表示结束|
  1078 +
  1079 +指令样例:
  1080 +
  1081 +
  1082 +```json
  1083 +{
  1084 + "fun": "answerVoiceStream",
  1085 + "baseId": 1,
  1086 + "infos": {
  1087 + "keySn": "1479824643",
  1088 + "voiceId": "1",
  1089 + "sampleRate": 16000,
  1090 + "bits": 16,
  1091 + "channel": 1,
  1092 + "endFlag": 0,
  1093 + "dataIndex": 1,
  1094 + "dataLen": 856,
  1095 + "data": "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=="
  1096 + },
  1097 + "packetTag": "1"
  1098 +}
  1099 +```
  1100 +
  1101 +#### 回传分数
  1102 +
  1103 +收到语音后,可对评测分数回传给键盘,详见[自定义信息](\l)
  1104 +
  1105 +#### 停止作答
  1106 +
  1107 +发送:
  1108 +
  1109 +fun: "stopVoice" //停止语音题
  1110 +params:{} //默认空,
  1111 +
  1112 +指令样例:
  1113 +
  1114 +```json
  1115 +{
  1116 + "fun": "stopVoice",
  1117 + "baseId": 0,
  1118 + "packetTag": "1"
  1119 +}
  1120 +```
  1121 +
  1122 +接收:
  1123 +
  1124 +fun: "stopVoice" //停止语音题
  1125 +baseId: "1"//收到的基站ID
  1126 +infos:{"state":"OK"}//返回状态,成功为OK
  1127 +
  1128 +指令样例:
  1129 +
  1130 +```json
  1131 +{
  1132 + "fun": "stopVoice",
  1133 + "baseId": 1,
  1134 + "infos": {
  1135 + "state": "OK"
  1136 + },
  1137 + "packetTag": "1"
  1138 +}
  1139 +```
  1140 +
  1141 +#### 丢包信息
  1142 +
  1143 +语音结束时WSCmdApp会发送该次语言的丢包率。
  1144 +
  1145 +注意:此数据只在语音实时流时有效。
  1146 +
  1147 +接收:
  1148 +
  1149 +fun: "voicePacketLossInfo" //丢包信息
  1150 +baseId:1 //1\~32,连接基站
  1151 +infos:{} //
  1152 +
  1153 +|Json字段|字段含义|赋值及含义|
  1154 +|---|---|---|
  1155 +|keySn|键盘Sn||
  1156 +|voiceId|回话ID|答题时间内,可重复提交语音,每段语音流加一个回话ID,用于区分作答|
  1157 +|recordTime|录音延迟时间||
  1158 +|shouldSendPacketNum|应发数据包数||
  1159 +|actualSendPacketNum|实发数据包数||
  1160 +|lossRate|丢包率|百分比|
  1161 +
  1162 +
  1163 +指令样例:
  1164 +
  1165 +```json
  1166 +{
  1167 + "fun": "voicePacketLossInfo",
  1168 + "baseId": 1,
  1169 + "infos": {
  1170 + "keySn": "1837454011",
  1171 + "voiceId": "1",
  1172 + "recordTime": "42",
  1173 + "shouldSendPacketNum": "56",
  1174 + "actualSendPacketNum": "56",
  1175 + "lossRate": "0"
  1176 + },
  1177 + "packetTag": "1"
  1178 +}
  1179 +```
  1180 +
  1181 +#### 支持设备说明
  1182 +
  1183 +|基站+键盘|支持/不支持|备注|
  1184 +|---|---|---|
  1185 +|B200-5.8G+T2|支持|单次录音最长180秒|
  1186 +
  1187 +### 抢答题
  1188 +#### 开始作答
  1189 +
  1190 +发送:
  1191 +
  1192 +fun: "startRushAnswer" //开始抢答题
  1193 +params:{}
  1194 +
  1195 +|Json字段|字段含义|赋值及含义|
  1196 +|---|---|---|
  1197 +|rushAnswerMode| 抢答模式|0:普通抢答(默认值)|
  1198 +|modifyMode|修改模式|0:不可修改<br>1:可以修改(默认值)|
  1199 +
  1200 +
  1201 +
  1202 +指令样例:
  1203 +```json
  1204 +{
  1205 + "fun": "startRushAnswer",
  1206 + "baseId": 0,
  1207 + "params": {
  1208 + "rushAnswerMode": "0",
  1209 + "modifyMode": "1"
  1210 + },
  1211 + "packetTag": "1"
  1212 +}
  1213 +```
  1214 +
  1215 +接收:
  1216 +
  1217 +fun: "startRushAnswer" //开始抢答题
  1218 +baseId: "1"//接收到指令的基站ID
  1219 +infos:{"state":"OK"}//返回状态,成功为OK
  1220 +
  1221 +指令样例:
  1222 +
  1223 +```json
  1224 +{
  1225 + "fun": "startRushAnswer",
  1226 + "baseId": 1,
  1227 + "infos": {
  1228 + "state": "OK"
  1229 + },
  1230 + "packetTag": "1"
  1231 +}
  1232 +```
  1233 +
  1234 +#### 接收作答
  1235 +
  1236 +接收:
  1237 +
  1238 +fun: "answerRushAnswer" //抢答题作答返回
  1239 +baseId: "1"//接收到指令的基站ID
  1240 +infos: {}
  1241 +
  1242 +|Json字段|字段含义|赋值及含义|
  1243 +|---|---|---|
  1244 +|time|答题时间|单位秒|
  1245 +|keySn|键盘Sn||
  1246 +|keyValue|键值|键盘提交的值|
  1247 +
  1248 +指令样例:
  1249 +
  1250 +```json
  1251 +{
  1252 + "fun": "answerRushAnswer",
  1253 + "baseId": 1,
  1254 + "infos": {
  1255 + "time": "1.42",
  1256 + "keySn": "1479824643",
  1257 + "keyValue": "A"
  1258 + },
  1259 + "packetTag": "1"
  1260 +}
  1261 +```
  1262 +#### 停止作答
  1263 +
  1264 +发送:
  1265 +
  1266 +fun: "stopRushAnswer" //停止抢答题
  1267 +params:{} //默认空
  1268 +
  1269 +指令样例:
  1270 +
  1271 +```json
  1272 +{
  1273 + "fun": "stopRushAnswer",
  1274 + "baseId": 0,
  1275 + "packetTag": "1"
  1276 +}
  1277 +```
  1278 +
  1279 +接收:
  1280 +
  1281 +fun: "stopRushAnswer" //停止抢答题
  1282 +baseId: "1"//收到的基站ID
  1283 +infos:{"state":"OK"}//返回状态,成功为OK
  1284 +
  1285 +指令样例:
  1286 +
  1287 +```json
  1288 +{
  1289 + "fun": "stopRushAnswer",
  1290 + "baseId": 1,
  1291 + "infos": {
  1292 + "state": "OK"
  1293 + },
  1294 + "packetTag": "1"
  1295 +}
  1296 +```
  1297 +
  1298 +#### 支持设备说明
  1299 +
  1300 +|基站+键盘|支持/不支持|备注|
  1301 +|---|---|---|
  1302 +|B100-2.4G+S6|支持||
  1303 +|B200-2.4G+S6|支持||
  1304 +|B200-5.8G+T2|支持||
  1305 +
  1306 +### 数字题
  1307 +
  1308 +#### 开始作答
  1309 +
  1310 +发送:
  1311 +
  1312 +fun: "startNumber" //开始数字题
  1313 +params:{}
  1314 +
  1315 +|Json字段|字段含义|赋值及含义|
  1316 +|---|---|---|
  1317 +|secrecyMode|保密模式|0:不保密(默认值)<br>1:保密|
  1318 +|modifyMode|修改模式|0:不可修改<br>1:可以修改(默认值)|
  1319 +|aswOption|按键模式|0:无规则 (S6最多16位,T2最多14位)<br>1:预留<br>2:预留<br>3:带小数位上下限(T2不支持)|
  1320 +|digits|小数位数|0:没有小数点<br>1:一位小数点<br>2:二位小数点|
  1321 +|numMin|下限|0-655.35|
  1322 +|numMax|上限|0-655.35|
  1323 +|tipTitle|提示标题|16个字节|
  1324 +
  1325 +
  1326 +
  1327 +指令样例:
  1328 +```json
  1329 +{
  1330 + "fun": "startNumber",
  1331 + "baseId": 0,
  1332 + "params": {
  1333 + "secrecyMode": "0",
  1334 + "modifyMode": "1",
  1335 + "aswOption": "0",
  1336 + "digits": "0",
  1337 + "numMin": "0",
  1338 + "numMax": "0"
  1339 + },
  1340 + "packetTag": "1"
  1341 +}
  1342 +```
  1343 +
  1344 +接收:
  1345 +
  1346 +fun: "startNumber" //开始数字题
  1347 +baseId: "1"//接收到指令的基站ID
  1348 +infos:{"state":"OK"}//返回状态,成功为OK
  1349 +
  1350 +指令样例:
  1351 +
  1352 +```json
  1353 +{
  1354 + "fun": "startNumber",
  1355 + "baseId": 1,
  1356 + "infos": {
  1357 + "state": "OK"
  1358 + },
  1359 + "packetTag": "1"
  1360 +}
  1361 +```
  1362 +
  1363 +#### 接收作答
  1364 +
  1365 +接收:
  1366 +
  1367 +fun: "answerNumber" //数字题作答返回
  1368 +baseId: "1"//接收到指令的基站ID
  1369 +infos: {}
  1370 +
  1371 +|Json字段|字段含义|赋值及含义|
  1372 +|---|---|---|
  1373 +|time|答题时间|单位秒|
  1374 +|keySn|键盘Sn||
  1375 +|keyValue|键值|键盘提交的值|
  1376 +
  1377 +
  1378 +指令样例:
  1379 +
  1380 +```json
  1381 +{
  1382 + "fun": "answerNumber",
  1383 + "baseId": 1,
  1384 + "infos": {
  1385 + "time": "2.42",
  1386 + "keySn": "1479824643",
  1387 + "keyValue": "12"
  1388 + },
  1389 + "packetTag": "1"
  1390 +}
  1391 +```
  1392 +
  1393 +#### 停止作答
  1394 +
  1395 +发送:
  1396 +
  1397 +fun: "stopNumber" //停止数字题
  1398 +params:{} //默认空
  1399 +
  1400 +指令样例:
  1401 +
  1402 +```json
  1403 +{
  1404 + "fun": "stopNumber",
  1405 + "baseId": 0,
  1406 + "packetTag": "1"
  1407 +}
  1408 +```
  1409 +
  1410 +接收:
  1411 +
  1412 +fun: "stopNumber" //停止数字题
  1413 +baseId: "1"//收到的基站ID
  1414 +infos:{"state":"OK"}//返回状态,成功为OK
  1415 +
  1416 +指令样例:
  1417 +
  1418 +```json
  1419 +{
  1420 + "fun": "stopNumber",
  1421 + "baseId": 1,
  1422 + "infos": {
  1423 + "state": "OK"
  1424 + },
  1425 + "packetTag": "1"
  1426 +}
  1427 +```
  1428 +
  1429 +#### 支持设备说明
  1430 +
  1431 +|基站+键盘|支持/不支持|备注|
  1432 +|---|---|---|
  1433 +|B100-2.4G+S6|支持|按键模式(0-无规则 最多16位)|
  1434 +|B200-2.4G+S6|支持|按键模式(0-无规则 最多16位)|
  1435 +|B200-5.8G+T2|支持|按键模式(0-无规则 最多14位)<br>按键模式 (3-带小数位上下限)(不支持)|
  1436 +
  1437 +
  1438 +### 键盘测试
  1439 +
  1440 +#### 开始测试
  1441 +
  1442 +发送:
  1443 +
  1444 +fun: "startKeyPadTest" //开始键盘
  1445 +params:{}
  1446 +
  1447 +|Json字段|字段含义|赋值及含义|
  1448 +|---|---|---|
  1449 +|mode|测试模式|1-报告状态<br>2-按键模拟|
  1450 +|keyTime|启动时间|0-60 单位秒 0马上执行 默认为0|
  1451 +|gapTime|间隔时间|0-60 单位秒 0无效 默认为0|
  1452 +
  1453 +
  1454 +指令样例:
  1455 +
  1456 +```json
  1457 +{
  1458 + "fun": "startKeyPadTest",
  1459 + "baseId": 0,
  1460 + "params": {
  1461 + "mode": "1",
  1462 + "keyTime": "0",
  1463 + "gapTime": "0"
  1464 + },
  1465 + "packetTag": "1"
  1466 +}
  1467 +```
  1468 +
  1469 +#### 接收作答
  1470 +
  1471 +接收:
  1472 +
  1473 +fun: "answerKeyPadTest" //按键测试返回
  1474 +baseId: "1"//接收到指令的基站ID
  1475 +infos: {}
  1476 +
  1477 +|Json字段|字段含义|赋值及含义|
  1478 +|---|---|---|
  1479 +|Time|答题时间|单位秒|
  1480 +|keySn|键盘Sn||
  1481 +|hModel|键盘硬件型号||
  1482 +|keyValue|键盘键值||
  1483 +|ver|键盘软件版本||
  1484 +|volt|键盘电池电量|T2百分比值,S6无效|
  1485 +
  1486 +
  1487 +指令样例:
  1488 +
  1489 +```json
  1490 +{
  1491 + "fun": "answerKeyPadTest",
  1492 + "baseId": 1,
  1493 + "infos": {
  1494 + "time": "2.42",
  1495 + "keySn": "1479824643",
  1496 + "hModel": "67",
  1497 + "keyValue": "0",
  1498 + "ver": "1.0.0",
  1499 + "volt": "12"
  1500 + },
  1501 + "packetTag": "1"
  1502 +}
  1503 +```
  1504 +
  1505 +#### 停止作答
  1506 +
  1507 +发送:
  1508 +
  1509 +fun: "stopKeyPadTest" //停止键盘测试
  1510 +params:{} //默认空
  1511 +
  1512 +指令样例:
  1513 +
  1514 +```json
  1515 +{
  1516 + "fun": "stopKeyPadTest",
  1517 + "baseId": 0,
  1518 + "packetTag": "1"
  1519 +}
  1520 +```
  1521 +
  1522 +接收:
  1523 +
  1524 +fun: "stopKeyPadTest" //停止键盘测试
  1525 +baseId: "1"//收到的基站ID
  1526 +infos:{"state":"OK"}//返回状态,成功为OK
  1527 +
  1528 +指令样例:
  1529 +
  1530 +```json
  1531 +{
  1532 + "fun": "stopKeyPadTest",
  1533 + "baseId": 1,
  1534 + "infos": {
  1535 + "state": "OK"
  1536 + },
  1537 + "packetTag": "1"
  1538 +}
  1539 +```
  1540 +
  1541 +#### 支持设备说明
  1542 +
  1543 +|基站+键盘|支持/不支持|备注|
  1544 +|---|---|---|
  1545 +|B100-2.4G+S6|支持|键盘电池电量参数无效|
  1546 +|B200-2.4G+S6|支持|键盘电池电量参数无效|
  1547 +|B200-5.8G+T2|支持||
  1548 +
  1549 +
  1550 +### 多题题型
  1551 +#### 开始测试
  1552 +
  1553 +##### 在线测验题型接口
  1554 +
  1555 +发送:
  1556 +
  1557 +fun: "startKeyPadMultipleQuestionsTest" //开始在线测验题型
  1558 +params:{}
  1559 +
  1560 +| **Json字段** | **字段含义** | **赋值及含义** |
  1561 +| --- | --- | --- |
  1562 +| examNo | 测验编号 | 1-9999 <br>注意:1:新的题开始|
  1563 +| displayMode | 题号显示模式 | 0:不显示开头<br>1:显示“Q”开头<br>2:显示“题”开头|
  1564 +| questions | 题目详情 | 数组[最大200个单元] |
  1565 +
  1566 +题目详情数组参数说明
  1567 +
  1568 +| **Json字段** | **字段含义** | **赋值及含义** |
  1569 +| --- | --- | --- |
  1570 +| questionLevel1Symbol | 一级题号 | 1-200 |
  1571 +| questionLevel2Symbol | 二级题号 | 1-99 [displayMode=0时有效] |
  1572 +| questionLevel3Symbol | 三级题号 | 1-99 [displayMode=0时有效] |
  1573 +| questionType | 题目类型 | 1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  1574 +| option | 选项数目 | 当questionType = 1 有效。<br>当questionType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  1575 +
  1576 +
  1577 +指令样例:一级题型 + 不显示开头
  1578 +样例目的:一级题型不显示开头,总题数4题
  1579 +```json
  1580 +{
  1581 + "fun": "startKeyPadMultipleQuestionsTest",
  1582 + "baseId": 0,
  1583 + "params": {
  1584 + "examNo": 1,
  1585 + "displayMode": 0,
  1586 + "questions": [{
  1587 + "questionLevel1Symbol": "1",
  1588 + "questionType": "1"
  1589 + }, {
  1590 + "questionLevel1Symbol": "2",
  1591 + "questionType": "2",
  1592 + "option": "5"
  1593 + }, {
  1594 + "questionLevel1Symbol": "3",
  1595 + "questionType": "3"
  1596 + }, {
  1597 + "questionLevel1Symbol": "4",
  1598 + "questionType": "4"
  1599 + }]
  1600 + },
  1601 + "packetTag": "59"
  1602 +}
  1603 +```
  1604 +
  1605 +指令样例:二级题型 + 不显示开头
  1606 +样例目的:二级题型不显示开头,总题数4题
  1607 +```json
  1608 +{
  1609 + "fun": "startKeyPadMultipleQuestionsTest",
  1610 + "baseId": 0,
  1611 + "params": {
  1612 + "examNo": 1,
  1613 + "displayMode": 0,
  1614 + "questions": [{
  1615 + "questionLevel1Symbol": "1",
  1616 + "questionLevel2Symbol": "1",
  1617 + "questionType": "1"
  1618 + }, {
  1619 + "questionLevel1Symbol": "1",
  1620 + "questionLevel2Symbol": "2",
  1621 + "questionType": "2",
  1622 + "option": "5"
  1623 + }, {
  1624 + "questionLevel1Symbol": "2",
  1625 + "questionLevel2Symbol": "1",
  1626 + "questionType": "3"
  1627 + }, {
  1628 + "questionLevel1Symbol": "2",
  1629 + "questionLevel2Symbol": "1",
  1630 + "questionType": "4"
  1631 + }]
  1632 + },
  1633 + "packetTag": "59"
  1634 +}
  1635 +```
  1636 +
  1637 +指令样例:三级题型 + 不显示开头
  1638 +样例目的:三级题型不显示开头,总题数4题
  1639 +```json
  1640 +{
  1641 + "fun": "startKeyPadMultipleQuestionsTest",
  1642 + "baseId": 0,
  1643 + "params": {
  1644 + "examNo": 1,
  1645 + "displayMode": 0,
  1646 + "questions": [{
  1647 + "questionLevel1Symbol": "1",
  1648 + "questionLevel2Symbol": "1",
  1649 + "questionLevel3Symbol": "1",
  1650 + "questionType": "1"
  1651 + }, {
  1652 + "questionLevel1Symbol": "1",
  1653 + "questionLevel2Symbol": "1",
  1654 + "questionLevel3Symbol": "2",
  1655 + "questionType": "2",
  1656 + "option": "5"
  1657 + }, {
  1658 + "questionLevel1Symbol": "1",
  1659 + "questionLevel2Symbol": "1",
  1660 + "questionLevel3Symbol": "3",
  1661 + "questionType": "3"
  1662 + }, {
  1663 + "questionLevel1Symbol": "1",
  1664 + "questionLevel2Symbol": "1",
  1665 + "questionLevel3Symbol": "4",
  1666 + "questionType": "4"
  1667 + }]
  1668 + },
  1669 + "packetTag": "59"
  1670 +}
  1671 +```
  1672 +
  1673 +指令样例:一级题型 + 显示“Q”开头
  1674 +样例目的:一级题型显示“Q”开头,总题数4题
  1675 +```json
  1676 +{
  1677 + "fun": "startKeyPadMultipleQuestionsTest",
  1678 + "baseId": 0,
  1679 + "params": {
  1680 + "examNo": 1,
  1681 + "displayMode": 1,
  1682 + "questions": [{
  1683 + "questionLevel1Symbol": "1",
  1684 + "questionType": "1"
  1685 + }, {
  1686 + "questionLevel1Symbol": "2",
  1687 + "questionType": "2",
  1688 + "option": "5"
  1689 + }, {
  1690 + "questionLevel1Symbol": "3",
  1691 + "questionType": "3"
  1692 + }, {
  1693 + "questionLevel1Symbol": "4",
  1694 + "questionType": "4"
  1695 + }]
  1696 + },
  1697 + "packetTag": "59"
  1698 +}
  1699 +```
  1700 +指令样例:一级题型 + 显示“题”开头
  1701 +样例目的:一级题型显示“题”开头,总题数4题
  1702 +```json
  1703 +{
  1704 + "fun": "startKeyPadMultipleQuestionsTest",
  1705 + "baseId": 0,
  1706 + "params": {
  1707 + "examNo": 1,
  1708 + "displayMode": 2,
  1709 + "questions": [{
  1710 + "questionLevel1Symbol": "1",
  1711 + "questionType": "1"
  1712 + }, {
  1713 + "questionLevel1Symbol": "2",
  1714 + "questionType": "2",
  1715 + "option": "5"
  1716 + }, {
  1717 + "questionLevel1Symbol": "3",
  1718 + "questionType": "3"
  1719 + }, {
  1720 + "questionLevel1Symbol": "4",
  1721 + "questionType": "4"
  1722 + }]
  1723 + },
  1724 + "packetTag": "59"
  1725 +}
  1726 +```
  1727 +接收:
  1728 +
  1729 +fun: "keyPadMultipleQuestionsTest" //
  1730 +baseId: "1"//收到的基站ID
  1731 +infos:{"state":"OK"}//返回状态,成功为OK
  1732 +
  1733 +指令样例:
  1734 +
  1735 +```json
  1736 +{
  1737 + "fun": "keyPadMultipleQuestionsTest",
  1738 + "baseId": 1,
  1739 + "infos": {
  1740 + "state": "OK"
  1741 + },
  1742 + "packetTag": "59"
  1743 +}
  1744 +```
  1745 +
  1746 +##### 多科作业题型接口
  1747 +
  1748 +发送:
  1749 +
  1750 +fun: "startKeyPadMultipleQuestionsCourse" //开始多科作业题型
  1751 +params:{}
  1752 +
  1753 +| **Json字段** | **字段含义** | **赋值及含义** |
  1754 +| --- | --- | --- |
  1755 +| examNo | 测验编号 | 1-9999 <br>注意:1:新的题开始|
  1756 +| displayMode | 题号显示模式 | 0:不显示开头<br>1:显示“Q”开头<br>2:显示“题”开头|
  1757 +| questions | 题目详情 | 数组[最大200个单元] |
  1758 +
  1759 +题目详情数组参数说明
  1760 +
  1761 +| **Json字段** | **字段含义** | **赋值及含义** |
  1762 +| --- | --- | --- |
  1763 +| questionLevel1Symbol | 一级题号 | 1-200 |
  1764 +| questionLevel2Symbol | 二级题号 | 1-99 [displayMode=0时有效] |
  1765 +| course | 科目 | 1:语文<br>2:数学<br>3:英语<br>4:政治<br>5:历史<br>6:地理<br>7:生物<br>8:物理<br>9:化学 |
  1766 +| questionType | 题目类型 | 1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  1767 +| option | 选项数目 | 当questionType = 1 有效。<br>当questionType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  1768 +
  1769 +指令样例:带科目 + 二级题型 + 不显示开头
  1770 +样例目的:语文2题+数学2题+英语2题
  1771 +```json
  1772 +{
  1773 + "fun": "startKeyPadMultipleQuestionsCourse",
  1774 + "baseId": 0,
  1775 + "params": {
  1776 + "examNo": 1,
  1777 + "displayMode": 0,
  1778 + "questions": [{
  1779 + "questionLevel1Symbol": "1",
  1780 + "questionLevel2Symbol": "1",
  1781 + "course": "1",
  1782 + "questionType": "1"
  1783 + }, {
  1784 + "questionLevel1Symbol": "1",
  1785 + "questionLevel2Symbol": "2",
  1786 + "course": "1",
  1787 + "questionType": "2",
  1788 + "option": "5"
  1789 + }, {
  1790 + "questionLevel1Symbol": "1",
  1791 + "questionLevel2Symbol": "1",
  1792 + "course": "2",
  1793 + "questionType": "3"
  1794 + }, {
  1795 + "questionLevel1Symbol": "1",
  1796 + "questionLevel2Symbol": "2",
  1797 + "course": "2",
  1798 + "questionType": "4"
  1799 + }, {
  1800 + "questionLevel1Symbol": "1",
  1801 + "questionLevel2Symbol": "1",
  1802 + "course": "3",
  1803 + "questionType": "3"
  1804 + }, {
  1805 + "questionLevel1Symbol": "1",
  1806 + "questionLevel2Symbol": "2",
  1807 + "course": "3",
  1808 + "questionType": "4"
  1809 + }]
  1810 + },
  1811 + "packetTag": "59"
  1812 +}
  1813 +```
  1814 +
  1815 +指令样例:带科目 + 一级题型 + 不显示开头
  1816 +样例目的:语文4题
  1817 +```json
  1818 +{
  1819 + "fun": "startKeyPadMultipleQuestionsCourse",
  1820 + "baseId": 0,
  1821 + "params": {
  1822 + "examNo": 1,
  1823 + "displayMode": 0,
  1824 + "questions": [{
  1825 + "questionLevel1Symbol": "1",
  1826 + "course": "1",
  1827 + "questionType": "1"
  1828 + }, {
  1829 + "questionLevel1Symbol": "2",
  1830 + "course": "1",
  1831 + "questionType": "2",
  1832 + "option": "5"
  1833 + }, {
  1834 + "questionLevel1Symbol": "3",
  1835 + "course": "1",
  1836 + "questionType": "3"
  1837 + }, {
  1838 + "questionLevel1Symbol": "4",
  1839 + "course": "1",
  1840 + "questionType": "4"
  1841 + }]
  1842 + },
  1843 + "packetTag": "59"
  1844 +}
  1845 +```
  1846 +
  1847 +指令样例:带科目 + 一级题型 + 显示“Q”开头
  1848 +样例目的:语文4题
  1849 +```json
  1850 +{
  1851 + "fun": "startKeyPadMultipleQuestionsCourse",
  1852 + "baseId": 0,
  1853 + "params": {
  1854 + "examNo": 1,
  1855 + "displayMode": 1,
  1856 + "questions": [{
  1857 + "questionLevel1Symbol": "1",
  1858 + "course": "1",
  1859 + "questionType": "1"
  1860 + }, {
  1861 + "questionLevel1Symbol": "2",
  1862 + "course": "1",
  1863 + "questionType": "2",
  1864 + "option": "5"
  1865 + }, {
  1866 + "questionLevel1Symbol": "3",
  1867 + "course": "1",
  1868 + "questionType": "3"
  1869 + }, {
  1870 + "questionLevel1Symbol": "4",
  1871 + "course": "1",
  1872 + "questionType": "4"
  1873 + }]
  1874 + },
  1875 + "packetTag": "59"
  1876 +}
  1877 +```
  1878 +
  1879 +指令样例:带科目 + 一级题型 + 显示“题”开头
  1880 +样例目的:语文4题
  1881 +```json
  1882 +{
  1883 + "fun": "startKeyPadMultipleQuestionsCourse",
  1884 + "baseId": 0,
  1885 + "params": {
  1886 + "examNo": 1,
  1887 + "displayMode": 2,
  1888 + "questions": [{
  1889 + "questionLevel1Symbol": "1",
  1890 + "course": "1",
  1891 + "questionType": "1"
  1892 + }, {
  1893 + "questionLevel1Symbol": "2",
  1894 + "course": "1",
  1895 + "questionType": "2",
  1896 + "option": "5"
  1897 + }, {
  1898 + "questionLevel1Symbol": "3",
  1899 + "course": "1",
  1900 + "questionType": "3"
  1901 + }, {
  1902 + "questionLevel1Symbol": "4",
  1903 + "course": "1",
  1904 + "questionType": "4"
  1905 + }]
  1906 + },
  1907 + "packetTag": "59"
  1908 +}
  1909 +```
  1910 +
  1911 +接收:
  1912 +
  1913 +fun: "keyPadMultipleQuestionsCourse" //
  1914 +baseId: "1"//收到的基站ID
  1915 +infos:{"state":"OK"}//返回状态,成功为OK
  1916 +
  1917 +指令样例:
  1918 +
  1919 +```json
  1920 +{
  1921 + "fun": "keyPadMultipleQuestionsCourse",
  1922 + "baseId": 1,
  1923 + "infos": {
  1924 + "state": "OK"
  1925 + },
  1926 + "packetTag": "59"
  1927 +}
  1928 +```
  1929 +
  1930 +##### 主观题分数输入接口
  1931 +发送:
  1932 +
  1933 +fun: "startKeyPadMultipleQuestionsSubjective" //开始主观题分数输入
  1934 +params:{}
  1935 +
  1936 +| **Json字段** | **字段含义** | **赋值及含义** |
  1937 +| --- | --- | --- |
  1938 +| examNo | 测验编号 | 1-9999 <br>注意:1:新的题开始 |
  1939 +| questions | 题目详情 | 数组[最大200个单元] |
  1940 +
  1941 +题目详情数组参数说明
  1942 +
  1943 +| **Json字段** | **字段含义** | **赋值及含义** |
  1944 +| --- | --- | --- |
  1945 +| questionLevel1Symbol | 一级题号 | 1-200 |
  1946 +| toplimit | 数字上限 | 1-600 |
  1947 +| decimal | 小数位数 | 0:无效小数<br>1:一位小数<br>2:二位小数 <br>此项缺省时默认是0。|
  1948 +
  1949 +```json
  1950 +{
  1951 + "fun": "startKeyPadMultipleQuestionsSubjective",
  1952 + "baseId": 0,
  1953 + "params": {
  1954 + "examNo": 1,
  1955 + "questions": [{
  1956 + "questionLevel1Symbol": "1",
  1957 + "toplimit": "100",
  1958 + "decimal": "0"
  1959 + }, {
  1960 + "questionLevel1Symbol": "2",
  1961 + "toplimit": "100",
  1962 + "decimal": "1"
  1963 + }, {
  1964 + "questionLevel1Symbol": "3",
  1965 + "toplimit": "100",
  1966 + "decimal": "2"
  1967 + }, {
  1968 + "questionLevel1Symbol": "4",
  1969 + "toplimit": "100"
  1970 + }]
  1971 + },
  1972 + "packetTag": "59"
  1973 +}
  1974 +```
  1975 +
  1976 +接收:
  1977 +
  1978 +fun: "KeyPadMultipleQuestionsSubjective" //
  1979 +baseId: "1"//收到的基站ID
  1980 +infos:{"state":"OK"}//返回状态,成功为OK
  1981 +
  1982 +指令样例:
  1983 +
  1984 +```json
  1985 +{
  1986 + "fun": "KeyPadMultipleQuestionsSubjective",
  1987 + "baseId": 1,
  1988 + "infos": {
  1989 + "state": "OK"
  1990 + },
  1991 + "packetTag": "59"
  1992 +}
  1993 +```
  1994 +
  1995 +
  1996 +
  1997 +#### 接收作答
  1998 +
  1999 +接收:
  2000 +
  2001 +fun: "answerKeyPadMultipleQuestions" //多题题型返回
  2002 +
  2003 +baseId: "1" //接收到指令的基站ID
  2004 +
  2005 +infos: {}
  2006 +
  2007 +| **Json字段** | **字段含义** | **赋值及含义** |
  2008 +| --- | --- | --- |
  2009 +| Time | 答题时间 | 单位秒,20分钟内有效 |
  2010 +| keySn | 键盘Sn | |
  2011 +| Seq | 题序号 | |
  2012 +| keyValue | 键值 |键盘提交的值 |
  2013 +
  2014 +
  2015 +
  2016 +指令样例:
  2017 +```json
  2018 +{
  2019 + "fun": "answerKeyPadMultipleQuestions",
  2020 + "baseId": 1,
  2021 + "infos": {
  2022 + "time": "5.42",
  2023 + "keySn": "1479824643",
  2024 + "seq": "1",
  2025 + "keyValue": "12"
  2026 + },
  2027 +
  2028 + "packetTag": "1"
  2029 +}
  2030 +```
  2031 +
  2032 +#### 退出作答
  2033 +
  2034 +发送:
  2035 +
  2036 +fun: "stopKeyPadMultipleQuestions" //停止多题题型
  2037 +
  2038 +params:{} //默认空
  2039 +
  2040 +指令样例:
  2041 +
  2042 +```json
  2043 +{
  2044 + "fun": "stopKeyPadMultipleQuestions",
  2045 +
  2046 + "baseId": 0,
  2047 + "packetTag": "1"
  2048 +}
  2049 +```
  2050 +
  2051 +接收:
  2052 +
  2053 +fun: "stopKeyPadMultipleQuestions" //停止键盘测试
  2054 +
  2055 +baseId: "1"//收到的基站ID
  2056 +
  2057 +infos:{"state":"OK"}//返回状态,成功为OK
  2058 +
  2059 +指令样例:
  2060 +
  2061 +```json
  2062 +{
  2063 + "fun": "stopKeyPadMultipleQuestions",
  2064 + "baseId": 1,
  2065 + "infos": {
  2066 + "state": "OK"
  2067 + },
  2068 + "packetTag": "1"
  2069 +}
  2070 +```
  2071 +
  2072 +#### 暂停作答
  2073 +
  2074 +发送:
  2075 +
  2076 +fun: "pauseKeyPadMultipleQuestions" //暂停多提题型
  2077 +
  2078 +baseId: "1"//收到的基站ID
  2079 +
  2080 +params:{} //默认空
  2081 +
  2082 +指令样例:
  2083 +
  2084 +```json
  2085 +{
  2086 + "fun": "pauseKeyPadMultipleQuestions",
  2087 +
  2088 + "baseId": 0,
  2089 + "packetTag": "1"
  2090 +}
  2091 +```
  2092 +
  2093 +
  2094 +接收:
  2095 +
  2096 +fun: "pauseKeyPadMultipleQuestions" //暂停键盘测试
  2097 +
  2098 +baseId: "1"//收到的基站ID
  2099 +
  2100 +infos:{"state":"OK"}//返回状态,成功为OK
  2101 +
  2102 +指令样例:
  2103 +
  2104 +```json
  2105 +{
  2106 + "fun": "pauseKeyPadMultipleQuestions",
  2107 + "baseId": 1,
  2108 + "infos": {
  2109 + "state": "OK"
  2110 + },
  2111 + "packetTag": "1"
  2112 +}
  2113 +```
  2114 +
  2115 +#### 继续测试
  2116 +
  2117 +
  2118 +##### 在线测验题型接口
  2119 +
  2120 +发送:
  2121 +
  2122 +fun: "continueKeyPadMultipleQuestionsTest" //继续在线测验题型
  2123 +params:{}
  2124 +
  2125 +| **Json字段** | **字段含义** | **赋值及含义** |
  2126 +| --- | --- | --- |
  2127 +| examNo | 测验编号 | 1-9999 |
  2128 +| displayMode | 题号显示模式 | 0:不显示开头<br>1:显示“Q”开头<br>2:显示“题”开头|
  2129 +| questions | 题目详情 | 数组[最大200个单元] |
  2130 +
  2131 +题目详情数组参数说明
  2132 +
  2133 +| **Json字段** | **字段含义** | **赋值及含义** |
  2134 +| --- | --- | --- |
  2135 +| questionLevel1Symbol | 一级题号 | 1-200 |
  2136 +| questionLevel2Symbol | 二级题号 | 1-99 [displayMode=0时有效] |
  2137 +| questionLevel3Symbol | 三级题号 | 1-99 [displayMode=0时有效] |
  2138 +| questionType | 题目类型 | 1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  2139 +| option | 选项数目 | 当questionType = 1 有效。<br>当questionType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  2140 +
  2141 +
  2142 +指令样例:一级题型 + 不显示开头
  2143 +```json
  2144 +{
  2145 + "fun": "continueKeyPadMultipleQuestionsTest",
  2146 + "baseId": 0,
  2147 + "params": {
  2148 + "examNo": 1,
  2149 + "displayMode": 0,
  2150 + "questions": [{
  2151 + "questionLevel1Symbol": "1",
  2152 + "questionType": "1"
  2153 + }, {
  2154 + "questionLevel1Symbol": "2",
  2155 + "questionType": "2",
  2156 + "option": "5"
  2157 + }, {
  2158 + "questionLevel1Symbol": "3",
  2159 + "questionType": "3"
  2160 + }, {
  2161 + "questionLevel1Symbol": "4",
  2162 + "questionType": "4"
  2163 + }]
  2164 + },
  2165 + "packetTag": "59"
  2166 +}
  2167 +```
  2168 +
  2169 +指令样例:二级题型 + 不显示开头
  2170 +```json
  2171 +{
  2172 + "fun": "continueKeyPadMultipleQuestionsTest",
  2173 + "baseId": 0,
  2174 + "params": {
  2175 + "examNo": 1,
  2176 + "displayMode": 0,
  2177 + "questions": [{
  2178 + "questionLevel1Symbol": "1",
  2179 + "questionLevel2Symbol": "1",
  2180 + "questionType": "1"
  2181 + }, {
  2182 + "questionLevel1Symbol": "1",
  2183 + "questionLevel2Symbol": "2",
  2184 + "questionType": "2",
  2185 + "option": "5"
  2186 + }, {
  2187 + "questionLevel1Symbol": "1",
  2188 + "questionLevel2Symbol": "3",
  2189 + "questionType": "3"
  2190 + }, {
  2191 + "questionLevel1Symbol": "1",
  2192 + "questionLevel2Symbol": "4",
  2193 + "questionType": "4"
  2194 + }]
  2195 + },
  2196 + "packetTag": "59"
  2197 +}
  2198 +```
  2199 +
  2200 +指令样例:三级题型 + 不显示开头
  2201 +```json
  2202 +{
  2203 + "fun": "continueKeyPadMultipleQuestionsTest",
  2204 + "baseId": 0,
  2205 + "params": {
  2206 + "examNo": 1,
  2207 + "displayMode": 0,
  2208 + "questions": [{
  2209 + "questionLevel1Symbol": "1",
  2210 + "questionLevel2Symbol": "1",
  2211 + "questionLevel3Symbol": "1",
  2212 + "questionType": "1"
  2213 + }, {
  2214 + "questionLevel1Symbol": "1",
  2215 + "questionLevel2Symbol": "1",
  2216 + "questionLevel3Symbol": "2",
  2217 + "questionType": "2",
  2218 + "option": "5"
  2219 + }, {
  2220 + "questionLevel1Symbol": "1",
  2221 + "questionLevel2Symbol": "1",
  2222 + "questionLevel3Symbol": "3",
  2223 + "questionType": "3"
  2224 + }, {
  2225 + "questionLevel1Symbol": "1",
  2226 + "questionLevel2Symbol": "1",
  2227 + "questionLevel3Symbol": "4",
  2228 + "questionType": "4"
  2229 + }]
  2230 + },
  2231 + "packetTag": "59"
  2232 +}
  2233 +```
  2234 +
  2235 +指令样例:一级题型 + 显示“Q”开头
  2236 +```json
  2237 +{
  2238 + "fun": "continueKeyPadMultipleQuestionsTest",
  2239 + "baseId": 0,
  2240 + "params": {
  2241 + "examNo": 1,
  2242 + "displayMode": 1,
  2243 + "questions": [{
  2244 + "questionLevel1Symbol": "1",
  2245 + "questionType": "1"
  2246 + }, {
  2247 + "questionLevel1Symbol": "2",
  2248 + "questionType": "2",
  2249 + "option": "5"
  2250 + }, {
  2251 + "questionLevel1Symbol": "3",
  2252 + "questionType": "3"
  2253 + }, {
  2254 + "questionLevel1Symbol": "4",
  2255 + "questionType": "4"
  2256 + }]
  2257 + },
  2258 + "packetTag": "59"
  2259 +}
  2260 +```
  2261 +
  2262 +指令样例:一级题型 + 显示“题”开头
  2263 +```json
  2264 +{
  2265 + "fun": "continueKeyPadMultipleQuestionsTest",
  2266 + "baseId": 0,
  2267 + "params": {
  2268 + "examNo": 1,
  2269 + "displayMode": 2,
  2270 + "questions": [{
  2271 + "questionLevel1Symbol": "1",
  2272 + "questionType": "1"
  2273 + }, {
  2274 + "questionLevel1Symbol": "2",
  2275 + "questionType": "2",
  2276 + "option": "5"
  2277 + }, {
  2278 + "questionLevel1Symbol": "3",
  2279 + "questionType": "3"
  2280 + }, {
  2281 + "questionLevel1Symbol": "4",
  2282 + "questionType": "4"
  2283 + }]
  2284 + },
  2285 + "packetTag": "59"
  2286 +}
  2287 +```
  2288 +接收:
  2289 +
  2290 +fun: "keyPadMultipleQuestionsTest" //
  2291 +baseId: "1"//收到的基站ID
  2292 +infos:{"state":"OK"}//返回状态,成功为OK
  2293 +
  2294 +指令样例:
  2295 +
  2296 +```json
  2297 +{
  2298 + "fun": "keyPadMultipleQuestionsTest",
  2299 + "baseId": 1,
  2300 + "infos": {
  2301 + "state": "OK"
  2302 + },
  2303 + "packetTag": "59"
  2304 +}
  2305 +```
  2306 +
  2307 +##### 多科作业题型接口
  2308 +
  2309 +发送:
  2310 +
  2311 +fun: "continueKeyPadMultipleQuestionsCourse" //继续多科作业题型
  2312 +params:{}
  2313 +
  2314 +| **Json字段** | **字段含义** | **赋值及含义** |
  2315 +| --- | --- | --- |
  2316 +| examNo | 测验编号 | 1-9999 |
  2317 +| displayMode | 题号显示模式 | 0:不显示开头<br>1:显示“Q”开头<br>2:显示“题”开头|
  2318 +| questions | 题目详情 | 数组[最大200个单元] |
  2319 +
  2320 +题目详情数组参数说明
  2321 +
  2322 +| **Json字段** | **字段含义** | **赋值及含义** |
  2323 +| --- | --- | --- |
  2324 +| questionLevel1Symbol | 一级题号 | 1-200 |
  2325 +| questionLevel2Symbol | 二级题号 | 1-99 [displayMode=0时有效] |
  2326 +| course | 科目 | 1:语文<br>2:数学<br>3:英语<br>4:政治<br>5:历史<br>6:地理<br>7:生物<br>8:物理<br>9:化学 |
  2327 +| questionType | 题目类型 | 1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  2328 +| option | 选项数目 | 当questionType = 1 有效。<br>当questionType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
  2329 +
  2330 +指令样例:带科目 + 二级题型 + 不显示开头
  2331 +样例目的:语文2题+数学2题+英语2题
  2332 +```json
  2333 +{
  2334 + "fun": "continueKeyPadMultipleQuestionsCourse",
  2335 + "baseId": 0,
  2336 + "params": {
  2337 + "examNo": 1,
  2338 + "displayMode": 0,
  2339 + "questions": [{
  2340 + "questionLevel1Symbol": "1",
  2341 + "questionLevel2Symbol": "1",
  2342 + "course": "1",
  2343 + "questionType": "1"
  2344 + }, {
  2345 + "questionLevel1Symbol": "1",
  2346 + "questionLevel2Symbol": "2",
  2347 + "course": "1",
  2348 + "questionType": "2",
  2349 + "option": "5"
  2350 + }, {
  2351 + "questionLevel1Symbol": "1",
  2352 + "questionLevel2Symbol": "1",
  2353 + "course": "2",
  2354 + "questionType": "3"
  2355 + }, {
  2356 + "questionLevel1Symbol": "1",
  2357 + "questionLevel2Symbol": "2",
  2358 + "course": "2",
  2359 + "questionType": "4"
  2360 + }, {
  2361 + "questionLevel1Symbol": "1",
  2362 + "questionLevel2Symbol": "1",
  2363 + "course": "3",
  2364 + "questionType": "3"
  2365 + }, {
  2366 + "questionLevel1Symbol": "1",
  2367 + "questionLevel2Symbol": "2",
  2368 + "course": "3",
  2369 + "questionType": "4"
  2370 + }]
  2371 + },
  2372 + "packetTag": "59"
  2373 +}
  2374 +```
  2375 +
  2376 +
  2377 +
  2378 +指令样例:带科目 + 一级题型 + 不显示开头
  2379 +样例目的:语文4题
  2380 +```json
  2381 +{
  2382 + "fun": "continueKeyPadMultipleQuestionsCourse",
  2383 + "baseId": 0,
  2384 + "params": {
  2385 + "examNo": 1,
  2386 + "displayMode": 0,
  2387 + "questions": [{
  2388 + "questionLevel1Symbol": "1",
  2389 + "course": "1",
  2390 + "questionType": "1"
  2391 + }, {
  2392 + "questionLevel1Symbol": "2",
  2393 + "course": "1",
  2394 + "questionType": "2",
  2395 + "option": "5"
  2396 + }, {
  2397 + "questionLevel1Symbol": "3",
  2398 + "course": "1",
  2399 + "questionType": "3"
  2400 + }, {
  2401 + "questionLevel1Symbol": "4",
  2402 + "course": "1",
  2403 + "questionType": "4"
  2404 + }]
  2405 + },
  2406 + "packetTag": "59"
  2407 +}
  2408 +```
  2409 +
  2410 +指令样例:带科目 + 一级题型 + 显示“Q”开头
  2411 +样例目的:语文4题
  2412 +```json
  2413 +{
  2414 + "fun": "continueKeyPadMultipleQuestionsCourse",
  2415 + "baseId": 0,
  2416 + "params": {
  2417 + "examNo": 1,
  2418 + "displayMode": 1,
  2419 + "questions": [{
  2420 + "questionLevel1Symbol": "1",
  2421 + "course": "1",
  2422 + "questionType": "1"
  2423 + }, {
  2424 + "questionLevel1Symbol": "2",
  2425 + "course": "1",
  2426 + "questionType": "2",
  2427 + "option": "5"
  2428 + }, {
  2429 + "questionLevel1Symbol": "3",
  2430 + "course": "1",
  2431 + "questionType": "3"
  2432 + }, {
  2433 + "questionLevel1Symbol": "4",
  2434 + "course": "1",
  2435 + "questionType": "4"
  2436 + }]
  2437 + },
  2438 + "packetTag": "59"
  2439 +}
  2440 +```
  2441 +
  2442 +指令样例:带科目 + 一级题型 + 显示“题”开头
  2443 +样例目的:语文4题
  2444 +```json
  2445 +{
  2446 + "fun": "continueKeyPadMultipleQuestionsCourse",
  2447 + "baseId": 0,
  2448 + "params": {
  2449 + "examNo": 1,
  2450 + "displayMode": 2,
  2451 + "questions": [{
  2452 + "questionLevel1Symbol": "1",
  2453 + "course": "1",
  2454 + "questionType": "1"
  2455 + }, {
  2456 + "questionLevel1Symbol": "2",
  2457 + "course": "1",
  2458 + "questionType": "2",
  2459 + "option": "5"
  2460 + }, {
  2461 + "questionLevel1Symbol": "3",
  2462 + "course": "1",
  2463 + "questionType": "3"
  2464 + }, {
  2465 + "questionLevel1Symbol": "4",
  2466 + "course": "1",
  2467 + "questionType": "4"
  2468 + }]
  2469 + },
  2470 + "packetTag": "59"
  2471 +}
  2472 +```
  2473 +
  2474 +接收:
  2475 +
  2476 +fun: "keyPadMultipleQuestionsCourse" //
  2477 +baseId: "1"//收到的基站ID
  2478 +infos:{"state":"OK"}//返回状态,成功为OK
  2479 +
  2480 +指令样例:
  2481 +
  2482 +```json
  2483 +{
  2484 + "fun": "keyPadMultipleQuestionsCourse",
  2485 + "baseId": 1,
  2486 + "infos": {
  2487 + "state": "OK"
  2488 + },
  2489 + "packetTag": "59"
  2490 +}
  2491 +```
  2492 +
  2493 +##### 主观题分数输入接口
  2494 +发送:
  2495 +
  2496 +fun: "continueKeyPadMultipleQuestionsSubjective" //继续主观题分数输入
  2497 +params:{}
  2498 +
  2499 +| **Json字段** | **字段含义** | **赋值及含义** |
  2500 +| --- | --- | --- |
  2501 +| examNo | 测验编号 | 1-9999 |
  2502 +| questions | 题目详情 | 数组[最大200个单元] |
  2503 +
  2504 +题目详情数组参数说明
  2505 +
  2506 +| **Json字段** | **字段含义** | **赋值及含义** |
  2507 +| --- | --- | --- |
  2508 +| questionLevel1Symbol | 一级题号 | 1-200 |
  2509 +| toplimit | 数字上限 | 1-600 |
  2510 +| decimal | 小数位数 | 0:无效小数<br>1:一位小数<br>2:二位小数 <br>此项缺省时默认是0。|
  2511 +
  2512 +```json
  2513 +{
  2514 + "fun": "continueKeyPadMultipleQuestionsSubjective",
  2515 + "baseId": 0,
  2516 + "params": {
  2517 + "examNo": 1,
  2518 + "questions": [{
  2519 + "questionLevel1Symbol": "1",
  2520 + "toplimit": "100",
  2521 + "decimal": "0"
  2522 + }, {
  2523 + "questionLevel1Symbol": "2",
  2524 + "toplimit": "100",
  2525 + "decimal": "1"
  2526 + }, {
  2527 + "questionLevel1Symbol": "3",
  2528 + "toplimit": "100",
  2529 + "decimal": "2"
  2530 + }, {
  2531 + "questionLevel1Symbol": "4",
  2532 + "toplimit": "100"
  2533 + }]
  2534 + },
  2535 + "packetTag": "59"
  2536 +}
  2537 +```
  2538 +
  2539 +接收:
  2540 +
  2541 +fun: "keyPadMultipleQuestionsSubjective" //
  2542 +baseId: "1"//收到的基站ID
  2543 +infos:{"state":"OK"}//返回状态,成功为OK
  2544 +
  2545 +指令样例:
  2546 +
  2547 +```json
  2548 +{
  2549 + "fun": "keyPadMultipleQuestionsSubjective",
  2550 + "baseId": 1,
  2551 + "infos": {
  2552 + "state": "OK"
  2553 + },
  2554 + "packetTag": "59"
  2555 +}
  2556 +```
  2557 +
  2558 +#### 指定键盘转移作答内容
  2559 +注意:此接口一次只能对一只键盘进行操作。
  2560 +
  2561 +发送:
  2562 +
  2563 +fun: "copyKeyPadMultipleQuestions" //转移键盘作答内容
  2564 +params:{} //
  2565 +
  2566 +| **Json字段** | **字段含义** | **赋值及含义** |
  2567 +| --- | --- | --- |
  2568 +| baseId | 键盘所连基站ID | 1-32 |
  2569 +| keySn | 目标键盘SN | |
  2570 +| id | 题目编号 | 1-200 |
  2571 +| questionType | 题目类型 | 1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  2572 +| value | 题目答案 |字符串16字节 |
  2573 +
  2574 +
  2575 +指令样例:
  2576 +
  2577 +```json
  2578 +{
  2579 + "fun": "copyKeyPadMultipleQuestions",
  2580 + "baseId": 1,
  2581 + "params": {
  2582 + "keySn": "0007831203",
  2583 + "questions": [{
  2584 + "id": "1",
  2585 + "questionType": "1",
  2586 + "value": "A"
  2587 + }, {
  2588 + "id": "2",
  2589 + "questionType": "2",
  2590 + "value": "AB"
  2591 + }]
  2592 + },
  2593 + "packetTag": "19"
  2594 +}
  2595 +```
  2596 +
  2597 +接收:
  2598 +
  2599 +fun: "copyKeyPadMultipleQuestions" //
  2600 +baseId: "1"//收到的基站ID
  2601 +infos:{"state":"OK"}//返回状态,成功为OK
  2602 +
  2603 +指令样例:
  2604 +
  2605 +```json
  2606 +{
  2607 + "fun": "copyKeyPadMultipleQuestions",
  2608 + "baseId": 1,
  2609 + "infos": {
  2610 + "state": "OK"
  2611 + },
  2612 + "packetTag": "1"
  2613 +}
  2614 +```
  2615 +
  2616 +#### 向键盘广播正确答案
  2617 +
  2618 +发送:
  2619 +
  2620 +fun: "okKeyPadMultipleQuestions" //向键盘广播正确答案
  2621 +baseId: "1"//收到的基站ID
  2622 +params:{} //默认空
  2623 +
  2624 +| **Json字段** | **字段含义** | **赋值及含义** |
  2625 +| --- | --- | --- |
  2626 +| baseId | 基站ID | 1-32 |
  2627 +| id | 题目编号 | 1-200 |
  2628 +| questionType | 题目类型 | 1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
  2629 +| value | 题目答案 |字符串16字节 |
  2630 +
  2631 +
  2632 +指令样例:
  2633 +```json
  2634 +{
  2635 + "fun": "okKeyPadMultipleQuestions",
  2636 + "baseId": 0,
  2637 + "params": [{
  2638 + "id": "1",
  2639 + "questionType": "1",
  2640 + "value": "A"
  2641 + }, {
  2642 + "id": "2",
  2643 + "questionType": "2",
  2644 + "value": "AB"
  2645 + }],
  2646 + "packetTag": "20"
  2647 +}
  2648 +
  2649 +```
  2650 +
  2651 +接收:
  2652 +
  2653 +fun: "okKeyPadMultipleQuestions" //
  2654 +baseId: "1"//收到的基站ID
  2655 +infos:{"state":"OK"}//返回状态,成功为OK
  2656 +
  2657 +指令样例:
  2658 +```json
  2659 +{
  2660 + "fun": "okKeyPadMultipleQuestions",
  2661 + "baseId": 1,
  2662 + "infos": {
  2663 + "state": "OK"
  2664 + },
  2665 + "packetTag": "1"
  2666 +}
  2667 +```
  2668 +
  2669 +#### 支持设备说明
  2670 +
  2671 +| **基站+键盘** | **支持** | **备注** |
  2672 +| --- | --- | --- |
  2673 +| B100-2.4G+S6 | 支持 | |
  2674 +| B200-2.4G+S6 | 支持 | |
  2675 +
  2676 +
  2677 +### 填空题
  2678 +
  2679 +#### 开始作答
  2680 +
  2681 +发送:
  2682 +
  2683 +fun: "startTextAnswer" //开始填空题
  2684 +params:{}
  2685 +
  2686 +| **Json字段** | **字段含义** | **赋值及含义** |
  2687 +| --- | --- | --- |
  2688 +| optionsMode | 填空类型 | 1:任意输入(默认值) |
  2689 +| modifyMode | 预留 | 1: (默认值) |
  2690 +| secrecyMode | 预留 | 0: (默认值) |
  2691 +
  2692 +
  2693 +指令样例:
  2694 +
  2695 +```json
  2696 +{
  2697 + "fun": "startTextAnswer",
  2698 + "baseId": 0,
  2699 + "params": {
  2700 + "optionsMode": "1",
  2701 + "modifyMode": "1",
  2702 + "secrecyMode": "0"
  2703 + },
  2704 + "packetTag": "1"
  2705 +}
  2706 +```
  2707 +
  2708 +接收:
  2709 +
  2710 +fun: "startTextAnswer " //开始填空题
  2711 +baseId: "1" //接收到指令的基站ID
  2712 +infos:{"state":"OK"} //返回状态,成功为OK
  2713 +
  2714 +指令样例:
  2715 +
  2716 +```json
  2717 +{
  2718 + "fun": "startTextAnswer",
  2719 + "baseId": 1,
  2720 + "infos": {
  2721 + "state": "OK"
  2722 + },
  2723 + "packetTag": "1"
  2724 +}
  2725 +```
  2726 +
  2727 +#### 接收作答
  2728 +
  2729 +接收:
  2730 +
  2731 +fun: "answerTextAnswer" //填空题作答返回
  2732 +baseId: "1" //接收到指令的基站ID
  2733 +infos: {}
  2734 +
  2735 +| **Json字段** | **字段含义** | **赋值及含义** |
  2736 +| --- | --- | --- |
  2737 +| keySn | 键盘Sn | |
  2738 +| keyValue | 键值 | ABCD/1234/AA123 |
  2739 +
  2740 +
  2741 +指令样例:
  2742 +
  2743 +```json
  2744 +{
  2745 + "fun": "answerTextAnswer",
  2746 + "baseId": 1,
  2747 + "infos": {
  2748 + "keySn": "1479824643",
  2749 + "keyValue": "1"
  2750 + },
  2751 + "packetTag": "1"
  2752 +}
  2753 +```
  2754 +
  2755 +发送:
  2756 +
  2757 +fun: "answerTextAnswer" //填空题作答返回
  2758 +baseId: "1"//接收的基站ID
  2759 +params:{} //为空
  2760 +
  2761 +指令样例:
  2762 +
  2763 +```json
  2764 +{
  2765 + "fun": "answerTextAnswer",
  2766 + "baseId": 1,
  2767 + "packetTag": "1"
  2768 +}
  2769 +```
  2770 +#### 停止作答
  2771 +
  2772 +发送:
  2773 +
  2774 +fun: "stopTextAnswer" //停止填空题
  2775 +params:{} //默认空
  2776 +
  2777 +指令样例:
  2778 +```json
  2779 +{
  2780 + "fun": "stopTextAnswer",
  2781 + "packetTag": "1"
  2782 +}
  2783 +```
  2784 +
  2785 +接收:
  2786 +
  2787 +fun: "stopTextAnswer" //停止填空题
  2788 +baseId: "1"//收到的基站ID
  2789 +infos:{"state":"OK"}//返回状态,成功为OK
  2790 +
  2791 +指令样例:
  2792 +```json
  2793 +{
  2794 + "fun": "stopTextAnswer",
  2795 + "baseId": 1,
  2796 + "infos": {
  2797 + "state": "OK"
  2798 + },
  2799 + "packetTag": "1"
  2800 +}
  2801 +```
  2802 +
  2803 +#### 支持设备说明
  2804 +
  2805 +| **基站+键盘** | **支持** | **备注** |
  2806 +| --- | --- | --- |
  2807 +| B100-2.4G+S6 | 支持 | |
  2808 +| B200-2.4G+S6 | 支持 | |
  2809 +
  2810 +### 自由题型
  2811 +
  2812 +#### 开始作答
  2813 +
  2814 +发送:
  2815 +
  2816 +fun: "startFreeQuestion" //开始填空题
  2817 +params:{}
  2818 +
  2819 +指令样例:
  2820 +
  2821 +```json
  2822 +{
  2823 + "fun": "startFreeQuestion",
  2824 + "baseId": 0,
  2825 + "params": {},
  2826 + "packetTag": "1"
  2827 +}
  2828 +```
  2829 +
  2830 +接收:
  2831 +
  2832 +fun: "startFreeQuestion " //开始自由题型
  2833 +baseId: "1" //接收到指令的基站ID
  2834 +infos:{"state":"OK"} //返回状态,成功为OK
  2835 +
  2836 +指令样例:
  2837 +
  2838 +```json
  2839 +{
  2840 + "fun": "startFreeQuestion",
  2841 + "baseId": 1,
  2842 + "infos": {
  2843 + "state": "OK"
  2844 + },
  2845 + "packetTag": "1"
  2846 +}
  2847 +```
  2848 +
  2849 +#### 接收作答
  2850 +
  2851 +接收:
  2852 +接收作答数据有键盘提交决定分为:选择题、判断题和数字题三个类型
  2853 +
  2854 +选择题:
  2855 +fun: "answerChoices" //自由题型作答返回
  2856 +baseId: "1"//接收到指令的基站ID
  2857 +infos: {}
  2858 +
  2859 +
  2860 +| **Json字段** | **字段含义** | **赋值及含义** |
  2861 +| --- | --- | --- |
  2862 +| keySn | 键盘Sn | |
  2863 +| keyValue | 键值 | ABCD/1234 |
  2864 +
  2865 +
  2866 +指令样例:
  2867 +
  2868 +```json
  2869 +{
  2870 + "fun": "answerChoices",
  2871 + "baseId": 1,
  2872 + "infos": {
  2873 + "keySn": "1479824643",
  2874 + "keyValue": "ABC"
  2875 + },
  2876 + "packetTag": "0"
  2877 +}
  2878 +```
  2879 +
  2880 +判断题:
  2881 +fun: "answerTrueFalse" //自由题型作答返回
  2882 +baseId: "1"//接收到指令的基站ID
  2883 +infos: {}
  2884 +
  2885 +| **Json字段** | **字段含义** | **赋值及含义** |
  2886 +| --- | --- | --- |
  2887 +| keySn | 键盘Sn | |
  2888 +| keyValue | 键值 |1~2|
  2889 +
  2890 +指令样例:
  2891 +
  2892 +```json
  2893 +{
  2894 + "fun": "answerTrueFalse",
  2895 + "baseId": 1,
  2896 + "infos": {
  2897 + "keySn": "1479824643",
  2898 + "keyValue": "1"
  2899 + },
  2900 + "packetTag": "0"
  2901 +}
  2902 +```
  2903 +数字题:
  2904 +fun: "answerNumber" //自由题型作答返回
  2905 +baseId: "1"//接收到指令的基站ID
  2906 +infos: {}
  2907 +
  2908 +| **Json字段** | **字段含义** | **赋值及含义** |
  2909 +| --- | --- | --- |
  2910 +| keySn | 键盘Sn | |
  2911 +| keyValue | 键值 |键盘提交的值|
  2912 +
  2913 +指令样例:
  2914 +
  2915 +```json
  2916 +{
  2917 + "fun": "answerNumber",
  2918 + "baseId": 1,
  2919 + "infos": {
  2920 + "keySn": "1479824643",
  2921 + "keyValue": "99.99"
  2922 + },
  2923 + "packetTag": "0"
  2924 +}
  2925 +```
  2926 +
  2927 +
  2928 +
  2929 +#### 停止作答
  2930 +
  2931 +发送:
  2932 +fun: "stopFreeQuestion" //停止自由题型
  2933 +params:{} //默认空
  2934 +
  2935 +
  2936 +指令样例:
  2937 +```json
  2938 +{
  2939 + "fun": "stopFreeQuestion",
  2940 + "packetTag": "1"
  2941 +}
  2942 +```
  2943 +
  2944 +接收:
  2945 +
  2946 +fun: "stopFreeQuestion" //停止自由题型
  2947 +baseId: "1"//收到的基站ID
  2948 +infos:{"state":"OK"}//返回状态,成功为OK
  2949 +
  2950 +指令样例:
  2951 +```json
  2952 +{
  2953 + "fun": "stopFreeQuestion",
  2954 + "baseId": 1,
  2955 + "infos": {
  2956 + "state": "OK"
  2957 + },
  2958 + "packetTag": "1"
  2959 +}
  2960 +```
  2961 +
  2962 +#### 支持设备说明
  2963 +
  2964 +| **基站+键盘** | **支持** | **备注** |
  2965 +| --- | --- | --- |
  2966 +| B200-2.4G+S6 | 支持 |需要指定键盘支持|
  2967 +
  2968 +
  2969 +### 自定义题型
  2970 +
  2971 +#### 开始测试
  2972 +
  2973 +发送:
  2974 +
  2975 +fun: "startKeyPadCustomQuestions" //开始
  2976 +params:{}
  2977 +
  2978 +| **Json字段** | **字段含义** | **赋值及含义** |
  2979 +| --- | --- | --- |
  2980 +|titleTable| 题目表 |数组[字符串]|
  2981 +| optionTable | 选项表 |数组<br>"A,B,C,D" [默认]<br>" 1,2,3,4 "<br>" 对,错 "<br>" √,× "<br>" 同意,反对,弃权 "|
  2982 +|ruleTable| 规则表 |数组[内容请参考“规则字段解释”]|
  2983 +|permissionTable| 许可权限表 |数组|
  2984 +|configTable| 配置表 |数组|
  2985 +
  2986 +许可权限表结构表说明
  2987 +| **Json字段** | **字段含义** | **赋值及含义** |
  2988 +| --- | --- | --- |
  2989 +|permission| 许可权限 |0:无[默认]<br>1: 允许<br>2: 禁止|
  2990 +|KeySnList| 键盘列表 |数组<br>"1479824643"<br>"1479824644"<br>"1479824645"<br>"1479824646"|
  2991 +
  2992 +
  2993 +配置表结构表说明
  2994 +| **Json字段** | **字段含义** | **赋值及含义** |
  2995 +| --- | --- | --- |
  2996 +|ruleType| 题编号 |1-200|
  2997 +|titleID|题目表ID|1-200|
  2998 +|optionID|选项表ID|1-200|
  2999 +|ruleID|规则表ID|1-200|
  3000 +|permissionID|许可权限表ID|1-200|
  3001 +
  3002 +规则字段解释:
  3003 +规则类型1:
  3004 +
  3005 +| **Json字段** | **字段含义** | **赋值及含义** |
  3006 +| --- | --- | --- |
  3007 +|ruleType| 规则类型 |1|
  3008 +|mode|模式|0: 默认(单选选择)<br>1: 纯数字组合 ,包含(上下键做负号与点号)<br>2: 填空自由组合,键盘自己实现输入方式<br>3: 多小题显示格式<br>4: 批次表决、批次评议<br>5: 批次评分<br>6: 名单选举<br>7: 累计投票、股权投票|
  3009 +|modifyMode|修改模式|0:不可修改<br> 1:可修改,默认|
  3010 +|secrecyMode|保密模式|0:不保密,默认<br> 1:保密|
  3011 +|lessMode|迫选模式|0:不迫选,默认<br> 1:迫选|
  3012 +|repeat|重复模式|0:不限制,默认<br> 1:单个选项只能选一次|
  3013 +|sort|自动排序|0:保留输入顺序<br>1:选项自动排序,默认|
  3014 +|max|最大可选人数||
  3015 +|min|最小可选人数||
  3016 +|maximum|最大可供选择项目数|1-10|
  3017 +|maxOptions|可选出数目|最小值是1,最大值不超出maximum|
  3018 +|topLimit|数字上限|浮点数格式的字符串|
  3019 +|lowerLimit|数字下限|浮点数格式的字符串|
  3020 +
  3021 +规则类型2:
  3022 +
  3023 +| **Json字段** | **字段含义** | **赋值及含义** |
  3024 +| --- | --- | --- |
  3025 +|ruleType| 规则类型 |2|
  3026 +|mode|模式|0:默认(选择)|
  3027 +|modifyMode|修改模式|0:不可修改<br> 1:可修改,默认|
  3028 +|secrecyMode|保密模式|0:不保密,默认<br> 1:保密|
  3029 +|lessMode|迫选模式|0:不迫选,默认<br> 1:迫选|
  3030 +|repeat|重复模式|0:不限制,默认<br>1:单个选项只能选一次|
  3031 +|sort|自动排序|0:保留输入顺序<br>1:选项自动排序,默认|
  3032 +|max|最大可选人数||
  3033 +|min|最小可选人数||
  3034 +|retain|保留数字|数组 范围000-999|
  3035 +|range|数字范围|数组|
  3036 +
  3037 +数字范围数据结构
  3038 +| **Json字段** | **字段含义** | **赋值及含义** |
  3039 +| --- | --- | --- |
  3040 +|rangeStart|数字范围开始|浮点数格式的字符串|
  3041 +|rangeEnd|数字范围结束|浮点数格式的字符串|
  3042 +
  3043 +
  3044 +
  3045 +指令样例:
  3046 +```json
  3047 +{
  3048 + "fun": "startKeyPadCustomQuestions",
  3049 + "baseId": 0,
  3050 + "params": {
  3051 + "titleTable": ["单选题", "数字表决"],
  3052 + "optionTable": [
  3053 + ["A", "B", "C", "D"],
  3054 + ["同意", "反对", "弃权"]
  3055 + ],
  3056 + "ruleTable": [{
  3057 + "ruleType": "1",
  3058 + "mode": "0",
  3059 + "modifyMode": "0",
  3060 + "secrecyMode": "0",
  3061 + "lessMode": "0",
  3062 + "repeat": "0",
  3063 + "sort": "1",
  3064 + "max": "4",
  3065 + "min": "1",
  3066 + "maximum": "4",
  3067 + "maxOptions": "1",
  3068 + "topLimit": "100.0",
  3069 + "lowerLimit": "0.1"
  3070 + },
  3071 + {
  3072 + "ruleType": "2",
  3073 + "mode": "0",
  3074 + "modifyMode": "0",
  3075 + "secrecyMode": "0",
  3076 + "lessMode": "0",
  3077 + "repeat": "0",
  3078 + "sort": "1",
  3079 + "max": "4",
  3080 + "min": "1",
  3081 + "retain": ["777", "999"],
  3082 + "range": [{
  3083 + "rangeStart": "1",
  3084 + "rangeEnd": "100"
  3085 + }, {
  3086 + "rangeStart": "101",
  3087 + "rangeEnd": "200"
  3088 + }, {
  3089 + "rangeStart": "201",
  3090 + "rangeEnd": "300"
  3091 + }]
  3092 + }
  3093 + ],
  3094 + "permissionTable": [{
  3095 + "permission": "2",
  3096 + "keySnList": ["1479824643", "1479824644", "1479824645", "1479824646"]
  3097 + },
  3098 + {
  3099 + "permission": "1",
  3100 + "keySnList": ["1479824643", "1479824644", "1479824645", "1479824646"]
  3101 + }
  3102 + ],
  3103 + "configTable": [{
  3104 + "number": "1",
  3105 + "titleID": "1",
  3106 + "optionID": "1",
  3107 + "ruleID": "1",
  3108 + "permissionID": "0"
  3109 + },
  3110 + {
  3111 + "number": "2",
  3112 + "titleID": "2",
  3113 + "optionID": "2",
  3114 + "ruleID": "2",
  3115 + "permissionID": "0"
  3116 + }
  3117 + ]
  3118 + },
  3119 + "packetTag": "59"
  3120 +}
  3121 +```
  3122 +
  3123 +接收:
  3124 +
  3125 +fun: "startKeyPadCustomQuestions" //开始自定义题型
  3126 +baseId: "1"//接收到指令的基站ID
  3127 +infos:{"state":"OK"}//返回状态,成功为OK
  3128 +
  3129 +指令样例:
  3130 +
  3131 +```json
  3132 +{
  3133 + "baseId": 1,
  3134 + "fun": "startKeyPadCustomQuestions",
  3135 + "infos": {
  3136 + "state": "OK"
  3137 + },
  3138 + "packetTag": "59"
  3139 +}
  3140 +```
  3141 +
  3142 +#### 接收作答
  3143 +
  3144 +接收:
  3145 +
  3146 +fun: "answerKeyPadCustomQuestions" //自定义题型返回
  3147 +baseId: "1"//接收到指令的基站ID
  3148 +infos: {}
  3149 +
  3150 +数字范围数据结构
  3151 +| **Json字段** | **字段含义** | **赋值及含义** |
  3152 +| --- | --- | --- |
  3153 +|Time|答题时间|单位秒|
  3154 +|keySn|键盘Sn||
  3155 +|Seq|题序号||
  3156 +|keyValue|键值|键盘提交的值|
  3157 +
  3158 +
  3159 +
  3160 +指令样例:
  3161 +```json
  3162 +{
  3163 + "fun": "answerKeyPadCustomQuestions",
  3164 + "baseId": 1,
  3165 + "infos": {
  3166 + "time": "5.42",
  3167 + "keySn": "1479824643",
  3168 + "seq": "1",
  3169 + "keyValue": "12"
  3170 + },
  3171 + "packetTag": "1"
  3172 +}
  3173 +```
  3174 +
  3175 +
  3176 +#### 退出作答
  3177 +
  3178 +发送:
  3179 +
  3180 +fun: "stopKeyPadCustomQuestions" //停止多题题型
  3181 +params:{} //默认空
  3182 +
  3183 +
  3184 +指令样例:
  3185 +```json
  3186 +{
  3187 + "fun": "stopKeyPadCustomQuestions",
  3188 + "baseId": 0,
  3189 + "packetTag": "1"
  3190 +}
  3191 +```
  3192 +
  3193 +
  3194 +接收:
  3195 +fun: "stopKeyPadCustomQuestions" //停止键盘测试
  3196 +baseId: "1"//收到的基站ID
  3197 +infos:{"state":"OK"}//返回状态,成功为OK
  3198 +
  3199 +
  3200 +指令样例:
  3201 +```json
  3202 +{
  3203 + "fun": "stopKeyPadCustomQuestions",
  3204 + "baseId": 1,
  3205 + "infos": {
  3206 + "state": "OK"
  3207 + },
  3208 + "packetTag": "1"
  3209 +}
  3210 +```
  3211 +
  3212 +
  3213 +#### 支持设备说明
  3214 +| **基站+键盘** | **支持** | **备注** |
  3215 +| --- | --- | --- |
  3216 +| B200-2.4G+M6 | 支持 |需要指定键盘支持|
  3217 +
  3218 +
  3219 +
  3220 +
  3221 +## NFC刷卡
  3222 +
  3223 +刷卡流程:
  3224 +
  3225 +刷卡后可以将键盘和基站自动完成配对。当需要刷卡绑定时应用软件先给基站发送一个键盘的姓名,键盘靠近基站感应区就会直接绑定当前数据并返回状态给应用。绑定成功后应用再发送下一个键盘的绑定信息,依次循环来绑定多个。
  3226 +
  3227 +### 写刷卡数据
  3228 +
  3229 +发送:
  3230 +
  3231 +fun: "writeNFCInfo" //写NFC绑定数据
  3232 +baseId: 1//1~32 (键盘所连基站ID)
  3233 +params:{}//
  3234 +
  3235 +| **Json字段** | **字段含义** | **赋值及含义** |
  3236 +| --- | --- | --- |
  3237 +|userName|姓名|最多24个汉字(48个字符),键盘左上角显示|
  3238 +|matchCode|配对码|四字节 十六进制显示|
  3239 +
  3240 +
  3241 +
  3242 +指令样例:
  3243 +
  3244 +```json
  3245 +{
  3246 + "fun": "writeNFCInfo",
  3247 + "baseId": 1,
  3248 + "params": {
  3249 + "userName": "张三",
  3250 + "matchCode": "22120007"
  3251 + },
  3252 + "packetTag": "1"
  3253 +}
  3254 +```
  3255 +
  3256 +### 刷卡绑定反馈
  3257 +
  3258 +接收:
  3259 +fun: "NFCInfo" //NFC绑定数据
  3260 +baseId: "1"//键盘所连基站ID
  3261 +infos:{}
  3262 +
  3263 +| **Json字段** | **字段含义** | **赋值及含义** |
  3264 +| --- | --- | --- |
  3265 +|keySn|键盘Sn||
  3266 +|state|状态|1:预留<br>2:基站报告正常刷卡的键盘SN<br>3:预留<br>4:刷卡写指定配对码消息|
  3267 +|number|数量|预留|
  3268 +
  3269 +
  3270 +指令样例:
  3271 +
  3272 +```json
  3273 +{
  3274 + "fun": "NFCInfo",
  3275 + "baseId": 1,
  3276 + "infos": {
  3277 + "keySn": "1479824643",
  3278 + "state": "4",
  3279 + "number": "0"
  3280 + },
  3281 + "packetTag": "1"
  3282 +}
  3283 +```
  3284 +
  3285 +
  3286 +### NFC数据清除指令
  3287 +
  3288 +发送:
  3289 +fun: "writeNFCEmpty" //写NFC绑定数据
  3290 +baseId: 1//1~32 (键盘所连基站ID)
  3291 +params:{}//
  3292 +
  3293 +
  3294 +指令样例:
  3295 +
  3296 +```json
  3297 +{
  3298 + "fun": "writeNFCEmpty",
  3299 + "baseId": 1,
  3300 + "params": {},
  3301 + "packetTag": "1"
  3302 +}
  3303 +```
  3304 +
  3305 +### 支持设备说明
  3306 +| **基站+键盘** | **支持** | **备注** |
  3307 +| --- | --- | --- |
  3308 +| B200-2.4G+S6 | 支持 |带NFC键盘有效|
  3309 +
  3310 +
  3311 +## 硬件参数
  3312 +
  3313 +硬件的读写操作返回数据都是相同的,具体值参见写指令的value
  3314 +
  3315 +### 基站
  3316 +
  3317 +#### 基站编号
  3318 +
  3319 +读
  3320 +
  3321 +发送:
  3322 +fun: "readBaseStationID" //读基站编号
  3323 +baseId: 1//1~32
  3324 +params:{}//可不填
  3325 +
  3326 +
  3327 +
  3328 +指令样例:
  3329 +```json
  3330 +{
  3331 + "fun": "readBaseStationID",
  3332 + "baseId": 2,
  3333 + "packetTag": "1"
  3334 +}
  3335 +```
  3336 +
  3337 +返回
  3338 +接收:
  3339 +fun: "baseStationID"
  3340 +baseId: "2"//基站ID
  3341 +infos:{"value":"2"}//返回基站ID
  3342 +指令样例:
  3343 +
  3344 +
  3345 +指令样例:
  3346 +
  3347 +```json
  3348 +{
  3349 + "fun": "baseStationID",
  3350 + "baseId": 2,
  3351 + "infos": {
  3352 + "pathAdd": "12345",
  3353 + "value": "2"
  3354 + },
  3355 + "packetTag": "1"
  3356 +}
  3357 +```
  3358 +支持设备说明
  3359 +| **基站+键盘** | **支持** | **备注** |
  3360 +| --- | --- | --- |
  3361 +| B100-2.4G+S6 | 支持 ||
  3362 +| B200-2.4G+S6 | 支持 ||
  3363 +| B200-5.8G+T2 | 支持 ||
  3364 +
  3365 +
  3366 +#### 基站频点
  3367 +
  3368 +读
  3369 +
  3370 +发送:
  3371 +fun: "readBaseStationChannel" //读基站频点
  3372 +baseId: 0//0~32 (默认为0表示读取所有基站)
  3373 +params:{}//可不填
  3374 +
  3375 +
  3376 +指令样例:
  3377 +
  3378 +```json
  3379 +{
  3380 + "fun": "readBaseStationChannel",
  3381 + "baseId": 0,
  3382 + "packetTag": "1"
  3383 +}
  3384 +```
  3385 +
  3386 +写
  3387 +
  3388 +发送:
  3389 +fun: "writeBaseStationChannel" //写基站频点
  3390 +baseId: 1//1~32 (必须指定基站)
  3391 +params:{"value":"1"}//1~12 (频点)
  3392 +
  3393 +| **Json字段** | **字段含义** | **赋值及含义** |
  3394 +| --- | --- | --- |
  3395 +|value|基站频点|单频点基站有效|
  3396 +|values|基站频点|多频点基站有效|
  3397 +
  3398 +
  3399 +指令样例:
  3400 +
  3401 +```json
  3402 +{
  3403 + "fun": "writeBaseStationChannel",
  3404 + "baseId": 1,
  3405 + "params": {
  3406 + "value": "3",
  3407 + "values": ["3", "6", "9", "12"]
  3408 + },
  3409 + "packetTag": "1"
  3410 +}
  3411 +```
  3412 +
  3413 +返回
  3414 +
  3415 +接收:
  3416 +fun: "baseStationChannel"
  3417 +baseId: 1//基站ID
  3418 +infos:{"value":"3"}//返回基站频点值
  3419 +
  3420 +
  3421 +指令样例:
  3422 +
  3423 +```json
  3424 +{
  3425 + "fun": "baseStationChannel",
  3426 + "baseId": 1,
  3427 + "infos": {
  3428 + "value": "3",
  3429 + "values": ["3", "6", "9", "12"]
  3430 + },
  3431 + "packetTag": "1"
  3432 +}
  3433 +```
  3434 +
  3435 +支持设备说明
  3436 +| **基站+键盘** | **支持** | **备注** |
  3437 +| --- | --- | --- |
  3438 +|B100-2.4GS+S6|支持单频点|频率范围1~80|
  3439 +|B200-2.4GS+S6|支持单频点|频率范围1~80|
  3440 +|B200-2.4GM+S6|支持多频点|频率范围1~80|
  3441 +|B200-5.8G+T2|支持单频点|频率范围1~12|
  3442 +
  3443 +#### 键盘登录菜单显示
  3444 +
  3445 +读
  3446 +
  3447 +发送:
  3448 +fun: "readKeyboardLoginMenu" //读键盘登录菜单显示
  3449 +baseId: 0//0~32 (默认为0表示读取所有基站)
  3450 +params:{}//可不填
  3451 +
  3452 +
  3453 +指令样例:
  3454 +
  3455 +```json
  3456 +{
  3457 + "fun": "readKeyboardLoginMenu",
  3458 + "baseId": 0,
  3459 + "packetTag": "1"
  3460 +}
  3461 +```
  3462 +
  3463 +写
  3464 +
  3465 +发送:
  3466 +fun: "writeKeyboardLoginMenu" //写键盘登录菜单显示
  3467 +baseId: 1 //1~32 (必须指定基站)
  3468 +params:{"value":"1"}//0~1 (0不允许登录;1允许登录)
  3469 +
  3470 +
  3471 +指令样例:
  3472 +
  3473 +```json
  3474 +{
  3475 + "fun": "writeKeyboardLoginMenu",
  3476 + "baseId": 1,
  3477 + "params": {
  3478 + "value": "1"
  3479 + },
  3480 + "packetTag": "1"
  3481 +}
  3482 +```
  3483 +
  3484 +返回
  3485 +
  3486 +接收:
  3487 +
  3488 +fun: "baseStationKeyboardLoginMenu"
  3489 +baseId: 1//基站ID
  3490 +infos:{"value":"1"}//返回键盘登录菜单显示值
  3491 +
  3492 +
  3493 +指令样例:
  3494 +
  3495 +```json
  3496 +{
  3497 + "fun": "baseStationKeyboardLoginMenu",
  3498 + "baseId": 1,
  3499 + "infos": {
  3500 + "value": "1"
  3501 + },
  3502 + "packetTag": "1"
  3503 +}
  3504 +```
  3505 +
  3506 +支持设备说明
  3507 +
  3508 +| **基站+键盘** | **支持** | **备注** |
  3509 +| --- | --- | --- |
  3510 +| B100-2.4G+S6 | 支持 ||
  3511 +| B200-2.4G+S6 | 支持 ||
  3512 +
  3513 +
  3514 +
  3515 +#### 基站型号(只读)
  3516 +
  3517 +读
  3518 +
  3519 +发送:
  3520 +
  3521 +fun: "readBaseStationModel" //读基站型号
  3522 +baseId: 0//0~32 (默认为0表示读取所有基站)
  3523 +params:{}//可不填
  3524 +
  3525 +
  3526 +指令样例:
  3527 +
  3528 +```json
  3529 +{
  3530 + "fun": "readBaseStationModel",
  3531 + "baseId": 0,
  3532 + "packetTag": "1"
  3533 +}
  3534 +```
  3535 +
  3536 +返回
  3537 +
  3538 +接收:
  3539 +
  3540 +fun: "baseStationModel"
  3541 +baseId: 1//基站ID
  3542 +infos:{"value":"218"}//返回基站型号
  3543 +
  3544 +
  3545 +指令样例:
  3546 +
  3547 +```json
  3548 +{
  3549 + "fun": "baseStationModel",
  3550 + "baseId": 1,
  3551 + "infos": {
  3552 + "value": "218"
  3553 + },
  3554 + "packetTag": "1"
  3555 +}
  3556 +```
  3557 +
  3558 +基站型号代码查询表
  3559 +
  3560 +| **基站型号代码** | **基站型号** | **备注** |
  3561 +| --- | --- | --- |
  3562 +| 217 | B100-2.4G ||
  3563 +| 218 | B200-2.4G ||
  3564 +| 219 | B200-5.8G ||
  3565 +
  3566 +
  3567 +支持设备说明
  3568 +
  3569 + | **基站+键盘** | **支持** | **备注** |
  3570 +| --- | --- | --- |
  3571 +| B100-2.4G+S6 | 支持 ||
  3572 +| B200-2.4G+S6 | 支持 ||
  3573 +| B200-5.8G+T2 | 支持 ||
  3574 +
  3575 +#### 基站软件版本(只读)
  3576 +
  3577 +读
  3578 +
  3579 +发送:
  3580 +
  3581 +fun: "readBaseStationSVersion" //读基站软件版本
  3582 +baseId: 0 //0~32 (默认为0表示读取所有基站)
  3583 +params:{}//可不填
  3584 +
  3585 +
  3586 +指令样例:
  3587 +
  3588 +```json
  3589 +{
  3590 + "fun": "readBaseStationSVersion",
  3591 + "baseId": 0,
  3592 + "packetTag": "1"
  3593 +}
  3594 +```
  3595 +
  3596 +返回
  3597 +
  3598 +接收:
  3599 +
  3600 +fun: "baseStationSVersion"
  3601 +baseId: 1//基站ID
  3602 +infos:{"value":"V2.0.2"}//返回基站软件版本
  3603 +
  3604 +
  3605 +指令样例:
  3606 +
  3607 +```json
  3608 +{
  3609 + "fun": "baseStationSVersion",
  3610 + "baseId": 1,
  3611 + "infos": {
  3612 + "value": "V2.0.2"
  3613 + },
  3614 + "packetTag": "1"
  3615 +}
  3616 +```
  3617 +
  3618 +支持设备说明
  3619 +
  3620 +| **基站+键盘** | **支持** | **备注** |
  3621 +| --- | --- | --- |
  3622 +| B100-2.4G+S6 | 支持 ||
  3623 +| B200-2.4G+S6 | 支持 ||
  3624 +| B200-5.8G+T2 | 支持 ||
  3625 +
  3626 +#### 基站序列号(只读)
  3627 +
  3628 +读
  3629 +
  3630 +发送:
  3631 +
  3632 +fun: "readBaseStationSN" //读基站序列号
  3633 +baseId: 0 //0~32 (默认为0表示读取所有基站)
  3634 +params:{}//可不填
  3635 +
  3636 +
  3637 +指令样例:
  3638 +
  3639 +```json
  3640 +{
  3641 + "fun": "readBaseStationSN",
  3642 + "baseId": 0,
  3643 + "packetTag": "1"
  3644 +}
  3645 +```
  3646 +
  3647 +返回
  3648 +
  3649 +接收:
  3650 +
  3651 +fun: "baseStationSN"
  3652 +baseId: 1//基站ID
  3653 +infos:{"value":"FFFFFFFFFF"}//返回基站序列号
  3654 +
  3655 +
  3656 +指令样例:
  3657 +
  3658 +```json
  3659 +{
  3660 + "fun": "baseStationSN",
  3661 + "baseId": 1,
  3662 + "infos": {
  3663 + "value": "FFFFFFFFFF"
  3664 + },
  3665 + "packetTag": "1"
  3666 +}
  3667 +```
  3668 +
  3669 +支持设备说明
  3670 +
  3671 +| **基站+键盘** | **支持** | **备注** |
  3672 +| --- | --- | --- |
  3673 +| B100-2.4G+S6 | 支持 ||
  3674 +| B200-2.4G+S6 | 支持 ||
  3675 +| B200-5.8G+T2 | 支持 ||
  3676 +
  3677 +#### 基站名称
  3678 +
  3679 +读
  3680 +
  3681 +发送:
  3682 +
  3683 +fun: "readBaseStationTitle" //读基站名称
  3684 +baseId: 0 //0~32 (默认为0表示读取所有基站)
  3685 +params:{}//可不填
  3686 +
  3687 +
  3688 +指令样例:
  3689 +
  3690 +```json
  3691 +{
  3692 + "fun": "readBaseStationTitle",
  3693 + "baseId": 0,
  3694 + "packetTag": "1"
  3695 +}
  3696 +```
  3697 +
  3698 +写
  3699 +
  3700 +发送:
  3701 +
  3702 +fun: "writeBaseStationTitle" //写基站名称
  3703 +baseId: 1//1~32(必须指定基站)
  3704 +params:{"value":" A2021"}//基站名称,最长12字节
  3705 +
  3706 +
  3707 +指令样例:
  3708 +
  3709 +```json
  3710 +{
  3711 + "fun": "writeBaseStationTitle",
  3712 + "baseId": 1,
  3713 + "params": {
  3714 + "value": "A2021"
  3715 + },
  3716 + "packetTag": "1"
  3717 +}
  3718 +```
  3719 +
  3720 +返回
  3721 +
  3722 +接收:
  3723 +
  3724 +fun: "baseStationTitle"
  3725 +baseId: 1//基站ID
  3726 +infos:{"value":"A2021"}//返回基站名称
  3727 +
  3728 +
  3729 +指令样例:
  3730 +
  3731 +```json
  3732 +{
  3733 + "fun": "baseStationTitle",
  3734 + "baseId": 1,
  3735 + "infos": {
  3736 + "value": "A2021"
  3737 + },
  3738 + "packetTag": "1"
  3739 +}
  3740 +```
  3741 +
  3742 +支持设备说明
  3743 +
  3744 +| **基站+键盘** | **支持** | **备注** |
  3745 +| --- | --- | --- |
  3746 +| B100-2.4G+S6 | 支持 ||
  3747 +| B200-2.4G+S6 | 支持 ||
  3748 +| B200-5.8G+T2 | 支持 ||
  3749 +
  3750 +#### 基站配对码
  3751 +
  3752 +读
  3753 +
  3754 +发送:
  3755 +
  3756 +fun: "readBaseStationMatchCode" //读基站配对码
  3757 +baseId: 0 //0~32 (默认为0表示读取所有基站)
  3758 +params:{}//可不填
  3759 +
  3760 +
  3761 +指令样例:
  3762 +
  3763 +```json
  3764 +{
  3765 + "fun": "readBaseStationMatchCode",
  3766 + "baseId": 0,
  3767 + "packetTag": "1"
  3768 +}
  3769 +```
  3770 +
  3771 +返回
  3772 +
  3773 +接收:
  3774 +
  3775 +fun: "baseStationMatchCode"
  3776 +baseId: 1//基站ID
  3777 +infos:{"value":"21072333"}//返回基站配对码
  3778 +
  3779 +
  3780 +指令样例:
  3781 +
  3782 +```json
  3783 +{
  3784 + "fun": "baseStationMatchCode",
  3785 + "baseId": 1,
  3786 + "infos": {
  3787 + "value": "21072333"
  3788 + },
  3789 + "packetTag": "1"
  3790 +}
  3791 +```
  3792 +
  3793 +支持设备说明
  3794 +
  3795 +| **基站+键盘** | **支持** | **备注** |
  3796 +| --- | --- | --- |
  3797 +| B100-2.4G+S6 | 支持 ||
  3798 +| B200-2.4G+S6 | 支持 ||
  3799 +| B200-5.8G+T2 | 支持 ||
  3800 +
  3801 +#### 基站频点冲突
  3802 +
  3803 +检测到基站频点冲突将会返回给应用程序提示,应用程序可根据情况更改频点。
  3804 +接收:
  3805 +fun: "baseStationChannelInterference" // 基站频点冲突
  3806 +baseId: //发生冲突基站ID
  3807 +infos:{ "value":"5"}//频点5冲突
  3808 +packetTag:"0"//数据包标签
  3809 +
  3810 +
  3811 +指令样例:
  3812 +
  3813 +```json
  3814 +{
  3815 + "fun": "baseStationChannelInterference",
  3816 + "baseId": 1,
  3817 + "infos": {
  3818 + "value": "5"
  3819 + },
  3820 + "packetTag": "0"
  3821 +}
  3822 +```
  3823 +
  3824 +支持设备说明
  3825 +
  3826 +| **基站+键盘** | **支持** | **备注** |
  3827 +| --- | --- | --- |
  3828 +| B100-2.4G+S6 | 支持 ||
  3829 +| B200-2.4G+S6 | 支持 ||
  3830 +| B200-5.8G+T2 | 支持 ||
  3831 +
  3832 +#### 基站容量
  3833 +
  3834 +读
  3835 +
  3836 +发送:
  3837 +
  3838 +fun: "readBaseStationCapacity" //读基站容量
  3839 +baseId: 0 //0~32 (默认为0表示读取所有基站)
  3840 +params:{}//可不填
  3841 +
  3842 +
  3843 +指令样例:
  3844 +
  3845 +```json
  3846 +{
  3847 + "fun": "readBaseStationCapacity",
  3848 + "baseId": 0,
  3849 + "packetTag": "1"
  3850 +}
  3851 +```
  3852 +
  3853 +返回
  3854 +
  3855 +接收:
  3856 +
  3857 +fun: "baseStationCapacity"
  3858 +baseId: "1"//基站ID
  3859 +infos:{"keypadNumber":"60","lock":"1"}//返回基站键盘容量值
  3860 +
  3861 +
  3862 +指令样例:
  3863 +
  3864 +```json
  3865 +{
  3866 + "fun": "baseStationID",
  3867 + "baseId": 2,
  3868 + "infos": {
  3869 + "keypadNumber": "60",
  3870 + "lock": "1"
  3871 + },
  3872 + "packetTag": "1"
  3873 +}
  3874 +```
  3875 +
  3876 +支持设备说明
  3877 +| **基站+键盘** | **支持** | **备注** |
  3878 +| --- | --- | --- |
  3879 +| B200-5.8G+T2 | 支持 ||
  3880 +
  3881 +
  3882 +#### 快速配对
  3883 +
  3884 +##### 开始快速配对
  3885 +
  3886 +发送:
  3887 +
  3888 +fun: "startQuickMatch" //开始快速配对
  3889 +baseId:1 // 1~32 (必选参数,范围(1~32))
  3890 +params:{}
  3891 +
  3892 +
  3893 +指令样例:
  3894 +
  3895 +```json
  3896 +{
  3897 + "fun": "startQuickMatch",
  3898 + "baseId": 1,
  3899 + "packetTag": "1"
  3900 +}
  3901 +```
  3902 +
  3903 +接收:
  3904 +
  3905 +fun: "startQuickMatch" //开始快速配对
  3906 +baseId: "1"//接收到指令的基站ID
  3907 +infos:{"state":"OK"}//返回状态,成功为OK
  3908 +
  3909 +
  3910 +指令样例:
  3911 +
  3912 +```json
  3913 +{
  3914 + "fun": "startQuickMatch",
  3915 + "baseId": 1,
  3916 + "infos": {
  3917 + "state": "OK"
  3918 + },
  3919 + "packetTag": "1"
  3920 +}
  3921 +```
  3922 +
  3923 +##### 停止快速配对
  3924 +
  3925 +发送:
  3926 +
  3927 +fun: "stopQuickMatch" //停止快速配对
  3928 +params:{} //默认空
  3929 +
  3930 +
  3931 +指令样例:
  3932 +
  3933 +```json
  3934 +{
  3935 + "fun": "stopQuickMatch",
  3936 + "baseId": 1,
  3937 + "packetTag": "1"
  3938 +}
  3939 +```
  3940 +
  3941 +接收:
  3942 +
  3943 +fun: "stopQuickMatch" //停止快速配对
  3944 +baseId: "1"//收到的基站ID
  3945 +infos:{"state":"OK"}//返回状态,成功为OK
  3946 +
  3947 +
  3948 +指令样例:
  3949 +
  3950 +```json
  3951 +{
  3952 + "fun": "stopQuickMatch",
  3953 + "baseId": 1,
  3954 + "infos": {
  3955 + "state": "OK"
  3956 + },
  3957 + "packetTag": "1"
  3958 +}
  3959 +```
  3960 +
  3961 +##### 支持设备说明
  3962 +| **基站+键盘** | **支持** | **备注** |
  3963 +| --- | --- | --- |
  3964 +| B100-2.4G+S6 | 支持 ||
  3965 +| B200-2.4G+S6 | 支持 ||
  3966 +
  3967 +
  3968 +#### 键盘登录密码
  3969 +
  3970 +读
  3971 +
  3972 +发送:
  3973 +
  3974 +fun: "readKeyboardLoginPW" //读键盘登录密码
  3975 +baseId: 0// 0~32 (指令不发送baseID,默认为0表示读取所有基站)
  3976 +params:{}//可不填
  3977 +
  3978 +
  3979 +指令样例:
  3980 +
  3981 +```json
  3982 +{
  3983 + "fun": "readKeyboardLoginPW",
  3984 + "baseId": 0,
  3985 + "packetTag": "1"
  3986 +}
  3987 +```
  3988 +
  3989 +写
  3990 +
  3991 +发送:
  3992 +
  3993 +fun: "writeKeyboardLoginPW" //写键盘登录密码
  3994 +baseId: 1 //1~32 (必须指定基站)
  3995 +params:{"value":"0"}//0~9999 (0不用核对)
  3996 +
  3997 +指令样例:
  3998 +
  3999 +```json
  4000 +{
  4001 + "fun": "writeKeyboardLoginPW",
  4002 + "baseId": 1,
  4003 + "params": {
  4004 + "value": "0"
  4005 + },
  4006 + "packetTag": "1"
  4007 +}
  4008 +```
  4009 +
  4010 +返回
  4011 +
  4012 +接收:
  4013 +
  4014 +fun: "baseStationKeyboardLoginPW"
  4015 +baseId: 1//基站ID
  4016 +infos:{"value":"1"}//返回键盘登录密码值
  4017 +
  4018 +
  4019 +指令样例:
  4020 +
  4021 +```json
  4022 +{
  4023 + "fun": "baseStationKeyboardLoginPW",
  4024 + "baseId": 1,
  4025 + "infos": {
  4026 + "value": "0"
  4027 + },
  4028 + "packetTag": "1"
  4029 +}
  4030 +```
  4031 +
  4032 +支持设备说明
  4033 +| **基站+键盘** | **支持** | **备注** |
  4034 +| --- | --- | --- |
  4035 +| B100-2.4G+S6 | 支持 ||
  4036 +| B200-2.4G+S6 | 支持 ||
  4037 +
  4038 +
  4039 +#### 基站名称隐藏
  4040 +
  4041 +读
  4042 +
  4043 +发送:
  4044 +
  4045 +fun: "readBaseStationNameHidden" //读基站名称隐藏
  4046 +baseId: 0// 0~32 (指令不发送baseID,默认为0表示读取所有基站)
  4047 +params:{}//可不填
  4048 +
  4049 +
  4050 +指令样例:
  4051 +
  4052 +```json
  4053 +{
  4054 + "fun": "readBaseStationNameHidden",
  4055 + "baseId": 0,
  4056 + "packetTag": "1"
  4057 +}
  4058 +```
  4059 +
  4060 +写
  4061 +
  4062 +发送:
  4063 +
  4064 +fun: "writeBaseStationNameHidden" //写基站名称隐藏
  4065 +baseId: 1 //1~32 (必须指定基站)
  4066 +params:{"value":"0"}//0~1 (0隐藏,1不隐藏)
  4067 +
  4068 +
  4069 +指令样例:
  4070 +
  4071 +```json
  4072 +{
  4073 + "fun": "writeBaseStationNameHidden",
  4074 + "baseId": 1,
  4075 + "params": {
  4076 + "value": "0"
  4077 + },
  4078 + "packetTag": "1"
  4079 +}
  4080 +```
  4081 +
  4082 +返回
  4083 +
  4084 +接收:
  4085 +
  4086 +fun: "baseStationNameHidden"
  4087 +baseId: 1//基站ID
  4088 +infos:{"value":"1"}//返回基站名称隐藏值 (0隐藏,1不隐藏)
  4089 +
  4090 +
  4091 +指令样例:
  4092 +
  4093 +```json
  4094 +{
  4095 + "fun": "baseStationNameHidden",
  4096 + "baseId": 1,
  4097 + "infos": {
  4098 + "value": "0"
  4099 + },
  4100 + "packetTag": "1"
  4101 +}
  4102 +```
  4103 +
  4104 +支持设备说明
  4105 +| **基站+键盘** | **支持** | **备注** |
  4106 +| --- | --- | --- |
  4107 +| B100-2.4G+S6 | 支持 ||
  4108 +| B200-2.4G+S6 | 支持 ||
  4109 +
  4110 +#### 基站TCP/IP参数
  4111 +
  4112 +读
  4113 +
  4114 +发送:
  4115 +
  4116 +fun: "readBaseStationTcpIp" //读基站TCP/IP参数
  4117 +baseId: 0// 0~32 (指令不发送baseID,默认为0表示读取所有基站)
  4118 +params:{}//可不填
  4119 +
  4120 +
  4121 +指令样例:
  4122 +
  4123 +```json
  4124 +{
  4125 + "fun": "readBaseStationTcpIp",
  4126 + "baseId": 0,
  4127 + "packetTag": "1"
  4128 +}
  4129 +```
  4130 +
  4131 +写
  4132 +
  4133 +发送:
  4134 +
  4135 +fun: "writeBaseStationTcpIp" //写基站TcpIp
  4136 +baseId: 1 //1~32 (必须指定基站)
  4137 +params:
  4138 +
  4139 +
  4140 +指令样例:
  4141 +
  4142 +```json
  4143 +{
  4144 + "fun": "writeBaseStationTcpIp",
  4145 + "baseId": 1,
  4146 + "params": {
  4147 + "mac": "FF.FF.FF.FF.FF",
  4148 + "ip": "192.168.10.10",
  4149 + "mask": "255.255.255.0",
  4150 + "gateway": "192.168.10.1"
  4151 + },
  4152 +
  4153 + "packetTag": "1"
  4154 +}
  4155 +```
  4156 +
  4157 +返回
  4158 +
  4159 +接收:
  4160 +
  4161 +fun: "baseStationTcpIp"
  4162 +baseId: 1//基站ID
  4163 +infos:{"value":"1"}//返回基站TcpIp
  4164 +
  4165 +
  4166 +指令样例:
  4167 +
  4168 +```json
  4169 +{
  4170 + "fun": "baseStationTcpIp",
  4171 + "baseId": 1,
  4172 + "infos": {
  4173 + "ip": "192.168.10.10",
  4174 + "mac": "FF.FF.FF.FF.FF",
  4175 + "mask": "255.255.255.0",
  4176 + "gateway": "192.168.10.1"
  4177 + },
  4178 + "packetTag": "1"
  4179 +}
  4180 +```
  4181 +
  4182 +支持设备说明
  4183 +| **基站+键盘** | **支持** | **备注** |
  4184 +| --- | --- | --- |
  4185 +| EA4000T-2.4G+S5 | 支持 |带LAN接口版本|
  4186 +
  4187 +
  4188 +#### 基站键盘白名单管理
  4189 +
  4190 +读
  4191 +
  4192 +发送:
  4193 +
  4194 +fun: "readWhiteList" //读白名单列表
  4195 +baseId: 0//
  4196 +
  4197 +
  4198 +指令样例:
  4199 +
  4200 +```json
  4201 +{
  4202 + "fun": "readWhiteList",
  4203 + "baseId": 0,
  4204 + "params": {},
  4205 + "packetTag": "1"
  4206 +}
  4207 +```
  4208 +
  4209 +读返回
  4210 +接收:
  4211 +fun: "whiteList"
  4212 +baseId: 1//基站ID
  4213 +infos:{}//
  4214 +
  4215 +| **Json字段** | **字段含义** | **赋值及含义** |
  4216 +| --- | --- | --- |
  4217 +|keySn|键盘Sn||
  4218 +|state|键盘状态<br>[B200_5.8G+T2组合有效]|0:离线<br>1:在线|
  4219 +
  4220 +指令样例:
  4221 +
  4222 +```json
  4223 +{
  4224 + "fun": "whiteList",
  4225 + "baseId": 1,
  4226 + "infos": [{
  4227 + "keySn": "2111120140",
  4228 + "state": "0"
  4229 + },
  4230 + {
  4231 + "keySn": "0005243136",
  4232 + "state": "0"
  4233 + },
  4234 + {
  4235 + "keySn": "2111120102",
  4236 + "state": "0"
  4237 + }
  4238 + ],
  4239 + "packetTag": "1"
  4240 +}
  4241 +```
  4242 +
  4243 +写
  4244 +
  4245 +发送:
  4246 +
  4247 +fun: "writeWhiteList" //写白名单列表
  4248 +baseId: 1 //1~32 (必须指定基站)
  4249 +keySnList:[]//键盘SN数组最多200键盘SN
  4250 +
  4251 +| **Json字段** | **字段含义** | **赋值及含义** |
  4252 +| --- | --- | --- |
  4253 +|keySnList|键盘列表|B200-2.4GS+S6:键盘最多 200只<br>EA3100-2.4G+S62:键盘最多 200只<br>B200-5.8G+T2:键盘最多 需要参考 7.5.1.10基站容量|
  4254 +
  4255 +
  4256 +指令样例:
  4257 +
  4258 +```json
  4259 +{
  4260 + "fun": "writeWhiteList",
  4261 + "baseId": 2,
  4262 + "keySnList": [{
  4263 + "keySn": "2111120140"
  4264 + },
  4265 + {
  4266 + "keySn": "0005243136"
  4267 + },
  4268 + {
  4269 + "keySn": "2111120102"
  4270 + }
  4271 + ],
  4272 + "packetTag": "10"
  4273 +}
  4274 +```
  4275 +
  4276 +返回
  4277 +
  4278 +接收:
  4279 +
  4280 +fun: "whiteList"
  4281 +baseId: 1//基站ID
  4282 +infos:{}//
  4283 +
  4284 +| **Json字段** | **字段含义** | **赋值及含义** |
  4285 +| --- | --- | --- |
  4286 +|keySn|键盘Sn||
  4287 +|state|键盘状态|OK:成功|
  4288 +
  4289 +指令样例:
  4290 +
  4291 +```json
  4292 +{
  4293 + "fun": "whiteList",
  4294 + "baseId": 1,
  4295 + "infos": [{
  4296 + "keySn": "2111120140",
  4297 + "state": "OK"
  4298 + },
  4299 + {
  4300 + "keySn": "0005243136",
  4301 + "state": "OK"
  4302 + },
  4303 + {
  4304 + "keySn": "2111120102",
  4305 + "state": "OK"
  4306 + }
  4307 + ],
  4308 + "packetTag": "1"
  4309 +}
  4310 +```
  4311 +
  4312 +支持设备说明
  4313 +
  4314 +| **基站+键盘** | **支持** | **备注** |
  4315 +| --- | --- | --- |
  4316 +| B200-2.4G+S6 | 支持 ||
  4317 +| B200-5.8G+T2 | 支持 ||
  4318 +| EA3100-2.4G+S62 | 支持 ||
  4319 +
  4320 +#### 基站锁定键盘
  4321 +
  4322 +发送:
  4323 +fun: "lockKeypad" //锁定键盘
  4324 +baseId: 0// 0~32 (指令不发送baseID,默认为0表示所有基站)
  4325 +params:{} //数组对象,指定键盘需填
  4326 +
  4327 +| **Json字段** | **字段含义** | **赋值及含义** |
  4328 +| --- | --- | --- |
  4329 +|baseId|基站id|在指定键盘时请传对应的基站baseId<br>0:所有基站|
  4330 +|keySnList|键盘列表|没有列表时为锁定当前所有在线列表|
  4331 +
  4332 +指令样例:
  4333 +锁定指定键盘
  4334 +```json
  4335 +{
  4336 + "fun": "lockKeypad",
  4337 + "baseId": 1,
  4338 + "keySnList": [{
  4339 + "keySn": "2111120140"
  4340 + },
  4341 + {
  4342 + "keySn": "0005243136"
  4343 + },
  4344 + {
  4345 + "keySn": "2111120102"
  4346 + }
  4347 + ],
  4348 + "params": {},
  4349 + "packetTag": "1"
  4350 +}
  4351 +```
  4352 +
  4353 +接收:
  4354 +```json
  4355 +{
  4356 + "fun": "lockKeypad",
  4357 + "baseId": 1,
  4358 + "infos": [{
  4359 + "keySn": "1837454011",
  4360 + "state": "OK"
  4361 + },
  4362 + {
  4363 + "keySn": "1837454012",
  4364 + "state": "OK"
  4365 + }
  4366 + ],
  4367 + "packetTag": "1"
  4368 +}
  4369 +```
  4370 +
  4371 +支持设备说明
  4372 +
  4373 +| **基站+键盘** | **支持** | **备注** |
  4374 +| --- | --- | --- |
  4375 +| B200-5.8G+T2 | 支持 ||
  4376 +
  4377 +#### 基站解锁键盘
  4378 +发送:
  4379 +fun: "unlockKeypad" //解锁键盘
  4380 +baseId: 0// 0~32 (指令不发送baseID,默认为0表示所有基站)
  4381 +params:{} //数组对象,指定键盘需填
  4382 +
  4383 +| **Json字段** | **字段含义** | **赋值及含义** |
  4384 +| --- | --- | --- |
  4385 +|baseId|基站id|在指定键盘时请传对应的基站baseId<br>0:所有基站|
  4386 +|keySnList|键盘列表|没有列表时为解锁所有键盘|
  4387 +
  4388 +指令样例:
  4389 +
  4390 +解锁键盘
  4391 +```json
  4392 +{
  4393 + "fun": "unlockKeypad",
  4394 + "baseId": 1,
  4395 + "keySnList": [{
  4396 + "keySn": "2111120140"
  4397 + },
  4398 + {
  4399 + "keySn": "0005243136"
  4400 + },
  4401 + {
  4402 + "keySn": "2111120102"
  4403 + }
  4404 + ],
  4405 + "params": {},
  4406 + "packetTag": "1"
  4407 +}
  4408 +```
  4409 +
  4410 +接收:
  4411 +```json
  4412 +{
  4413 + "fun": "unlockKeypad",
  4414 + "baseId": 1,
  4415 + "infos": [{
  4416 + "keySn": "2111120140",
  4417 + "state": "OK"
  4418 + },
  4419 + {
  4420 + "keySn": "0005243136",
  4421 + "state": "OK"
  4422 + },
  4423 + {
  4424 + "keySn": "2111120102",
  4425 + "state": "OK"
  4426 + }
  4427 + ],
  4428 + "packetTag": "1"
  4429 +}
  4430 +```
  4431 +
  4432 +| **基站+键盘** | **支持** | **备注** |
  4433 +| --- | --- | --- |
  4434 +| B200-5.8G+T2 | 支持 ||
  4435 +
  4436 +#### 基站追加键盘
  4437 +
  4438 +发送:
  4439 +fun: "addWhiteList" //追加键盘
  4440 +params:{} //键盘sn
  4441 +keySnList:[ "keySn":"2111120140"] //列表不能为空
  4442 +
  4443 +指令样例:
  4444 +
  4445 +```json
  4446 +{
  4447 + "fun": "addWhiteList",
  4448 + "baseId": 1,
  4449 + "keySnList": [{
  4450 + "keySn": "2111120140"
  4451 + }],
  4452 + "params": {},
  4453 + "packetTag": "1"
  4454 +}
  4455 +```
  4456 +接收:
  4457 +fun: "whiteList"
  4458 +baseId: 1//基站ID
  4459 +infos:{}//
  4460 +
  4461 +| **Json字段** | **字段含义** | **赋值及含义** |
  4462 +| --- | --- | --- |
  4463 +|keySn|键盘SN||
  4464 +|state|键盘状态|OK:成功|
  4465 +
  4466 +```json
  4467 +{
  4468 + "fun": "whiteList",
  4469 + "baseId": 1,
  4470 + "infos": {
  4471 + "keySn": "1837454012",
  4472 + "state": "OK"
  4473 + },
  4474 + "packetTag": "1"
  4475 +}
  4476 +```
  4477 +
  4478 +| **基站+键盘** | **支持** | **备注** |
  4479 +| --- | --- | --- |
  4480 +| B200-2.4G+S6 | 支持 ||
  4481 +| B200-5.8G+T2 | 支持 ||
  4482 +
  4483 +#### 基站删除键盘
  4484 +
  4485 +发送:
  4486 +fun: "delWhiteList" //踢出键盘,删除键盘
  4487 +params:{} //键盘sn
  4488 +keySnList:[ "keySn":"2111120140"] //列表不能为空
  4489 +
  4490 +
  4491 +指令样例:
  4492 +
  4493 +```json
  4494 +{
  4495 + "fun": "delWhiteList",
  4496 + "baseId": 0,
  4497 + "keySnList": [{
  4498 + "keySn": "2111120140"
  4499 + }],
  4500 + "params": {},
  4501 + "packetTag": "1"
  4502 +}
  4503 +```
  4504 +接收:
  4505 +fun: "delWhiteList"
  4506 +baseId: 1//基站ID
  4507 +infos:{}//
  4508 +
  4509 +| **Json字段** | **字段含义** | **赋值及含义** |
  4510 +| --- | --- | --- |
  4511 +|keySn|键盘SN||
  4512 +|state|键盘状态|OK:成功|
  4513 +
  4514 +```json
  4515 +{
  4516 + "fun": "delWhiteList",
  4517 + "baseId": 1,
  4518 + "packetTag": "1",
  4519 + "infos": {
  4520 + "keySn": "1837454012",
  4521 + "state": "OK"
  4522 + }
  4523 +}
  4524 +```
  4525 +
  4526 +| **基站+键盘** | **支持** | **备注** |
  4527 +| --- | --- | --- |
  4528 +| B200-2.4G+S6 | 支持 ||
  4529 +| B200-5.8G+T2 | 支持 ||
  4530 +
  4531 +#### 基站清掉所有键盘
  4532 +
  4533 +发送:
  4534 +fun: "clearWhiteList" //清掉所有键盘
  4535 +params:{} //无
  4536 +
  4537 +
  4538 +
  4539 +指令样例:
  4540 +
  4541 +```json
  4542 +{
  4543 + "fun": "clearWhiteList",
  4544 + "baseId": 1,
  4545 + "packetTag": "1"
  4546 +}
  4547 +```
  4548 +接收:
  4549 +fun: "clearWhiteList"
  4550 +baseId: 1//基站ID
  4551 +infos:{}//
  4552 +
  4553 +| **Json字段** | **字段含义** | **赋值及含义** |
  4554 +| --- | --- | --- |
  4555 +|state|键盘状态|OK:成功|
  4556 +
  4557 +```json
  4558 +{
  4559 + "fun": "clearWhiteList",
  4560 + "baseId": 1,
  4561 + "packetTag": "1",
  4562 + "infos": {
  4563 + "state": "OK"
  4564 + }
  4565 +}
  4566 +```
  4567 +
  4568 +| **基站+键盘** | **支持** | **备注** |
  4569 +| --- | --- | --- |
  4570 +| B200-2.4G+S6 | 支持 ||
  4571 +| B200-5.8G+T2 | 支持 ||
  4572 +
  4573 +#### 键盘关机时间
  4574 +
  4575 +读
  4576 +发送:
  4577 +fun: "readKeypadAutoPowerOffLevel" //读键盘关机时间等级
  4578 +baseId: 0//0~32 (指令不发送baseID,默认为0表示读取所有基站)
  4579 +params:{"value":0}//
  4580 +
  4581 +| **Json字段** | **字段含义** | **赋值及含义** |
  4582 +| --- | --- | --- |
  4583 +|value|键盘关机时间等级|0-30秒<br>1:2分钟<br>2:10分钟<br>3:45分钟<br>255:不自动关机|
  4584 +
  4585 +指令样例:
  4586 +```json
  4587 +{
  4588 + "fun": "readKeypadAutoPowerOffLevel",
  4589 + "baseId": 0,
  4590 + "packetTag": "1"
  4591 +}
  4592 +```
  4593 +
  4594 +写
  4595 +发送:
  4596 +fun: "writeKeypadAutoPowerOffLevel" //写键盘关机时间等级
  4597 +baseId: 1//1~32 (必须指定基站)
  4598 +params:{"value":"0"}//
  4599 +
  4600 +指令样例:
  4601 +
  4602 +```json
  4603 +{
  4604 + "fun": "writeKeypadAutoPowerOffLevel",
  4605 + "baseId": 1,
  4606 + "params": {
  4607 + "value": "0"
  4608 + },
  4609 + "packetTag": "1"
  4610 +}
  4611 +```
  4612 +
  4613 +返回
  4614 +接收:
  4615 +fun: "keypadAutoPowerOffLevel"
  4616 +baseId: 1//基站ID
  4617 +infos:{"value":"0"}//返回键盘关机时间等级
  4618 +指令样例:
  4619 +
  4620 +```json
  4621 +{
  4622 + "fun": "keypadAutoPowerOffLevel",
  4623 + "baseId": 1,
  4624 + "infos": {
  4625 + "value": "0"
  4626 + },
  4627 + "packetTag": "1"
  4628 +}
  4629 +```
  4630 +
  4631 +| **基站+键盘** | **支持** | **备注** |
  4632 +| --- | --- | --- |
  4633 +| 全系列 | 支持 ||
  4634 +
  4635 +#### 基础参数配置
  4636 +
  4637 +读
  4638 +发送:
  4639 +fun: "readBaseStationBaseConfig" //读基站BaseConfig
  4640 +baseId: 0// 0~32 (指令不发送baseID,默认为0表示读取所有基站)
  4641 +params:{}//可不填
  4642 +
  4643 +指令样例:
  4644 +```json
  4645 +{
  4646 + "fun": "readBaseStationBaseConfig",
  4647 + "baseId": 0,
  4648 + "packetTag": "1"
  4649 +}
  4650 +```
  4651 +
  4652 +写
  4653 +发送:
  4654 +fun: "writeBaseStationBaseConfig" //写基站BaseConfig
  4655 +baseId: 1 //1~32 (必须指定基站)
  4656 +params:{}//
  4657 +
  4658 +| **Json字段** | **字段含义** | **赋值及含义** |
  4659 +| --- | --- | --- |
  4660 +|bootVibraton|开机震动|0: 关闭<br>1: 开启|
  4661 +|voteVibraton|答题开始震动|0: 关闭<br>1: 开启|
  4662 +|led|指示灯开关|0: 关闭<br>1: 开启|
  4663 +
  4664 +
  4665 +指令样例:
  4666 +
  4667 +```json
  4668 +{
  4669 + "fun": "writeBaseStationBaseConfig",
  4670 + "baseId": 1,
  4671 + "params": {
  4672 + "bootVibraton": "1",
  4673 + "voteVibraton": "1",
  4674 + "led": "1"
  4675 + },
  4676 + "packetTag": "1"
  4677 +}
  4678 +```
  4679 +
  4680 +返回
  4681 +接收:
  4682 +fun: "baseStationBaseConfig"
  4683 +baseId: 1//基站ID
  4684 +infos:{ }//返回基站
  4685 +
  4686 +指令样例:
  4687 +
  4688 +```json
  4689 +{
  4690 + "fun": "baseStationBaseConfig",
  4691 + "baseId": 1,
  4692 + "infos": {
  4693 + "bootVibraton": "1",
  4694 + "voteVibraton": "1",
  4695 + "led": "1"
  4696 + },
  4697 + "packetTag": "1"
  4698 +}
  4699 +```
  4700 +
  4701 +| **基站+键盘** | **支持** | **备注** |
  4702 +| --- | --- | --- |
  4703 +| B200-5.8G+T2 | 支持 ||
  4704 +
  4705 +#### 基站AES
  4706 +
  4707 +读
  4708 +发送:
  4709 +fun: "readBaseStationAES" //读基站AES
  4710 +baseId: 0// 0~32 (指令不发送baseID,默认为0表示读取所有基站)
  4711 +params:{}//可不填
  4712 +
  4713 +指令样例:
  4714 +```json
  4715 +{
  4716 + "fun":"readBaseStationAES",
  4717 + "baseId":0,
  4718 + "packetTag":"1"
  4719 +}
  4720 +```
  4721 +
  4722 +写
  4723 +发送:
  4724 +fun: "writeBaseStationAES" //写基站AES
  4725 +baseId: 1 //1~32 (必须指定基站)
  4726 +params:{"value":"0"}//
  4727 +
  4728 +| **Json字段** | **字段含义** | **赋值及含义** |
  4729 +| --- | --- | --- |
  4730 +| baseId | 基站ID | 1~32 |
  4731 +| value | 加密模式 | 0:无线不加密<br>1:无线AES128加密<br>2:无线 AES256加密 |
  4732 +
  4733 +指令样例:
  4734 +```json
  4735 +{
  4736 + "fun":"writeBaseStationAES",
  4737 + "baseId":1,
  4738 + "packetTag":"1"
  4739 +}
  4740 +```
  4741 +
  4742 +返回
  4743 +接收:
  4744 +fun: "baseStationAES"
  4745 +baseId: 1//基站ID
  4746 +infos:{"value":"1"}//返回基站AES
  4747 +
  4748 +指令样例:
  4749 +```json
  4750 +{
  4751 + "fun": "baseStationAES",
  4752 + "baseId": 1,
  4753 + "infos": {
  4754 + "value": "0"
  4755 + },
  4756 + "packetTag": "1"
  4757 +}
  4758 +```
  4759 +
  4760 +克隆参数
  4761 +发送:
  4762 +fun: "copyBaseStationAES" //克隆基站AES参数
  4763 +baseId: 0
  4764 +params:{}//
  4765 +
  4766 +| **Json字段** | **字段含义** | **赋值及含义** |
  4767 +| --- | --- | --- |
  4768 +| destBaseID | 目标基站ID | 1~32 |
  4769 +| sourceBaseID | 来源基站ID | 1~32 |
  4770 +
  4771 +
  4772 +指令样例:
  4773 +```json
  4774 +{
  4775 + "fun": "copyBaseStationAES",
  4776 + "baseId": 0,
  4777 + "params": {
  4778 + "destBaseID": "2",
  4779 + "sourceBaseID": "1"
  4780 + },
  4781 + "packetTag": "1"
  4782 +}
  4783 +```
  4784 +
  4785 +返回
  4786 +接收:
  4787 +fun: " copyBaseStationAES "
  4788 +baseId: 1//基站ID
  4789 +infos:{"value":"OK"}//返回状态
  4790 +
  4791 +指令样例:
  4792 +```json
  4793 +{
  4794 + "fun": "baseStationAES",
  4795 + "baseId": 1,
  4796 + "infos": {
  4797 + "value": "OK"
  4798 + },
  4799 + "packetTag": "1"
  4800 +}
  4801 +```
  4802 +支持设备说明
  4803 +
  4804 +| **基站+键盘** | **支持** | **备注** |
  4805 +| --- | --- | --- |
  4806 +| B200-2.4GM+S6 | 支持 | |
  4807 +
  4808 +
  4809 +### 键盘
  4810 +
  4811 +键盘写参数可以不指定键盘SN,则对所有在线键盘进行写操作,但没有键盘状态返回。如需指定键盘信息下发,则需要指定键盘SN,所有键盘状态返回。
  4812 +
  4813 +注:如果一条指定键盘指令中有一个keySN为空,则该指令会按不指定键盘执行。
  4814 +
  4815 +#### 键盘外设(只写)
  4816 +
  4817 +写
  4818 +
  4819 +fun: "writeKeypadDevice" //写键盘外设,由led灯、蜂鸣器、马达组合
  4820 +params:{} //
  4821 +
  4822 +数组对象,对象中的默认值为空字符串,各类(led、beep、motor)外设字段都不设置,表示该类不设置
  4823 +
  4824 +| **Json字段** | **字段含义** | **赋值及含义** |
  4825 +| --- | --- | --- |
  4826 +| keySn | 键盘SN |空字符串,为所有在线键盘|
  4827 +| ledTimes | Led灯闪烁次数 | 0~255 (0是马上灭,255是长亮)|
  4828 +| ledOnTime | Led灯每次开时间 |0~255 (单位0.1s)|
  4829 +| ledOffTime | Led灯每次关时间 |0~255 (单位0.1s,为0就是连续亮)|
  4830 +| ledColorR | Led灯灯颜色,红值 |0~255(现只支持0灭和1亮,,>1也认为是1)|
  4831 +| ledColorG | Led灯灯颜色,绿值 |0~255(现只支持0灭和1亮,,>1也认为是1)|
  4832 +| ledColorB | Led灯灯颜色,蓝值 |0~255(现只支持0灭和1亮,,>1也认为是1)|
  4833 +| beepTimes | 蜂鸣器响次数 | 0~255 (0是马上响,255是长响) |
  4834 +| beepOnTime | 蜂鸣器每次开时间 |0~255 (单位0.1s)|
  4835 +| beepOffTime | 蜂鸣器每次关时间 |0~255 (单位0.1s,为0就是连续响)|
  4836 +| motorTimes |马达震动次数|0~255|
  4837 +| motorOnTime | 马达每次开时间 |0~255 (单位0.1s)|
  4838 +| motorOffTime | 马达每次关时间 |0~255 (单位0.1s,为0就是连续振动)|
  4839 +
  4840 +指令样例:
  4841 +
  4842 +所有键盘
  4843 +
  4844 +```json
  4845 +{
  4846 + "fun": "writeKeypadDevice",
  4847 + "baseId": 1,
  4848 + "params": {
  4849 + "ledTimes": "3",
  4850 + "ledOnTime": "1",
  4851 + "ledOffTime": "1",
  4852 + "ledColorR": "1",
  4853 + "ledColorG": "1",
  4854 + "ledColorB": "1",
  4855 + "beepTimes": "3",
  4856 + "beepOnTime": "1",
  4857 + "beepOffTime": "1",
  4858 + "motorTimes": "3",
  4859 + "motorOnTime": "2",
  4860 + "motorOffTime": "1"
  4861 + },
  4862 + "packetTag": "1"
  4863 +}
  4864 +```
  4865 +
  4866 +返回
  4867 +
  4868 +fun: "writeKeypadDevice"
  4869 +infos:{"state":"OK"}//返回状态,成功为OK
  4870 +
  4871 +
  4872 +指令样例:
  4873 +
  4874 +```json
  4875 +{
  4876 + "fun": "writeKeypadDevice",
  4877 + "baseId": 0,
  4878 + "infos": {
  4879 + "keySn": "0000000000",
  4880 + "state": "OK"
  4881 + },
  4882 + "packetTag": "1"
  4883 +}
  4884 +```
  4885 +
  4886 +指定键盘
  4887 +
  4888 +```json
  4889 +{
  4890 + "fun": "writeKeypadDevice",
  4891 + "keySnList": [{
  4892 + "keySn": "0007899478"
  4893 + }],
  4894 + "params": {
  4895 + "ledTimes": "3",
  4896 + "ledOnTime": "1",
  4897 + "ledOffTime": "1",
  4898 + "ledColorR": "1",
  4899 + "ledColorG": "1",
  4900 + "ledColorB": "1",
  4901 + "beepTimes": "3",
  4902 + "beepOnTime": "1",
  4903 + "beepOffTime": "1",
  4904 + "motorTimes": "3",
  4905 + "motorOnTime": "2",
  4906 + "motorOffTime": "1"
  4907 + },
  4908 + "packetTag": "1"
  4909 +}
  4910 +```
  4911 +
  4912 +返回
  4913 +
  4914 +fun: "writeKeypadDevice"
  4915 +infos:{}//数组对象,同发送的
  4916 +
  4917 +
  4918 +指令样例:
  4919 +
  4920 +```json
  4921 +{
  4922 + "baseId": 3,
  4923 + "fun": "writeKeypadDevice",
  4924 + "infos": {
  4925 + "keySn": "0007899478",
  4926 + "state": "OK"
  4927 + },
  4928 + "packetTag": "1"
  4929 +}
  4930 +```
  4931 +
  4932 +支持设备说明
  4933 +
  4934 +| **基站+键盘** | **支持** | **备注** |
  4935 +| --- | --- | --- |
  4936 +| B200-5.8G+T2 | 支持 | 蜂鸣器部分参数无效 |
  4937 +
  4938 +#### 键盘反馈参数
  4939 +
  4940 +读
  4941 +发送:
  4942 +fun: "readKeypadFeedbackMode" //读键盘反馈模式参数
  4943 +baseId: 0//0~32 (指令不发送baseID,默认为0表示读取所有基站)
  4944 +params:{}//读取时不需要
  4945 +
  4946 +指令样例:
  4947 +
  4948 +```json
  4949 +{
  4950 + "fun": "readKeypadFeedbackMode",
  4951 + "baseId": 0,
  4952 + "packetTag": "1"
  4953 +}
  4954 +```
  4955 +
  4956 +写
  4957 +
  4958 +发送:
  4959 +fun: "writeKeypadFeedbackMode" //写键盘反馈模式参数
  4960 +baseId: 1//1~32 (必须指定基站)
  4961 +params:{"mode":"1", "value":"4"}//
  4962 +
  4963 +| **Json字段** | **字段含义** | **赋值及含义** |
  4964 +| --- | --- | --- |
  4965 +|mode|反馈模式| 0:不启用(默认0不启用)<br>1:通用键码|
  4966 +|value|反馈最大有效按键|1\~10|
  4967 +
  4968 +指令样例:
  4969 +
  4970 +```json
  4971 +{
  4972 + "fun": "writeKeypadFeedbackMode",
  4973 + "baseId": 0,
  4974 + "params": {
  4975 + "mode": "1",
  4976 + "value": "4"
  4977 + },
  4978 + "packetTag": "1"
  4979 +}
  4980 +```
  4981 +
  4982 +返回
  4983 +
  4984 +接收:
  4985 +fun: "keypadFeedbackMode"
  4986 +baseId: 1//基站ID
  4987 +infos:{ "mode":"1", "value":"4"}//返回键盘反馈模式参数值
  4988 +
  4989 +| **Json字段** | **字段含义** | **赋值及含义** |
  4990 +| --- | --- | --- |
  4991 +|mode|反馈模式| 0:不启用(默认0不启用)<br>1:通用键码,不显示|
  4992 +|value|反馈最大有效按键|1\~10|
  4993 +
  4994 +指令样例:
  4995 +```json
  4996 +{
  4997 + "fun": "keypadFeedbackMode",
  4998 + "baseId": 1,
  4999 + "infos": {
  5000 + "mode": "1",
  5001 + "value": "4"
  5002 + },
  5003 + "packetTag": "1"
  5004 +}
  5005 +```
  5006 +
  5007 +支持设备说明
  5008 +
  5009 +| **基站+键盘** | **支持** | **备注** |
  5010 +| --- | --- | --- |
  5011 +| B100-2.4G+S6 | 支持 | |
  5012 +| B200-2.4G+S6 | 支持 | |
  5013 +
  5014 +
  5015 +#### 键盘即时反馈[主动上报]
  5016 +
  5017 +接收:
  5018 +
  5019 +fun: "immediateFeedback"
  5020 +baseId: 1//基站ID
  5021 +infos:{ "keySn":"2307269906", "keyValue":"A"}//返回键盘反馈模式参数值
  5022 +
  5023 +指令样例:
  5024 +
  5025 +```json
  5026 +{
  5027 + "baseId": 1,
  5028 + "fun": "immediateFeedback",
  5029 + "infos": {
  5030 + "keySn": "2307269906",
  5031 + "keyValue": "A"
  5032 + },
  5033 + "packetTag": "0"
  5034 +}
  5035 +```
  5036 +
  5037 +支持设备说明
  5038 +
  5039 +| **基站+键盘** | **支持** | **备注** |
  5040 +| --- | --- | --- |
  5041 +| B100-2.4G+S6 | 支持 | |
  5042 +| B200-2.4G+S6 | 支持 | |
  5043 +
  5044 +#### 键盘上线通知[上报]
  5045 +
  5046 +S6键盘上线后上报键盘SN信息。
  5047 +接收:
  5048 +fun: "keyboardOnlineOne"
  5049 +baseId: 1//基站ID
  5050 +infos:{ "keySn":"1479824643"}//返回键盘反馈模式参数值
  5051 +
  5052 +| **Json字段** | **字段含义** | **赋值及含义** |
  5053 +| --- | --- | --- |
  5054 +|keySn|键盘Sn||
  5055 +
  5056 +指令样例:
  5057 +
  5058 +```json
  5059 +{
  5060 + "fun": "keyboardOnlineOne",
  5061 + "baseId": 1,
  5062 + "infos": {
  5063 + "keySn": "1479824643"
  5064 + },
  5065 + "packetTag": "0"
  5066 +}
  5067 +```
  5068 +
  5069 +支持设备说明
  5070 +
  5071 +| **基站+键盘** | **支持** | **备注** |
  5072 +| --- | --- | --- |
  5073 +| B200-2.4G+S6 | 支持 | |
  5074 +
  5075 +#### 键盘心跳反馈[上报]
  5076 +接收:
  5077 +fun: " KeyboardHeartbeat"
  5078 +baseId: 1//基站ID
  5079 +infos:{ "hModel": "67","keySn":"1479824643","keyValue":"0","ver":"1.0.0","volt":"50"}//返回键盘反馈模式参数值
  5080 +
  5081 +| **Json字段** | **字段含义** | **赋值及含义** |
  5082 +| --- | --- | --- |
  5083 +|hModel|键盘型号|75: T2-5.8G<br>67: S6-2.4G|
  5084 +|keySn|键盘Sn||
  5085 +|keyVer|键盘版本||
  5086 +|Volt|键盘电量|T2百分比值,S6无效|
  5087 +
  5088 +指令样例:
  5089 +
  5090 +```json
  5091 +{
  5092 + "fun": "KeyboardHeartbeat",
  5093 + "baseId": 1,
  5094 + "infos": {
  5095 + "hModel": "67",
  5096 + "keySn": "1479824643",
  5097 + "keyValue": "0",
  5098 + "ver": "1.0.0",
  5099 + "volt": "50"
  5100 + },
  5101 + "packetTag": "0"
  5102 +}
  5103 +```
  5104 +
  5105 +支持设备说明
  5106 +
  5107 +| **基站+键盘** | **支持** | **备注** |
  5108 +| --- | --- | --- |
  5109 +| B100-2.4G+S6 | 支持 |出厂配置有心跳时反馈,出厂配置无心跳时不反馈|
  5110 +| B200-2.4G+S6 | 支持 |出厂配置有心跳时反馈,出厂配置无心跳时不反馈|
  5111 +
  5112 +
  5113 +
  5114 +#### 遥控键盘关机
  5115 +
  5116 +写
  5117 +发送:
  5118 +fun: "remoteKeyShutdown" //遥控键盘关机
  5119 +params:{}//
  5120 +指令样例:
  5121 +
  5122 +```json
  5123 +{
  5124 + "fun": "remoteKeyShutdown",
  5125 + "baseId": 1,
  5126 + "params": [{
  5127 + "keySn": "1837454011"
  5128 + }],
  5129 + "packetTag": "1"
  5130 +}
  5131 +```
  5132 +返回
  5133 +接收:
  5134 +fun: "remoteKeyShutdown"
  5135 +baseId: 1//基站ID
  5136 +infos:{"keySn":"1837454011","state":"OK"}//遥控键盘关机
  5137 +
  5138 +
  5139 +指令样例:
  5140 +```json
  5141 +{
  5142 + "fun": "remoteKeyShutdown",
  5143 + "baseId": 1,
  5144 + "infos": {
  5145 + "keySn": "1837454011",
  5146 + "state": "OK"
  5147 + },
  5148 + "packetTag": "1"
  5149 +}
  5150 +```
  5151 +
  5152 +支持设备说明
  5153 +| **基站+键盘** | **支持** | **备注** |
  5154 +| --- | --- | --- |
  5155 +| B100-2.4G+S6 | 支持 ||
  5156 +| B200-2.4G+S6 | 支持 ||
  5157 +| B200-5.8G+T2 | 支持 ||
  5158 +
  5159 +#### 键盘暂停休眠
  5160 +
  5161 +写
  5162 +
  5163 +发送:
  5164 +fun: "writeKeyboardPauseSleep" //键盘暂停休眠
  5165 +params:{"value"} //
  5166 +
  5167 +| **Json字段** | **字段含义** | **赋值及含义** |
  5168 +| --- | --- | --- |
  5169 +|baseId|基站ID|0-32<br> 0:所有基站,默认值|
  5170 +|value|预留|0 :10秒有效(默认值)|
  5171 +
  5172 +
  5173 +指令样例:
  5174 +
  5175 +```json
  5176 +{
  5177 + "fun": "writeKeyboardPauseSleep",
  5178 + "baseId": 0,
  5179 + "params": {
  5180 + "value": "0"
  5181 + },
  5182 + "packetTag": "1"
  5183 +}
  5184 +```
  5185 +
  5186 +返回
  5187 +
  5188 +接收:
  5189 +fun: "writeKeyboardPauseSleep"
  5190 +baseId: 1//基站ID
  5191 +infos:{"value":"0"}//10秒
  5192 +
  5193 +
  5194 +指令样例:
  5195 +
  5196 +```json
  5197 +{
  5198 + "fun": "writeKeyboardPauseSleep",
  5199 + "baseId": 1,
  5200 + "infos": {
  5201 + "value": "0"
  5202 + },
  5203 + "packetTag": "1"
  5204 +}
  5205 +```
  5206 +
  5207 +支持设备说明
  5208 +
  5209 +| **基站+键盘** | **支持** | **备注** |
  5210 +| --- | --- | --- |
  5211 +| B100-2.4G+S6 | 支持 ||
  5212 +| B200-2.4G+S6 | 支持 ||
  5213 +
  5214 +#### 键盘短消息
  5215 +
  5216 +写
  5217 +fun: "writeKeyMessage" //写键盘短消息
  5218 +params:{} // 数组对象,对象中的默认值为空字符串
  5219 +
  5220 +| **Json字段** | **字段含义** | **赋值及含义** |
  5221 +| --- | --- | --- |
  5222 +|keySn|键盘SN|空字符串,为所有在线键盘|
  5223 +|txt|短消息内容|字符串最长80字节|
  5224 +
  5225 +
  5226 +指令样例:
  5227 +
  5228 +所有键盘
  5229 +```json
  5230 +{
  5231 + "fun": "writeKeyMessage",
  5232 + "baseId": 0,
  5233 + "params": {
  5234 + "txt": "最新消息"
  5235 + },
  5236 + "packetTag": "1"
  5237 +}
  5238 +```
  5239 +
  5240 +返回
  5241 +fun: "writeKeyMessage"
  5242 +infos:{"state":"OK"}//返回状态,成功为OK
  5243 +
  5244 +
  5245 +指令样例:
  5246 +
  5247 +```json
  5248 +{
  5249 + "fun": "writeKeyMessage",
  5250 + "baseId": 0,
  5251 + "infos": {
  5252 + "keySn": "0000000000",
  5253 + "state": "OK"
  5254 + },
  5255 + "packetTag": "1"
  5256 +}
  5257 +```
  5258 +
  5259 +指定键盘
  5260 +
  5261 +```json
  5262 +{
  5263 + "fun": "writeKeyMessage",
  5264 + "keySnList": [{
  5265 + "keySn": "0007899478"
  5266 + }],
  5267 + "params": {
  5268 + "txt": "最新消息"
  5269 + },
  5270 + "packetTag": "1"
  5271 +}
  5272 +```
  5273 +
  5274 +返回
  5275 +
  5276 +fun: "writeKeyMessage"
  5277 +infos:{}//数组对象,同发送的
  5278 +
  5279 +
  5280 +指令样例:
  5281 +
  5282 +```json
  5283 +{
  5284 + "baseId": 3,
  5285 + "fun": "writeKeyMessage",
  5286 + "infos": {
  5287 + "keySn": "0007899478",
  5288 + "state": "OK"
  5289 + },
  5290 + "packetTag": "1"
  5291 +}
  5292 +```
  5293 +
  5294 +支持设备说明
  5295 +
  5296 +| **基站+键盘** | **支持** | **备注** |
  5297 +| --- | --- | --- |
  5298 +| B100-2.4G+S6 | 支持 ||
  5299 +| B200-2.4G+S6 | 支持 ||
  5300 +
  5301 +#### 指定键盘修改FSN[公司内部使用指令]
  5302 +
  5303 +写
  5304 +
  5305 +fun: "writeKeyFSN" //写键盘修改FSN
  5306 +params:{} // 数组对象,对象中的默认值为空字符串
  5307 +
  5308 +| **Json字段** | **字段含义** | **赋值及含义** |
  5309 +| --- | --- | --- |
  5310 +|keySnOld|键盘旧SN||
  5311 +|keySnNew|键盘新SN||
  5312 +
  5313 +
  5314 +指令样例:
  5315 +
  5316 +指定键盘
  5317 +
  5318 +```json
  5319 +{
  5320 + "fun": "writeKeyFSN",
  5321 + "params": {
  5322 + "keySnList": [{
  5323 + "keySnOld": "0007899478",
  5324 + "keySnNew": "0007899479"
  5325 + },
  5326 + {
  5327 + "keySnOld": "0007899488",
  5328 + "keySnNew": "0007899489"
  5329 + }
  5330 + ]
  5331 + },
  5332 + "packetTag": "1"
  5333 +}
  5334 +```
  5335 +
  5336 +返回
  5337 +
  5338 +fun: "writeKeyFSN"
  5339 +infos:{}//数组对象,同发送的
  5340 +
  5341 +
  5342 +指令样例:
  5343 +
  5344 +```json
  5345 +{
  5346 + "baseId": 3,
  5347 + "fun": "writeKeyFSN",
  5348 + "infos": {
  5349 + "keySn": "0007899478",
  5350 + "state": "OK"
  5351 + },
  5352 + "packetTag": "1"
  5353 +}
  5354 +```
  5355 +
  5356 +支持设备说明
  5357 +| **基站+键盘** | **支持** | **备注** |
  5358 +| --- | --- | --- |
  5359 +| B100-2.4G+S6 | 支持 ||
  5360 +| B200-2.4G+S6 | 支持 ||
  5361 +
  5362 +## 键盘显示设置
  5363 +
  5364 +注:返回指令中的\"baseId\":0, 可忽略不处理
  5365 +
  5366 +### 空闲标题
  5367 +
  5368 +修改参数后设备重启生效。
  5369 +
  5370 +发送:
  5371 +fun: "writeKeypadFreeTitle" //写键盘空闲标题显示
  5372 +params:{}
  5373 +
  5374 +| **Json字段** | **字段含义** | **赋值及含义** |
  5375 +| --- | --- | --- |
  5376 +|title|标题|最多8个汉字(16个字符)|
  5377 +
  5378 +指令样例:
  5379 +```json
  5380 +{
  5381 + "fun": "writeKeypadFreeTitle",
  5382 + "baseId": 1,
  5383 + "params": {
  5384 + "title": "请认真听讲"
  5385 + }
  5386 +}
  5387 +```
  5388 +
  5389 +接收:
  5390 +fun: "writeKeypadFreeTitle" //写键盘空闲标题显示
  5391 +baseId: 1//接收到指令的基站ID
  5392 +infos:{}//
  5393 +
  5394 +| **Json字段** | **字段含义** | **赋值及含义** |
  5395 +| --- | --- | --- |
  5396 +|keySn|键盘SN||
  5397 +|state|返回信息|OK(成功)|
  5398 +
  5399 +
  5400 +指令样例:
  5401 +
  5402 +```json
  5403 +{
  5404 + "fun": "writeKeypadFreeTitle",
  5405 + "baseId": 0,
  5406 + "infos": {
  5407 + "state": "OK"
  5408 + },
  5409 + "packetTag": "1"
  5410 +}
  5411 +```
  5412 +
  5413 +支持设备说明
  5414 +| **基站+键盘** | **支持** | **备注** |
  5415 +| --- | --- | --- |
  5416 +| B200-5.8G+T2 | 支持 ||
  5417 +
  5418 +### 自定义信息
  5419 +
  5420 +当启动PIN码签到绑定模式,则可对键盘进行绑定操作
  5421 +发送:
  5422 +fun: "writeKeypadCustomInfo" //写键盘的自定义信息
  5423 +params:{}//数组对象,字段不填则保留上次值。
  5424 +
  5425 +| **Json字段** | **字段含义** | **赋值及含义** |
  5426 +| --- | --- | --- |
  5427 +| keySn| 键盘Sn| 空则为所有在线键盘,其他数组值无效|
  5428 +| scoreMode| 分数模式|1:清除<br>2:字符显示(默认值)<br>3:五角星显示<br>4:爱心显示[S6有效]|
  5429 +| scoreValue| 分数值|scoreMode == 1,此处无效. <br>scoreMode == 2,8个字符长度. <br>scoreMode == 3,0~6,2个分数表示1个五角星,最多3个. <br> scoreMode == 4,0~6,2个分数表示1个爱心,最多3个 [S6有效]|
  5430 +|tipText|提示文本| 最多8个汉字(16个字符),键盘第二行显示|
  5431 +
  5432 +
  5433 +指令样例:
  5434 +样例目的:将SN为"1479824643"的键盘积分位置设置成"99",第二行文本位置设置成"已绑定"。
  5435 +
  5436 +```json
  5437 +{
  5438 + "fun": "writeKeypadCustomInfo",
  5439 + "baseId": 1,
  5440 + "params": [{
  5441 + "keySn": "1479824643",
  5442 + "scoreMode": "2",
  5443 + "scoreValue": "99",
  5444 + "tipText": "已绑定"
  5445 + }],
  5446 + "packetTag": "1"
  5447 +}
  5448 +```
  5449 +
  5450 +接收:
  5451 +
  5452 +指定键盘
  5453 +
  5454 +fun: "writeKeypadCustomInfo" //写键盘的用户信息
  5455 +baseId:0 //接收到指令的基站ID
  5456 +infos:{}//数组对象
  5457 +
  5458 +| **Json字段** | **字段含义** | **赋值及含义** |
  5459 +| --- | --- | --- |
  5460 +|keySn|键盘SN||
  5461 +|state|状态|OK(成功)|
  5462 +
  5463 +指令样例:
  5464 +
  5465 +
  5466 +```json
  5467 +{
  5468 + "fun": "writeKeypadCustomInfo",
  5469 + "baseId": 0,
  5470 + "infos": [{
  5471 + "keySn": "1479824643",
  5472 + "state": "OK"
  5473 + }],
  5474 + "packetTag": "1"
  5475 +}
  5476 +```
  5477 +
  5478 +所有键盘
  5479 +
  5480 +fun: "writeKeypadCustomInfo" //写键盘的用户信息
  5481 +baseId:0 //接收到指令的基站ID
  5482 +infos:{"state":"OK"}//返回状态,成功为OK
  5483 +
  5484 +
  5485 +指令样例:
  5486 +
  5487 +```json
  5488 +{
  5489 + "fun": "writeKeypadCustomInfo",
  5490 + "baseId": 0,
  5491 + "infos": {
  5492 + "state": "OK"
  5493 + },
  5494 + "packetTag": "1"
  5495 +}
  5496 +```
  5497 +
  5498 +支持设备说明
  5499 +
  5500 +| **基站+键盘** | **支持** | **备注** |
  5501 +| --- | --- | --- |
  5502 +| B100-2.4G+S6 | 支持 ||
  5503 +| B200-2.4G+S6 | 支持 ||
  5504 +| B200-5.8G+T2 | 支持 ||
  5505 +
  5506 +
  5507 +### 用户姓名
  5508 +
  5509 +当启动PIN码签到绑定模式,则可对键盘进行绑定操作
  5510 +
  5511 +发送:
  5512 +fun: "writeKeypadUserName" //写键盘的用户姓名
  5513 +params:{}//数组对象,字段不填则保留上次值。
  5514 +
  5515 +| **Json字段** | **字段含义** | **赋值及含义** |
  5516 +| --- | --- | --- |
  5517 +|keySn|键盘SN|空则为所有在线键盘,其他数组值无效|
  5518 +|userName|姓名|最多24个汉字(48个字符),键盘左上角显示|
  5519 +
  5520 +指令样例:
  5521 +
  5522 +```json
  5523 +{
  5524 + "fun": "writeKeypadUserName",
  5525 + "baseId": 1,
  5526 + "params": [{
  5527 + "keySn": "1479824643",
  5528 + "userName": "张三"
  5529 + }],
  5530 + "packetTag": "1"
  5531 +}
  5532 +```
  5533 +
  5534 +接收:
  5535 +
  5536 +指定键盘
  5537 +fun: "writeKeypadUserName" //写键盘的用户姓名
  5538 +baseId:0 //接收到指令的基站ID
  5539 +infos:{}//数组对象
  5540 +
  5541 +| **Json字段** | **字段含义** | **赋值及含义** |
  5542 +| --- | --- | --- |
  5543 +|keySn|键盘SN||
  5544 +|state|状态|OK(成功)|
  5545 +
  5546 +
  5547 +指令样例:
  5548 +
  5549 +```json
  5550 +{
  5551 + "fun": "writeKeypadUserName",
  5552 + "baseId": 0,
  5553 + "infos": {
  5554 + "keySn": "1479824643",
  5555 + "state": "OK"
  5556 + },
  5557 + "packetTag": "1"
  5558 +}
  5559 +```
  5560 +
  5561 +所有键盘
  5562 +
  5563 +fun: "writeKeypadUserName" //写键盘的用户信息
  5564 +baseId:0 //接收到指令的基站ID
  5565 +infos:{"state":"OK"}//返回状态,成功为OK
  5566 +
  5567 +
  5568 +指令样例:
  5569 +
  5570 +```json
  5571 +{
  5572 + "fun": "writeKeypadUserName",
  5573 + "baseId": 0,
  5574 + "infos": {
  5575 + "state": "OK"
  5576 + },
  5577 + "packetTag": "1"
  5578 +}
  5579 +```
  5580 +
  5581 +支持设备说明
  5582 +
  5583 +| **基站+键盘** | **支持** | **备注** |
  5584 +| --- | --- | --- |
  5585 +| B100-2.4G+S6 | 支持 ||
  5586 +| B200-2.4G+S6 | 支持 ||
  5587 +| B200-5.8G+T2 | 支持 ||
  5588 +
  5589 +### 指定用户姓名[C100B+S6旧款]
  5590 +
  5591 +当启动PIN码签到绑定模式,则可对键盘进行绑定操作
  5592 +发送:
  5593 +fun: "writeOneKeypadUserName" //写键盘的用户姓名
  5594 +params:{}//数组对象,字段不填则保留上次值。
  5595 +
  5596 +| **Json字段** | **字段含义** | **赋值及含义** |
  5597 +| --- | --- | --- |
  5598 +|keySn|键盘SN|空则为所有在线键盘,其他数组值无效|
  5599 +|userName|姓名|最多5个汉字(10个字符), 键盘左上角显示|
  5600 +
  5601 +指令样例:
  5602 +
  5603 +```json
  5604 +{
  5605 + "fun": "writeOneKeypadUserName",
  5606 + "baseId": 0,
  5607 + "params": [{
  5608 + "keySn": "1479824643",
  5609 + "value": "张三"
  5610 + }],
  5611 + "packetTag": "1"
  5612 +}
  5613 +```
  5614 +
  5615 +接收:
  5616 +
  5617 +指定键盘
  5618 +fun: "oneKeypadUserName" //写键盘的用户姓名
  5619 +baseId:1 //接收到指令的基站ID
  5620 +infos:{}//数组对象
  5621 +
  5622 +| **Json字段** | **字段含义** | **赋值及含义** |
  5623 +| --- | --- | --- |
  5624 +|keySn|键盘SN|空则为所有在线键盘,其他数组值无效|
  5625 +|userName|姓名|最多5个汉字(10个字符), 键盘左上角显示|
  5626 +
  5627 +指令样例:
  5628 +
  5629 +```json
  5630 +{
  5631 + "fun": "oneKeypadUserName",
  5632 + "baseId": 1,
  5633 + "infos": {
  5634 + "keySn": "1479824643",
  5635 + "value": "张三"
  5636 + },
  5637 + "packetTag": "1"
  5638 +}
  5639 +```
  5640 +
  5641 +支持设备说明
  5642 +
  5643 +| **基站+键盘** | **支持** | **备注** |
  5644 +| --- | --- | --- |
  5645 +| C100B-2.4G+S6 | 支持 |S6旧款支持,不支持生僻字。|
  5646 +
  5647 +
  5648 +## 键盘在线信息
  5649 +
  5650 +### 自动返回在线信息
  5651 +
  5652 +基站连接成功后,自动返回所有在线的键盘信息。当键盘在线状态改变时,也会统一返回。
  5653 +
  5654 +接收:
  5655 +fun: "keypadOnLine" //键盘在线状态
  5656 +infos:{} //数组对象
  5657 +
  5658 +| **Json字段** | **字段含义** | **赋值及含义** |
  5659 +| --- | --- | --- |
  5660 +|baseId|基站id|keySn键盘所在基站id|
  5661 +|keySn|键盘SN||
  5662 +|keyVer|键盘版本||
  5663 +
  5664 +
  5665 +指令样例:
  5666 +
  5667 +```json
  5668 +{
  5669 + "fun": "keypadOnLine",
  5670 + "baseId": 0,
  5671 + "infos": [{
  5672 + "baseId": "1",
  5673 + "keySn": "1837454011",
  5674 + "ver": "1.0.6"
  5675 + },
  5676 + {
  5677 + "baseId": "1",
  5678 + "keySn": "1837454012",
  5679 + "ver": "1.0.6"
  5680 + }
  5681 + ],
  5682 + "packetTag": "1"
  5683 +}
  5684 +```
  5685 +
  5686 +支持设备说明
  5687 +
  5688 +| **基站+键盘** | **支持** | **备注** |
  5689 +| --- | --- | --- |
  5690 +| B200-5.8G+T2| 支持 ||
  5691 +
  5692 +
  5693 +### 主动获取在线信息
  5694 +
  5695 +应用程序在需要时,也可主动获取所有在线键盘信息。
  5696 +
  5697 +发送:
  5698 +fun: "getKeypadOnLine" //获取键盘在线状态
  5699 +params:{
  5700 +"times":1 //基站扫描键盘时长,单位秒 范围1-10秒
  5701 +} //
  5702 +
  5703 +
  5704 +指令样例:
  5705 +
  5706 +```json
  5707 +{
  5708 + "fun": "getKeypadOnLine",
  5709 + "baseId": 0,
  5710 + "params": {
  5711 + "times": 2
  5712 + },
  5713 + "packetTag": "1"
  5714 +}
  5715 +```
  5716 +
  5717 +接收:
  5718 +fun: "keypadOnLine" //键盘在线状态
  5719 +infos:{} //数组对象
  5720 +
  5721 +| **基站+键盘** | **支持** | **备注** |
  5722 +| --- | --- | --- |
  5723 +|baseId|基站id|keySn键盘所在基站id|
  5724 +|keySn|键盘Sn||
  5725 +|keyVer|键盘版本||
  5726 +|Volt|键盘电量|T2百分比值,S6无效|
  5727 +
  5728 +
  5729 +指令样例:
  5730 +
  5731 +```json
  5732 +{
  5733 + "fun": "keypadOnLine",
  5734 + "baseId": 0,
  5735 + "infos": [{
  5736 + "baseId": "1",
  5737 + "keySn": "1837454011",
  5738 + "ver": "1.0.6",
  5739 + "hModel": "67",
  5740 + "Volt": "100"
  5741 + },
  5742 + {
  5743 + "baseId": "1",
  5744 + "keySn": "1837454012",
  5745 + "ver": "1.0.6",
  5746 + "hModel": "67",
  5747 + "Volt": "30"
  5748 + }
  5749 + ],
  5750 + "packetTag": "1"
  5751 +}
  5752 +```
  5753 +
  5754 +支持设备说明
  5755 +| **基站+键盘** | **支持** | **备注** |
  5756 +| --- | --- | --- |
  5757 +| B100-2.4G+S6 | 支持 |键盘电量:无效|
  5758 +| B200-2.4G+S6 | 支持 |键盘电量:无效|
  5759 +| B200-5.8G+T2 | 支持 |键盘电量:百分比值|
  5760 +
  5761 +
  5762 +## 系统参数
  5763 +
  5764 +### 退出WSCmdApp
  5765 +
  5766 +WSCmdApp,WSCmdApp回应后将结束WSCmdApp.exe进程。
  5767 +发送:
  5768 +fun: "exit" //退出WSCmdApp
  5769 +params:{}//无该值
  5770 +packetTag:"1"//收到的packetTag,可用于分析通信状态
  5771 +
  5772 +
  5773 +指令样例:
  5774 +
  5775 +```json
  5776 +{
  5777 + "fun": "exit",
  5778 + "packetTag": "1"
  5779 +}
  5780 +```
  5781 +
  5782 +接收:
  5783 +
  5784 +fun: "exit" //退出WSCmdApp
  5785 +infos:{}//无该值
  5786 +
  5787 +
  5788 +指令样例:
  5789 +
  5790 +```json
  5791 +{
  5792 + "fun": "exit",
  5793 + "packetTag": "1"
  5794 +}
  5795 +```
  5796 +
  5797 +注意:配置文件中启用,命令才有效。
  5798 +
  5799 +
  5800 +
  5801 +### 支持设备说明
  5802 +
  5803 +| **基站+键盘** | **支持** | **备注** |
  5804 +| --- | --- | --- |
  5805 +| B100-2.4G+S6 | 支持 ||
  5806 +| B200-2.4G+S6 | 支持 ||
  5807 +| B200-5.8G+T2 | 支持 ||
  5808 +
  5809 +## 异常处理
  5810 +
  5811 +### WSCmdApp收到数据异常
  5812 +
  5813 +WSCmdApp收到异常数据,会不做处理,并返回以下错误信息描述。
  5814 +
  5815 +接收:
  5816 +fun: "error" //功能错误
  5817 +baseId: //无该值
  5818 +infos:{ "funId":"F0001","code":"10002"}//
  5819 +
  5820 +
  5821 +指令样例:
  5822 +```json
  5823 +{
  5824 + "fun": "error",
  5825 + "infos": {
  5826 + "funId": "F0001",
  5827 + "code": "10002"
  5828 + },
  5829 + "packetTag": "1"
  5830 +}
  5831 +```
  5832 +
  5833 +| **code** | **含义** |
  5834 +| --- | --- |
  5835 +|10001|不能正确解析的JSON数据|
  5836 +|10002|解析JSON错误|
  5837 +|20001|基站未连接|
  5838 +|20002|功能不支持|
  5839 +|20003|基站ID为负数,应用可以不传ID,默认为0|
  5840 +|20004|参数错误|
  5841 +|30001|找不到对应的SN|
  5842 +|40001|升级功能只能支持一个基站在线|
  5843 +|50001|此功能必须指定基站ID|
  5844 +|60001|此功能必须指定键盘SN|
  5845 +
  5846 +| **funId** | **含义** |
  5847 +| --- | --- |
  5848 +|F0001|基站未连接|
  5849 +|F0002|读基站信道|
  5850 +|F0003|写基站信道|
  5851 +|F0004|读基站baseId|
  5852 +|F0005|写基站baseId|
  5853 +|F0006|读基站名称|
  5854 +|F0007|写基站名称|
  5855 +|F0008|读键盘关机时间等级|
  5856 +|F0009|写键盘关机时间等级|
  5857 +|F0010|读基站配对码|
  5858 +|F0011|写基站配对码|
  5859 +|F0012|读基站序列号|
  5860 +|F0013|写基站序列号|
  5861 +|F0014|读基站硬件和软件版本|
  5862 +|F0015|写基站硬件版本|
  5863 +|F0016|读基站类型|
  5864 +|F0017|写基站类型|
  5865 +|F0018|读基站键盘容量和Lock|
  5866 +|F0019|写基站键盘容量和Lock|
  5867 +|F0020|读手动获取返回在线信息|
  5868 +|F0021|写手动获取返回在线信息|
  5869 +|F0022|读基站设备RF功率|
  5870 +|F0023|写基站设备RF功率|
  5871 +|F0024|读基站设备配对模式或基站名称(自定义)|
  5872 +|F0025|写基站设备配对模式|
  5873 +|F0026|读基站快速配对低功率模式|
  5874 +|F0027|写基站快速配对低功率模式|
  5875 +|F0028|读键盘登录菜单显示允许[S6适用]|
  5876 +|F0029|写键盘登录菜单显示允许[S6适用]|
  5877 +|F0030|读键盘登录密码[S6适用]|
  5878 +|F0031|写键盘登录密码[S6适用]|
  5879 +|F0032|读基站名称隐藏开关|
  5880 +|F0033|写基站名称隐藏开关|
  5881 +|F0034|读基站和键盘之间的心跳开关|
  5882 +|F0035|写基站和键盘之间的心跳开关|
  5883 +|F0036|读基站语言|
  5884 +|F0037|写基站语言|
  5885 +|F0038|读基站CRC|
  5886 +|F0039|写基站CRC|
  5887 +|F0040|写广播投票标题|
  5888 +|F0041|核对投票开启密码|
  5889 +|F0042|读基站获取投票开启密码|
  5890 +|F0043|写基站获取投票开启密码|
  5891 +|F0044|读基站用户自定义字符串|
  5892 +|F0045|写基站用户自定义字符串|
  5893 +|F0046|读基站UID|
  5894 +|F0047|写基站UID|
  5895 +|F0048|读键盘反馈模式参数|
  5896 +|F0049|写键盘反馈模式参数|
  5897 +|F0050|读基站当前是开启升级状态|
  5898 +|F0051|写基站当前是开启升级状态|
  5899 +|F0052|手动停止键盘升级状态|
  5900 +|F0053|写键盘当前是开启升级状态|
  5901 +|F0054|写踢出单只键盘|
  5902 +|F0055|写清掉所有键盘|
  5903 +|F0056|写锁定键盘|
  5904 +|F0057|写解锁键盘|
  5905 +|F0058|写T2键盘第二行文本【空闲模式】|
  5906 +|F0059|读考勤基站时钟设置|
  5907 +|F0060|写考勤基站时钟设置|
  5908 +|F0061|读考勤键盘每秒发送考勤信号次数|
  5909 +|F0062|写考勤键盘每秒发送考勤信号次数|
  5910 +|F0063|读考勤键盘发送考勤信号功率|
  5911 +|F0064|写考勤键盘发送考勤信号功率|
  5912 +|F0065|写修改键盘配对码|
  5913 +|F0066|写键盘功能提示预设字符串反馈|
  5914 +|F0067|写空闲模式|
  5915 +|F0068|单选多选带计时模式|
  5916 +|F0069|判断题带计时模式|
  5917 +|F0070|抢答题带计时模式|
  5918 +|F0071|数字题带计时模式|
  5919 +|F0072|绑定带计时模式|
  5920 +|F0073|基站快速配对|
  5921 +|F0074|读基站特征数据|
  5922 +|F0075|遥控关机|
  5923 +|F0076|读键盘在线SN|
  5924 +|F0077|写基站复位|
  5925 +|F0078|写键盘外设指令|
  5926 +|F0079|写键盘配对码|
  5927 +|F0080|写锁定键盘,解锁键盘|
  5928 +|F0081|填空题模式|
  5929 +|F0082|读NFC信息 姓名|
  5930 +|F0083|写NFC信息 姓名|
  5931 +|F0084|写NFC配对码|
  5932 +|F0085|NFC清除指令|
  5933 +|F0086|多题题型开始|
  5934 +|F0087|多题题型暂停|
  5935 +|F0088|多题题型继续上一次|
  5936 +|F0089|多题题型正确答案下发|
  5937 +|F0090|多题题型已答题结果转移|
  5938 +|F0091|写白名单|
  5939 +|F0092|读白名单|
  5940 +|F0093|写基站黑名单|
  5941 +|F0094|读基站黑名单|
  5942 +|F0095|C100B+S6[旧款]写键盘姓名|
  5943 +|F0096|C100B+S6[旧款]读键盘姓名|
  5944 +|F0097|键盘暂停休眠操作|
  5945 +|F0098|异步测试模式|
  5946 +|F0099|Tcp参数读|
  5947 +|F0100|Tcp参数写|
  5948 +|F0101|自定义题型参数|
  5949 +|F0102|写S6短信|
  5950 +|F0103|写S6键盘FSN|
  5951 +|F0104|自由题模式|
  5952 +|F0105|基站AES|
  5953 +|F0106|基站AES 克隆|
  5954 +|F0107|基础参数配置|
  5955 +|F0108|删除指定白名单SN|
  5956 +|F0109|追加指定SN 到白名单|
... ...