3

我刚刚提取了我的程序有问题的部分,我使用RFID.hSPI.h,我只想知道如何在 RFID 卡上读取(用安卓手机写的)我只写一个字母:R、G、B , Y, ...(代表颜色),在我可以在扇区 04 看到的 Android 工具上:?TenR?当十之后的“R”是我想读的字符串时:

    char buffer_data[8];
    rfid.read(0x04,buffer_data);
  
    String myString = String(buffer_data);
    Serial.println(myString);

我只想知道如何输出=>“R”(04扇区RFID卡上的文本):它输出类似的东西:

22:05:15.885 -> 
22:05:15.885 -> &⸮
22:05:15.885 -> ⸮⸮

与其他卡(Y,B char内部)相同的输出......

卡数据截图(Mifare classic 1k(716B可写)):

我要读取的卡片数据+字符串的屏幕截图

4

2 回答 2

2

带有 rfid.read 的库 RFID.h 不起作用... https://github.com/song940/RFID-RC522 不要使用这个库!

lib 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));
}

仅在 NTAG215 上输出标签上的第一个字母(如果您使用 Android NFC 工具应用程序编写文本数据)(其他标签 = 不同的地址/位置)!

于 2020-07-28T11:42:15.160 回答
0

我假设“正方形”是指打印到标准输出的 ASCII 数字。我想知道read_char十六进制是什么,所以不要将它作为一个字符打印到stdout,而是打印它的十六进制表示,看看你得到了什么值。由于可用的系统信息有限,很难为您提供更准确的故障排除步骤。

于 2020-07-25T20:10:52.597 回答