08b – Kivyによるインターフェイス構築

20191005-01

『隙あらば』のスキャンを挟み、使い勝手を改良していく作業が続いています。

以前の試運転で1)配線が散らばりすぎており、2)右側に端末や配線があってフィルム装填やカメラ位置の調整時に干渉してくる問題が発生していました。モーター用ドライバを小型化してケースに隠し、ラズベリーパイとArduinoをカメラの左側に寄せて右のスペースを確保しました。

また振動対策を兼ねて脚を設置、配線をモールに隠し、四隅を保護する真鍮製の縁をつけています。右手の空いたスペースにはスキャン機の名入りの札をつけることにしました。

20191005-02

QTでのユーザーインターフェイス開発は時間がかかりすぎるため後回しにし、Kivyをインストールしてまずシンプルなバージョンを作り上げるよう軌道修正しています。

20191005-gui-kivy02

まずはパソコン上でイメージ作り。画面の上側2/3にスキャンした画像が反映される形にします。操作用ボタンは下の1/3にまとめていきます。

ボタンに関数を張り付けていきます。果たしてトリガー(磁石)から伝わってきたデータを処理できるでしょうか。元のパイソンプログラムは「while True」を使った構文でトリガーの情報の変化を待っていました。そのままkivyで処理しようとしたところ無限ループを含んだ構文は認めないようでUIが固まりました。kivy公式を見ると「schedule_interval()」 (スケジュール・インターバル)を使ってくださいとのこと。

2019-10-05-test01s

トリガーがオフ(磁石とリードスイッチが離れている)時には「Trigger Off」の表示が出て、トリガーがオンになった瞬間「Trigger On!」の表示が出るテストプログラムです。実際に試してみたところ:

2019-10-05-test02s

スイッチが入った瞬間に「Trigger On!」に変わっています。どうやら動いている模様。後はこの文字表示のプログラムをカメラでの撮影プログラムに置き換えていきます。