【发布时间】: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 中回答