2011/11/03

[libnfc]TDM-GCCでビルドするとうまくいった

libnfc-1.5.1を解凍すると、README-Windows.txtというファイルがある。
これを読みながらやってみた。

最初は素直にMinGWとLibUSB 1.2.5をインストールしたのだがどうもうまくいかん。
しかし本当に「素直に」やるならば、MinGWではなくて、テキストの一番下にリンクがあるTDM-GCCというものを使うやり方になるのだった。

 

cmake-guiで、ビルドしたいpn53x_usbドライバを指定してconfigure。
なんかエラーが出たけど、もう一度configure。
LibUSBのincludeとlibを指定してなかったのでエラー→指定してconfigure。
そうすると、通った。

あとは書いてあるとおりに、mingw32-make。
こちらはwarningは出るけれども、最後まで通った。


examplesディレクトリにexeがあるので、よくわからないままnfc-poll.exeを実行。
・・・libnfc.dllがない、と。
どっかパスが通る場所にlibnfc.dllを置いて実行。
・・・NFCデバイスがない、と。

LibUSBのドライバを正しくインストールしていないためだった。
LibUSBからダウンロードしたファイルを解凍すると、binの中にinf-wizard.exeがある。
それを実行する前にlibusb-win32-bin-README.txtを読むと、dllのファイル名を変更せよとある。
なので、それに従って名前を変え、inf-wizard.exeを起動。
PaSoRiを選択したらinfができ、そのままインストールまで実行できる。
インストールすると、デバイスマネージャの「libusb-win32 devices」の下にPaSoRiが出てくる。

zadigで最初はやってたのだが、それではだめなようだ。
一度インストールしてしまえば、install-filter-win.exeが使えたような気がするが、まあいいや。

 

この状態でPaSoRiの上にMifare Standardカードを置いて、nfc-poll.exeを実行。

nfc-poll uses libnfc 1.5.1
Connected to NFC reader: Sony / RC-S370/P - PN533 v1.48 (0x07)
NFC device will poll during 30000 ms (20 pollings of 300 ms for zd modulations)
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04
       UID (NFCID1): 1e  63  b2  53
      SAK (SEL_RES): 08

ふむ、動いていそうだ。
FeliCa Liteカードでもやってみたが、ちゃんとIDmなどが取れている。