基于W7100的以太網(wǎng)讀卡器的設(shè)計與實現(xiàn)
4 軟件設(shè)計
4.1 讀卡器與服務器通信
讀卡器與服務器的通信主要是讀卡器向服務器發(fā)送卡號信息和服務器向讀卡器發(fā)送寫卡信息。服務器與讀卡器之間采用面向連接的TCP /IP協(xié)議作為通信的底層協(xié)議,讀卡器作為客戶端。服務器負責監(jiān)聽讀卡器的連接請求。服務器端采用Socket套接字接口編寫應用程序。
讀卡器端將通過TCP/IP協(xié)議接收的數(shù)據(jù)保存到事先開辟的內(nèi)存接收緩沖區(qū),發(fā)送時將將要發(fā)送的數(shù)據(jù)存儲在數(shù)據(jù)發(fā)送緩沖區(qū),然后執(zhí)行發(fā)送。由于W7100已經(jīng)有硬核的套接字,所以可以直接使用。讀卡器端的端口狀態(tài)轉(zhuǎn)化如圖7所示:本文引用地址:http://cafeforensic.com/article/202423.htm
剛復位時讀卡器處于SOCK_CLOSED狀態(tài)。如果此時服務器端在監(jiān)聽,則經(jīng)過執(zhí)行OPEN和CONNECT操作后進入SOCK_ESTABLISHED狀態(tài)。這時候讀卡器就可以與服務器通過SEND和RECV操作傳輸信息。讀卡器主動執(zhí)行DICON操作或者接收到服務器端的CLOSE命令后就再次進入SOCK_CLO-SED狀態(tài),等待下次連接。為了實現(xiàn)讀卡器始終自動連接和斷線重連,方案采用了一個循環(huán)的switch語句,關(guān)鍵示例代碼如下:
讀卡器執(zhí)行設(shè)備監(jiān)控的流程就寫在示例的數(shù)據(jù)處理代碼部分。讀卡器內(nèi)部含有dataflash,用來保存IP地址、服務器地址和MAC地址等信息。在復位時讀取配置信息、調(diào)用初始化函數(shù)初始化以太網(wǎng)接口。
4.2 W7100讀寫IC卡
W7100在復位之后,首先要初始化微處理器和MFRC500,然后依次循環(huán)執(zhí)行配置命令、請求命令、防碰撞命令、選擇命令、證實命令、裝載密鑰命令、讀卡命令、卡號發(fā)送服務器、(等待接收反饋數(shù)據(jù))、(寫卡命令)、閃爍LED、蜂鳴器蜂鳴。這樣循環(huán)執(zhí)行就可以完成刷卡功能。各個命令和功能分別采用一個函數(shù)來實現(xiàn),具體的操作可以參考芯片使用手冊,在這里就不再贅述。下面把主函數(shù)主要結(jié)構(gòu)列舉如下:
5 結(jié)束語
本文詳細闡述了一種基于W7100的且支持以太網(wǎng)傳輸?shù)淖x卡器方案,給出了硬件和軟件設(shè)計的參考。該方案已經(jīng)成功應用在某大型事業(yè)單位實驗室管理系統(tǒng)中。經(jīng)過實際運行結(jié)果表明該方案能夠滿足刷卡管理的可靠性及實時性要求。較之以前的方案,該方案成本更低、更容易開發(fā)。
評論