列挙体を編集するとケースストラクチャでケースラベルが変更されて強制ドットが表示される

更新しました Aug 24, 2023

使用製品

ソフトウェア

  • LabVIEW

問題

  • ステートマシンがあり、列挙体を使用してさまざまなステートを選択しています。ケースストラクチャを作成した際、各ケースでテキストラベルを使用することができました。しかし、ケースストラクチャと列挙体に変更を加えたら、ケースのいくつかは数字に戻されました。 
  • VIを実行しようとすると、「タイプ定義; 制御器がそのタイプ定義と一致しません」というエラーが表示されて実行ボタンが壊れます。そして、ケース内にある列挙体定数のいくつかがグレーアウトされています。
  • ケースストラクチャで列挙体セレクタを編集したら小さな赤い強制ドットが表示されました。

解決策

ケースセレクタへの入力によって、ケースストラクチャのラベルが決定されます。ケースセレクタに配線されている入力の種類が異なる場合、ラベルは可能な限り一般的なものに設定されます。たとえば、Whileループ外にある列挙体の項目が各ケース内の列挙体の項目と異なる場合、ケースストラクチャはラベルに表示するタイプを決定できず、数値が表示されます。LabVIEWは、ケース内のいくつかの列挙型セレクタを小さな赤い強制ドットで表示したり、グレーアウトしたりすることもあります。


列挙体がVI内のどこでも同じであることを確認するには、タイプ定義を作成します。
  1. ブロックダイアグラムで列挙体を右クリックして、上級>>カスタマイズを選択します。

 
  1. カスタム制御器ウィンドウが開きます。
  2. 制御器と表示されているツールバーのプルダウンメニューをクリックし、タイプ定義を選択します。

 
  1. ファイル>>保存をクリックして、ファイル名を入力して.ctlという拡張子の付いた制御器を保存し、カスタム制御器ウィンドウを閉じます。
  2. ダイアログボックスに次のメッセージが表示されます。
    元の制御器「列挙体」を「制御器名.ctl」に置換しますか?
    表示されたら、はいを選択します。
  3. ブロックダイアグラムですべての列挙体を制御器名.ctlに置き換えます。タイプ定義を配置するには、関数パレットでVIを選択を選択して、制御器名.ctlに移動します。または、ブロックダイアグラムに保存されているフォルダから.ctlファイルを直接ドラッグすることもできます。各インスタンスを右クリックして、タイプ定義から自動更新に設定されていることを確認します。

 
  1. フロントパネルで列挙体が表示されないようにするには、列挙体を右クリックして定数に変更を選択して定数にします。
  2. 列挙体を変更するには、列挙体を右クリックしてタイプ定義を開くを選択します。
  3. 制御器ウィンドウが開いたら、列挙体を右クリックしてプロパティを選択します。
  4. 必要な変更を行い、保存して終了します。VI内のすべての列挙体が更新され、新しい変更が加えられます。
  5. 追加した列挙体の項目に対応する新しいケースをケースストラクチャに表示するには、ケースストラクチャの枠を右クリックして、すべての値にケースを追加を選択します。