大学で、学生証を読み取って出欠管理をするソフトウェアを作った時の話
使うもの
・VisualStudio 2010 ←開発環境
・RC-320 ←カードリーダー
・felicalib
必須
・NFCポートソフトウェア
まず、今回使うfelicalibのファイルは
・felicalib.h
・felicalib.c
・felicaint.h
の3つなので、これらを一つのフォルダにまとめちゃいましょう (僕はこうしてた
次に、VisualStudio の設定
1. コンソールアプリ-> ☑空のプロジェクト -> [ソースファイル]にmain.cppを作成
プロジェクトのプロパティから -> 構成:すべての構成 ->
・ C/C++ -> [追加のインクルードディレクトリ]
・ リンカー -> [追加のライブラリディレクトリ]
2. ソリューションの、
[ ソースファイル ]にfelicalib.c
[ヘッダーファイル]にfelicaint.h felicalib.h を追加
それでは準備ができたところで始めましょう
まずは、FelicaLiteのマニュアルを読む。
・・・ほうほう。
#include <stdio.h> #include <string.h> #include "felicalib.h" #define SYSTEM_CODE 0x88B4 //固定 #define SERVICE_CODE 0x000B //固定 // aa 読みだすブロック番号 #define READ_BLOCK_NUM 0xaa // bb 読みだすブロック数 #define READ_BLOCK_LENGTH bb pasori *p; // pasori ポインタ felica *f; // felica ポインタ char ret[READ_BLOCK_LENGTH]; //読みだした値格納 uint8 data[READ_BLOCK_LENGTH]; //readしたデータの受け口 p = pasori_open(NULL); if (!p) printf("Card Reader isn't connected.\n"); else{ pasori_init(p); //pasoriの初期化 f = felica_polling(p, SYSTEM_CODE, 0, 0); if (!f) printf("Card isn't placed.\n"); else{ //実装されている読み出し関数 felica_read_without_encryption02( f ,SERVICE_CODE ,0 //0でok ,READ_BLOCK_NUM ,data //ここにデータが返ってくる ); //uint8型のデータを char型のデータにコピー memcpy(ret,data,READ_BLOCK_LENGTH); printf("%s\n",ret); //表示してみる //解放する felica_free(f); } }
こんな感じですね。
このソースだと while とかを使っていないので、実行時にカードを乗せている時のみ反応します。
felica_polling の後でwhileとsleepを使えば常に読み取り状態が作れますね
ではでは