数週間pythonを触ったので、そろそろnfcpyもわかるようになってきたんじゃなかろうか。
nfcpy/nfcpy: A Python module to read/write NFC tags or communicate with another NFC device.
いつの間にかgithubになってるし、READMEを読んだところではpipでインストールできるらしい。
ドキュメントはこちららしい。
Python module for near field communication — nfcpy latest documentation
過去に動かしたことはあるのだが、もうすっかり記憶にないので、ちょうどよいだろう。
うちの環境は、こう。
- Windows10 Pro 64bit
- PaSoRi RC-S380/P
PaSoRiのドライバはインストールされている。
が、たぶんそれは切り離すことになるだろうね。
Overview — nfcpy latest documentation
pythonは2.6以降。でも、3は対応していないとのこと。
それと、libusbを使うようで、そのpythonライブラリがpython-libusb1らしい。
libusbは、APIが0.x系と1.x系があったので、その1.x系ということだろう。
pyserialはPaSoRiでは不要なのだけど、無しでもよいのかな?
Getting started — nfcpy latest documentation
pythonは既にインストールしているので、それを使う。
幸い、pipの場所もPATHに追加しているようで、コマンドプロンプトから"where pip"で見えた。
> pip install libusb1
これで、v1.5.3がインストールされたようだった。
これだけだとWindowsではlibusbがないので、そっちは自前でインストールする。
説明ではいろいろ書かれているけど、たぶんこういう手順だろう。
- zadigを使って、PaSoRiをWinUSBドライバで扱うように変更する
- libusbをインストールする
zadigでドライバを差し替えられるのだが、libusbKやlibusb-win32という名前に引きつけられず、WinSUBを選ぶ。
デバイスマネージャでは、こう見えるようになる。
libusbは、ここから、「Downloads」をクリックするとsourceforgeに飛んでダウンロードされる。
このサイト、ずっと「libusbX」とばかり思っていたのだが、Xに見えていたのは単にケーブルがクロスしている画像だったのか?
いや、libusbxというサイトもあるな。まあいいや。
使うのはDLLファイルだけのようで、私は64bit環境なので、MS64\dll\libusb-1.0.dllになるだろう。
c:\Windows\System32にコピーするよう書かれているが、DLLってPATHのどこかに置けばよいのではなかったっけ。
まあ、試してダメだったらコピーしよう。
次は、bzrで最新版を取ってくるよう書かれているが、これはgithub版でいいや。
pipで取ってこれると書いてあったから、それでよいのかも。
最新のリリース版は、v0.11.1で、これが2016年4月29日。
うーん、半年以上経っているからgithubの最新版を使うことにしよう。
以前から気になっていたのだが、こういうライブラリには「setup.py」というファイルがだいたいついている。
これは何だろうか?
説明によると、配布する際の情報を書くようだった。
ということは、このファイルがあればPYTHONPATHなどに書かなくてもよいようにインストールできるのだろうか?
> python setup.py install
なんか、だーっと流れた。
「python27\lib\site-packages」に置いたというようなメッセージが出たので見に行くと、nfcpy-latest-py2.7.eggというファイルがあった。
eggって、卵?
まあ、いいや。
そして、もうexmaplesを動かす。
ここでは、examples/tagtool.pyというコマンドを動かすようだ。
なんとなく、タグを読むサンプルのような気がするので、PaSoRiの上にMIFARE Ultralightのカードを置いておく。
さっきのlibusb-1.0.dllは、うちではC:\Winappliというフォルダの中に置いているので、そこにパスを通す。
>set PATH=%PATH%;c:\Winappli
そして、実行。
>python examples/tagtool.py show
[nfc.clf] searching for reader on path usb
[nfc.clf] using SONY RC-S380/P NFC Port-100 v1.11 at usb:002:015
** waiting for a tag **
Type2Tag 'NXP NTAG203' ID=04079672B92981
NDEF Capabilities:
readable = yes
writeable = yes
capacity = 142 byte
message = 0 byte
へー、これだけで動くんだ。
pynfcもだけど、汎用のUSBアクセスができるlibusbの力は偉大ですな。
もしかしたら、Ubuntu on Windowsでも動くのでは?と思ったが、今のところUSB機器をサポートしていないらしい。
http://stackoverflow.com/questions/38954691/is-usb-supported-on-bash-on-ubuntu-on-windows-10
実際、ダメだった。
今後のアップデートでストレージは使えるようになるかもしれないけど、libusbはどうなるか微妙なところだと思う。
好みの環境を作るのは難しいねぇ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。