Нужна небольшая помощь, чтобы исправить программу 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, распечатайте его шестнадцатеричное представление и посмотрите, какое значение вы получите. Трудно дать вам более точные шаги по устранению неполадок с ограниченной доступной системной информацией.

Другие вопросы по тегам