non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

MacBook ProでPaSoRi(RC-S320)を繋いでJuliaでPASMOの残高を表示した

こんばんは。今日は、雨の中、兄弟で習っている教室に午前と午後の2回、バスで往復して交通費で破産しそうな@kjunichiです。

背景

PASMOの残高をMacBook Proで調べたくなり、何世代も古くなってしまったSONYRC-S320を USB-Cに変換してMacBook Proに繋ぎ、Julia言語でPASMOの残高を表示してみた。

b.hatena.ne.jp

のブックマーク先の記事(2019年6月時点では読めない状態)でOSX時代よりlibusb経由でSUICAPASMOの読み取りは可能であることを知っていた。

今回は新しく購入した2019年版MacBook ProでJulia言語を使ってやってみることにした。MacBook ProはUSB-Cのみだが、 変換アダプタによりPaSoRiをUSBデバイスとして繋げる。

以前タイムセールで買った上記のアダプタを使ってPaSoRiMacBook Proを繋げた。

libpafe.dylibを作る

前述の記事より知っていたlibusbの上でPaSoRiを利用する為のライブラリだと、ビルドはできたものの、セグフォして動かなかった。

そこで、より新しいライブラリとして、libpafeがあることを知った。

今回はこのライブラリを使用することにした。Pythonでの実装を以下のQiitaの記事で見つけて、 この記事のおかげでJuliaで動かすことが容易にできた。

qiita.com

下準備

libpafeで必要なlibusbライブラリ関連をHomebrewで入れる。

brew install libusb
brew install libusb-compat

libpafe本体のビルド

github.com

最終更新日が古いが、現在もビルドできた。

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で使用するシンボル参照の取得を手動で行った。

実行結果

www.instagram.com

参考資料

おわりに

iPhoneSUICAはダメだった。アプリを起動した状態でも読み取れなかった。 WindowsでもWSL2になれば、動くのか?気になる。

関連記事

7年前の記事