RFID中間件數(shù)據(jù)的過濾方法的研究和分析
首先是為標簽構建一個TagEvent類,該類包含的關鍵參數(shù)和方法為:
public class TagEvent imp lements Runnable{
int value;
boolean detecStauts = false;
int fmax;
int fmin;
public void run ( ) {
while ( value > 0) {
try{
Thread. currentThread ( ). sleep (1000) ;
} catch ( Interrup tedExcep tion e) { }
if ( value > = fmax! detecStauts) {
(觸發(fā)標簽出現(xiàn)記錄)
detecStauts = true;
}
else if ( value = fmindetecStauts) {
(觸發(fā)標簽消失記錄)
detecStauts = false;
}
value - - ;
} }
當過濾模塊主程序檢測到一個新標簽的時候,便為其建立一個Tag Event類的對象new Tag,并對各個關鍵字段賦初值,同時啟動該對象內(nèi)部的計時器線程:
new Thread ( newTag). start ( ) ;該計時器線程的作用是每個報告周期對標簽權值value進行檢查并觸發(fā)相應操作. 每次檢查后將標簽權值value減1,以實現(xiàn)當標簽未被報告時其權值的逐步下降. 當權值value減到0的時候,計時器線程停止,這時可以銷毀該對象。
當過濾算法主模塊發(fā)現(xiàn)報告的標簽已存在時,對該標簽對象的value值進行累加:
newTag. value + = valueStep;
if ( newTag. value > = newTag. fmax) {
newTag. value = newtag. fmax;
}
其中valueStep就是算法中定義的累加權值. 如果權值value已經(jīng)達到閥值fm ax,則將其保持在該值,防止經(jīng)過多個上報周期后標簽權值過高,影響后繼判斷。
3. 2 實驗驗證
在驗證的過程中模擬了2 種應用場景: 第1種是帶讀寫器的貨架,該場景要求達到貨架讀寫器能穩(wěn)定識別放入的帶標簽物品,不會因為信號波動而誤報貨品離開信息,并對經(jīng)過貨架的其他物品保持較低的敏感度;第2種是門禁系統(tǒng),要求對出現(xiàn)在讀寫范圍內(nèi)的標簽立刻做出反應,但在一定時間內(nèi)不能重復上報同一個標簽。
在第1種貨架系統(tǒng)場景中,設置valueS tep = 3,fapp = 10, fdisp = 0,當標簽進入讀寫器范圍后,經(jīng)過5 s左右的時間過濾模塊觸發(fā)標簽出現(xiàn)操作,人為將標簽多次短時間移出讀寫器范圍,模擬信號干擾和波動的情況,并將另一標簽從讀寫器范圍內(nèi)移過,讀寫器均未觸發(fā)多余的標簽出現(xiàn)和消失操作。
在第2 種門禁系統(tǒng)場景中,設置valueS tep =10, fapp = 10, fd isp = 0,當標簽進入讀寫器范圍內(nèi),過濾模塊立即觸發(fā)了標簽出現(xiàn)操作,當標簽消失后, 10 s內(nèi)不再重新觸發(fā)。
4 結(jié)束語
本文中通過對RFID中間件實際應用場景的分析和現(xiàn)有過濾算法的研究,設計并實現(xiàn)了一種適用范圍廣,帶有噪點抑制功能的RFID數(shù)據(jù)過濾算法, 通過一個java程序在模擬場景中對算法進行了實驗。結(jié)果表明,該算法具有良好的抑噪和去冗能力,在不同參數(shù)的組合下,可以適應各種實際應用需求, 該過濾算法為更高層的業(yè)務規(guī)則過濾模塊奠定了很好的數(shù)據(jù)基礎,對于RFID中間件的設計和開發(fā)有一定的實用價值。
評論