大学で、学生証を読み取って出欠管理をするソフトウェアを作った時の話
使うもの
・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を使えば常に読み取り状態が作れますね
ではでは