3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PaSoRi RC-S300をPythonで扱う

Last updated at Posted at 2024-10-02

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を使った動作とほぼ同じ情報を取得できる。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?