Commit 5706ab75ea58eef2e93625779fdb41236866797b

Authored by 刘琴
1 parent 5a911327

完善状态码内容

通讯协议-B200W-MQTT协议[内部].md
... ... @@ -396,14 +396,21 @@
396 396 |0|指令收取成功|
397 397 |10001|不能正确解析的JSON数据|
398 398 |10002|解析JSON错误|
  399 +|10003|下发数据包超长|
399 400 |20001|基站未连接|
400 401 |20002|功能不支持|
401 402 |20003|基站SN格式不正确|
402 403 |20004|参数错误|
403   -|20005|基站在答题中|
  404 +|20005|dataTag错误|
  405 +|20006|键盘SN错误|
  406 +|20007|tip参数错误|
  407 +|20008|value参数错误|
  408 +|30001|基站在答题中|
  409 +|30002|基站忙(内存不足)|
404 410 |40001|升级功能只能支持一个基站|
405 411 |50001|此功能必须指定基站|
406 412 |60001|此功能必须指定键盘SN|
  413 +|70001|没有字库|
407 414  
408 415 - **示例代码**
409 416 ```json
... ...
通讯协议-B200W-MQTT协议[外].md
... ... @@ -156,7 +156,7 @@
156 156 |+version|string||否|基站固件版本|
157 157  
158 158 - **示例代码**
159   -```Json
  159 +```json
160 160 //连接成功
161 161 {
162 162 "fun":"sEvtBsConnectState",
... ... @@ -190,7 +190,7 @@
190 190 |+value|int||是|有冲突的信道|
191 191  
192 192 - **示例代码**
193   -```Json
  193 +```json
194 194 {
195 195 "fun":"sEvtBsChannelConflict",
196 196 "dataTag":"1",
... ... @@ -213,7 +213,7 @@
213 213 |+value|int||是|刷卡的状态<br>1-成功<br>2-失败|
214 214  
215 215 - **示例代码**
216   -```Json
  216 +```json
217 217 {
218 218 "fun":"sEvtBsNfcResults",
219 219 "dataTag":"1", //不需要时可传空字符串
... ... @@ -239,7 +239,7 @@
239 239 |+model|int||是|键盘型号|
240 240  
241 241 - **示例代码**
242   -```Json
  242 +```json
243 243 {
244 244 "fun":"sEvtBsKpOnlineMsg",
245 245 "dataTag":"1",
... ... @@ -268,22 +268,29 @@
268 268 |0|指令收取成功|
269 269 |10001|不能正确解析的JSON数据|
270 270 |10002|解析JSON错误|
  271 +|10003|下发数据包超长|
271 272 |20001|基站未连接|
272 273 |20002|功能不支持|
273 274 |20003|基站SN格式不正确|
274 275 |20004|参数错误|
275   -|20005|基站在答题中|
  276 +|20005|dataTag错误|
  277 +|20006|键盘SN错误|
  278 +|20007|tip参数错误|
  279 +|20008|value参数错误|
  280 +|30001|基站在答题中|
  281 +|30002|基站忙(内存不足)|
276 282 |40001|升级功能只能支持一个基站|
277 283 |50001|此功能必须指定基站|
278 284 |60001|此功能必须指定键盘SN|
  285 +|70001|没有字库|
279 286  
280 287 - **示例代码**
281   -```Json
  288 +```json
282 289 {
283 290 "fun":"sEvtStateCode",
284 291 "dataTag":"1",
285 292 "data":{
286   - "funName":"startKpRollCall",
  293 + "funName":"startKpSignIn",
287 294 "code":"20005"
288 295 }
289 296 }
... ... @@ -301,7 +308,7 @@
301 308 |fun|string|-|是|固定指令名称|
302 309 |dataTag|string|-|否|数据包标识|
303 310 - **示例代码**
304   -```Json
  311 +```json
305 312 {
306 313 "fun":"getBsOnlineState",
307 314 "dataTag":"1"
... ... @@ -318,7 +325,7 @@
318 325 |fun|string|-|是|固定指令名称|
319 326 |dataTag|string|-|否|数据包标识|
320 327 - **示例代码**
321   -```Json
  328 +```json
322 329 {
323 330 "fun":"getBsConnectState",
324 331 "dataTag":"1"
... ... @@ -344,7 +351,7 @@
344 351 |+baseSN|string||否|基站SN|
345 352  
346 353 - **示例代码**
347   -```Json
  354 +```json
348 355 //连接成功
349 356 {
350 357 "fun":"fEvtBsOnlineState",
... ... @@ -373,7 +380,7 @@
373 380 |+timeStamp|long ||否|当前时间的时间戳|
374 381  
375 382 - **示例代码**
376   -```Json
  383 +```json
377 384 {
378 385 "fun":"timeSync",
379 386 "dataTag":"1",
... ... @@ -399,7 +406,7 @@
399 406 |dataTag|string|-|否|数据包标识,可为空字符串|
400 407  
401 408 - **示例代码**
402   -```Json
  409 +```json
403 410 {
404 411 "fun":"getBsModel",
405 412 "dataTag":"1"
... ... @@ -416,7 +423,7 @@
416 423 |dataTag|string|-|否|数据包标识,可为空字符串|
417 424  
418 425 - **示例代码**
419   -```Json
  426 +```json
420 427 {
421 428 "fun":"getBsFWVersion",
422 429 "dataTag":"1"
... ... @@ -436,7 +443,7 @@
436 443 |+value|string|-|是|基站的出厂编码|
437 444  
438 445 - **示例代码**
439   -```Json
  446 +```json
440 447 {
441 448 "fun":"fEvtBsSN",
442 449 "dataTag":"1",
... ... @@ -458,7 +465,7 @@
458 465 |+value|string|-|是|基站的型号名称|
459 466  
460 467 - **示例代码**
461   -```Json
  468 +```json
462 469 {
463 470 "fun":"fEvtBsModel",
464 471 "dataTag":"1",
... ... @@ -480,7 +487,7 @@
480 487 |+value|string||是|基站的固件版本号|
481 488  
482 489 - **示例代码**
483   -```Json
  490 +```json
484 491 {
485 492 "fun":"fEvtBsFWVersion",
486 493 "dataTag":"1",
... ... @@ -502,7 +509,7 @@
502 509 |dataTag|string|-|否|数据包标识,可为空字符串|
503 510  
504 511 - **示例代码**
505   -```Json
  512 +```json
506 513 {
507 514 "fun":"getBsPairCode",
508 515 "dataTag":"1"
... ... @@ -519,7 +526,7 @@
519 526 |dataTag|string|-|否|数据包标识,可为空字符串|
520 527  
521 528 - **示例代码**
522   -```Json
  529 +```json
523 530 {
524 531 "fun":"getBsNfcLogin",
525 532 "dataTag":"1"
... ... @@ -538,7 +545,7 @@
538 545 |+value|string|-|是|设置的基站刷卡配对状态<br>0-关闭刷卡配对<br>1-开启刷卡配对|
539 546  
540 547 - **示例代码**
541   -```Json
  548 +```json
542 549 {
543 550 "fun":"setBsNfcLogin",
544 551 "dataTag":"1",
... ... @@ -558,7 +565,7 @@
558 565 |dataTag|string|-|否|数据包标识,可为空字符串|
559 566  
560 567 - **示例代码**
561   -```Json
  568 +```json
562 569 {
563 570 "fun":"getBsChannel",
564 571 "dataTag":"1"
... ... @@ -577,7 +584,7 @@
577 584 |+value|string|-|是|设置的基站信道,可设范围:1-80|
578 585  
579 586 - **示例代码**
580   -```Json
  587 +```json
581 588 {
582 589 "fun":"setBsChannel",
583 590 "dataTag":"1",
... ... @@ -600,7 +607,7 @@
600 607 |+value|string||是|基站的配对码|
601 608  
602 609 - **示例代码**
603   -```Json
  610 +```json
604 611 {
605 612 "fun":"fEvtBsPairCode",
606 613 "dataTag":"1",
... ... @@ -623,7 +630,7 @@
623 630 |+value|string||是|基站信道|
624 631  
625 632 - **示例代码**
626   -```Json
  633 +```json
627 634 {
628 635 "fun":"fEvtBsChannel",
629 636 "dataTag":"1",
... ... @@ -645,7 +652,7 @@
645 652 |+value|string||是|0-关闭 1-开启|
646 653  
647 654 - **示例代码**
648   -```Json
  655 +```json
649 656 {
650 657 "fun":"fEvtBsNfcLogin",
651 658 "dataTag":"1",
... ... @@ -668,7 +675,7 @@
668 675 |dataTag|string|-|否|数据包标识|
669 676  
670 677 - **示例代码**
671   -```Json
  678 +```json
672 679 {
673 680 "fun":"getBsSSID",
674 681 "dataTag":"1"
... ... @@ -687,7 +694,7 @@
687 694 |+value|string||是|设置的基站SSID,最长12字符|
688 695  
689 696 - **示例代码**
690   -```Json
  697 +```json
691 698 {
692 699 "fun":"setBsSSID",
693 700 "dataTag":"1",
... ... @@ -710,7 +717,7 @@
710 717 |+value|string||是|基站名称|
711 718  
712 719 - **示例代码**
713   -```Json
  720 +```json
714 721 {
715 722 "fun":"fEvtBsSSID",
716 723 "dataTag":"1",
... ... @@ -732,7 +739,7 @@
732 739 |dataTag|string|-|否|数据包标识,可为空字符串|
733 740  
734 741 - **示例代码**
735   -```Json
  742 +```json
736 743 {
737 744 "fun":"getBsKpLanguage",
738 745 "dataTag":"1"
... ... @@ -751,7 +758,7 @@
751 758 |+value|string||是|设置键盘显示的语言<br>1-简体中文<br>2-英文|
752 759  
753 760 - **示例代码**
754   -```Json
  761 +```json
755 762 {
756 763 "fun":"setBsKpLanguage",
757 764 "dataTag":"1",
... ... @@ -774,7 +781,7 @@
774 781 |+value|string||是|设置键盘显示的语言<br>1-简体中文<br>2-英文|
775 782  
776 783 - **示例代码**
777   -```Json
  784 +```json
778 785 {
779 786 "fun":"fEvtBsKpLanguage",
780 787 "dataTag":"1",
... ... @@ -945,7 +952,7 @@
945 952 |+keySns|array||是|基站当前的白名单列表|
946 953  
947 954 - **示例代码**
948   -```Json
  955 +```json
949 956 {
950 957 "fun":"fEvtBsWhitelist",
951 958 "dataTag":"1",
... ... @@ -969,7 +976,7 @@
969 976 |++state|int||是|键盘SN的写入状态 <br>0-写入成功<br> 1-写入失败|
970 977  
971 978 - **示例代码**
972   -```Json
  979 +```json
973 980 {
974 981 "fun":"fEvtSetBsWhitelist",
975 982 "dataTag":"1",
... ... @@ -997,7 +1004,7 @@
997 1004 |++state|int||是|键盘的增加状态 <br>0-增加成功<br> 1-增加失败|
998 1005  
999 1006 - **示例代码**
1000   -```Json
  1007 +```json
1001 1008 {
1002 1009 "fun":"fEvtAddBsWhitelist",
1003 1010 "dataTag":"1",
... ... @@ -1025,7 +1032,7 @@
1025 1032 |++state|int||是|键盘的删除状态 <br>0-删除成功<br> 1-删除失败|
1026 1033  
1027 1034 - **示例代码**
1028   -```Json
  1035 +```json
1029 1036 {
1030 1037 "fun":"fEvtDelBsWhitelist",
1031 1038 "dataTag":"1",
... ... @@ -1052,7 +1059,7 @@
1052 1059 |dataTag|string|-|否|数据包标识,可为空字符串|
1053 1060  
1054 1061 - **示例代码**
1055   -```Json
  1062 +```json
1056 1063 {
1057 1064 "fun":"getBsTcpipParams",
1058 1065 "dataTag":"1"
... ... @@ -1074,7 +1081,7 @@
1074 1081 |+ipAllocation|int||否|基站IP获取方式<br>0 - 手动指定<br>1 - DHCP获取|
1075 1082  
1076 1083 - **示例代码**
1077   -```Json
  1084 +```json
1078 1085 {
1079 1086 "fun":"setBsTcpipParams",
1080 1087 "dataTag":"1",
... ... @@ -1097,7 +1104,7 @@
1097 1104 |dataTag|string|-|否|数据包标识,可为空字符串|
1098 1105  
1099 1106 - **示例代码**
1100   -```Json
  1107 +```json
1101 1108 {
1102 1109 "fun":"getBsMqttParams",
1103 1110 "dataTag":"1"
... ... @@ -1120,7 +1127,7 @@
1120 1127 |+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
1121 1128  
1122 1129 - **示例代码**
1123   -```Json
  1130 +```json
1124 1131 {
1125 1132 "fun":"setBsMqttParams",
1126 1133 "dataTag":"1",
... ... @@ -1151,7 +1158,7 @@
1151 1158 |+ipAllocation|int||否|基站IP获取方式<br>0 - 手动指定<br>1 - DHCP获取|
1152 1159  
1153 1160 - **示例代码**
1154   -```Json
  1161 +```json
1155 1162 {
1156 1163 "fun":"fEvtBsTcpipParams",
1157 1164 "dataTag":"1",
... ... @@ -1181,7 +1188,7 @@
1181 1188 |+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
1182 1189  
1183 1190 - **示例代码**
1184   -```Json
  1191 +```json
1185 1192 {
1186 1193 "fun":"fEvtBsMqttParams",
1187 1194 "dataTag":"1",
... ... @@ -1339,7 +1346,7 @@
1339 1346 |+voltage|double||是|键盘电量|
1340 1347  
1341 1348 - **示例代码**
1342   -```Json
  1349 +```json
1343 1350 {
1344 1351 "fun":"fEvtKpOnlineMsg",
1345 1352 "dataTag":"1",
... ... @@ -1367,7 +1374,7 @@
1367 1374 |+keySns|array||否|需要执行指令的键盘SN数组,空数组表示所有键盘|
1368 1375  
1369 1376 - **示例代码**
1370   -```Json
  1377 +```json
1371 1378 {
1372 1379 "fun":"remoteKpSleep",
1373 1380 "dataTag":"1",
... ... @@ -1516,7 +1523,7 @@
1516 1523 |+tipTitle |string|-|否| 提示标题,长度最多不超过16个字节|
1517 1524  
1518 1525 - **示例代码**
1519   -```Json
  1526 +```json
1520 1527 //按键签到
1521 1528 {
1522 1529 "fun":"startKpSignIn",
... ... @@ -1553,7 +1560,7 @@
1553 1560 |dataTag|string|-|否|数据包标识,可为空字符串|
1554 1561  
1555 1562 - **示例代码**
1556   -```Json
  1563 +```json
1557 1564 {
1558 1565 "fun":"stopKpSignIn",
1559 1566 "dataTag":"1"
... ... @@ -1651,6 +1658,8 @@
1651 1658 |++keySn|string||是|键盘SN|
1652 1659 |++keyValue|string||是|键盘提交的按键值|
1653 1660 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1661 +|++voltage|double||是|键盘电量|
  1662 +|++retryCount|int||是|键盘提交数据的重发次数|
1654 1663  
1655 1664 - **示例代码**
1656 1665  
... ... @@ -1763,6 +1772,8 @@
1763 1772 |++keySn|string||是|键盘SN|
1764 1773 |++keyValue|string||是|键盘提交的按键值<br>1-对<br>2-错|
1765 1774 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1775 +|++voltage|double||是|键盘电量|
  1776 +|++retryCount|int||是|键盘提交数据的重发次数|
1766 1777  
1767 1778 - **示例代码**
1768 1779  
... ... @@ -1850,6 +1861,8 @@
1850 1861 |++keySn|string||是|键盘SN|
1851 1862 |++keyValue|string||是|键盘提交的按键值|
1852 1863 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1864 +|++voltage|double||是|键盘电量|
  1865 +|++retryCount|int||是|键盘提交数据的重发次数|
1853 1866  
1854 1867 - **示例代码**
1855 1868  
... ... @@ -1936,6 +1949,8 @@
1936 1949 |++keySn|string||是|键盘SN|
1937 1950 |++keyValue|string||是|键盘提交的按键值|
1938 1951 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  1952 +|++voltage|double||是|键盘电量</font>|
  1953 +|++retryCount|int||是|键盘提交数据的重发次数|
1939 1954  
1940 1955 - **示例代码**
1941 1956  
... ... @@ -2016,6 +2031,8 @@
2016 2031 |++keySn|string||是|键盘SN|
2017 2032 |++keyValue|string||是|键盘提交的按键值|
2018 2033 |++keyTime|double||是|答题时间,从启动开始计算,单位秒|
  2034 +|++voltage|double||是|键盘电量|
  2035 +|++retryCount|int||是|键盘提交数据的重发次数|
2019 2036  
2020 2037 - **示例代码**
2021 2038  
... ... @@ -2046,7 +2063,7 @@
2046 2063 |+examNo|int||是|0-9999<br>=0,新的测验<br>>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
2047 2064 |+mode|int||是|显示模式<br>0-不显示开头<br>1-显示“Q”开头<br>2-显示“题”开头|
2048 2065 |+questions|array||是|题目详情|
2049   -|++symbol | string||是 | 题号前缀,可为空 |
  2066 +|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级大题<br><font color="red">最多为三级题号,即最多可以设为x-x-</font>|
2050 2067 |++quesType | int||是| 题目类型<br>1:单选<br>2:多选(排序)<br>3:数字<br>4:判断 |
2051 2068 |++option |int||是 |选项数目<br> quesType = 1 有效。<br>quesType = 2 有效。<br>此项缺省时 默认4;<br>范围:1-10。|
2052 2069 |++startNo | int||是| 起始题号 |
... ... @@ -2054,73 +2071,179 @@
2054 2071  
2055 2072 - **示例代码**
2056 2073  
  2074 +**常用样例**:一级题型 + 显示“Q”开头, 单一题型,全单选题共10题
  2075 +```json
  2076 +{
  2077 + "fun":"startKpExam",
  2078 + "dataTag":"1",
  2079 + "data":{
  2080 + "mode": 1,
  2081 + "examNo": 1,
  2082 + "questions": [{
  2083 + "quesType": 1, //单选题
  2084 + "startNo": 1, //题号从1开始
  2085 + "count":10 //连续10题
  2086 + }]
  2087 + }
  2088 +}
  2089 +```
  2090 +
  2091 +指令样例:一级题型 + 不显示开头,总题数6题
2057 2092 ```json
2058   -//自定义题号
2059 2093 {
2060 2094 "fun":"startKpExam",
2061 2095 "dataTag":"1",
2062 2096 "data":{
2063 2097 "mode": 0,
2064 2098 "examNo": 1,
2065   - "questions": [{
2066   - //题号1-1-1 到1-1-10 共10题单选
2067   - "symbol": "1-1-",
2068   - "quesType": 1,
2069   - "startNo": 1,
2070   - "count":10
2071   - }, {
2072   - //题号2-2和2-3共两题 多选题,5个选项
2073   - "symbol": "2-",
2074   - "quesType": 2,
2075   - "option": 5,
2076   - "startNo": 2,
2077   - "count":2
2078   - }, {
2079   - //题号3-1和3-2共两道数字题
  2099 + //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题
  2100 + "questions": [{
  2101 + "quesType": 1, //单选题
  2102 + "startNo": 1, //题号从1开始
  2103 + "count":2 //连续2题
  2104 + },{
  2105 + "quesType": 2, //多选题
  2106 + "startNo": 3, //题号从3开始
  2107 + "count":2, //连续2题
  2108 + "option":5
  2109 + },{
  2110 + "quesType": 1, //数字题
  2111 + "startNo": 5, //题号从5开始
  2112 + "count":1 //连续1题
  2113 + },{
  2114 + "quesType": 4, //判断题
  2115 + "startNo": 6, //题号从6开始
  2116 + "count":1 //连续1题
  2117 + }]
  2118 + }
  2119 +}
  2120 +```
  2121 +
  2122 +指令样例:二级题型 + 不显示开头,总题数6题
  2123 +```json
  2124 +{
  2125 + "fun":"startKpExam",
  2126 + "dataTag":"1",
  2127 + "data":{
  2128 + "mode": 0,
  2129 + "examNo": 1,
  2130 + //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题
  2131 + "questions": [{
  2132 + "symbol": "1-",
  2133 + "quesType": 1, //单选题
  2134 + "startNo": 1, //题号从1-1开始
  2135 + "count":2 //连续2题
  2136 + },{
  2137 + "symbol": "2-",
  2138 + "quesType": 2, //多选题
  2139 + "startNo": 1, //题号从2-1开始
  2140 + "count":2, //连续2题
  2141 + "option":5
  2142 + },{
2080 2143 "symbol": "3-",
2081   - "quesType": 3,
2082   - "startNo": 1,
2083   - "count":2
2084   - }, {
2085   - //题号4和5 ,判断题
2086   - "symbol": "",
2087   - "quesType": 4,
2088   - "startNo": 4,
2089   - "count":2
  2144 + "quesType": 3, //数字题
  2145 + "startNo": 1, //题号从3-1开始
  2146 + "count":1 //连续1题
  2147 + },{
  2148 + "symbol": "4-",
  2149 + "quesType": 4, //判断题
  2150 + "startNo": 1, //题号从4-1开始
  2151 + "count":1 //连续1题
  2152 + }]
  2153 + }
  2154 +}
  2155 +```
  2156 +
  2157 +指令样例:三级题型 + 不显示开头,总题数6题
  2158 +```json
  2159 +{
  2160 + "fun":"startKpExam",
  2161 + "dataTag":"1",
  2162 + "data":{
  2163 + "mode": 0,
  2164 + "examNo": 1,
  2165 + //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题
  2166 + "questions": [{
  2167 + "symbol": "1-1-",
  2168 + "quesType": 1, //单选题
  2169 + "startNo": 1, //题号从1-1-1开始
  2170 + "count":2 //连续2题
  2171 + },{
  2172 + "symbol": "1-2-",
  2173 + "quesType": 2, //多选题
  2174 + "startNo": 1, //题号从1-2-1开始
  2175 + "count":2, //连续2题
  2176 + "option":5
  2177 + },{
  2178 + "symbol": "2-1-",
  2179 + "quesType": 3, //数字题
  2180 + "startNo": 1, //题号从2-1-1开始
  2181 + "count":1 //连续1题
  2182 + },{
  2183 + "symbol": "3-1-",
  2184 + "quesType": 4, //判断题
  2185 + "startNo": 1, //题号从3-1-1开始
  2186 + "count":1 //连续1题
2090 2187 }]
2091 2188 }
2092 2189 }
  2190 +```
2093 2191  
2094   -//显示Q开头
  2192 +指令样例:一级题型 + 显示“Q”开头, 共6题
  2193 +```json
2095 2194 {
2096 2195 "fun":"startKpExam",
2097 2196 "dataTag":"1",
2098 2197 "data":{
2099 2198 "mode": 1,
2100 2199 "examNo": 1,
2101   - "questions": [{
2102   - //Q1-Q20,单选题
2103   - "symbol": "",
2104   - "quesType": 1,
2105   - "startNo": 1,
2106   - "count":20
  2200 + "questions": [{
  2201 + "quesType": 1, //单选题
  2202 + "startNo": 1, //题号从1开始
  2203 + "count":2 //连续2题
  2204 + },{
  2205 + "quesType": 2, //多选题
  2206 + "startNo": 3, //题号从3开始
  2207 + "count":2, //连续2题
  2208 + "option":5
  2209 + },{
  2210 + "quesType": 1, //数字题
  2211 + "startNo": 5, //题号从5开始
  2212 + "count":1 //连续1题
  2213 + },{
  2214 + "quesType": 4, //判断题
  2215 + "startNo": 6, //题号从6开始
  2216 + "count":1 //连续1题
2107 2217 }]
2108 2218 }
2109 2219 }
  2220 +```
2110 2221  
2111   -//显示题开头
  2222 +指令样例:一级题型 + 显示“题”开头, 共6题
  2223 +```json
2112 2224 {
2113 2225 "fun":"startKpExam",
2114 2226 "dataTag":"1",
2115 2227 "data":{
2116 2228 "mode": 2,
2117 2229 "examNo": 1,
2118   - "questions": [{
2119   - //题1-题20,单选题
2120   - "symbol": "",
2121   - "quesType": 1,
2122   - "startNo": 1,
2123   - "count":20
  2230 + "questions": [{
  2231 + "quesType": 1, //单选题
  2232 + "startNo": 1, //题号从1开始
  2233 + "count":2 //连续2题
  2234 + },{
  2235 + "quesType": 2, //多选题
  2236 + "startNo": 3, //题号从3开始
  2237 + "count":2, //连续2题
  2238 + "option":5
  2239 + },{
  2240 + "quesType": 1, //数字题
  2241 + "startNo": 5, //题号从5开始
  2242 + "count":1 //连续1题
  2243 + },{
  2244 + "quesType": 4, //判断题
  2245 + "startNo": 6, //题号从6开始
  2246 + "count":1 //连续1题
2124 2247 }]
2125 2248 }
2126 2249 }
... ...