PaSoRiをPythonで触るにはnfcpyが最もポピュラーだが、調べていくとRC−S300はnfcpyが非対応とのこと。
情報がほぼ出回っていないので、RC-S300でIDmを取得する方法を残しておく。
環境
Raspberry Pi 4
Linux Raspberrypi 6.6.51 Debian
使用ライブラリ
使用するライブラリはpyscardというもの。
ただ、この記事を参考にpip install pyscard
と叩いても、自分の環境だとエラーを吐いてインストール出来なかった。どうやら手動でPC/SCの環境を導入する必要があるらしい。
PC/SC導入
この記事のpcsc_scanの部分まで、パッケージのインストールをして動作テストを行う。各ディストリビュージョンによってパッケージの名前が少しずつ異なるため適宜調整しよう。
$ sudo apt install libusb-dev libpcsclite-dev opensc pcscd pcsc-tools
再びpyscardをインストール
ここまで済んだらもう一度pip install pyscard
と実行する。恐らくスルッと入ってくれる。もしまだエラーを吐くようならvenv使ってないとかその辺。
入ったら上記記事を参考に動作テストを行う。
from smartcard.util import toHexString
from smartcard.System import readers as get_readers
import time
readers = get_readers()
print(readers)
while True:
try:
conn = readers[0].createConnection()
conn.connect()
send_data = [0xFF, 0xCA, 0x00, 0x00, 0x00]
recv_data, sw1, sw2 = conn.transmit(send_data)
print(toHexString(recv_data))
break
except:
time.sleep(1)
# >>>(カードリーダーの情報)
# >>>xx xx xx xx(16進数のIDm)
これでRC-S380とnfcpyを使った動作とほぼ同じ情報を取得できる。