Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Tags MFRC522多个读卡器标签移除检查_Tags_Nfc - Fatal编程技术网

Tags MFRC522多个读卡器标签移除检查

Tags MFRC522多个读卡器标签移除检查,tags,nfc,Tags,Nfc,硬/软件综述 OS version: Windows Home Arduino IDE version: 1.8.13 MFRC522 Library version: 1.5.1 Arduino device: nano MFRC522 device: joy-it 我尝试使用MFRC522读取NTag216标签并打印序列号,如果读取的标签与我已知的标签相同。 如果我只是尝试跟踪,当读取新标记时,它工作正常。 如果我试图跟踪丢失的标签,就会出现问题。 我是否缺少读卡器的检查功能,或者我的编码

硬/软件综述

OS version: Windows Home
Arduino IDE version: 1.8.13
MFRC522 Library version: 1.5.1
Arduino device: nano
MFRC522 device: joy-it
我尝试使用MFRC522读取NTag216标签并打印序列号,如果读取的标签与我已知的标签相同。 如果我只是尝试跟踪,当读取新标记时,它工作正常。 如果我试图跟踪丢失的标签,就会出现问题。 我是否缺少读卡器的检查功能,或者我的编码有其他问题

//Relevant Code:

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         9          
#define SS_1_PIN        10         //SS pin for reader 1
#define SS_2_PIN        8          //SS pin for reader 2

#define NR_OF_READERS   2
#define SIZE(array) sizeof(array)/sizeof(array[0])

struct Tag {
  byte uuid[7];
  char name[16];
  unsigned int battery_size;
};

struct Tag database[ ] { //my known id´s
  {{0x04, 0x41,0xC1,0xD2,0x2F,0x66,0x81}, "5", 0},{{0x04,0x30,0xDB,0x02,0x2B,0x5E,0x80},"6",1},{{0x04, 0x3A,0xD6,0x02,0x2B,0x5E,0x80},"7",2}
  };

struct Tag* lookup(byte* uuid) {
  for(unsigned int i=0; i<SIZE(database); i++) {
    if(memcmp(database[i].uuid, uuid, 7) == 0) {
      return &database[i];
    }
  }
  return NULL;
}
char buffer[32];
byte ssPins[ ] = {SS_1_PIN, SS_2_PIN};

MFRC522 mfrc522[NR_OF_READERS];   // Create MFRC522 instance.


void setup() {

  Serial.begin(9600); // Initialize serial communications with the PC
  SPI.begin();        // Init SPI bus

  for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
    mfrc522[reader].PCD_Init(ssPins[reader], RST_PIN); // Init each MFRC522 card
    Serial.print(F("Reader "));
    Serial.print(reader);
    Serial.print(F(": "));
    mfrc522[reader].PCD_DumpVersionToSerial();
  }
}

void loop() {
  
  bool cardremoved;
  
      for(uint8_t reader=0;reader<NR_OF_READERS;reader++){
      
          if(mfrc522[reader].PICC_IsNewCardPresent() && mfrc522[reader].PICC_ReadCardSerial()){    
             struct Tag* match = lookup(mfrc522[reader].uid.uidByte);
            
             if(match == NULL) {
              Serial.println ("no matching ID");
              return;
              }else {
              Serial.print(match->name);
              Serial.print("#1#1\n");
                }


/****************************** my problem occures down here***********************************************/
          }else if(!mfrc522[reader].PICC_IsNewCardPresent()){
            struct Tag* match = lookup(mfrc522[reader].uid.uidByte);
            
            if(match == NULL) {
              cardremoved=true; 
            }else {
             cardremoved=false;
            }
            if(cardremoved){
               Serial.println(cardremoved +" "+reader);
            }
          }
            // Halt PICC
          mfrc522[reader].PICC_HaltA();
            // Stop encryption on PCD
          mfrc522[reader].PCD_StopCrypto1();
     }
         
}
//相关代码:
#包括
#包括
#定义RST_引脚9
#定义读卡器1的SS_1_引脚10//SS引脚
#定义读卡器2的SS_2_引脚8//SS引脚
#定义读取器的数量2
#定义大小(数组)sizeof(数组)/sizeof(数组[0])
结构标签{
字节uuid[7];
字符名[16];
未签名的整数电池大小;
};
结构标记数据库[]{//我的已知id
{0x04,0x41,0xC1,0xD2,0x2F,0x66,0x81},“5”,0},{0x04,0x30,0xDB,0x02,0x2B,0x5E,0x80},“6”,1},{0x04,0x3A,0xD6,0x02,0x2B,0x5E,0x80},“7”,2}
};
结构标记*查找(字节*uuid){
对于(无符号整数i=0;i