はじめに
秋葉原のハードオフの2号店のジャンクコーナーからICカードを読み取るやつを買ってきました。ほんとはジャンク品を買うつもりはなかったんですが、紫外線LEDを買うだけだったんですがジャンクコーナ0に吸い寄せられてしまう...... goo.gl
製品名はSony製RC-S320で、発売当初は2000円前後ぐらいはしたんでは。ハードオフでは110円で販売されてました。すこし汚れがあって汚いけど、あとで分解して洗浄してやるってことで動作確認してみる。
目次
環境
デバイスの認識
まずは認識するかlsusbで確認してみる。
$ lsusb
普通に認識している。これはつかえそうな予感
libpafeのインストール
ICカード読み取り器はpythonのライブラリnfcpyを使ってやる記事がたくさん出回っているけれど、残念ながら、このライブラリはRC-S320は対応していないよう。 そこで今回はlibpafeというライブラリを使ってpythonからコントロールしてみる。
libpafeのライブラリのgitは以下のページ
まずはダウンロードしていくぞ。
$ git clone https://github.com/rfujita/libpafe.git
ダウンロードしたら階層をダウンロードしたファイルに移動して./configure以下のコマンドを実行していく。make installコマンドはsudoで実行しないとエラーになるので注意。ここで詰まりました。
$ cd libpafe $ ./configure $ make $ sudo make install
libpafeでRC-S320が認識されれるかテスト
libpafeのライブラリでちゃんとRC-320が認識されているかテストしてみる。階層を以下testsまで移動して./pasori_testを実行してみる。
$cd /libpafe/tests $ ./pasori_test
ちゃんと認識していますね。
suica のID読み取り
それじゃあpythonでSuicaのIDmを読み取ってみる。コードは以下の記事のそのまま実行しました。助かった〜
from __future__ import print_function from ctypes import * FELICA_POLLING_ANY = 0xffff if __name__ == '__main__': libpafe = cdll.LoadLibrary("/usr/local/lib/libpafe.so") libpafe.pasori_open.restype = c_void_p pasori = libpafe.pasori_open() libpafe.pasori_init(pasori) libpafe.felica_polling.restype = c_void_p felica = libpafe.felica_polling(pasori, FELICA_POLLING_ANY,0 ,0) idm = c_ulonglong() libpafe.felica_get_idm.restype = c_void_p libpafe.felica_get_idm(felica, byref(idm)) print("IDm", "%016X" % idm.value) libpafe.free(felica) libpafe.pasori_close(pasori)
そいじゃあ、実行してみると
$ python3 simple.py
IDmがしっかりよみとれたぞ!Suica以外にもEdyとか学生証もやってみたけど上手くよみとれました。 今度は残高とか表示させてみるか。
参考文献
raspberrypiでFeliCaのIDmを読み取る(pasori RC-S320版) - Qiita