gpt4 book ai didi

Android NFC transceive() 使用 NFCF 技术(Sony Felica)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:44 24 4
gpt4 key购买 nike

我正在尝试将我的 Android 平板电脑连接到使用 NFC 的设备并从该设备检索数据。

我尝试过的

按照 nfc_device_detection_1.01.pdf 中的说明发送命令(第四章)

transceive() 的 android java 文档提到

“应用程序不得将 SoD(长度)或 EoD(CRC)附加到有效载荷,它将自动计算”

因此,我尝试过使用和不使用 CRC,使用和不使用数据包数据长度,但文档并不清楚我是否应该将其留空或者是否应该不包含它。

我采用的另一种方法是遵循 format_sequence_guidelines_1.1.pdf 的第 2.2 章中的图表。 (同步代码后跟请求)但结果相同。

问题

我不知道要将什么命令(字节)作为参数发送到 transceive() 方法中。**

问题

有没有人:

  • 有 NFCF 通信的例子吗?
  • 关于应使用的协议(protocol)/命令有更多信息吗?
  • 知道 NFC 标签是否包含命令所需的字节吗?

代码

transceive() 抛出 IO 异常“标签丢失”。

我相信这是因为我的命令字节不正确(我使用了一系列不同的命令)。

最后的注意事项(我也厌倦了将 transceive() 放在 while 循环中,每次都关闭并连接通信)

    String action = intent.getAction();

if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

NfcF nfcf = NfcF.get(tag);

nfcf.connect();

byte[] command = new byte[] { (byte) 0x00, (byte) 0x00};

byte[] response = nfcf.transceive(command);

}

如果您的答案需要任何其他信息,请发表评论。谢谢。

最佳答案

这是一个示例函数,说明如何在给定目标设备(标签)IDm、FeliCa 命令字节和有效负载的情况下发送“原始”命令:

byte[] rawCmd(NfcF nfcF, byte[] IDm, byte felicaCmd, byte[] payload) throws IOException {
final int len = payload != null ? payload.length : 0;

final byte[] cmd = new byte[10 + len];
cmd[0] = (byte) (10 + len);
cmd[1] = felicaCmd;
System.arraycopy(IDm, 0, cmd, 2, IDm.length);

if (payload != null) {
System.arraycopy(payload, 0, cmd, 10, payload.length);
}

nfcF.transceive(cmd);
}

关于Android NFC transceive() 使用 NFCF 技术(Sony Felica),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990618/

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