FeliCa カード読み込みの簡単なスクリプト[プログラミング]
(2019-08-18 06:36:47) by shinoda
FeliCa カード読み込みの Python スクリプトを LibreOffice Calc にマクロで組み込みたいんだけど、tagtool.py をもとにスクリプトを書くには、tagtool.py が大きすぎて骨が折れそう。
なにせ、Python を触ったことはあるけど、ちゃんとプログラミングしたことはないからな(^^; 真似するにしても、元ソースの構文調べながらになるから tagtool.py は大きすぎる。
とりあえず 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 して止めるしかなくなる(^^;
マクロに組み込んだときにどうなるんかな?
コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る
Powered by
MT4i 3.0.8