NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

システム列挙体[項目を編集]

システム列挙体の「項目を編集」についての質問です。

 

①システム列挙体を挿入し、プロパティ→「項目を編集」で項目追加

②作成→リファレンス

③リファレンス上で右クリック→作成→表示器

とした後に、再度「項目を編集」で変更や追加、削除などを行うと、ワイヤに「クラスが競合しています」というエラーが出ます。

 

ヘルプに従い、表示器の「データタイプを含む」のチェックを外すとこのエラーは消えますが、

その後に続くプログラムに別のエラーが発生するのでできれば使いたくありません。

 

「表示器を作成後に項目を編集する」方法はないでしょうか?

 

なにとぞよろしくお願いします。

 

0 件の賞賛
メッセージ1/4
3,835件の閲覧回数

こんにちは。

 

列挙体は既存の状態が一つのデータタイプであるため、項目の追加や削除をするとデータタイプが変わる扱いになります。

(文字列のデータタイプが、ブールのデータタイプになる様なイメージ)

ですので「データタイプを含む」にチェックが入っていると、もとの列挙体のデータタイプがリファレンスに含まれるので、

列挙体を編集するとエラーが出るのはしょうがないかと。

 

リファレンスを作成されているのは、サブVI か別の場所でプロパティノードを呼び出されたいからかと思います。

 

そういうときには、今回の列挙体をタイプ定義にして、そのタイプ定義された列挙体のリファレンス制御器をタイプ定義することをお勧めします。

 

そうすることによって、列挙体はタイプ定義になっているので、編集してもサブVI やほかの場所で呼び出されている部分も同じ編集が加わります。

リファレンスもタイプ定義しているので、タイプ定義された列挙体が変化しても、リファレンス自体も同じタイプ定義された列挙体を参照することになるので、

サブVI で問題なく呼べるはずです

 

ただ、少し面倒なので他にいい方法があればぜひ知りたいところです

0 件の賞賛
メッセージ2/4
3,786件の閲覧回数

doradorachan様

 

早速のご回答ありがとうございます。

 

「列挙体をタイプ定義」までは試していたものの、

「タイプ定義された列挙体のリファレンス制御器をタイプ定義」までは思いもしなかったので大変参考になりました。

 

ただ、この変更したい列挙体は複数あり、その他のデータと共に「名前でバンドル」(入力クラスタはデータの表示器を集めたctlファイル)、

その後に続くケースストラクチャで複数のストラクチャの中でバンドル解除、

という具合で修正箇所が多い状態です。

 

まずは修正を試みます。

ありがとうございます。

0 件の賞賛
メッセージ3/4
3,769件の閲覧回数

タイプ定義のリファレンスを使わないとかはだめでしょうか?

 

0 件の賞賛
メッセージ4/4
3,766件の閲覧回数