diff --git a/通讯协议-B200W-MQTT协议[内部].md b/通讯协议-B200W-MQTT协议[内部].md
index 9d60d3f..2393ff5 100644
--- a/通讯协议-B200W-MQTT协议[内部].md
+++ b/通讯协议-B200W-MQTT协议[内部].md
@@ -396,14 +396,21 @@
|0|指令收取成功|
|10001|不能正确解析的JSON数据|
|10002|解析JSON错误|
+|10003|下发数据包超长|
|20001|基站未连接|
|20002|功能不支持|
|20003|基站SN格式不正确|
|20004|参数错误|
-|20005|基站在答题中|
+|20005|dataTag错误|
+|20006|键盘SN错误|
+|20007|tip参数错误|
+|20008|value参数错误|
+|30001|基站在答题中|
+|30002|基站忙(内存不足)|
|40001|升级功能只能支持一个基站|
|50001|此功能必须指定基站|
|60001|此功能必须指定键盘SN|
+|70001|没有字库|
- **示例代码**
```json
diff --git a/通讯协议-B200W-MQTT协议[外].md b/通讯协议-B200W-MQTT协议[外].md
index fc403fe..a27be44 100644
--- a/通讯协议-B200W-MQTT协议[外].md
+++ b/通讯协议-B200W-MQTT协议[外].md
@@ -156,7 +156,7 @@
|+version|string||否|基站固件版本|
- **示例代码**
-```Json
+```json
//连接成功
{
"fun":"sEvtBsConnectState",
@@ -190,7 +190,7 @@
|+value|int||是|有冲突的信道|
- **示例代码**
-```Json
+```json
{
"fun":"sEvtBsChannelConflict",
"dataTag":"1",
@@ -213,7 +213,7 @@
|+value|int||是|刷卡的状态
1-成功
2-失败|
- **示例代码**
-```Json
+```json
{
"fun":"sEvtBsNfcResults",
"dataTag":"1", //不需要时可传空字符串
@@ -239,7 +239,7 @@
|+model|int||是|键盘型号|
- **示例代码**
-```Json
+```json
{
"fun":"sEvtBsKpOnlineMsg",
"dataTag":"1",
@@ -268,22 +268,29 @@
|0|指令收取成功|
|10001|不能正确解析的JSON数据|
|10002|解析JSON错误|
+|10003|下发数据包超长|
|20001|基站未连接|
|20002|功能不支持|
|20003|基站SN格式不正确|
|20004|参数错误|
-|20005|基站在答题中|
+|20005|dataTag错误|
+|20006|键盘SN错误|
+|20007|tip参数错误|
+|20008|value参数错误|
+|30001|基站在答题中|
+|30002|基站忙(内存不足)|
|40001|升级功能只能支持一个基站|
|50001|此功能必须指定基站|
|60001|此功能必须指定键盘SN|
+|70001|没有字库|
- **示例代码**
-```Json
+```json
{
"fun":"sEvtStateCode",
"dataTag":"1",
"data":{
- "funName":"startKpRollCall",
+ "funName":"startKpSignIn",
"code":"20005"
}
}
@@ -301,7 +308,7 @@
|fun|string|-|是|固定指令名称|
|dataTag|string|-|否|数据包标识|
- **示例代码**
-```Json
+```json
{
"fun":"getBsOnlineState",
"dataTag":"1"
@@ -318,7 +325,7 @@
|fun|string|-|是|固定指令名称|
|dataTag|string|-|否|数据包标识|
- **示例代码**
-```Json
+```json
{
"fun":"getBsConnectState",
"dataTag":"1"
@@ -344,7 +351,7 @@
|+baseSN|string||否|基站SN|
- **示例代码**
-```Json
+```json
//连接成功
{
"fun":"fEvtBsOnlineState",
@@ -373,7 +380,7 @@
|+timeStamp|long ||否|当前时间的时间戳|
- **示例代码**
-```Json
+```json
{
"fun":"timeSync",
"dataTag":"1",
@@ -399,7 +406,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsModel",
"dataTag":"1"
@@ -416,7 +423,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsFWVersion",
"dataTag":"1"
@@ -436,7 +443,7 @@
|+value|string|-|是|基站的出厂编码|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsSN",
"dataTag":"1",
@@ -458,7 +465,7 @@
|+value|string|-|是|基站的型号名称|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsModel",
"dataTag":"1",
@@ -480,7 +487,7 @@
|+value|string||是|基站的固件版本号|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsFWVersion",
"dataTag":"1",
@@ -502,7 +509,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsPairCode",
"dataTag":"1"
@@ -519,7 +526,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsNfcLogin",
"dataTag":"1"
@@ -538,7 +545,7 @@
|+value|string|-|是|设置的基站刷卡配对状态
0-关闭刷卡配对
1-开启刷卡配对|
- **示例代码**
-```Json
+```json
{
"fun":"setBsNfcLogin",
"dataTag":"1",
@@ -558,7 +565,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsChannel",
"dataTag":"1"
@@ -577,7 +584,7 @@
|+value|string|-|是|设置的基站信道,可设范围:1-80|
- **示例代码**
-```Json
+```json
{
"fun":"setBsChannel",
"dataTag":"1",
@@ -600,7 +607,7 @@
|+value|string||是|基站的配对码|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsPairCode",
"dataTag":"1",
@@ -623,7 +630,7 @@
|+value|string||是|基站信道|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsChannel",
"dataTag":"1",
@@ -645,7 +652,7 @@
|+value|string||是|0-关闭 1-开启|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsNfcLogin",
"dataTag":"1",
@@ -668,7 +675,7 @@
|dataTag|string|-|否|数据包标识|
- **示例代码**
-```Json
+```json
{
"fun":"getBsSSID",
"dataTag":"1"
@@ -687,7 +694,7 @@
|+value|string||是|设置的基站SSID,最长12字符|
- **示例代码**
-```Json
+```json
{
"fun":"setBsSSID",
"dataTag":"1",
@@ -710,7 +717,7 @@
|+value|string||是|基站名称|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsSSID",
"dataTag":"1",
@@ -732,7 +739,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsKpLanguage",
"dataTag":"1"
@@ -751,7 +758,7 @@
|+value|string||是|设置键盘显示的语言
1-简体中文
2-英文|
- **示例代码**
-```Json
+```json
{
"fun":"setBsKpLanguage",
"dataTag":"1",
@@ -774,7 +781,7 @@
|+value|string||是|设置键盘显示的语言
1-简体中文
2-英文|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsKpLanguage",
"dataTag":"1",
@@ -945,7 +952,7 @@
|+keySns|array||是|基站当前的白名单列表|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsWhitelist",
"dataTag":"1",
@@ -969,7 +976,7 @@
|++state|int||是|键盘SN的写入状态
0-写入成功
1-写入失败|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtSetBsWhitelist",
"dataTag":"1",
@@ -997,7 +1004,7 @@
|++state|int||是|键盘的增加状态
0-增加成功
1-增加失败|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtAddBsWhitelist",
"dataTag":"1",
@@ -1025,7 +1032,7 @@
|++state|int||是|键盘的删除状态
0-删除成功
1-删除失败|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtDelBsWhitelist",
"dataTag":"1",
@@ -1052,7 +1059,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsTcpipParams",
"dataTag":"1"
@@ -1074,7 +1081,7 @@
|+ipAllocation|int||否|基站IP获取方式
0 - 手动指定
1 - DHCP获取|
- **示例代码**
-```Json
+```json
{
"fun":"setBsTcpipParams",
"dataTag":"1",
@@ -1097,7 +1104,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"getBsMqttParams",
"dataTag":"1"
@@ -1120,7 +1127,7 @@
|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
- **示例代码**
-```Json
+```json
{
"fun":"setBsMqttParams",
"dataTag":"1",
@@ -1151,7 +1158,7 @@
|+ipAllocation|int||否|基站IP获取方式
0 - 手动指定
1 - DHCP获取|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsTcpipParams",
"dataTag":"1",
@@ -1181,7 +1188,7 @@
|+interval|int|>=10|否|基站连接服务器失败后重连的间隔时长,单位秒|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtBsMqttParams",
"dataTag":"1",
@@ -1339,7 +1346,7 @@
|+voltage|double||是|键盘电量|
- **示例代码**
-```Json
+```json
{
"fun":"fEvtKpOnlineMsg",
"dataTag":"1",
@@ -1367,7 +1374,7 @@
|+keySns|array||否|需要执行指令的键盘SN数组,空数组表示所有键盘|
- **示例代码**
-```Json
+```json
{
"fun":"remoteKpSleep",
"dataTag":"1",
@@ -1516,7 +1523,7 @@
|+tipTitle |string|-|否| 提示标题,长度最多不超过16个字节|
- **示例代码**
-```Json
+```json
//按键签到
{
"fun":"startKpSignIn",
@@ -1553,7 +1560,7 @@
|dataTag|string|-|否|数据包标识,可为空字符串|
- **示例代码**
-```Json
+```json
{
"fun":"stopKpSignIn",
"dataTag":"1"
@@ -1651,6 +1658,8 @@
|++keySn|string||是|键盘SN|
|++keyValue|string||是|键盘提交的按键值|
|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+|++voltage|double||是|键盘电量|
+|++retryCount|int||是|键盘提交数据的重发次数|
- **示例代码**
@@ -1763,6 +1772,8 @@
|++keySn|string||是|键盘SN|
|++keyValue|string||是|键盘提交的按键值
1-对
2-错|
|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+|++voltage|double||是|键盘电量|
+|++retryCount|int||是|键盘提交数据的重发次数|
- **示例代码**
@@ -1850,6 +1861,8 @@
|++keySn|string||是|键盘SN|
|++keyValue|string||是|键盘提交的按键值|
|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+|++voltage|double||是|键盘电量|
+|++retryCount|int||是|键盘提交数据的重发次数|
- **示例代码**
@@ -1936,6 +1949,8 @@
|++keySn|string||是|键盘SN|
|++keyValue|string||是|键盘提交的按键值|
|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+|++voltage|double||是|键盘电量|
+|++retryCount|int||是|键盘提交数据的重发次数|
- **示例代码**
@@ -2016,6 +2031,8 @@
|++keySn|string||是|键盘SN|
|++keyValue|string||是|键盘提交的按键值|
|++keyTime|double||是|答题时间,从启动开始计算,单位秒|
+|++voltage|double||是|键盘电量|
+|++retryCount|int||是|键盘提交数据的重发次数|
- **示例代码**
@@ -2046,7 +2063,7 @@
|+examNo|int||是|0-9999
=0,新的测验
>0时,与上次启动卷号一致继续测验,不一致进入新的测验|
|+mode|int||是|显示模式
0-不显示开头
1-显示“Q”开头
2-显示“题”开头|
|+questions|array||是|题目详情|
-|++symbol | string||是 | 题号前缀,可为空 |
+|++symbol | string||是 | 题号前缀,分级标识为-,可为空,为空表示1级大题
最多为三级题号,即最多可以设为x-x-|
|++quesType | int||是| 题目类型
1:单选
2:多选(排序)
3:数字
4:判断 |
|++option |int||是 |选项数目
quesType = 1 有效。
quesType = 2 有效。
此项缺省时 默认4;
范围:1-10。|
|++startNo | int||是| 起始题号 |
@@ -2054,73 +2071,179 @@
- **示例代码**
+**常用样例**:一级题型 + 显示“Q”开头, 单一题型,全单选题共10题
+```json
+{
+ "fun":"startKpExam",
+ "dataTag":"1",
+ "data":{
+ "mode": 1,
+ "examNo": 1,
+ "questions": [{
+ "quesType": 1, //单选题
+ "startNo": 1, //题号从1开始
+ "count":10 //连续10题
+ }]
+ }
+}
+```
+
+指令样例:一级题型 + 不显示开头,总题数6题
```json
-//自定义题号
{
"fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 0,
"examNo": 1,
- "questions": [{
- //题号1-1-1 到1-1-10 共10题单选
- "symbol": "1-1-",
- "quesType": 1,
- "startNo": 1,
- "count":10
- }, {
- //题号2-2和2-3共两题 多选题,5个选项
- "symbol": "2-",
- "quesType": 2,
- "option": 5,
- "startNo": 2,
- "count":2
- }, {
- //题号3-1和3-2共两道数字题
+ //第1、2题单选题,第3、4题多选题,第5题数字,第6题判断,共6题
+ "questions": [{
+ "quesType": 1, //单选题
+ "startNo": 1, //题号从1开始
+ "count":2 //连续2题
+ },{
+ "quesType": 2, //多选题
+ "startNo": 3, //题号从3开始
+ "count":2, //连续2题
+ "option":5
+ },{
+ "quesType": 1, //数字题
+ "startNo": 5, //题号从5开始
+ "count":1 //连续1题
+ },{
+ "quesType": 4, //判断题
+ "startNo": 6, //题号从6开始
+ "count":1 //连续1题
+ }]
+ }
+}
+```
+
+指令样例:二级题型 + 不显示开头,总题数6题
+```json
+{
+ "fun":"startKpExam",
+ "dataTag":"1",
+ "data":{
+ "mode": 0,
+ "examNo": 1,
+ //第1-1、1-2题单选题,第2-1、2-2题多选题,第3-1题数字,第4-1题判断,共6题
+ "questions": [{
+ "symbol": "1-",
+ "quesType": 1, //单选题
+ "startNo": 1, //题号从1-1开始
+ "count":2 //连续2题
+ },{
+ "symbol": "2-",
+ "quesType": 2, //多选题
+ "startNo": 1, //题号从2-1开始
+ "count":2, //连续2题
+ "option":5
+ },{
"symbol": "3-",
- "quesType": 3,
- "startNo": 1,
- "count":2
- }, {
- //题号4和5 ,判断题
- "symbol": "",
- "quesType": 4,
- "startNo": 4,
- "count":2
+ "quesType": 3, //数字题
+ "startNo": 1, //题号从3-1开始
+ "count":1 //连续1题
+ },{
+ "symbol": "4-",
+ "quesType": 4, //判断题
+ "startNo": 1, //题号从4-1开始
+ "count":1 //连续1题
+ }]
+ }
+}
+```
+
+指令样例:三级题型 + 不显示开头,总题数6题
+```json
+{
+ "fun":"startKpExam",
+ "dataTag":"1",
+ "data":{
+ "mode": 0,
+ "examNo": 1,
+ //第1-1-1、1-1-2题单选题,第1-2-1、1-2-2题多选题,第2-1-1题数字,第3-1-1题判断,共6题
+ "questions": [{
+ "symbol": "1-1-",
+ "quesType": 1, //单选题
+ "startNo": 1, //题号从1-1-1开始
+ "count":2 //连续2题
+ },{
+ "symbol": "1-2-",
+ "quesType": 2, //多选题
+ "startNo": 1, //题号从1-2-1开始
+ "count":2, //连续2题
+ "option":5
+ },{
+ "symbol": "2-1-",
+ "quesType": 3, //数字题
+ "startNo": 1, //题号从2-1-1开始
+ "count":1 //连续1题
+ },{
+ "symbol": "3-1-",
+ "quesType": 4, //判断题
+ "startNo": 1, //题号从3-1-1开始
+ "count":1 //连续1题
}]
}
}
+```
-//显示Q开头
+指令样例:一级题型 + 显示“Q”开头, 共6题
+```json
{
"fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 1,
"examNo": 1,
- "questions": [{
- //Q1-Q20,单选题
- "symbol": "",
- "quesType": 1,
- "startNo": 1,
- "count":20
+ "questions": [{
+ "quesType": 1, //单选题
+ "startNo": 1, //题号从1开始
+ "count":2 //连续2题
+ },{
+ "quesType": 2, //多选题
+ "startNo": 3, //题号从3开始
+ "count":2, //连续2题
+ "option":5
+ },{
+ "quesType": 1, //数字题
+ "startNo": 5, //题号从5开始
+ "count":1 //连续1题
+ },{
+ "quesType": 4, //判断题
+ "startNo": 6, //题号从6开始
+ "count":1 //连续1题
}]
}
}
+```
-//显示题开头
+指令样例:一级题型 + 显示“题”开头, 共6题
+```json
{
"fun":"startKpExam",
"dataTag":"1",
"data":{
"mode": 2,
"examNo": 1,
- "questions": [{
- //题1-题20,单选题
- "symbol": "",
- "quesType": 1,
- "startNo": 1,
- "count":20
+ "questions": [{
+ "quesType": 1, //单选题
+ "startNo": 1, //题号从1开始
+ "count":2 //连续2题
+ },{
+ "quesType": 2, //多选题
+ "startNo": 3, //题号从3开始
+ "count":2, //连续2题
+ "option":5
+ },{
+ "quesType": 1, //数字题
+ "startNo": 5, //题号从5开始
+ "count":1 //连续1题
+ },{
+ "quesType": 4, //判断题
+ "startNo": 6, //题号从6开始
+ "count":1 //连续1题
}]
}
}