FeliCa カード読み込みの簡単なスクリプト

FeliCa カード読み込みの Python スクリプトを LibreOffice Calc にマクロで組み込みたいんだけど、tagtool.py をもとにスクリプトを書くには、tagtool.py が大きすぎて骨が折れそう。
なにせ、Python を触ったことはあるけど、ちゃんとプログラミングしたことはないからな(^^; 真似するにしても、元ソースの構文調べながらになるから tagtool.py は大きすぎる。

とか考えてたら、@NoTASKさんの「nfcpy 0.13.4でNFCのIDを読む」というページにシンプルなソース例が。

とりあえず print 分だけ修正し(ちゃんと、カッコで出力する文字列(変数も)を囲まないと、Python3 ではエラーになるようだ)、実行してみた。

2枚のカードを読んでみたが、それぞれ

pi@raspberrypi:~/test/pasori $ sudo ./nfc_test2.py
Type3Tag 'FeliCa Lite-S (RC-S966)' ID=012E4CD257C6A091 PMM=00F1000000014300 SYS=88B4
Type3Tag
b'012E4CD257C6A091'
pi@raspberrypi:~/test/pasori $ sudo ./nfc_test2.py
Type3Tag 'FeliCa Lite-S (RC-S966)' ID=012E4CD257C35873 PMM=00F1000000014300 SYS=88B4
Type3Tag
b'012E4CD257C35873'

このようにちゃんと ID も取れている。ばっちりじゃない。

この機能をマクロに組み込みたいのよね。

一発だけ読むのではなく、ずーっと読み込み続けるように無限ループさせて。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import nfc
import binascii
import time

def on_connect(tag):
    print(tag)
    print(tag.type)
    print(binascii.hexlify(tag.identifier).upper())

def main():
    while True:
        with nfc.ContactlessFrontend('usb') as clf:
            clf.connect(rdwr={'on-connect': on_connect})

        time.sleep(3)

main()

こんな感じで。

一度の実行で連続で読み込める。(time.sleep しないと、カード当てたとたんにザーっと連続で読み込むんで注意ね(笑)

pi@raspberrypi:~/test/pasori $ sudo ./nfc_test2.py
Type3Tag 'FeliCa Lite-S (RC-S966)' ID=012E4CD257C6A091 PMM=00F1000000014300 SYS=88B4
Type3Tag
b'012E4CD257C6A091'
Type3Tag 'FeliCa Lite-S (RC-S966)' ID=012E4CD257C35873 PMM=00F1000000014300 SYS=88B4
Type3Tag
b'012E4CD257C35873'
Type3Tag 'FeliCa Lite-S (RC-S966)' ID=012E4CD257C3AFA2 PMM=00F1000000014300 SYS=88B4
Type3Tag
b'012E4CD257C3AFA2'

これを元に、読み込んだ ID 情報をシートに貼り付けていくマクロを作ってみよう。

ところで、Python の無限ループって、Ctrl+C とかも受け付けなくなるんやね。Perl だと、Ctrl+C とかで止められるんだけどな。Python の場合、一定時間ごとに break する処理を書かないと、kill して止めるしかなくなる(^^;

マクロに組み込んだときにどうなるんかな?
Clip to Evernote

トラックバック(0)

このブログ記事を参照しているブログ一覧: FeliCa カード読み込みの簡単なスクリプト

このブログ記事に対するトラックバックURL: http://blog.netandfield.com/mt/mt-tb.cgi/5406

コメントする

このブログ記事について

このページは、shinodaが2019年8月18日 06:36に書いたブログ記事です。

ひとつ前のブログ記事は「Python3 で tagtool.py を実行する」です。

次のブログ記事は「九重商店のラーメンは俺の苦手要素満杯」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら