Pythonで市販のNFCタグ、Suica、AndoroidスマホのタグIDをそれぞれ読み取るプログラム。
市販タグはType2、SuicaはType3、スマホはType4で、かざしたタグに合わせてIDを読み取ってくれるよ。Type4タグはちょっと特殊でそのまま読んでしまうとランダムな値を返されるので、読取対象を限定することで固有値を返してくれるよ。
import nfc
import binascii
import time
#カードリーダー接続チェック5回まで
for try_connect in range(5):
try:
nfc_reader = nfc.ContactlessFrontend("usb")
except Exception as e:
print("リーダーの接続を確認しています:",e)
time.sleep(1)
else:
print("カードをかざしてください:")
try:
check_tag = nfc_reader.connect(rdwr={"on-connect": lambda tag: False})
finally:
tag_id = None
if check_tag.TYPE == "Type2Tag":
tag_id = binascii.hexlify(check_tag.identifier).decode()
elif check_tag.TYPE == "Type3Tag":
tag_id = binascii.hexlify(check_tag.idm).decode()
elif check_tag.TYPE == "Type4Tag":
check_tag = nfc_reader.connect(rdwr={"targets": ["212F", "424F"],"on-connect": lambda tag: False})
tag_id = binascii.hexlify(check_tag.identifier).decode()
nfc_reader.close()
print("ID:" + tag_id)
break
else:
print("試行回数が限界に達したため処理を終了します")
コメント