2012年10月4日木曜日

NFC-IDを表示するWindowsアプリケーションを作る

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

カスタマー開発部 山下智樹
140 180 NFC , Windows

記載されている会社名、および商品名等は、各社の商標または登録商標です。

2 コメント:

  1. はじめまして。業務でFelicaが利用できないか試行錯誤しているものです。
    とてもわかり易いこちらのサンプルコードに大変助けられております。

    不躾ながら、お心当たりが有りましたら教えていただきたいのですが、
    FeliCaNfcDllWrapperClass.FeliCaLibNfcOpen(portName);
    の部分で必ずfalseが帰ってきてしまいます。
    ラッパーのfelicalib_nfc_openがうまく動いていないようです。
    「USB0」でうまくいかない場合、どのように値を変更すればよいかご存知でしょうか。

    返信削除
  2. 連投申し訳ございません。
    エラーを見たところ、「API の発行シーケンスが正しくない」とのことでした。

    返信削除

Related Posts Plugin for WordPress, Blogger...