软件协议文档
终端设备协议文档
功能&协议池(所有功能协议)
MQTT协议文档
HTTP协议文档
微光TLV协议文档
微光卡&码协议
功能模块&UI文档
人脸机
VF105
门禁标品MQTT协议文档(DejaOS版本)
Access control standard MQTT protocol document
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列MQTT协议文档V1.37.0(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF203
门禁标品MQTT协议文档(DejaOS版本)
Access control standard MQTT protocol document
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF系列-MQTT协议文档V1.37.2(Vbar版本)
VF 系列 HTTP 协议接口文档-V1.37.1(Vbar版本)
VF106
门禁标品MQTT协议文档(Android版本)
Access control standard MQTT protocol document
VF114
门禁标品MQTT协议文档(DejaOS版本)
Access control standard MQTT protocol document
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF205
门禁标品MQTT协议文档(DejaOS版本)
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
读头
EE200
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
TX200
读头标品TLV通讯协议
Read header standard TLV communication protocol
QT960
读头标品TLV通讯协议
Read header standard TLV communication protocol
QT660
读头标品TLV通讯协议
Read header standard TLV communication protocol
Q340
读头标品TLV通讯协议
Read header standard TLV communication protocol
M300
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
JL7000
读头标品TLV通讯协议
Read header standard TLV communication protocol
Q350
读头标品TLV通讯协议
Read header standard TLV communication protocol
MU86
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
MET
读头标品TLV通讯协议
Read header standard TLV communication protocol
扫码器TCP/HTT通讯协议V1.0(Vbar版本)
读头标品TLV通讯协议V3.10(Vbar版本)
M350
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
扫码器TCP/HTT通讯协议V1.0(Vbar版本)
DW200
读头标品TLV通讯协议(DejaOS版本)
Read header standard TLV communication protocol
读头标品HTTP&TCP协议文档(DejaOS版本)
读头标品HTTP&TCP协议文档(Vbar版本)
读头标品TLV通讯协议V3.10(Vbar版)
读头标品RS485一拖多协议V0.7(Vbar版本)
M340
读头标品TLV通讯协议
Read header standard TLV communication protocol
CR90
刷卡模块通信协议v3.0
CR90指令文档
微光指令:0x60 蓝牙设备控制
1.7/2.x扫码器配置字段说明文档
门禁
DW200
门禁标品MQTT协议文档(DejaOS版本)
Access control standard MQTT protocol document
门禁扫码器MQTT协议文档(Vbar版本)
MU86
门禁标品MQTT协议文档
Access control standard MQTT protocol document
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
Q350
门禁标品MQTT协议文档
Access control standard MQTT protocol document
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
MET
门禁标品MQTT协议文档
Access control standard MQTT protocol document
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
M350
门禁标品MQTT协议文档
Access control standard MQTT protocol document
门禁20180820 MQTT协议V1.0.1(Vbar版本)
门禁20180820 MQTT协议文档V1.0.2(Vbar版本)
MP86
门禁20180820 MQTT协议文档V1.0.2(Vbar版本)
控制板
CC104
控制板标品MQTT协议文档
Control board standard MQTT protocol documentation
CC101
控制板标品MQTT协议文档
Control board standard MQTT protocol documentation
CC101标品20211101MQTT协议V3.6(Vbar版本)
平台服务协议文档
网关服务接口定义
门禁应用接口定义
工具文档
多弦产品API签名安全规则
海外锁
app和后台的mqtt协议
文档
-
+
首页
读头标品TLV通讯协议
# 1、概述 微光二维码扫描器通讯协议 v3.5 本协议支持: **以太网 TCP 模式,** **WIFI TCP 模式,** **485,232,TTL 模式** 可以通过配置工具中的相关配置项进入不同模式 **注:** **本协议中所有的配置项重启后都会失效,如果需要长期生效请使用配置工具** # 2、命令表 | 命令 | 描述 | 是否外部开放 | | ----------- | -------------------------------------| ------------ | | 0x01 | 设备状态查询 | Y | | 0x02 | 获取设备ID | Y | | 0x03 | 设置设备时间 | Y | | 0x04 | LED和蜂鸣器控制 | Y | | 0x05 | 开关扫码功能 | Y | | 0x06 | 开关按键值上报功能 | Y | | 0x07 | 获取随机数 | N | | 0x08 | 设备外部认证指令 | Y | | 0x09 | 开关门磁上报(冲突,依据3.5) | Y | | 0x0A | 获取设备SN(冲突,依据3.5) | Y | | 0x0B | 获取设备 UUID | Y | | 0x0C | 获取主控chipID | N | | 0x0D | 设备密钥配置指令 | N | | 0x0E | 内部认证指令 | N | | 0x0F | 未启用 | N | | 0x10 | 获取mac | Y | | 0x11 | 设置VF设备认证模式 | Y | | | | | | 0x21 | 码制、NFC开关设置 | Y | | 0x22 | 扫码模式设置 | Y | | 0x23 | 扫码时间间隔设置 | Y | | 0x24 | led配置 | Y | | 0x25 | 蜂鸣器响应配置 | Y | | 0x26 | GPIO\_0控制 | Y | | 0x27 | GPIO\_1 控制 | Y | | 0x28 | GPIO\_0和GPIO\_1输出高电平电压控制 | Y | | 0x29 | 播放音频文件 | Y | | 0x2A | 继电器控制 | Y | | 0x2B | 心跳使能与心跳上报(3.5有,文档没有) | Y | | 0X2C - 0X2F | 未启用 | | | | | | | 0x30 | 获取结果1 | Y | | 0x31 | 结果上报模式设置 | Y | | 0x33 | 获取结果2 | Y | | | | | | 0x37 | 获取软件版本号 | Y | | | | | | 0x40 | 设置管理密码 | Y | | 0x41 | 使能白名单过滤功能 | Y | | 0x42 | 添加白名单卡号 | Y | | 0x43 | 删除白名单中的卡号 | Y | | 0x44 | 删除所有白名单 | Y | | 0x45 | 配置白名单成功行为 | Y | | 0x46 | 批量下发白名单卡号 | Y | | 0x47 | 查询刷卡记录 | Y | | 0x48 | 删除刷卡记录 | Y | | | | | | 0x51 | 读取M1卡一块数据 | Y | | 0x52 | 写M1卡一块数据 | Y | | 0x53 | 卡号上报开关 | Y | | 0x59 | 使设备进入升级模式 | N | | 0x54 | 固件升级: 开始传输数据 | Y | | 0x58 | 固件升级: 传输数据 | Y | | 0x56/0x5a | 固件升级: 停止传输数据 | Y | | 0x57 | 固件升级: 覆盖安装 | Y | | 0x5C | 取图: 取图请求 | Y | | 0x5D | 取图: 图片传输 | Y | | | | | | 0x81 | 音频或图片更新: 准备 | Y | | 0x82 | 音频或图片更新: 分包传输 | Y | | 0x83 | 音频或图片更新: 结束指令 | Y | | 0x8a | 音频或图片更新: 删除音频文件或图片 | Y | | 0x8B | 升级下位机模块(开始) | Y | | 0x8C | 升级下位机模块(传输) | Y | | 0x8C | 升级下位机模块(准备) | Y | | | | | | 0x90 | 发送iso14443-3指令 | N | | 0x91 | SAM卡操作指令 | | | 0x92 | MF0卡操作指令 | | | | | | | 0xA0 | 读M1卡扇区内多个块 | Y | | 0xA1 | 写M1扇区内多块 | Y | | 0xA2 | 初始化一个值块 | N | | 0xA3 | 从值块中读取值 | N | | 0xA4 | 加值/减值 | N | | 0xA5 | 备份/恢复 | N | | 0xA6 | 发送apdu指令 | N | | 0xA7 | 选卡 | N | | 0xA8 | 读任意块 | N | | 0xA9 | 写任意块 | N | | 0xAA | 锁定块 | N | | 0xAB | 写AFI | N | | 0xAC | 锁定AFI | N | | 0xAD | 写DSFID | N | | 0xAE | 锁定DSFID | N | | 0X60 | 修改蓝牙参数指令 | N | | | | | | 0X61 | 响应刷卡、扫码和蓝牙数据 | Y | | 0X62 | 显示自定义数据 | Y | | 0X63 | 显示图片 | Y | | 0X64 | 进入特定窗口 | Y | | 0X65 | 弹窗显示自定义数据 | Y | | | | | | 0xB0 | 查询/修改设备配置 | Y | # 3、数据传输协议 ## 3.1 请求数据格式 - 命令头+命令字+标识字+长度字+数据域+校验字 - 命令头:两字节,默认为0x55 0xAA - 命令字:一字节 - 长度字:两字节,指明本条命令从长度字后面开始到校验字的字节数(不含校验字)低位在前 - 数据域:此项可以为空 - 校验字:一字节,从命令头开始到数据域最后1字节的逐字异或值 ## 3.2 应答数据格式 - 命令头+ 命令字 + 标识字 + 长度字+ 数据域+ 校验字 - 命令头:两字节,默认为 0x55,0xAA - 命令字:一字节 - 标识字:一字节, 0x00 则代表成功应答,其它失败或错误 - 长度字:两字节,指明本条命令从长度字后面开始到校验字的字节数(不含效验字),低位在前 - 数据域:此项可以为空 - 校验字:一字节,从命令头到数据域最后一字节的逐字节异或值 **注:命令头可以通过配置工具更改** # 4、二维码扫描器控制请求报文 ## 4.1 指令0x01设备状态查询 <table> <tr> <td colspan="8">指令:0x01</td> </tr> <tr> <td colspan="8">说明:标识字 00 表示设备正常;非 0 不正常 </td> </tr> <tr> <td colspan="4">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan ="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x01</td> <td>命令字</td> <td>1 Byte</td> <td colspan ="2">0x01</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan ="2">0x00:成功<br>0x90:失败</td> </tr> <tr> <td rowspan ='2'>数据域</td> <td rowspan = '2'>0 Byte</td> <td rowspan = '2' colspan="2">无此项</td> <td>数据域长度</td> <td>2 Byte</td> <td colspan ="2">N</td> </tr> <tr> <td>数据域</td> <td>N Byte</td> <td colspan="2">数据N=0时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.2 指令0x02获取设备ID <table> <tr> <td colspan="8">指令:0x02</td> </tr> <tr> <td colspan="8">说明:需要预先用配置工具配置 ID,即配置工具中“设备号”配置项<br> 注: 此处传递的 ID 是 unsigned int 类型的数,不是 ASCII 码 </td> </tr> <tr> <td colspan="4">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan ="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x02</td> <td>命令字</td> <td>1 Byte</td> <td colspan ="2">0x02</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan ="2">0x00:成功<br>0x90:失败</td> </tr> <tr> <td rowspan ='2'>数据域</td> <td rowspan = '2'>0 Byte</td> <td rowspan = '2' colspan="2">无此项</td> <td>数据域长度</td> <td>2 Byte</td> <td colspan ="2">N</td> </tr> <tr> <td>数据域</td> <td>N Byte</td> <td colspan="2">N>0设备ID,低位在前</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.3 指令 0x03 更新或查询扫码器系统时间 <table> <tr> <td colspan="12">指令:0x03 </td> </tr> <tr> <td colspan = "12"> 更新系统时间方式:<br> 当该字段值为 0x00,表示让扫码器立刻自动同步网络时间(需设备支持网络功能,且网络通畅)<br> 当该字段值为 0x01,表示让扫码器定时同步网络时间,同步频率为 24 小时/次,同步时间在 24:00(需设备支持网络功能,且网络通畅)<br> 当该字段值为 0x02,表示扫码器时间由上位机更新,上位机传入时间戳<br> <br> 注:当请求包中没有数据域,既数据长度为 0,则设备会返回设备时间戳,时间戳,为 1970 年 1 月 1 日(00:00:00 GMT)到现在的毫秒数,存储方式低位在前 </td> </tr> <tr> <td colspan="6">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="6">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="6">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="6">0x03</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x03</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="6">N</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan= "2" >数据域</td> <td rowspan="2">0 Byte</td> <td colspan="2">更新系统时间方式</td> <td colspan="1">1 Byte</td> <td colspan="3">0x00 自动更新时间<br>0x01 定时更新时间<br>0x02 上位机设置时间</td> <td>数据域长度</td> <td>2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td colspan="2">时间戳</td> <td colspan="1">Byte</td> <td colspan="3">工作模式为 2 时存在单位ms, 低位在前</td> <td>数据域</td> <td>N Byte</td> <td colspan="2">数据 N = 0 时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="6"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.4 指令 0x04 蜂鸣器和 LED 控制 <table> <tr> <td colspan="20">指令:0x04 </td> </tr> <tr> <td colspan = "20"> 说明:确认设备有相应颜色的灯 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x04</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x04</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x05 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan="5">数据域</td> <td rowspan="5">5 Byte</td> <td >1 Byte</td> <td colspan="13">开关:0 关闭,1 使能<br>bit0:保留<br>bit1:红灯控制位<br>bit2:绿灯控制位<br>bit3: 蜂鸣器控制位<br>bit4: 蓝灯控制位</td> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td>1 Byte</td> <td colspan="13">次数</td> <td rowspan="4">数据域</td> <td rowspan="4">NByte</td> <td rowspan="4">数据N=0时没有此项</td> </tr> <tr> <td>1 Byte</td> <td colspan="13">每次持续时间(单位50ms)</td> </tr> <tr > <td>1 Byte</td> <td colspan="13">每次间隔时间(单位50ms)</td> </tr> <tr> <td>1 Byte</td> <td colspan="13">保留</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ## 4.5 指令 0x05 开关扫码功能 <table> <tr> <td colspan="18">指令:0x05 </td> </tr> <tr> <td colspan = "18"> 用于开启或关闭扫码功能 </td> </tr> <tr> <td colspan="9">PC->Reader(Send)</td> <td colspan="9">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="7">说明</td> <td>项目</td> <td>字节</td> <td colspan="7">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="7">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="7">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="7">0x05</td> <td>命令字</td> <td>1 Byte</td> <td colspan="7">0x05</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="7">0x01 0x00</td> <td>标识字</td> <td >1 Byte</td> <td colspan="7">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan="3">数据域</td> <td rowspan="3">1 Byte</td> <td rowspan="3" colspan="7">1 关闭<br>0 打开</td> </tr> <tr> <td >数据域长度</td> <td> 2 Byte</td> <td colspan="7">N</td> </tr> <tr> <td >数据域</td> <td> N Byte</td> <td colspan="7">数据N=0时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="7"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="7"></td> </tr> </table> ## 4.6 指令 0x06 开关键值上报 <table> <tr> <td colspan="20">指令:0x06 </td> </tr> <tr> <td colspan = "20"> 说明:适用于DW100设备 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x06</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x06</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan ='2' >数据域</td> <td rowspan ='2'>1 Byte</td> <td rowspan ='2' colspan="14">0关闭<br>1打开</td> <td>数据域长度</td> <td>2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项 </td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.7 指令 0x09 开关门磁上报 <table> <tr> <td colspan="20">指令:0x09 </td> </tr> <tr> <td colspan = "20"> 说明:适用于带有门磁功能的设备 <br>    当无数据域时为查询 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x09</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x09</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14">0关闭<br>1打开<br>当无数据域时为查询</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.8 指令 0x0A 获取设备 SN <table> <tr> <td colspan="20">指令:0x0A </td> </tr> <tr> <td colspan = "20"> 说明:获取设备 SN </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x0A</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x0A</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">0 Byte</td> <td rowspan = "3" colspan="14">无此项</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.9 指令 0x0B 获取设备 UUID <table> <tr> <td colspan="20">指令:0x0B </td> </tr> <tr> <td colspan = "20"> 说明:获取设备 SN </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x0B</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x0B</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">0 Byte</td> <td rowspan = "3" colspan="14">无此项</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.10 指令 0x10 获取设备MAC <table> <tr> <td colspan="20">指令:0x10 </td> </tr> <tr> <td colspan = "20"> 说明:获取设备MAC </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x10</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x10</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">0 Byte</td> <td rowspan = "3" colspan="14">无此项</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.11 指令 0x21 QR、条码、NFC 设置 <table> <tr> <td colspan="20">指令:0x21 </td> </tr> <tr> <td colspan = "20"> 说明:启用条码时,控制字为两字节,第二字节控制选配。对应位置 1,使能该功能 </td> </tr> <tr> <td></td> <td>Bit7</td> <td>Bit6</td> <td>Bit5</td> <td>Bit4</td> <td>Bit3</td> <td>Bit2</td> <td>Bit1</td> <td colspan ="12">Bit0</td> </tr> <tr> <td>控制字 1</td> <td>CODE39</td> <td><p style="color:red;">ISBN13</p></td> <td>EAN13</td> <td>EAN8</td> <td>NFC</td> <td>条码启用</td> <td><p style="color:red;">DM</p></td> <td colspan ="12">QR</td> </tr> <tr> <td>控制字 2</td> <td><p style="color:red;">UPCE</p></td> <td><p style="color:red;">ISBN10</p></td> <td>ITF</td> <td>PDF417</td> <td><p style="color:red;">BAR_EXP</p></td> <td><p style="color:red;">DATABAR</p></td> <td>CODE128</td> <td colspan ="12">CODE93</td> </tr> <tr> <td colspan = "20"> 注:<br> 1. 标记为红色字体部分,表示该功能暂未开放或不支持,若发送该指令设备回复执行成功<br> 启用其他码制时需将第一控制字 Bit2 位置为 1,数据长度为 2 字节,即数据域为 0x02 0x00<br> 2. 关于第一控制字 bit2 位:<br> a. 当 bit2 位置为 1,且指令中只存在控制字 1,则此时的 bit2 位表示条码全部使能<br> b. 当 bit2 位置为 1, 且指令中含有两控制字,则此时的 bit2 位表示单独控制相应条码使能<br> </td> </tr> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="12">说明</td> <td>项目</td> <td>字节</td> <td colspan="4">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="12">Default: 0x55 0xAA</td> <td>包头</td> <td>1 Byte</td> <td colspan="4">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="12">0x21</td> <td>命令字</td> <td>1 Byte</td> <td colspan="4">0x21</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="12">0x01 0x00 或 0x02 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="4">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> </tr> <tr> <td colspan = "8">第一控制字</td> <td colspan = "4" >1 Byte</td> <td >数据域长度</td> <td>2 Byte</td> <td colspan="4" >N</td> </tr> <tr> <td colspan = "8" >第二控制字(可选)</td> <td colspan = "4">1 Byte</td> <td>数据域</td> <td>N Byte</td> <td colspan="4">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="12"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="4"></td> </tr> </table> ## 4.12 指令 0x22 扫码工作模式设置 <table> <tr> <td colspan="20">指令:0x22 </td> </tr> <tr> <td colspan = "20"> 说明: 普通模式: 输出所有扫码内容<br> 单次模式: 相同的码只输出一次(连续扫码中)<br> 间隔模式: 相同的码在一定时间间隔内只输出一次<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="12">说明</td> <td>项目</td> <td>字节</td> <td colspan="4">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="12">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="4">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="12">0x22</td> <td>命令字</td> <td>1 Byte</td> <td colspan="4">0x22</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="12">Default: 0x01 0x00 或 0x03 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="4">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = '4'>数据域</td> <td rowspan = '4'>N Byte</td> <td rowspan = '3' colspan = "2">模式</td> <td rowspan = '3' colspan = "2">1 Byte</td> <td colspan = "4">0x01</td> <td colspan= "4">普通模式</td> <td rowspan = '3'>数据域长度</td> <td rowspan = '3'>2 Byte</td> <td rowspan = '3' colspan = "4">N</td> </tr> <tr> <td colspan ="4">0x02</td><td colspan = "4">单次模式</td> </tr> <tr> <td colspan= "4" >0x02</td><td colspan = "4">间隔模式</td> </tr> <tr> <td rowspan = '1' colspan="2">间隔(s)</td> <td rowspan='1' colspan = "2">2 Byte</td> <td rowspan='1' colspan = "8" >低位在前(可选项,只有在间隔模式才能设置次项)</td> <td rowspan='1'>数据域</td> <td rowspan= '1'>N Byte</td> <td rowspan ='1' colspan = "4">数据N=0时没有此项</td> </tr> <tr> <td>校验字</td><td>1Byte</td> <td colspan = "12"></td> <td>校验字</td><td>1 Byte</td> <td colspan = "4"></td> </tr> </table> ## 4.13 指令 0x23 间隔模式下扫码时间间隔设置 <table> <tr> <td colspan="20">指令:0x23 </td> </tr> <tr> <td colspan = "20"> 说明:扫码间隔时间设置需将扫码工作模式设置在间隔模式下生效 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x23</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x23</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x02 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">2 Byte</td> <td rowspan = "3" colspan="14">时间间隔码(单位毫秒,范围 0~60000), 低位在前</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.14 指令 0x24 LED 背光控制 <table> <tr> <td colspan="20">指令:0x24 </td> </tr> <tr> <td colspan = "20"> 说明:确认设备有相应颜色的灯。对应位置 1,使能对应颜色 led </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x24</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x24</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> bit0: 白灯控制位<br> bit1: 红灯控制位<br> bit2: 绿灯控制位<br> bit3: 蓝灯控制位<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.15 指令 0x25 蜂鸣器响应配置 <table> <tr> <td colspan="20">指令:0x25 </td> </tr> <tr> <td colspan = "20"> 说明:用于配置扫码、刷卡后蜂鸣器动作 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x25</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x25</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 0:蜂鸣器关<br> 1:蜂鸣器开<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.16 指令 0x26 GPIO\_0 控制 <table> <tr> <td colspan="20">指令:0x26 </td> </tr> <tr> <td colspan = "20"> 说明:确认设备是否支持此管脚,默认只支持(MX86)设备 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x26</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x26</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 0:输出低电平<br> 1:输出高电平<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.17 指令 0x27 GPIO\_1 控制 <table> <tr> <td colspan="20">指令:0x27 </td> </tr> <tr> <td colspan = "20"> 说明:确认设备是否支持此管脚,默认只支持(MX86)设备 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x27</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x27</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 0:输出低电平<br> 1:输出高电平<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.18 指令 0x28 GPIO\_0 和 GPIO\_1 输出高电平电压控制 <table> <tr> <td colspan="20">指令:0x28 </td> </tr> <tr> <td colspan = "20"> 说明:确认设备是否支持此管脚,默认只支持(MX86)设备 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x28</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x28</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 0:输出高电平为 4.3V<br> 1:输出高电平为 3.3V<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.19 指令 0x29 音频控制 <table> <tr> <td colspan="20">指令:0x29 </td> </tr> <tr> <td colspan = "20"> 说明:<br> 该指令只适用于支持音频的设备<br> 音频文件格式要求 单通道 16bit wav 格式 8Khz -192Khz<br> 音频文件命名:0.wav 1.wav …共 6 个音频文件<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x29</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x29</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 值表示音频文件的名称(不带扩展) </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.20 指令 0x2A 继电器控制 <table> <tr> <td colspan="20">指令:0x2A </td> </tr> <tr> <td colspan = "20"> 说明:<br> 确认设备是否支持继电器<br> 当开继电器而没有传输持续时间字段,则继电器不会主动关闭 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x2A</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x2A</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x02 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">2 Byte</td> </tr> <tr> <td colspan="7">1 Byte</td> <td colspan="7">0x01: 开<br>0x00: 关</td> <td >数据域长度</td> <td >2 Byte</td> <td colspan="4">N</td> </tr> <tr> <td rowspan = "1" colspan="7">1 Byte 可选字节</td> <td rowspan = "1" colspan="7">当开继电器时,此字节 表示持续时间(单位50ms)<br>0x00: 使用默认时间 </td> <td rowspan = "1">数据域</td> <td rowspan = "1">N Byte</td> <td rowspan = "1" colspan="4">根据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.21 指令 0x2B 心跳使能与心跳上报 <table> <tr> <td colspan="20">指令:0x2B </td> </tr> <tr> <td colspan = "20"> 说明:该指令的数据部分为 JSON 格式字符串 utf-8:<br> { “heart_en”:1,(开:1,关:0)<br> “heart_data”:”xxxxxxxx”,(心跳包内容,最大 40 字节)<br> “heart_time”:30(心跳时间,范围 30s-86400s)<br> } </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x2B</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x2B</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> JSON数据 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> <br> 计算网址:https://www.sojson.com/hexadecimal.html<br> **注:** **只有设置心跳包使能与非使能时设备有回复,心跳包发送时设备无回复** ## 设备心跳上报 <table> <tr> <td colspan="20">指令:0x2B </td> </tr> <tr> <td colspan = "20"> 说明:为心跳上报的说明 </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td rowspan ='7'colspan="14">无</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0X2B</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">心跳数据</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 4.22 指令 0x37 查询版本号指令 <table> <tr> <td colspan="20">指令:0x37 </td> </tr> <tr> <td colspan = "20"> 说明:2.x支持 </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x37</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x37</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 无此项 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> # 5、二维码扫描器扫描结果报文反馈 上位机获得数据结果有两种方式: 1、上位机轮询发送指令从扫描器端获取结果,即扫描器工作在命令模式下。 2、扫码器主动将结果发送至上位机,即扫描器工作在主动上报模式下。 **注:扫描器默认工作用于主动上报模式,使用 0x30 上报数据结果** ## 5.1 指令 0x31 结果上报模式设置 指令:0x31 设置协议的工作模式(重启失效)说明:设置扫码器的工作模式以及选用哪条指令获取或上报数据,设置数据有效时间。<br> 模式字段说明,灰色部分为保留位: | | | | | | | | | | | | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------------------------------------------------------------ | ---------- | | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | | 模式字段值 | | 0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 | 0 | 命令模式,上位机发送 0x30 指令获取数据 <br>无数据区分标志 | 0x00 | | 0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3"> 0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 | 1 | 主动上报模式,扫描器使用 0x30 指令主动发送数据到上位机 <br>无数据区分标志 | 0x01 | | 1 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 | 0 | 命令模式,上位机发送 0x33 指令获取数据 <br>带有数据区分标志 | 0x80 | | 1 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 <td bgcolor="#b3b3b3">0 | 1 | 主动上报模式,扫描器使用 0x33 指令主动发送数据到上位机 <br>带有数据区分标志 | 0x81 | <br> 数据有效时间 (扫码器数据有效时间默认为 2000ms) 扫描器工作在命令模式下启用该设置,扫描器得到数据时刻到该数据失效时刻,若此时间段内扫描器接收到 上位机取结果指令,则扫描器可将结果发送至上位机。否则扫描器视该数据为无效数据,不会将数据发送至 上位机,即上位机指令轮询时间间隔不应低于数据有效时间,否则上位机可能无法及时取结果。 数据区分标志: 扫描器的数据来源包括,扫码数据、刷卡(卡号)数据、蓝牙数据、键值数据。数据区分标志可用于区分是 那种类型数据。详见指令 0x33 <table> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x31</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x31</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00或0x02 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> </tr> <tr> <td colspan = "4">模拟字段</td> <td >1 Byte</td> <td colspan = "9">见说明红色部分</td> <td>数据域长度</td> <td >2 Byte</td> <td colspan="2">N Byte</td> </tr> <tr> <td colspan = "4">数据有效时间(可选)</td> <td >1 Byte</td> <td colspan = "9">(单位 50ms) 0x00 -> 50 ms 非零 -> N*50 ms</td> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 5.2 指令 0x30 获取结果不区分数据来源 <table> <tr> <td colspan="4">指令:0x30 </td> <td colspan = "16">上位机端主动轮询或设备端主动上报结果使用此指令</td> </tr> <tr> <td colspan = "20"> 说明:<br> 此指令返回的数据不区分数据来源,即上位机得到数据后无法判断该数据是扫码数据、刷卡(卡号)数据或蓝牙数据<br> 注:该指令不返回键值数据 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x30</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x30</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 无此项 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 5.3 指令 0x33 获取结果区分数据来源 <table> <tr> <td colspan="4">指令:0x33 </td> <td colspan = "20">上位机端主动轮询或设备端主动上报结果使用此指令</td> </tr> <tr> <td colspan = "24"> 说明:<br> 1. 此指令返回的数据区分数据来源,即上位机可通过数据区分标志,区分得到的数据是扫码数据、刷卡(卡号)数据、蓝牙数据或按键值数据。 2. DATA_TYPE: 指示返回的数据的类型<br> 扫码数据: 0x10 ~ 0x3F<br> 卡: 0x40 ~ 0x7F<br> 蓝牙数据:0x8X<br> 按键 : 0xAX<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="10">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="6">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="6">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x33</td> <td>命令字</td> <td>1 Byte</td> <td colspan="6">0x33</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="6">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "5">数据域</td> <td rowspan = "5">0 Byte</td> <td rowspan = "5" colspan="14"> 没有此项 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="6">数据 N = 0 时没有此项</td> </tr> <tr> <td rowspan = "3" >数据域</td> <td rowspan = "3">N Byte(数据 N = 0时没有此项)</td </tr> <tr> <td >数据区分标志</td> <td>1 Byte</td> <td>DATA_TYPE</td> </tr> <tr> <td >结果</td> <td>1 Byte</td> <td>结果</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="6"></td> </tr> </table> 扫码数据DATA_TYPE: 二维码: 11 pdf 417: 1A code 39: 15 code 93: 16 code 128: 17 upca /puce.ean8/ean13/isbn10: 1F ITF: 1C 阿兹特克: 20 NFC(M1卡,cpuA卡): 42 NFC(cpuB卡): 4A NFC(身份证): 46 蓝牙:80 ## 5.4 指令 0x32 按键值上报(弃用) <table> <tr> <td colspan="4">指令:0x32 </td> <td colspan = "20">上报按键值</td> </tr> <tr> <td colspan = "24"> 说明:<br> 1. 此指令返回的数据区分数据来源,即上位机可通过数据区分标志,区分得到的数据是按键值数据。<br> 2. DATA_TYPE: 指示返回的数据的类型<br> 按键 : 0xAX<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="10">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="6">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="6">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x32</td> <td>命令字</td> <td>1 Byte</td> <td colspan="6">0x32</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="6">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "5">数据域</td> <td rowspan = "5">0 Byte</td> <td rowspan = "5" colspan="14"> 没有此项 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="6">N</td> </tr> <tr> <td rowspan = "3" >数据域</td> <td rowspan = "3">N Byte</td </tr> <tr> <td >键值</td> <td>1 Byte</td> <td>N > 0 时一定存在</td> </tr> <tr> <td >附件数据</td> <td>N Byte</td> <td> N > 1 时存在<br> N = 1 时不存在<br> </td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="6"></td> </tr> </table> # 6、白名单设置 (未支持) 使白名单设置功能,需通过 **0x40** 指令或 PC 端《微光互联白名单配置管理工具》更改初始密码,初始密码不能用来开启扫描编辑白名单功能。 白名单功能有三种工作模式: **1**、正常工作模式--过滤功能(可通过 **0x41** 指令进行设置) **2**、刷卡自动添加卡号到白名单 (需通过配置码使能或关闭) **3**、刷卡自动从白名单中删除这张卡(需通过配置码使能或关闭) **4**、指令中用的时间戳为 **unix** 时间戳 微光通信协议可以使用 **0x41** 指令开启正常工作模式,另外两种模式需使用 PC 端工具才能设置,具体可详《**微光互联白名单配置管理工具**》。指令 **0x42、0x43** 指令在任意工作模式下都生效。 **注:** **白名单内存储的是无前后缀且为正序的物理卡号,且不加回车换行,刷卡输出格式为直接输出** ## 6.1 指令 0x40 设置管理密码 <table> <tr> <td colspan="20">指令:0x40 </td> </tr> <tr> <td colspan = "20"> 密码为ASCLL </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x40</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x40</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x20 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">32 Byte</td> </tr> <tr> <td colspan="3">原密码</td> <td colspan="3">16 Byte</td> <td colspan="8">初始密码:1234567887654321</td> <td>数据域长度</td> <td>2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td colspan="3">新密码</td> <td colspan="3">16 Byte</td> <td colspan="8"></td> <td>数据域</td> <td>N Byte</td> <td colspan="2">数据 N = 0 时没有 此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 6.2 指令 0x41 使能白名单过滤功能 <table> <tr> <td colspan="20">指令:0x41 </td> </tr> <tr> <td colspan = "20"> 说明:使能或禁用白名单查询功能 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x41</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x41</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 0: 关闭白名单过滤功能(default)<br> 1: 打开白名单过滤功能<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> **注:** **白名单内存储的是无前后缀且为正序的物理卡号,且不加回车换行,刷卡输出格式为直接输出。** ## 6.3 指令 0x42 添加卡号到白名单 <table> <tr> <td colspan="20">指令:0x42 </td> </tr> <tr> <td colspan = "20"> 说明:卡号为正序且不带前后缀, 高位在前<br> 卡号长度少于 8 字节时,后面补零 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>1 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x42</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x42</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x08 0x00</td> <td>标识字</td> <td>2 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">8 Byte</td> <td rowspan = "3" colspan="14"> unsigned long long 数据(卡号) </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 6.4 指令 0x43 删除白名单中的卡号 <table> <tr> <td colspan="20">指令:0x43 </td> </tr> <tr> <td colspan = "20"> 说明:<br> 卡号为正序且不带前后缀, 高位在前<br> 卡号长度少于 8 字节时,后面补零<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x43</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x43</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x08 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">8 Byte</td> <td rowspan = "3" colspan="14"> unsigned long long 数据(卡号) </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 6.5 指令 0x44 删除所有白名单 <table> <tr> <td colspan="20">指令:0x44 </td> </tr> <tr> <td colspan = "20"> 说明:删除白名单内所有卡号 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x44</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x44</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x00 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">0 Byte</td> <td rowspan = "3" colspan="14">无此项</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 6.6 指令 0x46 批量修改白名单 <table> <tr> <td colspan="20">指令:0x46 </td> </tr> <tr> <td colspan = "20"> 说明:<br> 数据域格式:TYPE + LEN + DATA + CRC16<br> TYPE: 指示 DATA 是否压缩。0:没有压缩 1: zlib 压缩<br> LEN : 从 TYPE 到 DATA 的字节数<br> DATA: 不压缩时格式如下<br> { <br> “wlist”:[{“ID”:12345678, “M”: 0 }, {“ID”:765422, “M”: -1}, …………] <br>}<br> ID:卡号(整数)<br> M: 修改标识 0: 新增 -1: 删除<br> CRC16: 计算从 TYPE 到 DATA 的 CRC16 值。 CRC16 poly: 0x8005 -> X^16 + X^15 + X^2 + 1, 初始值为 0<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x46</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x46</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">0 Byte</td> <td rowspan = "3" colspan="14"> TYPE   1 Byte  DATA是否压缩<br> <br> LEN   2 Byte   DATA低位在前<br> <br> DATA   N Byte   JSON格式<br> <br> CRC16   2 Byte   低位在前<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 6.7 指令 0x45 配置白名单成功行为 <table> <tr> <td colspan="20">指令:0x45 </td> </tr> <tr> <td colspan = "20"> 说明:当所刷的卡在白名单内,则表示刷卡成功,此时扫码器会根据设置的动作进行反馈提示<br> </td> </tr> <tr> <td colspan ="3"></td> <td colspan ="2">Bit7</td> <td colspan ="2">Bit6</td> <td colspan ="2">Bit5</td> <td colspan ="2">Bit4</td> <td colspan ="2">Bit3</td> <td colspan ="2">Bit2</td> <td colspan ="2">Bit1</td> <td colspan ="2">Bit0</td> </tr> <tr> <td colspan ="3">动作</td> <td colspan ="2">音频</td> <td colspan ="2">继电器</td> <td colspan ="2">GPIO管脚</td> <td colspan ="2">蓝灯</td> <td colspan ="2">绿灯</td> <td colspan ="2">红灯</td> <td colspan ="2">背光灯</td> <td colspan ="2">蜂鸣器</td> </tr> <tr> <td colspan ="3"></td> <td colspan ="2">Bit15</td> <td colspan ="2">Bit14</td> <td colspan ="2">Bit13</td> <td colspan ="2">Bit12</td> <td colspan ="2">Bit11</td> <td colspan ="2">Bit10</td> <td colspan ="2">Bit9</td> <td colspan ="2">Bit8</td> </tr> <tr> <td colspan ="3">动作</td> <td colspan = "16">Bit8-Bit15 RFU</td> </tr> <tr> <td colspan ="20" > </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x45</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x45</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">2 Byte</td> <td rowspan = "3" colspan="14"> 扫码器成功行为动作设置 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N = 0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 6.8 指令 0x47 根据时间段获取记录 <table> <tr> <td colspan="24">指令:0x47 </td> </tr> <tr> <td colspan = "24"> 说明:<br> 1. 对 JSON_PARAM 的举例解释 :<br> { <br> “STimeStramp”: xxxx, // “ETimeStramp”: xxxx , //<br> }<br> 2. 应答数据域格式:<br> TYPE: 0 表示 DATA 为未压缩的数据 1: 表示 DATA 为 zlib 压缩的数据<br> DATA: 未压缩时格式举例:<br> {<br> “Total”:12, “CurCnt”: 8, “TRecords”:[{“ID”:12345, “TimeStramp”:1234567, }, ….]<br> }<br> CRC16: 从 TYPE 到 DATA 的校验<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="10">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="6">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="6">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x47</td> <td>命令字</td> <td>1 Byte</td> <td colspan="6">0x47</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="6">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "6">数据域</td> <td rowspan = "6">N Byte</td> <td rowspan = "6" colspan="14"> JSON_PARAM </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="6">N</td> </tr> <tr> <td rowspan = "4" >数据域</td> <td rowspan = "4">N Byte</td </tr> <tr> <td >TYPE</td> <td>1 Byte</td> <td></td> </tr> <tr> <td >DATA</td> <td>N Byte</td> <td></td> </tr> <tr> <td >CRC16</td> <td>2 Byte</td> <td>低位在前</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="6"></td> </tr> </table> ## 6.9 指令 0x48 根据时间段删除记录 <table> <tr> <td colspan="20">指令:0x48 </td> </tr> <tr> <td colspan = "20"> 说明:<br> 1. 对 JSON_PARAM 的举例解释 :<br> { <br> “STimeStramp”: xxxx, //<br> “ETimeStramp”: xxxx , //<br> }<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x48</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x48</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> JSON_PARAM </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >0 Byte</td> <td colspan="14"></td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> # 7、NFC 模块操作 **NFC** 模块可支持 **Mifare One** 卡块读写、**CPU** 卡发送 **APDU** 指令,详见具体指令。 名词解释: **任务启动标志位**\--该标志位用于告知扫码器何时开始卡的操作,何时结束卡的操作,或告知扫 码器操作卡的指令是独立的,无指令间依赖关系。 该标志位用来设置卡片的操作环境,标志位的值有以下三种: 0x00->AUTO 告知扫码器该指令可单独执行,无指令间的依赖关系。 0x01->START 告知扫码器开始对卡操作或对卡操作尚未结束,且指令间可能存在依赖关系。 0x02->FINISH 告知扫码器本条指令是操作卡的最后一条指令,将卡片操作环境恢复到默态。 若操作卡的指令是独立的,如读写 **M1** 卡的某块数据,则该标志位即可设置为 AUTO 也可 设置为 **FINISH**. **注:** **旧版《微光通讯协议 v2.10》协议无该标志位,老用户可用 0x51、0x52 进行 M1 卡读写。** 1、若使用 START 标识开始操作卡片,则必须使用 FINISH 标识结束操作,否则会导致 NFC 模块工作异常,需重启后才可再次使用。 2、若卡片操作过程中涉及多条卡片操作指令,则过程中所发指令的任务启动标志位均为START,最后一条指令标记为 FINISH。 模块可支持 Mifare One 卡块读写、CPU 卡发送 APDU 指令,详见具体指令。 ## 7.1 指令 0x53 卡号上报开关 <table> <tr> <td colspan="20">指令:0x53 </td> </tr> <tr> <td colspan = "20"> 说明:<br> 数据域的值设置为 0x01 或 0x00 时(即进入或退出命令模式),均为空操作且扫描器回复成功。目 的用于兼容 v2.10 版本微光通讯协议<br> 注:默认卡号上报功能开启,若关闭卡号上报功能,则协议工作在任何模式下均得不到卡号。此时扫码器多 用于直接读写 M1 卡或操作 CPU 卡,而无需得到卡号<br> 板载nfc不使用数据域的 0x01,0x02 指令 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x53</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x53</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 0x01:模块进入命令模式<br> 0x00:模块退出命令模式<br> 0x02:刷卡上报<br> 0x03:关闭上报<br> </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >0 Byte</td> <td colspan="14">数据 N = 0 时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 7.2 M1 卡块操作 ### 7.2.1 指令 0x51 读取 M1 卡一块数据 <table> <tr> <td colspan="3">指令:0x51</td> <td colspan='5'>读取 M1 卡某块</td> </tr> <tr> <td colspan="8"> 说明: 任务启动标志字段可选,当指令中不包含该标志位时,默认按 AUTO 标识执行 </td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x51</td> <td>命令字</td> <td>1 Byte</td> <td>0x51</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90: 失败</td> </tr> <tr> <td rowspan='4'>数据域</td> <td rowspan='4'>N Byte</td> <td>密钥类型</td> <td>1 Byte</td> <td> 0x60->KEY A<br> 0x61->KEY B </td> <td rowspan='2'>数据域长度</td> <td rowspan='2'>2 Byte</td> <td rowspan='2'>N</td> </tr> <tr> <td>块号</td> <td>1 Byte</td> <td>0 ~ 0xFF</td> </tr> <tr> <td>密钥</td> <td>6 Byte</td> <td></td> <td rowspan='2'>数据域</td> <td rowspan='2'>N Byte</td> <td rowspan='2'>数据N = 0时没有此项</td> </tr> <tr> <td >任务启动标志位(可选)</td> <td >1 Byte</td> <td> 0x00 -> AUTO<br> <br> 0x01 -> START<br> <br> 0x02 -> FINI<br> </td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ### 7.2.2 指令 0x52 写 M1 卡一块数据 <table> <tr> <td colspan="5">指令:0x52</td> <td colspan='5'>向 M1 卡某块写数据</td> </tr> <tr> <td colspan="10"> 说明: 任务启动标志字段可选,当指令中不包含该标志位时,默认按 AUTO 标识执行 </td> </tr> <tr> <td colspan="7"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="5">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="5">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="5">0x52</td> <td>命令字</td> <td>1 Byte</td> <td>0x52</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="5">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='5'>数据域</td> <td rowspan='5'>N Byte</td> <td>密钥类型</td> <td >1 Byte</td> <td colspan = "3"> 0x60 -> KEY A<br> 0x61 -> KEY B </td> <td rowspan='2'>数据域长度</td> <td rowspan='2'>2 Byte</td> <td rowspan='2'>N</td> </tr> <tr> <td>块号</td> <td>1 Byte</td> <td colspan = "3">0 ~ 0xFF</td> </tr> <tr> <td>密钥</td> <td>6 Byte</td> <td colspan = "3"></td> <td rowspan='3'>数据域</td><td rowspan='3'>N Byte</td> <td rowspan='3'>数据N = 0时没有此项</td> </tr> <tr> <td>数据</td> <td>16 Byte</td> <td colspan = "3"></td> </tr> <tr> <td>任务标志位(可选)</td> <td>1 Byte</td> <td colspan = "3"> 0x00 -> AUTO<br> 0x01 -> START<br> 0x02 -> FINISH </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="5"></td> <td>校验字</td><td>1 Byte</td> <td></td> </tr> </table> ### 7.2.3 指令 0xA0 读 M1 卡扇区内多个块 <table> <tr> <td colspan="5">指令:0xA0</td> <td colspan='5'>读 M1 卡扇区内多个块</td> </tr> <tr> <td colspan="10"> 说明: 可读 S50/S70 卡,扇区号、偏移、块数的取值根据卡片类型而定<br> 偏移--以选取的扇区 0 块为起始地址计算待读块的基地址。<br> 块数--以选定的基地址块为读卡开始块,连续读取选中的块数。<br> </td> </tr> <tr> <td colspan="10"> 命令解析: 读取一张卡的 2 扇区 1 块和 2 块数据<br> 55 AA A0 0B 00 00 60 02 01 02 FF FF FF FF FF FF 35 </td> </tr> <tr> <td>55AA</td> <td>A0</td> <td>0B00</td> <td>00</td> <td>60</td> <td>02</td> <td>01</td> <td>02</td> <td>FF~FF</td> <td>35</td> </tr> <tr> <td>命令头</td> <td>指令</td> <td>数据长度</td> <td>AUTO</td> <td>密钥类型</td> <td>扇区号</td> <td>待读块基地址</td> <td>从基地址开始连续读几块</td> <td>密钥</td> <td>校验字</td> </tr> <tr> <td colspan="10"> 注:读取的块数不可为 0,若为 0 视为无效指令;一条指令中不可跨扇区读取块数据 </td> </tr> <tr> <td colspan="7"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="5">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="5">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="5">0xA0</td> <td>命令字</td> <td>1 Byte</td> <td>0x51</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="5">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='6'>数据域</td> <td rowspan='6'>N Byte</td> <td>任务标志位</td> <td >1 Byte</td> <td colspan = "3"> 0x00 -> AUTO<br> 0x01 -> START<br> 0x02 -> FINISH </td> <td rowspan='3'>数据域长度</td> <td rowspan='3'>2 Byte</td> <td rowspan='3'>N</td> </tr> <tr> <td>密钥类型</td> <td>1 Byte</td> <td colspan = "3"> 0x60 -> KEY A<br> 0x61 -> KEY B </td> </tr> <tr> <td>扇区号</td> <td>1 Byte</td> <td colspan = "3"> S50 -> 0x00~0x0F<br> S70 -> 0x00~0x27 </td> </tr> <tr> <td>偏移</td> <td >1 Byte</td> <td colspan = "3"> S50 -> 0x00~0x03<br> S70 -> 0x00~0x03 或<br> 0x00~0x0F </td> <td rowspan='3'>数据域</td> <td rowspan='3'>N Byte</td> <td rowspan='3'>数据 N = 0 时没有此项</td> </tr> <tr> <td>块数</td> <td>1 Byte</td> <td colspan = "3"> S50 -> 0x01~0x04<br> S70 -> 0x01~0x04 或<br> 0x01~0x10 </td> </tr> <tr> <td>密钥</td> <td>6 Byte</td> <td colspan = "3"> </td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="5"></td> <td>校验字</td><td>1 Byte</td> <td></td> </tr> </table> ### 7.2.4 指令 0xA1 写 M1 卡扇区内多个块 <table> <tr> <td colspan="5">指令:0xA1</td> <td colspan='6'>写多块数据</td> </tr> <tr> <td colspan="11"> 说明: 说明: 可读 S50/S70 卡,扇区号、偏移、块数的取值根据卡片类型而定<br> 偏移--以选取的扇区 0 块为起始地址计算待写块的基地址。<br> 块数--以选定的基地址块为写卡开始块,连续写数据到选中的块数<br> </td> </tr> <tr> <td colspan="11"> 写数据到一张卡的 2 扇区 1 块和 2 块(指令详见示例)<br> 55 AA A1 2B 00 00 60 02 01 02 FF FF FF FF FF FF ... ... 36 </td> </tr> <tr> <td>55AA</td> <td>A0</td> <td>0B00</td> <td>00</td> <td>60</td> <td>02</td> <td>01</td> <td>02</td> <td>FF~FF</td> <td>... ...</td> <td>36</td> </tr> <tr> <td>命令头</td> <td>指令</td> <td>数据长度</td> <td>AUTO</td> <td>密钥类型</td> <td>扇区号</td> <td>待写块基地址</td> <td>从基地址开始连续写几块</td> <td>密钥</td> <td>待写数据</td> <td>校验字</td> </tr> <tr> <td colspan="11"> 注:待写入的块数不可为 0,若为 0 视为无效指令;一条指令中不可跨扇区写入数据 </td> </tr> <tr> <td colspan="8"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="6">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="6">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="6">0xA1</td> <td>命令字</td> <td>1 Byte</td> <td>0xA1</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="6">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='7'>数据域</td> <td rowspan='7'>N Byte</td> <td>任务标志位</td> <td >1 Byte</td> <td colspan = "4"> 0x00 -> AUTO<br> 0x01 -> START<br> 0x02 -> FINISH </td> <td rowspan='3'>数据域长度</td> <td rowspan='3'>2 Byte</td> <td rowspan='3'>N</td> </tr> <tr> <td>密钥类型</td> <td>1 Byte</td> <td colspan = "4"> 0x60 -> KEY A<br> 0x61 -> KEY B </td> </tr> <tr> <td>扇区号</td> <td>1 Byte</td> <td colspan = "4"> S50 -> 0x00~0x0F<br> S70 -> 0x00~0x27 </td> </tr> <tr> <td>偏移</td> <td >1 Byte</td> <td colspan = "4"> S50 -> 0x00~0x03<br> S70 -> 0x00~0x03 或<br> 0x00~0x0F </td> <td rowspan='4'>数据域</td> <td rowspan='4'> 0 Byte</td> <td rowspan='4'>数据 N = 0 时没有此项</td> </tr> <tr> <td>块数</td> <td>1 Byte</td> <td colspan = "4"> S50 -> 0x01~0x04<br> S70 -> 0x01~0x04 或<br> 0x01~0x10 </td> </tr> <tr> <td>密钥</td> <td>6 Byte</td> <td colspan = "4"> </td> </tr> <tr> <td>数据</td> <td>N Byte</td> <td colspan = "4"> N=16*块数 </td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="6"></td> <td>校验字</td><td>1 Byte</td> <td></td> </tr> </table> ## 7.3 ISO14443-4 ### 7.3.1 指令 0xA6 发送 APDU 指令 <table> <tr> <td colspan="20">指令:0xA6 </td> </tr> <tr> <td colspan = "20"> 说明: 用于与 CPU 卡之间进行通信,APDU 指令可参见《FMCOS2.0 用户手册》 </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0xA6</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0xA6</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "2">数据域</td> <td rowspan = "2">N Byte</td> <td>任务标志位</td> <td>1 Byte</td> <td colspan = "12"> 0x01 -> START<br> 0X02 -> FINISH </td> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> </tr> <tr> <td> APDU<br> DATA </td> <td>N Byte</td> <td colspan = "12"> 符合 ISO7816-4 的数据结构 </td> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据 N = 0 时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> # 8、UI界面操作指令 ## 8.1 指令 0x61 响应扫码、刷卡、蓝牙数据 <table> <tr> <td colspan="20">指令:0x61 </td> </tr> <tr> <td colspan = "20"> 说明:该指令数据部分为 JSON 格式字符串 utf-8:<br> {<br> “ack”: “xxxxx” , (应答信息, 比如”成功”, “失败”, 其长度不超过 128B)<br> “msg”: “xxxx” (对”ack”的简要说明)<br> }<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x61</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x61</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> JSON数据 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 8.2 指令 0x62 显示自定义数据 <table> <tr> <td colspan="20">指令:0x62 </td> </tr> <tr> <td colspan = "20"> 说明:<br> 1. 该指令的数据部分为 JSON 格式字符串 utf-8:<br> {<br> “page_data”: “xxxxx” , (页面内容)<br> “key_left”: “第一页”, (屏幕左下角显示)<br> “key_mid”: “5 页”, (屏幕下方中间显示) <br> “key_right” : ”下页” (屏幕右下角显示)<br> }<br> 2. 该指令只在主界面和自定义数据界面有效<br> </td> </tr> <tr> <td colspan="14">PC->Reader(Send)</td> <td colspan="6">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x62</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x62</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> JSON 数据 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 8.3 指令 0x63 显示图片 <table> <tr> <td colspan="20">指令:0x63 </td> </tr> <tr> <td colspan = "20"> 说明:图片导入到设备的方式详见,7 音频或图片更新部分指令 </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x63</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x63</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">1 Byte</td> <td rowspan = "3" colspan="14"> 待显示的图片编号 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 8.4 指令 0x64 进入特定窗口 <table> <tr> <td colspan="20">指令:0x64 </td> </tr> <tr> <td colspan = "20"> 说明:图片导入到设备的方式详见,7 音频或图片更新部分指令 </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x64</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x64</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> 0x01: 主窗口<br> 0x02: 设备信息窗口 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 8.5 指令 0x65 弹窗显示自定义数据 <table> <tr> <td colspan="20">指令:0x65 </td> </tr> <tr> <td colspan = "20"> 说明: 弹窗显示自定义数据 </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x65</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x65</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "4">数据域</td> <td rowspan = "4">N Byte</td> <td>字段</td> <td>类型</td> <td colspan = "11">描述</td> <td >必填</td> <td rowspan = '2'>数据域长度</td> <td rowspan = '2'>2 Byte</td> <td rowspan = '2',colspan="2">N</td> </tr> <td>msg</td> <td>string</td> <td colspan = "11">显示的自定义数据内容</td> <td >是</td> </tr> </tr> <td>isCloseEnable</td> <td>bool</td> <td colspan = "11"> true:带按钮,中间可以点击按钮关闭<br>false:不带按钮 </td> <td >是</td> <td rowspan = '2'>数据域</td> <td rowspan = '2'>N Byte</td> <td rowspan = '2',colspan="2">数据N=0时没有此项 </td> </tr> </tr> <td>msgTimeoutMs</td> <td>int</td> <td colspan = "11"> 显示时间,范围0-2147483646;<br>超时关闭弹窗,0立即关闭,最大永久显示 </td> <td >是</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> # 9、固件升级 ## 9.1 指令 0x54 开始传输数据 <table> <tr> <td colspan="20">指令:0x54 </td> </tr> <tr> <td colspan = "20"> 说明:<br> </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x54</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x54</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> 升级包大小,单位byte,<br> 低位在前,高位在后 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 9.2 指令 0x58 传输数据 <table> <tr> <td colspan="20">指令:0x58 </td> </tr> <tr> <td colspan = "20"> 说明:<br> </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x58</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x58</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> 升级包数据 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 9.3 指令 0x56 / 0x5A 停止传输数据 <table> <tr> <td colspan="20">指令:0x56/0x5A </td> </tr> <tr> <td colspan = "20"> 说明:1. 0x5A 指令数据域: 文件 md5值 <br> </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x56/0x5A</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x56/0x5A</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "3">数据域</td> <td rowspan = "3">N Byte</td> <td rowspan = "3" colspan="14"> 升级包数据 </td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="2">N</td> </tr> <tr> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 9.4 指令 0x57 覆盖安装 <table> <tr> <td colspan="20">指令:0x57 </td> </tr> <tr> <td colspan = "20"> 说明:<br> </td> </tr> <tr> <td colspan="16">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="14">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="14">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="14">0x57</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x57</td> </tr> <tr> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14"></td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan = "2">数据域</td> <td rowspan = "2">1 Byte</td> <td>0x00</td> <td colspan = "13">立即重启</td> <td >数据域长度</td> <td >2 Byte</td> <td colspan="14">N</td> </tr> <tr> <td>0x01</td> <td colspan = "13">不自动重启</td> <td >数据域</td> <td >N Byte</td> <td colspan="14">数据:N=0时没有此项</td> </tr> <tr> <td >校验字</td> <td >1 Byte</td> <td colspan="14"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 9.5 指令 0x57 取图:发起取图请求 <table> <tr> <td colspan="9">指令:0x5C</td> </tr> <tr> <td colspan="9">说明:0x5C<br>1. 该命令用于从设备取图,整体流程由 0x5C, 0x5D 两条命令共同完成。<br>2. 本条命令(0x5C)用于整体取图流程的开始<br>3. 整体传输流程为:<br> (1). 上位机使用 0x5C 命令发送取图请求到设备,请求包数据为开始标志<br> (2). 设备使用 0x5C 命令发送回复包到上位机,回复包数据域为:<br> 2字节总包数<br> 1字节图片类型<br> 2字节图片宽度<br> 2字节图片高度<br> 1字节图片位深<br> (3). 上位使用 0X5D 发送取图请求到设备,请求包数据域为分包包号<br> (4). 设备使用 0x5D 命令发送回复包到上位机,数据域为分包数据<br> (5). 当上位机不再使用 0x5D 命令发送请求包到设备,认为是结束标志,有以下两种情况:<br> 1:图片传输成功,上位机拿到完整数据<br> 2:图片传输失败,上位机再次使用 0x5C 命令发起取图请求 </tr> <tr> <td colspan="4">PC->Reader(Send)</td> <td colspan="5">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0x5C</td> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x5C</td> </tr> <tr> <td rowspan="2">数据域长度</td> <td rowspan="2">2 Byte</td> <td rowspan="2" colspan="2">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="3">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">0x08 0x00</td> <tr> <tr> <td rowspan="5">数据域</td> <td rowspan="5">1 Byte</td> <td rowspan="5">开始获取</td> <td rowspan="5">0x01</td> <td rowspan="5">数据域</td> <td rowspan="5">8 Byte</td> <td>分包总包数</td> <td>2 Byte</td> </tr> <tr> <td>图片类型</td> <td>1 Byte</td> </tr> <tr> <td>图片位深</td> <td>1 Byte</td> </tr> <tr> <td>图片宽度</td> <td>2 Byte</td> </tr> <tr> <td>图片高度</td> <td>2 Byte</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> </tr> </table> ## 9.6 指令 0x5D 取图:分包数据传输 <table> <tr> <td colspan="6">指令:0x5D</td> </tr> <tr> <td colspan="6">说明:0x5D<br>1. 该命令用于从设备取图,整体流程由 0x5C, 0x5D 两条命令共同完成。<br>2. 本条命令(0x5C)用于整体取图流程的开始和结束<br>3. 整体传输流程为:<br> (1). 上位机使用 0x5C 命令发送取图请求到设备,请求包数据为开始标志<br> (2). 设备使用 0x5C 命令发送回复包到上位机,回复包数据域为:<br> 2字节总包数<br> 1字节图片类型<br> 2字节图片宽度<br> 2字节图片高度<br> 1字节图片位深<br> (3). 上位使用 0X5D 发送取图请求到设备,请求包数据域为分包包号<br> (4). 设备使用 0x5D 命令发送回复包到上位机,数据域为分包数据<br> (5). 当上位机不再使用 0x5D 命令发送请求包到设备,认为是结束标志,有以下两种情况:<br> 1:图片传输成功,上位机拿到完整数据<br> 2:图片传输失败,上位机再次使用 0x5C 命令发起取图请求 </tr> <tr> <td colspan="3">PC->Reader(Send)</td> <td colspan="3">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td>说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td>0x5D</td> <td>命令字</td> <td>1 Byte</td> <td>0x5D</td> </tr> <tr> <td rowspan="2">数据域长度</td> <td rowspan="2">2 Byte</td> <td rowspan="2">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td></td> <tr> <tr> <td>数据域</td> <td>1 Byte</td> <td>图片分包包号</td> <td>数据域</td> <td>N Byte</td> <td>分包数据</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ## 9.7 指令 0xb0 配置/查询设备 <table> <tr> <td colspan="8">指令:0xb0</td> </tr> <tr> <td colspan="8">该命令用于设置/查询设备配置字段</td> </tr> <tr> <td colspan="4">PC->Reader(Send)</td> <td colspan="4">Reader->PC(Receive)</td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> <td>项目</td> <td>字节</td> <td colspan="2">说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td colspan="2">Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0xB0</td> <td>命令字</td> <td>1 Byte</td> <td colspan="2">0xB0</td> </tr> <tr> <td rowspan="2">数据域长度</td> <td rowspan="2">2 Byte</td> <td rowspan="2" colspan="2">0x01 0x00</td> <td>标识字</td> <td>1 Byte</td> <td colspan="2">0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td>数据域长度</td> <td>N Byte</td> <td colspan="2">低位在前</td> <tr> <tr> <td rowspan="2">数据域</td> <td>1 Byte</td> <td>0x00</td> <td>查询当前配置</td> <td rowspan="2">数据域</td> <td>N Byte</td> <td colspan="2">查询配置<br>返回当前配置</td> </tr> <tr> <td>(1 + N) Byte</td> <td>0x01 + 配置字段</td> <td>更改当前配置</td> <td>0 Byte</td> <td>修改配置<br>无返回数据</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> <td>校验字</td> <td>1 Byte</td> <td colspan="2"></td> </tr> </table> ## 9.8 指令 0x8B (开始) <table> <tr> <td colspan="8">指令:0x8B</td> </tr> <tr> <td colspan="8"> 说明:升级下位机模块 </td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x8B</td> <td>命令字</td> <td>1 Byte</td> <td>0x8B</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='3'>数据域</td> <td rowspan='3'>1 Byte</td> <td>压缩类型</td> <td>1 Byte</td> <td> 0x00: 原始文件(仅能升级单个设备)<br> 0x01: xz 压缩包<br> 0x02: zip 压缩包 </td> <td >数据域长度</td> <td >2 Byte</td> <td >N</td> </tr> <tr> <td>升级包类型</td> <td>2 Byte</td> <td>待传输的包数</td> <td rowspan='2'>数据域</td> <td rowspan='2'>N Byte</td> <td rowspan='2'>数据N = 0时没有此项</td> </tr> <tr> <td >压缩包大小</td> <td >4 Byte</td> <td> 低位在前 </td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ## 9.9 指令 0x8C (传输) <table> <tr> <td colspan="8">指令:0x8C</td> </tr> <tr> <td colspan="8"> 说明:升级下位机模块 </td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x8C</td> <td>命令字</td> <td>1 Byte</td> <td>0x8C</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan="2">数据域</td> <td rowspan="2">1 Byte</td> <td>包序号</td> <td>2 Byte</td> <td> 带传输的总包数(N),本包序号从(0)~(N-1),低位在前 </td> <td >数据域长度</td> <td >2 Byte</td> <td >N</td> </tr> <tr> <td>包数据</td> <td>N Byte</td> <td>本包数据</td> <td >数据域</td> <td>N Byte</td> <td>数据N = 0时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ## 9.10指令 0x8C (准备) <table> <tr> <td colspan="8">指令:0x8C</td> </tr> <tr> <td colspan="8"> 说明:升级下位机模块 </td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x8C</td> <td>命令字</td> <td>1 Byte</td> <td>0x8C</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan="2">数据域</td> <td rowspan="2">1 Byte</td> <td>包序号</td> <td>2 Byte</td> <td> 带传输的总包数(N),本包序号从(0)~(N-1),低位在前 </td> <td >数据域长度</td> <td >2 Byte</td> <td >N</td> </tr> <tr> <td>包数据</td> <td>N Byte</td> <td>本包数据</td> <td >数据域</td> <td>N Byte</td> <td>数据N = 0时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> # 10 音频或图片更新 音频文件以压缩包的形式传输, 音频文件名称必须符合:\[0-6\].wav 或 f.wav, s.wav。图片文件必须是: 0.png, 1.png 2.png … 或 logo.png, bk.png。 并且解压后只能有一级目录 ## 10.1 指令 0x81 准备 <table> <tr> <td colspan="8">指令:0x81</td> </tr> <tr> <td colspan="8"> 说明:分包规则<br> 当数据量 > 1024 时: 以 1024 字节发送<br> 当数据量 < 1024: 直接发送即可 </td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x81</td> <td>命令字</td> <td>1 Byte</td> <td>0x81</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='3'>数据域</td> <td rowspan='3'>1 Byte</td> <td>压缩类型</td> <td>1 Byte</td> <td> 0x01: xz 压缩包<br> 0x02: zip 压缩包 </td> <td >数据域长度</td> <td >2 Byte</td> <td >N</td> </tr> <tr> <td>总包数</td> <td>2 Byte</td> <td></td> <td rowspan='2'>数据域</td> <td rowspan='2'>N Byte</td> <td rowspan='2'>数据N = 0时没有此项</td> </tr> <tr> <td >文件大小</td> <td >4 Byte</td> <td> 压缩大小(低位在前) </td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ## 10.2 指令 0x82 分包传输 <table> <tr> <td colspan="8">指令:0x82</td> </tr> <tr> <td colspan="8"> 说明:分包规则<br> 当数据量 > 1024 时: 以 1024 字节发送<br> 当数据量 < 1024: 直接发送即可 </td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td></tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x82</td> <td>命令字</td> <td>1 Byte</td> <td>0x82</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='2'>数据域</td> <td rowspan='2'>1 Byte</td> <td>包序号</td> <td>2 Byte</td> <td> 本包序号(序号从 0 开始递增,一直到:总包数 - 1),低位在前 </td> <td >数据域长度</td> <td >2 Byte</td> <td >N</td> </tr> <tr> <td>包数据</td> <td>N Byte</td> <td></td> <td >数据域</td> <td >N Byte</td> <td >数据N = 0时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ## 10.3 指令 0x83 结束指令 <table> <tr> <td colspan="8">指令:0x83</td> </tr> <tr> <td>说明:</td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x83</td> <td>命令字</td> <td>1 Byte</td> <td>0x83</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='2'>数据域</td> <td rowspan='2'>1 Byte</td> <td>RFU</td> <td>2 Byte</td> <td></td> <td >数据域长度</td> <td >2 Byte</td> <td >N</td> </tr> <tr> <td>MD5</td> <td>16 Byte</td> <td>压缩包md5值</td> <td >数据域</td> <td >N Byte</td> <td >数据N = 0时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> ## 10.4 指令 0x8A 删除音频文件或图片 <table> <tr> <td colspan="8">指令:0x8A</td> </tr> <tr> <td colspan = "8"> 说明: 此指令支持删除 0.wav 1.wav … 0.png 1.png …等文件 </td> </tr> <tr> <td colspan="5"> PC->Reader(Send) </td> <td colspan="3"> Reader->PC(Receive) </td> </tr> <tr> <td>项目</td> <td>字节</td> <td colspan="3">说明</td> <td>项目</td> <td>字节</td> <td>说明</td> </tr> <tr> <td>包头</td> <td>2 Byte</td> <td colspan="3">Default: 0x55 0xAA</td> <td>包头</td> <td>2 Byte</td> <td>Default: 0x55 0xAA</td> </tr> <tr> <td>命令字</td> <td>1 Byte</td> <td colspan="3">0x8A</td> <td>命令字</td> <td>1 Byte</td> <td>0x8A</td> </tr> <tr> <td>数据域长度</td> <td>2 Byte</td> <td colspan="3">N</td> <td>标识字</td> <td>1 Byte</td> <td>0x00 : 成功<br>0x90 : 失败</td> </tr> <tr> <td rowspan='2'>数据域</td> <td rowspan='2'>1 Byte</td> <td>类型</td> <td>1 Byte</td> <td> 01:图片文件<br> 02:音频文件 </td> <td >数据域长度</td> <td >2 Byte</td> <td >N</td> </tr> <tr> <td>文件标号</td> <td>16 Byte</td> <td> 音频文件 标号范围: [0-5]<br> 图片文件标号范围:[0-255] </td> <td >数据域</td> <td >N Byte</td> <td >数据N = 0时没有此项</td> </tr> <tr> <td>校验字</td> <td>1 Byte</td> <td colspan="3"></td> <td>校验字</td> <td>1 Byte</td> <td></td> </tr> </table> # 附录 1:回复包标识字清单 <table> <tr> <td>标识号</td><td>说明</td> </tr> <tr> <td>0x00</td><td>成功标识</td> </tr> <tr> <td>0x10</td><td>成功且非空标识</td> </tr> </tr> <tr> <td>0x01</td><td>校验错误标识</td> <tr> <td>0x02</td><td>数据长度无效标识</td> </tr> <tr> <td>0x03</td><td>无效命令标识</td> </tr> <tr> <td>0x04</td><td>JSON 错误标识</td> </tr> <tr> <td>0x05</td><td>内存不足标识</td> </tr> <tr> <td>0x06</td><td>密码长度错误标识</td> </tr> <tr> <td>0x07</td><td>密码错误标识</td> </tr> <tr> <td>0x08</td><td>功能未启用标识</td> </tr> <tr> <td>0x09</td><td>卡片长度错误标识</td> </tr> <tr> <td>0x0A</td><td>超时标识</td> </tr> <tr> <td>0x0B</td><td>写入闪存失败标识</td> </tr> <tr> <td>0x0C</td><td>包编号错误标识</td> </tr> <tr> <td>0x0D</td><td>压缩错误标识</td> </tr> <tr> <td>0x0E</td><td>无效参数标识</td> </tr> <tr> <td>0x93</td><td>闪存空间不足标识</td> </tr> </table> # 附录 2:修改记录表 | | | | | | | | | :----- | :------: | :------: | :----------------------------------------------------------- | :----: | :--------: | :------: | | 版本号 | 修改原因 | 修改类型 | 修改内容摘要 | 修改人 | 修改日期 | 执行日期 | | 2.6 | | | 添加 0x53 命令 | | 2018.04.18 | | | 2.7 | | | 添加 0x29 命令 | | 2018.05.30 | | | 2.8 | | | 添加 0x04 命令 | | 2018.06.28 | | | 2.9 | | | 添加 NFC 工作模式配置码 | | 2018.10.25 | | | 2.10 | | | 修改 2.1 码制设置指令 <br>添加 0x05 命令 | | 2018.11.02 | | | 3.0 | | | 1、添加开关键值上报 0x06 指令 <br>2、添加 UI 界面操作指令 <br>3、添加按键上报 0x32 指令 <br>4、增加音频和图片文件替换指令 <br>5、NFC 模块增加任务启动标志 位标识功能 <br>6、添加 0xA0、0xA1、0xA6 卡片操作指令 <br>7、添加 0x45 指令 <br>8、添加使用说明,更新文档格式 <br>9、添加附录 1--标识号说明 | | 2020.08.24 | | | 3.1 | | | 增加心跳使能 | | 2021.06.25 | | | 3.2 | | | 增加白名单操作指令 修改 0x33 指令 DATA\_TYPE 域 | | 2021.07.19 | | | 3.3 | | | 增加获取设备 SN 操作指令 | | 2022.01.05 | | | 3.5 | | | 增加0x09开关门磁上操作指令 | | 2023.03.20 | | | 3.5 | | | 增加0x46批量修改白名单指令 | | 2023.03.20 | | | 3.5 | | | 增加0x47根据时间段获取记录操作指令 | | 2023.03.20 | | | 3.5 | | | 增加0x48根据时间段删除记录操作指令 | | 2023.03.20 | | | 3.6 | | | 增加0xb0配置/查询设备操作指令 | | 2023.03.20 | | | 3.6 | | | 修改命令0x62,修改数据域格式以同时支持数据域为自定义数据和二维码数据 | 赫盘龙 | 2023.06.07 | | | 3.6 | | | 增加命令 0x5C/0x5D,用于上位机从设备取图 | 赫盘龙 | 2023.06.28 | | | 3.6 | | | 增加命令 0x8B/0x8C,用于升级下位机模块<br>命令0x09用于开关门磁上报,<br>指令0x65用于显示自定义数据 | 陈闻成 | 2023.10.26 | | |3.7 | 回复标识号不明晰 | 删除 | 回复标识号只保留:0x00 成功,0x90失败 | 骆凤亚 |2024.03.28| | 3.8 | | | 将文档移到新的Wiki地址,核对整理 | 骆凤亚 | 2024.05.30 | | | 3.9 | | | 增加完善回复包标识字清单,修改0x37获取设备版本号指令数据域错误 | 张佳慧 | 2025.01.08 | | ****
马志祥
2025年2月23日 14:07
9
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期