国产白丝无码免费视频高潮,日本最新免费二区三区,精品欧美一区二区三区成人片在线,国产白嫩护士在线播放,GOGO人体大胆全球少妇
歡迎您訪問鄭州興邦電子股份有限公司官方網(wǎng)站!
阿里巴巴誠信通企業(yè)
全國咨詢熱線:40000-63966
興邦電子,中國水控機第一品牌

聯(lián)系興邦電子

全國咨詢熱線:40000-63966

售后:0371-55132951/55132952

工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產(chǎn)業(yè)園

非接觸IC卡讀卡器的開發(fā)研究

文章出處:http://m.coolbang.cn 作者:李揚弘 李秉智   人氣: 發(fā)表時間:2011年11月17日

[文章內(nèi)容簡介]:隨著高校招生規(guī)模的不斷擴大,各學校原有的消費和管理模式已不能適應新的發(fā)展要求,先進的校園一卡通系統(tǒng)的出現(xiàn)帶來了管理工作的革命。論文介紹了校園一卡通的組成和應用,對非接觸IC 卡、串口通信、多線程等技術進行了研究,提出了使用多線程、串口等技術開發(fā)基于PC 控制的非接觸IC 卡讀卡器系統(tǒng)作為校園一卡通系統(tǒng)的一個重要子系統(tǒng),建立非接觸IC 卡子系統(tǒng)模型,并給出了程序的測試結果。

    隨著高校招生規(guī)模不斷擴大,學生人數(shù)逐漸增多,用傳統(tǒng)的方法進行管理工作已經(jīng)不能快速高效地解決學生提出的學習、生活、消費的需求問題。校園一卡通系統(tǒng)就是使用先進的非接觸IC 卡技術以及網(wǎng)絡通訊技術,針對學校的綜合管理而開發(fā)設計的。一卡通系統(tǒng)以非接觸IC 卡作為載體,結合電子技術、非接觸IC 卡技術、計算機網(wǎng)絡技術以及數(shù)據(jù)庫技術等,使其具有身份識別和電子錢包的功能,可替代校園日常生活所需各種證件和現(xiàn)金交易,達到證件、考勤、消費娛樂、餐飲等收費的全電子化和智能化。結束了傳統(tǒng)校園生活中證件、卡片和票據(jù)滿天飛的情況,將多種管理系統(tǒng)集成為一體,以一卡通的形式進行諸如簽到考勤、身份證明、借閱圖書、校園消費等多種活動,使用方便快捷,安全可靠,做到“一卡在手,走遍校園”。 

    1 校園一卡通系統(tǒng)簡介
 

    構建校園一卡通系統(tǒng)是為了利用已有的校園網(wǎng)絡和普及的PC 機建成一個用于綜合管理的系統(tǒng),它主要由數(shù)據(jù)庫服務器、PC 機、非接觸IC 卡、讀卡器和通訊網(wǎng)絡及其所需軟件組成。系統(tǒng)的設計原則為安全、快捷、一卡通用性和可擴展性,網(wǎng)絡結構采用業(yè)界流行的Client/Server 體系結構,數(shù)據(jù)庫服務器采用目前流行的SQL Server 構建數(shù)據(jù)庫,其基本表包括學生信息表,教師信息表,課程安排信息表,電子錢包剩余金額信息表等,隨系統(tǒng)擴展可加入更多的基本表。數(shù)據(jù)庫進行字段加密,

    只能通過服務器端程序手動或者自動訪問,避免直接對數(shù)據(jù)庫進行不安全的訪問。作為客戶端的PC 機上運行客戶端程序,控制讀卡器運作并與服務器端程序進行數(shù)據(jù)通信。用戶持非接觸IC 卡,可在各種讀卡器上進行相應的操作,或在客戶端PC機上做許可范圍內(nèi)的查詢。讀卡器程序與非接觸IC 卡進行相互通信和系統(tǒng)數(shù)據(jù)庫進行操作管理,是整個一卡通系統(tǒng)的控制程序。讀卡器程序的開發(fā),是實現(xiàn)一卡通系統(tǒng)的關鍵。一卡通系統(tǒng)結構框圖如圖1 所示。 

一卡通系統(tǒng)結構圖

    2 非接觸IC 卡子系統(tǒng) 

    非接觸IC 卡子系統(tǒng)由讀卡器、非接觸IC 卡、PC 機以及運行在PC 上的控制程序組成。讀卡器和非接觸IC 卡之間使用射頻技術進行通信。 

    2.1 射頻技術及MIFARE 非接觸IC 卡介紹 

    射頻識別技術是利用射頻方式進行非接觸雙向通信,以達到識別目的并交換數(shù)據(jù)。它與同期或早期的接觸式識別技術不同。RFID 系統(tǒng)的射頻卡和讀寫器之間不用接觸就可完成識別,因此它可在更廣泛的場合中應用。其工作原理如圖2 所示。

工作原理圖

    MIFARE 非接觸式IC 卡由IC 芯片,感應天線組成,并完全密封在一個標準PVC 卡片中,無外露部分。讀寫過程通常由非接觸型IC 卡與讀寫器之間通過無線電波來完成讀寫操作。
 
    卡本身是無源體,當讀寫器對卡進行讀寫操作時,讀寫器發(fā)出的信號由兩部分疊加組成:一部分是電源信號,該信號由卡接收后,與其本身的L/C 產(chǎn)生諧振,產(chǎn)生一個瞬間能量來供給芯片工作。另一部分則是結合數(shù)據(jù)信號,指揮芯片完成數(shù)據(jù)的讀取、修改、存儲等,并返回給讀寫器。由非接觸式IC 卡所形成的讀寫系統(tǒng),無論是硬件結構,還是操作過程都得到了很大的簡化,同時借助于先進的管理軟件,可脫機的操作方式,都使數(shù)據(jù)讀寫過程更為簡單。 

    2.2 ZLG500B 讀卡模塊數(shù)據(jù)傳輸協(xié)議 

    ZLG500B 是一個簡單的串行讀寫模塊,包括一個PCB 天線,提供一個UART 接口(CMOS 電平)。UART 接口一幀的數(shù)據(jù)格式為1 個起始位,8 個數(shù)據(jù)位,無奇偶校驗位,1 個停止位,自動波特率探測。ZLG500B 上電后,將RC500 內(nèi)的EERPOM中地址為0×7F 單元的內(nèi)容讀出,取其低2 位來初始化自己的波特率。在接收主機發(fā)出的STX 的同時,測量波特率,若一致,則繼續(xù)通信;若不一致,則修改自己的波特率與主機一致,存入0×7F 單元,準備接收下一個STX。STX 為開始符,值為0×20;ETX 為終止符,值為0x03;應答ACK 和無應答NAK 的值分別為0×06、0- 15。 

    開始通信前,主機和ZLG500B 斗處于就緒狀態(tài),主機首先發(fā)出STX,然后等待ZLG500B 的響應ACK。若在10ms 內(nèi)未檢測到此響應,或收到NAK,則再次發(fā)送STX,若三次均未收到正確應答,則退出本次傳輸,將錯誤代碼返回主程序,由主程序進行錯誤處理。若收到正確響應ACK,則發(fā)送數(shù)據(jù)塊,最后發(fā)送終止符ETX 結束本次發(fā)送。 

    2.3 基于串口通信的讀卡器開發(fā) 

    2.3.1 程序界面開發(fā)
 

    系統(tǒng)采用對話框形式作為界面,包括主界面、設置界面、讀寫操作界面和網(wǎng)絡操作界面共四個界面,主界面用按鈕連接到其他三個界面。主界面使用一個按鈕來提供自動簽到和手動操作,由單擊按鈕在簽到和操作之間切換。簽到系統(tǒng)為自動控制,屏蔽除退出以外的其他按鈕,讀卡器每讀到一張屬于本系統(tǒng)的卡,就自動將所讀到的學號、讀卡器號和當前時間記錄到本地數(shù)據(jù)庫,以便于統(tǒng)計查詢。選取操作則可使用從服務器數(shù)據(jù)庫調(diào)用詳細資料、修改卡中數(shù)據(jù)等需要手動操作的其他服務,例如電子錢包消費或初始化向卡寫入數(shù)據(jù)。設置界面由主界面“設置”按鈕打開,提供串口和波特率設置。讀寫操作界面由“讀寫卡”按鈕打開,能讀寫卡中特定允許地址的數(shù)據(jù)。網(wǎng)絡操作界面由“網(wǎng)絡操作”按鈕打開,提供對遠程數(shù)據(jù)庫的讀寫和更新。

    2.3.2 基于多線程的串口通信 

    串行端口的本質(zhì)功能是作為CPU 和串行設備間的編碼轉換器。當數(shù)據(jù)從CPU 經(jīng)過串行端口發(fā)送出去時,字節(jié)數(shù)據(jù)轉換為串行的位。在接收數(shù)據(jù)時,串行的位被轉換為字節(jié)數(shù)據(jù)。在Windows 環(huán)境(Windows NT、Win98、Windows2000)下,串口是系統(tǒng)資源的一部分。應用程序要使用串口進行通信,必須在使用之前向操作系統(tǒng)提出資源申請要求(打開串口),通信完成后必須釋放資源(關閉串口)。在MFC 下32 位串口通信程序可以用以下三種方法實現(xiàn):

    利用VC++的標準通信函數(shù)_inp 和_outp 可實現(xiàn)串口通信,利用ActiveX 控件和使用API 通信函數(shù)。VC++6.0 的標準通信函數(shù)用類似i=inp(PORT+5)&& 0xfe,outp(PORT+5,i)的形式操作串口。VC++6.0 提供的MSComm控件通過串行端口發(fā)送和接收數(shù)據(jù),為應用程序提供串行通信功能,編程時只需將控件對話中的MSComm 控件拖至你的應用對話框中,在主對話框的.h 文件中為新創(chuàng)建的通信控件定義成員對象(CMSComm m_Comm),通過該對象便可以設置操作MSComm控件的27 個屬性,格式為“m_Comm.屬性”。控件雖然簡單易用,但由于必須拿到對話框中使用,在一些需要在線程中實現(xiàn)通信的應用場合下,控件的使用顯得捉襟見肘。API 是附帶在Windows 內(nèi)部的一個極其重要的組成部分,Windows 的32 位API 主要是一系列很復雜的函數(shù)和消息集合。它可以看作是Windows 系統(tǒng)為在其下運行的各種開發(fā)系統(tǒng)提供的開放式通用功能增強接口。 

    ZLG500B 開發(fā)板使用VC++標準通信函數(shù)封裝了一些底層和高層庫函數(shù),使用這些庫函數(shù)可以簡化開發(fā)工作。首先將庫函數(shù)文件放入工作目錄中,在.CPP 中包含zlg500B.h 頭文件,然后將zlg500B.lib 加入到工程文件中。這樣在程序中,就可以象調(diào)用VC 庫函數(shù)一樣調(diào)用這些函數(shù)了。 

    程序采用多線程技術,解決串口輸入的瓶頸問題,當讀卡工作線程運行的時候,程序可以做一些其他的事情,比如操作服務器數(shù)據(jù)庫等。而用戶界面始終可以繼續(xù)操作,一個永遠有反應的UI 是很重要的。除由進程產(chǎn)生的主線程外,程序產(chǎn)生三個工作線程,分別用于卡的檢測、卡的操作和socket 通信。由主程序創(chuàng)建檢測卡的工作線程: 

pCheckThread=AfxBeginThread(ThreadFunc,this,0,THREAD_PRIORITY_NORMAL,CREATE_SUSPENDED) 

    其中最后一個參數(shù)表示創(chuàng)建線程的同時掛起線程,在程序中由設置按鈕的響應函數(shù)在設置端口和波特率后恢復線程運行。主線程由按鈕事件驅動控制整個程序流程,產(chǎn)生需要的工作線程。程序入口之前聲明一些全局變量,包括讀卡所需的數(shù)據(jù)、緩沖區(qū)、序列號等的全局結構datas 和全局標志量等,用于各線程之間數(shù)據(jù)通信。程序流程結構圖如圖3 所示。
 
    無接觸IC 卡本身是無源體,由讀卡器發(fā)出的信號提供工作能量,所以讀卡器工作線程采用主動輪循檢測卡,在關閉軟件之前,它將一直運行。讀卡線程設置一靜態(tài)變量用于每次結束后儲存卡的序列號,初始化讀卡模塊,然后開始檢測有效范圍是否有卡,發(fā)現(xiàn)卡后獲得序列號存入局部變量,裝載密碼防沖撞選擇,選擇卡進行認證,成功后驅動蜂鳴器并比較獲得的序列號的局部變量和存上次的序列號的靜態(tài)變量,不同則更新靜態(tài)變量的序列號并檢測運行狀態(tài):為簽到狀態(tài)就讀入特定地址需要的數(shù)據(jù),寫入到本地數(shù)據(jù)庫,為操作狀態(tài)就設置標志量,完成所有步驟或者某一步不能通過都返回循環(huán)開始處繼續(xù)查找。程序提供一個全局二維鏈表,首節(jié)點保存當天日期,其他節(jié)點保存已簽到卡號,每次讀卡后在鏈表中查找卡號,為新卡則增加節(jié)點將卡號寫入,再將所需數(shù)據(jù)寫入數(shù)據(jù)庫,以此來保證不重復簽到。操作狀態(tài)下由讀寫操作按鈕事件建立讀寫操作線程,扇區(qū)和塊選擇由讀寫操作界面上用戶輸入然后傳遞給線程函數(shù)。每一次讀寫、增加或減少數(shù)據(jù)之前必須首先請求應答與卡建立第一步聯(lián)系、防沖撞在多張卡片中選定一張、select 卡片選擇明確可對卡進行下一步操作,上述的三個步驟確認已經(jīng)選擇了一張卡片,還必須對卡片上已經(jīng)設置的密碼進行認證,如果匹配,則允許進一步的讀寫等操作。

程序流程結構框圖

    對卡的密碼驗證的三遍認證過程:由Mifare 卡片向讀寫器發(fā)送一個隨機數(shù)據(jù)RB;由讀寫器收到RB 后向Mifare 卡片發(fā)送一個令牌數(shù)據(jù)TOKENAB,其中包含了讀寫器發(fā)出的一個隨機數(shù)據(jù)RA;Mifare 卡片收到TOKEN AB 后,對TOKEN AB 的加密的部分進行解密,并校驗第一次由Mifare 卡片發(fā)出去的隨機數(shù)RB 是否與環(huán)中接收到的TOKEN AB 中的RA 相一致;如果校驗是正確的,則Mifare 卡片向讀寫器發(fā)送令牌TOKEN BA 給讀寫器;讀寫器收到令牌TOKEN BA 后,讀寫器將對令牌TOKEN BA 中的RB 進行解密;并校驗第一次由讀寫器發(fā)出去的隨機數(shù)RA 是否與接收到的TOKEN BA 中的RB 相一致;如果上述的每一步都為“真”,都能正確通過驗證,則整個的認證過程將成功。讀寫器將能對剛剛認證通過的卡片上的這個扇區(qū)可以進入下一步的操作(READ/WRITE 等操作)??ㄆ械钠渌葏^(qū)由于有其各自的密碼,因此不能對其進行進一步的操作。如想對其他扇區(qū)進行操作,必須完成上述的認證過程。認證過程中的任何一環(huán)出現(xiàn)差錯,整個認證將告失敗,必須從新開始。MIFARE 卡片上有16 個扇區(qū),每個扇區(qū)都可分別設置各自的密碼,互不干涉。因此每個扇區(qū)可獨立地應用于一個應用場合,滿足一卡多用的需要。 

    程序里放置了一個身份驗證模塊來維護系統(tǒng)安全,確保用戶不能越權使用。用戶在對卡數(shù)據(jù)或數(shù)據(jù)庫進行操作的時候會要求輸入密碼。不同的用戶輸入不同的個人密碼將擁有不同的權限,密碼是與卡相對應的,刷卡相當于輸入用戶名。不輸入任何密碼只能基本的簽到功能,輸入用戶密碼可以查詢個人資料,通過鍵盤輸入密碼,允許持卡人輸入三次密碼,如果三次輸?shù)亩疾粚?,卡就會被鎖住,只有PIN 碼對了,用戶才能對卡進行操作。高級系統(tǒng)管理員才有權限修改用戶卡和數(shù)據(jù)庫資料和讓鎖住的卡重新投入使用,保證整個系統(tǒng)安全使用。程序在運行過程中檢測到串口上下行數(shù)據(jù)為: 
    【W(wǎng)rite 數(shù)據(jù):】20 主機首先發(fā)送
    【Read 數(shù)據(jù):】06 收到ZLG500B 的正確響應
    【W(wǎng)rite 數(shù)據(jù):】00 52 00 AD 03 主機發(fā)送打開串口的命
    令03 作為終止符
    【W(wǎng)rite 數(shù)據(jù):】20
    【Read 數(shù)據(jù):】06
    【W(wǎng)rite 數(shù)據(jù):】00 41 01 00 BF 03 主機發(fā)送request 命令
    【Read 數(shù)據(jù):】20
    【W(wǎng)rite 數(shù)據(jù):】06
    【Read 數(shù)據(jù):】00 00 02 04 00 F9 03 request 命令成功返回
    【W(wǎng)rite 數(shù)據(jù):】20 20 20 主機收不到響應的情況,將
    連發(fā)三次后返回
    通過長達100h 的單機測試,程序運行良好,完全能達到設計的要求。 
    
    3 結束語 

    基于PC 開發(fā)讀卡器程序,是實現(xiàn)校園一卡通系統(tǒng)的關鍵,利用現(xiàn)有普及的PC 機,能縮減構建系統(tǒng)的成本,提高資源利用率,簡化校園管理,方便學生的校園生活。隨著不斷深入研究完善校園一卡通系統(tǒng),系統(tǒng)將能應用到更多領域,有著廣闊的前景

本文關鍵詞:非接觸IC卡,IC卡,讀卡器,校園一卡通
回到頂部
国产白丝无码免费视频高潮,日本最新免费二区三区,精品欧美一区二区三区成人片在线,国产白嫩护士在线播放,GOGO人体大胆全球少妇