26
23

More than 5 years have passed since last update.

Python3でnfcpy

Posted at

はじめに

初投稿です。
プログラミング関連の知識はほぼ無い浅学な者ですが、気が向いたときに更新できれば、と思っております。よろしくお願いいたします。

nfcpyがPython3対応

さて、PythonでNFCを扱うとなると、nfcpyを用いるのが(多分)定番だと思います。
しかし、これまではPython2のみ対応と、普段Python3で書いている方々にとっては頭が痛かったのではないでしょうか。
私も先日NFCリーダライタ(SONY RC-S380)を購入し、Python2で簡易的な入退室管理システム等を構築していた所なのですが、どうやら最近になってPython3に対応したとの情報をキャッチ。
早速Python3にも導入していきます。

nfcpy

導入環境

  • Windows 10 Home 64-bit
  • Python 3.7.3
  • nfcpy 1.0.1
  • SONY RC-S380

下準備

ただリーダを刺してコードを書いただけでは動きませんので、下準備をしていきます。すでに導入済みの方は適宜読み飛ばしてください。

1.libusbの導入

まずはlibusbを導入していきます。
このページからDownloadsをクリック、githubに飛ばされるのでそこからダウンロードします。
(今回はlibusb-1.0.22.7zを使用)
解凍したら次の操作をします。

  • 64ビット版Windowsの場合

    • MS64\dll\libusb-1.0.dllC:\Windows\System32にコピー
    • MS32\dll\libusb-1.0.dllC:\Windows\SysWOW64にコピー
  • 32ビット版Windowsの場合

    • MS32\dll\libusb-1.0.dllC:\Windows\System32にコピー

2.ドライバの適用

次にこのページからZadigをインストールします。
(今回はZadig 2.4を使用)

RC-S380を刺し、一旦ドライバが自動適用されるまで待ちます
私の環境では自動適用されないうちにセットアップを進めたら上手くいきませんでした。

適用されたのを確認してZadigを起動、リストボックスからRC-S380を選択します。

(ない場合はOptions -> List All Devices)

Driverの欄はWinUSBを選択。

Replace Driverをクリックして待ちます。

完了したら下準備は終了。

nfcpyの導入

nfcpyをインストールしていきます。

nfcpyはpipでインストール可能です。(ここでlibusb1も同時にインストールされるようです)

> pip install nfcpy

インストールが完了したらPythonを起動して正常にインポートできるか確認。

>>> import nfc

動作確認

今回は読取対象をSuicaに限定してみます。
こうすることでApple Pay等、エキスプレス設定のバーチャルカードでも一発で読めます。

その他の文法も基本的にPython2のnfcpyと相違ないようなので、各自お調べください。

Suicaのidmを読み取るサンプルを置いておきます。

NFCread.py


import nfc
import binascii

suica=nfc.clf.RemoteTarget("212F")
suica.sensf_req=bytearray.fromhex("0000030000")


while True:

    with nfc.ContactlessFrontend("usb") as clf:

        target=clf.sense(suica,iterations=3,interval=1.0)

        while target:

            tag=nfc.tag.activate(clf,target)

            tag.sys=3

            idm=binascii.hexlify(tag.idm)

            print(idm.decode())

            break

カードが置かれている間、idmを出力し続けます。

終わりに

ということで、ついにPython3にnfcpyが来た、という話でした。
いやぁ、Python3で書ける様になるのは有難いですね、、、。

26
23
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
26
23