NFC対応アプリケーションを作る
Windows7にPaSoRi(RC-S330)を接続してNFCタグをかざすと、そのIDを表示するアプリケーションを作成します。API呼び出し順序については前回のエントリを参照してください
ディレクトリ構成
- ./Program.cs
- アプリケーションのスタートアップポイントです。
- ./felica_nfc_dll_wrapper_basic.cs
- SDK for NFCをC#で使うためのラッパーです。
- ./Forms/NFCHandleForm*.cs
- 主に処理が書かれているフォームです。
解説はNFCHandleForm.csを中心に説明していきます。
プログラム
スタートアップ
./Program.cs
VisualStudioにて自動生成されたそのままです。
起動すると、NFCHandleFormを表示します。
ポーリングまでの処理
SDK for NFCのAPI呼び出し順序にしたがって、初期化、オープンをします。
NFCデバイス補足時にはWindowメッセージで検出されるので、Windowメッセージの登録も行います。
ポーリングの開始には、反応するNFCデバイスの種類を指定します。
今回はType Fのみ反応することにしたいので、Type Fのフラグを立てた値を引数に渡します。
また、各地点でエラーが発生した場合にエラーの理由がわかるように、エラー番号を出力するメソッドを作成しています。
NFCデバイス補足
デバイスを補足するとWindowメッセージが飛んできます。
渡されたMessage引数から、FeliCaの構造体に展開します。
FeliCaのNFC-IDに当たるものはIDmになります。
IDmはNFCID2という項目に入っているので、それを文字列に変換した後にメッセージにて表示します。
実行イメージ
ソースコード
https://github.com/bs-nfc/NFCHandleWindowカスタマー開発部 山下智樹
記載されている会社名、および商品名等は、各社の商標または登録商標です。
はじめまして。業務でFelicaが利用できないか試行錯誤しているものです。
返信削除とてもわかり易いこちらのサンプルコードに大変助けられております。
不躾ながら、お心当たりが有りましたら教えていただきたいのですが、
FeliCaNfcDllWrapperClass.FeliCaLibNfcOpen(portName);
の部分で必ずfalseが帰ってきてしまいます。
ラッパーのfelicalib_nfc_openがうまく動いていないようです。
「USB0」でうまくいかない場合、どのように値を変更すればよいかご存知でしょうか。
連投申し訳ございません。
返信削除エラーを見たところ、「API の発行シーケンスが正しくない」とのことでした。