0

我正在使用 NTAG I2C 加 2k 内存标签并使用 react-native-nfc-manager 库与标签交互。

有没有办法指定您打算写入的扇区?

我知道有一个 API 可以指定要写入的页面偏移量,但是如何指定页面偏移量所在的扇区?

(更新为包含以下代码示例)

let tech = Platform.OS === 'ios' ? NfcTech.MifareIOS : NfcTech.NfcA;
  await NfcManager.requestTechnology(tech, {
    alertMessage: 'Hold your phone close to the NFC tag.',
  });

  let fullLength = data.length + 7;
  let payloadLength = data.length + 3;

  let cmd =
    Platform.OS === 'ios'
      ? NfcManager.sendMifareCommandIOS
      : NfcManager.transceive;

  // select sector 2 prior to writing data
  await cmd([0xc2, 0xff]);
  await cmd([0x02, 0x00, 0x00, 0x00]);

  await cmd([
    0xa2,
    MEMORY_MAPPING[`${chunkToWriteTo}`][1],
    0x03,
    fullLength,
    0xd1,
    0x01,
  ]);
  await cmd([
    0xa2,
    MEMORY_MAPPING[`${chunkToWriteTo}`][2],
    payloadLength,
    0x54,
    0x02,
    0x65,
  ]);

  let currentPage = MEMORY_MAPPING[`${chunkToWriteTo}`][0] + 2;
  let currentPayload = [0xa2, currentPage, 0x6e];

  for (let i = 0; i < data.length; i++) {
    currentPayload.push(parseInt(data[i]));
    if (currentPayload.length == 6) {
      try {
        await cmd(currentPayload);
      } catch (error) {
        console.log(error);
      }
      currentPage += 1;
      currentPayload = [0xa2, currentPage];
    }
  }

提前致谢。

4

1 回答 1

1

因此,“NTAG I2C plus 2k”似乎是使用 NfcA 通信的经认证的 2 类标签。

这是数据表

此标签具有超过 2 类标准的附加命令来选择扇区,因为 2 类标签通常没有扇区。

因此,阅读数据表第 10.12 节,您将收发以下命令字节示例

C2h FFh- 选择部门

03h 00h 00h 00h- 第 3 区

A2h然后使用命令字节正常写入页面地址

react-native-nfc-manage提供了一种nfcAHandler带有收发器的方法来向 NFC 芯片发送和接收这些低级命令。

更新:

对于 iOS,它将 Type 2 标签视为 Mifare Ultralight 的标签,因此sendMifareCommandIOS从 API 发送相同的命令。

(Android和iOS都有nfcAHandler

注意我没有尝试过,我只是用普通的 Type 2 标签做事

于 2021-08-09T19:30:09.103 回答