LoginSignup
2
2

More than 5 years have passed since last update.

LabVIEW Tips:列挙体の型変換

Last updated at Posted at 2015-02-17

覚えておくとたまに役立つ列挙体と整数,文字列間の相互型変換

基本

列挙体-整数.png

整数-列挙体.png

整数-列挙体2.png

2015-02-18 00_57_30-名称未設定 1 フロントパネル 「名称未設定プロジェクト 1_マイ コンピュータ」 _.png

列挙体のデータは符号無し整数型です。
通常の整数と異なる点はタイプ定義の領域に項目名のリストがある点です。
また、未定義の値を許容しないので範囲外の値は最後の項目に強制されるようです

列挙体-文字列.png

文字列-列挙体.png

文字列→列挙体変換は厳密に文字列が一致している必要があります。
列挙体の項目と一致する文字列が来なかった場合は文字列からスキャン関数でエラーが発生します。


文字列→列挙体 その2

文字列からスキャン関数でスマートに出来るのでお遊びでしかないですが…何かのヒントになれば。

文字列-列挙体2.png

応用

高機能なシーケンスストラクチャのようなもの

「ただ何かを順番に実行したいだけ」という時にスタックシーケンスストラクチャの代わりになります。

シーケンスストラクチャの置き換え.png

以下の点でスタックシーケンスストラクチャよりも優れています。
・コードが自己説明的
・列挙体の定義で順番を入れ替えるだけで実行順序の入れ替えが可能
・シフトレジスタでデータを次のステップに受け渡し出来る
・シーケンスの途中でエラーが発生した場合にブレイク出来る

但し、これはある程度理解している人が触る前提のコードかもしれません。
型変換の挙動を理解してる人が触る分には良いですが、U16へのキャストを外されたり、列挙体の型を変更されたりすると、同じケースを複数回実行したり、意図したケースが実行されない等の困った症状に繋がります。


列挙体の項目名一覧を取得する

列挙体-項目名[].png

基本は見ての通り列挙体→文字列です。範囲外の値からキャストしても範囲内に強制されることを利用して最後の項目でブレイクしています。
ブロックダイアグラム内の列挙体定数でも項目名を取得することが出来ます。
(フロントパネルに配置している列挙体ならプロパティノードで項目名の一覧を取得出来ます)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2