我目前正在使用一些 NFC 标签,我已确认这些标签可以使用 NFC 交互器应用程序以及 Windows 应用商店中提供的 NFC 标签编写器。
我现在的问题是我正在编写的应用程序无法读取标签中包含的 NDEF 文本,但手机可以正常检测到它,打开一些 WP8 版本的记事本来显示文本。
我真正需要做的就是让 NFC 标签中包含的文本显示在我的应用页面上,但无论我尝试什么,它似乎都不起作用。
我稍微研究了一下这个问题,我发现了用于解析 NDEF 消息的“NDEF Library for Proximity API”,但接收简单文本似乎有点过头了……或者是吗?
我的代码如下:
private void messageReceived(ProximityDevice sender, ProximityMessage message)
{
var scanned_message = message.DataAsString;
var messageType = message.MessageType;
//message received handler.
Dispatcher.BeginInvoke(() =>
{
if (proximityDevice != null)
{
locationdisplay.Text = "Tag found! Scanning...";
proximityDevice.StopSubscribingForMessage(Id);
locationdisplay.Text = "Type = " + messageType + "\nMessage = " + scanned_message;
}
});
}
我知道 Windows.Networking.Proximity API 确实将 NDEF 作为订阅的消息类型处理,但它实际上如何处理消息对我来说是一个谜……我希望 message.DataAsString 能做到这一点,但它似乎在我的应用程序中没有做任何事情。
我已经设法使用另一个应用程序读取数据,它确实为我提供了原始有效负载
“4e 00 6f 00 64 00 65 00 20 00 31”
这是“节点 1”的十六进制代码,这是我在标签中写的文本。我想知道是否存在十六进制代码......为什么它甚至不能显示数字?(00 似乎是 Windows Store 中应用程序“NFC Tag Writer”的自定义间隔代码)
messageType 变量返回“NDEF”并可以显示它。scanned_message 变量返回一个空字符串。