1、_韦根数据输出格式一、韦根数据输出的基本概念:韦根数据输出由二根线组成,分别是DATA0和DATA1;二根线分别将0 或1输出。输出0时:DATA0 线上出现负脉冲;输出1时:DATA1 线上出现负脉冲;具体时序如下:例如:数据1011 时序如下:DATA0DATA1TP-可编辑修改 -_TW负脉冲宽度 TP=100 us ;周期 TW=1000 us二、几种韦根输出格式:韦根 26 位输出格式:ECCCC CCCC CCCCCCCC CCCC CCCCO12BIT 偶校验12BIT 奇校验E/O :偶 /奇校验位。C:卡片 ID 号。以上数据从左至右顺序发送。韦根 34 位输出格式:-可编辑
2、修改 -_ECCCC CCCC CCCC CCCCCCCC CCCC CCCC CCCCO16BIT 偶校验16BIT 奇校验E/O :偶 /奇校验位。C:卡片 ID 号。以上数据从左至右顺序发送。韦根 36 位输出格式:ECCCC CCCC CCCC CCCC CCCCC CCCC CCCC CCCI IO17BIT 偶校验17BIT 奇校验E/O :偶 /奇校验位。C:卡片 ID 号。-可编辑修改 -_I:2 位卡片发行码。以上数据从左至右顺序发送。韦根 44 位输出格式:CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC IIII IIII XXXXC:卡片
3、ID 号。I:8 位卡片发行码。XXXX :LRC 校验。以上数据从左至右顺序发送。韦根 26 韦根 34 发送程序WG26 协议Wiegand 26格式:各数据位的含义:第 1 位: 为输出数据2 13 位的偶校验位-可编辑修改 -_第 29 位: ID 卡的 HID 码的低 8 位第 10-25 位: ID 卡的 PID 号码第 26 位: 为输出数据 14-25 位的奇校验位数据输出顺序:HID 码和 PID 码均为高位在前,低位在后例:一张 ID 卡内容为:HID : 32769PID : 34953( 卡面印: 2147584137001, 34953 )相应的二进制为:HID :
4、1000 0000 0000 0001( 只输出低 8 位 )PID :1000 1000 1000 1001输出如下:1 29 10252600 0 0 00 0 0 11 0 0 01 0 0 01 0 0 01 0 0 11| HID_L|PID|输出端 D0 、 D1 时序:-可编辑修改 -_图示:(1) D0 、D1 在没有数据输出时均保持高电平;(2) 输出数据位时间为420uS(TL) ,如输出为0,D0 拉低 420uS(TL) 后为高电平,若输出为1,则 D1 拉低 420uS(TL)后为高电平;输出数据位之间的间隔时间为2mS(TL) ,如输出 00 : D0 拉低 420
5、uS(TL) 后为高电2mS(TL) ,再拉低为低电平420uS(TL) ,然后释放为高电平;WG34 协议Wiegand 34格式:各数据位的含义:第 1 位: 为输出第2 17 位的偶校验位-可编辑修改 -_第 2-17 位: ID 卡的 HID 码第 18-33 位: ID 卡的 PID 号码第 34 位: 为输出第 18-33 位的奇校验位数据输出顺序:HID 码和 PID 码均为高位在前,低位在后例:一张 ID 卡内容为:HID : 32769PID : 34953( 卡面印: 2147584137001, 34953 )相应的二进制为:00011000010000111111001
6、0HID : 1000 0000 0000 0001PID :1000 1000 1000 1001输出如下:1 217 18333401 0 0 00 0 0 00 0 0 00 0 0 11 0 0 01 0 0 01 0 0 01 0 0 10|HID_L|PID|-可编辑修改 -_输出端 D0 、 D1 时序:图示:(1) D0 、D1 在没有数据输出时均保持高电平;(2) 输出数据位时间为420uS(TL) ,如输出为0,D0 拉低 420uS(TL) 后为高电平,若输出为1,则 D1 拉低 420uS(TL)后为高电平;(3) 输出数据位之间的间隔时间为 2mS(TL) ,如输出
7、00 : D0 拉低 420uS(TL) 后为高电 2mS(TL) ,再拉低为低电平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
8、 = 1;if(one_num % 2 )even = 1;elseeven = 0;one_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;el
9、seWG_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 & 0 80)WG_DATA1 = 0;Delay_50us(8);WG_DATA1 = 1;elseWG_DATA0 = 0;Delay_50us(8);WG_DATA0 = 1;-可编辑修改 -_(*(long*)&str0) = 1;Delay_1ms(2);/* 延时 2ms*/WG_DATA0 = 1;WG_DAT
10、A1 = 1;if(odd)WG_DATA1 = 0;Delay_50us(8);WG_DATA1 = 1;elseWG_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 = 0;unsigned char check_temp,i;check_temp = *str;for(i = 0;i
11、 = 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;elseodd = 1;one_num = 0;WG_DATA0 = 1;W
12、G_DATA1 = 1;Delay_1ms(2);if(even)WG_DATA1 = 0;/*偶校验位为1*/Delay_50us(8);WG_DATA1 = 1;-可编辑修改 -_elseWG_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 & 0 80)WG_DATA1 = 0;Delay_50us(8);-可编辑修改 -_WG_DATA1 = 1;elseWG_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;elseWG_DATA0 = 0;Delay_50us(8);WG_DATA0 = 1;Delay_1ms(2);-可编辑修改 -_Welcome ToDownload !欢迎您的下载,资料仅供参考!-可编辑修改 -