海康威视与ZKTeco门禁面板Wiegand卡号识别不一致问题咨询
问题成因
- 核心是两款设备对Wiegand传输帧的位解析规则、字段拼接逻辑不同,属于协议实现层面的常见差异,并非硬件故障。
你测试拿到的是标准26bit Wiegand传输帧,完整结构为:
1bit起始奇偶校验位 + 24bit有效数据位 + 1bit结束奇偶校验位
两款设备的解析逻辑差异如下:
- ZKTeco设备:将24bit有效数据拆分为8bit Facility Code(FC,即你测试得到的43)+16bit Card Number(CC,即你测试得到的3012),将两个字段分别转十进制后补前导零(FC补至3位,CC补至5位),拼接后得到最终卡号
04303012。 - 海康威视默认规则:将24bit有效数据作为一个完整的二进制数,直接转换为十进制输出,十六进制
2B0BC4转十进制的结果就是2821060。
你用到的两款Arduino库的结果差异也是同理:第一款库遵循标准26bit Wiegand的字段拆分规则解析,第二款库直接将有效位整体转十进制输出。
海康威视自定义规则配置方案
要实现两款设备卡号统一,可在海康门禁后台配置自定义Wiegand规则,步骤如下:
- 进入门禁管理后台的「韦根参数配置」界面,选择自定义Wiegand格式
- 按以下参数配置:
- 总位宽选择
26bit - 开启「去除首尾奇偶校验位」选项
- 卡号解析规则选择字段拆分模式:FC位宽设为
8bit,CC位宽设为16bit - 拼接规则设为「FC在前、CC在后,不足位补前导零」,FC补零到3位,CC补零到5位
- 总位宽选择
- 保存配置后重启设备,此时海康读取的卡号就会和ZKTeco的
04303012完全一致。
如果需要统一为海康的2821060格式,也可以调整ZKTeco设备的韦根解析规则,将24bit有效位整体转十进制即可,可根据实际使用场景选择统一方向。
内容的提问来源于stack exchange,提问作者Mihail
相关产品推荐
相关产品推荐

