摘要:4軟件設(shè)計與實現(xiàn)4.1軟件設(shè)計RFID中間件標(biāo)準(zhǔn)化劃分為5部分:底層數(shù)據(jù)通信接口組件、設(shè)備網(wǎng)絡(luò)接口組件、設(shè)備參數(shù)接口組件、對標(biāo)簽讀寫操作接口組件和數(shù)據(jù)庫接口組件。各接口組件既相對獨立,又密切聯(lián)系。其中,本中間件的操作標(biāo)簽是符合ISO/IEC15693協(xié)議的電子標(biāo)簽。底層數(shù)據(jù)通信接口組件:負(fù)責(zé)數(shù)據(jù)通信的鏈路層和物理層,是讀寫器
4 軟件設(shè)計與實現(xiàn)
4.1 軟件設(shè)計
RFID中間件標(biāo)準(zhǔn)化劃分為5部分: 底層數(shù)據(jù)通信接口組件、設(shè)備網(wǎng)絡(luò)接口組件、設(shè)備參數(shù)接口組件、對標(biāo)簽讀寫操作接口組件和數(shù)據(jù)庫接口組件。各接口組件既相對獨立,又密切聯(lián)系。其中,本中間件的操作標(biāo)簽是符合ISO/IEC 15693協(xié)議的電子標(biāo)簽。
底層數(shù)據(jù)通信接口組件: 負(fù)責(zé)數(shù)據(jù)通信的鏈路層和物理層,是讀寫器與應(yīng)用軟件通信的物理基礎(chǔ);在應(yīng)用邏輯上,與應(yīng)用通信協(xié)議無關(guān)。所以,底層數(shù)據(jù)通信應(yīng)獨立設(shè)計相對固定的接口,與高層應(yīng)用分離。
設(shè)備網(wǎng)絡(luò)接口組件: 為客戶提供連接通信鏈路上的RFID讀寫器信息。
設(shè)備參數(shù)接口組件: 提供更改讀寫器工作參數(shù)的接口,實現(xiàn)設(shè)備管理功能。
對標(biāo)簽讀寫操作接口組件:為讀寫器實時工作時提供與計算機通信的接口,兩者在用戶和使用功能上相對對立,也可獨立設(shè)計。
數(shù)據(jù)庫接口組件: 實現(xiàn)對后臺數(shù)據(jù)庫的操作,為RFID中間件的開發(fā)軟件提供標(biāo)準(zhǔn)的函數(shù)接口。
按照模塊的應(yīng)用層次和應(yīng)用對象的不同獨立進(jìn)行設(shè)計,既降低了系統(tǒng)的復(fù)雜性,同時又能提高系統(tǒng)的穩(wěn)定性和重用性。
4.2 軟件實現(xiàn)
軟件設(shè)計在Windows環(huán)境下,利用Visual C++ 6.0開發(fā)RFID中間件,實現(xiàn)讀寫器與計算機之間的企業(yè)局域網(wǎng)的通信;后臺數(shù)據(jù)庫選用SQL Server 2000,接口函數(shù)最后被封裝成dll文件。
DLLIMPORTLONG OpenConnect(int nComType,char*Param)//打開一個通信連接
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)//偵測網(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)簽的多個數(shù)據(jù)塊
BOOL CPrr8152Deal::WriteMultiBlocks(long hConnect, BYTE byAddr, BYTE byMode, char *chUID, BYTE byBeginBlock,BYTE byBlocks, BYTE byDBSize, char *chWriteData, BYTE byDataFormat)// 寫標(biāo)簽的多個數(shù)據(jù)塊[1] [2] [3] [4] [5]