《韦根数据格式29062.pdf》由会员分享,可在线阅读,更多相关《韦根数据格式29062.pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、韦根数据输出格式 一、韦根数据输出的基本概念:韦根数据输出由二根线组成,分别是 DATA0 和 DATA1;二根线分别将0或1输出。输出0时:DATA0 线上出现负脉冲;输出1时:DATA1 线上出现负脉冲;具体时序如下:例如:数据 1011 时序如下:DATA0 DATA1 TP TW 负脉冲宽度 TP=100 us;周期 TW=1000 us 二、几种韦根输出格式:韦根 26 位输出格式:E CCCC CCCC CCCC CCCC CCCC CCCC O 12BIT偶校验 12BIT奇校验 E/O:偶/奇校验位。C:卡片 ID 号。以上数据从左至右顺序发送。韦根 34 位输出格式:E CC
2、CC CCCC CCCC CCCC CCCC CCCC CCCC CCCC O 16BIT 偶校验 16BIT奇校验 E/O:偶/奇校验位。C:卡片 ID 号。以上数据从左至右顺序发送。韦根 36 位输出格式:E CCCC CCCC CCCC CCCC C CCCC CCCC CCCC CCCI I O 17BIT 偶校验 17BIT奇校验 E/O:偶/奇校验位。C:卡片 ID 号。I:2 位卡片发行码。以上数据从左至右顺序发送。韦根 44 位输出格式:CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC IIII IIII XXXX C:卡片 ID 号。I:8 位卡
3、片发行码。XXXX:LRC 校验。以上数据从左至右顺序发送。韦根 26 韦根 34 发送程序 WG26 协议 Wiegand 26 格式:各数据位的含义:第 1 位:为输出数据 213 位的偶校验位 第 29 位:ID 卡的 HID 码的低 8 位 第 10-25 位:ID 卡的 PID 号码 第 26 位:为输出数据 14-25 位的奇校验位 数据输出顺序:HID 码和 PID 码均为高位在前,低位在后 例:一张 ID 卡内容为:HID:32769 PID:34953 (卡面印:37 001,34953)相应的二进制为:HID:1000 0000 0000 0001 (只输出低 8 位)PI
4、D:1000 1000 1000 1001 输出如下:1 2 9 10 25 26 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 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),然
5、后释放为高电平;WG34 协议 Wiegand 34 格式:各数据位的含义:第 1 位:为输出第 217 位的偶校验位 第 2-17 位:ID 卡的 HID 码 第 18-33 位:ID 卡的 PID 号码 第 34 位:为输出第 18-33 位的奇校验位 数据输出顺序:HID 码和 PID 码均为高位在前,低位在后 例:一张 ID 卡内容为:HID:32769 PID:34953 (卡面印:37 001,34953)相应的二进制为:000 HID:1000 0000 0000 0001 PID:1000 1000 1000 1001 输出如下:1 2 17 18 33 34 0 1 0 0
6、0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 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 字节卡号。voi
7、d Send_Weigand34(unsigned char*str)unsigned char one_num=0;unsigned char even=0;unsigned char odd=0;unsigned char check_temp,i;check_temp=*str;for(i=0;i=1;check_temp=*(str+1);for(i=0;i=1;if(one_num%2)even=1;else even=0;one_num=0;check_temp=*(str+2);for(i=0;i=1;check_temp=*(str+3);for(i=0;i=1;if(one_
8、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(str0&080)WG_DATA1=0;Delay_50us(8);WG_DATA1=1;else WG_DATA0=0;
9、Delay_50us(8);WG_DATA0=1;(*(long*)&str0)=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 发送函数*/void Send_Weigand26(unsigned char*str)unsigned char one_num=0;unsigned char even=0;unsigned char odd=
10、0;unsigned char check_temp,i;check_temp=*str;for(i=0;i=1;check_temp=*(str+1);for(i=0;i 4;i+)if(check_temp&080)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=1;check_temp=*(str+2);for(i=0;i=1;if(one_num%2)odd=0;else odd=1;one_num=0;WG_DATA0=1;WG_DATA1=1;
11、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(str0&080)WG_DATA1=0;Delay_50us(8);WG_DATA1=1;else WG_DATA0=0;Delay_50us(8);WG_DATA0=1;(*(long*)&str0)=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);