在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術Linux工控主板對韋根信號的支持

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-04 10:46 ? 次閱讀

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位為數據位。

對于韋根34格式,即一個“韋根包”有34位數據,常見的格式為第1位為第1到第17位的偶校驗,最后1位為第18到第34位的奇校驗,中間32位為數據位。

英創公司為Linux工控主板提供了支持韋根協議的設備驅動模塊,在命令行輸入insmod wiegand-gpio.ko即完成驅動程序的加載。linux韋根驅動支持應用程序通過非阻塞的輪詢操作(select)和異步通知的方式讀取韋根數據,這里我們建議使用非阻塞輪詢方式。以非阻塞方式O_NONBLOCK打開設備文件后,使用num = read(fd,buffer,len)讀取韋根數據,只讀取Site Code和User Code,不包含奇偶校驗位,各參數意義如下:

輸入參數:

fd:int, 韋根設備文件描述符;

len:buffer長度,固定4字節,小于4字節提示錯誤;

輸出參數:

buffer:char *, read結果緩存,固定4字節,根據不同返回值num,具有不同意義;

返回值:

num:int, 讀取成功時,表示讀取的字節數,具體意義如下:

num = 4,讀取成功,數據格式為wiegand 34,buffer [0-1]為Site Code,buffer [2-3]為User Code;

num = 3,讀取成功,數據格式為wiegand 26,buffer [0]=0,buffer [1]為Site Code,buffer [2-3]為User Code;

num = 1,讀取成功,數據格式為鍵盤按鍵(部分讀卡器有此功能),buffer [0]=0, buffer [1]為按鍵值;

num = -1,讀取失敗,buffer [0]存錯誤碼:

-1//格式錯誤,長度不匹配

-2//偶校驗錯誤

-3//奇校驗錯誤

-4//用戶傳入buffer空間太小

英創各個主板連接韋根信號的定義如下:

Wiegand_DATA0 Wiegand_DATA1
ESM928x / ESM335x / EM335x GPIO14 GPIO15
EM9280 / EM9281 / EM9287 GPIO26 GPIO27

韋根讀卡器通常輸出5V TTL電平,而英創工控主板的GPIO要求輸入電平不能超過3.3V,所以韋根讀卡器輸出的信號需要經過轉換后才能與英創主板的GPIO相連。下圖是一個簡單的5V轉3.3V的電平轉的電路,WG_DATA0和WG_DATA1為韋根讀卡器輸出信號,注意要將韋根讀卡器與英創工控主板共地。

以下是讀取韋根數據的應用程序示例代碼:

#include

#include

#include

#include

#include

#include

#defineWIEGAND_ERROR_FORMAT -1 //格式錯誤,長度不匹配

#defineWIEGAND_ERROR_EVEN_PARITY -2 //偶校驗錯誤

#defineWIEGAND_ERROR_ODD_PARITY -3 //奇校驗錯誤

#defineWIEGAND_ERROR_LESS_BUF -4 //用戶傳入buf空間太小

intexitflag; //退出標志

charbuffer[4]; //read結果

intreadWiegandThreadFunc(void* lparam)

{

intfd = * (int*)lparam;

fd_set fdRead;

structtimeval aTime;

intret;

while(1)

{

FD_ZERO(&fdRead);

FD_SET(fd,&fdRead);

aTime.tv_sec = 2; //s

aTime.tv_usec = 0; //us

ret =select( fd+1, &fdRead, NULL, NULL, &aTime );

if( ret>0 )

{

if( FD_ISSET(fd, &fdRead) )

{

//用戶可以在此加入處理操作

intnum = 0;

num =read(fd,buffer,4);

if(num < 0)

{

interrorCode = (signedchar)buffer[0];

printf("ERROR:read failed! num: %d\n",num);

switch(errorCode)

{

caseWIEGAND_ERROR_FORMAT:

printf("ERROR CODE: %d, wiegand data format did not match wiegand-26,weigand-34 or 4 bits for keyboard!\n",errorCode);

break;

caseWIEGAND_ERROR_EVEN_PARITY:

printf("ERROR CODE: %d, wiegand data even parity was wrong!\n",errorCode);

break;

caseWIEGAND_ERROR_ODD_PARITY:

printf("ERROR CODE: %d, wiegand data odd parity was wrong!\n",errorCode);

break;

caseWIEGAND_ERROR_LESS_BUF:

printf("ERROR CODE: %d, buffer was too small, please set it to 4 bytes!\n",errorCode);

break;

default:

printf("ERROR CODE: %d, Unknown Error!\n",errorCode);

break;

}

}

else

{

printf("result: %x,%x,%x,%x\n",buffer[0],buffer[1], buffer[2], buffer[3]);

}

}

}

if( exitflag==1 )//exitflag在程序其他線程中改變

{

printf("exit!\n");

break;

}

}

pthread_exit( NULL );

return0;

}

intmain(intargc,char* argv[])

{

intfd;

inti = 0;

exitflag = 0;

fd =open("/dev/em9280_wiegand",O_RDONLY | O_NONBLOCK);

if(fd < 0)

{

printf("ERROR:open failed!\n");

return-1;

}

pthread_attr_t attr;

pthread_t m_thread;

int res;

res = pthread_attr_init(&attr);

if( res!=0 )

{

printf("Create attribute failed\n" );

}

// 設置線程綁定屬性

res = pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM );

// 設置線程分離屬性

res += pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_DETACHED );

if( res!=0 )

{

printf( "Setting attribute failed\n" );

}

// 創建select線程,在此線程中讀韋根數據

res = pthread_create( &m_thread, &attr, (void*(*) (void*))&readWiegandThreadFunc, &fd );

if( res!=0 )

{

return-1;

}

pthread_attr_destroy( &attr );

while(1)

{

//執行其他任務

printf("%d\n",i++);

sleep(1);

if(i==50)

{

exitflag = 1;

printf("over\n");

break;

}

}

close(fd);

return0;

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210417
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6086

    瀏覽量

    35622
收藏 人收藏

    評論

    相關推薦

    工業級主板工控主板的區別?

    在工業領域,主板的重要性是被無限放大的。在大型工廠里日夜不停運轉的自動化生產線、精準控制的智能電網系統、以及在極端環境下依然穩定采集數據的石油勘探設備,它們背后都依靠著工業級主板工控主板
    的頭像 發表于 01-02 10:01 ?118次閱讀

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會
    的頭像 發表于 12-24 09:57 ?208次閱讀

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?283次閱讀

    國產工控主板有什么優勢、特點?

    隨著國產工控主板的發展,國內企業也在不斷開發新的工控主板,為了滿足國內企業的發展需求,一些國產工控主板
    的頭像 發表于 11-15 10:11 ?185次閱讀

    ?什么是國產工控主板,國產工控主板的特點有哪些?

    什么是國產工控主板呢?國產工控主板是工業計算機的主板,是一種計算機系統的硬件設備,是專門為工業控制場景設計和生產的電路板。它在國內的研發和制
    的頭像 發表于 11-07 10:29 ?277次閱讀

    國產工控主板,信產業發展新引擎

    在當今科技飛速發展的時代,信產業正成為國家戰略的重要支撐。而我們的國產工控主板,以其卓越的性能和可靠的品質,為信產業的發展注入強大動力。國產工控
    的頭像 發表于 11-06 10:29 ?312次閱讀

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?557次閱讀

    工控主板有哪些特點?

    動、防塵防水等設計,能夠適應工業場景中的各種惡劣條件,具有較長的使用壽命。 ?擴展性:工控主板通常具有豐富的擴展接口,可以方便地連接各種工業設備和傳感器,滿足不同工業控制需求。 工業標準支持
    的頭像 發表于 10-10 08:55 ?404次閱讀

    國產化背景下的工控主板發展現狀

    ,是信息技術應用創新產業的簡稱,于2016年“信工委會”(信息技術應用創新工作委員會)提出,目的就是要推動我們國內軟硬件關鍵技術的研發
    的頭像 發表于 09-21 16:15 ?511次閱讀

    淺析安卓工控主板的優勢

    安卓工控主板作為專為工業控制領域設計的硬件平臺,相較于普通商用主板,擁有諸多優勢,以滿足工業環境對穩定、可靠、長期運行的嚴格要求。以下是安卓工控主板
    的頭像 發表于 06-27 14:50 ?378次閱讀

    使用工控主板時該注意哪些事項?

    最近大家都在頻繁問一個問題就是工控主板在什么人為情況下容易出現故障,從而造成工控主板的損壞,那今天小編就來講講,我們在使用工控
    的頭像 發表于 06-05 16:01 ?484次閱讀
    使用<b class='flag-5'>工控</b><b class='flag-5'>主板</b>時該注意哪些事項?

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

    最近大家都在頻繁問一個問題就是工控主板在什么人為情況下容易出現故障,從而造成工控主板的損壞,那今天小編就來講講,我們在使用工控
    的頭像 發表于 05-17 10:57 ?448次閱讀

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

    工控主板是工業控制領域中的關鍵組成部分,它承載著工控系統的核心功能。因此,工控主板的性能指標是評估其質量和性能的重要標準。本文將介紹
    的頭像 發表于 05-10 16:27 ?1006次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的性能指標有哪些?

    工控主板和普通主板的區別有哪些

    工控主板和普通主板是兩種在計算機硬件領域中常見的主板類型,它們在設計、功能和用途上有著明顯的區別。工控
    的頭像 發表于 04-25 16:54 ?1441次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>和普通<b class='flag-5'>主板</b>的區別有哪些

    購買工控主板的三大誤區

    最近有很多人問我什么樣的工控主板算好的,有沒有一個統一的標準。工控主板作為整機的核心組成部分,在性能穩定上有著至關重要的作用,那今天小編就來給大家講解一下在購買
    的頭像 發表于 04-16 16:40 ?400次閱讀
    主站蜘蛛池模板: 日本三级hd高清电影 | 日本福利小视频 | 天天爱天天做久久天天狠狼 | 一级做a免费视频 | 床上激情四射 | 国产一二三区精品 | 欧美久久综合 | 午夜一区二区在线观看 | 1024 在线观看视频免费 | 成人在线综合网 | 天天夜天干天天爽 | 免费看美女午夜大片 | 欧美精品亚洲网站 | 欧美亚洲天堂网 | 亚洲国产精品丝袜在线观看 | 人人福利 | 国产特黄1级毛片 | 久久15| 国产成人精品本亚洲 | 午夜视频高清在线aaa | 国产精品永久免费 | 很黄的网站在线观看 | 站长工具天天爽视频 | 日本亚洲成人 | 亚洲精品在线视频观看 | 日韩第二页 | 黄色三级三级三级免费看 | 免费看一毛一级毛片视频 | 欧美一级片在线视频 | 天天搞天天干 | 波多野结衣一级特黄毛片 | 日本aaaa级毛片在线看 | 国产午夜视频在永久在线观看 | 黄 色 免 费 网站在线观看 | 久久午夜影视 | 黄视频免费在线看 | 色婷婷色综合缴情在线 | 婷婷亚洲视频 | 理论片午夜 | 夜夜视频| 55夜色66夜色国产精品站 |