编程进阶网编程进阶网
  • 基础组成体系
  • 程序编程原理
  • 异常和IO系统
  • 六大设计原则
  • 设计模式导读
  • 创建型设计模式
  • 结构型设计模式
  • 行为型设计模式
  • 设计模式案例
  • 面向对象思想
  • 基础入门
  • 高级进阶
  • JVM虚拟机
  • 数据集合
  • Java面试题
  • C语言入门
  • C综合案例
  • C标准库
  • C语言专栏
  • C++入门
  • C++综合案例
  • C++专栏
  • HTML
  • CSS
  • JavaScript
  • 前端专栏
  • Swift
  • iOS入门
  • 基础入门
  • 开源库解读
  • 性能优化
  • Framework
  • 方案设计
  • 媒体音视频
  • 硬件开发
  • Groovy
  • 常用工具
  • 大厂面试题
  • 综合案例
  • 网络底层
  • Https
  • 网络请求
  • 故障排查
  • 专栏
  • 数组
  • 链表
  • 栈
  • 队列
  • 树
  • 递归
  • 哈希
  • 排序
  • 查找
  • 字符串
  • 其他
  • Bash脚本
  • Linux入门
  • 嵌入式开发
  • 代码规范
  • Markdown
  • 开发理论
  • 开发工具
  • Git管理
  • 百宝箱
  • 开源协议
  • 技术招聘
  • 测试经验
  • 职场提升
  • 技术模版
  • 关于我
  • 目标清单
  • 学习框架
  • 育儿经验
  • 我的专栏
  • 底层能力
  • 读书心得
  • 随笔笔记
  • 职场思考
  • 中华历史
  • 经济学故事
  • 基础组成体系
  • 程序编程原理
  • 异常和IO系统
  • 六大设计原则
  • 设计模式导读
  • 创建型设计模式
  • 结构型设计模式
  • 行为型设计模式
  • 设计模式案例
  • 面向对象思想
  • 基础入门
  • 高级进阶
  • JVM虚拟机
  • 数据集合
  • Java面试题
  • C语言入门
  • C综合案例
  • C标准库
  • C语言专栏
  • C++入门
  • C++综合案例
  • C++专栏
  • HTML
  • CSS
  • JavaScript
  • 前端专栏
  • Swift
  • iOS入门
  • 基础入门
  • 开源库解读
  • 性能优化
  • Framework
  • 方案设计
  • 媒体音视频
  • 硬件开发
  • Groovy
  • 常用工具
  • 大厂面试题
  • 综合案例
  • 网络底层
  • Https
  • 网络请求
  • 故障排查
  • 专栏
  • 数组
  • 链表
  • 栈
  • 队列
  • 树
  • 递归
  • 哈希
  • 排序
  • 查找
  • 字符串
  • 其他
  • Bash脚本
  • Linux入门
  • 嵌入式开发
  • 代码规范
  • Markdown
  • 开发理论
  • 开发工具
  • Git管理
  • 百宝箱
  • 开源协议
  • 技术招聘
  • 测试经验
  • 职场提升
  • 技术模版
  • 关于我
  • 目标清单
  • 学习框架
  • 育儿经验
  • 我的专栏
  • 底层能力
  • 读书心得
  • 随笔笔记
  • 职场思考
  • 中华历史
  • 经济学故事
  • 01.IC实体卡介绍说明
  • 02.M1实体卡读写技术
  • 03.CPU实体卡读写技术
  • 04.PSAM卡读写技术
  • 05.键盘按键监听实践
  • 06.USB开发设计实践
  • 08.设备串口通信实践

10.韦根协议开发详解

目录介绍

  • 01.韦根协议是什么
    • 1.1 理解什么是韦根
    • 1.2 理解韦根接口
    • 1.4 韦根发送器
    • 1.5 韦根接收器
    • 1.9 常见韦根数值范围
  • 02.Wiegand26格式
    • 2.1 26格式数据位
    • 2.2 卡数据传递案例
  • 03.Wiegand32格式
  • 04.Wiegand34格式
    • 4.1 34格式数据位

01.韦根协议是什么

1.1 理解什么是韦根

韦根(Wiegand)是一种常用于接口通信的编码格式,主要用于读取磁卡、门禁系统等设备。

1.2 理解韦根接口

Wiegand接口通常由3根线组成,它们分别是:数据0(Data0),数据1(Data1)和 Data return。这3条线负责传输Wiegand信号。

D0,D1在没有数据输出时都保持+5V高电平。若输出为0,则D0持续输出一段低电平,若输出为1,则D1持续输出一段高电平。两个电子卡韦根输出之间的最小间隔为0.25秒。

1.4 韦根发送器

韦根发送器用于将数据转换为韦根协议格式并发送出去。韦根发送器发送数据处理的案例:

  1. 准备要发送的数据:假设我们要发送一个十进制数值为 123 的数据。
  2. 将数据转换为二进制:将十进制数值 123 转换为二进制表示。在这个例子中,转换后的二进制数据为 "1111011"。
  3. 添加校验位:根据韦根协议的规定,添加校验位。对于韦根协议,校验位长度为 1 位。在这个例子中,使用简单的奇偶校验,将数据位中的 1 的个数作为校验位。因此,校验位为 1。
  4. 组合数据:将数据位和校验位组合在一起,形成完整的发送数据。在这个例子中,发送数据为 "11110111"。
  5. 发送数据:将发送数据通过合适的通信方式发送给接收器。这可能涉及到串口通信、无线通信或其他通信方式,具体取决于你的硬件设备和应用需求。

1.5 韦根接收器

当韦根接收器接收到数据时,可以进行以下处理步骤:

  1. 读取数据位:根据韦根协议的规定,确定数据位的长度。对于韦根26协议,数据位长度为24位;对于韦根32协议,数据位长度为30位。
  2. 解码数据:将接收到的二进制数据转换为对应的十进制或其他格式,以便进一步处理或显示。可以使用位运算或其他相关方法来解码数据。
  3. 校验数据:根据韦根协议的校验位规则,对数据进行校验。通常,韦根协议使用两位校验位来验证数据的完整性和准确性。
  4. 处理数据:根据你的应用需求,对接收到的数据进行进一步处理。这可能包括验证身份、控制门禁系统、记录日志等。
  5. 响应或回复:根据处理结果,可以发送响应或回复给发送方,以确认接收或提供相应的反馈。

1.9 常见韦根数值范围

韦根26和韦根34是两种常见的韦根协议,它们的数值范围如下:

  1. 韦根26(Wiegand 26):韦根26协议使用26位二进制编码,其中包括24位数据位和2位校验位。它的数值范围是0~16777215。
  2. 韦根34(Wiegand 34):韦根34协议使用34位二进制编码,其中包括32位数据位和2位校验位。它的数值范围是0~4294967295。
  3. 韦根32(Wiegand 32):韦根32协议使用32位二进制编码,其中包括30位数据位和2位校验位。它的数值范围是0~1073741823。

02.Wiegand26格式

2.1 26格式数据位

Wiegand 26各数据位的含义如下:

  1. 第 1 位: 为输出数据2—13位的偶校验位
  2. 第 2-9 位:  ID卡的HID码的低8位
  3. 第 10-25 位:  ID卡的PID号码
  4. 第 26 位: 为输出数据14-25位的奇校验位

检验位1【第1位校验位】为偶校验位:对于WG26来说,如果前1-8位有偶数个1,那么检验位1=0,反之为1

检验位2【第26位校验位】为奇校验位:对于WG26来说,如果后14-25位有奇数个1,那么检验位2=0,反之为1

数据输出顺序:HID码和PID码均为高位在前,低位在后。

2.2 卡数据传递案例

04.Wiegand34格式

4.1 34格式数据位

Wiegand 34各数据位的含义如下:

  1. 第 1 位: 为输出第2—17位的偶校验位
  2. 第 2-17 位: ID卡的HID码
  3. 第18-33位: ID卡的PID号码
  4. 第 34 位: 为输出第18-33位的奇校验位

检验位1【第1位校验位】为偶校验位:对于WG34来说,如果前16位有偶数个1,那么检验位1=0,反之为1

检验位2【第34位校验位】为奇校验位:对于WG34来说,如果前16位有奇数个1,那么检验位2=0,反之为1

数据输出顺序:HID码和PID码均为高位在前,低位在后。

stm32收发 wiegand 韦根协议开发详解:https://blog.csdn.net/Chasing_Chasing/article/details/87357168 stm32韦根数据接收支持26和34自动识别:https://blog.csdn.net/xu_bk/article/details/107516597

贡献者: yangchong211