外部プログラムで読んだカード情報を LibreOffice に渡す[プログラミング]
(2019-08-25 16:51:53) by shinoda


< ページ移動: 1 2 >

外部プログラムで読んだ FeliCa カードの情報を LibreOffice の Calc に渡してみた。

もし、マクロで FeliCa カードが読めないのなら、この方法でも良いかな・・・と。
(ま、別のエントリーで書く予定だけど、マクロとして実行した Python プログラムで FeliCa カード読めたんだけどね)

1.LibreOffice Calc(表計算)を外部プログラムとの通信可能な状態で起動。

外部プログラムと通信する port 番号を指定して Calc を起動するので、メニュー等からではなく、コマンドで起動すること(Windows ならコマンドプロンプトからとか)

C:\Users\shinoda\Source\Python>"C:\Program Files\LibreOffice\program\soffice.exe" --calc --norestore --accept=socket,host=localhost,port=8100;urp

これで、外部プログラムとの通信用 port(8100番)を開けた Calc が起動する。

2.外部プログラムの実行。

今回起動する Python スクリプトはこんな感じ。
カードリーダー SONY RC-S380 で読みとった FeliCa カード情報を Calc の任意のセルに貼り付けるだけのプログラム。

import nfc
from nfc.clf import RemoteTarget

import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
    "com.sun.star.bridge.UnoUrlResolver", localContext)

# Calc に port=8100 で接続
ctx = resolver.resolve( "uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager

# ドキュメントオブジェクトの取得
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
doc = desktop.getCurrentComponent()
sheet = doc.getSheets().getByName('Sheet1')

# カード読み込み待ち
clf = nfc.ContactlessFrontend('usb')

< ページ移動: 1 2 >


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8