Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino Seeedstudio NFC shield超轻写入_Arduino_Nfc_Mifare - Fatal编程技术网

Arduino Seeedstudio NFC shield超轻写入

Arduino Seeedstudio NFC shield超轻写入,arduino,nfc,mifare,Arduino,Nfc,Mifare,我正试图修改NFC屏蔽中的示例代码,以便能够写入Ultralight标记 我修改了PN532.cpp库文件中的代码,以包含以下函数: uint8_t PN532::mifareultralight_WriteDataBlock (uint8_t page, uint8_t * data) { if (page >= 64) { Console.println("Page value out of range"); // Return Failed

我正试图修改NFC屏蔽中的示例代码,以便能够写入Ultralight标记

我修改了PN532.cpp库文件中的代码,以包含以下函数:

uint8_t PN532::mifareultralight_WriteDataBlock (uint8_t page, uint8_t * data) {
    if (page >= 64) {
        Console.println("Page value out of range");

        // Return Failed Signal
        return 0;
    }

    /* Prepare the first command */
    pn532_packetbuffer[0] = PN532_COMMAND_INDATAEXCHANGE;
    pn532_packetbuffer[1] = 1;                      /* Card number */
    pn532_packetbuffer[2] = MIFARE_CMD_UL_WRITE;       /* Mifare Ultralight Write command = 0xA2 */
    pn532_packetbuffer[3] = page;            /* Page Number (0..63 for most cases) */
    memcpy (pn532_packetbuffer+4, data, 4);          /* Data Payload */

    /* Send the command */
    if ( HAL(writeCommand)(pn532_packetbuffer, 8) < 0) {
         Console.println("Failed to receive ACK for write command");

         // Return Failed Signal
         return 0;
    }
    delay(10);

    /* Read the response packet */
    HAL(readResponse)(pn532_packetbuffer, sizeof(pn532_packetbuffer));

    Console.print(sizeof(pn532_packetbuffer));

    // Return OK Signal
    return 1;
}
uint8\u t PN532::mifareultralight\u writedablock(uint8\u t页面,uint8\u t*数据){
如果(第>=64页){
Console.println(“页面值超出范围”);
//返回失败信号
返回0;
}
/*准备第一个命令*/
pn532_packetbuffer[0]=pn532_命令\u数据交换;
pn532_packetbuffer[1]=1;/*卡号*/
pn532_packetbuffer[2]=MIFARE_CMD_UL_WRITE;/*MIFARE Ultralight WRITE命令=0xA2*/
pn532_packetbuffer[3]=页码;/*页码(大多数情况下为0..63)*/
memcpy(pn532_packetbuffer+4,数据,4);/*数据有效负载*/
/*发出命令*/
如果(HAL(写命令)(pn532_packetbuffer,8)<0){
Console.println(“未能接收写入命令的确认”);
//返回失败信号
返回0;
}
延迟(10);
/*读取响应包*/
HAL(读取响应)(pn532_packetbuffer,大小为(pn532_packetbuffer));
控制台打印(大小(pn532_packetbuffer));
//返回正常信号
返回1;
}

控制台告诉我已成功写入标签,但当我使用带有NXP Taginfo的android手机读取标签时,标签上没有显示任何数据。

您尝试写入哪些页面?您是否有理由专门检查
if(HAL(writeCommand)(pn532_packetbuffer,8)<0)
中小于零的值(与该库中的其他类似方法不同)?是否有理由添加
延迟(10)?您是否有理由不检查
HAL(readResponse)(pn532_packetbuffer,sizeof(pn532_packetbuffer))
(与其他类似的写入方法不同)?我昨天发现了这个问题,我忘了取消注释MifareUltralight.cpp文件中的代码,该文件将消息存储在缓冲区中。我写了一个带有URL的NDEF记录。2.检查小于零的值是我拥有的标准库的一部分。3.这样做会更有意义,但目前它的代码没有改变。最新版本的&@doncoleman Thanke mate中已经添加了对编写Ultralight标记的支持,不过我不得不说,如果在2个月前有它,那将是非常棒的:)