软件协议文档
终端设备协议文档
功能&协议池(所有功能协议)
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版本)
VF系列MQTT协议文档V1.37.3(Vbar版)
VF系列HTTP协议文档_V1.37.2(Vbar版本)
VF系列HTTP协议文档_V1.37.5(Vbar版本)
门禁标品配置项文档(DejaOS版本)
VF-MQTT 协议文档_V1.1.37.13(Vbar版本)
VF203
门禁标品MQTT协议文档(DejaOS版本)
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF系列-MQTT协议文档V1.37.2(Vbar版本)
VF 系列 HTTP 协议接口文档-V1.37.1(Vbar版本)
VF系列-MQTT协议文档V1.37.11(Vbar版本)
VF106
门禁标品MQTT协议文档(Android版本)
Access control standard MQTT protocol document
VF114
门禁标品MQTT协议文档(DejaOS版本)
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版本)
VF202
门禁标品MQTT协议文档(DejaOS版)
门禁标品配置项文档(DejaOS版本)
VF107
MQTT Protocol Documentation(DejaOS Version)
门禁标品MQTT协议文档(DejaOS版)
门禁标品配置项文档(DejaOS版本)
VF124
门禁标品MQTT协议文档(DejaOS版)
门禁标品配置项文档(DejaOS版本)
读头
EE200
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
微光RS485一拖多协议V0.7(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扫码器配置字段说明文档
3.1 扫码器新配置字段说明
门禁
DW200
门禁标品MQTT协议文档-V1(DejaOS版本)
Access control standard MQTT protocol document
门禁扫码器MQTT协议文档(Vbar版本)
DW200 门禁系统配置项文档(DejaOS版本)
门禁标品MQTT协议文档-V2(DejaOS版本)
dw205配置项临时
MU86
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
Q350
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
MET
门禁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版本)
S450
MQTT协议V1.0.0
S430蓝牙透传协议V1.1
DW205
门禁标品MQTT协议文档-V2(DejaOS版本)
Access Standard Product MQTT Protocol-V2 (DejaOS Version)
DW205 门禁系统配置项文档(DejaOS版本)
读头功能介绍
控制板
CC104
控制板标品MQTT协议文档
Control board standard MQTT protocol documentation
CC101
控制板标品MQTT协议文档
CC101标品20211101MQTT协议V3.6(Vbar版本)
平台服务协议文档
网关服务接口定义
门禁应用接口定义
工具文档
多弦产品API签名安全规则
海外锁
app和后台的mqtt协议
凡汐应用接口定义
文档
-
+
首页
读头功能介绍
# DW200 读头版功能手册(含微光协议) **产品型号:** DW200_V20 **适用版本:** dw200_v20_scanner_v2.0.7 **通讯协议:** 微光二维码扫描器通讯协议 v3.5(全文见本文附录) 本文面向**客户与对接人员**。配置项仅列出**本机业务实际使用**的参数(已对照 `src/` 代码核对);`config.json` 中带 `[本机未使用]` 标记的项为兼容保留,勿写入对接文档当有效能力。 --- ## 目录 - [一、产品概述](#一产品概述) - [二、设备功能](#二设备功能) - [三、通讯与协议(对接摘要)](#三通讯与协议对接摘要) - [四、设备配置](#四设备配置) - [4.1 配置方式](#41-配置方式) - [4.2 配置二维码](#42-配置二维码) - [4.3 配置项总表(仅本机实际使用)](#43-配置项总表仅本机实际使用) - [4.4 修改后需重启的项](#44-修改后需重启的项) - [五、升级与运维](#五升级与运维) - [六、对接说明与能力边界](#六对接说明与能力边界) - [附录:微光二维码扫描器通讯协议 v3.5](#附录微光二维码扫描器通讯协议-v35) --- ## 一、产品概述 ### 1.1 产品定位 DW200 读头版是一款带屏幕的**数据采集终端**:采集扫码、刷卡、密码、蓝牙等凭证后上报上位机/业务服务器;**是否放行、核销等由上位机判定**。本机不做本地白名单门禁鉴权。 典型场景:闸机读头、扫码核销、门禁采集、信息上报终端等。 ### 1.2 能力一览 | 分类 | 能力 | |------|------| | 采集 | 二维码/条码、NFC 刷卡、屏幕密码、蓝牙数据 | | 通讯 | RS485、以太网/WiFi(HTTP / TCP) | | 协议 | 透传模式、微光协议模式 | | 配置 | 配置二维码、配置工具(0xB0)、网络回执 | | 反馈 | 屏幕提示、蜂鸣、语音、继电器 | | 运维 | 扫码/远程/串口升级、心跳、NTP、定时重启 | ### 1.3 数据流向 ```text 扫码 / 刷卡 / 密码 / 蓝牙 ↓ 按配置格式化 ↓ RS485 和/或 网络(HTTP/TCP) ↓ 上位机 / 业务服务器 ↓(可选回执) 蜂鸣 / 继电器 / 语音 / 弹窗 ``` --- ## 二、设备功能 ### 2.1 扫码 摄像头识别二维码/条码并上报;可开关、按码制配置、间隔/单次模式;可配输出格式与前后缀;扫码后可蜂鸣。配置用二维码始终可识别。也可通过微光协议远程控制。 ### 2.2 刷卡(NFC) 读 IC 卡并上报。读卡方式:UID / 固定扇区 / 一卡一密。可配正反序、截取、输出格式、前后缀;可关 NFC 或关上报。协议支持 M1 块读写。 ### 2.3 密码透传 屏幕数字键盘输入后上报;**本机不校验对错**。与扫码共用输出格式。按钮可隐藏、文字可改。「配置密码」仅用于配置码签名,与屏幕密码无关。 ### 2.4 蓝牙数据 接收蓝牙数据并格式化上报;可配名称、前后缀、输出格式等。 ### 2.5 屏幕、声音、继电器 主界面可显示设备名、时间、SN、IP、密码按钮等;中英文、旋转与背景图、背光。蜂鸣/语音反馈。继电器开闸(时长可配)。可选安全开门模块。心跳、NTP、整点自动重启。 --- ## 三、通讯与协议(对接摘要) > 帧格式与命令示例见文末附录。 ### 3.1 工作模式 | 模式 | `w_mode` | 说明 | |------|----------|------| | 透传 | 1 | 上报原始业务数据 | | 协议 | 2 | 微光协议组帧;取结果、控设备 | ### 3.2 通讯口与网络类型 - **RS485**:协议命令、业务上报、升级、心跳(参数 `p_uart1`) - **以太网/WiFi**:由 `net_type` + `owifi` 决定 `owifi`:1=HTTP,2=协议HTTP,4=TCP,8=协议TCP。 **协议模式(w_mode=2)下**业务数据主要走 RS485 或普通 TCP(owifi=4)。 ### 3.3 输出通道 bit 扫码/密码/心跳:`ochannel` / `dchannel`;刷卡:`nochannel` / `ndchannel`;蓝牙:`blochannel` / `bldchannel`。 | Bit | 值 | 含义 | |-----|-----|------| | bit1 | 2 | RS485 | | bit6 | 64 | 网络(再看 owifi) | 协议微光通道常用对应 `*dchannel = 64`。 ### 3.4 结果上报 `report_mode` | 值 | 含义 | |----|------| | `0` | 轮询 0x30(不区分来源) | | `1` | 主动 0x30 | | `80` | 轮询 0x33(区分来源) | | `81` | 主动 0x33 | 来源:扫码 `0x11`、密码 `0xA0`、刷卡 `0x42`、蓝牙 `0x80`。有效时间 `report_timeout`。 ### 3.5 本机协议能力摘要 已支持常用查询/控制/扫码刷卡结果/M1/UI/心跳/配置0xB0/升级等。 **不做:** 白名单 0x40~0x48、取图、MQTT、韦根、USB 键盘。详见附录,以本机实现为准。 ### 3.6 网络协议回执 ```text vgdecoderesult=业务数据&&devicenumber=设备号&&otherparams= ``` 回执以 `code=` 开头;成功/失败本机动作由 `awifi_s` / `awifi_f` 控制。 --- ## 四、设备配置 ### 4.1 配置方式 | 方式 | 适用 | |------|------| | 配置二维码 | 现场改参、升级 | | 配置工具(0xB0) | PC 精细配置 | | 网络回执 | 远程查配置、升级 | 下表「配置键」为配置码短名。仅列出本机实际生效项。 ### 4.2 配置二维码 - 旧:`___VBAR_CONFIG_V1.1.0___{...}--签名` - 新:`__VGS__0...__签名` - 密钥:`com_passwd`(默认 `1234567887654321`) ### 4.3 配置项总表(仅本机实际使用) #### 4.3.1 工作模式与串口 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | w_mode | 1 | 工作模式 | 1=透传;2=协议 | | p_uart1 | 115200-8-N-1 | RS485 串口参数 | 波特率-数据位-校验-停止位 | #### 4.3.2 输出通道 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | ochannel | 1 | 透传:扫码/密码/心跳 | bit:2=RS485,64=网络 | | dchannel | 1 | 协议:扫码/密码/心跳 | 微光常用 **64** | | nochannel | 1 | 透传:刷卡 | 同上 | | ndchannel | 1 | 协议:刷卡 | 微光常用 64 | | blochannel | 1 | 透传:蓝牙 | 同上 | | bldchannel | 1 | 协议:蓝牙 | 微光常用 64 | #### 4.3.3 网络上报与继电器 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | owifi | 1 | 网络输出类型 | 1=HTTP;2=协议HTTP;4=TCP;8=协议TCP | | haddr | http://192.168.1.1:8080 | HTTP 地址 | URL | | houttime | 2 | HTTP 超时 | 秒 | | taddr | 192.168.1.1 | TCP 服务器 IP | IPv4 | | port | 8080 | TCP 端口 | | | touttime | 2 | TCP 超时 | 秒 | | awifi_s | 1089 | 网络成功本机行为 | bit:bit0蜂鸣;bit6继电器;bit10成功语音;bit12成功弹窗等 | | awifi_f | 2049 | 网络失败本机行为 | bit:bit0蜂鸣;bit11失败语音;bit13失败弹窗等 | | relayd | 1000 | 继电器吸合时间 | 毫秒 | | devnum | 0 | 设备号(上报字段) | 整数 | #### 4.3.4 扫码 / 密码输出 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | codeSwitch | 1 | 扫码总开关 | 0关 / 1开 | | de_type | 64511 | 码制开关 | bit 掩码,默认全开 | | s_mode | 0 | 扫码模式 | 0=间隔;1=单次 | | interval | 1000 | 间隔时间 | ≥500 ms | | ft | 0 | 扫码/密码输出格式 | 0原文;1数字→小端Hex;2再反序;4 Hex原样;8 Hex反序 | | chorc | 1 | 前后缀类型 | 1=字符;2=Hex | | prefix / postfix | 空 | 前/后缀 | | | nl / cr | 0 | 回车 / 换行 | 0/1 | | ascan | 1 | 扫码后动作 | bit0=蜂鸣 | | beepd | 30 | 蜂鸣时长 | ms | #### 4.3.5 刷卡(NFC) | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | nfc | 1 | NFC 开关 | 0/1 | | nfcReport | 1 | 卡号上报 | 0/1 | | nfcType | 1 | 读卡方式 | 1=UID;2=固定扇区;3=一卡一密 | | sectorNumber | 0 | 扇区号 | 0~15 | | blockNumber | 0 | 块号 | 0~2 | | secretkeyType | 1 | 密钥类型 | 1=0x60;2=0x61 | | secretkey | FFFFFFFFFFFF | 密钥 | 12 位 Hex | | ord | 1 | 顺序 | 0正序;1反序 | | st / len | 1 / 8 | 起始字节 / 长度 | | | nft | 2 | 输出格式 | 0透传;1 HexASCII;2 十进制ASCII | | horc | 1 | 前后缀类型 | 0字符串;1 Hex | | pri / pos | 空 | 前/后缀 | | | nnl / ncr | 0 | 回车 / 换行 | 0/1 | | anfc | 1 | 刷卡后动作 | bit0=蜂鸣 | #### 4.3.6 蓝牙 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | ble_name / ble_mac | 空 | 蓝牙名称 / MAC | 写入模组 | | blft | 0 | 输出格式 | 类同扫码 ft;0直接输出 | | blhorc | 1 | 前后缀类型 | 1字符;2 Hex | | blpri / blpos | 空 | 前/后缀 | | | blcr / blnl | 0 | 回车 / 换行 | 0/1 | #### 4.3.7 网络连接与 IP | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | net_type | 1 | 网络类型 | 0关;1以太网;2 WiFi | | ssid / psk | — | WiFi 账号密码 | | | ip_mode | 0 | IP 方式 | 0 DHCP;1 静态 | | ip / gateway / mask / dns | — | 静态地址 | | | fixed_macaddr_enable | 0 | MAC 方式 | 0默认;2手动 | | macaddr | — | 手动 MAC | | #### 4.3.8 界面与声音 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | devname | 欢迎使用 | 设备名称 | | | language | 0 | 语言 | 0中文;1英文 | | rotation | 1 | 屏幕方向 | 0~3 | | rotation0BgImage~3 | 内置路径 | 背景图 | | | backlight | 100 | 背光 | 0~100 | | sn_show / ip_show / version_show | 1/1/0 | 是否显示 | 0/1 | | show_date / show_devname / show_unlocking | 1 | 界面开关 | 0/1 | | buttonText | 密码 | 密码按钮文字 | ≤6字 | | dateFormat / timeFormat | 1 / 1 | 日期/时间格式 | 见默认注释 | | volume / volume1 | 100 | 语音/蜂鸣音量 | | | boot_music | 0 | 开机提示音 | 0/1 | | sn / uuid / version | — | 设备信息 | 运行维护,一般只读 | #### 4.3.9 上报、心跳、对时 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | report_mode | 1 | 结果上报模式 | `0`/`1`/`80`/`81` | | report_timeout | 2000 | 结果缓存时间 | ms | | heart_en | 1 | 心跳开关 | 0/1 | | heart_data | www.vguang.cn | 心跳内容 | | | heart_time | 60 | 心跳间隔 | 秒 | | ntp_en | 1 | NTP 开关 | 0/1 | | ntp_addr | 182.92.12.11 | NTP 服务器 | IP | | ntp_interval | 43200 | 同步间隔 | 秒 | | ntp_hour | 23 | 每日定点整点 | 0~23 | | ntpLocaltime | 8 | GMT 偏移 | 整数 | | timeZone | Asia/Shanghai | 时区名 | | #### 4.3.10 安全与运维 | 配置键 | 默认 | 说明 | 取值 | |--------|------|------|------| | com_passwd | 1234567887654321 | 配置码签名密码 | 建议修改 | | safe_open | 0 | 安全开门模块 | 0关;1开;2重置密钥 | | safe_keytype | 1 | 密钥类型 | | | safe_key_pub / safe_iv_pri | 出厂 | 安全密钥材料 | Hex | | autoRestart | 3 | 整点自动重启 | -1关;0~23整点 | > **说明:** `config.json` 中另有一批带 `[本机未使用]` 的项(如韦根、TTL、解码引擎内部参数、补光灯、身份证扩展、ntp_port/ntp_timeout 等),仅为兼容其它机型/配置工具保留,**本读头业务不会读取,对接时请忽略**。 ### 4.4 修改后需重启的项 通常需重启:`w_mode`、`owifi`、`ochannel`、`taddr`、`port`、`codeSwitch`、`nfc`、`de_type`、`net_type`、IP/MAC 相关、`ntp_en`/`ntp_addr`、`ntpLocaltime`、`autoRestart` 等。 --- ## 五、升级与运维 扫码升级、网络回执升级、串口固件(0x54 系列)、串口资源(0x81 系列)。建议开心跳与 NTP,保管 `com_passwd`,改网络/模式后确认重启。 --- ## 六、对接说明与能力边界 | 场景 | 建议 | |------|------| | 串口闸机 | 协议模式 + RS485,`dchannel=64` | | TCP Server | owifi=4;要标准指令则协议模式 | | 业务 HTTP | 透传 + 协议 HTTP | | 区分来源 | report_mode=`81` | 读头不做本地白名单;屏幕密码为透传;无 MQTT/韦根/USB 键盘;协议模式下业务出口用 RS485 或普通 TCP。 --- ## 附录:微光二维码扫描器通讯协议 v3.5 以下为协议全文,与产品功能说明合并于同一文档,便于对接一次性查阅。 --- *微光二维码扫描器通讯协议 v3.5** 本协议支持: **以太网 TCP 模式,** **WIFI TCP 模式,** **485,232,TTL 模式** 可以通过配置工具中的相关配置项进入不同模式 **注:** **本协议中所有的配置项重启后都会失效,如果需要长期生效请使用配置工具** # 命令表 | 命令 | 描述 | 是否外部开放 | | ----------- | -------------------------------------| ------------ | | 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 | 透传数据给设备 | Y | | 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 | | 0x32 | 按键值上报 | 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 | # **1 数据传输协议** ## 1.1 请求数据格式 - 命令头+命令字+标识字+长度字+数据域+校验字 - 命令头:两字节,默认为0x55 0xAA - 命令字:一字节 - 长度字:两字节,指明本条命令从长度字后面开始到校验字的字节数(不含校验字)低位在前 - 数据域:此项可以为空 - 校验字:一字节,从命令头开始到数据域最后1字节的逐字异或值 ## 1.2 应答数据格式 - 命令头+ 命令字 + 标识字 + 长度字+ 数据域+ 校验字 - 命令头:两字节,默认为 0x55,0xAA - 命令字:一字节 - 标识字:一字节, 0x00 则代表成功应答,其它失败或错误 - 长度字:两字节,指明本条命令从长度字后面开始到校验字的字节数(不含效验字),低位在前 - 数据域:此项可以为空 - 校验字:一字节,从命令头到数据域最后一字节的逐字节异或值 注:命令头可以通过配置工具更改 # **2 二维码扫描器控制请求报文** ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 01 00 00 FE **Reader-->PC :** 55 AA 01 00 02 00 55 AA 03 ## 2.1 指令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>1 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> 例: **PC-->Reader : 55 AA 02 00 00 FD **Reader-->PC : 55 AA 02 00 04 00 80 00 00 00 79 红色部分代表设备 ID, 低位在前,**80000000** 代表设备 id 为 128 ## 2.3 指令 0x03 更新或查询扫码器系统时间 <table> <tr> <td colspan="12">指令:0x03 </td> </tr> <tr> <td colspan = "12"> 更新系统时间方式--当该字段值为 0x00,表示让扫码器立刻自动同步网络时间(需设备支持网络功能,且网络通常)当该字段值为 0x01,表示让扫码器定时同步网络时间,同步频率为 24 小时/次,同步时间在 24:00(需设备支持网络功能,且网络通常)当该字段值为 0x02,表示扫码器时间由上位机更新,上位机传入时间戳<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>1 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> 例: **PC-->Reader :** 55 AA 03 00 00 FC 获取扫码器系统时间 **Reader-->PC :** 55 AA 03 00 08 00 5D 7A 12 1F 74 01 00 00\> AB 红色字体部分为时间戳(低位在前): 十六进制表示:1741F127A5D==>十进制表示 1598249138781==>2020-08-24 14:05:38 例: 立刻更新时间:55 AA 03 01 00 00 FD 需要设备连网 定时更新时间:55 AA 03 01 00 01 FC 需要设备连网 上位机设置时间:55 AA 03 09 00 02 5D 7A 12 1F 74 01 00 00 A8 ## 2.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>1 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> 例:每次闪亮 0x50\*50ms(十进制 80)间隔 0x0A\*50ms(十进制10) 55 AA 04 05 00 02 03 50 0A 00 A5 控制红灯闪亮三次,时间 4 秒,间隔 0.5s 55 AA 04 05 00 08 03 50 0A 00 AF 蜂鸣器响三次,时间 4 秒,间隔 0.5s 55 AA 04 05 00 08 04 28 28 00 F2 蜂鸣器响四次,时间两秒,间隔两秒 55 AA 04 05 00 04 03 50 0A 00 A3 控制绿灯闪亮 三次,时间 4 秒,间隔 0.5s 55 AA 04 05 00 0A 03 50 0A 00 AD 红灯蜂鸣器动作,时间 4 秒,间隔 0.5s 55 AA 04 05 00 0C 03 50 0A 00 AB 绿灯 蜂鸣器动作,时间 4 秒,间隔 0.5s 55 AA 04 05 00 06 03 50 0A 00 A1 红绿闪三次,时间 4 秒,间隔 0.5s 55 AA 04 05 00 0E 03 50 0A 00 A9 红绿灯蜂鸣器动作三次,时间 4 秒,间隔 0.5s 55 AA 04 05 00 18 03 50 0A 00 BF 蓝灯蜂鸣器动作三次,时间 4 秒,间隔 0.5s ## 2.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>1 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 关闭, 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> 例: **PC-->Reader :** 55 AA 05 01 00 01 FA 关闭扫码功能 **PC-->Reader :** 55 AA 05 01 00 00 FB 打开扫码功能 **Reader-->PC :** 55 AA 05 00 00 00 FA ## 2.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>1 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关闭,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> 例: **PC-->Reader : 55 AA 06 01 00 01 F9 打开按键上报 **PC-->Reader : 55 AA 06 01 00 00 F8 关闭按键上报 **Reader-->PC : 55 AA 06 03 00 00 FA ## 2.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>1 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关闭,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> 示例: pc->reader: 55 AA 09 00 00 F6 (注意,不能有数据域) reader->pc: 55 AA 09 00 01 00 00 F7 门磁关闭,数据域为 00 reader->pc: 55 AA 09 00 01 00 01 F6 门磁打开,数据域为 01 reader->pc: 55 AA 09 0E 00 00 F8 查询失败,无数据域 ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 0A 00 00 F5 **Reader-->PC :** 55 AA 0A 00 10 00 75 A2 37 20 16 A2 A0 07 00 00 00 00 84 0B 9C CF EA 红色部分代表设备 **SN**,长度固定为 **16** 字节 ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 0B 00 00 F4 **Reader-->PC :** 55 AA 0B 00 06 00 77 DB 00 F7 08 84 25 红色部分代表设备 **UUID**。 ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 10 00 00 EF **Reader-->PC :** 55 AA 10 00 11 00 39 30 3A 65 38 3A 36 38 3A 38 35 3A 64 63 3A 61 33 C6 ## 2.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>ISBN13</td> <td>EAN13</td> <td>EAN8</td> <td>NFC</td> <td>条码启用</td> <td>DM</td> <td colspan ="12">QR</td> </tr> <tr> <td>控制字 2</td> <td>UPCE</td> <td>ISBN10</td> <td>ITF</td> <td>PDF417</td> <td>BAR_EXP</td> <td>DATABAR </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> **PC-->Reader :** 55 AA 21 01 00 00 DF 清空码值 **PC-->Reader :** 55 AA 21 01 00 01 DE 使能 QR **PC-->Reader :** 55 AA 21 01 00 02 DD 使能 DM 暂未支持 **PC-->Reader :** 55 AA 21 01 00 04 DB 使能条码 **PC-->Reader :** 55 AA 21 01 00 08 D7 使能 NFC **PC-->Reader :** 55 AA 21 02 00 14 00 C8 使能 EAN8 **PC-->Reader :** 55 AA 21 02 00 24 00 F8 使能 EAN13 **PC-->Reader :** 55 AA 21 02 00 84 00 58 使能 CODE39 **PC-->Reader :** 55 AA 21 02 00 04 01 D9 使能 CODE93 **PC-->Reader :** 55 AA 21 02 00 04 02 DA 使能 CODE128 **PC-->Reader :** 55 AA 21 02 00 04 10 C8 使能 PDF417 **PC-->Reader :** 55 AA 21 02 00 04 20 F8 使能 ITF **PC-->Reader :** 55 AA 21 02 00 04 40 98 使能 isbn10 (需要打开 EAN13) **PC-->Reader :** 55 AA 21 02 00 04 80 58 使能 Upce **PC-->Reader :** 55 AA 21 01 00 09 D6 使能 QR,NFC **PC-->Reader :** 55 AA 21 01 00 0F D0 使能 QR,DM,Barcode NFC **Reader-->PC :** 55 AA 21 00 00 00 DE ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 22 01 00 01 DD 普通模式 **PC-->Reader :** 55 AA 22 01 00 02 DE 单次模式 **PC-->Reader :** 55 AA 22 03 00 03 02 00 DF 间隔模式,间隔时间(2s) **Reader-->PC :** 55 AA 22 00 00 00 DD ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 23 02 00 F4 01 2B 时间间隔 500ms **PC-->Reader :** 55 AA 23 02 00 E8 03 35 时间间隔 1000ms **PC-->Reader :** 55 AA 23 02 00 D0 07 09 时间间隔 2000ms **Reader-->PC :** 55 AA 23 00 00 00 DC ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 24 01 00 00 DA 关灯 **PC-->Reader :** 55 AA 24 01 00 01 DB 开白灯 **PC-->Reader :** 55 AA 24 01 00 02 D8 开红灯 **PC-->Reader :** 55 AA 24 01 00 04 DE 开绿灯 **PC-->Reader :** 55 AA 24 01 00 08 D2 开蓝灯 **PC-->Reader :** 55 AA 24 01 00 0A D0 紫灯(MC 设备独有) **PC-->Reader :** 55 AA 24 01 00 0B D1 紫白灯(MC 设备独有) **PC-->Reader :** 55 AA 24 01 00 06 DC 开红绿灯 **PC-->Reader :** 55 AA 24 01 00 03 D9 开红白灯 **PC-->Reader :** 55 AA 24 01 00 05 DF 开绿白灯 **PC-->Reader :** 55 AA 24 01 00 09 D3 蓝白灯 **Reader-->PC :** 55 AA 24 00 00 00 DB ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 25 01 00 01 DA 扫码或刷卡后蜂鸣器动作 **PC-->Reader :** 55 AA 25 01 00 00 DB 扫码或刷卡后蜂鸣器不动作 **Reader-->PC :** 55 AA 25 00 00 00 DA ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 26 01 00 01 D9 输出高电平 **PC-->Reader :** 55 AA 26 01 00 00 D8 输出低电平 ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 27 01 00 01 D8 输出高电平 **PC-->Reader :** 55 AA 27 01 00 00 D9 输出低电平 ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 28 01 00 01 D7 高电平为 3.3V **PC-->Reader :** 55 AA 28 01 00 00 D6 高电平为 4.3V ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 29 01 00 00 D7 播放 0.wav 欢迎使用微光互联扫码设备 **PC-->Reader :** 55 AA 29 01 00 01 D6 播放 1.wav 欢迎使用支付宝支付 **PC-->Reader :** 55 AA 29 01 00 02 D5 播放 2.wav 欢迎使用微信支付 **PC-->Reader :** 55 AA 29 01 00 03 D4 播放 3.wav 欢迎使用微信支付 **PC-->Reader :** 55 AA 29 01 00 04 D3 播放 4.wav 无声音 **PC-->Reader :** 55 AA 29 01 00 05 D2 播放 5.wav 无声音 ## 2.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>1 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> 例: **PC-->Reader :** 55 AA 2A 02 00 01 02 D4 继电器开 100ms **PC-->Reader :** 55 AA 2A 02 00 01 0A DC 继电器开 500ms PC-->Reader :55 AA 2A 02 00 01 64 B2 继电器开5000ms **PC-->Reader :** 55 AA 2A 01 00 01 D5 开继电器 **PC-->Reader :** 55 AA 2A 01 00 00 D4 关继电器 ## 2.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>1 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> 计算网址:https://www.sojson.com/hexadecimal.html 例:<br> PC-->Reader :55 AA 2B 31 00 7B 22 68 65 61 72 74 5F 65 6E 22 3A 31 2C 22 68 65 61 72 74 5F 64 61 74 61 22 3A 22 31 32 33 22 2C 22 68 65 61 72 74 5F 74 69 6D 65 22 3A 36 30 7D E5 开启心跳 数据内容:{"heart_en":1,"heart_data":"123","heart_time":60} Reader-->PC :55 AA 2B 00 00 00 D4 PC-->Reader :55 AA 2B 3B 00 7b 22 68 65 61 72 74 5f 65 6e 22 3a 31 2c 22 68 65 61 72 74 5f 64 61 74 61 22 3a 22 76 67 75 61 6e 67 5f 74 65 73 74 31 32 33 22 2c 22 68 65 61 72 74 5f 74 69 6d 65 22 3a 31 7d 9D 开启心跳 数据内容:{"heart_en":1,"heart_data":"vguang_test123","heart_time":1} Reader-->PC :55 AA 2B 00 00 00 D4 PC-->Reader :55 aa 2b 0e 00 7b 22 68 65 61 72 74 5f 65 6e 22 3a 30 7d e8 关闭心跳 数据内容:{"heart_en":0} Reader-->PC :55 AA 2B 00 00 00 D4 注意: 只有设置心跳包使能与非使能时设备有回复,心跳包发送时设备无回复。 ### 设备心跳上报 <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> **Reader-->PC :** 55 AA 2B 00 03 00 31 32 33 E7 心跳内容 ## 2.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>1 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">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> 例: **PC-->Reader :** 55 AA 37 00 00 C8 **PC-->Reader :** 55 AA 37 00 1C 00 6D 75 38 36 5F 76 67 5F 65 33 5F 76 32 2E 32 2E 34 2E 31 31 2E 70 31 EA (mu86\_vg\_e3\_v2.2.4.11.p1) # **3 二维码扫描器扫描结果报文反馈** 上位机获得数据结果有两种方式: 1、上位机轮询发送指令从扫描器端获取结果,即扫描器工作在命令模式下。 2、扫码器主动将结果发送至上位机,即扫描器工作在主动上报模式下。 注:扫描器默认工作用于主动上报模式,使用 0x30 上报数据结果 ## 3.1 指令 0x31 结果上报模式设置 指令:0x31 设置协议的工作模式(重启失效)说明:设置扫码器的工作模式以及选用哪条指令获取或上报数据,设置数据有效时间。 模式字段说明,灰色部分为保留位-- | | | | | | | | | | | | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------------------------------------------------------------ | ---------- | | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | | 模式字段值 | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 命令模式,上位机发送 0x30 指令获取数据 <br>无数据区分标志 | 0x00 | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 主动上报模式,扫描器使用 0x30 指令主动发送数据到上位机 <br>无数据区分标志 | 0x01 | | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 命令模式,上位机发送 0x33 指令获取数据 <br>带有数据区分标志 | 0x80 | | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 主动上报模式,扫描器使用 0x33 指令主动发送数据到上位机 <br>带有数据区分标志 | 0x81 | 数据有效时间--(扫码器数据有效时间默认为 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>1 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> 例: **PC-->Reader :** 55 AA 31 01 00 01 CE 设置扫码器工作在上报模式,选用 0x30 指令主动上报数据 **PC-->Reader :** 55 AA 31 01 00 00 CF 设置扫码器工作在命令模式,上位机轮询 0x30 获取扫描器数据 **PC-->Reader :** 55 AA 31 01 00 81 4E 设置扫码器工作在上报模式,选用 0x33 指令主动上报数据 **PC-->Reader :** 55 AA 31 01 00 80 4F 设置扫码器工作在命令模式,上位机轮询 0x33 获取扫描器数据 PC-->Reader :55 AA 31 02 00 00 14 D8设置扫码器工作在命令模式,修改数据有效时间为1000ms,上位机轮询0x30获取扫描器数据 PC-->Reader :55 AA 31 02 00 00 64 A8设置扫码器工作在命令模式,修改数据有效时间为5000ms,上位机轮询0x30获取扫描器数据 PC-->Reader :55 AA 31 02 00 80 14 58设置扫码器工作在命令模式,修改数据有效时间为1000ms,上位机轮询0x33获取扫描器数据 Reader-->PC :55 AA 31 00 00 00 CE PC-->Reader :55 AA 31 02 00 80 64 28设置扫码器工作在命令模式,修改数据有效时间为5000ms,上位机轮询0x33获取扫描器数据 Reader-->PC :55 AA 31 00 00 00 CE ## 3.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>1 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> 例: 命令模式下上位机轮询发送该指令获取数据 **PC-->Reader :** 55 AA 30 00 00 CF **Reader-->PC :** 55 AA 30 00 00 00 CF 无数据 **Reader-->PC :** 55 AA 30 00 08 00 37 36 64 30 33 34 39 31 9D 反馈数据 ## 3.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>1 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> 例: 命令模式下上位机轮询发送该指令获取数据(蓝色--数据类型,红色--数据) PC-->Reader :55 AA 33 00 00 CC Reader-->PC :55 AA 33 00 00 00 CC 无数据 Reader-->PC :55 AA 33 00 07 00 11 31 32 33 34 35 36 DC 扫码数据 Reader-->PC :55 AA 33 00 09 00 42 37 64 39 30 64 61 36 31 DD 刷卡数据 Reader-->PC :门磁关:55 aa 33 00 02 00 b0 00 7e 门磁开:55 aa 33 00 02 00 b0 01 7f 门磁数据 扫码数据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 ## 3.4 指令 0x32 按键值上报 <table> <tr> <td colspan="4">指令:0x32 </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>1 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> 例: **PC-->Reader :** 55 AA 32 00 00 CD ## 3.5 指令 0x0F 透传指令 <table> <tr> <td colspan="4">指令:0x0F </td> <td colspan = "16">上位机端主动轮询或设备端主动上报结果使用此指令</td> </tr> <tr> <td colspan = "20"> 说明:透传数据给设备 P1:<br> Bit_8: Bit_8 = 0 : 指示V传输时是明文,Bit_8=1: 指示V传输时是密文<br> Bit_7: 表示链接标志位,该位置为1,则链接,为0表示链接结束或未链接,当协议包的长度大于当前传输通道所支持的MTU时,需要对待传输的V进行分拆。<br> Bit_2~6: RFU<br> Bit_0: 块号. 默认值为0,当链接标志位置1时,第二包的块号为1,然后依次翻转, 直到链接标志置0(链接结束)。 当第一包数据,其链接标志位为0,则块号为0<br> P2: RFU<br> P3: 用于标识明文V的格式类型(标识值唯一)<br> 注意: 待传数据V的长度加上此指令的格式字节,其总长度不能大于设备所支持的协议包最大长度<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>1 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"> 无此项 </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 白名单设置 使白名单设置功能,需通过 **0x40** 指令或 PC 端《微光互联白名单配置管理工具》更改初始密码,初始密码不能用来开启扫描编辑白名单功能。 白名单功能有三种工作模式: **1**、正常工作模式--过滤功能(可通过 **0x41** 指令进行设置) **2**、刷卡自动添加卡号到白名单 (需通过配置码使能或关闭) **3**、刷卡自动从白名单中删除这张卡(需通过配置码使能或关闭) **4**、指令中用的时间戳为 **unix** 时间戳 微光通信协议可以使用 **0x41** 指令开启正常工作模式,另外两种模式需使用 PC 端工具才能设置,具体可详《**微光互联白名单配置管理工具**》。指令 **0x42、0x43** 指令在任意工作模式下都生效。 注:白名单内存储的是无前后缀且为正序的物理卡号,且不加回车换行,刷卡输出格式为直接输出 ## 4.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>1 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> 例: 设置管理密码为 1996049520111111(蓝色--原始密码,红色--待设置密码) **PC-->Reader :** 55 AA 40 20 00 31 32 33 34 35 36 37 38 38 37 36 35 34 33 32 31 31 39 39 36 30 34 39 35 32 30 31 31 31 31 31 31 A2 ## 4.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>1 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> 例: **PC-->Reader :** 55 AA 41 01 00 00 BF 关闭白名单过滤功能 **PC-->Reader :** 55 AA 41 01 00 01 BE 开启白名单过滤功能 注:白名单内存储的是无前后缀且为正序的物理卡号,且不加回车换行,刷卡输出格式为直接输出。 ### 指令 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>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> 例: **PC-->Reader :** 55 AA 42 08 00 FF 81 4C 00 00 00 00 00 87 卡号为 5014015 的卡加入白名单 ## 4.3 指令 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>1 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> 例: **PC-->Reader :** 55 AA 43 08 00 FF 81 4C 00 00 00 00 00 86 将卡号为 5014015 的卡从白名单内删除 ## 4.4 指令 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>1 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> 例: **PC-->Reader :** 55 AA 44 00 00 BB 删除白名单内所有卡号 ## 4.5 指令 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>1 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> LEN   2 Byte   DATA低位在前<br> DATA   N Byte   JSON格式<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> ## 4.6 指令 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>1 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> 例: **PC-->Reader :** 55 AA 45 02 00 01 00 B9 白名单验证成功后响蜂鸣器 **PC-->Reader :** 55 AA 45 02 00 02 00 BA 闪白灯 **PC-->Reader :** 55 AA 45 02 00 04 00 BC 闪红灯 **PC-->Reader :** 55 AA 45 02 00 08 00 B0 闪绿灯 **PC-->Reader :** 55 AA 45 02 00 10 00 A8 闪蓝灯 **PC-->Reader :** 55 AA 45 02 00 20 00 98 GPIO 管脚 **PC-->Reader :** 55 AA 45 02 00 40 00 F8 继电器动作 **PC-->Reader :** 55 AA 45 02 00 05 00 BD 响蜂鸣器闪红灯 **PC-->Reader :** 55 AA 45 02 00 09 00 B1 响蜂鸣器闪绿灯 **PC-->Reader :** 55 AA 45 02 00 11 00 A9 响蜂鸣器闪蓝灯 ****PC-->Reader** :55 AA 45 02 00 0b 00 B3 响蜂鸣器闪白灯绿灯** ** **PC-->Reader :** 55 AA 45 02 00 07 00 BF 响蜂鸣器闪白灯红灯 **PC-->Reader :** 55 AA 45 02 00 14 00 AC 闪红蓝灯 **PC-->Reader :** 55 AA 45 02 00 43 00 FB 蜂鸣器白灯继电器 **PC-->Reader :** 55 AA 45 02 00 45 00 FD 蜂鸣器红灯继电器 **PC-->Reader :** 55 AA 45 02 00 49 00 F1 蜂鸣器绿灯继电器 **PC-->Reader :** 55 AA 45 02 00 51 00 E9 蜂鸣器蓝灯继电器 **PC-->Reader :** 55 AA 45 02 00 4B 00 F3 蜂鸣器白灯绿灯继电器 ## 4.7 指令 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>1 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> ## 4.8 指令 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>1 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> # **5 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 指令,详见具体指令。 ## 5.1 指令 0x53 卡号上报开关 <table> <tr> <td colspan="20">指令:0x53 </td> </tr> <tr> <td colspan = "20"> 说明:<br> 数据域的值设置为 0x01 或 0x00 时(即进入或退出命令模式),均为空操作且扫描器回复成功。目 的用于兼容 v2.10 版本微光通讯协议<br> 注:默认卡号上报功能开启,若关闭卡号上报功能,则协议工作在任何模式下均得不到卡号。此时扫码器多 用于直接读写 M1 卡或操作 CPU 卡,而无需得到卡号<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>1 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> 例: **PC-->Reader :** 55 AA 53 01 00 02 AF 使能卡号上报 **PC-->Reader :** 55 AA 53 01 00 03 AE 关闭卡号上报 **Reader-->PC :** 55 AA 53 00 00 00 AC ## 5.2 M1 卡块操作 ## 5.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>1 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> 0x01 -> START<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> 例: 用 A(0x60)密钥做认证,读取 6 扇区第二块(即绝对块号为 0x19)数据。 认证密钥为 FF FF FF FF FF FF,标志位选配。 **PC-->Reader :** 55 AA 51 09 00 60 19 FF FF FF FF FF FF 00 DE 包含标志位 **PC-->Reader :** 55 AA 51 08 00 60 19 FF FF FF FF FF FF DF 无标志位 **Reader-->PC :** 55 AA 51 00 10 00 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12 34 读卡成功 **Reader-->PC :** 55 AA 51 FF 00 00 51 失败或无卡 ## 5.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>1 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> 例: 用 B(0x61)密钥做认证,向 6 扇区第二块(即绝对块号为 0x19)写数据。 认证密钥为 FF FF FF FF FF FF,标志位选配。 **PC-->Reader :** 55 AA 52 19 00 61 19 FF FF FF FF FF FF 11 11 11 11 11 11 11 11 22 22 22 22 22 22 22 22 00 CC包含标志位 **PC-->Reader :** 55 AA 52 18 00 61 19 FF FF FF FF FF FF 12 34 56 78 90 12 34 56 12 34 56 78 90 12 34 56 CD无标志位 **Reader-->PC :** 55 AA 52 00 00 00 AD 写数据成功 **Reader-->PC :** 55 AA 52 FF 00 00 52 失败或无卡 ## 5.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>1 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> 例: 用 A(0x60)密钥做认证,读取 2 扇区 0 块、1 块、2 块数据,即以 0 块为基地址连续读 3 块。认证密钥为 FF FF FF FF FF FF,标志位设置为 AUTO。 **PC-->Reader :** 55 AA A0 0B 00 00 60 02 00 03 FF FF FF FF FF FF 35 **Reader-->PC :** 55 AA A0 00 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6F 读数据成功 **Reader-->PC :** 55 AA A0 FF 00 00 A0 失败或无卡 ## 5.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>1 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> 例: 用A(0x60)密钥做认证,向2扇区1块、2块写入数据,即以1块为基地址连续写2块。 认证密钥为FF FF FF FF FF FF,标志位设置为AUTO。 例1: PC-->Reader :55 AA A1 2B 00 00 60 02 01 02 FF FF FF FF FF FF 11 11 11 11 11 11 11 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 33 33 33 33 33 33 33 33 36 例2: 55 AA A1 2B 00 00 60 02 01 02 FF FF FF FF FF FF 44 44 44 44 44 44 44 44 44 55 55 55 55 55 55 55 55 55 55 55 55 55 55 66 66 66 66 66 66 66 66 66 36 **Reader-->PC :** 55 AA A1 00 00 00 5E 写数据成功 **Reader-->PC :** 55 AA A1 FF 00 00 A1 失败或无卡 ## 5.3 ISO14443-4 ## 5.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>1 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> 例:红色字体部分为 APDU 指令 选择应用目录: **PC-->Reader :** 55 AA A6 08 00 01 00 A4 00 00 02 3F 01 C8 **Reader-->PC :** 55 AA A6 00 11 00 6F 0D 84 05 41 44 46 30 31 A5 04 9F 08 01 02 90 00 4C 获取 4 位随机数: **Reader-->PC :** 55 AA A6 06 00 01 00 84 00 00 04 DE **Reader-->PC :** 55 AA A6 00 06 00 7C C9 56 38 90 00 14 外部认证:四位随机数用于外部认证,认证方式为 DES 单倍长,默认密钥(1122334455667788) **PC-->Reader :** 55 AA A6 0E 00 01 00 82 00 00 08 71 7E B1 7D 4C F6 81 17 33 **Reader-->PC :** 55 AA A6 00 02 00 90 00 CB 选择二进制文件: **PC-->Reader :** 55 AA A6 06 00 02 00 B0 83 00 00 6E **Reader-->PC :** 55 AA A6 00 12 00 11 22 33 44 55 66 77 88 00 00 00 00 00 00 00 00 90 00 5337 # 6 **UI** **界面操作指令** ## 6.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>1 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> 例: { "ack":"微光", "msg":"互联" } **PC-->Reader :** 55 AA 61 28 00 7B 0A 20 20 20 22 61 63 6B 22 3A 22 E5 BE AE E5 85 89 22 2C 0A 20 20 20 226D 73 67 22 3A 22 E4 BA 92 E8 81 94 22 0A 7D AB { "ack":"123", "msg":"456" } **PC-->Reader :** 55 AA 61 22 00 7B 0A 20 20 20 22 61 63 6B 22 3A 22 31 32 33 22 2C 0A 20 20 20 22 6D 73 67 22 3A 22 34 35 36 22 0A 7D 8B { "ack":"微光test_12345", "msg":"互联test_67890" } PC-->Reader : 55 AA 61 33 00 7b 22 61 63 6b 22 3a 22 e5 be ae e5 85 89 74 65 73 74 5f 31 32 33 34 35 22 2c 22 6d 73 67 22 3a 22 e4 ba 92 e8 81 94 74 65 73 74 5f 36 37 38 39 30 22 7d BB ## 6.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>1 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> 例:自定义数据 { "page_data":"你好", "key_left":"第一页", "key_mid":"5 页", "key_right":"下页" } PC-->Reader : 55 AA 62 66 00 01 7B 0A 20 20 20 22 70 61 67 65 5F 64 61 74 61 22 3A 22 E4 BD A0 E5 A5 BD 22 2C 0A 20 20 20 22 6B 65 79 5F 6C 65 66 74 22 3A 22 E7 AC AC E4 B8 80 E9 A1 B5 22 2C 0A 20 20 20 22 6B 65 79 5F 6D 69 64 22 3A 22 35 20 E9 A1 B5 22 2C 0A 20 20 20 22 6B 65 79 5F 72 69 67 68 74 22 3A 22 E4 B8 8B E9 A1 B5 22 0A 7D B5 Reader-->PC:55 AA 62 00 00 00 9D { "page_data":"1", "key_left":"2", "key_mid":"3", "key_right":"4" } PC-->Reader : 55 AA 62 4A 00 01 7B 0A 22 70 61 67 65 5F 64 61 74 61 22 3A 20 22 31 22 2C 0A 22 6B 65 79 5F 6C 65 66 74 22 3A 20 22 32 22 2C 20 0A 22 6B 65 79 5F 6D 69 64 22 3A 20 22 33 22 2C 0A 22 6B 65 79 5F 72 69 67 68 74 22 20 3A 20 22 34 22 0A 7D 9D Reader-->PC:55 AA 62 00 00 00 9D 例:显示二维码 {"dynamic_qr_str":"微光互联_testABC@<12345>"} PC-->Reader : 55 AA 62 32 00 02 7b 22 64 79 6e 61 6d 69 63 5f 71 72 5f 73 74 72 22 3a 22 e5 be ae e5 85 89 e4 ba 92 e8 81 94 5f 74 65 73 74 41 42 43 40 3c 31 32 33 34 35 3e 22 7d C5 {"dynamic_qr_str":"微光互联科技有限公司+酷豆物联科技有限公司"} PC-->Reader : 55 AA 62 53 00 02 7b 22 64 79 6e 61 6d 69 63 5f 71 72 5f 73 74 72 22 3a 22 e5 be ae e5 85 89 e4 ba 92 e8 81 94 e7 a7 91 e6 8a 80 e6 9c 89 e9 99 90 e5 85 ac e5 8f b8 2b e9 85 b7 e8 b1 86 e7 89 a9 e8 81 94 e7 a7 91 e6 8a 80 e6 9c 89 e9 99 90 e5 85 ac e5 8f b8 22 7d CB ## 6.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>1 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> 例: **PC-->Reader :** 55 AA 63 01 00 01 9C 显示编号为 1 的图片 **PC-->Reader :** 55 AA 63 01 00 02 9F 显示编号为 2 的图片 **PC-->Reader :** 55 AA 63 01 00 03 9E 显示编号为 3 的图片 **PC-->Reader :** 55 AA 63 01 00 04 99 显示编号为 4 的图片 **PC-->Reader :** 55 AA 63 01 00 05 98 显示编号为 5 的图片 **PC-->Reader :** 55 AA 63 01 00 0a 97 显示编号为 10 的图片 ## 6.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>1 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> 例: **PC-->Reader :** 55 AA 64 02 00 01 00 98 **PC-->Reader :** 55 AA 64 02 00 02 00 9B ## 6.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>1 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> # 7 **固件升级** ## 7.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>1 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> ## 7.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>1 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> ## 7.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>1 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> ## 7.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>1 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> ## 7.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> ## 7.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> ## 7.5 指令 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> 读卡配置协议格式: PC->Reader:55 aa b0 2a 00 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 73 65 63 74 6f 72 5f 73 77 69 74 63 68 3d 31 7d 54 Reader->PC:55 aa b0 00(ff) 00 00 4f(b0) 数据域:(0x01)***VBAR\_CONFIG\_V1.1.0*** 大括号内为需要配置的字段,可以同时配置多个项,逗号隔开 1、配置查询:55 aa B0 01 00 00 4E 2、配置界面显示公司名称: ___VBAR_CONFIG_V1.1.0___{devname="北京微光互联科技有限公司" }--y+Q5UObEeoCZKL+sv07irA== 55 aa b0 63 00 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 64 65 76 6e 61 6d 65 3d 22 e5 8c 97 e4 ba ac e5 be ae e5 85 89 e4 ba 92 e8 81 94 e7 a7 91 e6 8a 80 e6 9c 89 e9 99 90 e5 85 ac e5 8f b8 22 7d 2d 2d 79 2b 51 35 55 4f 62 45 65 6f 43 5a 4b 4c 2b 73 76 30 37 69 72 41 3d 3d 70 3、配置开发485输出: ___VBAR_CONFIG_V1.1.0___{w_mode=2,dchannel=64,ndchannel=64,bldchannel=64,p_uart1="115200-8-N-1",ochannel=2,nochannel=2,blochannel=2 }--y15fY77HlEkQjDuGgXj6Tw== 55 aa B0 9F 00 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 77 5f 6d 6f 64 65 3d 32 2c 64 63 68 61 6e 6e 65 6c 3d 36 34 2c 6e 64 63 68 61 6e 6e 65 6c 3d 36 34 2c 62 6c 64 63 68 61 6e 6e 65 6c 3d 36 34 2c 70 5f 75 61 72 74 31 3d 22 31 31 35 32 30 30 2d 38 2d 4e 2d 31 22 2c 6f 63 68 61 6e 6e 65 6c 3d 32 2c 6e 6f 63 68 61 6e 6e 65 6c 3d 32 2c 62 6c 6f 63 68 61 6e 6e 65 6c 3d 32 7d 2d 2d 79 31 35 66 59 37 37 48 6c 45 6b 51 6a 44 75 47 67 58 6a 36 54 77 3d 3d 96 4、配置普通tcp协议输出,并配置tcp服务器及延时,传输成功播放语音、动作继电器、继电器延时1000ms,传输失败播放语音 ___VBAR_CONFIG_V1.1.0___{w_mode=1,taddr="192.168.10.120",port=7878,touttime=2,awifi_s=1088,relayd=1000,awifi_f=2048,owifi=8,ochannel=584,nochannel=584,blochannel=584 }--KS6obtdgOf6P9lIv9yzBAw== 55 aa B0 c1 00 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 77 5f 6d 6f 64 65 3d 31 2c 74 61 64 64 72 3d 22 31 39 32 2e 31 36 38 2e 31 30 2e 31 32 30 22 2c 70 6f 72 74 3d 37 38 37 38 2c 74 6f 75 74 74 69 6d 65 3d 32 2c 61 77 69 66 69 5f 73 3d 31 30 38 38 2c 72 65 6c 61 79 64 3d 31 30 30 30 2c 61 77 69 66 69 5f 66 3d 32 30 34 38 2c 6f 77 69 66 69 3d 38 2c 6f 63 68 61 6e 6e 65 6c 3d 35 38 34 2c 6e 6f 63 68 61 6e 6e 65 6c 3d 35 38 34 2c 62 6c 6f 63 68 61 6e 6e 65 6c 3d 35 38 34 7d 2d 2d 4b 53 36 6f 62 74 64 67 4f 66 36 50 39 6c 49 76 39 79 7a 42 41 77 3d 3d AF 5、配置设备静态ip ___VBAR_CONFIG_V1.1.0___{ip_mode=1,ip="192.168.10.188",mask="255.255.255.0",gateway="192.168.10.1",dns="114.114.114.114" }--tRClPNt/mK5kl/squMdIFw== 55 aa B0 94 00 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 69 70 5f 6d 6f 64 65 3d 31 2c 69 70 3d 22 31 39 32 2e 31 36 38 2e 31 30 2e 31 38 38 22 2c 6d 61 73 6b 3d 22 32 35 35 2e 32 35 35 2e 32 35 35 2e 30 22 2c 67 61 74 65 77 61 79 3d 22 31 39 32 2e 31 36 38 2e 31 30 2e 31 22 2c 64 6e 73 3d 22 31 31 34 2e 31 31 34 2e 31 31 34 2e 31 31 34 22 7d 2d 2d 74 52 43 6c 50 4e 74 2f 6d 4b 35 6b 6c 2f 73 71 75 4d 64 49 46 77 3d 3d A1 6、配置设备动态ip ___VBAR_CONFIG_V1.1.0___{ip_mode=0 }--67TcSMIO2Nchn9zNtc0WBg== 55 aa B0 3e 00 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 69 70 5f 6d 6f 64 65 3d 30 7d 2d 2d 36 37 54 63 53 4d 49 4f 32 4e 63 68 6e 39 7a 4e 74 63 30 57 42 67 3d 3d 3A 7、配置普通485输出,扫码、刷卡、蓝牙前后缀和回车换行 ___VBAR_CONFIG_V1.1.0___{w_mode=1,p_uart1="115200-8-N-1",ochannel=2,nochannel=2,blochannel=2,chorc=1,prefix="3132",postfix="3132",cr=1,nl=1,anfc=1,horc=0,pri="3334",pos="3334",ncr=1,nnl=1,blhorc=1,blpri="3536",blpos="3536",blcr=1,blnl=1 }--0hUTpadr318gfddu/TfCUw== 55 aa B0 08 01 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 77 5f 6d 6f 64 65 3d 31 2c 70 5f 75 61 72 74 31 3d 22 31 31 35 32 30 30 2d 38 2d 4e 2d 31 22 2c 6f 63 68 61 6e 6e 65 6c 3d 32 2c 6e 6f 63 68 61 6e 6e 65 6c 3d 32 2c 62 6c 6f 63 68 61 6e 6e 65 6c 3d 32 2c 63 68 6f 72 63 3d 31 2c 70 72 65 66 69 78 3d 22 33 31 33 32 22 2c 70 6f 73 74 66 69 78 3d 22 33 31 33 32 22 2c 63 72 3d 31 2c 6e 6c 3d 31 2c 61 6e 66 63 3d 31 2c 68 6f 72 63 3d 30 2c 70 72 69 3d 22 33 33 33 34 22 2c 70 6f 73 3d 22 33 33 33 34 22 2c 6e 63 72 3d 31 2c 6e 6e 6c 3d 31 2c 62 6c 68 6f 72 63 3d 31 2c 62 6c 70 72 69 3d 22 33 35 33 36 22 2c 62 6c 70 6f 73 3d 22 33 35 33 36 22 2c 62 6c 63 72 3d 31 2c 62 6c 6e 6c 3d 31 7d 2d 2d 30 68 55 54 70 61 64 72 33 31 38 67 66 64 64 75 2f 54 66 43 55 77 3d 3d 42 8、配置设备开发模式-485微光通讯协议输出,扫码前后缀格式char格式,内容3132,勾选回车换行,扫码模式间隔模式、间隔时间300ms,扫码响蜂鸣器,蜂鸣器延时30ms,扫码输出直接输出,默认固定mac地址,动态获取ip,打开刷卡,打开云证,身份证输出身份证号,刷卡起始位1长度8,正序直接输出,刷卡后响蜂鸣器,刷卡前后缀格式char格式,内容3334,勾选回车换行,蓝牙前后缀格式char格式,内容3536,勾选回车换行,蓝牙数据直接输出,打开开机语音,音量60,打开心跳,心跳内容hello,时间60s,设备号:128。 ___VBAR_CONFIG_V1.1.0___{w_mode=2,dchannel=64,ndchannel=64,bldchannel=64,p_uart1="115200-8-N-1",ochannel=2,nochannel=2,blochannel=2,chorc=1,prefix="3132",postfix="3132",cr=1,nl=1,s_mode=0,interval=300,ascan=1,beepd=30,ledd=200,ft=0,fixed_macaddr_enable=0,ip_mode=0,nfc=1,nfc_identity_card_enable=3,nfc_card_protocol=3,st=1,len=8,nft=0,anfc=1,horc=0,pri="3334",pos="3334",ncr=1,nnl=1,ord=0,idord=0,nfc_otag=32,online_id_format=1,blhorc=1,blpri="3536",blpos="3536",blcr=1,blnl=1,blft=0,volume=60,boot_music=1,heart_en=1,heart_time=60,heart_data="hello",devnum=128 }--kJj1IlP2iLoAyBdOKbWk6A== 55 aa B0 4D 02 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 77 5f 6d 6f 64 65 3d 32 2c 64 63 68 61 6e 6e 65 6c 3d 36 34 2c 6e 64 63 68 61 6e 6e 65 6c 3d 36 34 2c 62 6c 64 63 68 61 6e 6e 65 6c 3d 36 34 2c 70 5f 75 61 72 74 31 3d 22 31 31 35 32 30 30 2d 38 2d 4e 2d 31 22 2c 6f 63 68 61 6e 6e 65 6c 3d 32 2c 6e 6f 63 68 61 6e 6e 65 6c 3d 32 2c 62 6c 6f 63 68 61 6e 6e 65 6c 3d 32 2c 63 68 6f 72 63 3d 31 2c 70 72 65 66 69 78 3d 22 33 31 33 32 22 2c 70 6f 73 74 66 69 78 3d 22 33 31 33 32 22 2c 63 72 3d 31 2c 6e 6c 3d 31 2c 73 5f 6d 6f 64 65 3d 30 2c 69 6e 74 65 72 76 61 6c 3d 33 30 30 2c 61 73 63 61 6e 3d 31 2c 62 65 65 70 64 3d 33 30 2c 6c 65 64 64 3d 32 30 30 2c 66 74 3d 30 2c 66 69 78 65 64 5f 6d 61 63 61 64 64 72 5f 65 6e 61 62 6c 65 3d 30 2c 69 70 5f 6d 6f 64 65 3d 30 2c 6e 66 63 3d 31 2c 6e 66 63 5f 69 64 65 6e 74 69 74 79 5f 63 61 72 64 5f 65 6e 61 62 6c 65 3d 33 2c 6e 66 63 5f 63 61 72 64 5f 70 72 6f 74 6f 63 6f 6c 3d 33 2c 73 74 3d 31 2c 6c 65 6e 3d 38 2c 6e 66 74 3d 30 2c 61 6e 66 63 3d 31 2c 68 6f 72 63 3d 30 2c 70 72 69 3d 22 33 33 33 34 22 2c 70 6f 73 3d 22 33 33 33 34 22 2c 6e 63 72 3d 31 2c 6e 6e 6c 3d 31 2c 6f 72 64 3d 30 2c 69 64 6f 72 64 3d 30 2c 6e 66 63 5f 6f 74 61 67 3d 33 32 2c 6f 6e 6c 69 6e 65 5f 69 64 5f 66 6f 72 6d 61 74 3d 31 2c 62 6c 68 6f 72 63 3d 31 2c 62 6c 70 72 69 3d 22 33 35 33 36 22 2c 62 6c 70 6f 73 3d 22 33 35 33 36 22 2c 62 6c 63 72 3d 31 2c 62 6c 6e 6c 3d 31 2c 62 6c 66 74 3d 30 2c 76 6f 6c 75 6d 65 3d 36 30 2c 62 6f 6f 74 5f 6d 75 73 69 63 3d 31 2c 68 65 61 72 74 5f 65 6e 3d 31 2c 68 65 61 72 74 5f 74 69 6d 65 3d 36 30 2c 68 65 61 72 74 5f 64 61 74 61 3d 22 68 65 6c 6c 6f 22 2c 64 65 76 6e 75 6d 3d 31 32 38 7d 2d 2d 6b 4a 6a 31 49 6c 50 32 69 4c 6f 41 79 42 64 4f 4b 62 57 6b 36 41 3d 3d 4F 9、设置蓝牙名称 ___VBAR_CONFIG_V1.1.0___{ble_name="DW200_7.3test" }--Y9dP25sw9ep0V3UcaANrLg== 55 aa B0 4D 00 01 5f 5f 5f 56 42 41 52 5f 43 4f 4e 46 49 47 5f 56 31 2e 31 2e 30 5f 5f 5f 7b 62 6c 65 5f 6e 61 6d 65 3d 22 44 57 32 30 30 5f 37 2e 33 74 65 73 74 22 7d 2d 2d 59 39 64 50 32 35 73 77 39 65 70 30 56 33 55 63 61 41 4e 72 4c 67 3d 3d 0D ## 7.6 指令 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>1 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> ## 7.7 指令 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>1 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> ## 7.8指令 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>1 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> # 8 **音频或图片更新** 音频文件以压缩包的形式传输, 音频文件名称必须符合:\[0-6\].wav 或 f.wav, s.wav。图片文件必须是: 0.png, 1.png 2.png … 或 logo.png, bk.png。 并且解压后只能有一级目录 ## 8.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>1 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> ## 8.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>1 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> ## 8.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>1 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> ## 8.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>1 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> 例: 删除/vgapp/wav/0.wav:55 AA 8A 02 00 02 00 75 删除/vgapp/wav/1.wav:55 AA 8A 02 00 02 01 74 删除/vgapp/res/image/0.png:55 AA 8A 02 00 01 00 76 删除/vgapp/res/image/1.png:55 AA 8A 02 00 01 01 77 删除/vgapp/res/image/3.png:55 AA 8A 02 00 01 03 75 # **附录 1:回复包标识字清单** <table> <tr> <td>标识号</td><td>说明</td> </tr> <tr> <td>0x00</td><td>成功</td> </tr> <tr> <td>0x90</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失败 | 骆凤亚 |2023.03.28 | | ****
李文斌
2026年8月6日 09:34
26
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期