Windows Phone 8 NFC Mifare Ultralight/Classicベースのタグをサポートしていますか?このコードを使用して、Nokia Lumia920のNFCデバイスにアクセスします(コード例は- NDEFタグリーダー– NFC NDEFタグリーダー )
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フォーラムタイプタグ MifareUltralightはNDEFと互換性があることがわかります。 Androidデバイスは、このタイプのタグを簡単に読み取ることができます。
MifrareはWP8とLumia920でサポートされています。ここで推測していますが、Mifare NFCタグがNDEFにフォーマット/初期化されていない可能性があります。 NFCタグを購入するときに、NFCタグをNDEFフォーマットにするように依頼できます。
Lumia 920チップ(NXP PN544ファミリー)は、(少なくとも)次のタグタイプをサポートします。
NFCタグについてNDEFフォーマット:
よろしくお願いいたします。
-ジャスティンエンジェル
NokiaでのWindowsPhone開発者エクスペリエンスのプリンシパルエンジニア
あなたが投稿したコードは、NFCタグからの [〜#〜] ndef [〜#〜] メッセージを読むことになっています。
MifareはNFCタグでも使用されますが、類似性はここで終わります。それは 完全に異なるプロトコル 独自の(独自の)データ形式です。
したがって、このコードは実際には間違っていません(WP8のNFCは一般的に「欠陥がある」))が、Mifareタグを読み取ることを期待している場合、このアプローチは機能しません。
WP8でMifareタグを読み取ることができるかどうかはわかりません。これは、ハードウェア(Mifareは一部の非ISOフレームを使用するため)とAPIサポートによって異なります。 Googleで簡単に検索すると、Java SDK for old Nokia phoneはMifareをサポートしているため、ハードウェアサポートが存在する可能性があります。ただし、WP8には何も見つからなかったため、おそらくこれが必要になります。それが機能する場合、いくつかの広範なコーディング。
何が必要かを理解するには、DeviceArrivedイベント(リーダーがISO NFCタグ)を検出したことを意味します)を取得した後、カードのUIDを取得する必要があります。これは標準のISO機能なので、非常に簡単です。
次に、Mifare認証と読み取り/書き込みセクターコマンドをタグに直接送信する機能が必要です。これらのコマンドはISO標準ではないため、これは物事がよりトリッキーで読者に依存する場所です。この段階を通過するには、プロトコルのドキュメントと、電話用の実用的なMifareテストツールが本当に必要でした。最後に、ほとんどのMifareカードは、少なくとも1つのセクターキーを知らない限り完全に読み取れません。また、アプリケーションデータ形式も独自仕様(カード発行会社に固有)であるため、すべての作業を行った後でも、有用な情報を入手できるとは限りません。カード...
Windows Phone 8アプリは、非常に高レベルのライブラリにのみアクセスでき、NDEF形式ではないタグを読み取ることはできません。
MIFARE ULタグは、NFC Forum NDEF Type 2標準を使用する必要があります。これは、タグの48バイトのユーザーメモリが小さいため単純化されています。
低レベルのリーダー/ライターを使用している場合は、データの大部分を変更せずにULタグをNDEFに準拠させることができますが、犠牲にする必要があります。
タグは次のようにフォーマットされています:(参照-www.nfc-forum.org/specs/spec_list/#tagtypes)
例:タグのメッセージタイプはExternalRtdで、レコードタイプは「abc」です(NDEFに完全に準拠するには、レコードタイプは技術的に「urn:nfc:ext:companyname.com:typename」の形式である必要がありますが、使用する余裕はありません。そのくらいのスペース)
[ページ番号、バイト番号]、値、コメント
[5、3]、0x61、タイプの3番目のバイト、0x63 = 99 = 'c'
タグの残りの40バイト(6〜11ページ)がペイロードです。
電話機がタグを読み取って残りを実行できるようにタグを初期化するだけの場合は、CCを書き込み、LがゼロでVがないTLVのみを書き込みます(4,0 = 0x03および4,1 = 0x00 )。
同様の問題があり、eBayでNFCタグのパックを購入しましたが、NDEF形式ではありませんでした。WP8はNDEF形式のタグしか利用できないため、形式を設定する方法を見つける必要がありました。 。TwitterでNFC装備Android電話を持っている人を見つけました。彼は私のためにこれらのタグをフォーマットしました。WindowsPhone8でもこれができないのは残念です。
ここで、公式のWPdevユーザーボイスページで低レベルのNFC API機能に投票できます:
低レベルのNFC NDEFフォーマットおよび(ロック解除)タグのAPIを提供