c# - 使用 Windows Phone 8 NFC 读取 Mifare 标签?

标签 c# .net nfc mifare windows-phone-8

Windows Phone 8 NFC 是否支持基于 Mifare Ultralight/Classic 的标签? 我使用此代码访问诺基亚 Lumia 920 上的 NFC 设备(代码示例取自 NDEF Tag Reader – NFC NDEF Tag Reader)

public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
        ProximityDevice device = ProximityDevice.GetDefault();
        device.DeviceArrived += DeviceArrived;
        device.DeviceDeparted += DeviceDeparted;
        device.SubscribeForMessage("NDEF", MessageReceived);
    }

    private void DeviceArrived(ProximityDevice sender)
    {
        // this event occurs when I am tapping any of my tags (tried 5 different Mifare Ultralight/Classic)
    }

    private void DeviceDeparted(ProximityDevice sender)
    {
        // this event occurs when I am moving away any tag
    }

    private void MessageReceived(ProximityDevice sender, ProximityMessage message)
    {
        // this event is never fired!!! :(
    }
}

WP8 上的 NFC 是否有缺陷或此代码是否有误?

更新: 来自这份文件NFC Forum Type Tags您会发现 Mifare Ultralight 与 NDEF 兼容。 Android 设备可以轻松读取此类标签。

最佳答案

Mifrare 在 WP8 和 Lumia 920 上受支持。我在这里猜测,但很可能您的 Mifare NFC 标签未格式化/未初始化为 NDEF。您可以在购买 NFC 标签时要求您的 NFC 标签为 NDEF 格式。

Lumia 920 芯片(NXP PN544 系列)支持以下标签类型(至少):

  • 类型 1:黄 Jade 家族
  • 类型 2:Mifare Ultralight 系列、my-d-move、NTag
  • 类型 3:Felica 家族
  • 类型 4:Desfire 家族
  • 非标准化:Mifare 标准

关于 NFC 标签的 NDEF 格式:

  • WP8 仅支持对这些标签的 NDEF 级别访问,这意味着标签需要是 NDEF 格式或具有现有的 NDEF 消息(可以是空的)。如果您尝试在未格式化的 NFC 标签上使用 API,它们将不起作用(因为 WP8 不支持低级别标签类型特定命令/访问)
  • 如果您想对您的标签进行 NDEF 格式化,您有以下选择:订购标签时要求它们采用 NDEF 格式(或/并且包含一个空的 NDEF 消息和要解锁的标签),使用 NFC USB 读取器/写入器适用于 PC 的硬件或使用带有 NFC 写入应用程序的 Symbian/MeeGo/Android NFC 设备

此致,
-- 贾斯汀·安吉尔
诺基亚 Windows Phone 开发人员体验首席工程师

关于c# - 使用 Windows Phone 8 NFC 读取 Mifare 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13207401/

相关文章:

c# - 将 Icon 对象与 byte[] 相互转换会导致质量下降

c# - 如何使用 BsonClassMap 配置 ObjectId 数组的表示形式?

android - 如何在 NFC 中获取 Android 手机 UID

Android NFC卡仿真可行性

tcp - 将简单数据从一部手机发送到另一部手机

javascript - 如何在 C# 中使用 chromium Web 浏览器获取 javascript 的返回值

c# - NetSuite 使用 Web 服务在 C# 中为 SelectCustomFieldRef 选择自定义列表中的值

c# - 让 Linq 与 Mysql 和 Mono 一起玩,这可能吗?

c# - 内存锁以确保共享数据可以被多个线程读取,但只能由一个线程写入?

c# - 如何从 CSS 中引用嵌入的图像?