【问题标题】:Format NTAG213 to NDEF on Windows 10 UWP App在 Windows 10 UWP 应用上将 NTAG213 格式化为 NDEF
【发布时间】:2017-06-23 08:40:53
【问题描述】:

是否可以使用 UWP 将空的 NTAG213 格式化为 NDEF?找到this post,其中谈到“Windows Phone 8.1 支持将 MIFARE Classic、MIFARE Ultralight 和 DESFire 格式化为 NDEF”。但是 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:值不在预期范围内

    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 变量包含正确的字节。但不知道还能做什么。

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

编辑:

经过一番研究,我在 not formatted 标签上尝试了这段代码。这不会引发异常,但标签仍然为空。好像这段代码什么也没做:

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);

EDIT2:

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

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

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

我用黄色边框标记了这些状态之间的差异。

所以我的问题。有没有办法将标签从“右”状态格式化为“左”?

【问题讨论】:

  • 查看我在此处social.msdn.microsoft.com/Forums/en-US/… 上的 MSDN 帖子,看看您是否可以更改消息类型。第一种消息类型似乎不正确。也许你可以试试那个未知的类型
  • 谢谢!我会尝试并告诉你结果。
  • 不,没有用。在 EDIT2 中回答

标签: c# uwp nfc ndef


【解决方案1】:

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

【讨论】:

  • SmartCardReader 枚举总是返回null,即使那时我在 Windows 服务中启用了 SmartCardReader 枚举服务。这意味着我无法使用我现在拥有的平板电脑访问这种低级功能。标记为答案。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2022-10-24
  • 2015-10-31
相关资源
最近更新 更多