こんばんは。今日は、雨の中、兄弟で習っている教室に午前と午後の2回、バスで往復して交通費で破産しそうな@kjunichiです。
背景
PASMOの残高をMacBook Proで調べたくなり、何世代も古くなってしまったSONYのRC-S320を USB-Cに変換してMacBook Proに繋ぎ、Julia言語でPASMOの残高を表示してみた。
のブックマーク先の記事(2019年6月時点では読めない状態)でOSX時代よりlibusb経由でSUICAやPASMOの読み取りは可能であることを知っていた。
今回は新しく購入した2019年版MacBook ProでJulia言語を使ってやってみることにした。MacBook ProはUSB-Cのみだが、 変換アダプタによりPaSoRiをUSBデバイスとして繋げる。
以前タイムセールで買った上記のアダプタを使ってPaSoRiとMacBook Proを繋げた。
libpafe.dylibを作る
前述の記事より知っていたlibusbの上でPaSoRiを利用する為のライブラリだと、ビルドはできたものの、セグフォして動かなかった。
そこで、より新しいライブラリとして、libpafeがあることを知った。
今回はこのライブラリを使用することにした。Pythonでの実装を以下のQiitaの記事で見つけて、 この記事のおかげでJuliaで動かすことが容易にできた。
下準備
libpafeで必要なlibusbライブラリ関連をHomebrewで入れる。
brew install libusb brew install libusb-compat
libpafe本体のビルド
最終更新日が古いが、現在もビルドできた。
git clone https://github.com/rfujita/libpafe.git cd libpafe ./configure --prefix=$HOME/local make
--prefixはお好みで、make installせずとも共有ライブラリ(libpafe.dylib)は作成されている。
Juliaからccallを使ってlibpafeを利用する
libpafe.dylibのパスを外だしにしたので、Libdlを使って共有ライブラリのオープン、 ccallで使用するシンボル参照の取得を手動で行った。
実行結果
参考資料
おわりに
iPhoneのSUICAはダメだった。アプリを起動した状態でも読み取れなかった。 WindowsでもWSL2になれば、動くのか?気になる。
関連記事
- RC-S320非接触ICカード&リーダ/ライタ
- Julia言語で久しぶりにHTTPをHTTP.jlや生ソケット通信で喋って、動画配信を試した
- Julia言語からmruby-webcamを使ってWebカメラの画像を取得した
- 2019年版8コア版のMacBook Proが届いた