在C中存储和比较字节值

时间:2017-01-08 14:19:54

标签: c arduino-uno

我有一个带有MFRC522 RFID接收器模块的Arduino Uno设置。我正在尝试创建一个验证系统,在其中我使用卡的UID打开L.E.D. 这是我目前的代码:

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

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

void setup() {
    Serial.begin(9600); // Initialize serial communications with the PC
    SPI.begin();            // Init SPI bus
    mfrc522.PCD_Init(); // Init MFRC522 card
    Serial.println("Scan PICC to see UID and type...");
}

void loop() {
    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
        return;
    }

    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial()) {
        return;
    }

    byte readCard[7] ;
    byte cardCode[7] = E05E987;

Serial.println("Scanned PICC's UID:");
for (int i = 0; i < mfrc522.uid.size; i++) {
    readCard[i] = mfrc522.uid.uidByte[i];
    Serial.print(readCard[i], HEX);
  }
  Serial.println("");


  if (readCard == cardCode){
    Serial.println("Correct Code");
    return;
    }
}

然而,当我编译这段代码时,我遇到了这个错误:

/root/Arduino/RFID_Check_/RFID_Check_.ino: In function 'void loop()':
RFID_Check_:28: error: 'E05E987' was not declared in this scope
     byte cardCode[7] = E05E987;
                        ^
exit status 1
'E05E987' was not declared in this scope

如何解决此错误?我试过改变方括号之间的值无济于事。

1 个答案:

答案 0 :(得分:0)

你判断一个7字节的数组。看来你想给它分配一个值;但是,该值不适合一个字节。

要指定十六进制值,必须在其前面加0x,以便0xE05E987为正确的十六进制值。

但是这个值对于一个字节来说太大了。您可以按如下方式将值分配给数组:

byte cardCode[7] = {0xE0, 0x5E, 0x98, 0x07};

未提供的任何值都将为零。以上内容已初始化cardCode[0]cardCode[3],并将余数设置为零。