LoginSignup
9

More than 5 years have passed since last update.

pythonのnfcpyのnfc.ContactlessFrontend()のメモ

Posted at

サンプルプログラム

SimpleSample.py
# coding: utf-8

import sys
import os
sys.path.append(os.path.dirname(__file__) + '/nfcpy')
import nfc

# カードがタッチされたときに実行する関数
def hello(tag):
    print 'hello'

clf = nfc.ContactlessFrontend('usb')            # USB機器ということだけを指定
#clf = nfc.ContactlessFrontend('usb:054c:06c3')  # ベンダIDを指定(SONYのPaSoRiのベンダID)
#clf = nfc.ContactlessFrontend('usb:001')        # バス番号を指定。このバスで最初に該当するものを選ぶ
#clf = nfc.ContactlessFrontend('usb:001:011')    # バス番号とデバイス番号を指定

rdwr = {'on-connect':hello}

print 'start'
clf.connect(rdwr=rdwr)
print 'end'

clf = nfc.ContactlessFrontend() について

clf = nfc.ContactlessFrontend()でカードリーダと接続を行うが、引数の部分にはいくつか種類がある。

引数 意味
'usb' 'usb' デバイスな中から(一番初めに?)見つかったものに接続
'usb:ベンダID' 'usb:054c:06c3' 指定のベンダIDのデバイスの中から(一番初めに?)見つかったものに接続
'usb:バス番号' 'usb:001' 指定のバス番号のデバイスの中から一番初めに見つかったものに接続
'usb:バス番号:デバイス番号' 'usb:001:011' 指定のバス番号とデバイス番号のデバイスに接続

ベンダIDやバス番号、デバイス番号はlsusbコマンドで調べることができる。

$ lsusb
Bus 001 Device 010: ID 054c:06c3 Sony Corp.
Bus 001 Device 011: ID 054c:06c3 Sony Corp.

# Bus [バス番号] Device [デバイス番号]: ID [ベンダID] [メーカ名]

※デバイス番号については、カードリーダを抜き差しするごとに更新されてしまう。

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
9