韦根协议以及示例程序
- 格式:docx
- 大小:260.89 KB
- 文档页数:6
技术应用64摘 要 :介绍射频卡中标准的韦根( Wiegand )26接口协议,重点介绍在单片机中对这种通讯协议的实现的软硬件设计方法。
关键词:单片机 Wiegand HID PID 射频卡Wiegand传输协议,是国际标准的射频卡数据传输协议,Motorola,HID,EM等国际知名电子厂商都遵从该协议,在国内又称”韦根” “维庚” “维根” 协议。
W i e g a n d 协议有很多格式,在常见的射频卡中,标准的26-bit 是被广泛采用的一个工业标准,门禁控制系统中基本上都采用这种格式。
Wiegand 基本格式标准韦根输出是由26位二进制数组成,每一位的含义如图1所示:其中:BIT1: 第2—13位的偶校验位BIT2-9: 对应与电子卡HID码的低8位BIT10-25: 应电子卡的PID号码BIT26: 第14-25位的奇校验位以图1为例,H I D 的16进制数为0x 1A ,对应于十进制数为26。
HID的16进制数为0x8484,对应于十进制数为33924。
即这个卡的编码通常写为:26.33924。
传输协议中提到的HID号码即Hidden ID code 隐含码,PID号码即Public ID code 公开码。
PID很容易在读出器的输出结果中找到,但HID在读出器的输出结果中部分或者全部隐掉。
HID是一个非常重要的号码,它不仅存在于卡中,也存在于读卡器中。
如果卡中的HID与读卡器中的HID不同的话,那么这张卡就无法在这个读卡器上正常工作。
因此,在上述标准26位韦根格式中,只包含了电子卡HID 码的低8位,即对应于韦根输出的第1位到第8位,实际上电子卡的HID码为16位。
在上述标准26位韦根格式中,最高位和最低位为奇/偶校验。
奇/偶校验(E C C )是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种,其原理如下:如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则,这个校验位就是“0”,这样就可以保证传送的数据满足奇校验的要求。
韦根数据输出格式一、韦根数据输出的基本概念:韦根数据输出由二根线组成,分别是DATA0 和DA TA1 ;二根线分别将‘0’或‘1’输出。
输出‘0’时:DATA0线上出现负脉冲;输出‘1’时:DATA1线上出现负脉冲;具体时序如下:例如:数据‘1011’时序如下:DATA0DATA1TW负脉冲宽度TP=100 us;周期TW=1000 us二、几种韦根输出格式:E/O:偶/奇校验位。
C:卡片ID号。
以上数据从左至右顺序发送。
E/O:偶/奇校验位。
C:卡片ID号。
以上数据从左至右顺序发送。
E/O:偶/奇校验位。
C:卡片ID号。
I:2位卡片发行码。
以上数据从左至右顺序发送。
CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC IIII IIII XXXX C:卡片ID号。
I:8位卡片发行码。
XXXX:LRC校验。
以上数据从左至右顺序发送。
韦根26韦根34发送程序WG26协议Wiegand 26格式:各数据位的含义:第 1 位:为输出数据2—13位的偶校验位第2—9 位: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 ( 只输出低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),再拉低为低电平420uS(TL),然后释放为高电平;WG34协议Wiegand 34格式:各数据位的含义:第 1 位:为输出第2—17位的偶校验位第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 1000 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),再拉低为低电平420uS(TL),然后释放为高电平;发送程序如下:Str[]中存的是4字节卡号。
韦根协议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位二进制数组成,每一位的含义如下:1 2 9 10 25 26X X X X X X X X X X X X X X X X X X X X X X X X X X 二进制第1位为2—13位的偶校验位第2—9位对应与电子卡HID码的低8位第10-25位对应电子卡的PID号码第26位为14-25位的奇校验位这26位数据在读出器的韦根输出线D0,D1上输出。
韦根协议简介韦根门禁通讯协议一、前言:Wiegand(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度韦根格式主要定义是数据传输方式:Data0和Data1两根数据线分别传输0和1.现在应用最多的是26bit,34 bit,36bit,44bit等等。
二、韦根数据输出的基本概念:二、韦根数据输出由二根线组成,分别是DATA0 和 DATA1 ;二根线分别将‘0’或‘1’输出。
输出‘0’时:DATA0线上出现负脉冲;输出‘1’时:DATA1线上出现负脉冲;负脉冲宽度TP=100微妙;周期TW=1600微妙具体时序如下:例如:数据‘01000’的时序如下:三、韦根26位输出格式:韦根26位输出格式:E XXXX XXXX XXXX XXXX XXXX XXXX O前12BIT偶校验前12位后12位后12BIT奇校验以上数据从左至右顺序发送。
高位在前。
如果电卡的地区码位2个字符,即8位则可用那设置255个地区码((15x16)+15=255);电子卡的卡号位4个字符,即16位则可设置65536个卡号((15x16x16x16)+(15x16x16)+(15x16)+15= 65,535)。
以电子卡为标准26位韦根格式为例,假设电子卡号码为:地区码:01 卡号:0001韦根输出为:1 0000 0001 0000 0000 0000 0001 0前12BIT偶校验前12位后12位后12BIT奇校验地区码卡号四、韦根26接收:韦根的接收对时间的实时性要求比较高,如果用查询的方法接收会出现丢帧的现象:假设查询到DATA0为0时主程序正在指向其他任务,等主程序执行完该任务时DATA0已经变为1了,那么这样就导致了一个0 bit丢了,这样读出的卡号肯定奇偶校验通不过,所以表现出CPU接收不到ID模块发送的卡号了。
唯一的办法是在外部中断里接收每个bit。
1530 Old Oakland Road, Suite 10001846-002 Rev. E Pyramid SeriesPyramid Series Proximity readers can communicate via Wiegand 1 or Magnetic Stripe data formats. Wiegand is a commonly used interface between readers and control panels used in access control, security, time and attendance, and other related industries. Pyramid Series readers follow the Wiegand standard specified by the Security Industry Association's (SIA) Access Control Standard Protocol for the 26-Bit Wiegand Reader Interface document. Manufacturers have adopted the Wiegand standard to establish a common Wiegand interface. This provides a level of compatibility and interoperability for readers and control panels that can be used by consultants, specifiers, and end users when setting product design or system installation criteria. To this end the Pyramid Series offers several approaches for implementing the Wiegand format.NOTE: If you are enrolling cards for a “hybrid” site (one using both Pyramid series and HID credentials), it is possible to have duplicate card coding (i.e. identical format, facility code, and ID number).1.0Wiegand ConnectionsPyramid Series readers can be connected to virtually any control panel that conforms to Wiegand format standards. All connections between the reader and control panel are made through the reader's cable. Consult Table 1 and Figure 1 for wiring instructions.1.The term “Wiegand™” is used throughout this document to indicate a standard data output format for the Pyramid Series Proximity Readers. This is not to be confused with Wiegand swipe readers and cards.Table 1: Wiring ConnectionsWire ColorFunction SilverShield GreenData 0BlueBeeper RedReader Power BlackReader Ground BrownSingle LED Control Line (Red LED)OrangeSecond LED Control Line (Green LED)White Data 11530 Old Oakland Road, Suite 10001846-002 Rev. EP y r a m i d S e r i e s Figure 1: Wiring Connections 2.0Data Signals Figure 2 displays the timing pattern for data bits sent by the reader to the access control panel. This timing pattern falls within the Wiegand guidelines as proscribed by the SIA's Access Control Standard Protocol for the 26-Bit Wiegand Reader Interface (a Pulse Width time between 20 uS and 100 uS, and a Pulse Interval time between 200 uS and 20 mS).The Data 1 and Data 0 signals are held at a logic high level (above the V oh level) until the reader is ready to send a data stream. The reader places data as asynchronous low-going pulses (below the V ol level) on the Data 1 or Data 0 lines to transmit the data stream to the access control panel (the "saw-teeth" in Figure 2). The Data 1 and Data 0 pulses will not overlap or occur simultaneously. Table 2 provides the minimum and maximum allowable pulse width times (the duration of a pulse) and pulse interval times (the time between pulses) for Pyramid Series Readers.Figure 2: Data Bit Timing Pattern1530 Old Oakland Road, Suite 10001846-002 Rev. E Pyramid Series3.0Wiegand FormatsPyramid Series readers feature pass-through technology. This means that any reader will read any and all formatting data programmed to any of the Pyramid Series credentials. Pyramid Series readers can be shipped from stock because unlike other proximity manufacturers, there is no format matching between readers and credentials.3.126-Bit Wiegand FormatThe composition of the open de facto industry standard 26 Bit Wiegand format contains 8 bits for the facility code field and 16 bits for the ID number field. Mathematically these 8 facility code bits allow for a total of just 256 (0 to 255) facility codes, while the 16 ID number bits allow for a total of only 65,536 (0 to 65,535) individual ID's within each facility code. Due to the mathematical limitations of the 26-bit Wiegand format, code duplication might occur. Table 3 provides a summary the 26-bit Wiegand format.Table 2: Pulse TimesSymbolDescription Pyramid Series Reader Typical Time TpwPulse Width Time 100 µs Tpi Pulse Interval Time 1 msTable 3: 26-bit Wiegand FormatBit NumberPurpose Bit 1Even parity over bits 2 to 13Bits 2 to 9Facility code (0 to 255); Bit 2 is MSB Bits 10 to 25ID Number (0 to 65,535); Bit 10 is MSB Bit 26Odd parity over bits 14 to 251530 Old Oakland Road, Suite 10001846-002 Rev. E P y r a m i d S e r i e s 3.2Pyramid Wiegand Format Several alternatives exist for customers who require more codes. The first is to switch to Keri's standard 39 bit Pyramid format. This 39 bit Wiegand format contains 17 bits for the facility code field and 20 bits for the ID number field. Mathematically these 17 facility code bits allow for a total of 131,072 (0 to 131,071) facility codes, while the 20 ID number bits allow for a total of 1,048,576 (0 to 1,048,575) individual ID's within each facility code. Since there are so many facility codes in the Pyramid format, a new facility code may be selected for each project. Additionally the large number of ID's per facility code makes the Pyramid format ideal for very large projects. For added security, Keri Systems tracks credential coding to ensure that no duplication occurs. Table 4 provides a summary of the Pyramid Wiegand format.3.3Custom Wiegand FormatsThe second alternative is to create a custom Wiegand format. Typically, up to 64 bits are available for creating a custom Wiegand format. With certain limitations, formats with greater than 64 bits may be created. If a customer currently has a custom Wiegand format from Wiegand or from other proximity manufacturers, Keri can normally match that format. Although the customer is primarily responsible for custom format card coding, as an added benefit Keri Systems tracks card coding for additional security. Table 5 provides an example of one possible custom Wiegand format.Table 4: Pyramid Wiegand FormatBit NumberPurpose Bit 1Even parity over bits 2 to 19Bits 2 to 18Facility code (0 to 131,071); Bit 2 is MSB Bits 19 to 38ID Number (0 to 1,048,575); Bit 19 is MSB Bit 39Odd parity over bits 20 to 38Table 5: Example of a Custom Wiegand Format Bit Number Purpose Bit 1Even parity over bits 2 to 22Bits 2 to 9OEM code (0 to 255); Bit 2 is MSB Bits 10 to 21Facility code (0 to 4,096); Bit 10 is MSB Bits 22 to 43ID Number (0 to 524,287); Bit 22 is MSB Bit 44Odd parity over bits 23 to 431530 Old Oakland Road, Suite 10001846-002 Rev. E Pyramid Series3.4The 8-bit Burst Format of the P-600 Rocky Proximity Reader and Key-pad The P-600 reader is capable of transmitting data in the 26-bit Wiegand format described above, but its default data transmission configuration is Wiegand 8-bit burst. The timing pattern for data bits generated in the 8-bit burst format follows the pattern described in the Data Signals section beginning on page 2. In 8-bit burst mode, each keystroke prompts the reader to transmit 8 bits of data according to Table 6.For further details on the Pyramid Series product line or on creating custom Wiegand formats, please contact Keri Systems.Table 6: Wiegand 8-bit Burst DataFormatKeypadEntryBinary Data Decimal Equivalent 011110000240111100001225211010010210311000011195410110100180510100101165610010110150710000111135801111000120901101001105*010*******#010*******1530 Old Oakland Road, Suite 10001846-002 Rev. EPy r a m i d S e r i e s This page is intentionally left blank.。
韦根协议及其应用目录第一章韦根协议简介 (3)1.传感器原理介绍 (3)2.数据输出的基本概念 (3)3.韦根6 位输出格式 (4)4.韦根26 接收 (4)5.韦根接口定义 (4)6.特殊说明: (5)第二章韦根协议的应用 (6)1 .Wiegand 接口硬件设计 (6)2.流程图 (6)3.发送源程序 (7)第一章 韦根协议简介Wiegand (韦根)协议是由摩托罗拉公司制定的一种通讯协议,它合用于涉及门禁控 制系统的读卡器和卡片的许多特性,其协议并没有定义通讯的波特率、也没有定义数据长 度韦根格式主要定义是数据传输方式: Data0 和 Data1 两根数据线分别传输 0 和 1,现在应 用最多的是 26bit ,34bit ,36bit ,44bit 等等,其中标准 26-bit 格式是一个开放式的格式, 任何人都可以购买某一特定格式的 HID 卡,并且这些特定格式的种类是公开可选的, 26-Bit 格式就是一个广泛使用的工业标准, 并且对所有 HID 的用户开放, 现在几乎所有的门禁控 制系统都接受 26-Bit 格式的标准。
1.传感器原理介绍韦根传感器是由一根双稳态磁敏感功能合金丝和缠绕其外的感应线圈组成的。
其工 作原理是:在交变磁场中,当平行于敏感丝的某极性(例如 n 极)磁场达到触发磁感应强 度时,敏感丝中的磁畴受到激励会发生运动,磁化方向瞬间转向同一方向,同时在敏感丝 周围空间磁场也发生瞬间变化, 由此在感应线圈中感生出一个电脉冲。
此后若该磁场减弱, 敏感丝磁化方向将保持稳定不变,感应线圈也无电脉冲输出,但当相反极性( s 极)磁场 增强触发磁感应强度时,敏感丝磁化方向又瞬间发生翻转,并在感应线圈中感生出一个方 向相反的电脉冲。
如此反复,韦根传感器便将交变磁场的磁信号转换成交变电信号。
2.数据输出的基本概念韦根协议又称韦根码,韦根码在数据的传输中只需两条数据线,一条为 DATA0,另一 条为 DATA1。
韦根协议是什么智能楼宇门禁系统是怎么产生的韦根协议,是由由摩托罗拉公司制定的一种通讯协议,它是用于涉及门禁控制系统的读卡器和卡片的许多特性。
在这个房地产行业飞速发展的时代,以及标志型楼盘的全数字化,智能门禁系统也随之进入了人们的视线。
那么,韦根协议是什么?智能楼宇门禁系统是怎么产生的呢?一起来了解下吧!韦根协议,是由由摩托罗拉公司制定的一种通讯协议,它是用于涉及门禁控制系统的读卡器和卡片的许多特性。
在这个房地产行业飞速发展的时代,以及标志型楼盘的全数字化,智能门禁系统也随之进入了人们的视线。
那么,韦根协议是什么?智能楼宇门禁系统是怎么产生的呢?一起来了解下吧!一、韦根协议是什么Wiegand(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度。
它有很多格式,标准的韦根26-bit是最常用的格式。
此外,还有34-bit、36-bit、44-bit等格式。
而标准的26-bit格式是一个开放式的格式,这就意味着任何支持韦根26-bit输入\输出的设备都可以互相连接进行通信。
1、韦根协议的传输Wiegand接口通常由3根线组成,它们是:DATA0,DATA1和GND。
韦根码在数据的传输中只需两条数据线,一条为DATA0,另一条为DATA1。
协议规定,两条数据线在无数据时均为高电平,如果DATA0为低电平代表数据0,DATA1为低电平代表数据1(低电平信号低于1V,高电平信号大于4V)。
数据信号波形如下图所示。
2、韦根协议存在的隐患韦根协议是一种单工通信协议,在门禁系统中,韦根数据只能由读卡器至控制器单向传输。
当读卡器识读到有效卡后,将卡片的钥匙信息以韦根协议的方式传输至控制器,控制器验证钥匙信息有效后打开门。
在这一过程中,控制器并未对读卡器的合法性进行验证,即未确定韦根数据的来源是不是系统内合法的读卡器。
如果韦根数据在传输的过程中被非法人员窃取,并模拟读卡器再次发送此韦根数据给控制器,就会对控制器形成欺骗,导致后者认为收到了有效卡的钥匙信息而打开门。
gpio 读取韦根协议读取韦根协议的方法通常需要通过硬件连接来实现。
首先,将读卡器(如韦根协议脉冲输出接口)的信号引脚连接到树莓派的GPIO引脚上。
然后,使用树莓派的编程语言(如Python)来读取GPIO引脚的状态,以获取韦根协议的数据。
具体步骤如下:1. 在树莓派上安装相应的编程语言(如Python)及相关的GPIO库(如RPi.GPIO),用于控制GPIO引脚。
2. 了解韦根协议的传输方式和协议规范。
韦根协议通常使用脉冲宽度来表示不同的数据,根据协议规范解码数据。
3. 根据韦根协议的规范,使用GPIO库中的函数来监听所连接的GPIO引脚的状态变化。
例如,在Python中,可以使用RPi.GPIO库的`add_event_detect`方法来监测GPIO的状态变化。
4. 在状态变化的回调函数中,根据韦根协议的规范,解码读取到的数据。
下面是一个简单的Python示例代码,用于读取GPIO引脚上的韦根协议数据:```pythonimport RPi.GPIO as GPIO# 设置GPIO引脚模式为BCM编码方式GPIO.setmode(GPIO.BCM)# 设置GPIO引脚input_pin = 18GPIO.setup(input_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)def handle_input(channel):# 这里是读取韦根协议的逻辑,根据具体协议规范进行解码并处理数据data = # 根据协议规范解码数据print('Received data:', data)# 监听GPIO引脚状态变化GPIO.add_event_detect(input_pin, GPIO.FALLING,callback=handle_input, bouncetime=200)# 等待中断事件try:while True:passexcept KeyboardInterrupt:pass# 清除GPIO设置GPIO.cleanup()```请注意,以上代码中的输入引脚(`input_pin`)需要根据具体的硬件连接进行配置。
标准韦根26通讯格式1、前言:Wiegand(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度韦根格式主要定义是数据传输方式:Data0和Data1两根数据线分别传输0和1。
现在应用最多的是26bit,34bit,36bit,44bit等等。
2、维根数据输出的基本概念:维根数据输出由二根线组成,分别是DATA0和DATA1;二根线分别将0或1输出。
输出0时:DATA0线上出现负脉冲;输出1时:DATA1线上出现负脉冲;负脉冲宽度TP=100微妙;周期TW=1600微妙3、维根26位输出格式:标准韦根输出是由26位二进制数组成,每一位的含义如下:1 2 9 10 13 25 26E X X X X X X X X X X X X X X X X X X X X X X X X O 二进制第1位为2-13位的偶校验位第2-9位对应与电子卡HID码的低8位第10-25位对应电子卡的PID号码第26位为14-25位的奇校验位以上数据从左至右顺序发送。
高位在前。
例如:一只HID:16385,PID:00004的电子卡其26位韦根输出为:1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0检验位HID =16385(二进制的低8位)PID = 4(二进制)检验位这26位数据在读出器的韦根输出线DATA0,DATA1上输出。
DATA0,DATA1在没有数据输出时都保持+5V高电平。
若输出为0,则DATA0拉低一段时间,若输出为1,则DATA1拉低一段时间。
两个电子卡韦根输出之间的最小间隔为0.25秒。
4、维根26接收:韦根的接收对时间的实时性要求比较高,如果用查询的方法接收会出现丢帧的现象:假设查询到DATA0为0时主程序正在指向其他任务,等主程序执行完该任务时DATA0已经变为1了,那么这样就导致了一个0?bit丢了,这样读出的卡号肯定奇偶校验通不过,所以表现出CPU接收不到ID模块发送的卡号了。
韦根协议以及示例程序 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-
韦根协议——I D卡号读取2010-03-31 20:52
最近在做门禁系统,第一次听说韦根协议。
我第一阶段要做的事情就是用韦根读卡器将ID卡的卡号读出来,当我拿到读卡器和ID卡的时候感觉无从下手。
可当我把韦根协议都研究透之后想想也不过如此而已,下面简单的介绍一下韦根协议。
而标准26-bit 格式是一个开放式的格式,这就意味着任何人都可以购买某一特定格式的HID卡,并且这些特定格式的种类是公开可选的。
26-Bit格式就是一个广泛使用的工业标准,并且对所有HID的用户开放。
几乎所有的门禁控制系统都接受标准的26-Bit格式。
一、Wiegand(韦根)接口
Wiegand接口通常由3根线组成,它们是:数据0(Data0),数据1(Data1)和Data return。
这3条线负责传输Wiegand信号。
D0,D1在没有数据输出时都保持+5V 高电平。
若输出为0,则D0拉低一段时间,若输出为1,则D1拉低一段时间。
如
图:
二、标
准26位
Wiegand
通讯协
议
标准韦
根输出
是由26
位二进
制数组成,每一位的含义如下:
1 2 9 10 25 26X X X X X X X X X X X X X X X X X X X X X X X X X X 二进制
第1位为2—13位的偶校验位第2—9位对应与电子卡HID码的低8位第10-25位对应电子卡的PID号码第26位为14-25位的奇校验位这26位数据在读出器的韦根输出线D0,D1上输出。
三、HID和PID
HID号码即Hidden ID code 隐含码,PID号码即Public ID code 公开码。
PID很容易在读出器的输出结果中找到,但HID在读出器的输出结果中部分或者全部隐掉。
HID是一个非常重要的号码,它不仅存在于卡中,也存在于读卡器中。
如果卡中的HID与读卡器中的HID不同的话,那么这张卡就无法在这个读卡器上正常工作。
四、Wiegand接口硬件设计
可以将Wiegand接口的Data0和
Data1两个输出接到MCU的两个IO脚
上,采用查询的方式接收数据,但这
样接收并不可靠。
比较好的方法是将
Data0和Data1接到MCU的两个中断
引脚上,采用中断的方式接收数据。
如图:
示例程序:
#include<>
#include<>
#include<>
#define DELAY_TIME 60 /*经实验,不要小于50!否则可能造成时序混乱*/
#define TRUE 1
#define FALSE 0
#define uchar unsigned char
#define uint unsigned int
sbit DATA1=P3^2; //韦根读卡器的DATA1接单片机的P3^2
sbit DATA0=P3^3; //韦根读卡器的DATA0接单片机的P3^3
bit Even; // 偶检验位
bit Odd; // 奇检验位
bit CheakEven=0;//偶检验
bit CheakOdd=1;//奇检验
uchar Cnt=0;//
uchar WG[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//接收韦根数据26位
uchar WGstr[3]={0,0,0};//存韦根ID卡卡号的HID和PID码,其中HID码为8位即一字节,PID码16位两字节
uchar i;
uchar j=0;
void Init()
{
EA=0;
TMOD=0x20;
TL1=0xfd;
TH1=0xfd;//设置波特率为9600的定时器1为方式2以及初始值
PCON=0x00;
SCON=0xd8; //设置串口方式
IT0=1; //设置外部中断0为下降沿触发方式
IT1=1; //设置外部中断1为下降沿触发方式
EX0=1; //开外部中断0
EX1=1; //开外部中断1
TR1=1; //开定时器1
EA=1; //开所有中断
}
void Weigand(uchar *str) //把26位韦根数据转换为3字节数据存储
{
uchar k;
for(k=0;k<26;k++)
{
if(k<=0) //读偶检验位
{
if(str[k]==0)
Even=0;
else
Even=1;
}
if(k>=25) //读奇检验位
{
if(str[k]==0)
Odd=0;
else
Odd=1;
}
if(k<=8) //读HID码低8位
{
if(str[k]==0x00)
WGstr[0]|=0x00;
else
{
WGstr[0]|=0x01;
CheakEven=~ CheakEven; // 根据HID码低8位1的个数来确定偶检验位是1还是0
}
if(k<8)
WGstr[0]=WGstr[0]<<1;
}
if(k<=16) //读PID码高8位
{
if(str[k]==0x00)
WGstr[1]|=0x00;
else
{
WGstr[1]|=0x01;
CheakOdd=~CheakOdd; //// 根据PID码高8位1的个数来确定奇检验位是1还是0
}
if(k<16)
WGstr[1]=WGstr[1]<<1;
}
else //读PID码的低8位
{
if(str[k]==0x00)
WGstr[2]|=0x00;
else
{
WGstr[2]|=0x01;
CheakOdd=~CheakOdd; // 根据PID码低8位1的个数来确定奇检验位是1还是0
}
if(k<24)
WGstr[2]=WGstr[2]<<1;
}
}
}
void main()
{
//P1=0x55;
Init();//调用初始化函数
Cnt=0;
while(1)
{
if(Cnt>=26)
{
EA=0; //关中断以免外部中断的干扰
Weigand(WG);//将读到的26位韦根数据转换位3字节格式
EA=1;
for(j=0;j<3;j++) //用串口调试工具显示读到的卡号
{
SBUF=WGstr[j];
while(TI==0);
TI=0;
WGstr[j]=0;
}
Cnt=0;
}
}
}
void DATA0_Interrupt(void) interrupt 2 using 1 //外部中断1读DATA0数据即0
{
WG[Cnt]=0x00;
Cnt++;
}
void DATA1_Interrupt(void) interrupt 0 using 2 //外部中断0读DATA1数据即1
{
WG[Cnt]=0x01;
Cnt++;
}。