Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 使用MFRC522唤醒并检查两个标签的显示情况_Arduino_Rfid_Mfrc522 - Fatal编程技术网

Arduino 使用MFRC522唤醒并检查两个标签的显示情况

Arduino 使用MFRC522唤醒并检查两个标签的显示情况,arduino,rfid,mfrc522,Arduino,Rfid,Mfrc522,我有一个带有Arduino库的MFRC522,希望经常检查标记是否仍然存在。 对于一个标签来说,这是很容易实现的 此外,即使通过PICC\u Select和PICC\u HaltA在范围内有多个标签,也很容易实现仅读取新标签。在这种情况下,旧标签不会干扰select调用 问题是,我还想检查范围内是否有2个标记。 在这种情况下,只有当PICC\U Select的范围内有多个标签,或者PICC\U Select只有一个标签uid可用时,我才会得到STATUS\u ERROR(通常是id较高的标签)

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

此外,即使通过
PICC\u Select
PICC\u HaltA
在范围内有多个标签,也很容易实现仅读取新标签。在这种情况下,旧标签不会干扰select调用

问题是,我还想检查范围内是否有2个标记。 在这种情况下,只有当
PICC\U Select
的范围内有多个标签,或者
PICC\U Select
只有一个标签uid可用时,我才会得到
STATUS\u ERROR
(通常是id较高的标签)

是否有可能仅停止一个标记或仅唤醒具有已知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;
    }
}
[...]
[…]
结果=mfrc522.PICC_WakeupA(bufferATQA和bufferSize);
如果(结果!=MFRC522::StatusCode::STATUS\u OK)
返回-1;
while(true){
cardUidTmp=cardUidActivePrev[pos];
结果=mfrc522。PICC_选择(&cardUidTmp);
如果(结果!=MFRC522::StatusCode::STATUS\u OK){
打破
}
pos+=1;
//这样做很累,但检测多张卡也无济于事
//mfrc522.PICC_HaltA();
snprintf(logBuf,sizeof(logBuf),“找到的卡是%d:%d:%d:%d\n”,
cardUidTmp.uidByte[0],cardUidTmp.uidByte[1],
cardUidTmp.uidByte[2],cardUidTmp.uidByte[3]
);
串行打印(logBuf);
if(cardUidActiveCount