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