需要一些帮助来理解一些代码

时间:2019-05-01 17:38:02

标签: arduino

我在Arduino中使用RFID RC522模块,代码的作用是,每当RFID标签靠近读取器时,它将使用当前时间戳读取标签号。但是我需要帮助来逐行理解代码。我已经了解了几行代码,但其余的我需要帮助。谢谢

#include <RFID.h>
#include <SPI.h>
#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);
int serNum[4];
String cardno;
int interval = 15000; // millisec
long now = 0;
long lasttime = millis(); //millis() no.of millisec the sketch was runnning
String readerID = "100"; // This is the reader ID 

void setup() {
    Serial.begin(9600); //setting data rate in bits per second 9600
    SPI.begin();
    rfid.init();
}

void loop() {
    now = millis();
    if (rfid.isCard()) {
        if (rfid.readCardSerial()) {
            lasttime = now;
            cardno = String(rfid.serNum[0]) +
            String(rfid.serNum[1]) +
            String(rfid.serNum[2]) +
            String(rfid.serNum[3]) +
            String(rfid.serNum[4]);

            Serial.print(readerID);
            Serial.print(":");
            Serial.println(cardno); //printing the cardno in the serial monitor
        }
    }
    rfid.halt();
    delay(1000);
}

1 个答案:

答案 0 :(得分:0)

您的代码中有未使用的变量。让我们摆脱它们,以减少混乱。我还添加了解释if语句的注释。

#include <RFID.h>
#include <SPI.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);
String cardno;
String readerID = "100";

void setup() {
    Serial.begin(9600);
    SPI.begin();
    rfid.init();
}

void loop() {
    if (rfid.isCard()) { // Look for a card. If found, return true.
        if (rfid.readCardSerial()) { // Read the serial number of the card. if successful, return true. 
            cardno = String(rfid.serNum[0]) +
            String(rfid.serNum[1]) +
            String(rfid.serNum[2]) +
            String(rfid.serNum[3]) +
            String(rfid.serNum[4]);
            Serial.print(readerID);
            Serial.print(":");
            Serial.println(cardno);
        }
    }
    rfid.halt();
    delay(1000);
}

从您的评论中猜测,我想您想了解RFID类是如何实现的。我建议看一下RFID.h和RFID.cpp。

RFID类具有一个名为serNum的数组。我的猜测是,当您调用readCardSerial()时,RFID实例会尝试在该阵列中存储卡号。如果操作成功,则返回true