【LabVIEWまずこれ⑭】列挙体について知ろう | マーブルルール

【LabVIEWまずこれ⑭】列挙体について知ろう

LabVIEWまずこれ

スポンサーリンク

LabVIEWを触ったことがない方に向けて、それなりのプログラムが書けるようになるところまで基本的な事柄を解説していこうという試みです。

シリーズ14回目として条件分岐と相性のいい列挙体について紹介していきます。

この記事は、以下のような方に向けて書いています。

  • 列挙体って何?
  • 列挙体を編集するにはどうすればいいの?

もし上記のことに興味があるよ、という方には参考にして頂けるかもしれません。

なお、前回の記事はこちらです。

スポンサーリンク

列挙体とは?

作成できるプログラムにもっと幅を持たせるため、次の大きなトピックとして条件分岐を扱っていこうと思います。

LabVIEWではケースストラクチャと呼んでいますが、他言語だとif文などと呼ばれるものですね。LabVIEWはif文も当然グラフィカルに記述します。

ただ、ループ構造をやる前にこれと相性のいい配列について紹介したように、ケースストラクチャをやる前にもこのケースストラクチャと相性のいい便利なデータタイプを紹介しようと思います。それが列挙体と呼ばれるものです。

簡単に言えば、「ユーザーが見て区別できる項目名を列挙したオブジェクト(制御器、表示器、あるいは定数)」です。

これではなんのこと言っているのかわからないという方。実は既に列挙体を扱っていることにお気づきでしょうか?ファイル操作のプログラムで、ファイルを開くの関数にopenとかcreateなどといった選択肢が出てきていたアレです。

上に示したものが列挙体です。Openとかcreate、とかユーザーが見て処理内容が分かりやすいですよね?openを選択したらファイルを開く、createを選択したらファイルを新規で作成するというふうに、「処理を分ける」ことができています。

これ、if文ととても親和性が高いと思いませんか?「もしXXという名前が列挙体から与えられたらAAという処理をする、もしYYという名前が列挙体から与えられたらBBという処理をする」ということができるようになるわけです。

列挙体の作り方

もちろん列挙体もプログラマーが自由に作ることができます。

といっても特別難しいことはありません。列挙体を作るのは専用の編集の画面でさくさくできます。以下で流れを確認していきます。

まず新規のviを開いたら、フロントパネル上に列挙体を用意します。リング&列挙体という項目を見てください。

列挙体の制御器を置いたら、右クリックします。中に「項目を編集」があるのでこれを選択します。

すると、列挙体プロパティとして、別のウィンドウが立ち上がります。

あとはここに、上から順に区別しやすいように好きな項目名を書いていきます。例えば、この後に扱うケースストラクチャ用にここでは「足し算」「掛け算」「割り算」という3つの項目を用意するとします。

ところで、編集できる「項目」の欄の隣が「値」という欄になっています。項目を追加したら、0から順に1、2、・・・と増えていますね。

この理由はブロックダイアグラムを見るとわかります。項目を編集し終えたらOKを押してウィンドウを閉じ、ブロックダイアグラムを見てみます。

ブロックダイアグラムに列挙体のアイコンが出ているので、Ctrl + Hで詳細ヘルプを見てみます。符号なし2バイト整数となっていることがわかりますね。

LabVIEWの中では、列挙体は項目名としての文字の情報ではなく、その項目名が対応した値、数値として扱っています。

つまり、ユーザーからは識別しやすい文字列で分かれているけれども、LabVIEW側はそれら項目に紐づいた数値によって各項目を区別しています。なので、プログラムとしては列挙体に対して四則演算が行えたりします(あまり演算を必要とする場面はないかもしれないですが)。

また、ブロックダイアグラムからも列挙体を作ることができます。作る際にはブロックダイアグラムで関数パレットを出し、「数値」のパレットに「列挙体定数」があるのでこれを選択します。

あとは同じ手順で、右クリックして項目を編集してやります。

列挙体についてはとりあえずまずはこのような作成方法を知っておくだけでいいです。もう少し応用的な話でも列挙体が登場(タイプ定義など)しますが、まずは作り方をしっかりマスターしてしまいましょう。

さぁこれで準備が整いました。次はいよいよ条件分岐を行うプログラムの書き方に移っていきます。今回扱った列挙体が早速活躍します!

もしよろしければ次の記事も見ていってもらえると嬉しいです。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました