non vorrei lavorare

2020年度からの小学校プログラミング教育の必修化を親として迎えるブロガーの書く、子供との日常

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年前の記事