Wiegand(韋根)協(xié)議是由摩托羅拉公司定制的一種通訊協(xié)議,它適用于涉及門禁控制系統(tǒng)的讀卡器和卡片的許多特性。韋根數(shù)據(jù)輸出由兩條數(shù)據(jù)線DATA0和DATA1,和公共的信號(hào)地GND組成。在沒(méi)有數(shù)據(jù)輸出時(shí),DATA0和DATA1都保持高電平(典型為+5V電平),若輸出'0'時(shí),DATA0輸出低脈沖而DATA1保持為高電平,輸出'1'時(shí),DATA1輸出低脈沖而DATA0保持為高。典型的低脈沖寬度為50us,輸出每一bit之前的間隔為1ms(如下圖,實(shí)際的信號(hào)電平和時(shí)序由實(shí)際的韋根讀卡器決定)。
韋根協(xié)議包含很多種格式來(lái)傳輸串行數(shù)據(jù),英創(chuàng)公司工控主板支持最常用的韋根26 bit和韋根34 bit格式。
韋根26是已經(jīng)廣泛使用的工業(yè)標(biāo)準(zhǔn),一個(gè)“韋根包”有26位數(shù)據(jù),第1位為第1到第13位的偶檢驗(yàn),最后1位為第14到第26位的奇校驗(yàn)。中間24位為數(shù)據(jù)位。
韋根26格式定義
對(duì)于韋根34格式,即一個(gè)“韋根包”有34位數(shù)據(jù),第1位為第1到第17位的偶檢驗(yàn),最后1位為第18到第34位的奇校驗(yàn)。中間32位為數(shù)據(jù)位。
英創(chuàng)公司在WinCE內(nèi)核中添加了韋根協(xié)議解析的設(shè)備驅(qū)動(dòng)程序,應(yīng)用程序只需要打開(kāi)"WIG1:"設(shè)備,然后調(diào)用DeviceIoControl等待驅(qū)動(dòng)程序返回(調(diào)用DeviceIoControl,應(yīng)用程序會(huì)掛起,不會(huì)占用CPU資源),當(dāng)驅(qū)動(dòng)程序接收到韋根數(shù)據(jù)后,會(huì)自動(dòng)檢查奇偶校驗(yàn),然后由DeviceIoControl返回接收情況,可能返回的原因有:
#defineWG_DATA_VALID 0 // 接收到有效的韋根數(shù)據(jù)
#defineWG_PARITY_ERROR 1 // 奇偶校驗(yàn)錯(cuò)誤
#defineWG_TIMEOUT 2 // 接收數(shù)據(jù)超時(shí)
#defineWG_BIT_LENGTH_ERROR 3 // 不能識(shí)別的韋根格式
如果DeviceIoControl返回為0(WG_DATA_VALID),表示接收到有效的韋根數(shù)據(jù),應(yīng)用程序通過(guò)ReadFile函數(shù)從驅(qū)動(dòng)讀取數(shù)據(jù),如果讀回3個(gè)字節(jié),表示為韋根 26格式,如果讀回4字節(jié),表示韋根 34格式。ReadFile讀回的數(shù)據(jù)不包含韋根協(xié)議中的頭尾奇偶校驗(yàn)位,僅為有效的數(shù)據(jù)位。
如果ReadFile函數(shù)返回1個(gè)字節(jié),表示接收到韋根讀卡器按鍵信號(hào),驅(qū)動(dòng)程序目前支持4 bit(16個(gè)狀態(tài))的鍵盤信號(hào)檢測(cè)。
韋根信號(hào)需要正確連接到英創(chuàng)工控主板后,驅(qū)動(dòng)程序才能正常工作,英創(chuàng)各個(gè)主板連接韋根信號(hào)的定義如下:
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電平,而英創(chuàng)工控主板的GPIO要求輸入電平不能超過(guò)3.3V,所以韋根讀卡器輸出的信號(hào)需要經(jīng)過(guò)轉(zhuǎn)換后才能與英創(chuàng)主板的GPIO相連。下圖是一個(gè)簡(jiǎn)單的5V轉(zhuǎn)3.3V的電平轉(zhuǎn)的電路。
下面是應(yīng)用程序讀取第一路韋根信號(hào)("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
+關(guān)注
關(guān)注
4文章
3614瀏覽量
91419 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6102瀏覽量
36307
發(fā)布評(píng)論請(qǐng)先 登錄
科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

信創(chuàng)浪潮下,國(guó)產(chǎn)主板有什么新的發(fā)展機(jī)遇?

龍芯3A6000ATX主板,開(kāi)啟國(guó)產(chǎn)工控新時(shí)代
工業(yè)級(jí)主板和工控級(jí)主板的區(qū)別?
飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕
龍芯中科助力2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦
高能計(jì)算機(jī)助推國(guó)產(chǎn)工控主板邁向又一輪的新高度
國(guó)產(chǎn)工控主板有什么優(yōu)勢(shì)、特點(diǎn)?
?什么是國(guó)產(chǎn)工控主板,國(guó)產(chǎn)工控主板的特點(diǎn)有哪些?
國(guó)產(chǎn)工控主板,信創(chuàng)產(chǎn)業(yè)發(fā)展新引擎
中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)
工控主板有哪些特點(diǎn)?
信創(chuàng)國(guó)產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀
探索國(guó)產(chǎn)工控主板:接口類型全解析

評(píng)論