Arduino Seeedstudio NFC shield超轻写入
我正试图修改NFC屏蔽中的示例代码,以便能够写入Ultralight标记 我修改了PN532.cpp库文件中的代码,以包含以下函数: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
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个月前有它,那将是非常棒的:)