1、韦根数据输出格式一、韦根数据输出的基本概念:韦根数据输出由二根线组成,分别是 DATA0 和 DATA1 ;二根线分别将0或1输出。输出0时:DATA0 线上出现负脉冲;输出1时:DATA1 线上出现负脉冲;具体时序如下:例如:数据1011时序如下:DATA0 DATA1TPTW负脉冲宽度 TP=100 us;周期 TW=1000 us二、几种韦根输出格式:韦根 26 位输出格式 :E CCCC CCCC CCCC CCCC CCCC CCCC O12BIT 偶校验 12BIT 奇校验E/O:偶/奇校验位。C: 卡片 ID 号。以上数据从左至右顺序发送。韦根 34 位输出格式 :E CCCC
2、CCCC CCCC CCCC CCCC CCCC CCCC CCCC O16BIT 偶校验 16BIT 奇校验E/O:偶/奇校验位。C: 卡片 ID 号。以上数据从左至右顺序发送。韦根 36 位输出格式 :E CCCC CCCC CCCC CCCC C CCCC CCCC CCCC CCCI I O17BIT 偶校验 17BIT 奇校验E/O:偶/奇校验位。C: 卡片 ID 号。I: 2 位卡片发行码。以上数据从左至右顺序发送。韦根 44 位输出格式 :CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC IIII IIII XXXXC: 卡片 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 ( 卡面印: 2147584137 001, 34953 )相应的二进制为:HID:1000 0000 0000 0001 (
4、只输出低 8 位 )PID:1000 1000 1000 1001输出如下:1 2 9 10 25 260 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),再拉低
5、为低电平420uS(TL),然后释放为高电平;WG34 协议Wiegand 34 格式:各数据位的含义:第 1 位: 为输出第 217 位的偶校验位第 2-17 位: ID 卡的 HID 码第 18-33 位: ID 卡的 PID 号码第 34 位: 为输出第 18-33 位的奇校验位数据输出顺序:HID 码和 PID 码均为高位在前,低位在后例:一张 ID 卡内容为:HID:32769 PID:34953 ( 卡面印:2147584137 001, 34953 )相应的二进制为:000110000100001111110010HID:1000 0000 0000 0001PID:1000 1
6、000 1000 1001输出如下:1 2 17 18 33 340 1 0 0 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),再拉
7、低为低电平 420uS(TL),然后释放为高电平;发送程序如下:Str中存的是 4 字节卡号。void 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;elseeven = 0;one_
8、num = 0;check_temp = *(str + 2);for(i = 0;i = 1;check_temp = *(str + 3);for(i = 0;i = 1;if(one_num % 2 )odd = 0;elseodd = 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_1m
9、s(2); /*延时 2ms*/for(i = 0;i = 1;check_temp = *(str + 1);for(i = 0;i = 1;check_temp = *(str + 2);for(i = 0;i = 1;if(one_num % 2 )odd = 0;elseodd = 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(
10、8);WG_DATA0 = 1;Delay_1ms(2); /*延时 2ms*/for(i = 0;i 24;i+)WG_DATA0 = 1;WG_DATA1 = 1;if(str0 Delay_50us(8);WG_DATA1 = 1;elseWG_DATA0 = 0;Delay_50us(8);WG_DATA0 = 1;(*(long*)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);