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