我正在尝试向 ACR122U 阅读器发送直接命令。我拥有的最简单的是:FF 00 48 00 00
该命令假定返回固件版本。使用 ACR122U 工具,我可以看到它工作正常。我正在尝试使用 nfc_initiator_transceive_bytes 发送它并获取固件版本。这就是我的做法:
uint8_t abtCmd[] = {0xFF,0x00,0x48,0x00,0x00};
int res = nfc_initiator_transceive_bytes(
pnd,
abtCmd,
5,
pbtRx,
400,
2000
);
这总是返回-2。nfc_initiator_transceive_bytes 不是正确的功能吗?我究竟做错了什么?谢谢!
PS:我在那里有 \xFF\x00\x00\x00\x05 因为这是手册所说的(API_ACR122U_v1.4.pdf 第 6.1 节直接命令)
我已经打开了 libnfc 的调试,我看到了这个:
调试 libnfc.driver.acr122_usb TX: 6f 0d 00 00 00 00 00 00 00 00 ff 00 00 00 08 d4 40 01 ff 00 48 00 00 调试
libnfc.driver.acr122_usb RX: 80 05 00 00 00 00 00 08 41 27 90 00
我可以看到 ff 00 00 00 所以我想我不必指定当我发送直接命令时,但这仍然返回:
调试 libnfc.chip.pn53x 芯片错误:“命令不可接受”(27),返回错误:“无效参数”(-2))
是不是 libnfc 添加的十六进制把这搞砸了?请问有人吗???
我还更改了初始代码。
我也尝试过使用 nfc_target_send_bytes:
nfc_target_send_bytes(pnd, abtCmd, 5,0);
这给了我一个分段错误。