3

下面是使用 NFC 读取 HF RFID 标签的示例 Universal Win10 应用程序代码。设备读取 RFID 标签时不会触发“ReadTag”方法。我尝试将 Messagetype 从 NDEF 更改为 Windows,结果相同。如何在 Universal Windows 应用程序中使用 NFC 读取 RFID 标签?任何帮助将不胜感激。

我使用启用了 NFC 并指定 ISO 15693 标签的 Android 应用程序成功读取了相同的 RFID 标签。

win10 代码是使用 VS2015 更新 3 编译的,启用了“接近”功能,并部署在启用了 Microsoft Phone 950 NFC 上。

private long _messageSubscribeId;
Windows.Networking.Proximity.ProximityDevice proximityDevice;
public MainPage()
{

InitializeComponent();

proximityDevice = ProximityDevice.GetDefault();

if (proximityDevice != null)
{
    proximityDevice.DeviceArrived += ProximityDeviceArrived;
    proximityDevice.DeviceDeparted += ProximityDeviceDeparted;

//subscribe....
    _messageSubscribeId = proximityDevice.SubscribeForMessage("NDEF",ReadTag);  
}
else
{
    MessageTextBlock.Text += "Failed to initialize proximity device.\n";
}
}

Windows.UI.Core.CoreDispatcher _dispatcher = Window.Current.Dispatcher;

private async void ProximityDeviceArrived(object sender)
{
await _dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
        MessageTextBlock.Text += "Proximate device arrived.\n";
});
}

private async void ProximityDeviceDeparted(object sender)
{
await _dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
        MessageTextBlock.Text += "Proximate device departed.\n";
});
} 

private void ReadTag(ProximityDevice sender, ProximityMessage message)
{
await _dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{            
        MessageTextBlock.Text += "Proximate device Read Tag\n";
});
}    
4

1 回答 1

1

您的问题不在代码中,而是在 Windows SO dll (Windows.Networking.Proximity.dll) 上。不幸的是,没有多少文档发布,Windows 8 和 Windows 10 只处理 NDEF 格式标签。这是最不幸的,因为它仅在您要访问的标签之前已作为 NDEF 格式“发布”时才有效。

检查此链接https://dotblogs.com.tw/pou/2013/05/07/103062它有很大帮助。

于 2017-03-21T23:16:30.347 回答