Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows 10 UWP应用程序上将NTAG213格式化为NDEF_C#_Uwp_Nfc_Ndef - Fatal编程技术网

C# 在Windows 10 UWP应用程序上将NTAG213格式化为NDEF

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[] {

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

预格式化至无损检测标签,效果良好。在预先格式化的标签上写入内容如下:

        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枚举服务。这意味着我现在无法使用平板电脑访问这些低级功能。标记为回答的。非常感谢!