2014-09-29 30 views
1

我有寫入和讀取NFC標籤的嚴重問題。 處理程序未被觸發。C#NFC接近度 - 處理程序未被解僱

這是我的代碼一些文字寫入NFC標籤,它的工作:

// Writes a string to a NFC tag 
    private bool WriteToNFCTag(string value) 
    { 

      var dataWriter = new DataWriter() { UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8 }; 
      dataWriter.WriteString(value); 

      ProximityDevice.GetDefault().PublishBinaryMessage("Windows:WriteTag.NokiaTest", dataWriter.DetachBuffer(), MesssageTransmitted); 


    } 

private void MesssageTransmitted(ProximityDevice sender, long messageId) 
     { 
      Debug.WriteLine("Message sent!"); 
     } 

但我不能讀取NFC標籤:

ProximityDevice.GetDefault().SubscribeForMessage("Windows.NokiaTest", messageReceivedHandler); 

不火的messageReceivedHandler

void messageReceivedHandler(ProximityDevice device, ProximityMessage message) 
    { 
     Debug.WriteLine("Got the message"); 
     var byteBuffer = message.Data; 
    } 

我沒有得到任何錯誤消息或someth就像那樣。如果有人能幫助我,我會很棒。謝謝!

+0

剛試過這個,但它不起作用:http://www.coderexception.com/CmHbmzBHPUXQQSSW/reading-physical-nfc-tag-windows-phone-8 – La0x1 2014-09-29 11:36:59

回答

1

我認爲您需要停止MesssageTransmitted方法中的發佈。

private void MesssageTransmitted(ProximityDevice sender, long messageId) 
{ 
    Debug.WriteLine("Message sent!"); 
    ProximityDevice.GetDefault().StopPublishingMessage(messageId); 
} 

更新:最近幾個月我一直在開發一個寫入Win8.1桌面應用程序/讀取NFC標籤,使用NDEF格式(協議:「NDEF:WriteTag」出版/「NDEF」認購)。我使用https://ndef.codeplex.com/的NdefLibrary。

根據Nokia的「Windows」協議在設備之間,而不在設備和標籤之間。因此,您可能需要使用「設備和標籤之間」的NDEF協議。

enter image description here

還根據Limitations with Windows Phone 8

看到由於接近API給人以NFC協議只有高級別訪問和Windows Phone增加了一些保護最重要的是,有NFC標籤的交互是有限的:

您無法格式化標籤。您的標籤必須格式化爲NDEF郵件。

您的標籤只能包含NDEF消息。

接近API不提供直接操作NDEF消息的工具。要操縱原始NDEF消息,您可以使用NDEF Library for Proximity API(NFC)。

+0

謝謝,但它不起作用。 它仍然不會跳轉到處理程序。 – La0x1 2014-09-29 18:22:01

+0

,或者可能是因爲Windows協議不受支持。看到我更新的答案。 – kennyzx 2014-09-30 07:40:17