我正在研究一个小型RFID项目,但我遇到了一个小问题。
我有一个连接到Arduino UNO的RC522 RFID模块,我希望能够读取TAGS,然后将读取的ID与字符串进行比较。
ID将存储到大小为4的字节数组中。
例如......
byte readTAG[4];
将举行......
{ C3, 7D, DF, C7 }
我现在想要获取此数组并将其转换为字符串,例如......
"C37DDFC7"
这样......我可以做
等操作if(readTag == "12345678") {
// Do something...
}
我该怎么做呢?
提前致谢!
这是我的代码:
#include <MFRC522.h>
#include <SPI.h>
int RST_PIN = 9;
int SDA_PIN = 10;
byte readCard[4];
MFRC522 mfrc522(SDA_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
}
void loop() {
ReadTAG();
}
// Lese TAG aus und gebe die ID im Serial Monitor aus.
void ReadTAG() {
// Wenn ein neuer TAG vorhanden ist UND erfolgreich gelesen werden konnte, dann Lese TAG aus.
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
for (int i = 0; i < 4; i++) {
readCard[i] = mfrc522.uid.uidByte[i];
Serial.print(readCard[i], HEX);
}
Serial.println();
// Wenn der TAG ausgelesen wurde dann stoppe das Lesen da er sonnst das gleiche TAG vielemale ausließt.
mfrc522.PICC_HaltA();
}
}
答案 0 :(得分:0)
我讨厌C / C ++的一些事情。还有一些我没有。
#define cmpID(var, b1, b2, b3, b4) \
( \
var[0] == 0x ## b1 && \
var[1] == 0x ## b2 && \
var[2] == 0x ## b3 && \
var[3] == 0x ## b4 \
)
...
if (cmpID(readTag, 12, 34, 56, 78))
{
...
}