Raspberry Pi から IRKitを操作する。QuickIR
Windowsでも動くか?
IRKit操作のGUIプログラム QuickIR ですが、Windowsでも動くか試してみました。検証には仮想マシンにインストールした Windows 10 Enterprise 90日間評価版を用いました。結果は、非常につまらんバグが原因で起動さえできない事が分かりました。
Windowsで QuickIR を動かすには以下の準備が必要になります。
- Windows版Python3をインストールする
Windows版Python3インストーラはPython.orgから入手できます。今回は最新版のVer.3.5を使用しました。
- Bonjour for Windowsをインストールする
Appleが配布しているBonjour for Windowsをダウンロードしてインストールします。ただインストーラの配布場所がAppleサポートのBonjourを見ても良く分かりませんでした。仕方ないのでワタシはここから入手しました。
- pybonjourモジュールをインストールする
これは以前の記事「2. Python3用の pybonjourモジュールをインストールする」と同じです。
- QuickIRの構成プログラム(以下)をWindowsにコピーする
- resolve_irkit.py
- irkit_com.py
- QuickIR.py
準備が整ったら先ず "resolve_irkit.py" を動かしてみます。DOSプロンプトを起動して、
C:QuickIR> python . resolve_irkit.py
|
と入力します。IRKitデバイスを見つけられなかった場合は、ネットワーク設定やBonjourサービスが起動しているか等を確認します。
"resolve_irkit.py" が動く事を確認したら、次は "irkit_com.py" です。同様にDOSプロンプト上で "irkit_com.py" を動かすと、いきなりKeyError例外が発生して落ちます。原因は
save_dir = os.environ['HOME'] + '/' + '.irkit.d'
|
の os.environ['HOME'] でした。HOME環境変数の値を取得しようとしているのですが、Windowsには HOME環境変数って無いんですね。少し調べてみたら、Windowsでは HOME環境変数に相当するのは USERPROFILE環境変数のようです。そのため、この部分を以下のように修正しました。
def ir_save_dir():
'''save directory of IR signal files'''
try:
home = os.environ['HOME']
except:
home = os.environ['USERPROFILE']
return home + '/' + '.irkit.d'
save_dir = ir_save_dir() # Getした赤外線信号の保存先ディレクトリ名
|
ir_save_dir()関数を追加し、HOME環境変数の値取得で例外が発生したら USERPROFILE環境変数の値を取得するようにしてみました。(*1)
同じ処理が "QuickIR.py" の方にもありますので、以下のように修正しました。
from irkit_com import ir_save_dir, get_irkit_info, get, post, delete # IRKit操作コマンド
save_dir = ir_save_dir() # Getした赤外線信号の保存先ディレクトリ名
|
その他、パスの区切り文字、文字コードやGUIなどの細かな違いは Python や Tkinter が吸収してくれます。これだけの修正で QuickIR が Windows上でも動くようになりました。
最後に Windows 10の感想をちょっとだけ。世間では Windows 8の失敗から学んだ事が生かされスタートメニューが復活したとか、Windows 7以降からは無料でアップグレードできると、概ね高評価のようです。でも、実際に使ってみると Windows 8の上っ面だけ変えただけのような印象を受けました。
スタートメニューも以前のメニューの横にタイルが並んでいて、ちょっとだけ昔のスタートメニューにも戻してみたって感じ。設定も表層はタブレット、スマフォ等の操作方法(例えばオン/オフの切り替えがスライドスイッチになっている)ですが、少し深い所(詳細設定など)になると、途端に以前に見たことある画面が出て来て、こちらではオン/オフ切り替えはチェックボックスだったりするんですよね。何だか中途半端な感じ。
目に見えない内部では色々と改良されているのかもしれませんが、これで高い金取られるのは何だかなぁと思ってしまうので、無償アップグレードにしたのは正解だと思います。
実はもっとエレガントな修正方法があったのでした。以下のようにすると、PythonがHOMEディレクトリに関するプラットフォームの差異を吸収してくれるのでした。
def ir_save_dir():
'''save directory of IR signal files'''
return os.path.expanduser('~') + '/' + '.irkit.d'
save_dir = ir_save_dir() # Getした赤外線信号の保存先ディレクトリ名
|
|