0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术WinCE工控主板对韦根信号的支持

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-04 10:45 次阅读

Wiegand(韦根)协议是由摩托罗拉公司定制的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性。韦根数据输出由两条数据线DATA0和DATA1,和公共的信号地GND组成。在没有数据输出时,DATA0和DATA1都保持高电平(典型为+5V电平),若输出'0'时,DATA0输出低脉冲而DATA1保持为高电平,输出'1'时,DATA1输出低脉冲而DATA0保持为高。典型的低脉冲宽度为50us,输出每一bit之前的间隔为1ms(如下图,实际的信号电平和时序由实际的韦根读卡器决定)。

韦根协议包含很多种格式来传输串行数据,英创公司工控主板支持最常用的韦根26 bit和韦根34 bit格式。

韦根26是已经广泛使用的工业标准,一个“韦根包”有26位数据,第1位为第1到第13位的偶检验,最后1位为第14到第26位的奇校验。中间24位为数据位。

韦根26格式定义

对于韦根34格式,即一个“韦根包”有34位数据,第1位为第1到第17位的偶检验,最后1位为第18到第34位的奇校验。中间32位为数据位。

英创公司在WinCE内核中添加了韦根协议解析的设备驱动程序,应用程序只需要打开"WIG1:"设备,然后调用DeviceIoControl等待驱动程序返回(调用DeviceIoControl,应用程序会挂起,不会占用CPU资源),当驱动程序接收到韦根数据后,会自动检查奇偶校验,然后由DeviceIoControl返回接收情况,可能返回的原因有:

#defineWG_DATA_VALID 0 // 接收到有效的韦根数据

#defineWG_PARITY_ERROR 1 // 奇偶校验错误

#defineWG_TIMEOUT 2 // 接收数据超时

#defineWG_BIT_LENGTH_ERROR 3 // 不能识别的韦根格式

如果DeviceIoControl返回为0(WG_DATA_VALID),表示接收到有效的韦根数据,应用程序通过ReadFile函数从驱动读取数据,如果读回3个字节,表示为韦根 26格式,如果读回4字节,表示韦根 34格式。ReadFile读回的数据不包含韦根协议中的头尾奇偶校验位,仅为有效的数据位。

如果ReadFile函数返回1个字节,表示接收到韦根读卡器按键信号,驱动程序目前支持4 bit(16个状态)的键盘信号检测

韦根信号需要正确连接到英创工控主板后,驱动程序才能正常工作,英创各个主板连接韦根信号的定义如下:

ESM680x / ESM335x /
ESM928x / EM335x
EM9280 / EM9281 / EM9287
第一路韦根("WIG1:") Wiegand_DATA0 GPIO14 GPIO26
Wiegand_DATA1 GPIO15 GPIO27
第一路韦根("WIG2:") Wiegand_DATA0 GPIO16
Wiegand_DATA1 GPIO17

如前所述,韦根读卡器通常输出5V TTL电平,而英创工控主板的GPIO要求输入电平不能超过3.3V,所以韦根读卡器输出的信号需要经过转换后才能与英创主板的GPIO相连。下图是一个简单的5V转3.3V的电平转的电路。

下面是应用程序读取第一路韦根信号("WIG1:")的示例代码:

#include"stdafx.h"

#include

#include

#include

#include"bsp_drivers.h"

#defineWG_DATA_VALID 0

#defineWG_PARITY_ERROR 1

#defineWG_TIMEOUT 2

#defineWG_BIT_LENGTH_ERROR 3

DWORDWaitWiegandEvent(HANDLE hIRQ, DWORD dwTimeout)

{

DWORD dwReturn = 0;

if(!DeviceIoControl(hIRQ, // file handle to the driver

IOCTL_WAIT_FOR_WIG, // I/O control code

&dwTimeout, // in buffer

sizeof(DWORD), // in buffer size

&dwReturn, // out buffer

sizeof(DWORD), // out buffer size

NULL, // pointer to number of bytes returned

NULL)) // ignored (=NULL)

{

dwReturn = WAIT_FAILED;

}

returndwReturn;

}

int_tmain(intargc, _TCHAR* argv[])

{

HANDLE hWIG;

DWORD dwReturn, dwNumberOfBytesRead, i;

BOOL bRet;

BYTE WIGData[4];

printf("Wiegand(26/34) Demo.\r\n");

hWIG = CreateFile(_T("WIG1:"),

GENERIC_READ|GENERIC_WRITE,

FILE_SHARE_READ|FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

FILE_FLAG_RANDOM_ACCESS,

NULL);

if(hWIG == INVALID_HANDLE_VALUE)

{

printf("Can not open WIG1:\r\n");

return-1;

}

while(TRUE)

{

dwReturn = WaitWiegandEvent(hWIG, INFINITE);

switch( dwReturn )

{

caseWG_DATA_VALID:

dwNumberOfBytesRead = 0;

bRet = ReadFile(hWIG, WIGData,sizeof(WIGData),

&dwNumberOfBytesRead, NULL);

if(bRet)

{

if(dwNumberOfBytesRead == 3 )

printf("WG26:0x");

elseif(dwNumberOfBytesRead == 4)

printf("WG34:0x");

elseif(dwNumberOfBytesRead == 1)

printf("Key:0x");

for( i = 0; i < dwNumberOfBytesRead; i++)

printf("%x", WIGData[i]);

printf("\r\n");

}

break;

caseWG_PARITY_ERROR:

printf("Parity checking error!\r\n");

break;

caseWG_TIMEOUT:

printf("Timeout!\r\n");

break;

caseWG_BIT_LENGTH_ERROR:

printf("Unsupported bit length!\r\n");

break;

default:;

}

}

CloseHandle(hWIG);

return0;

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3523

    浏览量

    88343
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6084

    浏览量

    35164
收藏 人收藏

    评论

    相关推荐

    ​什么是国产工控主板,国产工控主板的特点有哪些?

    什么是国产工控主板呢?国产工控主板是工业计算机的主板,是一种计算机系统的硬件设备,是专门为工业控制场景设计和生产的电路板。它在国内的研发和制
    的头像 发表于 11-07 10:29 75次阅读

    国产工控主板,信产业发展新引擎

    在当今科技飞速发展的时代,信产业正成为国家战略的重要支撑。而我们的国产工控主板,以其卓越的性能和可靠的品质,为信产业的发展注入强大动力。国产工控
    的头像 发表于 11-06 10:29 121次阅读

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 343次阅读

    工控主板有哪些特点?

    动、防尘防水等设计,能够适应工业场景中的各种恶劣条件,具有较长的使用寿命。  扩展性:工控主板通常具有丰富的扩展接口,可以方便地连接各种工业设备和传感器,满足不同工业控制需求。 工业标准支持
    的头像 发表于 10-10 08:55 192次阅读

    国产化背景下的工控主板发展现状

    ,是信息技术应用创新产业的简称,于2016年“信工委会”(信息技术应用创新工作委员会)提出,目的就是要推动我们国内软硬件关键技术的研发
    的头像 发表于 09-21 16:15 295次阅读

    探索国产工控主板:接口类型全解析

    和创新的设计理念,为工业自动化的浪潮注入了源源不断的活力。以下是对 国产工控主板 常见硬件接口的一次深入而专业的解析: 1.PCIe接口 作为工控主板中的高速数据传输通道,PCIe接口
    的头像 发表于 08-13 10:37 458次阅读
    探索国产<b class='flag-5'>工控</b><b class='flag-5'>主板</b>:接口类型全解析

    工控主板在环保智能设备中的应用

    工控主板在环保智能设备中的应用,对于环境监测、资源管理、污染控制等方面起到了至关重要的作用。以下是工控主板在环保智能设备中的一些具体应用:
    的头像 发表于 07-17 15:54 273次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>在环保智能设备中的应用

    浅析安卓工控主板的优势

    安卓工控主板作为专为工业控制领域设计的硬件平台,相较于普通商用主板,拥有诸多优势,以满足工业环境对稳定、可靠、长期运行的严格要求。以下是安卓工控主板
    的头像 发表于 06-27 14:50 292次阅读

    使用工控主板时该注意哪些事项?

    最近大家都在频繁问一个问题就是工控主板在什么人为情况下容易出现故障,从而造成工控主板的损坏,那今天小编就来讲讲,我们在使用工控
    的头像 发表于 06-05 16:01 339次阅读
    使用<b class='flag-5'>工控</b><b class='flag-5'>主板</b>时该注意哪些事项?

    工控主板容易出现故障的原因有哪些?

    最近大家都在频繁问一个问题就是工控主板在什么人为情况下容易出现故障,从而造成工控主板的损坏,那今天小编就来讲讲,我们在使用工控
    的头像 发表于 05-17 10:57 308次阅读

    工控机主板和普通商用级主板有什么区别?

    工控机主板和普通商用级主板都属于工业主板范畴,其与普通主板拥有本质区别,下面就分析一下工控主板
    的头像 发表于 05-13 15:07 491次阅读

    工控主板的性能指标有哪些?

    工控主板是工业控制领域中的关键组成部分,它承载着工控系统的核心功能。因此,工控主板的性能指标是评估其质量和性能的重要标准。本文将介绍
    的头像 发表于 05-10 16:27 855次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的性能指标有哪些?

    工控主板和普通主板的区别有哪些

    工控主板和普通主板是两种在计算机硬件领域中常见的主板类型,它们在设计、功能和用途上有着明显的区别。工控
    的头像 发表于 04-25 16:54 1115次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>和普通<b class='flag-5'>主板</b>的区别有哪些

    购买工控主板的三大误区

    最近有很多人问我什么样的工控主板算好的,有没有一个统一的标准。工控主板作为整机的核心组成部分,在性能稳定上有着至关重要的作用,那今天小编就来给大家讲解一下在购买
    的头像 发表于 04-16 16:40 282次阅读

    工控机主板与嵌入式主板的区别是什么?

    在计算机硬件中,主板是至关重要的组成部分,它连接并控制着所有的硬件设备。然而,根据其设计和使用场景的不同,主板可以被分为多种类型,选择合适的主板对于不同的嵌入式系统应用来说至关重要。那么工控机
    的头像 发表于 11-16 10:29 1978次阅读
    <b class='flag-5'>工控机主板</b>与嵌入式<b class='flag-5'>主板</b>的区别是什么?