【问题标题】:NFC Software developement kit NFC wrapper sample CodeNFC 软件开发套件 NFC 包装器示例代码
【发布时间】:2026-01-12 03:00:02
【问题描述】:

当我打开 NFC 包装示例代码时,程序会通过说明“SCM_NFC.DLL 已成功加载”来工作。但是当我尝试调试代码并将卡放在设备上时。我总是将 MessageCount 设为零。

谁能告诉我怎么了?

提前致谢

private void ReadNDEF() {   
    UInt32 DeviceCount = 0;
    UInt32 MessageCount = 0;
    UInt32 NextMessageSize = 0;
    UInt32 Result;

    if (NFCWrapper == null) return;

    // Get information about the message queue
    Result = TNFCWrapper.GetNDEFQueueInfo(ref DeviceCount, ref MessageCount, ref NextMessageSize);
    if (MessageCount != 0) {
        if (Result != TNFCWrapper.ERR_SUCCESS) return;

        //Resize the NDEF buffer accordingly to the site of the next message in the queue
        byte[] NDEF = new byte[NextMessageSize];
        UInt32 NDEFSize = NextMessageSize;
        TNFCAddress NFCAddress = new TNFCAddress();
        TMessageInfo MessageInfo = new TMessageInfo();

        //Read the NDEF message from the message queue
        Result = TNFCWrapper.ReadNDEF(ref NFCAddress, ref MessageInfo, ref NDEF[0], ref NDEFSize);
        if (Result != TNFCWrapper.ERR_SUCCESS) return;

        //Display the message details
        string sAddress = "";
        for (int i = 0; i < 12; i++) sAddress = sAddress + NFCAddress.Address[i].ToString("X2") + " ";

        PrintHexDump(NDEF, NDEFSize);

        // convert NDEF into XML
        string XML = "";
        Result = NFCWrapper.NDEF2XML(ref NDEF[0], NDEFSize, ref XML);

        if (Result != TNFCWrapper.ERR_SUCCESS) return;

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(XML);
        var valueRead = XElement.Parse(XML)
                   .Descendants("NDEF_Text")
                   .First()
                   .Value;
        string associateId = valueRead.Substring(5);
        LogMessage(associateId);
        NavigationService navService = NavigationService.GetNavigationService(this);
        navService.Navigate(new System.Uri("Booking.xaml", UriKind.Relative));
    }
}

【问题讨论】:

    标签: c# .net nfc ndef


    【解决方案1】:

    GetNDEFQueueInfo() 的结果所示,未检测到任何设备和 NDEF 消息。因此,ReadNDEF() 必须失败,因为它无法读取不存在的内容。

    在不知道您如何初始化 NFC 阅读器以及您在“卡”/NFC 标签上编程的情况下,很难说出了什么问题,但我想到的可能原因列表如下:

    1. NFC 标签/“卡”必须包含有效的 NDEF 消息。
    2. 您没有调用 StartListening() 来激活扫描 NFC 标签/NFC 设备。
    3. 您之前使用SetTarget() 禁用了对“卡片”标签类型的扫描。

    【讨论】: