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 01 00 41 27 90 00
私は ff 00 00 00 を見ることができるので、直接コマンドを送信するときにそれを指定する必要はないと思いますが、これはまだこれを返しています:
debug libnfc.chip.pn53x チップ エラー:「コマンドが受け入れられません」(27)、返されたエラー:「無効な引数」(-2))
これを台無しにしているのは、libnfc が追加している 16 進数ですか? 誰かお願いします???
初期コードも変更しました。
また、次のようにして nfc_target_send_bytes を試しました。
nfc_target_send_bytes(pnd, abtCmd, 5,0);
これにより、セグメンテーション違反が発生します。