Ⅰ rfid技術標准採用了哪些crc檢驗演算法
一般用CRC16的C語言演算法:
#define PRESET_VALUE 0xFFFF
#define POLYNOMIAL 0x8408
unsigned int uiCrc16Cal(unsigned char const * pucY, unsigned char ucX)
{
unsignedchar ucI,ucJ;
unsignedshort int uiCrcValue = PRESET_VALUE;
for(ucI = 0; ucI < ucX; ucI++)
{
uiCrcValue = uiCrcValue ^ *(pucY + ucI);
for(ucJ = 0; ucJ < 8; ucJ++)
{
if(uiCrcValue& 0x0001)
{
uiCrcValue= (uiCrcValue >> 1) ^ POLYNOMIAL;
}
else
{
uiCrcValue= (uiCrcValue >> 1);
}
}
}
return uiCrcValue;
}
pucY是要計算CRC16的字元數組的入口,ucX是字元數組中字元個數。
上位機收到數據的時候,只要把收到的數據按以上演算法進行計算CRC16,結果為0x0000表明數據正確。像UR6258 UR5002等超高頻讀寫器都是用這樣的演算法的
Ⅱ 關於RFID防碰撞演算法中的Q值演算法
Q=S/G,CN=1/Q,so C=G/(S*N)
Ⅲ 求解釋RFID的防碰撞演算法中的查詢樹QT演算法麻煩詳細說一下演算法原理,如何防碰撞的謝謝~
查詢樹QT(QueryTree)是一種典型的樹結構演算法,其演算法原理:讀寫器發送長度為k的prefix(前置代碼,一般為置於一組號碼前的數字或字母,表示所屬區域等);標簽ID中前kbit與prefix匹配的tag反饋第(k+1)bit至最後1bit。如果讀寫器收到的標簽ID碰撞,再分別將prefix加「1」和「0」,作為新的prefix發送出去。如果沒有碰撞,就表明一個標簽被識別了。
舉例:設有三個標簽ID分別為「010」,「011」,「100」,讀寫器的查詢序列首先置為「0」、「1」,讀寫器先發送序列「0」進行查詢,發生碰撞,此時將序列置為「00」、「01」,再次分別發送,序列「00」沒有響應,序列「01」發生碰撞,將序列置為「010」、「011」,成功識別。回溯到序列「1」,只有標簽「100」響應,成功識別。如圖所示