今回はC#でICカードに入っているIDを取得する方法についてです。
ICカードリーダーとの連携は1から実装するのは気が遠くなりそうなので、今回はPCSC Sharpという以下のライブラリを利用しました。
ICカードはマイフェア(Myfair)、フェリカ(Felica)を想定しています。
PCSC Sharpのインストール
まずWindows Formsの新規プロジェクトを作成します。
その後にNugetでPCSC、PCSC.Iso7816をインストールしましょう。
プロジェクトを右クリック→「Nugetパッケージの管理」をクリックします。
参照で「pcsc」と入力して、「PCSC」「PCSC.Iso7816」をインストールします。
インストールされました。
画面
今回は以下のような簡単な画面を作成しました。
「モニター開始」をクリックすると、カードリーダーを監視し、ICカードを認識したらボタンの下にある欄(リストボックス)に取得したIDを表示します。
初期処理
初期処理として、画面ロード時にICカードリーダーの存在チェックを行います。 11行目でPCに接続されているICカードリーダーを取得して、その中から対象となるICカードリーダーが存在するかチェックしています。
モニター開始
モニター開始ボタンをクリックすると、ICカードリーダーにICカードがかざされるのをモニターします。
ICカードを検知する(ICカードリーダーの状態が変わる)と、27行目のStatusChangedというイベントが発火されますので、そのイベントにMonitor_StatusChangedというメソッドを登録しています。
このメソッド内でIDを取得してリストボックスにIDを表示します。
実際にIDを取得するメソッドは以下となります。
実行してみる
以下の動画のようにモニター開始後にリーダーにカードをかざすと、IDを読み取ってくれます。
PCSCSharpを使うと簡単に実装できました。
ソースコードは以下に置いています。
弊社では一緒に働いてくれる仲間を募集しています。
ご興味ある方はご連絡ください!
10yro.co.jp