この記事で扱っていること
- 押した回数で処理内容を変えるスイッチを実装する方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
ユーザーインタフェースとなるLabVIEWのフロントパネル上にブール制御器であるスイッチを配置する際、複数の選択肢から一つを選択して開始させたいときにその選択肢の分だけスイッチを配置してしまうとフロントパネルが巨大化してしまう場合があります。
そうではなく、スイッチは一つだけとして、押した回数に応じて処理内容を変えられるようにしておけば、すっきりした見た目のインタフェースにすることができます。
ブール自体はTrue、Falseしか表現できませんが、押した回数に意味を持たせれば複数の選択肢から選んでいるかのように使用することができるので本記事ではその一例を紹介しています。
どんな結果になるか
フロントパネルには選択肢を選ばせるためのブール制御器と、決定のためのブール制御器とプログラムの停止用のブール制御器を配置しています。
押すたびに処理内容が変わる(ブール制御器の表示内容を変更している)ようにしていて、決定をしたらその内容を実行する、という組み方の土台としています。
なお、実際に特定の処理内容を実行させるような応用例は記事後半で紹介しています。
プログラムの構造
プログラム自体はシンプルで、単にイベントストラクチャを使っているだけです。
色の指定は好きに行えばいいのですが、もし冒頭の図で紹介したそれぞれの色合いにしたいという場合には、以下の図の値をそれぞれカラーボックス定数のU32値として指定してください。
また、Whileループに入る前にある文字列の2次元配列は、2列目の縦に「処理A」「処理B」「処理C」とあり、列は4つありますが、2列目以外は空白としています。
今回は3つのパターン数としていますが、もしパターン数を増やすのであれば、この文字列の2次元配列の行数を増やし、色の指定もこれに伴い行を増やせば対応できます。
また、空のボタンの値変更イベント内上の方にある、2と大小を比べている部分も、「パターンの数-1」の値になるように変更してください。
プロパティノードの項目の一部にはVIスクリプトの設定を有効にしないと選べないものがある(通常プロパティノードは黄色ですが、水色の場合には一部がVIスクリプトの機能を使用していることを表しています)ので注意します。
これ以外のイベントケースでは特に何もしていません。
「処理開始」のイベント必要か?と思われるかもしれませんが、記事後半のプログラム例でこの部分を使用します。
特定の処理を実行させる例
基本的にイベントストラクチャの中に重たい処理は起きたくない(イベントケースの中身が終わるまでフロントパネルがロックされてしまいますし)ため、ブール制御器が押されてから処理を実行に移すためにはその処理内容を別ループ内に書くのがいいと思います。
そのためイベントストラクチャが入ったループと処理内容を実行するループの間でキューを使用します。
処理開始のイベント内には少しコードを追加します。
デキュー側は、今回は単に1ボタンダイアログを使用しているだけですが、この例のように文字列なり数値で各パターンを識別できるので、あとはケースストラクチャを使用して実際に各パターンで異なる処理が実行されるように組んでみてください。
本記事では、押した回数で処理内容を変えるスイッチの実装について紹介しました。
似たような考え方は、別にブール制御器ではなくても、2dピクチャに対してクリックした回数に応じて処理内容を変えるような動作としても実現できると思います。
ここまで読んでいただきありがとうございました。
コメント