基于ASP.NET的RFID刷卡系統(tǒng)設(shè)計(jì)
1.4 服務(wù)器端關(guān)鍵技術(shù)實(shí)現(xiàn)
本文引用地址:http://www.ex-cimer.com/article/266057.htm該刷卡系統(tǒng)是通過(guò)B/C模式與服務(wù)器端進(jìn)行數(shù)據(jù)交換的。工作人員瀏覽完數(shù)據(jù)并關(guān)掉網(wǎng)頁(yè)后,服務(wù)器端就會(huì)相應(yīng)地把對(duì)應(yīng)客戶端的頁(yè)面文件從內(nèi)存清除,刪除所有頁(yè)面的變量?jī)?nèi)存空間,并且不再運(yùn)行后臺(tái)文件cs的代碼。因此為了能夠一直運(yùn)行監(jiān)聽(tīng)讀卡信息的模塊,必須在Global.asax[6]啟動(dòng)監(jiān)聽(tīng)模塊的線程。
Global.asax是ASP.NET的一個(gè)全局文件,一直保存在內(nèi)存中,能夠一直運(yùn)行代碼。因此把監(jiān)聽(tīng)模塊的開(kāi)始線程放到Global.asax下。
Monitor是監(jiān)聽(tīng)模塊的開(kāi)始線程。這個(gè)線程在服務(wù)器開(kāi)始運(yùn)行的時(shí)候就開(kāi)始執(zhí)行,一直保存在InProc的運(yùn)行進(jìn)程中。這樣就可以保證系統(tǒng)能夠一直監(jiān)聽(tīng)刷卡數(shù)據(jù)的輸入并進(jìn)行處理。Monitor線程與頁(yè)面代碼相互獨(dú)立,不受各自影響,也就是就算用戶不瀏覽網(wǎng)頁(yè),也可以刷卡通過(guò)讀卡器查看數(shù)據(jù)。
Application是全局變量,也就是保存數(shù)據(jù)緩沖區(qū)。如果直接采用客戶讀取端口數(shù)據(jù)的方法,那么同時(shí)只能一個(gè)用戶讀取,而且這位用戶讀取完之后,數(shù)據(jù)就消掉,因此要放在全局變量中,這樣就能夠同時(shí)讓多終端查看數(shù)據(jù)。
當(dāng)線程發(fā)現(xiàn)有數(shù)據(jù)輸入的時(shí)候,馬上讀取每個(gè)字節(jié)的數(shù)據(jù),并且通過(guò)判斷協(xié)議判斷讀卡器地址取出唯一的RFID標(biāo)志號(hào)。過(guò)程如圖6。
評(píng)論