国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219009
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6107

    瀏覽量

    37071
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    產業駛入快車道,國產工控主板成自主可控關鍵支撐

    當前,我國信產業規模大幅突破,信息技術應用創新產業迎來高速發展期。發展信,早已超越單純的技術升級范疇,成為保障國家信息安全、推動經濟高質
    的頭像 發表于 03-04 14:18 ?29次閱讀
    信<b class='flag-5'>創</b>產業駛入快車道,國產<b class='flag-5'>工控</b><b class='flag-5'>主板</b>成自主可控關鍵支撐

    國產金融主板:賦能智慧金融,驅動信產業升級

    隨著信息技術的飛速迭代,信產業已在全球范圍內崛起,成為拉動經濟增長、激活創新動能的核心力量。在信產業的關鍵布局中,智慧金融建設是重中之重,而國產金融主板的規?;瘧?,正為智慧金融建
    的頭像 發表于 12-31 09:03 ?168次閱讀
    國產金融<b class='flag-5'>主板</b>:賦能智慧金融,驅動信<b class='flag-5'>創</b>產業升級

    國產芯筑基,飛騰主板賦能信未來

    信息技術自主可控成為國家戰略的今天,信產業正從“政策驅動”邁向“市場驅動”的高質量發展新階段。作為信產業鏈的核心硬件基石,主板的國產化水平直接決定著整個
    的頭像 發表于 12-30 09:49 ?198次閱讀
    國產芯筑基,飛騰<b class='flag-5'>主板</b>賦能信<b class='flag-5'>創</b>未來

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

    2025年11月13日-15日,由中國教育技術協會主辦、浙江大學與中國教育技術協會網絡安全專業委員會聯合承辦,中國電子工業標準化技術協會信息技術應用創新工作委員會、浙江高校信
    的頭像 發表于 11-21 16:23 ?786次閱讀

    3A6000四核龍芯工控主板,推動信工控深度融合

    當今信科技快速發展,技術的不斷演進和市場需求的變化,在工控領域也在進行源源不斷地創新,其中最引人注目的是國產龍芯主板在其中的發展應用。
    的頭像 發表于 11-14 09:10 ?378次閱讀

    工控主板的設計特性

    在工業自動化、智能裝備、物聯網等領域,工控主板作為核心控制單元,其設計質量直接決定了整個系統的穩定性、可靠性與運行效率。與消費級主板不同,工控主板
    的頭像 發表于 11-13 08:58 ?464次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的設計特性

    新時代的硬核基石:龍芯工控主板助力信產業新基建

    在數字技術重塑產業格局的今天,信產業已成為保障國家信息技術安全的核心戰略。作為工業自動化系統的大腦,工控主板的自主可控程度直接決定信創新基
    的頭像 發表于 11-05 13:54 ?288次閱讀

    工控主板的三大核心技術

    在工業自動化的浪潮中,工控主板如同“工業大腦”的核心載體,支撐著各類設備的穩定運行與智能升級。相較于消費級主板工控主板需在復雜工況下實現長
    的頭像 發表于 10-16 11:05 ?375次閱讀

    智慧新核心,龍芯主板助力信體系再升級

    信息技術飛速發展的當下,信體系的自主可控與創新升級已成為國家戰略層面的關鍵任務。作為信產業發展的重要基礎硬件支撐,國產工控主板正發揮著
    的頭像 發表于 08-11 09:14 ?694次閱讀

    ?工控主板和商業主板的區別是什么?

    工控主板是專為工業控制領域設計的計算機核心部件,采用耐高溫、抗潮濕的工業級元器件,支持在-20°C至60°C寬溫、高濕、強電磁干擾等惡劣環境中長時間穩定運行。商業主板是為滿足日常辦公、
    的頭像 發表于 07-30 09:29 ?857次閱讀

    佛瑞亞如何通過信息技術推動業務增長

    在數字化、信息化的浪潮下,信息技術已經不僅是后臺工具,更成為驅動企業發展的關鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區信息技術總監馬瑛,了解她和團隊如何將
    的頭像 發表于 07-29 14:00 ?900次閱讀

    飛騰主板為信產業發展提高硬實力

    信息技術飛速發展的當下,信產業已成為我國實現科技自立自強、保障國家信息安全的關鍵領域。信,即信息技術應用創新,其核心目標是實現
    的頭像 發表于 07-22 18:20 ?707次閱讀

    科普|信是什么?一文讀懂“信息技術應用創新”戰略

    什么是信?信,即“信息技術應用創新”,是國家推動IT系統自主可控、安全可控的重要戰略工程。它不僅是技術層面的創新,更承載著保障國家網絡安全、推動產業升級和實現數字主權的重任。簡單來
    的頭像 發表于 06-13 10:06 ?8205次閱讀
    科普|信<b class='flag-5'>創</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創新”戰略

    浪潮下,國產主板有什么新的發展機遇?

    信息技術應用創新浪潮的推動下,國產主板迎來了諸多新的發展機遇。信產業旨在實現信息技術領域的自主可控,這一戰略目標為國產主板的發展提供了廣
    的頭像 發表于 05-09 09:24 ?721次閱讀
    信<b class='flag-5'>創</b>浪潮下,國產<b class='flag-5'>主板</b>有什么新的發展機遇?