gpt4 book ai didi

c - nfc.in数据交换 : Status code indicates an error

转载 作者:行者123 更新时间:2023-11-30 17:43:35 26 4
gpt4 key购买 nike

尝试与我的 Android 应用程序通信。我的应用程序将 32 字节 md5 哈希值发送回 Arduino。但是,当我收到响应 apdu 时,最后 9 个字节已损坏。

这是我的 Arduino 草图的相关部分:

        uint8_t response[32];

uint8_t responseLength = sizeof(response);

if (nfc.inDataExchange(message, sizeof(message), response, &responseLength)) {

Serial.print("TYPECASTED RAW: ");
for (int i = 0; i < sizeof(response); i++) {
Serial.print((char)response[i]);
}

Serial.println(" ");

输出:

TYPECASTED RAW: e68d3f574009cbbe0111502ÿÿÿÿÿÿÿÿÿ

如您所见,最后 9 个字节是错误的。现在,我在 Adafruit NFC I2C 库中打开了 Debug模式,当我发回 apdu 时,它会输出“状态代码指示错误”。

以下是 NFC 库中抛出状态代码的相关部分:

if (pn532_packetbuffer[5]==PN532_PN532TOHOST && pn532_packetbuffer[6]==PN532_RESPONSE_INDATAEXCHANGE) {
if ((pn532_packetbuffer[7] & 0x3f)!=0) {
#ifdef PN532DEBUG
Serial.println("Status code indicates an error");
#endif
return false;
}

有人知道为什么我的最后 9 个字节被损坏吗?

提前致谢。

最佳答案

您使用的尺寸错误。 sizeof(response) 声明变量 response 的大小,32 字节。

inDataExchange 使用 responseLength 返回填充字节,因此并未使用全部 32 个字节。

for (int i = 0; i < responseLength; i++) {
Serial.print((char)response[i]);
}

将打印刚刚使用的字节。

关于c - nfc.in数据交换 : Status code indicates an error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com