2

我试图向我的 ISO15693 标签发送一个 readMultipleBlocks 命令,该标签在 android 上完美运行。然而,在 iOS 上,我总是收到“标签连接丢失”错误,我也尝试了 readSingleBlock,但出现了同样的错误。

My Tag 是符合 ISO15693 规范的 ICODE SLIX2。

如果我没有将我的标签 ID 包含在寻址读取命令中,我也会在 android 上遇到此错误。但是使用 iOS 我无法创建自己的自定义命令,而必须使用苹果的 ISO15693Tag 接口。我无法实际检查 iOS 设备发送的原始命令是什么样子的。

这是我在 android 上使用的自定义命令,通过 transieve(byte[] command) 方法发送它:

          0x20, // Addressed Flag
          0x23, // Command: Read multiple blocks
          0x00, // TAG UID placeholder
          0x00, // TAG UID placeholder
          0x00, // TAG UID placeholder
          0x00, // TAG UID placeholder
          0x00, // TAG UID placeholder
          0x00, // TAG UID placeholder
          0x00, // TAG UID placeholder
          0x00, // TAG UID placeholder
          0x00, // First block (offset)
          0x08  // Number of blocks to read

遗憾的是,根本没有关于 ISO15693Tag 的 readMultipleBlock 命令的文档。ISO15693Tag 的 readSingleBlock 命令的文档指出,默认使用地址标志,并且标签的 id 包含在命令中。但同样没有办法检查这一点。

这是快速代码的片段:

        guard let connectedTech = techs[handle] as? NFCISO15693Tag else {
            result(FlutterError(code: "not_found", message: "Tag is not found.", details: nil))
            return
        }

        connectedTech.readMultipleBlocks(requestFlags: [.address], blockRange: NSMakeRange(0, 8)) { data, error in
            if let error = error {
                result(error.toFlutterError())
                return
            }

            result(data)
        }

标签被转换为 ISO15693Tag 没有问题,但是一旦我发送 readMultipleBlocks 命令,就会出现“标签连接丢失”异常。

任何人也处理过这个问题并有任何建议。对我来说似乎真的很愚蠢,不能像在 Android 中那样使用字节数组创建自己的命令。

任何帮助,将不胜感激。

4

0 回答 0