【Scilab/Xcos】 GUIの例題(グラフを表示するGUIの作成-2)

1.続き(Scilab / GUIの例題(グラフを日用事するGUIの作成)

以下の記事の続きです。
【Scilab/Xcos】 GUIの例題(グラフを表示するGUIの作成-1) | 株式会社応用技術研究所 (hagane-karakuriya.com)

前回、スライダーコンポーネントのプロパティの設定について、記載し忘れました。(すみません)
GUI Builderの復習を兼ねて、プロパティの設定を行ってみましょう。

周波数の設定スライド、振幅(強度)の大きさの設定スライドの最大値やスライドのステップを設定します。

  • 最大値(Max.) [100.]
  • ステップ(SliderStep) [0.1,1] / [最小ステップ幅 (0.1), 最大ステップ母(1.)]

ステップの最小幅より小さい値でのステップはできません。
数値としては四捨五入(丸め)ラれます。

2.Scilabコード(.sceファイル)の生成

GUI Builderを使って、デザインパネル上に作成したGUIからfigure(),とuicontrol()で構成されるファイルを生成してくれます。

生成されたファイルで、プッシュボタン・コンポーネントのように、イベント(マウスでクリックするなど)が発生した場合の処理を作り込みます。
このようなコンポーネントに生じるイベントをCallbackと呼び、関数として実行できるようにフレームワークも作成されます。

コンポーネントパネルの右上のメニューバーに”Generate”というメニューがあります。
ここをクリックすると、コンテキストメニューが開き、”Generate GUI code”が表示されるので、この部分をクリックします。

保存先と保存するファイル名を設定します。
任意のフォルダで構いません。
ファイル名については、2バイト文字の使用は避けた方が良いかもしれません。
scilabの開発環境はオープンソースですが、2バイトコードを意識して開発されているわけではありません。その辺は慎重に。

Scilabコードの生成が完了すると、コード変換が成功したことを通知するメッセージウィンドウが表示されます。
Scilabコードに変換したGUI画面を再編集したい場合、GUI Builderを以下のように起動すれば再編集できます。

–> guibuilder(‘<保存したときのファイル名.sce>’);

保存したファイルのCallbackを編集後、GUI Builderで開き、GUIの微調整をしてもCallbackに書き込んだコードは保持されるようです。
気になる方は、バックアップを作成し、GUI Builderの使い方をuicontrol()を作成するツールとして割り切って使っても良いかと思います。

uicontrol()には、コンポーネントパネルで選択した各コンポーネントのプロパティが書き込まれています。
あの内容を手打ちでコードを作成する労力を考えると、uibontrol()のコード生成ツールと割り切っても効率は上がります。

ご自分でいろいろと試された結果、信頼できると判断できたなら、Callbackにコードを記入したファイルをGUI Builderで直接編集しても良いのかもしれません。
その部分は教えられることではなく、自分で学び取ることだと思いますし、自己責任だと思います。

3.Callbackの設定

作成したScilab コードからCallback処理のコードを作成します。

記入するCallbackはスライダーコンポーネントを動かした時に、スライダーで選択した数値をエディットコンポーネントに表示させるコードです。
動作は保証できませんが、以下に使用したコードを記載します。

※Scinotesなどにペーストしたとき、一部のコードが2バイトコードに変換されていることがあります。
実行時にエラーとなりますので、ご注意ください。、


《周波数の設定スライド》

function sldFrq_callback(handles)
//Write your callback for sldFrq here

frq=get(handles.sldFrq,‘Value’);
set(handles.edtFrq,‘String’,string(frq));

endfunction


《新福の設定スライド》

function sldAmp_callback(handles)
//Write your callback for sldAmp here

amp=get(handles.sldAmp,‘Value’);
set(handles.edtAmp,‘String’,string(amp));

endfunction


《プッシュボタンのCallback作成》


function pbPlot_callback(handles)
//Write your callback for pbPlot here

frq=get(handles.sldFrq,‘Value’);
amp=get(handles.sldAmp,‘Value’);

t=evstr(get(handles.edtTime,‘String’));
y=amp.*sin(2*%pi*frq.*t);

if ~isempty(handles.AXES1.children) then
delete(handles.AXES1.children);
end

plot(t,y);

endfunction



4.生成されたScilabコードの実行

Scinotes上で編集後、保存します。

その後、下図に示されるアイコン(実行)をクリックすると、GUI画面が開き、グラフが表示されます。

5.おわりに

現状でも、シリアル通信で制御する機器があります。
ScilabでGUIを作り込むことで、計測機器の制御や測定値の収集tが視覚的、直観的にできるようになります。

また2年ほど前にExcelの仕様が変わり、VBAを使ってWindowsのレガシーDLLを使い、シリアルに接続するようなことは難しくなりました。
現状では、Node-RedやScilabのようなオープンソースのアプリケーションが有する通信機能を使う方が安全で簡単です。

無理にExcel VBAを利用する必要はありません。

多くの場合、このような記事を追体験することが目的となり
業務改善に利用されることは少ないと思います。

当社では、このような著作権に縛られない開発環境を利用し、業務改善を目的としたアプリケーションの開発も承ります。
お問い合わせください。

PAGE TOP