韦根协议交流
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
韦根协议交流
韦根线缆的线色对应含义如下:
数据输出的基本概念
韦根26一次传输3个字节,韦根34一次传输4个字节.。
韦根码在数据的传输中只需两条数据线,一条为DATA0,另一条为DATA1。协议规定,两条数据线在无数据时均为+5V 高电平,如果DATA0为低电平代表数据0,DATA1为低电平代表数据1(低电平信号低于1V ,高电平信号大于4V ),数据信号波形如图1.1所示。图1.1中脉冲宽度在20μs 到200μs 之间,两个脉冲间的时间间隔在200μs 到20ms 之间。
韦根26输出格式
标准韦根输出是由26位二进制数组成,每一位的含义如下:
E XXXX XXXX XXXX XXXX XXXX XXXX O 二进制
第1位为2-13位的偶校验位
第2-9位对应与电子卡HID 码的低8位
第10-25位对应电子卡的PID 号码 图1.1 数据信号波形图
数据20~200s μ200s ~200ms μ
第26位为14-25位的奇校验位
以上数据从左至右顺序发送,高位在前。
如果电子卡的地区码位2个字符,即8位则可用那设置255个地区码((15×16)+15=255);电子卡的卡号位4个字符,即16位则可设置65536个卡号((15×16×16×16)+(15×16×16)+(15×16)+15=65,535)。
例如:一个HID:16385,PID:00004的电子卡其26位韦根输出为:
1 00000001 0000000000000100 0
偶检验位HID=16385(二进制的低8位)PID=4(二进制)奇检验位
这26位数据在读出器的韦根输出线DA TA0,DATA1上输出。
DA TA0,DATA1在没有数据输出时都保持+5V高电平。若输出为0,则DATA0拉低一段时间,若输出为1,则DATA1拉低一段时间。两个电子卡韦根输出之间的最小间隔为0.25秒。
偶校验负责校验bit位2-13;
奇校验负责校验bit位14-25;
//MSB 偶校验:bit "1"的个数为偶数,则为0
// bit "1"的个数为奇数,则为1
//LSB 奇校验:bit "1"的个数为奇数,则为0
// bit "1"的个数为偶数,则为1 当奇偶校验通过后,再将bit位2-9划分为家族码,bit位10-25划分为卡ID;
举例如下:卡号为6630A2C5,分2次wiegand输出卡号,先输出6630,再输出A2C5;
HID和PID
HID号码即Hidden ID code 隐含码,又成为设备的家族码,从数学意义上说,8位家族码只能容纳256个设备种类编号(0~255)。而16位的设备ID码在同一个设备种类之下只能容纳65536个不同的设备号(0~65535)。由于26位维根码本身的这种容量限制,在数据处理过程中可能会出现编码的重复。
PID号码即Public ID code 公开码,又称为设备ID号,
PID很容易在读出器的输出结果中找到,但HID在读出器的输出结果中部分或者全部隐掉。HID是一个非常重要的号码,它不仅存在于卡中,也存在于读卡器中。如果卡中的HID与读卡器中的HID不同的话,那么这张卡就无法在这个读卡器上正常工作。
韦根26接收
韦根的接收对时间的实时性要求比较高,如果用查询的方法接收会出现丢帧的现象:假设查询到DATA0为0时主程序正在指向其它任务,等主程序执行完该任务时DA TA0已经变
为1了,那么这样就导致了一个0bit丢了,这样读出的卡号肯定奇偶校验通不过,所以表现出MCU接收不到I C模块发送的卡号。唯一的办法是在外部中断里接收每个bit。
Wiegand 26格式:
各数据位的含义:
第 1 位:为输出数据2—13位的偶校验位
第 2—9 位: ID卡的HID码的低8位
第10-25位: ID卡的PID号码
第 26 位:为输出数据14-25位的奇校验位
Wiegand 34格式:
各数据位的含义:
第 1 位:为输出第2—17位的偶校验位
第 2-17 位: ID卡的HID码
第18-33位: ID卡的PID号码
第 34 位:为输出第18-33位的奇校验位
当前辨脸通产品中状态,有2组韦根接口,一个负责输入,一个负责输出:
/* 韦根输入设备,read操作 */
/dev/wiegand
/* 韦根输出设备,write操作 */
/dev/wiegand_out
在驱动程序中已经进行了韦根26与韦根34的自适应适配,且读取到的数据也在驱动中进行了奇偶校验。韦根协议只能传递卡号信息,没有确认与鉴权机制!
应用程序在InputThreadProc线程中,打开/dev/wiegand设备,将读取到的卡号进行比对后,进行相应处理;韦根输出内容为门禁系统对应的ID卡号,剩下的工作由门禁系统来完成。