摘要:4軟件設(shè)計(jì)與實(shí)現(xiàn)4.1軟件設(shè)計(jì)RFID中間件標(biāo)準(zhǔn)化劃分為5部分:底層數(shù)據(jù)通信接口組件、設(shè)備網(wǎng)絡(luò)接口組件、設(shè)備參數(shù)接口組件、對(duì)標(biāo)簽讀寫(xiě)操作接口組件和數(shù)據(jù)庫(kù)接口組件。各接口組件既相對(duì)獨(dú)立,又密切聯(lián)系。其中,本中間件的操作標(biāo)簽是符合ISO/IEC15693協(xié)議的電子標(biāo)簽。底層數(shù)據(jù)通信接口組件:負(fù)責(zé)數(shù)據(jù)通信的鏈路層和物理層,是讀寫(xiě)器
4 軟件設(shè)計(jì)與實(shí)現(xiàn)
4.1 軟件設(shè)計(jì)
RFID中間件標(biāo)準(zhǔn)化劃分為5部分: 底層數(shù)據(jù)通信接口組件、設(shè)備網(wǎng)絡(luò)接口組件、設(shè)備參數(shù)接口組件、對(duì)標(biāo)簽讀寫(xiě)操作接口組件和數(shù)據(jù)庫(kù)接口組件。各接口組件既相對(duì)獨(dú)立,又密切聯(lián)系。其中,本中間件的操作標(biāo)簽是符合ISO/IEC 15693協(xié)議的電子標(biāo)簽。
底層數(shù)據(jù)通信接口組件: 負(fù)責(zé)數(shù)據(jù)通信的鏈路層和物理層,是讀寫(xiě)器與應(yīng)用軟件通信的物理基礎(chǔ);在應(yīng)用邏輯上,與應(yīng)用通信協(xié)議無(wú)關(guān)。所以,底層數(shù)據(jù)通信應(yīng)獨(dú)立設(shè)計(jì)相對(duì)固定的接口,與高層應(yīng)用分離。
設(shè)備網(wǎng)絡(luò)接口組件: 為客戶(hù)提供連接通信鏈路上的RFID讀寫(xiě)器信息。
設(shè)備參數(shù)接口組件: 提供更改讀寫(xiě)器工作參數(shù)的接口,實(shí)現(xiàn)設(shè)備管理功能。
對(duì)標(biāo)簽讀寫(xiě)操作接口組件:為讀寫(xiě)器實(shí)時(shí)工作時(shí)提供與計(jì)算機(jī)通信的接口,兩者在用戶(hù)和使用功能上相對(duì)對(duì)立,也可獨(dú)立設(shè)計(jì)。
數(shù)據(jù)庫(kù)接口組件: 實(shí)現(xiàn)對(duì)后臺(tái)數(shù)據(jù)庫(kù)的操作,為RFID中間件的開(kāi)發(fā)軟件提供標(biāo)準(zhǔn)的函數(shù)接口。
按照模塊的應(yīng)用層次和應(yīng)用對(duì)象的不同獨(dú)立進(jìn)行設(shè)計(jì),既降低了系統(tǒng)的復(fù)雜性,同時(shí)又能提高系統(tǒng)的穩(wěn)定性和重用性。
4.2 軟件實(shí)現(xiàn)
軟件設(shè)計(jì)在Windows環(huán)境下,利用Visual C++ 6.0開(kāi)發(fā)RFID中間件,實(shí)現(xiàn)讀寫(xiě)器與計(jì)算機(jī)之間的企業(yè)局域網(wǎng)的通信;后臺(tái)數(shù)據(jù)庫(kù)選用SQL Server 2000,接口函數(shù)最后被封裝成dll文件。
DLLIMPORTLONG OpenConnect(int nComType,char*Param)//打開(kāi)一個(gè)通信連接
DLLIMPORTLONG CloseConnect(long hHandle)//關(guān)閉通信連接
DLLIMPORTLONG WriteConnect(long hHandle,
BYTE *byBuffer, int nSize, const char *strToIP = NULL, int nToPort = 0,BOOL bBroadcast = FALSE)//從通信連接發(fā)送數(shù)據(jù)
DLLIMPORTLONG ReadConnect(long hHandle,
BYTE *byBuffer,int nSize, char * chIpFrom = NULL,
int *nPortFrom = NULL)//從通信連接讀取接收到的數(shù)據(jù)
long DetectAllDevice(int &iDevCnt, char *chData)//偵測(cè)網(wǎng)絡(luò)中所有基于TCPIP相連接的設(shè)備(或者TCP/IPRS485轉(zhuǎn)換器),返回網(wǎng)絡(luò)中網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)配置信息
DLLEXPORT SetDeviceParameters(char* strDevMacAddr, char *strNewMacAddr,char *strDevIP, char *strSubnet, char *strGateWay,char *strRemoteIP, int remotePort,
int localPort,long baudRate, BYTE bParity, BYTE bProtocol)//設(shè)置設(shè)備網(wǎng)絡(luò)配置信息
BOOL CPrr8152Deal::ReadMultiBlocks(long hConnect, BYTE byAddr, BYTE byMode, char *chUID, BYTE byBeginBlock, BYTE byBlocks, BYTE &byDB_N, BYTE &byDB_Size, char *chData, BYTE byDataFormat)//讀取標(biāo)簽的多個(gè)數(shù)據(jù)塊
BOOL CPrr8152Deal::WriteMultiBlocks(long hConnect, BYTE byAddr, BYTE byMode, char *chUID, BYTE byBeginBlock,BYTE byBlocks, BYTE byDBSize, char *chWriteData, BYTE byDataFormat)// 寫(xiě)標(biāo)簽的多個(gè)數(shù)據(jù)塊[1] [2] [3] [4] [5]