abc NFCMifare ライブラリマニュアル このマニュアルは、NFCMifare ライブラリの 仕様について記載します。 Ver. 1.
ご注意 ● このソフトウェアおよびマニュアルの、一部または全部を無断で使用、複製することはできません。 ● このソフトウェアおよびマニュアルは、本製品の使用許諾契約書のもとでのみ使用することができます。 ● このソフトウェアおよびマニュアルを運用した結果の影響については、一切の責任を負いかねますのでご了 承ください。 ● このソフトウェアの仕様、およびマニュアルに記載されている事柄は、将来予告なしに変更することがありま す。 ● このマニュアルの著作権はカシオ計算機株式会社に帰属します。 ● 本書中に含まれている画面表示は、実際の画面とは若干異なる場合があります。予めご了承ください。 © 2009 カシオ計算機株式会社 Microsoft, MS, ActiveSync, Active Desktop, Outlook, Windows, Windows NT, および Windows ロゴは、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。Microsoft 社の製品は、OEM 各社に、Microsoft Corporation の 100%出資子会
変更履歴 バージョン 0.90 1.00 1.01 変更日付 2009.07 2010.05 2012.01 2012.
目次 1. 概要···················································································································································································1 2. 動作環境 ·········································································································································································2 3.
1.
2. 動作環境 NFCMifare ライブラリの動作環境を以下に示します。 対象機種 • DT-5300 • DT-X8 • IT-9000 対象 OS • Microsoft WindowsCE 6.0 • Microsoft WindowsMobile 6.5 開発環境とプログラミング言語 Visual C++ 開発環境 Microsoft Visual Studio 2005 + SP1 Microsoft Visual Studio 2008 + SP1 ○ ○ Visual Basic, Visual C# ○ ○ 提供ファイル ファイル NFCMifareLib.h NFCMifareLib.lib NFCMifareLib.dll NFCMifareLibNet.dll Visual C++ ○ ○ ○ - Visual Basic, Visual C# ○ ○ 使用方法 Visual C++の場合 • プログラムソース内に NFCMifareLib.h と NFCLib.h をインクルードし、リンカの依存ファイルとして NFCMifareLib.
名前空間とクラス クラスライブラリ NFCMifareLibNet.dll では、関数および定数の参照用として、下記のクラスが用意されてい ます。 名前空間 CaLib クラス名 NFCMifareLibNet.Api NFCMifareLibNet.Def 内容 関数参照用クラス 定数参照用クラス クラス定義の詳細については、Microsoft Visual Studio で NFCMifareLibNet.
3.
■関数呼び出し手順 1. アプリケーション開始時に、NFCMifareOpen関数により、NFC デバイスの電源を ON にします。 (※1) 2. 通信処理開始時に、NFCMifarePolling関数により、通信可能範囲内にある Mifare カードを検索/起 動します。 3. Mifare カードの起動に成功、かつ、そのカードの詳細な情報が必要な場合は、 NFCMifareGetCardResponse関数により、応答情報を取得します。(任意) 4. Mifare カードとの通信を行います。(次ページを参照) 5. Mifare カードとの通信が終了した場合は、NFCMifareRadioOff関数により、電波出力を停止します。 6.
■Mifare カードとの通信 1. NFCMifareAuthentication関数により、Mifare カードへのアクセス許可を行います。 2. NFCMifareRead関数、NFCMifareWrite関数、または、NFCMifareValue関数を実行します。 3. 処理を続行、かつ、アクセスするセクターを変更する場合は、1.に戻って処理を繰り返します。 4. 処理を続行、かつ、アクセスするセクターを変更しない場合は、2.
3.
3.
3.
戻り値 以下の値を返します。 NFC_OK NFC_NOT_DEVICE NFC_POF NFC_PRM NFC_ERROR_TIMEOUT NFC_ERROR_CALLBACK NFC_ERROR_MODULE NFC_ERROR_STOP : 正常終了 : NFC ドライバエラー DeviceEmulator では発生しません : 未オープンエラー : パラメータエラー : タイムアウトエラー DeviceEmulator では発生しません : コールバック関数エラー DeviceEmulator では発生しません : モジュール未応答エラー DeviceEmulator では発生しません : 停止関数による中断エラー DeviceEmulator では発生しません 10
3.
3.
7 バイト領域のポインタを指定してください。 pUidLen 起動に成功した Mifare カードの Uid の長さを取得します。 Mifare Standard の場合は 4 を、Mifare Ultralight の場合は 7 を取得します。 1 バイト領域のポインタを指定してください。 dwReserved 現在のバージョンではこの引数を使用しません。0 を指定してください。 戻り値 以下の値を返します。 NFC_OK NFC_NOT_DEVICE NFC_POF NFC_PRM : 正常終了 : NFC ドライバエラー DeviceEmulator では発生しません : 未オープンエラー : パラメータエラー 13
3.
3.
dwReserved 現在のバージョンではこの引数を使用しません。0 を指定してください。 戻り値 以下の値を返します。 NFC_OK NFC_NOT_DEVICE NFC_POF NFC_PRM NFC_ERROR_TIMEOUT NFC_NOT_ACTIVATION NFC_ERROR_MODULE NFC_ERROR_SUSPEND NFC_ERROR_AUTOOFF : 正常終了 : NFC ドライバエラー DeviceEmulator では発生しません : 未オープンエラー : パラメータエラー : タイムアウトエラー DeviceEmulator では発生しません : カード未起動エラー DeviceEmulator では発生しません : モジュール未応答エラー DeviceEmulator では発生しません : 本体 OFF 発生エラー DeviceEmulator では発生しません : 電波自動停止エラー DeviceEmulator では発生しません 補足 ■ Mifare Standard のメモリ構成 Standard1k の場合、64 セクターがあり、1 セクターは 4 ブロック(
3.
NFC_POF NFC_PRM NFC_ERROR_TIMEOUT NFC_NOT_ACTIVATION NFC_ERROR_MODULE NFC_ERROR_SUSPEND NFC_ERROR_AUTOOFF : 未オープンエラー : パラメータエラー : タイムアウトエラー DeviceEmulator では発生しません : カード未起動エラー DeviceEmulator では発生しません : モジュール未応答エラー DeviceEmulator では発生しません : 本体 OFF 発生エラー DeviceEmulator では発生しません : 電波自動停止エラー DeviceEmulator では発生しません 18
3.
NFC_PRM NFC_ERROR_TIMEOUT NFC_NOT_ACTIVATION NFC_ERROR_MODULE NFC_ERROR_SUSPEND NFC_ERROR_AUTOOFF : パラメータエラー : タイムアウトエラー DeviceEmulator では発生しません : カード未起動エラー DeviceEmulator では発生しません : モジュール未応答エラー DeviceEmulator では発生しません : 本体 OFF 発生エラー DeviceEmulator では発生しません : 電波自動停止エラー DeviceEmulator では発生しません 20
3.
NFC_ERROR_TIMEOUT NFC_NOT_ACTIVATION NFC_ERROR_MODULE NFC_ERROR_SUSPEND NFC_ERROR_AUTOOFF : タイムアウトエラー DeviceEmulator では発生しません : カード未起動エラー DeviceEmulator では発生しません : モジュール未応答エラー DeviceEmulator では発生しません : 本体 OFF 発生エラー DeviceEmulator では発生しません : 電波自動停止エラー DeviceEmulator では発生しません 22
3.
pValue 計算に使用する値を指定します。 4 バイト領域のポインタを指定してください。 dwTransBlock 計算後データを書き込むアドレスを指定します。 Standard1k : 0∼63 Standard4k : 0∼255 dwReserved 現在のバージョンではこの引数を使用しません。0 を指定してください。 戻り値 以下の値を返します。 NFC_OK NFC_NOT_DEVICE NFC_POF NFC_PRM NFC_ERROR_TIMEOUT NFC_NOT_ACTIVATION NFC_ERROR_MODULE NFC_ERROR_SUSPEND NFC_ERROR_AUTOOFF : 正常終了 : NFC ドライバエラー DeviceEmulator では発生しません : 未オープンエラー : パラメータエラー : タイムアウトエラー DeviceEmulator では発生しません : カード未起動エラー DeviceEmulator では発生しません : モジュール未応答エラー DeviceEmulator では発生しません : 本体 OFF 発生エラー DeviceEmu
3.
3.
3.
3.
3.
NFC_OK NFC_NOT_DEVICE NFC_POF NFC_PRM : 正常終了 : NFC ドライバエラー DeviceEmulator では発生しません : 未オープンエラー : パラメータエラー 補足 IC カードの検索方式 通常起動 : 多段起動/ : 多段起動 2 一括起動 : 1 回の検索で 1 枚の IC カードを起動します 段数に指定した回数まで異なる IC カードを連続して起動します (1 回の検索で 1 枚しか起動することができません)※ 1 回の検索で同一タイプの複数枚の IC カードを起動します 段数に指定した回数まで検索を行います ※ 注意 IC カードを 1 つ起動するたびに、起動した IC カードの Uid をドライバに記録し、その記 録した IC カードと重複する IC カードの二重起動を防止します。この記録は、指定した 枚数の IC カードを起動したとき、タイムアウト時間を経過したとき、コールバック関数が FALSE を返したとき、およびNFCMifareStopPolling関数を実行したときにクリアします。 30
3.
3.
pbySAK 起動に成功した IC カードの SAK を取得します。 バッファサイズは(1×NFCMifareSetPollingMode関数の dwNum)以上確保してください。 1バイト 1バイト 1枚目のSAK 2枚目のSAK ... 1バイト ... n枚目のSAK pbyUid 起動に成功した IC カードの Uid を取得します。 サイズは(8×NFCMifareSetPollingMode関数の dwNum)以上確保してください。 1バイト aバイト 1枚目のUidの 1枚目のUid 長さ(a) 1バイト bバイト 2枚目のUidの 2枚目のUid 長さ(b) ... ...
4. プログラミング上の注意点 4.1 電波停止の通知について ウィンドウメッセージ通知を使用する場合 電波を手動で停止する場合 1. WM_CREATE メッセージを受け取った場合は、NFCMifareOpen関数を実行し、読み取り待機状態に します。 2. WM_COMMAND、WM_KEYDOWN 等のメッセージを受け取った場合は、NFCMifarePolling関数によ り、通信可能範囲内にある Mifare カードを検索/起動します。 3. Mifare カードの起動に成功、かつ、そのカードの詳細な情報が必要な場合は、 NFCMifareGetCardResponse関数により、応答情報を取得します。(任意) 4. Mifare カードとの通信を行います※。 5. Mifare カードとの通信が終了した場合は、NFCMifareRadioOff関数により、電波出力を停止します。 6.
電波を自動で停止し、停止タイミングを通知する場合 1. WM_CREATE メッセージを受け取った場合は、NFCMifareOpen関数を実行し、読み取り待機状態に します。 2. NFCMifareSetEventNotification関数により、ウィンドウメッセージ通知を有効に設定します。 3. NFCMifareSetAutoRadioOff関数により、電波自動停止を有効に設定します。 4. WM_COMMAND、WM_KEYDOWN 等のメッセージを受け取った場合は、NFCMifarePolling関数によ り、通信可能範囲内にある Mifare カードを検索/起動します。 5. Mifare カードの起動に成功、かつ、そのカードの詳細な情報が必要な場合は、 NFCMifareGetCardResponse関数により、応答情報を取得します。(任意) 6. Mifare カードとの通信を行います※。 7. Mifare カードとの通信が終了した場合は、NFCMifareRadioOff関数により、電波出力を停止します。 (停止しない場合でも、通信を一定時間行わないと自動的に電波出力を停止します) 8.
イベント通知を使用する場合 電波を手動で停止する場合 1. アプリケーション開始時に、NFCMifareOpen関数により、読み取り待機状態にします。 2. 通信処理開始時に、NFCMifarePolling関数により、通信可能範囲内にある Mifare カードを検索/起動 します。 3. Mifare カードの起動に成功、かつ、そのカードの詳細な情報が必要な場合は、 NFCMifareGetCardResponse関数により、応答情報を取得します。(任意) 4. Mifare カードとの通信を行います※。 5. Mifare カードとの通信が終了した場合は、NFCMifareRadioOff関数により、電波出力を停止します。 6.
電波を自動で停止し、停止タイミングを通知する場合 ■ メインスレッド 1. アプリケーション開始時に、CreateEvent 関数により、電波自動停止タイミング通知イベントハンドルを 作成します。 2. CreateThread 関数により、電波自動停止を監視するスレッドを作成します。 3. NFCMifareOpen関数により、読み取り待機状態にします。 4. NFCMifareSetEventNotification関数により、イベント通知を有効に設定します。 5. NFCMifareSetAutoRadioOff関数により、電波自動停止を有効に設定します。 6. 通信処理開始時に、NFCMifarePolling関数により、通信可能範囲内にある Mifare カードを検索/起動 します。 7. Mifare カードの起動に成功、かつ、そのカードの詳細な情報が必要な場合は、 NFCMifareGetCardResponse関数により、応答情報を取得します。(任意) 8. Mifare カードとの通信を行います※。 9.
■ NFCMifare スレッド 1. WaitForSingleObject 関数により、電波自動停止タイミング通知イベントハンドルに対して待機しま す。 2. アプリケーション終了時に通知イベントを受け取った場合、電波自動停止の監視を終了します。 3.
4.2 Mifare カードとの通信について 以下は「電波停止の通知について」におけるカードとの通信部分の手順です。 1. 2. 3. 4. NFCMifareAuthentication関数により、Mifare カードへのアクセス許可を行います。 NFCMifareRead関数、NFCMifareWrite関数、または、NFCMifareValue関数を実行します。 処理を続行、かつ、アクセスするセクターを変更する場合は、1.に戻って処理を繰り返します。 処理を続行、かつ、アクセスするセクターを変更しない場合は、2.
4.3 検索方式について 多段起動を使用する NFCMifareSet PollingMode Mifare(Standard)カードと通信する 1. NFCMifareSetPollingMode関数により、検索方式に多段起動 (NFC_PLMODE_MULTISTEP)を、段数に連続起動するカード 枚数 CARD_NUM を指定します。 2. iCount=0 をセットします。 3. iCount
多段起動 2 を使用する NFCMifareSet PollingMode Mifare(Standard)カードと通信する 1. NFCMifareSetPollingMode関数により、 iCount=0 検索方式に多段起動 (NFC_PLMODE_MULTISTEP2)を、段 数に連続起動するカード枚数 No iCount
一括起動を使用する NFCMifareSet PollingMode Mifare(Standard)カードと通信する 1. NFCMifareSetPollingMode関数により、検索方式に一括起 動(NFC_PLMODE_PACKAGE)を、段数に一括起動する枚 数を指定します。 2. NFCMifarePolling関数により通信範囲内のカードを検索し ます。 3. IC カードが起動して応答があったら、次の処理へ進みま す。 4. k に起動した枚数を、dwTargetNo に 0 をセットします。 (NFCMifareAuthentication関数等の引数) 5. dwTargetNo が k よりも小さい場合、次の処理に進みます。 6. NFCMifareAuthentication関数により、Mifare コマンドを送 信し、セクターへのアクセス許可を行います。 7. NFCMifareRead関数やNFCMifareWrite関数などにより、カ ードとのデータアクセスを行います。(必要な動作に応じて 各種関数を実行) 8. 他のブロックにもアクセスする場合、7.
カシオ計算機お問い合わせ窓口 製品に関する最新情報 ●製品サポートサイト(カシオペア・ハンディターミナル) http://casio.