韦根协议范本模板.docx

上传人:b****2 文档编号:1977639 上传时间:2022-10-25 格式:DOCX 页数:11 大小:33.33KB
下载 相关 举报
韦根协议范本模板.docx_第1页
第1页 / 共11页
韦根协议范本模板.docx_第2页
第2页 / 共11页
韦根协议范本模板.docx_第3页
第3页 / 共11页
韦根协议范本模板.docx_第4页
第4页 / 共11页
韦根协议范本模板.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

韦根协议范本模板.docx

《韦根协议范本模板.docx》由会员分享,可在线阅读,更多相关《韦根协议范本模板.docx(11页珍藏版)》请在冰豆网上搜索。

韦根协议范本模板.docx

韦根协议范本模板

韦根协议

Wiegand协议是国际上统一的标准,是由摩托罗拉公司制定的一种通讯协议.它适用于涉及门禁控制系统的读卡器和卡片的许多特性。

它有很多格式,标准的26-bit应该是最常用的格式。

此外,还有34-bit、37—bit等格式.而标准26-bit格式是一个开放式的格式,这就意味着任何人都可以购买某一特定格式的HID卡,并且这些特定格式的种类是公开可选的.26—Bit格式就是一个广泛使用的工业标准,并且对所有HID的用户开放。

几乎所有的门禁控制系统都接受标准的26—Bit格式。

简介

  Wiegand协议是国际上统一的标准,有很多格式,标准的26-bit应该是最常用的格式。

此外,还有34-bit、37-bit等格式。

但是安防行业并不愿意把这些格式公开,而安防公司也常常变化这些格式来保证产品的保密性。

而标准26—bit格式是一个开放式的格式,这就意味着任何人都可以购买某一特定格式的HID卡,并且这些特定格式的种类是公开可选的。

26—Bit格式就是一个广泛使用的工业标准,并且对所有HID的用户开放。

几乎所有的门禁控制系统都接受标准的26—Bit格式。

Wiegand(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度韦根格式主要定义是数据传输方式:

Data0和Data1两根数据线分别传输0和1.现在应用最多的是26bit,34bit,36bit,44bit等等。

韦根数据输出的基本概念

  韦根数据输出由二根线组成,分别是DATA0和DATA1;二根线分别为‘0’或‘1’输出.

  输出‘0’时:

DATA0线上出现负脉冲;

  输出‘1’时:

DATA1线上出现负脉冲;

  负脉冲宽度TP=100微秒;周期TW=1600微秒;

  具体时序如下:

  例如:

数据‘01000’的时序如下:

韦根26位输出格式

  标准韦根输出是由26位二进制数组成,每一位的含义如下:

129102526

XXXXXXXXXXXXXXXXXXXXXXXXXX二进制

第1位为2—13位的偶校验位

第2—9位对应与电子卡HID码的低8位

第10—25位对应电子卡的PID号码

第26位为14—25位的奇校验位

这26位数据在读出器的韦根输出线D0,D1上输出。

——-----—--——---——-—-—————-—-——-————--—-————-—--—————-—————-—-—---——---—---——-—

韦根26位输出格式:

  EXXXXXXXXXXXXXXXXXXXXXXXXO

  前12BIT偶校验前12位后12位后12BIT奇校验

  以上数据从左至右顺序发送.高位在前。

  如果电卡的地区码位2个字符,即8位则可用那设置255个地区码((15x16)+15=255);电子卡的卡

  号位4个字符,即16位则可设置65536个卡号

  ((15x16x16x16)+(15x16x16)+(15x16)+15=65,535)。

  以电子卡为标准26位韦根格式为例,假设电子卡号码为:

  地区码:

01卡号:

0001

  韦根输出为:

  10000000100000000000000010

  前12BIT偶校验前12位后12位后12BIT奇校验

  地区码卡号

-—--—------——--—-—---------—----—-—---—-———--—----—-—--—---———--—-——————-—-————---——--

标准韦根输出是由26位二进制数组成,每一位的含义如下:

 

12910132526 

EXXXXXXXXXXXXXXXXXXXXXXXXO二进制

第1位为2—13位的偶校验位 

第2—9位对应与电子卡HID码的低8位 

第10-25位对应电子卡的PID号码 

第26位为14-25位的奇校验位 

以上数据从左至右顺序发送。

高位在前。

 

例如:

一只HID:

16385,PID:

00004的电子卡其26位韦根输出为:

 

10000000100000000000001000

检验位HID=16385(二进制的低8位)PID=4(二进制)检验位 

这26位数据在读出器的韦根输出线DATA0,DATA1上输出。

 

DATA0,DATA1在没有数据输出时都保持+5V高电平。

若输出为0,则DATA0拉低一段时间,若输出为1,则DATA1拉低一段时间。

 

两个电子卡韦根输出之间的最小间隔为0.25秒。

 

韦根26接收

  韦根的接收对时间的实时性要求比较高,如果用查询的方法接收会出现丢帧的现象:

假设查询到DATA0为0时主程序正在指向其他任务,等主程序执行完该任务时DATA0已经变为1了,那么这样就导致了一个0bit丢了,这样读出的卡号肯定奇偶校验通不过,所以表现出CPU接收不到ID模块发送的卡号了.

  唯一的办法是在外部中断里接收每个bit。

(仅仅在中断里获得开始接收wiegand数据还不行,因为这是尽管给开始接收wiegand数据标志位置位了,但是主程序还在执行其他代码而没有到达查询开始接收wiegand数据标志位这条指令)。

  五.韦根接口定义:

  Wiegand接口界面由三条导线组成:

数据0(Data0),数据1(Data1)和Datareturn。

这3条线负责传输Wiegand信号.D0,D1在没有数据输出时都保持+5V高电平。

若输出为0,则D0拉低一段时间,若输出为1,则D1拉低一段时间。

如图:

两个电子卡韦根输出之间的最小间隔为0.25秒。

  DATA0:

暂定,兰色,P2.5(通常为绿色)。

  DATA1:

暂定,白色,P2。

6(通常为白色)。

  GND:

(通常为黑色),暂定信号地.

  当安装商拿到读卡器时,他们希望在读卡器和门禁控制面板的连接点(终端)上都能够看到这三个名称.

  目前所有的标准型读卡器都提供可选择的Wiegand接口.这三条线负责传送Wiegand数据,也被称为Wiegand信号。

  六.发送程序:

  //—-—-—--——-—--—------—-——--————--—---—--——----———----——

  //功能:

把数组封包成韦根26的格式,并发送出去

  //原理是把每个字节的低4位取出,来计算这个字节的值

  //入口:

str=要封包的数组,

  //出口:

DATA0=P3.0;DATA1=P3.1

  //设计:

大鹏,大鹏艾迪,2006/4/11

  //————-—--—-—-—-——-—————-——-—————----—--——-——-—-—----—--

  voidsend_wiegand26(uchar*str)

  {

  //|wiegand[0]|wiegand[1]|wiegand[2]|

  //|*str*(str+1)|*(str+2)*(str+3)|*(str+4)*(str+5)|

  uchardatai;

  staticuchardataone_num;//计算1的个数

  uchardatacheck_temp;//韦根包奇偶效验中间暂存

  bitdataeven;//韦根包前12位偶效验

  bitdataodd;//韦根包后12位齐效验

  staticuchardatawiegand[3];//韦根包数据24位

  //—————-—-——--——-—----—-——-——---——端口方向定义

  P3M0=0x00;//普通I/O口

  P3M1=0x00;

  //================================数组到韦根包的转化

  wiegand[0]=wiegand[0]|((*str)〈<4);//原理是把每个字节的低4位取出,来计算这个字节的值

  wiegand[0]=wiegand[0]|(*(str+1)&0x0f);

  //-—-—--——----—-———--—----——-—-——-计算前8位1的个数,为偶效验用

  check_temp=wiegand[0];

  for(i=0;i<8;i++)

  {

  if(check_temp&0x01)//(check_temp&0x01)

  {

  one_num++;

  }

  check_temp〉>=1;

  }

  wiegand[1]=wiegand[1]|(*(str+2)<〈4);

  //———-------——————--—--——----——-——计算接下来的4位1的个数,为偶效验用

  check_temp=wiegand[1];

  for(i=0;i<4;i++)

  {

  if(check_temp&0x80)

  {

  one_num++;

  }

  check_temp<<=1;

  }

  //-—--——--———-—-------—-—--—--—-——判断1的个数

  one_num%2==0?

(even=0):

(even=1);

  one_num=0;

  wiegand[1]=wiegand[1]|(*(str+3)&0x0f);

  //-—--——----———--————--—-—————--—-计算接下来的4位1的个数,为奇效验用

  check_temp=wiegand[1];

  for(i=0;i〈4;i++)

  {

  if(check_temp&0x01)

  {

  one_num++;

  }

  check_temp〉〉=1;

  }

  wiegand[2]=wiegand[2]|(*(str+4)<<4);

  wiegand[2]=wiegand[2]|(*(str+5)&0x0f);

  //——---—-———-————-—--—-—-—--------计算接下来的8位1的个数,为奇效验用

  check_temp=wiegand[2];

  for(i=0;i<8;i++)

  {

  if(check_temp&0x01)

  {

  one_num++;

  }

  check_temp>〉=1;

  }

  //-—————————-———-—---—-——---—-—--—判断1的个数

  one_num%2==0?

(odd=1):

(odd=0);

  one_num=0;

  //================================启动发送,用定时器做时间延时

  //-——-—-——--————-—-—---—-—-———-—--韦根输出端初始化

  WG_DATA0=1;

  WG_DATA1=1;

  //——-—----———----—-——--———————-———发送偶效验

  if(even)

  {

  WG_DATA1=0;

  //---—--——--—-----—---——-—-延时100us

  TR0=0;

  TH0=(65536—78)/256;//定时100us

  TL0=(65536—78)%256;

  TF0=0;

  ET0=0;

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1