###SubscribeForMessage()が呼ばれず、データの読み取りができません
文字列が書かれたカードをもらったのですが、中身に書かれたデータの読み出しができない状態で困っています。
現状は、
DeviceArrived() と DeviceDeparted() イベントは呼び出されるので、
カードをタッチしたか、離したかは動作しているようです。
書かれたデータを読み取るには、
SubscribeForMessage()
を使えばよいと思っていますが、このイベントがいつまでたっても呼び出されません。
第一引数に messageType を指定しますが、ここに何を指定してよいのかもわからない状態です。
任意のデータを読み取る方法を教えてください。
SubscribeForMessage() を使うこと自体が間違っている場合は、他の方法を教えてください。
(ProximityDevice ではなく、他の API やライブラリを使うなど...)
また、不足している情報がありましたら、その旨をお申し付けいただければと思います。
NFC の実装自体が初めてですので理解不足の点があると思いますが、ご存知の方がいらっしゃいましたら、教えていただけると助かります。
よろしくお願いします。
###該当のソースコード
public partial class MainWindow : Window { ProximityDevice _device; public MainWindow() { InitializeComponent(); _device = ProximityDevice.GetDefault(); if (_device != null) { _device.DeviceArrived += ProximityDeviceArrived; _device.DeviceDeparted += ProximityDeviceDeparted; this._device.SubscribeForMessage("NDEF", messageReceived); } } private void ProximityDeviceDeparted(ProximityDevice sender) { // ここは呼び出されます System.Diagnostics.Debug.WriteLine("ProximityDeviceDeparted"); } private void ProximityDeviceArrived(ProximityDevice sender) { // ここは呼び出されます System.Diagnostics.Debug.WriteLine("ProximityDeviceArrived"); } private void messageReceived(Windows.Networking.Proximity.ProximityDevice device, Windows.Networking.Proximity.ProximityMessage message) { // ここが呼び出されません System.Diagnostics.Debug.WriteLine(message.DataAsString); } }
###開発環境
VisualStudio 2017 community
C#
Windows8.1 向け WPF アプリケーション
(WindowsAPI が使えるように Windows.winmd と System.Runtime.WindowsRuntime は参照できるようにしてあります)
カードの形式は MIFARE です(借り物なので問い合わせて得られた情報ですが...)
動作端末のスペックは
SO/IEC 14443A, ISO/IEC 14443B PCD 106 kbps to 848 kbps
ISO/IEC 14443A, ISO/IEC 14443B PICC 106 kbps to 424 kbps
ISO/IEC 15693/ICODE reader
NFC-IP1 and NFC-IP2 protocols, 106 kbps to 424 kbps
MIFARE reader encryption mechanism
NFC Forum Types 1-4 card reader
MIFARE and Felica
です。
回答1件
あなたの回答
tips
プレビュー