Commit 8bbd538f5134b586344b895480458b8404dba66d

Authored by 李外
1 parent 48bd28a3

V0.99-20

markdown 格式初版
通讯协议-教育新版-基站部分.md 0 → 100644
  1 +[TOC]
  2 +# 一、概述
  3 +
  4 +  本通讯协议,是在老通讯协议《通讯协议-政务商务-基站部分-V5.0.docx版本》上进行修改,大部分都是相同,本文仅就修改部分做说明。
  5 +  设置基础信标部分,做了修改,适应新教育体系特性,指令改7和8。
  6 +  设置投票信标没有变动,只是键盘协议多了一些模式,个别参数定义有变动。
  7 +  获取基站数据的流程没有变动,只是数据包格式增加新的格式定义,SDK对新格式进行解析即可。增加的是格式,一种类似原来的16字节一包的数据,另外一种是对SN号模式字符串数据的支持。
  8 +  基站设置没有变动,但有些特性,进行了增减。
  9 +
  10 +# 二、设置投票模式
  11 +
  12 +  设置基础信标部分,做了修改,适应新教育体系特性,指令改7和8。
  13 +  设置投票信标没有变动,只是键盘协议多了一些模式,个别参数定义有变动。
  14 +
  15 +## 2.1 设置新基础信标
  16 +
  17 +  设置信标信息主要是修改基站平常广播的基础信标内容。信标的具体信息的含义,请参考表决器协议部分。操作方法类似原设置基础信标。
  18 +
  19 +电脑发给基站:
  20 +
  21 +| **字节** | **标识符** | **描述** |
  22 +| --- | --- | --- |
  23 +| 1 | BASECMD | 0x60 基站类指令 |
  24 +| 2 | BASEID | 指定的基站编号 |
  25 +| 3 | CMDTYPE | 基站命令类型<br>7 读取新教育体系基础信标,后继的参数无意义<br>8 设置新教育体系基础信标 |
  26 +| 4 | ATTRIB1 | 基站特性1(对应键盘协议投票信标第25字节)<br>具体以键盘协议为准<br> BIT0 (基站是配对还是自由标识)在此不可设置 <br>BIT1=0 键盘不用定时监听投票信标,1启用定时监听<br>BIT2=1 键盘不关机 |
  27 +| 5 | ATTRIB2 ||
  28 +| 6 | ~~ATTRIB3~~ | 实际用在频点了,不能控制 |
  29 +| 7 | ~~ATTRIB4~~ | 不能控制 |
  30 +||||
  31 +
  32 +基站应答:
  33 +
  34 +| **字节** | **标识符** | **描述** |
  35 +| --- | --- | --- |
  36 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  37 +| 2 | BASEID | 应答的基站的编号 |
  38 +| 3 | CMDTYPE | 应答类型 7 当前新扩展信标内容 |
  39 +| 4 | ATTRIB1 ||
  40 +| 5 | ATTRIB2 ||
  41 +| 6 | ATTRIB3 ||
  42 +| 7 | ATTRIB4 ||
  43 +| 8-29 || 参数无意义 |
  44 +
  45 +## 2.2 设置投票模式信标
  46 +
  47 +设置投票模式,就控制了基站的投票模式,包括投票类型和参数、投票的启动和停止。
  48 +
  49 +| **字节** | **标识符** | **描述** |
  50 +| --- | --- | --- |
  51 +| 1 | BASECMD | 0x60 基站类指令 |
  52 +| 2 | BASEID | 指定的基站编号 |
  53 +| 3 | CMDTYPE | 基站命令类型<br> 3 读取当前投票模式,后继的参数无意义<br>4 设置当前投票模式 |
  54 +| 4 | DATAPOS | 表决序号(结果记录序号) |
  55 +| 5 | MODE | 投票模式 |
  56 +| 6-29 | MODES | 投票参数,具体和MODE有关,不同模式下参数意义不同 |
  57 +
  58 +从第4字节起,参数的含义和表决器投票模式信标中的参数含义是一模一样的,决定了表决器的投票状态,具体参数的含义和格式,参见《表决系统通讯协议-政务商务-表决器部分 V4.1》中的2.2节中的多种投票模式参数。
  59 +
  60 +基站应答:
  61 +
  62 +| **字节** | **标识符** | **描述** |
  63 +| --- | --- | --- |
  64 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  65 +| 2 | BASEID | 应答的基站的编号 |
  66 +| 3 | CMDTYPE | 应答类型<br> 3 当前投票模式 |
  67 +| 4 | DATAPOS | 当前表决序号 |
  68 +| 5 | MODE | 当前投票模式 |
  69 +| 6-29 | MODES | 当前投票参数,具体和MODE有关,不同模式下参数意义不同 |
  70 +
  71 +## 2.3 设置发信息信标
  72 +
  73 +对应教育键盘新版协议2.4节,先设置要发送的内容,然后启动基站发送,或者由基站自主判断启动发送。
  74 +
  75 +如果是指定键盘发送,基站执行一段时间后,返回执行结果。
  76 +
  77 +### 2.3.1 设置发送参数
  78 +
  79 +用于设置广播时候的时长,以及占用间隔。
  80 +时长主要根据广播包的长度,保证键盘都能可靠接收到。基站内部初始化也设置一个缺省参数,用户程序也可以不设置。
  81 +
  82 +| **字节** | **标识符** | **描述** |
  83 +| --- | --- | --- |
  84 +| 1 | BASECMD | 0x60 基站类指令 |
  85 +| 2 | BASEID | 指定的基站编号 |
  86 +| 3 | CMDTYPE | 基站命令类型<br>11设置发送参数 |
  87 +| 4 | TYPE | 参数类型(基站暂记录5种或10种) <br>1 题型答案广播参数<br>2 答案广播参数 |
  88 +| 5 | TIMES | 持续发送时间,单位0.5秒 |
  89 +| 6 | SLOTS | 广播时间片占用10个周期里面的多少周期 |
  90 +| 7-29 |||
  91 +
  92 +基站应答:
  93 +
  94 +| **字节** | **标识符** | **描述** |
  95 +| --- | --- | --- |
  96 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  97 +| 2 | BASEID | 应答的基站的编号 |
  98 +| 3 | CMDTYPE | 应答类型 11设置发送参数 |
  99 +| 4 | OK | 1 表示收到 |
  100 +||||
  101 +
  102 +### 2.3.2 设置发送内容
  103 +
  104 +&emsp;&emsp;SDK根据实际数据包的大小,例如键盘协议的2.4.2节的答案下发,来设置SLOTMAX值,和填写SLOTN和对应的16字节数据片段DATA的内容,并通过基站的确认包确认,把完整的要基站广播的信息先完整传给基站。
  105 +
  106 +| **字节** | **标识符** | **描述** |
  107 +| --- | --- | --- |
  108 +| 1 | BASECMD | 0x60 基站类指令 |
  109 +| 2 | BASEID | 指定的基站编号 |
  110 +| 3 | CMDTYPE | 基站命令类型12 设置或读取发送内容 |
  111 +| 4 | DCMD | 数据包类型—键盘根据类型选择保存位置和处理方式<br> 1 多题题型数据<br> 2多题答案数据<br>0x81 读取多题题型数据(Bit7=1是读取,用于SDK异常退出再进时候,不知道题型,没法准确解析键盘数据),SLOTN参数有效,SLOTMAX无效<br>。。。 |
  112 +| 5 | SLOTMAX | 下发数据包共多少包数据,1起,每包16字节<br>(最大255,255x16=4080字节) |
  113 +| 6 | SLOTN | 第多少包数据,0开始 |
  114 +| 7-22 | DATA | 这个包的16字节数据 |
  115 +||||
  116 +
  117 +基站应答:
  118 +
  119 +| **字节** | **标识符** | **描述** |
  120 +| --- | --- | --- |
  121 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  122 +| 2 | BASEID | 应答的基站的编号 |
  123 +| 3 | CMDTYPE | 应答类型 12设置发送内容 |
  124 +| 4 | OK | 1 |
  125 +| 5 | SLOTMAX | (如果DCMD是读取,SLOTMAX开始数据有效)<br>回传数据包共多少包数据,1起,这样SDK知道共多少包,可依次读回 |
  126 +| 6 | SLOTN | 第多少包数据 |
  127 +| 7-22 | DATA | 这个包的16字节数据 |
  128 +
  129 +### 2.3.3 启动发送和结果
  130 +
  131 +控制基站启动广播发送。目前教育体系不需要这个指令,下载题型、广播答案都是基站根据测验题模式控制的。
  132 +
  133 +| **字节** | **标识符** | **描述** |
  134 +| --- | --- | --- |
  135 +| 1 | BASECMD | 0x60 基站类指令 |
  136 +| 2 | BASEID | 指定的基站编号 |
  137 +| 3 | CMDTYPE | 基站命令类型<br>13 启动发送 |
  138 +| 4 | ID | 是广播还是指定ID或者SN<br>0 广播 1ID 2SN |
  139 +| 5-10 | ID-SN | ID模式是前2字节SN模式是6字节,教育模式下前2字节FFFF |
  140 +| 11 | DCMD | 启动哪一种数据包广播<br> 1 多题题型数据 <br>2多题答案数据<br>。。。 |
  141 +| 12-29 |||
  142 +
  143 +基站应答:
  144 +
  145 +| **字节** | **标识符** | **描述** |
  146 +| --- | --- | --- |
  147 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  148 +| 2 | BASEID | 应答的基站的编号 |
  149 +| 3 | CMDTYPE | 应答类型<br> 13 启动发送 |
  150 +| 4 | OK | 1 表示收到 |
  151 +||||
  152 +
  153 +## 2.4 设置扩展投票信标
  154 +
  155 +对应键盘协议的2.2.17节扩展投票信标内容。
  156 +
  157 +| **字节** | **标识符** | **描述** |
  158 +| --- | --- | --- |
  159 +| 1 | BASECMD | 0x60 基站类指令 |
  160 +| 2 | BASEID | 指定的基站编号 |
  161 +| 3 | CMDTYPE | 基站命令类型<br> 14读取当前扩展信标信息,后继的参数无意义<br>15设置当前扩展投票信标信息 |
  162 +| 4 | INFOTYPE | 对应键盘协议的INFOTYPE<br>基站可以根据值做特定处理 |
  163 +| 5-29 || 内容和键盘协议一样暂按基站原指令,指令数据只到29,从4起最多26字节 |
  164 +||||
  165 +
  166 +从第4字节起,参数的含义和表决器投票模式信标中的参数含义是一模一样的。
  167 +
  168 +基站应答:
  169 +
  170 +| **字节** | **标识符** | **描述** |
  171 +| --- | --- | --- |
  172 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  173 +| 2 | BASEID | 应答的基站的编号 |
  174 +| 3 | CMDTYPE | 应答类型<br> 14当前投票模式 |
  175 +| 4 | INFOTYPE | 第4字节起和设置指令一样内容 |
  176 +||||
  177 +
  178 +## 2.5 ~~设置空闲信标参数~~
  179 +
  180 +~~对应键盘协议的停止投票、空闲时候信标 REPMODE开始的参数设置。~~
  181 +~~主要为了S6的空闲模式按键实时反馈。~~
  182 +
  183 +| ~~**字节**~~ | ~~**标识符**~~ | ~~**描述**~~ |
  184 +| --- | --- | --- |
  185 +| ~~1~~ | ~~BASECMD~~ | ~~0x60 基站类指令~~ |
  186 +| ~~2~~ | ~~BASEID~~ | ~~指定的基站编号~~ |
  187 +| ~~3~~ | ~~CMDTYPE~~ | ~~基站命令类型<br>16读取当前空闲信标信息,后继的参数无意义<br>17设置当前空闲投票信标信息~~ |
  188 +| ~~4~~ | ~~REPMODE~~ | ~~对应键盘协议的REPMODE<br>基站可以根据值做特定处理~~ |
  189 +| ~~5-24~~ || ~~内容和键盘协议一样~~ |
  190 +||||
  191 +
  192 +~~从第4字节起,参数的含义和表决器空闲模式信标中的参数含义是一模一样的。支持本协议的新基站,用保存的参数替换SDK下发的停止投票后面的参数。Sdk还是带参数,以支持旧版本基站。~~
  193 +
  194 +~~基站应答:~~
  195 +
  196 +| ~~**字节**~~ | ~~**标识符**~~ | ~~**描述**~~ |
  197 +| --- | --- | --- |
  198 +| ~~1~~ | ~~BASECMD~~ | ~~0xE0 基站类指令应答~~ |
  199 +| ~~2~~ | ~~BASEID~~ | ~~应答的基站的编号~~ |
  200 +| ~~3~~ | ~~CMDTYPE~~ | ~~应答类型<br>16当前投票模式~~ |
  201 +| ~~4-24~~ | ~~REPMODE~~ | ~~当前的REPMODE值和其他值~~ |
  202 +||||
  203 +
  204 +# 三、获取表决器投票数据
  205 +
  206 +## 3.1 概述
  207 +
  208 +SDK从基站获取投票器数据的方式和原来一样。SDK仅需要对新增加的SN号结果解析即可(格式有变动,多了字符串、考勤信息)
  209 +
  210 +## 3.2 新增结果类型
  211 +
  212 +参见下节数据描述,MSGTYPE值不同代表不同数据类型。
  213 +
  214 +| **MSGTYPE 值**|**数据类型** |
  215 +| --- | --- |
  216 +| 21 | 硬件序列号16字节结果,每个单独键盘结果16字节信息 |
  217 +| 22 | 硬件序列号字符串结果,每个键盘结果27字节信息 |
  218 +| 23 | 老考勤信号,取消 |
  219 +| 24 | 2.4G远程考勤数据带电压 |
  220 +| 25 | 类似21,键盘结果是同时包含键盘编号ID |
  221 +| 26 | 类似22,键盘结果是同时包含键盘编号ID |
  222 +| 27 | 8字节BCD格式投票结果带电量,SN+ID,含测验 |
  223 +| 28 | SN\_ID,带电量,字符串结果 |
  224 +| 29 | SN\_ID模式下的,长结果(25字节,键盘最多1次) |
  225 +| 30 | T2语音体系的结果包 |
  226 +|||
  227 +
  228 +### 3.2.1 硬件序列号-16字节结果
  229 +
  230 +&emsp;&emsp;个基站数据包可1次传递多个表决器的结果,每个结果用1字节值类型、4字节SN号(比原来少2字节)、新加2字节、2字节时间和7字节的值来传递,1结果16字节。
  231 +
  232 +注意:传递SN号结果的数据包,为提高效率,长度已经不是使用键盘编号结果的29字节,而是USB模式下最多58字节(受限于HID的最多64字节一包,减去3字节同步码,1字节长度,2字节CRC),TCPIP模式下用128字节包有122,实际有效数据还要减去5。
  233 +
  234 +整个结果数据包结构如下:
  235 +
  236 +| **字节** | **标识符** | **描述** |
  237 +| --- | --- | --- |
  238 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  239 +| 2 | BASEID | 应答的基站的编号 |
  240 +| 3 | CMDTYPE | 5 基站结果上传 |
  241 +| 4 | MSGNO | 数据包序号 |
  242 +| 5 | MSGTYPE | 基站数据包类型<br> 21硬件序列号结果-新16字节结果(每组数据16字节,共3组)<br>25 类似类型21,11、12字节是键盘编号ADDH和ADDL |
  243 +| 6 | ANSTYPE | 第1个结果的数据包类型<br>如果类型为0xFF,表示后面就没有数据了<br>SDK根据ANSTYPE来对后面15字节数据进行解码,具体参考《通讯协议-教育新版-键盘部分》协议<br>具体是除了字符串,其他凡是可以16字节传输的都用这个格式传递,投票结果、状态报告、登录信息、键盘请求 |
  244 +| 7-10 | KEYSN | 第1个结果的表决器硬件序列号,4字节,高位在前 |
  245 +| 11 | DATAPOS/ADDH | 结果对应的投票序号或者ADDH |
  246 +| 12 | SENDPOS/ADDL | 键盘内部的提交数据序号或者ADDL |
  247 +| 13-14 | KEYTIME | 第1个结果的按键时间, 2字节,高位在前<br>一般是离投票开始的时间,单位是20ms,最大约21分钟 |
  248 +| 15-21 | VALUE | 第1个结果的7字节值,一般用BCD码表示,高位在前,F表示空字符,最多14位数 |
  249 +| 22-37 || 第2个表决器的结果的16字节<br>首字节是ANSTYPE,如果类型为0xFF,表示后面就没有数据了 |
  250 +| 38-53 || 第3个表决器的结果的16字节 |
  251 +| 54--58 || 如果数据包够长,后面依次有多个结果<br>USB接口形式就没有数据了 |
  252 +||||
  253 +
  254 +注意:这些结果值的格式,从ANSTYPE起每组16字节,就是直接拷贝键盘传递过来的数据,具体的数据含义,参考键盘通讯协议3.6节序列号结果类。
  255 +
  256 +### 3.2.2 硬件序列号-字符串结果
  257 +
  258 +&emsp;&emsp;传递序列号模式下的字符串结果和测验结果(单题提交),每组数据不是16字节,而是27字节,usb模式下一次只能传1个键盘字符串结果。
  259 +
  260 +整个结果数据包结构如下:
  261 +
  262 +| **字节** | **标识符** | **描述** |
  263 +| --- | --- | --- |
  264 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  265 +| 2 | BASEID | 应答的基站的编号 |
  266 +| 3 | CMDTYPE | 5 基站结果上传 |
  267 +| 4 | MSGNO | 数据包序号 |
  268 +| 5 | MSGTYPE | 基站数据包类型 <br> 22硬件序列号结果-字符串结果(每组27字节)<br>26 类似类型22,11、12字节是键盘编号ADDH和ADDL |
  269 +| 6 | ANSTYPE | 第1个结果的数据包类型<br>如果类型为0xFF,表示后面就没有数据了 |
  270 +| 7-10 | KEYSN | 第1个结果的表决器硬件序列号,4字节,高位在前 |
  271 +| 11 | DATAPOS/ADDH | 结果对应的投票序号或者ADDH |
  272 +| 12 | SENDPOS/ADDL | 键盘内部的提交数据序号或者ADDL |
  273 +| 13-14 | KEYTIME | 第1个结果的按键时间, 2字节,高位在前<br>一般是离投票开始的时间,单位是20ms,最大约21分钟 |
  274 +| 15 | SLOTN ||
  275 +| 16 | SLOT/NO| 16字符的片号,或测验题目号 |
  276 +| 17-32 | STRING | 第1个结果的16个字符串 |
  277 +| 33-59 || ~~第~~ 2个表决器的结果的27字节(由于USB数据只能58字节,所以USB结构的话,1次只能传1个键盘字符串数据) |
  278 +||||
  279 +
  280 +### 3.2.3 上报考勤数据(取消)
  281 +
  282 +新打包格式,可打包6个数据,比老版多一倍。
  283 +基站==\>PC, 基站发送id、时间信息给PC端,数据格式:
  284 +
  285 +| **字节** | **标识符** | **描述** |
  286 +| --- | --- | --- |
  287 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  288 +| 2 | BASEID | 应答的基站编号 |
  289 +| 3 | CMDTYPE | 5 基站结果上传 |
  290 +| 4 | MSGNO | 数据包序号 |
  291 +| 5 | MSGTYPE | 基站数据包类型: 23考勤结果-十六进制结果(每组8字节) |
  292 +| 6 | ANSTYPE | 记录条数: 0x00=无记录 |
  293 +| 7-14 | IDPACK1 | id数据包1 |
  294 +| 15-22 | IDPACK2 | id数据包2 |
  295 +| 23-30 | IDPACK3 | id数据包3 |
  296 +| 31-38 | IDPACK4 | id数据包4 |
  297 +| 39-46 | IDPACK5 | id数据包5 |
  298 +| 47-54 | IDPACK6 | id数据包6 |
  299 +
  300 +id数据包格式定义
  301 +
  302 +| **字节** | **标识符** | **描述** |
  303 +| --- | --- | --- |
  304 +| 1-4 | KEYSN | 表决器硬件序列号,4字节,高位在前 |
  305 +| 5 | RDNO | 读头编号: 1=1#阅读器, 2=2#阅读器 |
  306 +| 6 | TIME[hour] | 小时,10进制 |
  307 +| 7 | TIME[min] | 分,10进制 |
  308 +| 8 | TIME[sec] | 秒,10进制 |
  309 +
  310 +参考数据:
  311 +
  312 +F5 AA AA
  313 +
  314 +3C
  315 +
  316 +E0
  317 +
  318 +01
  319 +
  320 +05
  321 +
  322 +01
  323 +
  324 +17
  325 +
  326 +06
  327 +
  328 +0F 15 64 05 01 01 0E 02
  329 +
  330 +0F 15 64 05 02 01 0E 02
  331 +
  332 +B5 49 19 0F 01 01 0E 02
  333 +
  334 +B5 49 19 0F 02 01 0E 02
  335 +
  336 +0F 17 BA D5 01 01 0E 02
  337 +
  338 +0F 17 BA D5 02 01 0E 02
  339 +
  340 +00 00 00 00
  341 +
  342 +18 4D
  343 +
  344 +### 3.2.4 上报考勤数据带电压
  345 +
  346 +基站==\>PC, 基站发送id、时间信息给PC端,数据格式:
  347 +
  348 +| **字节** | **标识符** | **描述** |
  349 +| --- | --- | --- |
  350 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  351 +| 2 | BASEID | 应答的基站编号 |
  352 +| 3 | CMDTYPE | 5 基站结果上传 |
  353 +| 4 | MSGNO | 数据包序号 |
  354 +| 5 | MSGTYPE | 基站数据包类型: 24考勤结果-带电压 |
  355 +| 6 | ANSTYPE | 记录条数: 0x00=无记录 |
  356 +| 7-14 | IDPACK1 | id数据包1 |
  357 +| 15-22 | IDPACK2 | id数据包2 |
  358 +| 23-30 | IDPACK3 | id数据包3 |
  359 +| 31-38 | IDPACK4 | id数据包4 |
  360 +| 39-46 | IDPACK5 | id数据包5 |
  361 +| 47-54 | IDPACK6 | id数据包6 |
  362 +
  363 +id数据包格式定义
  364 +
  365 +| **字节** | **标识符** | **描述** |
  366 +| --- | --- | --- |
  367 +| 1-4 | KEYSN | 表决器硬件序列号,4字节,高位在前 |
  368 +| 5 | RDNO | 读头编号: 1=1#阅读器, 2=2#阅读器 |
  369 +| 6 | VOLT | 低7位是电池电压,单位0.04VBit7暂保留,例如防拆报警 |
  370 +| 7-8 | TIME | 2字节秒数,高位前 |
  371 +||||
  372 +
  373 +### 3.2.5 序列号和编号同时传
  374 +
  375 +分别见3.2.1节和3.2.2节,类型25和类型26。
  376 +
  377 +### 3.2.6 SN+ID模式下,BCD结果+电量
  378 +
  379 +&emsp;&emsp;USB数据包只能有效数据58字节,减去前5个必要字节,余53字节,原先7BCD结果是17字节1个键盘,由于数字题要16位和加上电量(K1、T1键盘),至少19字节,所以只能打2包,为适应以后增加信息,53字节分两段一段可以26字节,对应到从ANSTYPE起26字节是一个键盘的数据。
  380 +
  381 +传整个结果数据包结构如下:(第6字节到第24字节都是拷贝键盘数据)
  382 +
  383 +| **字节** | **标识符** | **描述** |
  384 +| --- | --- | --- |
  385 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  386 +| 2 | BASEID | 应答的基站的编号 |
  387 +| 3 | CMDTYPE | 5 基站结果上传 |
  388 +| 4 | MSGNO | 数据包序号 |
  389 +| 5 | MSGTYPE | 基站数据包类型 27SN+ID模式下字符串结果+电量(每组27字节) |
  390 +| 6 | ANSTYPE | 第1个结果的数据包类型<br>这里是7或8,从这里开始的数据都是直接拷贝键盘数据<br>如果类型为0xFF,表示后面就没有数据了 |
  391 +| 7-10 | KEYSN | 第1个结果的表决器硬件序列号,4字节,高位在前 |
  392 +| 11-12 | ID | 第1个结果的表决器编号,2字节,高位在前 |
  393 +| 13-14 | KEYTIME | 第1个结果的按键时间, 2字节,高位在前<br>如果是填空,单位时间20ms,如果是测验,单位时间100ms |
  394 +| 15-22 | VALUE | 第1个结果的8字节值,一般用BCD码表示,高位在前,F表示空字符,最多14位数 |
  395 +| 23 | VOLT | 电压值,单位20mV |
  396 +| 24-31 | RSSI? | 可能添加RSSI等其他信息,暂时全00<br>一直到第31字节,这样ANSTYPE起是26字节 |
  397 +| 32 | ANSTYPE2 | 第2个键盘结果的ANSTYPE |
  398 +| 33-57 | ANSVAL2 | 第2个键盘结果的从KEYSN到最后一个字节的值,25字节 |
  399 +| 58 || 空,USB基站只有58字节 |
  400 +||||
  401 +
  402 +### 3.2.7 SN+ID模式下,字符串结果+电量
  403 +
  404 +传整个结果数据包结构如下:(第6字节到第24字节都是拷贝键盘数据)
  405 +
  406 +| **字节** | **标识符** | **描述** |
  407 +| --- | --- | --- |
  408 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  409 +| 2 | BASEID | 应答的基站的编号 |
  410 +| 3 | CMDTYPE | 5 基站结果上传 |
  411 +| 4 | MSGNO | 数据包序号 |
  412 +| 5 | MSGTYPE | 基站数据包类型 28SN+ID模式下字符串结果+电量(每组26字节) |
  413 +| 6 | ANSTYPE | 第1个结果的数据包类型<br>9字符串(带电量、效验),从这里开始到第30字节的数据都是直接拷贝键盘数据<br>如果类型为0xFF,表示后面就没有数据了 |
  414 +| 7-10 | KEYSN | 第1个结果的表决器硬件序列号,4字节,高位在前 |
  415 +| 11-12 | ID | 第1个结果的表决器编号,2字节,高位在前 |
  416 +| 13 | KEYTIME | 如果是填空,单位时间0.5s,如果是测验,单位时间1分钟 |
  417 +| 14 | SLOTN或者ITEMNO | 如果是填空,高4位表示总共有多少片数据(1片16字符),0表示有1片段,低4位表示片段号码(0起),这样填空可以传256字符<br>如果是测验,是题号,表示是那个题目的答案 |
  418 +| 15 | VOLT | 电压,单位20mV |
  419 +| 16-30 | STRING | 15字节字符串,ASCII码,0代表字符结束 |
  420 +| -31 |||
  421 +| 32 | ANSTYPE2 | 第2个键盘结果的ANSTYPE |
  422 +| 33-57 | ANSVAL2 | 第2个键盘结果的从KEYSN到最后一个字节的值,25字节 |
  423 +| 58 || 空,USB基站只有58字节 |
  424 +||||
  425 +
  426 +### 3.2.8 SN+ID模式下,长结果
  427 +
  428 +传整个结果数据包结构如下:(第6字节开始都是拷贝键盘数据)
  429 +
  430 +| **字节** | **标识符** | **描述** |
  431 +| --- | --- | --- |
  432 +| 1 | BASECMD | 0xE0 基站类指令应答 |
  433 +| 2 | BASEID | 应答的基站的编号 |
  434 +| 3 | CMDTYPE | 5 基站结果上传 |
  435 +| 4 | MSGNO | 数据包序号 |
  436 +| 5 | MSGTYPE | 基站数据包类型<br> 29SN+ID模式下字符串结果+电量(每组25字节或更多) |
  437 +| 6 | ANSTYPE | 第1个结果的数据包类型<br>(目前是0状态报告,但里面小模式是报告16字符姓名的) |
  438 +| 7-10 | KEYSN | 第1个结果的表决器硬件序列号,4字节,高位在前 |
  439 +| 11-12 | ID | 第1个结果的表决器编号,2字节,高位在前 |
  440 +| 13-30 || 其他键盘数据18字节,从ANSTYPE开始算共25字节数据<br>或更多,但目前最多25了 |
  441 +||| (基站只能送1个数据,2个空间不够) |
  442 +||||
  443 +||||
  444 +
  445 +备注:这个类型主要是为了打包状态报告里面需要16字符姓名。
  446 +
  447 +## 3.3 基站报告状态
  448 +
  449 +&emsp;&emsp;用于基站主动报告信息,由于可靠性需要带确认,当成键盘结果包是最简单的,不打断SDK的处理流程,基站把消息模拟成结果压到队列即可。
  450 +
  451 +基站模拟键盘结果类型,所以这里是按键盘打包格式:
  452 +
  453 +| **字节** | **标识符** | **描述** |
  454 +| --- | --- | --- |
  455 +| 1 | ANSCMD | 0x94硬件序列号带编号提交结果 |
  456 +| 2 | ANSTYPE | 数据包类型11 基站报告状态 |
  457 +| 3 | REP\_TYPE | 报告类型 <br>1 键盘快速设置失败<br>2 键盘快速设置成功<br>3 基站测试结果反馈,<br>4 键盘在线状态<br>5 多包上传状态<br>6 NFC刷卡消息<br>(后面格式根据这个类型值解析)<br>10 基站log文字信息 |
  458 +||||
  459 +
  460 +### 3.3.1 键盘快速设置回报
  461 +
  462 +基站模拟键盘结果类型,所以这里是按键盘打包格式:
  463 +
  464 +| **字节** | **标识符** | **描述** |
  465 +| --- | --- | --- |
  466 +| 1 | ANSCMD | 0x94硬件序列号带编号提交结果 |
  467 +| 2 | ANSTYPE | 数据包类型<br>11 基站报告状态 |
  468 +| 3 | REP\_TYPE | 报告类型 <br>1 键盘快速设置失败 <br>2键盘快速设置成功<br>(后面格式根据这个类型值解析) |
  469 +| 4 | SetDataPos | 快速设置指令里面的的DataPos<br>REP\_TYPE=3时,反馈基站测试结果 ,对于到CMDTYPE=13, |
  470 +| 5 | CMD | 0x38 键盘命令码,快速设置是0x38<br>其实从本字节开始的N个字节,都是对应设置指令的,这样SDK配合DataPos能准确判断键盘是哪个指令执行失败,注意基站要准确返回DataPos |
  471 +| 6-9 | SN | 键盘SN,4字节 |
  472 +| 10 | KCMD | 快速设置的哪个类型的指令 |
  473 +| 11-18 | KCMD1 | 从KCMD起拷贝8个字节吧,SDK可能用到 |
  474 +||||
  475 +| 23-24 || CRC,1到第22字节 |
  476 +
  477 +### 3.3.2 基站测试结果回报
  478 +
  479 +| **字节** | **标识符** | **描述** |
  480 +| --- | --- | --- |
  481 +| 1 | ANSCMD | 0x94硬件序列号带编号提交结果 |
  482 +| 2 | ANSTYPE | 数据包类型<br>11 基站报告状态 |
  483 +| 3 | REP\_TYPE | 报告类型<br> 3 基站测试结果反馈<br>(后面格式根据这个类型值解析) |
  484 +| 4 | SetDataPos | REP\_TYPE=3时,反馈基站测试结果 ,对应到5.2.13节的CMDTYPE=13 基站功能测试 |
  485 +
  486 +### 3.3.3 键盘在线状态回报
  487 +
  488 +| **字节** | **标识符** | **描述** |
  489 +| --- | --- | --- |
  490 +| 1 | ANSCMD | 0x94硬件序列号带编号提交结果 |
  491 +| 2 | ANSTYPE | 数据包类型<br>11 基站报告状态 |
  492 +| 3 | REP\_TYPE | 报告类型<br> 4 键盘在线状态回报 |
  493 +| 4 | STATUS | 1 在线状态汇总<br> 2 新键盘加入<br>3 键盘退出(基站判断键盘离线) |
  494 +| 5-6 | TOTAL | 基站现在在线键盘数目,高位前 |
  495 +| 7-8 | TEMPPOS | 平常是0,在STATUS=1的时候,是编号,1到TOTAL,用于SDK判断是否所有在线键盘的状态都收到了 |
  496 +| 9-12 | SN | 4字节键盘SN号 |
  497 +| 13 | HMODEL | 键盘的型号代码 |
  498 +| 14 | HVER | 键盘硬件版本 |
  499 +| 15-17 | SVER | 键盘软件版本,3字节,10进制数字 |
  500 +| 18 | VOLT | 电池电压,Bit7为1表示在充电,低7位x0.04V就是电池当前电压 |
  501 +||||
  502 +
  503 +### 3.3.4 多包上传状态报告
  504 +
  505 +| **字节** | **标识符** | **描述** |
  506 +| --- | --- | --- |
  507 +| 1 | ANSCMD | 0x94硬件序列号带编号提交结果 |
  508 +| 2 | ANSTYPE | 数据包类型<br>11 基站报告状态 |
  509 +| 3 | REP\_TYPE | 报告类型<br> 5 基站多包上传状态 |
  510 +| 4 | STATUS | 1 键盘多包上传数据接收成功 <br>2 接收失败<br>3 基站申请多包数据上传 |
  511 +| 5 | PACKTYPE | 多包类型,这和键盘提交的多包申请里的类型一致 |
  512 +| 6 | PACKID | 数据包辨别码,一般是0,和键盘提交的多包申请里数据一致 |
  513 +| 7-10 | PACKLEN | 多包总字节长度,long类型,高位前 |
  514 +| 11-12 | DATALEN | SDK取包每次多少字节,short类型,高位前<br>这个是基站根据硬件条件来决定 |
  515 +| 13 | BASEID | 基站序号,一般1 |
  516 +| 14-17 | SN | 键盘序列号,4字节 |
  517 +||||
  518 +
  519 +### 3.3.5 NFC刷卡消息-入网消息
  520 +
  521 +| **字节** | **标识符** | **描述** |
  522 +| --- | --- | --- |
  523 +| 1 | ANSCMD | 0x94硬件序列号带编号提交结果 |
  524 +| 2 | ANSTYPE | 数据包类型<br>11 基站报告状态 |
  525 +| 3 | REP\_TYPE | 报告类型<br> 6 NFC刷卡消息 |
  526 +| 4 | STATUS | 1 基站容量满(含键盘开机入网受限)<br> 2 基站报告正常刷卡的键盘SN <br>3 新键盘刷卡,由于容量限定,首个键盘被移出名单<br>4 刷卡写指定配对码消息 |
  527 +| 5-8 | SN | 键盘SN |
  528 +| 9 | ONLINEN | 在线键盘数目 |
  529 +
  530 +### 3.3.5 基站Log信息
  531 +
  532 +&emsp;&emsp;以往基站或键盘的调试信息,只能串口、RTT实时打印,需要连接线和特殊工具才能获取,这里提供一种直接通过USB上报的方法,就是把调试信息当一种类型的投票结果传给SDK,SDK直接解码显示到log显示界面,这样,调试很方便。参见3.2.2节基站的应答数据包,1包共60字节,平常传32字符信息没问题。
  533 +
  534 +调试信息指令格式:
  535 +
  536 +| **字节** | **标识符** | **描述** |
  537 +| --- | --- | --- |
  538 +| 1 | GETCMD | 0x9F Log文本信息 |
  539 +| 2 | TYPE | 暂1,表示格式1 |
  540 +| 3 | SOURCE\_ID | 来源,0-4,比如0是主控,1是模块1,也可以当告警等级<br>SDK那边可以分开不同的tab页显示 |
  541 +| 4-5 | TIME | 时间,2字节,高位前,单位20ms,一般是投票启动时为0<br>SDK转换成分、秒、毫秒显示 |
  542 +| 6-- | LogText | 开始是Log文本信息,SDK按文本显示 |
  543 +||||
  544 +| 59-60 |||
  545 +
  546 +# 五、基站管理
  547 +
  548 +## 5.1概述
  549 +
  550 +为减少工作量,基站设置大部分保持兼容。原来设置基站名称的地方,改为设置自由模式下的基站密码。新加考勤基站配置。
  551 +
  552 +命令CMDTYPE总表:(和政务商务体系兼容)
  553 +
  554 +| **字节** | **标识符** | **描述** |
  555 +| --- | --- | --- |
  556 +| 1 | BASECMD | 0x61 基站管理类指令 |
  557 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  558 +| 3 | CMDTYPE | 基站管理命令类型<br> 1 读取基站配置 <br>2 设置基站配置 <br>3 读取基站硬件信息,例如SN <br>4 设置基站硬件信息(内部使用,不对外公开)<br> 5 读取基站配对码<br> 6 设置基站配对码(内部使用,不对外公开)<br> 7 基站升级<br> 8 平板基站参数设置 <br>9 基站软件狗功能 <br>10 信道评估 <br>11 通用附加配置 <br>12 TCPIP相关配置 <br>13 基站测试 <br>14 白名单管理 <br>15 基站OEM读<br> 16 基站OEM写 <br>17 基站键盘SN名单管理 <br>18 基站键盘SN名单管理-长包<br>22 基站下载多包 <br>23 基站上传多包(和AES加密冲突)<br> 24 AES加密写设置 <br>25 CRC 读设置<br> 26 CRC 写设置<br> 27 基站下载单包<br> 28 基站下载单包-快速设置-1024字节<br><br>30 组网相关 <br>31 测试相关<br> 32 Log信息 <br>33 SDK退出 <br>34 读基站字符串<br>35 写基站字符串 |
  559 +
  560 +## 5.2 基础管理类
  561 +
  562 +### 5.2.1 通用附加配置
  563 +
  564 +&emsp;&emsp;用于配置基站的其他特性,特别是新加特性。例如V4.5版本时候,支持教育体系下,基站要新加基站名称和配对模式设定。
  565 +
  566 +电脑向基站发送:
  567 +
  568 +| **字节** | **标识符** | **描述** |
  569 +| --- | --- | --- |
  570 +| 1 | BASECMD | 0x61 基站管理类指令 |
  571 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  572 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  573 +| 4 | MODE | 1 读取基站配对模式和密码 <br>2 写基站配对模式和密码<br>其他模式附表:<br>3 读取基站多信道模式参数<br>4 设置基站多信道模式参数<br>5-读取考勤基站时钟设置<br>6-写考勤基站时钟设置<br>7-读取考勤基站射频衰减设置<br>8-写考勤基站射频衰减<br>9-读取免配对SN号模式下的网络状态<br>10-写免配对SN号模式下的网络状态<br>11-读取免配对SN号模式下的基站设置<br>12-写免配对SN号模式下的基站设置<br>13-读取考勤基站去重设置<br>14-写考勤基站去重设置<br>15 读取基站快速配对低功率设置<br>16 写基站快速配对低功率设置 <br>17 写基站设备状态,例如NFC <br>18 读基站设备状态 <br>19 写NFC刷卡信息<br> 20 NFC刷卡返回 <br>21 读基站数据开关 <br>22 写基站数据开关<br>23 读基站名称<br>24 写基站名称<br>25 读基站登录密码(S6)<br>26 写基站登录密码(S6)<br>27 读基站Plus模式(S6) LOGMODE = 1 0<br>28 写基站Plus模式(S6) LOGMODE = 1 0 对应相应开关 <br>29 写基站配置-快速响应信标模式 (MODE下一字节为快速休眠持续时间单位S 填0基站默认10S,意思10S之后基站自动回到正常休眠信标发送) (基站正常模式信标内WCT\_Pos位0-7循环发送,快速响应信标模式为一直发送7,让键盘以30MS周期休眠持续固定市场 基站自动关闭该模式) <br>30 读空闲设置-反馈参数设置<br> 31 写空闲设置-反馈参数设置 <br>32 读空闲设置-语言设置 <br>33 写空闲设置-语言设置 <br>34 读基站组网公开位<br>35 写基站组网公开位 |
  574 +| 5 | LOGMODE | (以下参数只对MODE=1有效)<br>配对模式,固定还是自由登录<br>(只支持4-8模式)<br> 4配对SN号模式 <br>5 自由SN号模式 <br>6 免配对SN号模式 <br>~~7 免配对同频点SN号模式(正道远)~~~~ <br>8 免配对多频点SN号模式(正道远)~~<br>7 配对序列号+编号模式(S6Plus体系)-K1套装模式<br>8 白名单序列号+编号模式(S6Plus体系)-K1白名单模式 |
  575 +| 6-8 | PWD | 自由模式下基站的密码,必须满3位,ASC字符 <br>000不用核对<br>25、26新模式下,2字节,高位前,密码范围9999,0不用核对 |
  576 +| 6-17 | BASENAME | 如果是写基站名称字符串指令,从6开始,12字节,0提前结束 |
  577 +| -29 || 参数无意义 |
  578 +
  579 +基站应答:
  580 +
  581 +| **字节** | **标识符** | **描述** |
  582 +| --- | --- | --- |
  583 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  584 +| 2 | BASEID | 应答的基站的编号 |
  585 +| 3 | CMDTYPE | 应答类型 11通用附加配置 |
  586 +| 4 | MODE | 对应指令MODE值 |
  587 +| 5 | LOGMODE | 当前LOGMODE值 |
  588 +| 6- | PWD-BASENAME | 自由模式下基站的密码或者是基站名称 |
  589 +| -29 || 参数无意义 |
  590 +
  591 +### 5.2.2 考勤基站时钟设置
  592 +
  593 +用于配置基站的其他特性,特别是新加特性。例如V4.5版本时候,支持教育体系下,基站要新加基站名称和配对模式设定。
  594 +
  595 +电脑向基站发送:
  596 +
  597 +| **字节** | **标识符** | **描述** |
  598 +| --- | --- | --- |
  599 +| 1 | BASECMD | 0x61 基站管理类指令 |
  600 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  601 +| 3 | CMDTYPE | 基站管理命令类型11 通用附加配置 |
  602 +| 4 | MODE | 5-读取考勤基站时钟设置6-写考勤基站时钟设置 |
  603 +| 5 | HOUR | 考勤基站时钟的时 |
  604 +| 6 | MIN | 考勤基站时钟的分 |
  605 +| 7 | SEC | 考勤基站时钟的秒 |
  606 +| 8-29 || 参数无意义 |
  607 +
  608 +基站应答:
  609 +
  610 +| **字节** | **标识符** | **描述** |
  611 +| --- | --- | --- |
  612 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  613 +| 2 | BASEID | 应答的基站的编号 |
  614 +| 3 | CMDTYPE | 应答类型 11通用附加配置 |
  615 +| 4 | MODE | 5 返回考勤基站配置参数 |
  616 +| 5 | HOUR | 考勤基站时钟的时 |
  617 +| 6 | MIN | 考勤基站时钟的分 |
  618 +| 7 | SEC | 考勤基站时钟的秒 |
  619 +| 8-29 || 参数无意义 |
  620 +
  621 +### 5.2.2b 考勤基站射频衰减值设置
  622 +
  623 +电脑向基站发送:
  624 +
  625 +| **字节** | **标识符** | **描述** |
  626 +| --- | --- | --- |
  627 +| 1 | BASECMD | 0x61 基站管理类指令 |
  628 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  629 +| 3 | CMDTYPE | 基站管理命令类型11 通用附加配置 |
  630 +| 4 | MODE | 7-读取考勤基站射频衰减设置8-写考勤基站射频衰减 |
  631 +| 5 | ATT1 | 内读头衰减值0-31 |
  632 +| 6 | ATT2 | 外读头衰减值0-31 |
  633 +||||
  634 +| 8-29 || 参数无意义 |
  635 +
  636 +基站应答:
  637 +
  638 +| **字节** | **标识符** | **描述** |
  639 +| --- | --- | --- |
  640 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  641 +| 2 | BASEID | 应答的基站的编号 |
  642 +| 3 | CMDTYPE | 应答类型 11通用附加配置 |
  643 +| 4 | MODE | 7 返回考勤基站射频衰减设置 |
  644 +| 5 | ATT1 | 内读头衰减值 |
  645 +| 6 | ATT2 | 外读头衰减值 |
  646 +||||
  647 +| 8-29 || 参数无意义 |
  648 +
  649 +### 5.2.3 免配对SN号模式网络状态(正道远)
  650 +
  651 +在5.2.1节基站配对模式是7和8的时候有效。
  652 +
  653 +电脑向基站发送:
  654 +
  655 +| **字节** | **标识符** | **描述** |
  656 +| --- | --- | --- |
  657 +| 1 | BASECMD | 0x61 基站管理类指令 |
  658 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  659 +| 3 | CMDTYPE | 基站管理命令类型11 通用附加配置 |
  660 +| 4 | MODE | 9-读取免配对SN号模式下的网络状态10-写免配对SN号模式下的网络状态 |
  661 +| 5 | NET | 服务器在线情况 0 离线 1 在线,基站数据可以上传SDK定时10秒向基站设置一次,相当于握手信号,否则基站认为离线,不再接收键盘数据 |
  662 +| 6 |||
  663 +| 7-29 || 参数无意义 |
  664 +
  665 +基站应答:
  666 +
  667 +| **字节** | **标识符** | **描述** |
  668 +| --- | --- | --- |
  669 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  670 +| 2 | BASEID | 应答的基站的编号 |
  671 +| 3 | CMDTYPE | 应答类型 11通用附加配置 |
  672 +| 4 | MODE | 9 返回免配对SN号模式下的网络状态|
  673 +| 5 | NET | 同设置值 |
  674 +| 6-29 || 参数无意义 |
  675 +
  676 +### 5.2.4 TCPIP相关配置
  677 +
  678 +注意:仅支持TCPIP连接功能的基站才能执行这些指令。
  679 +
  680 +电脑向基站发送:
  681 +
  682 +| **字节** | **标识符** | **描述** |
  683 +| --- | --- | --- |
  684 +| 1 | BASECMD | 0x61 基站管理类指令 |
  685 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  686 +| 3 | CMDTYPE | 基站管理命令类型<br>12 TCPIP相关配置 |
  687 +| 4 | MODE | 1 读取基站4字节的IP地址,高位前<br> 2 设置基站4字节的IP地址,高位前<br> 3 读取基站6字节的MAC地址 <br>4 设置基站6字节的MAC地址<br> 5 读取基站4字节的子网掩码<br> 6 设置基站4字节的子网掩码 <br>7 读取基站4字节的网关地址 <br>8 设置基站4字节的网关地址<br>9 读取基站4字节的DNS地址<br>10 设置基站4字节的DNS地址<br>11 读取基站4字节的待连接服务器地址<br>12 设置基站4字节的待连接服务器地址<br>13 读取网络端口参数<br>14 设置网络端口参数<br>15 读取服务器4字节的IP地址<br>16 设置服务器4字节的IP地址<br>17 读取服务器用户名<br>18 设置服务器用户名<br>19 读取服务器密码<br>20 设置服务器密码|
  688 +| 5-10 | IPMAC | 设置的IP地址或MAC地址字节数据、掩码、网关 |
  689 +| 11-29 || 参数无意义 |
  690 +
  691 +基站应答:
  692 +
  693 +| **字节** | **标识符** | **描述** |
  694 +| --- | --- | --- |
  695 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  696 +| 2 | BASEID | 应答的基站的编号 |
  697 +| 3 | CMDTYPE | 应答类型<br> 12 TCPIP相关配置 |
  698 +| 4 | MODE | 1 当前的IP地址<br> 3 当前的MAC地址<br> 5 当前的子网掩码 <br>7 当前的网关地址 <br>9 读取基站4字节的DNS地址<br>11 读取基站4字节的待连接服务器地址<br>13 读取网络端口参数 |
  699 +| 5-10 | IPMAC | 当前的IP地址或MAC地址字节数据、掩码、网关 |
  700 +| 11-29 || 参数无意义 |
  701 +
  702 +#### 5.2.4.1 基站IP地址
  703 +
  704 +电脑向基站发送(参考IP地址: 200.200.100.251):
  705 +
  706 +| **字节** | **标识符** | **描述** |
  707 +| --- | --- | --- |
  708 +| 1 | BASECMD | 0x61 基站管理类指令 |
  709 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  710 +| 3 | CMDTYPE | 基站管理命令类型<br> 12 TCPIP相关配置 |
  711 +| 4 | MODE | 1 读取基站4字节的IP地址,高位前<br>2 设置基站4字节的IP地址,高位前 |
  712 +| 5 | IP\_ADDR | 十六进制,IP地址,如:200 |
  713 +| 6 | IP\_ADDR | 十六进制,IP地址,如:200 |
  714 +| 7 | IP\_ADDR | 十六进制,IP地址,如:100 |
  715 +| 8 | IP\_ADDR | 十六进制,IP地址,如:251 |
  716 +| 9-29 || 参数无意义 |
  717 +
  718 +基站应答(参考IP地址: 200.200.100.251):
  719 +
  720 +| **字节** | **标识符** | **描述** |
  721 +| --- | --- | --- |
  722 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  723 +| 2 | BASEID | 应答的基站的编号 |
  724 +| 3 | CMDTYPE | 应答类型<br> 12 TCPIP相关配置 |
  725 +| 4 | MODE | 1 读取基站4字节的IP地址,高位前 |
  726 +| 5 | IP\_ADDR | 十六进制,IP地址,如:200 |
  727 +| 6 | IP\_ADDR | 十六进制,IP地址,如:200 |
  728 +| 7 | IP\_ADDR | 十六进制,IP地址,如:100 |
  729 +| 8 | IP\_ADDR | 十六进制,IP地址,如:251 |
  730 +| 9-29 || 参数无意义 |
  731 +
  732 +#### 5.2.4.2 基站MAC地址
  733 +
  734 +电脑向基站发送(参考MAC地址: EA-37-35-82-23-51):
  735 +
  736 +| **字节** | **标识符** | **描述** |
  737 +| --- | --- | --- |
  738 +| 1 | BASECMD | 0x61 基站管理类指令 |
  739 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  740 +| 3 | CMDTYPE | 基站管理命令类型 <br>12 TCPIP相关配置 |
  741 +| 4 | MODE | 3 读取基站6字节的MAC地址<br>4 设置基站6字节的MAC地址 |
  742 +| 5 | MAC | 十六进制,MAC地址,如:0xea |
  743 +| 6 | MAC | 十六进制,MAC地址,如:0x37 |
  744 +| 7 | MAC | 十六进制,MAC地址,如:0x35 |
  745 +| 8 | MAC | 十六进制,MAC地址,如:0x82 |
  746 +| 9 | MAC | 十六进制,MAC地址,如:0x23 |
  747 +| 10 | MAC | 十六进制,MAC地址,如:0x51 |
  748 +| 11-29 || 参数无意义 |
  749 +
  750 +基站应答(参考MAC地址: EA-37-35-82-23-51):
  751 +
  752 +| **字节** | **标识符** | **描述** |
  753 +| --- | --- | --- |
  754 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  755 +| 2 | BASEID | 应答的基站的编号 |
  756 +| 3 | CMDTYPE | 应答类型<br> 12 TCPIP相关配置 |
  757 +| 4 | MODE | 3 读取基站6字节的MAC地址 |
  758 +| 5 | MAC | 十六进制,MAC地址,如:0xea |
  759 +| 6 | MAC | 十六进制,MAC地址,如:0x37 |
  760 +| 7 | MAC | 十六进制,MAC地址,如:0x35 |
  761 +| 8 | MAC | 十六进制,MAC地址,如:0x82 |
  762 +| 9 | MAC | 十六进制,MAC地址,如:0x23 |
  763 +| 10 | MAC | 十六进制,MAC地址,如:0x51 |
  764 +| 11-29 || 参数无意义 |
  765 +
  766 +#### 5.2.4.3 基站子网掩码
  767 +
  768 +电脑向基站发送(参考掩码地址: 255.255.255.0):
  769 +
  770 +| **字节** | **标识符** | **描述** |
  771 +| --- | --- | --- |
  772 +| 1 | BASECMD | 0x61 基站管理类指令 |
  773 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  774 +| 3 | CMDTYPE | 基站管理命令类型<br> 12 TCPIP相关配置 |
  775 +| 4 | MODE | 5 读取基站4字节的子网掩码<br>6 设置基站4字节的子网掩码 |
  776 +| 5 | MAC | 十六进制,掩码地址,如:255 |
  777 +| 6 | MAC | 十六进制,掩码地址,如:255 |
  778 +| 7 | MAC | 十六进制,掩码地址,如:255 |
  779 +| 8 | MAC | 十六进制,掩码地址,如:0 |
  780 +| 9-29 || 参数无意义 |
  781 +
  782 +基站应答(参考掩码地址: 255.255.255.0):
  783 +
  784 +| **字节** | **标识符** | **描述** |
  785 +| --- | --- | --- |
  786 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  787 +| 2 | BASEID | 应答的基站的编号 |
  788 +| 3 | CMDTYPE | 应答类型<br> 12 TCPIP相关配置 |
  789 +| 4 | MODE | 5读取基站4字节的子网掩码 |
  790 +| 5 | MAC | 十六进制,掩码地址,如:255 |
  791 +| 6 | MAC | 十六进制,掩码地址,如:255 |
  792 +| 7 | MAC | 十六进制,掩码地址,如:255 |
  793 +| 8 | MAC | 十六进制,掩码地址,如:0 |
  794 +| 9-29 || 参数无意义 |
  795 +
  796 +#### 5.2.4.4 基站网关地址
  797 +
  798 +电脑向基站发送(参考网关地址: 200.200.100.1):
  799 +
  800 +| **字节** | **标识符** | **描述** |
  801 +| --- | --- | --- |
  802 +| 1 | BASECMD | 0x61 基站管理类指令 |
  803 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  804 +| 3 | CMDTYPE | 基站管理命令类型<br> 12 TCPIP相关配置 |
  805 +| 4 | MODE | 7 读取基站4字节的网关地址<br>8 设置基站4字节的网关地址 |
  806 +| 5 | GATEWAY | 十六进制,网关地址,如:200 |
  807 +| 6 | GATEWAY | 十六进制,网关地址,如:200 |
  808 +| 7 | GATEWAY | 十六进制,网关地址,如:100 |
  809 +| 8 | GATEWAY | 十六进制,网关地址,如:1 |
  810 +| 9-29 || 参数无意义 |
  811 +
  812 +基站应答(参考网关地址: 200.200.100.1):
  813 +
  814 +| **字节** | **标识符** | **描述** |
  815 +| --- | --- | --- |
  816 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  817 +| 2 | BASEID | 应答的基站的编号 |
  818 +| 3 | CMDTYPE | 应答类型<br> 12 TCPIP相关配置 |
  819 +| 4 | MODE | 7读取基站4字节的网关地址 |
  820 +| 5 | GATEWAY | 十六进制,网关地址,如:200 |
  821 +| 6 | GATEWAY | 十六进制,网关地址,如:200 |
  822 +| 7 | GATEWAY | 十六进制,网关地址,如:100 |
  823 +| 8 | GATEWAY | 十六进制,网关地址,如:1 |
  824 +| 9-29 || 参数无意义 |
  825 +
  826 +#### 5.2.4.5 基站DNS地址
  827 +
  828 +电脑向基站发送(参考DNS地址: 200.200.100.1):
  829 +
  830 +| **字节** | **标识符** | **描述** |
  831 +| --- | --- | --- |
  832 +| 1 | BASECMD | 0x61 基站管理类指令 |
  833 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  834 +| 3 | CMDTYPE | 基站管理命令类型<br> 12 TCPIP相关配置 |
  835 +| 4 | MODE | 9读取基站4字节的DNS地址10设置基站4字节的DNS地址 |
  836 +| 5 | DNS | 十六进制,网关地址,如:200 |
  837 +| 6 | DNS | 十六进制,网关地址,如:200 |
  838 +| 7 | DNS | 十六进制,网关地址,如:100 |
  839 +| 8 | DNS | 十六进制,网关地址,如:1 |
  840 +| 9-29 || 参数无意义 |
  841 +
  842 +基站应答(参考DNS地址: 200.200.100.1):
  843 +
  844 +| **字节** | **标识符** | **描述** |
  845 +| --- | --- | --- |
  846 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  847 +| 2 | BASEID | 应答的基站的编号 |
  848 +| 3 | CMDTYPE | 应答类型 <br>12 TCPIP相关配置 |
  849 +| 4 | MODE | 9读取基站4字节的DNS地址 |
  850 +| 5 | DNS | 十六进制,网关地址,如:200 |
  851 +| 6 | DNS | 十六进制,网关地址,如:200 |
  852 +| 7 | DNS | 十六进制,网关地址,如:100 |
  853 +| 8 | DNS | 十六进制,网关地址,如:1 |
  854 +| 9-29 || 参数无意义 |
  855 +
  856 +#### 5.2.4.6 基站待连接服务器地址
  857 +
  858 +电脑向基站发送(参考服务器地址: 200.200.100.1):
  859 +
  860 +| **字节** | **标识符** | **描述** |
  861 +| --- | --- | --- |
  862 +| 1 | BASECMD | 0x61 基站管理类指令 |
  863 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  864 +| 3 | CMDTYPE | 基站管理命令类型 <br>12 TCPIP相关配置 |
  865 +| 4 | MODE | 11 读取基站4字节的待连接服务器地址<br>12 设置基站4字节的待连接服务器地址 |
  866 +| 5 | SERVERIP | 十六进制,网关地址,如:200 |
  867 +| 6 | SERVERIP | 十六进制,网关地址,如:200 |
  868 +| 7 | SERVERIP | 十六进制,网关地址,如:100 |
  869 +| 8 | SERVERIP | 十六进制,网关地址,如:1 |
  870 +| 9-29 || 参数无意义 |
  871 +
  872 +基站应答(参考服务器地址: 200.200.100.1):
  873 +
  874 +| **字节** | **标识符** | **描述** |
  875 +| --- | --- | --- |
  876 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  877 +| 2 | BASEID | 应答的基站的编号 |
  878 +| 3 | CMDTYPE | 应答类型<br> 12 TCPIP相关配置 |
  879 +| 4 | MODE | 11读取基站4字节的待连接服务器地址 |
  880 +| 5 | SERVERIP | 十六进制,网关地址,如:200 |
  881 +| 6 | SERVERIP | 十六进制,网关地址,如:200 |
  882 +| 7 | SERVERIP | 十六进制,网关地址,如:100 |
  883 +| 8 | SERVERIP | 十六进制,网关地址,如:1 |
  884 +| 9-29 || 参数无意义 |
  885 +
  886 +#### 5.2.4.7 基站连接端口参数
  887 +
  888 +电脑向基站发送:
  889 +
  890 +| **字节** | **标识符** | **描述** |
  891 +| --- | --- | --- |
  892 +| 1 | BASECMD | 0x61 基站管理类指令 |
  893 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  894 +| 3 | CMDTYPE | 基站管理命令类型 <br>12 TCPIP相关配置 |
  895 +| 4 | MODE | 13 读取网络端口参数<br>14 设置网络端口参数 |
  896 +| 5 | LOCAL\_IP | 基站IP地址获取方式:0=手动指定;1=DHCP获取 |
  897 +| 6 | CONNET\_M | 连接服务器方式:0=IP地址方式;1=域名方式 |
  898 +| 7-10 | HEART\_TIME | 心跳时间长度:[0, 65535] 秒 |
  899 +| 11-14 | CLIENT\_PORT | TCP Client连接端口:[0, 65535] |
  900 +| 15-18 | LISTEN\_PORT | TCP Server监听端口:[0, 65535] |
  901 +| 19-22 | SERVER\_PORT | 待连接服务器的服务端口:[0, 65535] |
  902 +| 23-29 || 参数无意义 |
  903 +
  904 +基站应答:
  905 +
  906 +| **字节** | **标识符** | **描述** |
  907 +| --- | --- | --- |
  908 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  909 +| 2 | BASEID | 应答的基站的编号 |
  910 +| 3 | CMDTYPE | 应答类型 <br>12 TCPIP相关配置 |
  911 +| 4 | MODE | 13读取网络端口参数 |
  912 +| 5 | LOCAL\_IP | 基站IP地址获取方式:0=手动指定;1=DHCP获取 |
  913 +| 6 | CONNET\_M | 连接服务器方式:0=IP地址方式;1=域名方式 |
  914 +| 7-10 | HEART\_TIME | 心跳时间长度:[0, 65535] 秒 |
  915 +| 11-14 | CLIENT\_PORT | TCP Client连接端口:[0, 65535] |
  916 +| 15-18 | LISTEN\_PORT | TCP Server监听端口:[0, 65535] |
  917 +| 19-22 | SERVER\_PORT | 待连接服务器的服务端口:[0, 65535] |
  918 +| 23-29 || 参数无意义 |
  919 +
  920 +#### 5.2.4.8 服务器IP地址
  921 +
  922 +电脑向基站发送(参考IP地址: 200.200.100.251):
  923 +
  924 +| **字节** | **标识符** | **描述** |
  925 +| --- | --- | --- |
  926 +| 1 | BASECMD | 0x61 基站管理类指令 |
  927 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  928 +| 3 | CMDTYPE | 基站管理命令类型<br> 12 TCPIP相关配置 |
  929 +| 4 | MODE | 15 读取服务器4字节的IP地址,高位前<br>16 设置服务器4字节的IP地址,高位前 |
  930 +| 5 | IP\_ADDR | 十六进制,IP地址,如:200 |
  931 +| 6 | IP\_ADDR | 十六进制,IP地址,如:200 |
  932 +| 7 | IP\_ADDR | 十六进制,IP地址,如:100 |
  933 +| 8 | IP\_ADDR | 十六进制,IP地址,如:251 |
  934 +| 9-29 || 参数无意义 |
  935 +
  936 +基站应答(参考IP地址: 200.200.100.251):
  937 +
  938 +| **字节** | **标识符** | **描述** |
  939 +| --- | --- | --- |
  940 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  941 +| 2 | BASEID | 应答的基站的编号 |
  942 +| 3 | CMDTYPE | 应答类型 <br>12 TCPIP相关配置 |
  943 +| 4 | MODE | 15 读取服务器4字节的IP地址,高位前 |
  944 +| 5 | IP\_ADDR | 十六进制,IP地址,如:200 |
  945 +| 6 | IP\_ADDR | 十六进制,IP地址,如:200 |
  946 +| 7 | IP\_ADDR | 十六进制,IP地址,如:100 |
  947 +| 8 | IP\_ADDR | 十六进制,IP地址,如:251 |
  948 +| 9-29 || 参数无意义 |
  949 +
  950 +#### 5.2.4.9 服务器用户名
  951 +
  952 +电脑向基站发送:
  953 +
  954 +| **字节** | **标识符** | **描述** |
  955 +| --- | --- | --- |
  956 +| 1 | BASECMD | 0x61 基站管理类指令 |
  957 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  958 +| 3 | CMDTYPE | 基站管理命令类型<br> 12 TCPIP相关配置 |
  959 +| 4 | MODE | 17 读取服务器用户名<br>18 设置服务器用户名 |
  960 +| 5 | SEVER\_name\_LEN | 服务器用户名字节个数 |
  961 +| 6-56 | SEVER\_name | 服务器用户名字符(50字节) |
  962 +||||
  963 +||||
  964 +||||
  965 +
  966 +基站应答:
  967 +
  968 +| **字节** | **标识符** | **描述** |
  969 +| --- | --- | --- |
  970 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  971 +| 2 | BASEID | 应答的基站的编号 |
  972 +| 3 | CMDTYPE | 应答类型 <br>12 TCPIP相关配置 |
  973 +| 4 | MODE | 17读取服务器用户名 |
  974 +| 5 | SEVER\_name\_LEN | 服务器用户名字节个数 |
  975 +| 6-56 | SEVER\_name | 服务器用户名字符(50字节) |
  976 +||||
  977 +||||
  978 +| 9-29 || 参数无意义 |
  979 +
  980 +#### 5.2.4.9 服务器密码
  981 +
  982 +电脑向基站发送:
  983 +
  984 +| **字节** | **标识符** | **描述** |
  985 +| --- | --- | --- |
  986 +| 1 | BASECMD | 0x61 基站管理类指令 |
  987 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  988 +| 3 | CMDTYPE | 基站管理命令类型 <br>12 TCPIP相关配置 |
  989 +| 4 | MODE | 19 读取服务器密码20 设置服务器密码 |
  990 +| 5 | SEVER\_code\_LEN | 服务器密码字节个数 |
  991 +| 6-56 | SEVER\_code | 服务器密码字符(50字节) |
  992 +||||
  993 +||||
  994 +||||
  995 +
  996 +基站应答:
  997 +
  998 +| **字节** | **标识符** | **描述** |
  999 +| --- | --- | --- |
  1000 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1001 +| 2 | BASEID | 应答的基站的编号 |
  1002 +| 3 | CMDTYPE | 应答类型 <br>12 TCPIP相关配置 |
  1003 +| 4 | MODE | 19读取服务器密码 |
  1004 +| 5 | SEVER\_code\_LEN | 服务器密码字节个数 |
  1005 +| 6-56 | SEVER\_code | 服务器密码字符(50字节) |
  1006 +||||
  1007 +||||
  1008 +| 9-29 || 参数无意义 |
  1009 +
  1010 +### 5.2.5 免配对SN号模式基站设置(正道远)
  1011 +
  1012 +在5.2.1节基站配对模式是7和8的时候有效。
  1013 +
  1014 +电脑向基站发送:
  1015 +
  1016 +| **字节** | **标识符** | **描述** |
  1017 +| --- | --- | --- |
  1018 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1019 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1020 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1021 +| 4 | MODE | 11-读取免配对SN号模式下的基站设置<br>12-写免配对SN号模式下的基站设置,此模式下第5字节后面数据有效 |
  1022 +| 5 | ATTN | 0 键盘考勤关闭<br>1 键盘考勤打开 |
  1023 +| 6 | REPORT | 0 键盘定时报告状态关闭<br>1 打开 |
  1024 +| 7 | BEACON | 0 基站发投票信标关闭<br>1 打开,基站在测试模式,可控制进入测试模式的键盘进行在线测试、写号等 |
  1025 +| 8-29 || 参数无意义 |
  1026 +
  1027 +基站应答:
  1028 +
  1029 +| **字节** | **标识符** | **描述** |
  1030 +| --- | --- | --- |
  1031 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1032 +| 2 | BASEID | 应答的基站的编号 |
  1033 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1034 +| 4 | MODE | 11 返回免配对SN号模式下的基站设置 |
  1035 +| 5 | ATTN | 0 键盘考勤关闭<br>1 键盘考勤打开 |
  1036 +| 6 | REPORT | 0 键盘定时报告状态关闭<br>1 打开 |
  1037 +| 7 | BEACON | 0 基站发投票信标关闭<br>1 打开,基站在测试模式,可控制进入测试模式的键盘进行在线测试、写号等 |
  1038 +| 8-29 || 参数无意义 |
  1039 +
  1040 +### 5.2.6 考勤基站去重配置
  1041 +
  1042 +电脑向基站发送:
  1043 +
  1044 +| **字节** | **标识符** | **描述** |
  1045 +| --- | --- | --- |
  1046 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1047 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1048 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1049 +| 4 | MODE | 13-读取考勤基站去重设置<br>14-写考勤基站去重设置 |
  1050 +| 5 | FLAG | 是否设置去重: 0=不去重; 1=去重; |
  1051 +| 6 | COUNT | 去重秒数=[1, 5] |
  1052 +||||
  1053 +| 8-29 || 参数无意义 |
  1054 +
  1055 +基站应答:
  1056 +
  1057 +| **字节** | **标识符** | **描述** |
  1058 +| --- | --- | --- |
  1059 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1060 +| 2 | BASEID | 应答的基站的编号 |
  1061 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1062 +| 4 | MODE | 13返回考勤基站考勤基站去重设置 |
  1063 +| 5 | FLAG | 是否设置去重: 0=不去重; 1=去重; |
  1064 +| 6 | COUNT | 去重秒数=[1, 5] |
  1065 +||||
  1066 +| 8-29 || 参数无意义 |
  1067 +
  1068 +### 5.2.7 软件狗功能
  1069 +
  1070 +电脑向基站发送:
  1071 +
  1072 +| **字节** | **标识符** | **描述** |
  1073 +| --- | --- | --- |
  1074 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1075 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1076 +| 3 | CMDTYPE | 基站管理命令类型<br>9 基站软件狗功能 |
  1077 +| 4 | MODE | 1 核对密码 <br>2 读用户区 <br>3 写用户区 <br>4 读出密码(内部功能,不对用户公开)<br> 5 修改密码(内部功能,不对用户公开)<br>6 读出基站唯一硬件编号UID |
  1078 +| 5 | USERZONE | 用户区号,读写用户区时候有意义,1-4,每区16字节,SDK支持按字节读写,都先需要核对密码才能读写 |
  1079 +| 6-21 | USERINFO | 读密码和用户区信息时候,参数无意义<br>核对密码和修改密码时候,前8字节是密码字符串,不足8字节补00,后8字节无意义<br>写用户区信息时候,是16字节用户信息,字符串格式,不足16字节补00 |
  1080 +| 22-24 || 参数无意义 |
  1081 +
  1082 +基站应答:
  1083 +
  1084 +| **字节** | **标识符** | **描述** |
  1085 +| --- | --- | --- |
  1086 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1087 +| 2 | BASEID | 应答的基站的编号 |
  1088 +| 3 | CMDTYPE | 应答类型 <br>9 基站软件狗功能应答 |
  1089 +| 4 | RESULT | 结果类型 <br>1核对密码状态 <br>2返回用户信息 <br>3返回密码<br>6 返回基站UID |
  1090 +| 5 | STATUS | 核对密码时,1成功 2失败<br>返回用户信息时候,是用户区号,1为1区,2为2区<br>返回密码时候,本字节无意义 |
  1091 +| 6-21 | USERINFO | 核对密码时候参数无意义。<br>返回用户区时候是16字节用户区字符串,如果1-4区未正确核对密码,不能操作,返回字符串"LOCK"。<br>返回密码时候,前8字节有效。<br>返回UID时候,STM32系列是12字节 |
  1092 +| 22-24 || 参数无意义 |
  1093 +
  1094 +### 5.2.8 低功率快速配对
  1095 +
  1096 +用于控制基站进入快速配对时候,是否降低功率,以满足多教室同时配对需求
  1097 +
  1098 +电脑向基站发送:
  1099 +
  1100 +| **字节** | **标识符** | **描述** |
  1101 +| --- | --- | --- |
  1102 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1103 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1104 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1105 +| 4 | MODE | 15-读取基站快速配对低功率模式<br>16-写基站快速配对低功率模式 |
  1106 +| 5 | ENABLE | 是否低功率: 0=不使用; 1=使用; |
  1107 +||||
  1108 +| 6-29 || 参数无意义 |
  1109 +
  1110 +基站应答:
  1111 +
  1112 +| **字节** | **标识符** | **描述** |
  1113 +| --- | --- | --- |
  1114 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1115 +| 2 | BASEID | 应答的基站的编号 |
  1116 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1117 +| 4 | MODE | 15返回基站快速配对低功率设置 |
  1118 +| 5 | ENABLE | 是否低功率: 0=不使用; 1=使用 |
  1119 +||||
  1120 +| 6-29 || 参数无意义 |
  1121 +
  1122 +### 5.2.9 语音基站状态控制/显示
  1123 +
  1124 +用于控制语音基站状态显示;语音键盘的数据是通过无线路由器转usb直接传给sdk,而基站
  1125 +
  1126 +本身无法检测到是否有数据传输,所以需要sdk将一些状态信息传输给基站的mcu,显示到lcd、led上。
  1127 +
  1128 +电脑向基站发送: (先1秒1次执行写)
  1129 +
  1130 +| **字节** | **标识符** | **描述** |
  1131 +| --- | --- | --- |
  1132 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1133 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1134 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1135 +| 4 | MODE | 17-读取语音基站状态<br>18-写语音基站状态 |
  1136 +| 5 | DEV\_STAT | 设备状态 0-正常 \>1故障 <br>1 WIFI连接错误<br>2 NFC读卡器连接错误 |
  1137 +| 6 | SDK\_STAT | 电脑数据灯闪烁模式<br> 0 灭 1快闪<br>SDK连接上后总发送1,基站闪烁显示,但最好间隙随机 |
  1138 +| 7 | KEY\_STAT | 键盘数据等闪烁模式<br>0 灭 N\>0 1秒内闪烁N次,暂1到10<br>SDK1秒收到键盘应答数据,根据键盘个数送1到10,如果1秒内没收到任何键盘数据,送0 |
  1139 +| 8 | VOTE\_MODE | 投票模式,投票信标中的MODE值<br>用于基站显示状态 |
  1140 +| ~~9~~ | ~~Fast\_charge\_STAT~~ | ~~是否在快充状态;1=快速充电;0=普通充电~~ |
  1141 +||||
  1142 +| 8-29 || 参数无意义 |
  1143 +
  1144 +基站应答:
  1145 +
  1146 +| **字节** | **标识符** | **描述** |
  1147 +| --- | --- | --- |
  1148 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1149 +| 2 | BASEID | 应答的基站的编号 |
  1150 +| 3 | CMDTYPE | 应答类型 <br>11通用附加配置 |
  1151 +| 4 | MODE | 17返回语音基站状态 |
  1152 +| 5 | DEV\_STAT ||
  1153 +| 6 | SDK\_STAT ||
  1154 +| 7 | KEY\_STAT ||
  1155 +| 8 | VOTE\_MODE ||
  1156 +| 9.。 || 参数无意义 |
  1157 +
  1158 +### 5.2.10 基站写NFC信息
  1159 +
  1160 +用于基站本身带NFC,刷卡写键盘信息,基站返回2次信息,第1次表示收到,第2次是刷卡写成功的时候返回键盘SN和当前信息。
  1161 +
  1162 +电脑向基站发送: (SDK按64字节长度发送包)
  1163 +
  1164 +| **字节** | **标识符** | **描述** |
  1165 +| --- | --- | --- |
  1166 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1167 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1168 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1169 +| 4 | MODE | 19 写NFC学生信息<br>20 读键盘NFC学生信息 |
  1170 +| 5 | MSGTYPE | 信息类型<br> 1 学生信息(学号、姓名、金币)--为了简单,先1次写完,SDK按64字节长度发送包<br>4 学生信息,单条48字节,IDSTR48字节是姓名NAME内容 |
  1171 +| 6-21 | IDSTR | 16字符学号信息,0xFF开始的话表示不修改键盘原有的信息 |
  1172 +| 22-37 | NAME | 16字符姓名信息,0xFF开始的话表示不修改 |
  1173 +| 38-41 | MONEY | 金币,4字节,高位在前,全部0xFFFF表示不修改 |
  1174 +|| 。。。 ||
  1175 +| 。。58 |||
  1176 +
  1177 +基站应答:
  1178 +
  1179 +| **字节** | **标识符** | **描述** |
  1180 +| --- | --- | --- |
  1181 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1182 +| 2 | BASEID | 应答的基站的编号 |
  1183 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1184 +| 4 | MODE | 19 刷卡写应答<br>20 返回刷卡读信息(19类刷卡ok也返回) |
  1185 +| 5 | STATUS | ~~1 收到指令~~<br>~~2 刷卡写ok格式1,先只返回SN~~<br>STATUS等于发送的MSGTYPE<br>(S6体系,T2体系目前都回1) |
  1186 +| 6-9 | SN | 刷卡键盘的SN, 4字节,高位前 |
  1187 +| 10-11 | SN2 | 政务体系6字节SN的后面2字节 |
  1188 +| 12-13 | ID | 键盘编号,高位在前 |
  1189 +| .。 || 参数无意义 |
  1190 +
  1191 +针对G1政务商务应用股东姓名比较长(52字节)情况:
  1192 +
  1193 +| 5 | MSGTYPE | 信息类型<br>2股东姓名(52字节),SDK按64字节长度发送包 |
  1194 +| --- | --- | --- |
  1195 +| 6-57 | STOCKNAME | 股东姓名(52字节),00提前结束<br>NFC是4字节一段,刚好13段 |
  1196 +| 58 |||
  1197 +
  1198 +针对G1政务商务应用股东股权数情况:
  1199 +
  1200 +| 5 | MSGTYPE | 信息类型<br>3股东股权数目,SDK按64字节长度发送包 |
  1201 +| --- | --- | --- |
  1202 +| 6-13 | STOCKNAME | 股东股权数(8字节)<br>键盘端是按BCD码,例如1234就是1234FFFFFFFFFFFF |
  1203 +| 14.。。 |||
  1204 +| 。。58 |||
  1205 +
  1206 +### 5.2.11 基站数据开关配置
  1207 +
  1208 +用于C200K基站设置投票数据发送通道:USB or TCPIP
  1209 +
  1210 +电脑向基站发送:
  1211 +
  1212 +| **字节** | **标识符** | **描述** |
  1213 +| --- | --- | --- |
  1214 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1215 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1216 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1217 +| 4 | MODE | 21 读基站数据开关<br>22 写基站数据开关 |
  1218 +| 5 | DATA\_SW | 0:投票数据收发接口是USB<br>1: 投票数据收发接口是TCPIP |
  1219 +| 6 || 参数无意义 |
  1220 +||||
  1221 +||||
  1222 +|| 。。。 ||
  1223 +||||
  1224 +
  1225 +基站应答:
  1226 +
  1227 +| **字节** | **标识符** | **描述** |
  1228 +| --- | --- | --- |
  1229 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1230 +| 2 | BASEID | 应答的基站的编号 |
  1231 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1232 +| 4 | MODE | 21 读基站数据开关<br>22 写基站数据开关 |
  1233 +| 5 | DATA\_SW | 0:投票数据收发接口是USB<br>1: 投票数据收发接口是TCPIP |
  1234 +| 6 || 参数无意义 |
  1235 +||||
  1236 +||||
  1237 +| .。 || 参数无意义 |
  1238 +
  1239 +### 5.2.12 基站容量配置
  1240 +
  1241 +电脑向基站发送:
  1242 +
  1243 +| **字节** | **标识符** | **描述** |
  1244 +| --- | --- | --- |
  1245 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1246 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1247 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1248 +| 4 | MODE | 23 基站容量配置 |
  1249 +| 5 | MODE1 | 1 设置<br>2 读取 |
  1250 +| 6-7 | KPNUMS | 容量,带键盘个数,高位在前 |
  1251 +| 8 | LOCK | 是否锁定当前键盘,锁定就不继续添加键盘<br>1 锁定 0 不锁定 |
  1252 +||||
  1253 +|| 。。。 ||
  1254 +||||
  1255 +
  1256 +基站应答:
  1257 +
  1258 +| **字节** | **标识符** | **描述** |
  1259 +| --- | --- | --- |
  1260 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1261 +| 2 | BASEID | 应答的基站的编号 |
  1262 +| 3 | CMDTYPE | 应答类型 <br>11通用附加配置 |
  1263 +| 4 | MODE | 23 基站容量配置 |
  1264 +| 5 | MODE1 | 2 返回容量配置信息 |
  1265 +| 6-7 | KPNUMS | 容量,带键盘个数,高位在前 |
  1266 +| 8 | LOCK | 是否锁定当前键盘,锁定就不继续添加键盘<br>1 锁定 0 不锁定 |
  1267 +||||
  1268 +| .。 || 参数无意义 |
  1269 +
  1270 +### 5.2.13 基站测试
  1271 +
  1272 +电脑向基站发送:
  1273 +
  1274 +| **字节** | **标识符** | **描述** |
  1275 +| --- | --- | --- |
  1276 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1277 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1278 +| 3 | CMDTYPE | 基站管理命令类型13基站测试 |
  1279 +| 4 | MODE | 1 基站进入射频测试模式(FCC测试模式)<br> 2 基站退出射频测试模式<br> 3 模块射频测试,参数是CHAN和MDNO <br>4 外设功能测试,参数是CHAN(老版本3是发送N包,4是纯接收N包,5是接收键盘信号,6是RSSI监听,7是读RSSI)<br> 10 基站蜂鸣器响一下<br><br>11 写音质测试刷卡参数(具体描述在后面)<br>12 读音质测试刷卡参数 |
  1280 +| 5 | CHAN | 信道,0是缺省,否则指定信道(FCC用到)<br>外设功能测试时候是功能,0 是自动(比如led和蜂鸣器) |
  1281 +| 6 | MDNO | 模块编号 一般1-4<br>或FCC测试模式(老版本没带这个参数,直接连续载波发射)<br>0和1=连续载波发射 2连续发送 3接收模式 |
  1282 +| 6-29 || 参数无意义 |
  1283 +
  1284 +基站应答:
  1285 +
  1286 +| **字节** | **标识符** | **描述** |
  1287 +| --- | --- | --- |
  1288 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1289 +| 2 | BASEID | 应答的基站的编号 |
  1290 +| 3 | CMDTYPE | 应答类型<br>13 基站测试 |
  1291 +| 4 | MODE | 1 基站进入射频测试模式<br> 2 基站退出射频测试模式<br> 3 基站测试结果反馈<br>4 |
  1292 +| 5 || 预留 |
  1293 +| 6 | Rfid num | Mode=3时基站反馈模块的测试结果;测试结果通过5.6.3报告给SDK |
  1294 +| 7-8 | Tx\_total | 高位在前 |
  1295 +| 9-10 | Tx\_sucess | 高位在前 |
  1296 +| 11-12 | Rx\_total | 高位在前 |
  1297 +| 13-14 | Rx\_sucess | 高位在前 |
  1298 +||| 参数无意义 |
  1299 +
  1300 +音质测试刷卡基站(T2用)相关指令:
  1301 +
  1302 +| **字节** | **标识符** | **描述** |
  1303 +| --- | --- | --- |
  1304 +| 4 | MODE | 11 写音质测试刷卡参数<br>12 读音质测试刷卡参数 |
  1305 +| 5 | TEST\_FUNC | 暂1,音质测试 |
  1306 +| 6-7 | VOLUME | 音量下限值,2字节,高位前 |
  1307 +| 8-9 | NOISE | 噪音上限值,2字节,高位前 |
  1308 +||||
  1309 +
  1310 +备注:
  1311 +
  1312 +1、仅专用音质测试基站支持本指令,其他不要支持
  1313 +
  1314 +2、基站应答,用MODE=12返回
  1315 +
  1316 +3、基站刷卡写数据地址,在原来wifi\_name的区域,把TEST\_FUNC开始的数据写入
  1317 +
  1318 +```c
  1319 +uint8_t match_code[3]; //addr=40
  1320 +uint8_t frequency_point //addr=43
  1321 +uint8_t wifi_name[12]; //addr=44
  1322 +uint8_t wifi_pass[16]; //addr=56 // 14-17区:wifi密码
  1323 +uint8_t Preserve[16]; //addr=72 // 18-22区:保留16字节,空出来,以后可能是云网址
  1324 +```
  1325 +
  1326 +### 5.2.14 基站调试信息互动
  1327 +
  1328 +用于读取基站当前调试变量值、log记录等。
  1329 +
  1330 +基站先应答,具体的信息可以多条,用3.3.5节的基站log信息打包返回。
  1331 +
  1332 +SDK向基站发送:
  1333 +
  1334 +| **字节** | **标识符** | **描述** |
  1335 +| --- | --- | --- |
  1336 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1337 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1338 +| 3 | CMDTYPE | 基站管理命令类型<br>32 基站调试信息互动 |
  1339 +| 4 | MODE | SDK可填入不同值,基站来根据不同值具体反馈信息<br>1 读取 |
  1340 +||||
  1341 +
  1342 +基站应答:
  1343 +
  1344 +| **字节** | **标识符** | **描述** |
  1345 +| --- | --- | --- |
  1346 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1347 +| 2 | BASEID | 应答的基站的编号 |
  1348 +| 3 | CMDTYPE | 应答类型<br> 32基站调试信息互动 |
  1349 +| 4 | MODE | 同SDK指令 |
  1350 +
  1351 +### 5.2.15 SDK退出通知
  1352 +
  1353 +用于基站加硬件usb复位尝试重连时候。
  1354 +
  1355 +如果SDK正常退出,通知到基站,基站就知道不是故障断开。
  1356 +
  1357 +SDK向基站发送:
  1358 +
  1359 +| **字节** | **标识符** | **描述** |
  1360 +| --- | --- | --- |
  1361 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1362 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1363 +| 3 | CMDTYPE | 基站管理命令类型<br>33 SDK退出连接 |
  1364 +||||
  1365 +
  1366 +基站应答:
  1367 +
  1368 +| **字节** | **标识符** | **描述** |
  1369 +| --- | --- | --- |
  1370 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1371 +| 2 | BASEID | 应答的基站的编号 |
  1372 +| 3 | CMDTYPE | 33 收到断开 |
  1373 +||||
  1374 +
  1375 +### 5.2.16 NFC指纹管理
  1376 +
  1377 +用于NFC刷卡进行指纹管理。
  1378 +
  1379 +SDK向基站发送:
  1380 +
  1381 +| **字节** | **标识符** | **描述** |
  1382 +| --- | --- | --- |
  1383 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1384 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1385 +| 3 | CMDTYPE | 基站管理命令类型<br>34 NFC指纹管理 |
  1386 +| 4 | CMD |1、指纹清空,并加指纹<br>2、新加指纹<br>3、指纹清空|
  1387 +| 5 | FPNUM | 指纹数量,例如加2个指纹,表示新录入2个指纹 |
  1388 +
  1389 +基站应答:
  1390 +
  1391 +| **字节** | **标识符** | **描述** |
  1392 +| --- | --- | --- |
  1393 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1394 +| 2 | BASEID | 应答的基站的编号 |
  1395 +| 3 | CMDTYPE | 34 收到指纹管理 |
  1396 +||||
  1397 +
  1398 +### 5.2.17 NFC写指定配对码
  1399 +
  1400 +用于NFC刷卡进行键盘的指定绑定不同教室的基站,所以配对码不同。
  1401 +
  1402 +刷卡后用3.3.5节刷卡消息回报。
  1403 +
  1404 +SDK向基站发送:
  1405 +
  1406 +| **字节** | **标识符** | **描述** |
  1407 +| --- | --- | --- |
  1408 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1409 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1410 +| 3 | CMDTYPE | 基站管理命令类型<br>35 NFC写指定配对码 |
  1411 +| 4 | ATC | 4字节配对码 |
  1412 +||||
  1413 +
  1414 +基站应答:
  1415 +
  1416 +| **字节** | **标识符** | **描述** |
  1417 +| --- | --- | --- |
  1418 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1419 +| 2 | BASEID | 应答的基站的编号 |
  1420 +| 3 | CMDTYPE | 35 收到 |
  1421 +||||
  1422 +
  1423 +### 5.2.18 管理基站指令清空
  1424 +
  1425 +&emsp;&emsp;管理基站可能一直有电,上次软件退出可能还有指令没执行,比如残留了NFC指纹管理指令还没执行。软件连接后清空比较保险。
  1426 +
  1427 +SDK向基站发送:
  1428 +
  1429 +| **字节** | **标识符** | **描述** |
  1430 +| --- | --- | --- |
  1431 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1432 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1433 +| 3 | CMDTYPE | 基站管理命令类型<br>36 管理指令清空 |
  1434 +||||
  1435 +
  1436 +基站应答:
  1437 +
  1438 +| **字节** | **标识符** | **描述** |
  1439 +| --- | --- | --- |
  1440 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1441 +| 2 | BASEID | 应答的基站的编号 |
  1442 +| 3 | CMDTYPE | 36 收到管理指令清空 |
  1443 +||||
  1444 +
  1445 +### 5.2.19 SDK读写基站字符串
  1446 +
  1447 +用于SDK判断基站是否已连接(双SDK连接基站BUG)
  1448 +
  1449 +SDK向基站发送:
  1450 +
  1451 +| **字节** | **标识符** | **描述** |
  1452 +| --- | --- | --- |
  1453 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1454 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1455 +| 3 | CMDTYPE | 基站管理命令类型<br>34 读基站字符串 |
  1456 +
  1457 +基站应答:
  1458 +
  1459 +| **字节** | **标识符** | **描述** |
  1460 +| --- | --- | --- |
  1461 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1462 +| 2 | BASEID | 应答的基站的编号 |
  1463 +| 3 | CMDTYPE | 34 读基站字符串 |
  1464 +| 4-44 | String | 基站存储字符串 40字节 |
  1465 +
  1466 +SDK向基站发送:
  1467 +
  1468 +| **字节** | **标识符** | **描述** |
  1469 +| --- | --- | --- |
  1470 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1471 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1472 +| 3 | CMDTYPE | 基站管理命令类型<br>35 写基站字符串 |
  1473 +| 4-44 | String | 40字节字符串 |
  1474 +
  1475 +基站应答:
  1476 +
  1477 +| **字节** | **标识符** | **描述** |
  1478 +| --- | --- | --- |
  1479 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1480 +| 2 | BASEID | 应答的基站的编号 |
  1481 +| 3 | CMDTYPE | 35 读基站字符串 |
  1482 +| 4-44 | String | 基站存储字符串 40字节 |
  1483 +
  1484 +### 5.2.20 读写基站设置-反馈参数
  1485 +
  1486 +==基站需保存参数到Eeprom,上电恢复。==
  1487 +
  1488 +电脑向基站发送:
  1489 +
  1490 +| **字节** | **标识符** | **描述** |
  1491 +| --- | --- | --- |
  1492 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1493 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1494 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1495 +| 4 | MODE | 30 读空闲设置-反馈参数设置<br>31 写空闲设置-反馈参数设置 |
  1496 +| 5 | KEYREP | 反馈模式(参数解释对应键盘协议空闲模式下参数) |
  1497 +| 6 | KEYMAX | 反馈有效按键(参数解释对应键盘协议空闲模式下参数) |
  1498 +
  1499 +基站应答:
  1500 +
  1501 +| **字节** | **标识符** | **描述** |
  1502 +| --- | --- | --- |
  1503 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1504 +| 2 | BASEID | 应答的基站的编号 |
  1505 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1506 +| 4 | MODE | 30 读空闲设置-反馈参数设置<br>31 写空闲设置-反馈参数设置 |
  1507 +| 5 | KEYREP | 反馈模式(参数解释对应键盘协议空闲模式下参数) |
  1508 +| 6 | KEYMAX | 反馈有效按键(参数解释对应键盘协议空闲模式下参数) |
  1509 +
  1510 +### 5.2.21 读写基站设置-语言设置
  1511 +
  1512 +==基站需保存参数到Eeprom,上电恢复。==
  1513 +
  1514 +电脑向基站发送:
  1515 +
  1516 +| **字节** | **标识符** | **描述** |
  1517 +| --- | --- | --- |
  1518 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1519 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1520 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1521 +| 4 | MODE | 32 读空闲设置-语言设置33 写空闲设置-语言设置 |
  1522 +| 5 | ATTRIB\_EX1 | 语言选择(参数解释对应键盘协议空闲模式下参数) |
  1523 +
  1524 +基站应答:
  1525 +
  1526 +| **字节** | **标识符** | **描述** |
  1527 +| --- | --- | --- |
  1528 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1529 +| 2 | BASEID | 应答的基站的编号 |
  1530 +| 3 | CMDTYPE | 应答类型 <br>11通用附加配置 |
  1531 +| 4 | MODE | 32 读空闲设置-语言设置33 写空闲设置-语言设置 |
  1532 +| 5 | KEYREP | 反馈模式(参数解释对应键盘协议空闲模式下参数) |
  1533 +
  1534 +### 5.2.22 读写基站组网公开位
  1535 +
  1536 +==基站需保存参数到Eeprom,上电恢复。==
  1537 +
  1538 +电脑向基站发送:
  1539 +
  1540 +| **字节** | **标识符** | **描述** |
  1541 +| --- | --- | --- |
  1542 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1543 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1544 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1545 +| 4 | MODE | 34 读基站组网公开位<br>35 写基站组网公开位 |
  1546 +| 5 | Conterl | 1:开 0:关 对于基站组网广播信标的==基站信息公开位(0x51信标内ST-Bit第一个Bit)== |
  1547 +
  1548 +基站应答:
  1549 +
  1550 +| **字节** | **标识符** | **描述** |
  1551 +| --- | --- | --- |
  1552 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1553 +| 2 | BASEID | 应答的基站的编号 |
  1554 +| 3 | CMDTYPE | 应答类型 <br>11通用附加配置 |
  1555 +| 4 | MODE | 34 读基站组网公开位35 写基站组网公开位 |
  1556 +| 5 | Conterl | 1:开 0:关 |
  1557 +
  1558 +### 5.2.23 基站复位
  1559 +
  1560 +电脑向基站发送:
  1561 +
  1562 +| **字节** | **标识符** | **描述** |
  1563 +| --- | --- | --- |
  1564 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1565 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1566 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1567 +| 4 | MODE | 36 基站复位 |
  1568 +||||
  1569 +
  1570 +基站应答:
  1571 +
  1572 +| **字节** | **标识符** | **描述** |
  1573 +| --- | --- | --- |
  1574 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1575 +| 2 | BASEID | 应答的基站的编号 |
  1576 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1577 +| 4 | MODE | 36 收到复位指令 |
  1578 +| 5 |||
  1579 +
  1580 +### 5.2.24 基站刷卡清指纹和姓名
  1581 +
  1582 +电脑向基站发送:
  1583 +
  1584 +| **字节** | **标识符** | **描述** |
  1585 +| --- | --- | --- |
  1586 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1587 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1588 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1589 +| 4 | MODE | 37 基站刷卡清空指纹和姓名 |
  1590 +||||
  1591 +
  1592 +基站应答:
  1593 +
  1594 +| **字节** | **标识符** | **描述** |
  1595 +| --- | --- | --- |
  1596 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1597 +| 2 | BASEID | 应答的基站的编号 |
  1598 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1599 +| 4 | MODE | 37 收到 |
  1600 +| 5 |||
  1601 +
  1602 +### 5.2.25 基站刷卡写生僻字(12号字体)
  1603 +
  1604 +电脑向基站发送:
  1605 +
  1606 +| **字节** | **标识符** | **描述** |
  1607 +| --- | --- | --- |
  1608 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1609 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1610 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1611 +| 4 | MODE | 39 基站刷卡写生僻字 |
  1612 +| 5 | Cont | 预留 |
  1613 +| 6-7 | GB\_CODE | GB18030\_编码 |
  1614 +| 8 - 31 | GB\_DATA | 点阵库数据(24字节) |
  1615 +||||
  1616 +
  1617 +基站应答:
  1618 +
  1619 +| **字节** | **标识符** | **描述** |
  1620 +| --- | --- | --- |
  1621 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1622 +| 2 | BASEID | 应答的基站的编号 |
  1623 +| 3 | CMDTYPE | 应答类型<br> 11通用附加配置 |
  1624 +| 4 | MODE | 39 收到 |
  1625 +| 5 |||
  1626 +
  1627 +基站NFC写入规则(基站自己写缓存,写满之后保留最新数据、缓存在使用刷卡生效之后清空)
  1628 +
  1629 +地址从200开始 片区200/4=50 总消耗空间(26\*8+1+1=210字节)
  1630 +
  1631 +数据格式:
  1632 +
  1633 +| **字节** | **标识符** | **描述** |
  1634 +| --- | --- | --- |
  1635 +| 1 | Cont | 0x01 (控制字,暂固定为1表示有效) |
  1636 +| 2-3 | GB\_CODE | GB18030\_编码 |
  1637 +| 4-27 | GB\_DATA | 点阵库数据(24字节) |
  1638 +| ... | GB\_CODEx | GB18030\_编码 (最大缓存8个生僻字) |
  1639 +| ... | GB\_CODEx | 点阵库数据(24字节) |
  1640 +| 28 | End | 0x55 (表示停止,后续没有内容了) |
  1641 +||||
  1642 +||||
  1643 +||||
  1644 +||||
  1645 +
  1646 +### 5.2.26 基站刷卡生效控制
  1647 +
  1648 +电脑向基站发送: (暂时在刷卡基站与最新基站生效,后续新产品都使用该方式,老产品不动)
  1649 +
  1650 +| **字节** | **标识符** | **描述** |
  1651 +| --- | --- | --- |
  1652 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1653 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1654 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1655 +| 4 | MODE | 40 基站刷卡生效控制 |
  1656 +| 5 | Control | 1、开始多条NFC指令,等命令 2 才能开始刷卡<br>2、多条NFC指令结束,可以启动刷卡 |
  1657 +
  1658 +基站应答:
  1659 +
  1660 +| **字节** | **标识符** | **描述** |
  1661 +| --- | --- | --- |
  1662 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1663 +| 2 | BASEID | 应答的基站的编号 |
  1664 +| 3 | CMDTYPE | 应答类型 <br>11通用附加配置 |
  1665 +| 4 | MODE | 40 收到 |
  1666 +| 5 | Control ||
  1667 +
  1668 +### 5.2.27 基站指纹刷卡生效控制
  1669 +
  1670 +用于G1答题基站的生产测试模式,暂停指纹核对才能刷卡。
  1671 +
  1672 +电脑向基站发送:
  1673 +
  1674 +| **字节** | **标识符** | **描述** |
  1675 +| --- | --- | --- |
  1676 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1677 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1678 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1679 +| 4 | MODE | 41 基站指纹刷卡生效控制 |
  1680 +| 5 | Control | 1、不用指纹核对也可以刷卡<br>2、重新启用指纹核对后才能刷卡(基站也可以重新上电后恢复) |
  1681 +
  1682 +基站应答:
  1683 +
  1684 +| **字节** | **标识符** | **描述** |
  1685 +| --- | --- | --- |
  1686 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1687 +| 2 | BASEID | 应答的基站的编号 |
  1688 +| 3 | CMDTYPE | 应答类型 <br>11通用附加配置 |
  1689 +| 4 | MODE | 41 收到 |
  1690 +| 5 | Control | Conttol值 |
  1691 +
  1692 +### 5.2.28 基站扫描干扰频点
  1693 +
  1694 +电脑向基站发送:
  1695 +
  1696 +| **字节** | **标识符** | **描述** |
  1697 +| --- | --- | --- |
  1698 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1699 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1700 +| 3 | CMDTYPE | 基站管理命令类型<br>11 通用附加配置 |
  1701 +| 4 | MODE | 42 基站扫描频点 |
  1702 +| 5 | Type | 0、基站停止扫描(预留)<br> 1、基站开启扫描(预留)<br>2、读取扫描结果 |
  1703 +
  1704 +基站应答:
  1705 +
  1706 +| **字节** | **标识符** | **描述** |
  1707 +| --- | --- | --- |
  1708 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1709 +| 2 | BASEID | 应答的基站的编号 |
  1710 +| 3 | CMDTYPE | 应答类型 <br>11通用附加配置 |
  1711 +| 4 | MODE | 42基站扫描频点 |
  1712 +| 5 | type | 0 <br>1<br>2 -基站报告扫描频点结果 |
  1713 +| 6 | NUM | 扫描到的频点个数,最大12个<br>目前是干扰频点 |
  1714 +| 7-18 | FREQ ||
  1715 +
  1716 +## 5.3 白名单设置
  1717 +
  1718 +### 5.3.1 白名单按区设置
  1719 +
  1720 +用于白名单批次全部更新或读取,软件自己编个循环,按区读取或写,每区10个SN号同时操作,区数和基站有关,例如20区,就是支持200个键盘的名单。
  1721 +
  1722 +电脑向基站发送:
  1723 +
  1724 +| **字节** | **标识符** | **描述** |
  1725 +| --- | --- | --- |
  1726 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1727 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1728 +| 3 | CMDTYPE | 基站管理命令类型<br>14 白名单相关配置 |
  1729 +| 4 | MODE | 1 读取指定区的白名单SN号表<br>2 改写指定区的SN号表 |
  1730 +| 5 | ZONE | 区号,0-19(最大和基站有关),每区10个SN号<br> 4字节一个SN,高位前,SN号全00表示空<br>注意:写第0区时候基站自动把其他区清除空 |
  1731 +| 6-9 | SN1 | 第一个SN,高位前,SN号全00表示空 |
  1732 +| 10-13 | SN2 | 第2个SN |
  1733 +| 14-17 | SN3 | 第3个SN |
  1734 +| 18… | SN4---SN10 | 第4到第10个SN |
  1735 +||||
  1736 +| …58 || 参数无意义 |
  1737 +
  1738 +基站应答:(读取和改写都返回,SDK判断是否写正确)
  1739 +
  1740 +| **字节** | **标识符** | **描述** |
  1741 +| --- | --- | --- |
  1742 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1743 +| 2 | BASEID | 应答的基站的编号 |
  1744 +| 3 | CMDTYPE | 应答类型<br> 14 白名单相关配置 |
  1745 +| 4 | MODE | 1返回对应区的白名单表 |
  1746 +| 5 | ZONE | 区号 |
  1747 +| 6-9 | SN1 | 第一个SN,高位前,SN号全00表示空 |
  1748 +| 10-13 | SN2 | 第2个SN |
  1749 +| 14-17 | SN3 | 第3个SN |
  1750 +| 18… | SN4---SN10 | 第4到第10个SN |
  1751 +| …58 |||
  1752 +
  1753 +### 5.3.2 白名单单独设置
  1754 +
  1755 +用于白名单单个或多个单独添加或删除,一次可最多操作10个SN。
  1756 +
  1757 +电脑向基站发送:
  1758 +
  1759 +| **字节** | **标识符** | **描述** |
  1760 +| --- | --- | --- |
  1761 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1762 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1763 +| 3 | CMDTYPE | 基站管理命令类型<br> 14 白名单相关配置<br>17 T2基站白名单单独配置 |
  1764 +| 4 | MODE | 3 清除白名单SN号表(SN1后数据空)<br> 4 白名单增加SN<br> 5 白名单删除SN(相当于软件单独指定任意键盘)<br>6 查询白名单是否有SN |
  1765 +| 5 || 空 |
  1766 +| 6-9 | SN1 | 第一个SN,高位前,SN号全00表示空 |
  1767 +| 10-13 | SN2 | 第2个SN |
  1768 +| 14-17 | SN3 | 第3个SN |
  1769 +| 18… | SN4---SN10 | 第4到第10个SN |
  1770 +||||
  1771 +| …58 || 参数无意义 |
  1772 +
  1773 +基站应答:(读取和改写都返回,SDK判断是否写正确)
  1774 +
  1775 +| **字节** | **标识符** | **描述** |
  1776 +| --- | --- | --- |
  1777 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1778 +| 2 | BASEID | 应答的基站的编号 |
  1779 +| 3 | CMDTYPE | 应答类型<br> 14 白名单相关配置 |
  1780 +| 4 | MODE | 对应SDK的MODE值 |
  1781 +| 5 | STATUS | 0 有失败<br>1 全部执行成功 |
  1782 +| 6 | SN1\_OK | 第1个SN的执行结果 0 失败 1成功 |
  1783 +| 7 | SN2\_OK | 第2个SN的执行结果 0 失败 1成功 |
  1784 +| 8 | SN3\_OK | 第3个SN的执行结果 0 失败 1成功 |
  1785 +| 9…15 | SN4---SN10 | 第4到第10个SN的执行结果 0 失败 1成功 |
  1786 +||||
  1787 +
  1788 +### 5.3.3 基站键盘SN名单管理
  1789 +
  1790 +T2双基站时候,需要管理可连接键盘SN。
  1791 +
  1792 +为避免和白名单接口冲突,CMDTYPE改17,其他操作和白名单一致。
  1793 +
  1794 +### 5.3.4 基站键盘SN名单管理-长包
  1795 +
  1796 +用于T2基站,1个长指令包读写所有键盘SN名单。
  1797 +
  1798 +电脑向基站发送:
  1799 +
  1800 +| **字节** | **标识符** | **描述** |
  1801 +| --- | --- | --- |
  1802 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1803 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1804 +| 3 | CMDTYPE | 基站管理命令类型18 T2基站SN名单管理-长包格式 |
  1805 +| 4 | MODE | 1 读取名单<br> 2 写名单<br> 3 双基站下白名单删除SN,由SDK判断双基站有键盘SN号相同后发出指令,避免老基站占坑 <br>4 锁定键盘,可以n个 <br>5 锁定所有当前在线的键盘 <br>6 解锁键盘<br>7 解锁所有锁定的键盘 |
  1806 +| 5 | TYPE | 名单类型,暂1 |
  1807 +| 6 | NUM | SN的个数 |
  1808 +| 7-10 | SN1 | 第一个SN,高位前,4字节 |
  1809 +| 11-14 | SN2 | 第2个SN |
  1810 +||| 。。。 |
  1811 +| … || 第NUM个SN |
  1812 +
  1813 +基站应答:
  1814 +
  1815 +| **字节** | **标识符** | **描述** |
  1816 +| --- | --- | --- |
  1817 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  1818 +| 2 | BASEID | 应答的基站的编号 |
  1819 +| 3 | CMDTYPE | 应答类型 <br>18 T2基站SN名单管理-长包格式 |
  1820 +| 4 | MODE | 对应SDK的MODE值 |
  1821 +| 5 | TYPE | 名单类型,暂1 |
  1822 +| 6 | NUM | SN的个数 |
  1823 +| 7-10 | SN1 | 第一个SN,高位前,4字节 |
  1824 +| 11-14 | SN2 | 第2个SN |
  1825 +||||
  1826 +
  1827 +## 5.4基站下载多包
  1828 +
  1829 +目的:解决电脑直接和键盘下载多包耗时长的问题;
  1830 +
  1831 +原理:
  1832 +
  1833 +修改前:下载多包是电脑与键盘通信,基站仅仅做转发,电脑通过usb多次询问,耗时多;
  1834 +
  1835 +修改后:电脑将升级的文件数据发送给基站,由基站来完成传输和询问,最后在上报给电脑。
  1836 +
  1837 +流程:
  1838 +
  1839 +S1,电脑先把下载键盘的ID或SN表单传给基站—5.4.2节。
  1840 +
  1841 +S2, 电脑发送进入下载状态指令给基站---5.4.1节,然后基站开始逐个通知键盘进入下载状态—键盘新版协议6.2节;基站将失败的键盘上报给电脑(电脑需要回应表示收到)---5.4.5节;通知完所有键盘后基站告知电脑(有指令,5.4.5节)可以进入下一阶段通信。
  1842 +
  1843 +S3, 电脑收到基站信号后,开始发送256字节是数据块,每次16字节,分16次完成,基站每次都要对16字节回应,保证数据收到;然后电脑告知基站启动一轮发送,5.4.5节;
  1844 +
  1845 +S4,基站启动广播发给键盘和查询状态—键盘新版6.3节,基站会将失败的键盘上报给电脑(5.4.5节,电脑需要回应表示收到);数据块发送给了所有键盘后,基站会告知电脑可以进入下一个数据块的发送(5.4.5节);重复S3-S4直到完成所有数据。
  1846 +
  1847 +S5,电脑通知基站退出下载,基站通知所有(包括失败的)键盘退出下载,并报告状态(只报告失败和全部完成,5.4.5节)。
  1848 +
  1849 +### 5.4.1 开始/结束基站下载多包
  1850 +
  1851 +电脑向基站发送:
  1852 +
  1853 +| **字节** | **标识符** | **描述** |
  1854 +| --- | --- | --- |
  1855 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1856 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1857 +| 3 | CMDTYPE | 基站管理命令类型22 基站下载多包 |
  1858 +| 4 | MODE | 1 进入或退出下载状态 |
  1859 +| 5 | ID/SN | 1:2字节ID模式; <br>2:4字节SN; <br>3:6字节SN模式 |
  1860 +| 6 | ~~NC~~ | (DOWNTYPE) 原指令漏了 |
  1861 +| 7 | DCMD | 模式 1进入下载; 0退出下载; |
  1862 +||| (以下数据在下载键盘固件时候有效) |
  1863 +| 8 | HVER | 键盘硬件版本 |
  1864 +| 9-11 | SVER | 键盘软件版本,3字节,10进制数字<br>一定要和固件内部版本号相同,便于上位机软件好对比版本,知道键盘升级成功 |
  1865 +| 12-13 | CRC-16 | 固件校验字 |
  1866 +| 14-17 | FILELEN | 固件文件大小,4字节,高位在前 |
  1867 +||||
  1868 +
  1869 +基站应答:
  1870 +
  1871 +| **字节** | **标识符** | **描述** |
  1872 +| --- | --- | --- |
  1873 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  1874 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1875 +| 3 | CMDTYPE | 基站管理命令类型<br>22 基站下载多包 |
  1876 +| 4 | MODE | 1 进入或退出下载状态 |
  1877 +| 5 | ID/SN | 1:2字节ID模式; <br>2:4字节SN; <br>3:6字节SN模式 |
  1878 +| 6 | ~~NC~~ ||
  1879 +| 7 | DCMD | 模式 1进入下载 0退出下载 |
  1880 +| 8 | HVER | 键盘硬件版本 |
  1881 +| 9-11 | SVER | 键盘软件版本,3字节,10进制数字<br>一定要和固件内部版本号相同,便于上位机软件好对比版本,知道键盘升级成功 |
  1882 +| 12-13 | CRC-16 | 固件校验字 |
  1883 +| 14-17 | FILELEN | 固件文件大小,4字节,高位在前 |
  1884 +||||
  1885 +
  1886 +### 5.4.2 下载指定升级键盘的ID/SN号给基站
  1887 +
  1888 +电脑分多次将ID/SN号传输给基站。
  1889 +
  1890 +电脑向基站发送:
  1891 +
  1892 +| **字节** | **标识符** | **描述** |
  1893 +| --- | --- | --- |
  1894 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1895 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1896 +| 3 | CMDTYPE | 基站管理命令类型<br>22发送升级键盘的ID/SN |
  1897 +| 4 | MODE | 2 下载ID/SN表单 |
  1898 +| 5 | ID/SN All | 升级键盘的总个数 |
  1899 +| 6 | ID/SN PACK | 当前包序号,从0开始 |
  1900 +| 7-54 | ID/SN | 7-12 SN1; 13-18 SN2; 19-24 SN3….<br>6字节SN,高位在前,每次可下8个SN键盘;不够的用0xFFFF填补 |
  1901 +
  1902 +基站应答:
  1903 +
  1904 +| **字节** | **标识符** | **描述** |
  1905 +| --- | --- | --- |
  1906 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  1907 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1908 +| 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
  1909 +| 4 | MODE | 2 下载ID/SN表单 |
  1910 +| 5 | ID/SN All | 升级键盘的总个数 |
  1911 +| 6 | ID/SN Current | 当前包序号,从0开始 |
  1912 +| 7-54 | ID/SN | 7-12 SN1; 13-18 SN2; 19-24 SN3….<br>6字节SN,高位在前,每次可下8个SN键盘;不够的用0xFFFF填补 |
  1913 +
  1914 +### 5.4.3电脑发数据包给基站
  1915 +
  1916 +流程上可以电脑向基站主动发送(在基站报告本次发送完成后),也可以基站主动申请要。
  1917 +
  1918 +电脑向基站发送:
  1919 +
  1920 +| **字节** | **标识符** | **描述** |
  1921 +| --- | --- | --- |
  1922 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1923 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1924 +| 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
  1925 +| 4 | DOWNCMD | 4 下载具体数据--16字节 <br>6 下载具体数据—512字节每片段 <br>7 下载具体数据---64字节(48字节有效,区别于4类型的16字节有效) 10 基站问64字节包(根据代码补充)<br>11 基站问512字节包(根据代码补充) |
  1926 +| 5 | DOWNTYPE | 多包类型<br>30 短信广播信息(SDK组包模式) |
  1927 +| 6 | DOWNID | 数据包标识码(DOWNTYPE=30时,是总包数)<br>文件下载模式时候是最高位地址 V4.52<br>由于非文件下载模式PACKH加上PACKL,只能下载65536字节,文件下载模式为支持大文件,用DOWNID作为高位地址,可以下载16384K字节 |
  1928 +| 7 | PACKH | 数据段编号,0-255 |
  1929 +| 8 | PACKL | 数据片编号, 0-15(每片段16字节) ; <br>如果是每次512字节的PACKDATA,PACKL=0和1,1K数据传输2次;48字节的传21包 |
  1930 +| 9-24 | PACKDATA | 16字节的数据,48字节数据 或 512字节的数据(对应usb1024字节长包指令) |
  1931 +
  1932 +备注:参数的具体意义见表决器协议6.3
  1933 +
  1934 +基站应答:
  1935 +
  1936 +| **字节** | **标识符** | **描述** |
  1937 +| --- | --- | --- |
  1938 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  1939 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1940 +| 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
  1941 +| 4 | MODE | 4下载具体数据的应答或请求具体数据<br>6 下载具体数据的应答或请求传输—512字节每片段<br>7 下载具体数据(48字节有效) |
  1942 +| 5 | DOWNTYPE | 多包类型 |
  1943 +| 6 | DOWNID | 数据包标识码<br>文件下载模式时候是最高位地址 V4.52<br>由于非文件下载模式PACKH加上PACKL,只能下载65536字节,文件下载模式为支持大文件,用DOWNID作为高位地址,可以下载16384K字节 |
  1944 +| 7 | PACKH | 数据段编号,0-255 |
  1945 +| 8 | PACKL | 数据片编号, 0-15<br>如果是每次512字节的PACKDATA,PACKL=0和1<br>如果是每次64字节的PACKDATA,PACKL=0-21 基站保存1K数据再发给键盘 |
  1946 +| 9-24 | PACKDATA | 16字节的数据<br>或 512字节的数据(对应usb1024字节长包指令)<br>48字节有效数据 |
  1947 +
  1948 +### 5.4.4电脑通知基站本次数据块发送完毕
  1949 +
  1950 +用于SDK主动控制数据块传输的过程。SDK是分片段传输,基站被动响应,并不知道数据块传输完成,所以留给SDK控制,基站收到这条指令后,就开始向键盘下载这块数据。
  1951 +
  1952 +电脑向基站发送:
  1953 +
  1954 +| **字节** | **标识符** | **描述** |
  1955 +| --- | --- | --- |
  1956 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1957 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1958 +| 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
  1959 +| 4 | DOWNCMD | 5 本次数据块下载完成 |
  1960 +||||
  1961 +||||
  1962 +
  1963 +备注:参数的具体意义见表决器协议6.3
  1964 +
  1965 +基站应答:
  1966 +
  1967 +| **字节** | **标识符** | **描述** |
  1968 +| --- | --- | --- |
  1969 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  1970 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1971 +| 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
  1972 +| 4 | MODE | 5本次数据块下载完成 |
  1973 +||||
  1974 +||||
  1975 +
  1976 +### 5.4.5基站主动发送 键盘更新状态
  1977 +
  1978 +基站主动发送状态:
  1979 +
  1980 +| **字节** | **标识符** | **描述** |
  1981 +| --- | --- | --- |
  1982 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  1983 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1984 +| 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
  1985 +| 4 | MODE | 6 上报状态<br>9 上报状态,告诉sdk,底层键盘固件升级完成<br>10 向sdk请求(索要)数据包(数据包以1K为单位)byte6之后的数据无效 |
  1986 +| 5 | PACKH | 数据段编号,0-255<br>申请的数据包号PACK\_H |
  1987 +| 6 | PACKL | 数据片编号, 0-15<br>申请的数据包号PACK\_L |
  1988 +| 7 | Update status | 2-失败;(包括通知键盘进入下载和数据块下载失败;)<br>1-全部完成,电脑可以下一个流程(包括本次256字节成功、键盘进入下载、键盘退出下载) |
  1989 +| 8-13 | Keypad ID/SN | ID/SN 号,固定6字节, 高位在前 |
  1990 +| 14-24 | NC | 参数无意义 |
  1991 +
  1992 +电脑确认:
  1993 +
  1994 +| **字节** | **标识符** | **描述** |
  1995 +| --- | --- | --- |
  1996 +| 1 | BASECMD | 0x61 基站管理类指令 |
  1997 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  1998 +| 3 | CMDTYPE | 基站管理命令类型<br>22基站下载多包 |
  1999 +| 4 | MODE | 6 上报状态 |
  2000 +| 5 | PACKH | 数据段编号,0-255 |
  2001 +| 6 | PACKL | 数据片编号, 0-15 |
  2002 +| 7 | Update status | 2-失败;(包括通知键盘进入下载和数据块下载失败;)<br>1-全部完成,电脑可以下一个流程(包括本次256字节成功、键盘进入下载、键盘退出下载) |
  2003 +| 8-13 | Keypad ID/SN | ID/SN 号,固定6字节, 高位在前 |
  2004 +| 14-24 | NC | 参数无意义 |
  2005 +
  2006 +### 5.4.6T2soc基站说明
  2007 +
  2008 +1、多包下载的数据传输(键盘固件升级),增加每次传512字节,见5.4.3节
  2009 +
  2010 +2、维持原先SDK控制下载流程的方式
  2011 +
  2012 +3、基站和模块之间的SPI指令沿用本指令体系,只是BaseID相当于ModelID
  2013 +
  2014 +4、本流程一样适用于模块固件升级,只是少SN号指定步骤
  2015 +
  2016 +5、基站主控收到一段数据后,给模块分别发送,然后模块对自己带的键盘进行下载
  2017 +
  2018 +6、下载失败的键盘报告给主控
  2019 +
  2020 +7、本模块键盘下载一段完成,模块报告基站主控
  2021 +
  2022 +8、基站主控判断全部模块完成本段数据,报告给sdk
  2023 +
  2024 +9、sdk再传输下一段数据
  2025 +
  2026 +## 5.5基站上传多包
  2027 +
  2028 +目的:键盘上传多包提速,用于键盘上传课后练习结果;
  2029 +
  2030 +【SDK主动模式】
  2031 +
  2032 +原理:
  2033 +
  2034 +修改前:上传多包是电脑SDK与键盘通信,基站仅仅做转发,电脑通过usb多次询问,耗时多;
  2035 +
  2036 +修改后:电脑将要取多包的类型、对应键盘的SN或ID告诉基站,由基站来完成传输和询问,数据动态上报给电脑。一次只支持1个键盘取包,取包完成,SDK才能执行新的取包。
  2037 +
  2038 +流程:
  2039 +
  2040 +S1, 应用软件开启收作业模式时候,键盘先提交多包申请,SDK解析传给应用软件,应用软件先记录下键盘SN和多包类型。
  2041 +
  2042 +S2, 应用软件调用SDK,向基站发送5.5.1节的开始基站上传多包,基站应答1表示收到指令,这时候SDK要停止询问数据的流程,等待基站报告数据和状态
  2043 +
  2044 +S3,基站按键盘的多包上传流程执行,先点名,然后获取数据长度,然后查询。如果点名失败或者取包失败,基站用5.5.2节报告失败,如果最终成功,也报告成功
  2045 +
  2046 +S4,成功或者失败,SDK都会重新开始前面停下的询问数据流程;注意,基站上报状态是不需要SDK应答的,只发送一次,为避免sdk接收漏掉,SDK要做超时判断,例如5秒没有状态报告,就认为失败;
  2047 +
  2048 +S5,基站执行取包过程中所有键盘的应答,对应键盘协议4.1、4.2、4.3节的所有键盘的应答,基站都会转发给SDK,原有SDK对多包应答的处理可以不动,其实主要就是对4.2节多包数据片段的保存和组合
  2049 +
  2050 +### 5.5.1 开始/结束基站上传多包(SDK主动模式)
  2051 +
  2052 +适用于SDK主动模式,电脑向基站发送:
  2053 +
  2054 +| **字节** | **标识符** | **描述** |
  2055 +| --- | --- | --- |
  2056 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2057 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2058 +| 3 | CMDTYPE | 基站管理命令类型<br>23 基站上传多包 |
  2059 +| 4 | MODE | 1 进入取多包模式<br> 0 停止取多包模式 |
  2060 +| 5 | ID/SN | 1:2字节ID模式; <br>2:4字节SN; <br>3:6字节SN模式 |
  2061 +| 6-11 | IDSN | ID或SN,高位前<br>ID模式下前2字节有效,SN4模式下前4字节有效 |
  2062 +| 12 | PACKTYPE | 多包类型,这和键盘提交的多包申请里的类型一致 |
  2063 +| 13 | PACKID | 数据包辨别码,一般是0,和键盘提交的多包申请里数据一致 |
  2064 +||||
  2065 +
  2066 +基站应答:
  2067 +
  2068 +| **字节** | **标识符** | **描述** |
  2069 +| --- | --- | --- |
  2070 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2071 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2072 +| 3 | CMDTYPE | 基站管理命令类型<br>23 基站上传多包 |
  2073 +| 4 | STATUS | 1 收到指令 |
  2074 +||||
  2075 +||||
  2076 +||||
  2077 +
  2078 +### 5.5.2 基站报告执行状态(改3.3.4节)
  2079 +
  2080 +参见3.3.4节基站多包上传状态报告。
  2081 +
  2082 +下面指令仅是参考,不适用。
  2083 +
  2084 +~~基站主动向电脑发送:~~
  2085 +
  2086 +| **字节** | **标识符** | **描述** |
  2087 +| --- | --- | --- |
  2088 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2089 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2090 +| 3 | CMDTYPE | 基站管理命令类型<br> ~~23 基站上传多包状态~~ |
  2091 +| 4 | MODE | 2 键盘点名失败 <br>3 取包失败<br>4 取包完成 |
  2092 +| 5 | ID/SN | 1:2字节ID模式; <br>2:4字节SN; <br>3:6字节SN模式 |
  2093 +| 6-11 | IDSN | 键盘的ID或SN |
  2094 +||||
  2095 +
  2096 +注意:由于5.8G系统基站取多包2.5ms内能取6包,USB透传键盘0xA0的应答数据,SDK实测会丢包,所以键盘包数据改成投票结果类结果传输
  2097 +
  2098 +### 5.5.3 基站主动模式
  2099 +
  2100 +&emsp;&emsp;当键盘申请多包上传时候,基站不会转发申请给SDK,而是自动转多包接收,完成多包的收取(包含数据暂存),然后向SDK报告多包接收成功(3.2.4节基站多包状态报告),然后SDK收取基站暂存的多包内容。
  2101 +
  2102 +&emsp;&emsp;如果基站接收失败,也会向SDK报告,同样在3.3.4节。
  2103 +
  2104 +### 5.5.4 SDK询问基站多包数据
  2105 +
  2106 +SDK收到3.2.4节里面基站申请提交多包数据后,根据每包长度,依次读取。
  2107 +
  2108 +电脑向基站发送:
  2109 +
  2110 +| **字节** | **标识符** | **描述** |
  2111 +| --- | --- | --- |
  2112 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2113 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2114 +| 3 | CMDTYPE | 基站管理命令类型<br>23 基站上传多包 |
  2115 +| 4 | MODE | 2 取基站多包数据 |
  2116 +| 5 | PACKTYPE | 多包类型,这和键盘提交的多包申请里的类型一致 |
  2117 +| 6 | PACKID | 数据包辨别码,一般是0,和键盘提交的多包申请里数据一致 |
  2118 +| 7-8 | DATALEN | 每次应答片段数据长度,short,高位前<br>等同于申请包里面的DATALEN,不要变 |
  2119 +| 9-10 | PACKNO | 片段编号,1开始,最大值=申请包的PACKLEN/DATALEN |
  2120 +||||
  2121 +
  2122 +基站应答:
  2123 +
  2124 +| **字节** | **标识符** | **描述** |
  2125 +| --- | --- | --- |
  2126 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2127 +| 2 | BASEID | 基站编号 |
  2128 +| 3 | CMDTYPE | 基站管理命令类型<br>23 基站上传多包 |
  2129 +| 4 | MODE | 2 取基站多包数据 |
  2130 +| 5 | PACKTYPE | 多包类型 |
  2131 +| 6 | PACKID | 数据包辨别码 |
  2132 +| 7-8 | DATALEN | 每次应答片段数据长度,short,高位前<br>等同于申请包里面的DATALEN,不要变 |
  2133 +| 9-10 | PACKNO | 片段编号,1开始 |
  2134 +| 11-12 | CRC16 | DATA段数据的效验值 |
  2135 +| 13-16 || 空 |
  2136 +| 17- | DATA | 从第17字节开始,共DATALEN字节数据 |
  2137 +
  2138 +## 5.6基站下载单包
  2139 +
  2140 +目的:键盘单包下载指令提速,用于下发姓名、自定义文字信息等,而且支持SDK连续写入多条;
  2141 +
  2142 +原理:
  2143 +
  2144 +修改前:下载单包是电脑SDK与键盘通信,基站仅仅做转发,SDK多次询问,判断收到键盘应答才停止,一般100ms一个间隔,时间较长;
  2145 +
  2146 +修改后:
  2147 +
  2148 +1、SDK告诉基站要执行的单包下载的内容,然后由基站执行对键盘的单包下载,间隔可以调整到10ms保证键盘可靠应答(键盘代码如果先应答再执行可加快速度),如果收到键盘应答就转发给SDK(和原来类似),如果10ms没收到键盘应答就重发(原来是SDK判断超时重发),重发次数可以根据实际情况调整,比如可先定10次,如果10次键盘没应答就向SDK报告执行失败。
  2149 +
  2150 +2、基站内部有队列,SDK可以连续写入多条单包下载指令,队列数目可以暂定60(相当于1次可写60个键盘信息),如果满了向SDK报告队列满,没法执行;
  2151 +
  2152 +3、基站还是每次执行队列中的1条,成功就清除,空出队列空间;失败的时候可以马上清除,也可以优化,例如放到队列后面,重新执行1次(有些键盘一下子无线不行,过会就好了)
  2153 +
  2154 +4、基站执行下载单包的时候,还是要注意间隔性地插入投票信标取包过程,避免长时间执行单包下载导致键盘离线或没法提交数据;
  2155 +
  2156 +5、由于键盘单包下载SN位置有不同,有6字节19-24位置的,也有4字节5-8位置的,所以可以先只对第11类的读写个人信息指令执行基站下载模式;
  2157 +
  2158 +6、由于SDK要向应用反馈执行结果,而且可能是1个键盘连续写多个信息,所以有1个指令流水号,SDK内部向基站写指令的时候,也通过队列记录SN号和执行的操作类型,等基站反馈执行结果的时候,通过流水号好取出对应的键盘SN和操作类型反馈给应用,也好删除队列中的记录;
  2159 +
  2160 +### 5.6.1基站下载单包
  2161 +
  2162 +电脑向基站发送:
  2163 +
  2164 +| **字节** | **标识符** | **描述** |
  2165 +| --- | --- | --- |
  2166 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2167 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2168 +| 3 | CMDTYPE | 基站管理命令类型<br>27 基站下载单包 |
  2169 +| 4 | DataPos | 下载单包指令流水号,每次加1,用于分辨执行结果,SDK自动维护 |
  2170 +| 5 | KEYCMD | 一般是0x30,对应键盘单包指令的KEYCMD字节 |
  2171 +| 6-30 | Datas | 25字节,从KEYCMD算起,一般是26字节 |
  2172 +|| (CRC) | SDK指令不用加CRC,基站发的时候,根据版本填写CRC |
  2173 +||||
  2174 +||||
  2175 +
  2176 +基站应答:
  2177 +
  2178 +| **字节** | **标识符** | **描述** |
  2179 +| --- | --- | --- |
  2180 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2181 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2182 +| 3 | CMDTYPE | 基站管理命令类型<br>27基站下载单包 |
  2183 +| 4 | DataPos | 对应写入的DataPos,用于SDK好判断哪条写指令的结果 |
  2184 +| 5 | STATUS | 1 收到指令 <br>2 基站队列满,没法执行 <br>3 执行ok <br>4 执行错误(键盘超时没有应答) |
  2185 +||||
  2186 +||||
  2187 +
  2188 +如果键盘有应答,基站向SDK转发键盘的0xB0应答外,还要同时报告成功,注意DataPos值要对,SDK要根据DataPos值来删除队列和反馈SN给应用。
  2189 +
  2190 +### 5.6.2 T2Soc基站下载单包-长包1024字节
  2191 +
  2192 +电脑向基站发送:(也可用于基站主控向模块发送)
  2193 +
  2194 +| **字节** | **标识符** | **描述** |
  2195 +| --- | --- | --- |
  2196 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2197 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2198 +| 3 | CMDTYPE | 基站管理命令类型<br>28 T2Soc基站下载单包 |
  2199 +| 4 | DataPos | 下载单包指令流水号,每次加1,用于分辨执行结果,SDK自动维护 |
  2200 +| 5 | Format | 格式,暂定1 |
  2201 +| 6 | CMDNUM | 后面单包下载指令数目,每条58字节,最多17条 |
  2202 +| 7 || 空 |
  2203 +| 8-65 | CMD\_1 | 第一条指令58字节,第1个字节对应键盘单包下载指令的0x38指令码 |
  2204 +| 66.. | CMD\_2 | 第2条指令58字节 |
  2205 +|| …. | 第N条指令58字节… |
  2206 +||||
  2207 +
  2208 +基站应答:
  2209 +
  2210 +| **字节** | **标识符** | **描述** |
  2211 +| --- | --- | --- |
  2212 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2213 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2214 +| 3 | CMDTYPE | 28基站下载单包 |
  2215 +| 4 | DataPos | 对应写入的DataPos,用于SDK好判断哪条写指令的结果 |
  2216 +||||
  2217 +
  2218 +### ~~5.6.3 基站下载单包失败报告(改3.2.1节)~~
  2219 +
  2220 +考虑到主动报告流程需要应答确认,已经改为3.2.1节当成投票结果来报告。
  2221 +
  2222 +~~基站主动发送:(使用5.6.1节的应答结构和命令码)~~
  2223 +
  2224 +| **字节** | **标识符** | **描述** |
  2225 +| --- | --- | --- |
  2226 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2227 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2228 +| 3 | CMDTYPE | 基站管理命令类型<br>27基站下载单包 |
  2229 +| 4 | DataPos | 对应写入的DataPos,用于SDK好判断哪条写指令的结果 |
  2230 +| 5 | STATUS | 4执行错误(键盘超时没有应答) |
  2231 +| 6 | CMD | 0x38 键盘命令码,快速设置是0x38<br>其实从本字节开始的N个字节,都是对应设置指令的,这样SDK配合DataPos能准确判断键盘是哪个指令执行失败,注意基站要准确返回DataPos |
  2232 +| 7-10 | SN | 执行失败的键盘SN,4字节 |
  2233 +| 11 | KCMD | 快速设置的哪个类型的指令 |
  2234 +||||
  2235 +
  2236 +SDK应答:
  2237 +
  2238 +| **字节** | **标识符** | **描述** |
  2239 +| --- | --- | --- |
  2240 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2241 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2242 +| 3 | CMDTYPE | 27基站下载单包 |
  2243 +| 4 | DataPos | 基站送回的DataPos |
  2244 +| 5 | STATUS | 4执行错误收到 |
  2245 +
  2246 +## 5.7 组网相关【T2soc】
  2247 +
  2248 +&emsp;&emsp;本章节用于T2Soc多模块基站的组网功能用到的SPI指令。架构上基站主控芯片负责和SDK的通讯,然后通过SPI给各模块指令和收取数据,具体的业务操作都是模块Soc完成。
  2249 +
  2250 +### 5.7.1模块配置
  2251 +
  2252 +基站主控上电的时候,先对各模块进行配置。
  2253 +
  2254 +基站主控向模块发送:
  2255 +
  2256 +| **字节** | **标识符** | **描述** |
  2257 +| --- | --- | --- |
  2258 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2259 +| 2 | MD\_ID | 指定的模块接收,1-4,为0时候不指定,一般是0 |
  2260 +| 3 | CMDTYPE | 30 组网相关 |
  2261 +| 4 | CMD | 1 模块配置 |
  2262 +| 5 | MODULE\_ID | 设置模块编号,1-4,主模块编号1 |
  2263 +| 6 | IDNUM | 模块总数量1-4,相当于用几个模块 |
  2264 +| 7-10 | MATCHCODE | 配对码,4字节 |
  2265 +| 11-14 | FREQ1-4 | 4字节,频点1-4,频点1是主频点 |
  2266 +| 15 | NODEMAX | 每频点带键盘最多数目 |
  2267 +||||
  2268 +
  2269 +模块应答:
  2270 +
  2271 +| **字节** | **标识符** | **描述** |
  2272 +| --- | --- | --- |
  2273 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2274 +| 2 | MD\_ID | 应答的模块ID |
  2275 +| 3 | CMDTYPE | 30 模块配置指令应答 |
  2276 +| 4 | CMDACK | 1 模块配置应答 |
  2277 +| 5 |||
  2278 +
  2279 +### 5.7.2组网状态报告
  2280 +
  2281 +模块向基站主控发送:(或者主控转发给模块)
  2282 +
  2283 +| **字节** | **标识符** | **描述** |
  2284 +| --- | --- | --- |
  2285 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2286 +| 2 | MD\_ID | 模块编号 |
  2287 +| 3 | CMDTYPE | 30 组网相关 |
  2288 +| 4 | CMD | 2 组网状态报告消息<br>3 转发组网报告(基站把CMD2转发成3) |
  2289 +| 5 | STATUS | 0 离线 1在线(入网) |
  2290 +| 6 | MD\_REP | CMD=2的时候要转发消息的模块的编号<br>CMD=3的时候,是消息来源的模块ID |
  2291 +| 7-10 | KEYSN | 键盘SN,4字节 |
  2292 +| 11 | HW | 键盘硬件代号 |
  2293 +| 12-14 | SW1-SW3 | 键盘固件版本,3字节 |
  2294 +| 15 | VOLT | 电池电压 |
  2295 +||||
  2296 +
  2297 +接收方应答:
  2298 +
  2299 +| **字节** | **标识符** | **描述** |
  2300 +| --- | --- | --- |
  2301 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2302 +| 2 | MD\_ID | 模块ID,主控芯片ID=0 |
  2303 +| 3 | CMDTYPE | 30 模块配置指令应答 |
  2304 +| 4 | CMDACK | 2 组网状态报告收到<br>3 离线收到 |
  2305 +||||
  2306 +
  2307 +备注:
  2308 +
  2309 +4模块之间要共享组网信息,主要是副模块要知道有新键盘安排给我,和主模块知道副模块有键盘离线。
  2310 +
  2311 +入网操作只在主模块1上执行,所以入网报告都是主模块发起的,基站主控芯片收到后,如果MD\_REP不是1,就还要把相同的报告通过CMD3报告给模块MD\_REP,这样模块MD\_REP知道有1个键盘安排到自己的频点。
  2312 +
  2313 +离线报告的时候,都是各模块独立报告,SDK收到后,如果MD\_REP=1,要转发给主模块。
  2314 +
  2315 +所以各模块发消息的时候,自己处理好MD\_REP的值。
  2316 +
  2317 +### 5.7.3入网键盘信息汇总
  2318 +
  2319 +基站主控向主模块发送:
  2320 +
  2321 +| **字节** | **标识符** | **描述** |
  2322 +| --- | --- | --- |
  2323 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2324 +| 2 | MD\_ID | 1或0,基站主控只询问主模块 |
  2325 +| 3 | CMDTYPE | 30 组网相关 |
  2326 +| 4 | CMD | 4 读取在线键盘信息 |
  2327 +| 5 | MODULE\_ID | 询问那个模块的在线键盘情况,1-4<br>如果有4个模块,就询问4次 |
  2328 +
  2329 +模块应答:
  2330 +
  2331 +| **字节** | **标识符** | **描述** |
  2332 +| --- | --- | --- |
  2333 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2334 +| 2 | MD\_ID | 1,主模块 |
  2335 +| 3 | CMDTYPE | 30 模块配置指令应答 |
  2336 +| 4 | CMDACK | 4 读取在线键盘信息应答 |
  2337 +| 5 | MODULE\_ID | 哪个模块ID的情况 |
  2338 +| 6 | NUMS | 在线键盘数目 |
  2339 +| 7 | INFOTYPE | 1 状态格式1,每个键盘信息共10字节 |
  2340 +| 8 | NOP | 空,备用 |
  2341 +| 9-12 | KEYSN | 4字节键盘SN |
  2342 +| 13-16 | HW-SW3 | 4字节,键盘类型代码,SW1-SW3 |
  2343 +| 17-18 | VOLT-NOP | 1字节电压值,1字节空 |
  2344 +||| 下1个键盘的信息 |
  2345 +||||
  2346 +
  2347 +备注:SDK向基站询问时候,也可以遵照本指令,基站相当于模块1。
  2348 +
  2349 +### 5.7.4 SDK读在线键盘
  2350 +
  2351 +SDK向基站发送:
  2352 +
  2353 +| **字节** | **标识符** | **描述** |
  2354 +| --- | --- | --- |
  2355 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2356 +| 2 | BASEID | 基站编号,0广播 |
  2357 +| 3 | CMDTYPE | 30 组网相关 |
  2358 +| 4 | CMD | 5 读取在线键盘信息 |
  2359 +| 5 |||
  2360 +
  2361 +基站应答:
  2362 +
  2363 +| **字节** | **标识符** | **描述** |
  2364 +| --- | --- | --- |
  2365 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2366 +| 2 | BASEID | 基站编号 |
  2367 +| 3 | CMDTYPE | 30 模块配置指令应答 |
  2368 +| 4 | CMDACK | 5读取在线键盘信息应答 |
  2369 +| 5 | OK | 1收到 |
  2370 +| 6-7 | TOTAL | 在线键盘数目,高位前 |
  2371 +
  2372 +具体键盘SN号通过基站报告状态类返回,具体3.2.3节在线键盘状态报告。
  2373 +
  2374 +## 5.7 测试相关
  2375 +
  2376 +用于基站进行自动测试,或者返回LOG信息。
  2377 +
  2378 +SDK向基站发送:(T2soc基站主控转发给模块)
  2379 +
  2380 +| **字节** | **标识符** | **描述** |
  2381 +| --- | --- | --- |
  2382 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2383 +| 2 | MD\_ID | 指定的模块接收,1-4,为0时候不指定,一般是0 |
  2384 +| 3 | CMDTYPE | 31 测试相关 |
  2385 +| 4 | TESTMODE | 测试模式 <br>1、载波测试 ,MODE1是频点 <br>2、指定键盘进行通讯测试,测试结果通过LOG结果返回 MODE1-MODE4是SN号 <br>3、模拟产生投票结果,MODE1、2是结果条数量,高位前然后SDK或应用统计接收到的结果数量,显示出来 |
  2386 +| 5 | MODE1 | 参数1 |
  2387 +| 6 | MODE2 | 参数2 |
  2388 +| 7 | MODE3 ||
  2389 +| 8 | MODE4 ||
  2390 +||||
  2391 +
  2392 +基站s应答:
  2393 +
  2394 +| **字节** | **标识符** | **描述** |
  2395 +| --- | --- | --- |
  2396 +| 1 | BASECMD | 0xE1 基站管理类指令 |
  2397 +| 2 | MD\_ID | 应答的模块ID |
  2398 +| 3 | CMDTYPE | 31 测试指令应答 |
  2399 +| 4 | CMDACK | 1 收到 |
  2400 +| 5 |||
  2401 +
  2402 +## 5.8 基站组合多包-新
  2403 +
  2404 +用于64字节包基站,组合成长包与基站通信,1个长指令包读写与基站通信。
  2405 +
  2406 +电脑向基站发送:
  2407 +
  2408 +| **字节** | **标识符** | **描述** |
  2409 +| --- | --- | --- |
  2410 +| 1 | BASECMD | 0x61 基站管理类指令 |
  2411 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2412 +| 3 | CMDTYPE | 19 短包组合长包 |
  2413 +| 4 | PackMax | 总包数量 总共这包包含多少个64字节的包 |
  2414 +| 5 | PackCurrent | 当前包号 从1开始 第几包。 |
  2415 +| 6-7 | CRC-16 | 从8开始计算 全部Data的CRC校验 |
  2416 +| 8-End | Data | 原包指令数据 末尾数据补0 |
  2417 +
  2418 +基站应答:
  2419 +
  2420 +| **字节** | **标识符** | **描述** |
  2421 +| --- | --- | --- |
  2422 +| 1 | BASECMD | 0xE1 基站管理类指令应答 |
  2423 +| 2 | BASEID | 指定的基站编号,为0时候不指定 |
  2424 +| 3 | CMDTYPE | 19 短包组合长包 |
  2425 +| 4 | PackMax | 总包数量 总共这包包含多少个64字节的包 |
  2426 +| 5 | PackCurrent | 当前包号 从1开始 第几包。 |
  2427 +| 6-7 | CRC-16 | 从8开始计算 全部Data的CRC校验 |
  2428 +| 8-End | Data | 原包指令数据 |
  2429 +
  2430 +目前实现是Sdk送一次,基站应答一次,直到sdk送完所有包。
  2431 +
  2432 +### 5.8.1 CMDTYPE概述
  2433 +
  2434 +具体数据包格式,由data数据段拼接后,头一个字节决定后面数据的解析。
  2435 +
  2436 +| **字节** | **标识符** | **描述** |
  2437 +| --- | --- | --- |
  2438 +| 1 | CMDTYPE | 类型 <br>1:单包下载 <br>2:单包下载ACK <br>3:扩展信标预置<br> 4:扩展信标预置ACK<br> 5、(带题干文字内容的)测验题|
  2439 +| N | Data | 数据详细内容根据指令不同解释不同 |
  2440 +
  2441 +### 5.8.2 组合多包-快速下发
  2442 +
  2443 +电脑向基站发送:(也可用于基站主控向模块发送)
  2444 +基站应答:
  2445 +使用5.8协议外层包裹打包成(最大)1024数据长度【sdk并没有按这种方式实现】
  2446 +Data 为下载单包具体内容 具体为:
  2447 +
  2448 +指令下发:
  2449 +
  2450 +| **字节** | **标识符** | **描述** |
  2451 +| --- | --- | --- |
  2452 +| 1 | CMDTYPE | 1 单包下载内容 |
  2453 +| 2 | DataPos | 下载单包指令流水号,每次加1,用于分辨执行结果,SDK自动维护 |
  2454 +| 3 | Len1 | SN1+Tr\_Count+Data1 长度 1 Byte |
  2455 +| 4-7 | SN1 | Sn号 4 Byte |
  2456 +| 8 | Tr\_Count | 传输序号 1 Byte |
  2457 +| 9 | Data1 | 单包下载内容 N Byte |
  2458 +|| Len2 | SN2+Data2 长度 |
  2459 +|| SN2 | Sn号 |
  2460 +|| Tr\_Count | 传输序号 |
  2461 +|| Data2 | 单包下载内容 |
  2462 +|| Len3 | SN2+Data2 长度 |
  2463 +|| SN3 | Sn号 |
  2464 +|| Tr\_Count | 传输序号 |
  2465 +|| Data3 | 单包下载内容 |
  2466 +| 。。。 | 。。。 | 。。。 |
  2467 +
  2468 +基站应答:【sdk连续发完多包,然后基站应答的方式才用到】
  2469 +
  2470 +| **字节** | **标识符** | **描述** |
  2471 +| --- | --- | --- |
  2472 +| 1 | CMDTYPE | 2 单包下载内容应答 |
  2473 +| 2 | DataPos | 对应写入的DataPos,用于SDK好判断哪条写指令的结果 |
  2474 +||||
  2475 +
  2476 +### 5.8.3 组合多包-扩展信标
  2477 +
  2478 +电脑向基站发送:(也可用于基站主控向模块发送)
  2479 +基站应答:
  2480 +使用5.8协议外层包裹打包成(最大)1024数据长度
  2481 +具体为:
  2482 +扩展信标预置,在下轮《设置投票模式信标》开始生效,生效时基站将17信标中MODE的BIT7位置1,并周期性在17信标前发送0x34扩展投票信息(键盘协议2.5节)。
  2483 +
  2484 +指令下发:
  2485 +
  2486 +| **字节** | **标识符** | **描述** |
  2487 +| --- | --- | --- |
  2488 +| 1 | CMDTYPE | 3 扩展信标预置,在下轮《设置投票模式信标》开始生效 |
  2489 +| 2 | DataPos | 下载单包指令流水号,每次加1,用于分辨执行结果,SDK自动维护 |
  2490 +| 3-4 | LEN | 有效Cmd\_Data 长度 |
  2491 +| N | Cmd\_Data | 键盘协议Cmd\_Data数据 |
  2492 +
  2493 +基站应答:
  2494 +
  2495 +| **字节** | **标识符** | **描述** |
  2496 +| --- | --- | --- |
  2497 +| 1 | CMDTYPE | 4 扩展信标预置应答 |
  2498 +| 2 | DataPos | 对应写入的DataPos,用于SDK好判断哪条写指令的结果 |
  2499 +
  2500 +### 5.8.4 组合多包-测验题内容
  2501 +
  2502 +指令下发:
  2503 +
  2504 +| **字节** | **标识符** | **描述** |
  2505 +| --- | --- | --- |
  2506 +| 1 | CMDTYPE | 5 测验题内容 |
  2507 +| 2- || 本字节开始是键盘协议的测验题内容<br>比如2.4.5节的type开始的数据 |
  2508 +||||
  2509 +
  2510 +# 六、版本历史
  2511 +
  2512 +V0.5 新体系基础框架。
  2513 +
  2514 +V0.6 增加3.2.3新考勤打包格式,增加5.2.2节考勤射频衰减值设置
  2515 +
  2516 +V0.7 5.2.1节增加免配对同频和多频点SN模式的类型;(键盘协议部分增加的键盘主动发信模式,不用更改3.2.1节的打包格式;)增加5.2.3节SDK握手,告知PC后台传数据正常,可以给键盘发确认包;增加5.2.4节TCPIP网络设置;增加5.2.5节设置考勤、心跳、基站测试模式;
  2517 +
  2518 +V0.75增加白名单模式,可设置SN号白名单,增加5.3节
  2519 +
  2520 +V0.76基站设置增加考勤基站去重设置5.2.6节,5.2.1节补充附加配置的模式列表
  2521 +
  2522 +V0.8版本,增加了序列号和编号同时传的数据包打包格式,修改了3.2.1节和3.2.2节;加上5.2.7节软件狗,并支持基站UID读取;
  2523 +
  2524 +V0.9
  2525 +
  2526 +1. 拷贝原商务体系基站下载多包5.4节,原先用于无线升级键盘固件提速
  2527 +2. 完善2.3.2节设置基站广播信标发送内容
  2528 +3. 2.1节基站配置修改成套装、白名单模式,白名单支持智能和授权
  2529 +4. 2.8节基站特性增加快速配对低功率控制
  2530 +5. 增加5.2.9节wifi基站状态控制显示
  2531 +
  2532 +V0.93
  2533 +
  2534 +完善了K1使用到的基站广播信息,2.3节
  2535 +
  2536 +V0.94
  2537 +
  2538 +1、增加5.5节基站取多包,用于A1取课后作业结果
  2539 +
  2540 +2、增加基站NFC刷卡写姓名学号等,5.2.10节
  2541 +
  2542 +3、刷卡指令根据G1要求,增加股东姓名、股权数、应答SN支持6字节和编号ID返回
  2543 +
  2544 +V0.95
  2545 +
  2546 +1、增加2.4节设置扩展投票信标,以支持新东方的自定义题型提示
  2547 +
  2548 +V0.96
  2549 +
  2550 +1、2.3.2节的设置200题型,支持sdk回读,用于sdk崩溃后恢复
  2551 +
  2552 +V0.97
  2553 +
  2554 +增加3.2.8节,用于处理状态报告带16字符姓名时候,基站和SDK不好兼容老协议的问题
  2555 +
  2556 +V0.98
  2557 +
  2558 +增加5.6节 基站下载单包
  2559 +
  2560 +V0.99
  2561 +
  2562 +1、增加5.7节组网相关,先用于T2Soc语音系统的模块SPI指令。
  2563 +
  2564 +2、增加5.6.2节T2Soc基站单包下载长包指令
  2565 +
  2566 +3、SDK和主控之间的多包下载具体数据,每片段16字节改512字节
  2567 +
  2568 +4、支持S6soc新升级方法,修改5.4.3节和增加5.4.5节
  2569 +
  2570 +5、5.2.4节增加MQTT服务器设置
  2571 +
  2572 +6、增加5.2.11节usb还是tcp传输数据设置
  2573 +
  2574 +V0.99-5
  2575 +
  2576 +1、增加5.2.12节(T2)基站容量设置,白名单没动
  2577 +
  2578 +V0.99-6
  2579 +
  2580 +1、增加3.3节基站主动报告结果类,当成键盘结果提交
  2581 +
  2582 +2、增加5.3.3节基站键盘SN名单管理
  2583 +
  2584 +V0.99-7
  2585 +
  2586 +1、增加5.2.13节基站测试模式(老商务协议体系的指令)
  2587 +
  2588 +V0.99-8
  2589 +
  2590 +1、增加3.2.2节基站自检结果报告类型
  2591 +
  2592 +V0.99-9
  2593 +
  2594 +1、5.2.13节增加基站受控蜂鸣器响一声,提示用户基站连接上
  2595 +
  2596 +2、增加5.7.4节SDK读键盘在线状态;
  2597 +
  2598 +3、增加3.2.3节键盘在线状态汇报;
  2599 +
  2600 +4、基站NFC写键盘姓名,5.2.10节增加48字节姓名模式
  2601 +
  2602 +5、完善基站多包上传,主要是增加5.5.3节基站主动模式说明,和3.2.4节多包状态报告
  2603 +
  2604 +6、增加5.5.4节SDK问基站要多包上传数据
  2605 +
  2606 +7、增加3.3.5节NFC刷卡消息—容量满
  2607 +
  2608 +8、NFC刷卡消息—增加正常刷卡报告
  2609 +
  2610 +9、5.2.13节增加NFC刷卡进音质测试模式
  2611 +
  2612 +V0.99-10
  2613 +
  2614 +1、3.3.5节刷卡消息,增加首个键盘被移出消息
  2615 +
  2616 +2、增加5.3.4节,基站白名单长包读写
  2617 +
  2618 +V0.99-11
  2619 +
  2620 +1、5.4.3节多包数据下发增加短信息
  2621 +
  2622 +2、基站上报状态,增加调试log信息上报3.3.6节
  2623 +
  2624 +3、增加5.2.14节,读取基站调试信息
  2625 +
  2626 +V0.99-12
  2627 +
  2628 +1. 增加5.2.15节SDK退出通知
  2629 +2. 3.5节刷卡消息增加键盘在线数目
  2630 +3. 3.4节 白名单增加删除基站键盘SN
  2631 +4. 3.4节 基站名单增加锁定和解锁
  2632 +
  2633 +V0.99-13
  2634 +
  2635 +1. 基站名称重新定义指令,原先改成密码了,SDK不好兼容,5.2.1节通用配置
  2636 +2. 密码也改成2字节,原先3字节
  2637 +
  2638 +V0.99-14
  2639 +
  2640 +1. 新增5.8章 组合多包方式 基站&SDK通信传输数据
  2641 +
  2642 +V0.99-15
  2643 +
  2644 +1、5.8.2节基站组合多包传输,增加传输题干测验数据表模式
  2645 +
  2646 +2、增加5.2.16节NFC指纹管理
  2647 +
  2648 +3、增加5.2.17节NFC写指定配对码,和对应的回报消息3.3.5节增加
  2649 +
  2650 +4、增加5.2.18节管理指令清空
  2651 +
  2652 +5、增加2.5节空闲信标参数
  2653 +
  2654 +V0.99-16
  2655 +
  2656 +1. 添加5.2.16读写基站字符串
  2657 +2. 删除2.5节空闲信标参数
  2658 +3. 增加5.2.20 5.2.21基站空闲设置
  2659 +
  2660 +V0.99-17
  2661 +
  2662 +1. 增加5.2.22读写基站组网公开位
  2663 +
  2664 +V0.99-18
  2665 +
  2666 +1、加5.2.34 基站复位
  2667 +
  2668 +2、修改5.2.10节NFC写姓名的应答
  2669 +
  2670 +3、增加5.2.24节基站刷卡清空指纹和姓名
  2671 +
  2672 +V0.99-19
  2673 +
  2674 +1. 增加5.2.26节,多条NFC指令执行控制
  2675 +2. 增加5.2.27节,可暂停指纹核对后才能刷卡
  2676 +
  2677 +V0.99-20
  2678 +
  2679 +1、增加5.2.28节基站扫描干扰频点
0 2680 \ No newline at end of file
... ...