私はRFIDカードを読んでいて、カードがリーダーを通過するとIDを比較しようとしているので、リーダーは実際にそれを2回以上読み取るので、uint32_t型のC++の等価性が比較されない
更新日:
uint32_t priorTag = 0000000;
tag = IndentifyTag(entryRFIDReader);
if (tag == priorTag)
{
Serial.println("These tags are the same!!!");
}
if (tag != priorTag)
{
Serial.println("I got here!");
tagCount += 1;
}
priorTag = tag;
SSerial.println("tagCount = "); Serial.println(tagCount);
問題があっても次のとおりです。次のコードは、IDの
uint32_t IndentifyTag(Adafruit_PN532 rfidReader)
{
uint8_t tagID[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t tagIDLength; // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
uint32_t cardid = tagID[0];
boolean success = rfidReader.readPassiveTargetID(PN532_MIFARE_ISO14443A, &tagID[0], &tagIDLength);
if (success) {
// Display some basic information about the card for testing
Serial.println("Found an ISO14443A card");
Serial.print(" UID Length: "); Serial.print(tagIDLength, DEC); Serial.println(" bytes");
Serial.print(" UID Value: "); rfidReader.PrintHex(tagID, tagIDLength);
if (tagIDLength == 4)
{
// Mifare Classic card
cardid <<= 8;
cardid |= tagID[1];
cardid <<= 8;
cardid |= tagID[2];
cardid <<= 8;
cardid |= tagID[3];
Serial.print("Mifare Classic card #");
Serial.println(cardid);
}
Serial.println("");
}
return cardid;
}
、次のようにswitch文の場合には、私は平等のためのタグをテストしていカードを取得します1回のパスで同じカードを3回または4回読み取ると、それらは決して等しくないので、tagCounterはダプをカウントしています。 tagとpriorTagは両方ともuint32_t型であるため、==と比較できるはずですが、このコンテキストでは動作しません。
Found an ISO14443A card UID Length: 4 bytes UID Value: 0x92 0x77 0x88 0xBB Mifare Classic card #7833787 I got here! tagCount = 1 Found an ISO14443A card UID Length: 4 bytes UID Value: 0x92 0x77 0x88 0xBB Mifare Classic card #7833787 I got here! tagCount = 2 Found an ISO14443A card Mifare Classic card #7833787 I got here! tagCount = 3 Found an ISO14443A card Mifare Classic card #7833787 I got here! tagCount = 4
コードの該当部分がありません。 priorTagが宣言されている場所はわかりません。たぶんそれはループの中で宣言されているので、各ループの反復の始めに常に値0を持つことになります。 – NineBerry
@NineBerry ...それが宣言された、あなたはそれを逃した。 – dinotom
いいえ、あなたは誤解しました。問題は、コードの文脈で宣言されているところです。 – NineBerry