使用 MFRC522 唤醒和检查两个标签的存在

问题描述

我有一个带有 Arduino 库的 MFRC522,想经常检查标签是否仍然存在。 对于一个标签,这很容易实现。

即使在 PICC_SelectPICC_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 (将#修改为@)