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