问题描述
我有一个带有 Arduino 库的 MFRC522,想经常检查标签是否仍然存在。 对于一个标签,这很容易实现。
即使在 PICC_Select
和 PICC_HaltA
范围内有多个标签,也很容易实现仅读取新标签。在这种情况下,旧标签不会干扰 select 调用。
问题是我还想检查范围内是否有 2 个 TAG。
在这种情况下,当 STATUS_ERROR
的范围内有多个标签或只有一个标签 uid 可用于 PICC_Select
(通常是具有较高 ID 的标签)时,我只会得到 PICC_Select
。
是否有可能仅停止一个标签或仅唤醒具有已知 UID 的特定标签?
[...]
result = mfrc522.PICC_WakeupA(bufferATQA,&bufferSize);
if(result != MFRC522::StatusCode::STATUS_OK)
return -1;
while(true) {
cardUidTmp = cardUidActivePrev[pos];
result = mfrc522.PICC_Select(&cardUidTmp);
if (result != MFRC522::StatusCode::STATUS_OK) {
break;
}
pos +=1;
// tired this but it does not help to detect more than one card
//mfrc522.PICC_HaltA();
snprintf(logBuf,sizeof(logBuf),"card found is %d:%d:%d:%d\n",cardUidTmp.uidByte[0],cardUidTmp.uidByte[1],cardUidTmp.uidByte[2],cardUidTmp.uidByte[3]
);
Serial.print(logBuf);
if(cardUidActiveCount<sizeof(cardUidActive)/sizeof(cardUidActive[0])) {
cardUidActive[cardUidActiveCount]=cardUidTmp;
cardUidActiveCount +=1;
}
}
[...]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)