電気ウナギ的○○

About Home

LibreOffice Calc のマクロで FeliCa カードを読む

shinoda (2019年8月25日 18:36)
エラーが出てうまく動かなかった FeliCa カード読み込みマクロだが、結局、

com.sun.star.uno.RuntimeException: Couldn't convert SONY RC-S380/P on usb:003:008 to a UNO type; caught exception: <class 'AttributeError'>: 'ContactlessFrontend' object has no attribute 'getTypes', traceback follows
no traceback available...

というエラーのとおり、文字列しかセットできないセルに対して、ContactlessFrontend オブジェクトをそのまま突っ込んだのが悪かった。str(clf) のように、str 関数を使って文字列変換してからセルにセットすればよかったのだ。

というわけで、

# -*- coding: utf-8 -*-
# LibreOffice 用マクロ

import uno

def GetCardData( ):

    import nfc
    from nfc.clf import RemoteTarget

    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getSheets().getByName('sheet1')

    clf = nfc.ContactlessFrontend('usb')

    cell = sheet.getCellRangeByName('A1')
    cell.String = str(clf)

    tag = clf.connect(rdwr={
        'on-connect': lambda tag: False
    })

    cell = sheet.getCellRangeByName('A2')
    cell.String = str(tag)

というマクロを作成し、GetCardData を実行。

20190825_nfc1.jpg

すぐに、'A1'セルにカードリーダー情報がセットされる。

この状態で、カードリーダーで FeliCa カードを読むと、今度は 'A2'セルに FeliCa カード情報がセットされる。

20190825_nfc2.jpg

ばっちりやん、ばっちりやん。

これが一番操作的にはシンプルでええね。普通に Calc のファイルもダブルクリックで起動できるしね。(外部プログラムから FeliCa 情報を得ようとすると、Cals 自体を色々オプションをつけてコマンドラインから起動しないといけない)

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/5415

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE