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