在 Windows 10 UWP App 上将 NTAG213 格式化为 NDEF

Format NTAG213 to NDEF on Windows 10 UWP App

是否可以使用 UWP 将空的 NTAG213 格式化为 NDEF?发现 ,其中谈到“Windows Phone 8.1 支持格式化为 NDEF for MIFARE Classic、MIFARE Ultralight 和 DESFire”。但是 NTAG213 或其他东西呢?那么 UWP 和 Win10 呢?

预格式化为 NDEF 标签,效果很好。写在预先格式化的标签上如下:

        string launchAppMessage = string.Join("#", new string[] {
                "MyAppName",
                "\tWindows\t",
                message+"#"
        });
        var dataWriter = new Windows.Storage.Streams.DataWriter();
        dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
        dataWriter.WriteString(launchAppMessage);
        _publishingMessageId = _device.PublishBinaryMessage("LaunchApp:WriteTag", dataWriter.DetachBuffer(), MessageWrittenHandler);

但是如何将空标签格式化为NDEF?下面的代码总是抛出 System.ArgumentException: Value does not fall in the expected range

    try
    {
        // empty NDEF message
        var test = new byte[] { 0x03, 0x03, 0xD0, 0x00, 0x00, 0xFE};
        var dataWriter = new Windows.Storage.Streams.DataWriter();
        dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
        dataWriter.WriteBytes(test);
        _publishingMessageId = _device.PublishBinaryMessage("NDEF:Empty", dataWriter.DetachBuffer(), MessageWrittenHandler);
    }
    catch (Exception ex)
    {
        var mesasge = ex.Message;
    }

我不太确定我使用的是正确的消息类型 ("NDEF:Empty") 还是我的 test 变量包含的字节是正确的。但是不知道还能做什么。

也许以前有人做过这个?提前致谢!

编辑:

经过一些研究,我在 未格式化 标签上尝试了这段代码。这不会引发异常,但标签仍然是空的。似乎这段代码什么都不做:

string launchAppMessage = string.Join("#", new string[] {
    "MyAppName",
    "\tWindows\t",
    "TEST"+"#"
    });

 var dataWriter = new Windows.Storage.Streams.DataWriter();
 dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
 dataWriter.WriteString(launchAppMessage);
 _publishingMessageId = _device.PublishBinaryMessage("LaunchApp:WriteTag", dataWriter.DetachBuffer(), MessageWrittenHandler);

编辑2:

我收集了更多信息以使我的问题更容易理解。

下面你可以看到同一个标签的两种状态。

右侧标签采用出厂默认值格式(无法从我的应用程序访问),左侧标签采用 NDEF 格式(并且无法从应用程序访问)。您可以在左侧看到一条空的 NDEF 消息 (03 03 D0 00 00 FE)。

我用黄色边框标记了这两个状态之间的区别。

所以我的问题。有一种方法可以将标记从 "right" 状态格式化为 "left"?

您可以在 Windows 10 UWP、phone 或桌面上对 NTAG213 或 NTAG216 进行 NDEF 格式化。不要使用 ProximityDevice 类,而是使用 Windows.Devices.SmartCards.SmartCardReader 类。 MS 在这里也写了一个有用的 PCSC 包装器:https://nfcsmartcardreader.codeplex.com/ 没有正确的 phone 或 phone 中的筹码,它不会工作,但如果你有正确的型号,这确实有效。这将为您提供对标签的低级别访问权限,以便根据需要编写块以使用 NDEF 格式设置标签。