Нужна небольшая помощь, чтобы исправить программу RFID Arduino
Я только что извлек проблемную часть своей программы, я использую RFID.h и SPI.h, я просто хочу знать, как читать на RFID-карте (написанной с помощью телефона Android), я пишу только одну букву: R, G, B, Y,... (представляют цвет), на инструменте Android я вижу в секторе 04:?TenR? Когда "R" после десяти - это строка, которую я хочу прочитать:
char buffer_data[8];
rfid.read(0x04,buffer_data);
String myString = String(buffer_data);
Serial.println(myString);
Я только хочу знать, как вывести => "R" (текст на RFID-карте в секторе 04): он выводит что-то вроде этого:
22:05:15.885 ->
22:05:15.885 -> &⸮
22:05:15.885 -> ⸮⸮
С другими картами (символ Y, B внутри) такой же вывод...
Скриншот с данными карты (Mifare classic 1k (716B с возможностью записи)):
2 ответа
Библиотека RFID.h с rfid.read не работает... https://github.com/song940/RFID-RC522 не используйте эту библиотеку!
Библиотека https://github.com/miguelbalboa/rfid лучше, актуальнее и может читать большинство типов тегов!
Это фиксированный код для чтения первого текстового символа на NTAG215:
if (rfid.PICC_IsNewCardPresent()) {
if ( ! rfid.PICC_ReadCardSerial()) {
return;
}
Serial.println("");
String str;
byte buffer_data[18];
byte size_data = sizeof(buffer_data);
rfid.MIFARE_Read(4,buffer_data,&size_data);
str=String((char *)buffer_data);
Serial.println(str.charAt(9));
}
Выводите первую букву на теге (если вы пишете текстовые данные с помощью приложения Android NFC tools) только на NTAG215 (другой тег = другие адреса / позиция)!
Я предполагаю, что "квадрат" относится к номеру ASCII, напечатанному на stdout. Я бы хотел узнать, чтоread_char
находится в HEX, поэтому вместо того, чтобы печатать его как символ, stdout
, распечатайте его шестнадцатеричное представление и посмотрите, какое значение вы получите. Трудно дать вам более точные шаги по устранению неполадок с ограниченной доступной системной информацией.