NFC機能
2
NFCタグの読み取りを行いたい
2
NFCタグの読み取りはRuntimeクラス、NfcTagConnectionクラスを使用することで実装が可能です。
RuntimeクラスのDiscoverNfcTagメソッドでNFCタグの探索を行います。種類はNFC-F(例:JIS 6319-4、FeliCaタグ)やMifare Classicに対応しています。タグが発見されるか探索をキャンセルするまで、他の処理は行われません。
読み取ったタグの種類はNfcTagConnectionクラスのIsFeliCaTagプロパティ、IsMifareClassicTagプロパティで確認が可能です。該当するタグの場合はTRUEが返されます。
下記のサンプルでは、Suicaなどの交通系ICカード(Felicaタグ)を読み取り残高情報を表示します。
NfcTagConnectionクラスのFeliCa_PollingメソッドでICカードを検索します。
検索したICカードに対してFelica_Readメソッドで情報を読み取ります。その結果がByteArray型のブロックデータで返されます。 残高に関する情報(10、11バイト目)を元に整数値化し、結果が端末上に表示されます。
[ サンプルコード ]
Form NfcHt_002 { Width = 334; Height = 356; Button Button1 { X = 82; Y = 143; Width = 158; Height = 38; Title = "タグ読み取り開始"; Function OnTouch( e ) { var nfc = null; try { /* NFCタグの探索 */ nfc = Runtime.DiscoverNfcTag("交通系ICカードをかざしてください。"); } catch(e) { //.MessageBox("NFCタグの探索に失敗しました。"); return; } /* FeliCaタグでなければメッセージを表示し終了 */ if(!nfc.IsFeliCaTag) { nfc.Close(false, "FeliCa以外のタグが読み取られました。"); return; } try { /* ダイアログのメッセージを設定 */ nfc.SetMessage("読取中..."); /* システムコード0x0003(SuicaやPasmo)のIDmを取得 */ var targetIDm = nfc.FeliCa_Polling(0x0003).IDm; /* サービス0x008B(カード情報)から1ブロック取得 */ var blockData = nfc.FeliCa_Read(targetIDm, 0x008B, 0, 1); /* ブロックデータから残高を整数値化する */ var balance = blockData.ByteAt(11) + blockData.ByteAt(12) * 256; /* 残高を表示し、NFC通信を終了 */ nfc.Close(true, "残高 : " + str(balance) + "円"); } catch(e) { nfc.Close(false, "読取エラーが発生しました。"); } } } Label Label1 { X = 15; Y = 31; Width = 306; Height = 66; Value = "ボタン押下後、Suica、PASMOなどの交通系ICカードを端末にかざすと残高が表示されます。"; BgColor = $FFFFFF; } }
※交通系ICカードの種類によっては上記サンプルで読み取りができない場合があります。
想定されるカードの仕様をご確認の上、実装を行ってください。
管理番号:NfcHt_002
Biz-Collections Bizの宝箱 トップへ
Biz/Browser HT・Biz/Browser SmartDevice・Biz/Browser AI TIPS集 トップへ