韦根数据格式.docx

上传人:b****4 文档编号:6591708 上传时间:2023-05-10 格式:DOCX 页数:14 大小:77.18KB
下载 相关 举报
韦根数据格式.docx_第1页
第1页 / 共14页
韦根数据格式.docx_第2页
第2页 / 共14页
韦根数据格式.docx_第3页
第3页 / 共14页
韦根数据格式.docx_第4页
第4页 / 共14页
韦根数据格式.docx_第5页
第5页 / 共14页
韦根数据格式.docx_第6页
第6页 / 共14页
韦根数据格式.docx_第7页
第7页 / 共14页
韦根数据格式.docx_第8页
第8页 / 共14页
韦根数据格式.docx_第9页
第9页 / 共14页
韦根数据格式.docx_第10页
第10页 / 共14页
韦根数据格式.docx_第11页
第11页 / 共14页
韦根数据格式.docx_第12页
第12页 / 共14页
韦根数据格式.docx_第13页
第13页 / 共14页
韦根数据格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

韦根数据格式.docx

《韦根数据格式.docx》由会员分享,可在线阅读,更多相关《韦根数据格式.docx(14页珍藏版)》请在冰点文库上搜索。

韦根数据格式.docx

韦根数据格式

韦根数据输出格式

 

一、韦根数据输出的基本概念:

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

输出‘0’时:

DATA0线上出现负脉冲;

输出‘1’时:

DATA1线上出现负脉冲;

具体时序如下:

例如:

数据‘1011’时序如下:

DATA0

 

DATA1

 

TP

TW

负脉冲宽度TP=100us;周期TW=1000us

二、几种韦根输出格式:

韦根26位输出格式:

ECCCCCCCCCCCCCCCCCCCCCCCCO

 

12BIT偶校验12BIT奇校验

E/O:

偶/奇校验位。

C:

卡片ID号。

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

 

韦根34位输出格式:

ECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCO

 

16BIT偶校验16BIT奇校验

 

E/O:

偶/奇校验位。

C:

卡片ID号。

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

 

韦根36位输出格式:

ECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCIIO

 

17BIT偶校验17BIT奇校验

 

E/O:

偶/奇校验位。

C:

卡片ID号。

I:

 2位卡片发行码。

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

 

韦根44位输出格式:

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCIIIIIIIIXXXX

C:

卡片ID号。

I:

 8位卡片发行码。

XXXX:

LRC校验。

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

 

韦根26韦根34发送程序

WG26协议

Wiegand26格式:

各数据位的含义:

第1位:

为输出数据2—13位的偶校验位

第2—9位:

ID卡的HID码的低8位

第10-25位:

ID卡的PID号码

第26位:

为输出数据14-25位的奇校验位

数据输出顺序:

    HID码和PID码均为高位在前,低位在后

例:

一张ID卡内容为:

HID:

32769  PID:

34953     (卡面印:

37  001,34953)

相应的二进制为:

HID:

1000000000000001      (只输出低8位)

PID:

1000100010001001

输出如下:

12        910                    25 26

0000000011000100010001001   1

  |HID_L  |       PID            |

输出端D0、D1时序:

图示:

(1) D0、D1在没有数据输出时均保持高电平;

(2) 输出数据位时间为420uS(TL),如输出为0,D0拉低420uS(TL)后为高电平,若输出为1,则D1拉低420uS(TL)后为高电平;

输出数据位之间的间隔时间为2mS(TL),如输出00:

D0拉低420uS(TL)后为高电2mS(TL),再拉低为低电平420uS(TL),然后释放为高电平;

WG34协议

Wiegand34格式:

各数据位的含义:

第1位:

为输出第2—17位的偶校验位

第2-17位:

ID卡的HID码

第18-33位:

ID卡的PID号码

第34位:

为输出第18-33位的奇校验位

数据输出顺序:

    HID码和PID码均为高位在前,低位在后

例:

一张ID卡内容为:

HID:

32769  PID:

34953      (卡面印:

37  001,34953)

相应的二进制为:

000

HID:

1000000000000001

PID:

1000100010001001

输出如下:

12                    1718                    33 34

010000000000000011000100010001001  0

|      HID_L           |         PID           |

输出端D0、D1时序:

图示:

(1) D0、D1在没有数据输出时均保持高电平;

(2) 输出数据位时间为420uS(TL),如输出为0,D0拉低420uS(TL)后为高电平,若输出为1,则D1拉低420uS(TL)后为高电平;

(3) 输出数据位之间的间隔时间为2mS(TL),如输出00:

D0拉低420uS(TL)后为高电2mS(TL),再拉低为低电平420uS(TL),然后释放为高电平;

发送程序如下:

Str[]中存的是4字节卡号。

voidSend_Weigand34(unsignedchar*str)

{

      unsignedcharone_num=0;

      unsignedchareven=0;

      unsignedcharodd=0;

      unsignedcharcheck_temp,i;

      check_temp=*str;

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

      {

             if(check_temp&0×01)

                    one_num++;

             check_temp>>=1;

      }

      check_temp=*(str+1);

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

      {

             if(check_temp&0×01)

                    one_num++;

             check_temp>>=1;

      }

      if(one_num%2)

             even=1;

      else

             even=0;

      one_num=0;

      check_temp=*(str+2);

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

      {

             if(check_temp&0×01)

                    one_num++;

             check_temp>>=1;

      }

      check_temp=*(str+3);

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

      {

             if(check_temp&0×01)

                    one_num++;

             check_temp>>=1;

      }

      if(one_num%2)

             odd=0;

      else

             odd=1;

      one_num=0;

      WG_DATA0=1;

      WG_DATA1=1;

      Delay_1ms

(2);

      if(even)

      {

             WG_DATA1=0;                   /*偶校验位为1*/

             Delay_50us(8);

             WG_DATA1=1;

      }

      else

      {           

             WG_DATA0=0;                  /*偶校验位为0*/

             Delay_50us(8);

             WG_DATA0=1;

      }

      Delay_1ms

(2);                       /*延时2ms*/

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

      {

             WG_DATA0=1;

             WG_DATA1=1;

             if(str[0]&0×80)

             {

                    WG_DATA1=0;

                    Delay_50us(8);

                    WG_DATA1=1;

             }

             else

             {

                    WG_DATA0=0;

                    Delay_50us(8);

                    WG_DATA0=1;

             }

             (*(long*)&str[0])<<=1;

             Delay_1ms

(2);              /*延时2ms*/

      }

      WG_DATA0=1;

      WG_DATA1=1;

      if(odd)

      {

             WG_DATA1=0;

             Delay_50us(8);

             WG_DATA1=1;

      }

      else

      {           

             WG_DATA0=0;

             Delay_50us(8);

             WG_DATA0=1;

      }

      Delay_1ms

(2);  

}

/*

韦根26发送函数

*/

voidSend_Weigand26(unsignedchar*str)

{

      unsignedcharone_num=0;

      unsignedchareven=0;

      unsignedcharodd=0;

      unsignedcharcheck_temp,i;

      check_temp=*str;

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

      {

             if(check_temp&0×01)

                    one_num++;

             check_temp>>=1;

      }

      check_temp=*(str+1);

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

      {

             if(check_temp&0×80)

                    one_num++;

             check_temp<<=1;

      }

      if(one_num%2)

             even=1;

      else

             even=0;

      one_num=0;

      check_temp=*(str+1);

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

      {

             if(check_temp&0×01)

                    one_num++;

             check_temp>>=1;

      }

      check_temp=*(str+2);

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

      {

             if(check_temp&0×01)

                    one_num++;

             check_temp>>=1;

      }

      if(one_num%2)

             odd=0;

      else

             odd=1;

      one_num=0;

      WG_DATA0=1;

      WG_DATA1=1;

      Delay_1ms

(2);

      if(even)

      {

             WG_DATA1=0;                   /*偶校验位为1*/

             Delay_50us(8);

             WG_DATA1=1;

      }

      else

      {           

             WG_DATA0=0;                  /*偶校验位为0*/

             Delay_50us(8);

             WG_DATA0=1;

      }

      Delay_1ms

(2);                       /*延时2ms*/

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

      {

             WG_DATA0=1;

             WG_DATA1=1;

             if(str[0]&0×80)

             {

                    WG_DATA1=0;

                    Delay_50us(8);

                    WG_DATA1=1;

             }

             else

             {

                    WG_DATA0=0;

                    Delay_50us(8);

                    WG_DATA0=1;

             }

             (*(long*)&str[0])<<=1;

             Delay_1ms

(2);              /*延时2ms*/

      }

      WG_DATA0=1;

      WG_DATA1=1;

      if(odd)

      {

             WG_DATA1=0;

             Delay_50us(8);

             WG_DATA1=1;

      }

      else

      {           

             WG_DATA0=0;

             Delay_50us(8);

             WG_DATA0=1;

      }

      Delay_1ms

(2);  

}

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2