曙海教育集團(tuán)論壇Linux專(zhuān)區(qū)Linux應(yīng)用開(kāi)發(fā) → 基于Linux串口的非接觸式IC卡開(kāi)發(fā)應(yīng)用


  共有8542人關(guān)注過(guò)本帖樹(shù)形打印

主題:基于Linux串口的非接觸式IC卡開(kāi)發(fā)應(yīng)用

美女呀,離線(xiàn),留言給我吧!
wangxinxin
  1樓 個(gè)性首頁(yè) | 博客 | 信息 | 搜索 | 郵箱 | 主頁(yè) | UC


加好友 發(fā)短信
等級(jí):青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊(cè):2010-11-12 11:08:23
基于Linux串口的非接觸式IC卡開(kāi)發(fā)應(yīng)用  發(fā)帖心情 Post By:2010-11-23 10:27:45

0 引 言 

    隨著信息技術(shù)的快速發(fā)展,個(gè)人數(shù)據(jù)將成為未來(lái)信息的主要角色。IC卡作為卡基應(yīng)用系統(tǒng)中的一種卡型,利用安裝在卡中的集成電路(IC)來(lái)記錄和傳遞信息,是一種將個(gè)人信息有效地送人信息網(wǎng)絡(luò)并獲得所需結(jié)果的有效辦法。IC卡芯片具有寫(xiě)入數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)的能力,IC卡存儲(chǔ)器中的內(nèi)容根據(jù)需要可以有條件地供外部讀取,或供內(nèi)部信息處理和判定之用。作為IC卡與讀寫(xiě)設(shè)備數(shù)據(jù)交換的一種方式,非接觸式IC卡是通過(guò)無(wú)線(xiàn)電波或電磁場(chǎng)感應(yīng)的方式,將卡中集成電路內(nèi)的數(shù)據(jù)與外部設(shè)備接口設(shè)備通信,卡片不用直接接觸接口設(shè)備的電極就可以進(jìn)行數(shù)據(jù)讀寫(xiě)。通信距離可以從幾厘米至幾十米遠(yuǎn)。其主要優(yōu)點(diǎn)是環(huán)境適應(yīng)性強(qiáng)、可全天候、無(wú)接觸地完成自動(dòng)識(shí)別、跟蹤與管理。

1 Linux中的串口通信設(shè)備模塊 

1.1 Linux設(shè)備文件 

    在Linux中硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作。這些設(shè)備文件提供了到大多數(shù)物理設(shè)備的接口,它們分為字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。 

    (1)字符設(shè)備:在存取時(shí)沒(méi)有緩存的設(shè)備,不使用系統(tǒng)緩沖,對(duì)設(shè)備文件的操作直接反映到硬件上,串口就屬于字符設(shè)備。
    (2)塊設(shè)備:讀寫(xiě)都有緩存的支持,并且能夠隨機(jī)存取。主要包括軟盤(pán)設(shè)備、CD—ROM等。
    (3)網(wǎng)絡(luò)設(shè)備:任何網(wǎng)絡(luò)設(shè)備都要經(jīng)過(guò)一個(gè)網(wǎng)絡(luò)接151即一個(gè)能夠和其它主機(jī)交換數(shù)據(jù)的設(shè)備,通常接口是個(gè)硬件設(shè)備但也可能是個(gè)純軟件設(shè)備。 

1.2 串口通信的設(shè)置 

    對(duì)串口硬件設(shè)備進(jìn)行操作,有兩種方法:一是利用Linux內(nèi)核自帶的串口驅(qū)動(dòng)程序;另外一種方法就是直接瀆寫(xiě)串口硬件端口,在這里只使用第一種方法。要設(shè)置串口屬性,首先應(yīng)在程序中包含termios.h的頭文件,這個(gè)頭文件包含終端控制結(jié)構(gòu)和控制函數(shù)。

    其中有一個(gè)非常重要的數(shù)據(jù)結(jié)構(gòu)struct temfios,這個(gè)數(shù)據(jù)結(jié)構(gòu)包含了所有的串口參數(shù),如波特率、數(shù)據(jù)位、輸入輸出方式等。設(shè)置串口屬性就是對(duì)這個(gè)數(shù)據(jù)結(jié)構(gòu)賦值?梢酝ㄟ^(guò)termios.h中的函數(shù)tssetattr()設(shè)置串口的termios參數(shù);通過(guò)函數(shù)tsgetattr()獲取串口的termios參數(shù)。該數(shù)據(jù)結(jié)構(gòu)的各成員的屬性值以及參數(shù)含義可以參考文獻(xiàn)[1]。 

    設(shè)置完通信參數(shù)后就可用read從串口讀取數(shù)據(jù)和write向串口寫(xiě)數(shù)據(jù)了,其實(shí)質(zhì)就是對(duì)串口文件進(jìn)行讀寫(xiě)。運(yùn)行程序時(shí)要注意用戶(hù)是否有對(duì)要操作的串口文件進(jìn)行讀寫(xiě)的權(quán)力,可以用chmod命令進(jìn)行文件權(quán)限修改。

2 非接觸式IC卡簡(jiǎn)介 

    Mifare 1 IC智能(射頻)卡的核心是Philips公司的Mifare 1 IC $50。內(nèi)建有高速的CMOS EEPROMMCU等?ㄆ铣薎C微晶片及一副高效率天線(xiàn)外無(wú)任何其他元件,無(wú)源(無(wú)任何電池),工作時(shí)的電源能量由卡片讀寫(xiě)器天線(xiàn)發(fā)送無(wú)線(xiàn)電載波信號(hào)耦合到卡片上天線(xiàn)而產(chǎn)生電能,一般可達(dá)2V以上供卡片上IC工作工作頻率13.56Mttz。 

    Mifare 1 IC卡上具有先進(jìn)的數(shù)據(jù)通信加密并雙向驗(yàn)證密碼系統(tǒng);且具有防重疊功能,能在同一時(shí)間處理重疊在卡片讀寫(xiě)器天線(xiàn)的有效工作距離內(nèi)的多張重疊的卡片。其通訊原理如圖1所示。

Mifare 1=

圖1 Mifare 1 IC卡讀寫(xiě)流程圖 

3 IC卡設(shè)備在Linux下的開(kāi)發(fā)實(shí)現(xiàn) 

    采取通用的Mifare S50卡為例,詳細(xì)描述其在校園機(jī)房的使用。 

3.1 建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu) 

    在頭文件AcctData.h中,定義結(jié)構(gòu)體AcctItem,用于反映機(jī)器的使用狀態(tài),頭文件ICCard.h中,定義類(lèi)ICCard用于反映IC卡的使用狀態(tài)。確定在驅(qū)動(dòng)模塊程序中應(yīng)用的數(shù)據(jù)結(jié)構(gòu)的最終目的是讀取和寫(xiě)入卡數(shù)據(jù)處理,所以規(guī)范整齊的數(shù)據(jù)結(jié)構(gòu)是必須的。


通訊模式及率
}; 

    這樣,就定義了全部的卡處理數(shù)據(jù)結(jié)構(gòu)定義以及設(shè)備操作映射函數(shù)結(jié)構(gòu),綜上所述,就實(shí)現(xiàn)了IC卡設(shè)備的打開(kāi)、讀寫(xiě)和監(jiān)控函數(shù) 。 
3.2 模塊初始化函數(shù)的實(shí)現(xiàn) 

    模塊初始化函數(shù)是模塊開(kāi)發(fā)過(guò)程中必不可少的處理函數(shù),用于實(shí)現(xiàn)設(shè)備的初始化,中斷初始化及處理設(shè)備等。

    在上面類(lèi)中首先應(yīng)用GetCardData(char*,CardData&)實(shí)現(xiàn)了卡數(shù)據(jù)的初始化;然后定義了隊(duì)列數(shù)據(jù),再進(jìn)行了上機(jī)處理以及下機(jī)處理,故障恢復(fù)處理;最后實(shí)現(xiàn)了恢復(fù)故障處理。
 
3.3 中斷處理 

    模塊采用了定時(shí)器中斷,在每個(gè)定時(shí)器中斷發(fā)生時(shí)對(duì)刷卡狀況進(jìn)行檢測(cè),如果在天線(xiàn)范圍內(nèi)檢測(cè)到刷卡,根據(jù)使用標(biāo)記進(jìn)行判斷,未使用則進(jìn)行讀卡操作;使用中則進(jìn)行寫(xiě)卡操作,同時(shí)更新IC卡的狀態(tài)數(shù)據(jù)。
 
    程序中的中斷處理采用了信號(hào)量機(jī)制來(lái)實(shí)現(xiàn)中斷的后續(xù)處理,其處理流程為:


3.4 注銷(xiāo)模塊處理 

    用于模塊卸載時(shí)進(jìn)行資源的釋放,在關(guān)閉串口前,需要通過(guò)tcsetattr(fd,TCSANOW,&oldtio);將串口參數(shù)恢復(fù)為原來(lái)的設(shè)置,最后通過(guò)close系統(tǒng)調(diào)用關(guān)閉串口,如下所述:

3.5 設(shè)備的讀、寫(xiě)和配置函數(shù) 

    主要是通過(guò)實(shí)現(xiàn)IC卡的各種操作,在先前的類(lèi)ICCard中已經(jīng)介紹,根據(jù)Mirare 1 IC的通訊原理,實(shí)現(xiàn)卡的初始化操作。 

    綜上所述,卡驅(qū)動(dòng)模塊的基本實(shí)現(xiàn)原理是:當(dāng)有刷卡操作發(fā)生時(shí),由使用標(biāo)記引發(fā)中斷或進(jìn)行讀卡操作;或進(jìn)行寫(xiě)卡操作,同時(shí)進(jìn)行相應(yīng)數(shù)據(jù)處理。從而實(shí)現(xiàn)有卡操作發(fā)生時(shí)馬上進(jìn)行卡數(shù)據(jù)的更新[ 。 

4 模塊的編譯調(diào)試 

編寫(xiě)相應(yīng)的makefile文件:

chown root$(BINDIR)/pubacct
chown u+s$(BINDIR)/pubacct
clean:
rm-f*.o pubaect 

    執(zhí)行幾個(gè)make命令,便可以實(shí)現(xiàn)驅(qū)動(dòng)模塊的動(dòng)態(tài)編譯。
 
5 結(jié)束語(yǔ) 

    文中筆者創(chuàng)新點(diǎn):介紹了非接觸式IC卡的概況和發(fā)展前景。有助于有一定IC卡經(jīng)驗(yàn)、技術(shù)及具有一定的計(jì)算機(jī)軟緞件技術(shù)的研發(fā)者設(shè)計(jì)出諸多應(yīng)用場(chǎng)合的產(chǎn)品。這里只是截取了IC卡應(yīng)用的一個(gè)方向,以及簡(jiǎn)單的設(shè)計(jì)開(kāi)發(fā)。在其它的高級(jí)應(yīng)用中還可以加入密鑰保護(hù)等措施。


支持(0中立(0反對(duì)(0單帖管理 | 引用 | 回復(fù) 回到頂部

返回版面帖子列表

基于Linux串口的非接觸式IC卡開(kāi)發(fā)應(yīng)用








簽名
主站蜘蛛池模板: www日本xxx| 老师你好电影高清完整版在线观看| 亚洲精品中文字幕无码蜜桃| 强挺进小y头的小花苞漫画| 青草热在线精品视频99app| 久久精品国产999大香线焦| 国产福利一区二区三区在线视频 | 手机看片一区二区| 亚洲国产成人精品无码区二本| 国产草草影院ccyycom软件| 欧美黑人巨大白妞出浆| 88av在线播放| 亚洲va在线va天堂va手机| 国产成人精品福利网站在线| 日韩精品欧美激情国产一区| 香蕉国产人午夜视频在线| 中文字幕网站在线| 免费看又黄又无码的网站| 天天射天天干天天舔| 欧美福利视频网| 顶级欧美色妇xxxxbbbb| 丁香狠狠色婷婷久久综合| 俺来也俺去啦久久综合网| 国产精选91热在线观看| 日本高清免费不卡在线| 色哟哟国产精品免费观看| aaaaaa级特色特黄的毛片| 亚洲免费视频观看| 国产一区二区三区亚洲综合 | 玖玖爱zh综合伊人久久| 2020国产精品视频| 久久97久久97精品免视看秋霞| 北条麻妃一区二区三区av高清 | 久久久久久夜精品精品免费啦| 再深点灬舒服灬太大了网站| 国产精品综合色区在线观看| 日本护士xxxx黑人巨大| 毛片毛片毛片毛片毛片毛片| 韩国无遮挡羞羞漫画| 99久久综合狠狠综合久久aⅴ| 乱亲玉米地初尝云雨|