C# 在Windows 10 UWP应用程序上将NTAG213格式化为NDEF
是否可以使用UWP将空NTAG213格式化为NDEF?找到,其中谈到“Windows Phone 8.1支持将MIFARE Classic、MIFARE Ultralight和DESFire的格式设置为NDEF”。但是NTAG213或其他什么呢?那么UWP和Win10呢 预格式化至无损检测标签,效果良好。在预先格式化的标签上写入内容如下:C# 在Windows 10 UWP应用程序上将NTAG213格式化为NDEF,c#,uwp,nfc,ndef,C#,Uwp,Nfc,Ndef,是否可以使用UWP将空NTAG213格式化为NDEF?找到,其中谈到“Windows Phone 8.1支持将MIFARE Classic、MIFARE Ultralight和DESFire的格式设置为NDEF”。但是NTAG213或其他什么呢?那么UWP和Win10呢 预格式化至无损检测标签,效果良好。在预先格式化的标签上写入内容如下: string launchAppMessage = string.Join("#", new string[] {
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
变量包含的字节是否正确。但我不知道还能做什么
也许有人以前做过这个?提前谢谢
编辑:
经过一些研究,我在未格式化的标记上尝试了这段代码。这不会引发异常,但标记仍然为空。似乎这段代码什么都不做:
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)
我用黄色边框标出了这两个州之间的区别
这就是我的问题。有一种方法可以将标签从“右”状态格式化为“左”?您可以在Windows 10 UWP、电话或桌面上NDEF格式化NTAG213或NTAG216。使用Windows.Devices.SmartCards.SmartCardReader类代替ProximityDevices类。还有一个有用的PCSC包装器,MS在这里写道:
如果手机中没有正确的手机或芯片,它将无法工作,但如果你有正确的型号,它确实可以工作。这将为您提供对标记的低级访问,以便根据需要写入块,以设置NDEF格式的标记。查看此处的“我的MSDN帖子”,查看是否可以更改消息类型。第一种消息类型似乎不正确。也许你可以试试那种无名的谢谢!我会试试,然后告诉你结果。不,它不起作用。EDIT2SmartCardReader枚举中的应答始终返回
null
,即使我在Windows服务中启用了SmartCardReader枚举服务。这意味着我现在无法使用平板电脑访问这些低级功能。标记为回答的。非常感谢!