Arduino преобразование байтового массива в строку?

Я работаю над небольшим проектом RFID, но у меня есть одна маленькая проблема.

У меня есть RFID-модуль RC522, подключенный к Arduino UNO, и я хочу иметь возможность читать TAGS, а затем сравнивать идентификатор чтения со строкой.

Идентификатор будет сохранен в байтовом массиве размером 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

Решение

Некоторые вещи о 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))
{
...
}
0

Другие решения


По вопросам рекламы [email protected]