1.例題の説明
2006年頃、レーザー変位計の測定結果(数値データ)をMATLABのGUIで表示させるプログラムを作りました。
現在は、MATLABの利用契約を解約しています。
しかし、作ったものが使えないのは困ってしまうので、そのプログラムの一部を例題として公開することにしました。
【例題の内容】
公開する例題では、正弦波(Sin波)をプロットするGUI画面の作成します。
- プロットする正弦波は y=A・sinωt (A はゼロではない実数とする)
- 周波数の可変範囲 (0<= ω <= 100.)
- 振幅(強度 = A)の可変範囲 (0 <= A <= 100.)
- プロットする時間 (0 <= t <= 10.)
- 時刻の刻み幅dt (dt = 0.01 sec.)
とします。
例題を通じて作り込むと、以下に示されるようなGUI画面になります。
早速、トライしてみましょう。
2.GUI Builderの起動
Scilabのコンソール画面から以下のコマンドを入力し、”GUI Builder”を起動します。
–> guibuilder
以下のようなウィンドウが2つ立ち上がります。
一つは、GUI作成時に使うコンポーネント(プッシュボタンやリストボックスなど)を選択するコンポーネント・パネル。
もう一つは、コンポーネントパネルで選択したコンポーネントを配置し、GUI画面をデザインするデザイン・パネルです。
以下の資料では、GUI Builderのバージョンは2.3ですが、現在、2024年3月時点では4.2.3になっています。
基本的には変わらないのて、一部の資料は、2012年当時のバージョン2.3の画面を使わせていただきます。
3.周波数の可変範囲を設定
コンポーネントパネルから以下のコンポーネントを選択し、デザインパネルに配置してください。
- スライダー
- テキスト
- スライダー
コンポーネント作成時には、デザインパネル配置前にTagとStringを設定する必要があります。
下図に設定するTagとStringをまとめましたので、参考にしてください。
TagとStringの設定については、以下のブログ記事の2.4節に設定画面が示されています。
視覚的な説明が必要な方は、そちらもご覧ください。
【Scilab/Xcos】GUIの例題(シリアル通信回線の接続 / 切断 切換えボタン) -1 | 株式会社応用技術研究所 (hagane-karakuriya.com)
4.周波数の設定(コンポーネントの配置方法)
コンポーネントを配置する流れを示してあります。
画像だけでは理解しづらい方には、手順を言葉でまとめてみましたので、ご参考にしてください。
- コンポーネントパネルから’Slider’ボタンをクリックし、選択する。
- 「Scilab複数値リクエスト(下記の画像では「Scilab複数値要求」となっている)」にTabとStringを設定する。
Tagはコンポーネントを識別するための名称なので、コンポーネント毎に名前を変えること。
Stringは操作ずる利用者が認識できるように表示させる文字列(例えば、「開始」、「閉じる」など)にする。 - 「Scilab複数値リクエスト」にTagとStringを設定したら、「OK」ボタンをクリックし閉じる。
そのまま、デザインパネル上に”Slider”を配置する位置を設定する。(詳細は次のステップで説明) - デザインパネル上で”Slider”を配置する2点(コンポーネントの配置したい領域の左上と右下)をクリックする。
- 配置語、コンポーネントパネルのリストボックスにTag名が表示されます。
“Slider”のプロパティ(詳細設定)を行うときに、このTagを選択します。 - 配置後のコンポーネントの大きさや位置、プロパティの設定については、’9.配置されたコンポーネントの微調整’で説明します。
5.周波数の設定(その他のコンポーネント配置)
この作業を、残りのコンポーネント、”Text”や”Editbox”にも適用し、デザインパネル上に配置します。
6.振幅(強度 = A)の設定(概要)
前節の’5.周波数の設定’と同様に振幅の大きさ(強度 = A)を調整するスライダーを作り込みます。
作業の過程は、’周波数の設定’と同じになります。
以下のコンポーネントを選択し設定してください。
- スライダー
- テキスト
- スライダー
各コンポーネントを識別するためのTagとStringは、下図に示される表などを参考にしてください。
7.表示時間などを設定
表示するグラフの横軸(時間軸)の設定するため、以下のコンポーネントを選択し作成します。
- エディット
- テキスト
- プッシュボタン
時間軸の設定方法はScilabの書式をそのまま入力するようにしています。
[0,0.01,10] ⇒ [開始時刻 (0.0 秒), 時刻の刻み幅 0.01 秒, 表示終了時刻(10.0 秒]
となっています。
各コンポーネントのTabとStringは、以下の図を参照にしてください。
8.プロット画面の設定
正弦波(Sin波)を表示するプロット画面を作成します。
コンポーネントパネルから’Axes’を選択します。
設定するTagやStringは、以下の図を参考にしてください。
9.配置されたコンポーネントの微調整
デザインパネルに配置したコンポーネントについては、微調整が可能です。
- コンポーネントパネルに表示されたコンポーネントのTagをクリックして選択すると、該当するデザインパネル上のコンポーネントが選ばれます。
- コンポーネントの位置については、リストボックスの下にあるボタン”Up(上に移動)”,”Left(左に移動)”,”Right(右に移動)”,”Down(下に移動)”で調整します。
- “Move”ボタンをクリックしマウスのカーソルとデザインパネル上に移動させると、選択したコンポーネントがマウスのカーソルに追従しデザインパネル上を自由に移動します。
位置を決めたらマウスをクリックし、コンポーネントの移動を完了させます。
大きく位置を変更させるときに利用してください。 - コンポーネントの大きさを変更する場合、幅は”W-(幅を狭くする)”、”W+(幅を広くする)”を使います。
高さを調整する場合、高さは”H-(高さを様くする)”,”H+(高さを拡げる)”を使います。 - コンポーネントを削除する場合、”Delete”ボタンをクリックすると、選択したコンポーネントは削除されます。
Undo(やり直し)機能はありませんので、削除したコンポーネントを元に戻すことはできません。
削除するときは、コードとしてバックアップを保存するなど、ご注意ください。
※バックアップ方法については、次回の記事で説明します。 - 選択したコンポーネントのプロパティ設定は、”Object Properties”ボタンをクリックし、設定する画面を立ち上げてください。
その画面でStringの位置(左詰め、センタリング、右詰めなど)や、コンポーネントのバックグラウンドカラーなどを設定できます。
下図を参照してみてください。
10.次回のおしらせ(例題の続き)
続きは次回の記事に掲載いたします。
次回は、デザインパネルで作成したGUI画面をScilabのプログラムに変換します。
プログラム編集で、GUIのコンポーネントを操作したとき、イベントが発生しますが、イベントに対する処理”Callback”をプログラムで作成します。
GUIの場合、イベント・ドリブンのプログラムになります。
通常のプログラムはバッチ処理型なので、GUI画面が開いている間はScilabのプログラムが実行中となります。
プログラムの駆動方法が変わりますので、初めて挑戦する方は、その辺の違いについても調べてみてください。