韦根6协议以及示例程序
- 格式:doc
- 大小:73.50 KB
- 文档页数:5
韦根协议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。
用户使用手册广州优库电子有限公司本手册适用于EP3000Y、EP5000Y、EP6000Y、EP7000Y、EP8000Y关于这本手册请您在使用本手册描述的产品前仔细阅读手册的所有内容,以保障产品安全有效地使用。
建议将本手册妥善保存,以备下次使用查询。
警示请勿自行拆卸产品或撕毁产品上的封标,否则广州优库电子有限公司不承担保修或更换产品的责任。
本手册中的图片仅供参考,如有个别图片与实际产品不符,请以实际产品为准。
对于产品的改良更新,广州优库电子有限公司保留随时修改文档而不另行通知的权利。
本手册包含的所有信息受版权的保护,本公司保留所有权利,未经书面许可,任何单位和个人不得以任何方式或理由对本文档全部或部分内容进行任何形式的摘抄、复制或与其他产品捆绑使用、销售。
广州优库电子有限公司对本手册拥有最终解释权。
服务信息如果您需要更多的技术支持,请打电话或者发邮件给我们,我们很高兴为您服务。
版本记录目录一、产品简介 (10)1.1主要特点 (10)1.2打开包装 (10)1.3通讯端口 (10)1.4开机、关机、待机和重启 (11)1.5维护与保养 (11)1.6读码技巧 (11)二、条码设置 (12)2.1设置标识 (12)2.2基础设置条码 (12)2.2.1打开/关闭配置码 (12)2.2.2恢复出厂默认设置 (13)2.2.3读取版本号 (13)2.2.4产品用户配置 (13)2.2.5上位机和记事本上传设置 (14)2.2.6接口模式设置 (14)2.2.7韦根接口配置——韦根协议格式 (16)2.2.8串口设置 (16)2.2.9照明灯控制 (18)2.2.10控制字符转义 (19)2.2.11GS控制字符替换(需打开控制字符转义功能) (19)2.2.13结束符设置 (20)2.2.14汉字输出模式 (21)2.2.15发票功能设置 (21)2.2.16发票类型设置 (22)2.2.17反色条码选项 (22)2.2.18虚拟键盘 (22)2.3蜂鸣器、LED指示灯设置条码 (23)2.3.1音量大小设置 (23)2.3.2扫描器启动提示音设置 (23)2.3.3成功解码提示音设置 (24)2.3.4成功解码提示音频率(音调)设置 (24)2.3.5成功解码提示音时长设置 (24)2.3.6错误警告音频率(音调)设置 (25)2.3.7LED指示灯 (25)2.4重码检测和读码时长设置条码(在自感应模式下起作用) (25)2.5USB键盘发送速度设置 (26)2.6条码内容中含回车换行符处理(USB键盘) (27)2.7USB键盘大小写输出控制 (27)2.8键盘布局设置 (28)2.9条码类型选择 (31)2.9.1打开/关闭所有条码 (31)2.9.3Codabar起始/结束字符设置 (32)2.9.4Codabar长度限制设置 (32)2.9.5Code39打开关闭设置 (32)2.9.6Code39校验位 (33)2.9.7Code39Full ASCII (33)2.9.8Code39长度限制设置 (33)2.9.10Interleaved2of5(ITF5) (34)2.9.11Interleaved2of5(ITF5)校验位 (34)2.9.12Interleaved2of5(ITF5)长度选择 (35)2.9.13Interleaved2of5长度限制设置 (36)2.9.14Industrial2of5(工业25码)(4-24位) (36)2.9.15Industrial2of5长度限制设置 (36)2.9.17Matrix2of5长度限制设置 (37)2.9.19Standard25长度限制设置 (38)2.9.20Standard25校验码设置 (38)2.9.21Code93 (38)2.9.22Code93长度限制设置 (39)2.9.23Code11(未启用) (39)2.9.24Code11校验位输出(未启用) (39)2.9.25Code11校验选择(未启用) (39)2.9.26Code11长度限制设置(未启用) (40)2.9.28Code128长度限制设置 (40)2.9.29GS1-128(需要开启CODE128) (41)2.9.30ISBT-128 (41)2.9.31Plessey (41)2.9.32Plessey长度限制设置 (41)2.9.33Plessey校验选择 (42)2.9.34MSI plessey (42)2.9.35MSI plessey长度限制设置 (42)2.9.36MSI plessey输出校验设置 (43)2.9.37MSI plessey校验方式选择设置 (43)2.9.38UPC-A (44)2.9.39UPC-A检验位 (44)2.9.40UPC-A转EAN-13 (44)2.9.41UPC-E (44)2.9.42UPC-E检验位 (45)2.9.43UPC-E扩展UPC-A (45)2.9.44EAN/JAN-8 (45)2.9.45EAN/JAN-13 (46)2.9.46UPC/EAN/JAN附加码 (46)2.9.47EAN13转ISBN (46)2.9.48EAN13转ISSN (46)2.9.49GS1DataBar(RSS14)(Stacked) (47)2.9.50GS1DataBar(RSS14)(Stacked)AI(01)字符发送设置 (47)2.9.51GS1DataBar Limited (47)2.9.52GS1DataBar Limited AI(01)字符发送设置 (47)2.9.53GS1DataBar Expanded (48)2.9.54PDF417 (48)2.9.55Micro PDF417 (48)2.9.56QR Code (49)2.9.57Micro QR (49)2.9.58Data Matrix (49)2.10自定义前缀设置 (49)2.11自定义后缀设置 (50)2.12条码前后缀顺序选择 (51)2.13Code ID设置 (51)附录 (53)附录1数据及编辑条码 (53)附录2条码类型Code ID表 (53)附录3不可见字符ASCII表 (60)附录4可见字符ASCII表 (62)附录4默认设置表 (62)附录6控制字符集(USB键盘模式) (73)附录7控制字符集(串口及USB虚拟串口) (75)部分功能配置说明及示例 (77)一、产品简介本手册适用的广州优库电子有限公司产品型号有EP3000Y、EP5000Y、EP6000Y、EP7000Y、EP8000Y,采用二维影像扫描方式识别1D,2D条码。
韦根协议——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和PIDHID号码即Hidden ID code 隐含码,PID号码即Public ID code 公开码。
PID很容易在读出器的输出结果中找到,但HID在读出器的输出结果中部分或者全部隐掉。
HID是一个非常重要的号码,它不仅存在于卡中,也存在于读卡器中。
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`)需要根据具体的硬件连接进行配置。
邯郸市建设局关于开展智慧工地建设工作的通知文章属性•【制定机关】邯郸市建设局•【公布日期】2020.09.01•【字号】•【施行日期】2020.09.01•【效力等级】地方规范性文件•【时效性】现行有效•【主题分类】城乡建设综合规定正文邯郸市建设局关于开展智慧工地建设工作的通知各县(市、区)住建局、冀南新区城乡规划建设交通局、邯郸经济技术开发区建设局,各建设(开发)、施工、监理单位,机关各处室、直属各单位:为进一步加强我市建筑工地规范化管理,提升行业监管效能和服务水平,根据国务院办公厅《关于促进建筑业持续健康发展的意见》(国办发〔2017〕19号)、住建部《关于印发2016-2020年建筑业信息化发展纲要的通知》(建质函〔2016〕183号)、省住建厅关于印发《河北省住房城乡建设行业三年(2019-2021)信息化工作方案》的通知(冀建办节科〔2019〕22号)等文件精神,依据省住建厅发布的《智慧工地建设技术标准》(DB13(J)/T 8312-2019),决定在全市范围内开展智慧工地建设工作,现将有关事项通知如下:一、总体要求按照建筑业高质量发展要求,综合利用物联网、互联网、大数据等现代技术手段,对工程建设项目施工现场进行信息化、智能化、精细化管理,实行监管部门和项目参建各方对建筑工地的齐抓共管,实现建筑工地智慧化管理目标。
二、实施范围东区所有建筑工地、主城区新开工项目建筑工地(在建项目逐步实施),并逐步向各县(市、区)延伸。
三、建设模式建设“邯郸市智慧工地管理系统”(以下简称智慧工地系统),该智慧工地系统主要由系统软件和工地智能基础设施组成。
(一)智慧工地系统软件由我局委托具有开发实力的运营商负责开发。
(二)工地智能基础设施(主要包括信息采集设备、网络基础设施、技术平台、控制机房、信息应用终端等。
采集设备按照附件1-6基本技术标准和数据接口协议自行配备,设备的安装、使用、拆除按照附件7程序办理)由项目单位按要求自行负责。
标准韦根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模块发送的卡号了。
韦根协议——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 26
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 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<string.h>
#include<reg52.h>
#include<intrins.h>
#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++;
}。