NI製品ディスカッション

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

LabVIEW 2014 XControlのプロパティノード

解決済み
解決策を見る

皆様、こんにちは。

 

XControlで新たな問題が発生しました。

 

以前教えて頂いたやり方で垂直スライダー、水平スライダー、ケージ、タンクの4種類の表示器を組み合わせてXControlを作成し、

表示器の種類を自由に変更できるようになりました。

ここで、XControlを構成する4種類の表示器はいずれもスケールの最大値や最小値、反転などのプロパティを持っていたので、そ

れらから派生した形になるXControlでも元々備えていたプロパティ・ノードが自由に使えるものだと思っていました。

 

ところが、実際にパネルに配置したXControlを右クリックしてコンテキストメニューから作成 → プロパティノード → スケール

→ 範囲 → 最大値でスケール最大値のプロパティノードを作成しようとしたところ、作成 → プロパティノードで表示される候補

にスケールがなく、スケールの最大値を設定することができません。

 

XControlを使用したとき、オリジナルの表示器が備えていたプロパティにアクセスするにはどうすればいいのでしょうか。

 

やりたいことは、表示器の

 ・スケール最大値

 ・スケール最小値

 ・スケール反転

を自由かつ動的に設定したいということです。

 

LabVIEW 2014のXControlのサンプルの温度計の例で結構ですので、上記3点を実現する方法をご教示いただけないでしょうか。

 

以上、よろしくお願い致します。

 

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

プロジェクトツリーから、開発中のXControlを右クリックして、プロパティを選択すると、プロパティノードで実行されるコードを実装できます。

そのときプロパティの名前を決める必要があり、その名前が、右クリック→作成→プロパティのリストから選べるようになります。

 

つまり、XControl用のプロパティノードはご自身で全部実装する必要が出てきます。

自作のプロパティノードの実装では、クラスタに最大値を設定します。その後は、自動的にステートマシンが呼び出されますのでそこでネイティブのプロパティノードを呼び出して最大値を更新すればよいと思います。

 

 

追加:

もうひとつの方法としてXControlで使用されている制御器のリファレンスを自作のプロパティノードで公開することです。これをするには、ステートマシンの初期化時点で、制御器のレファレンスをクラスタに格納します。リファレスンスのプロパティアクセスVIを作成して、その出力としてリファレンスをバンドル解除すればよいです。ただし、これはXControlのユーザに自由度を与えすぎてしまいカプセル化を壊してしまいますのでお勧めできません。

TailOfGon
Certified LabVIEW Architect 2013
0 件の賞賛
メッセージ2/7
4,758件の閲覧回数

サンプルです。

TailOfGon
Certified LabVIEW Architect 2013
0 件の賞賛
メッセージ3/7
4,741件の閲覧回数

TailOfGonさま

 

ご説明およびサンプル、ありがとうございました。

現在、他の作業に忙殺されておりますので、実際の実装は来週以降になるかと思われます。

 

そのときに、お礼なり、あるいは追加の質問を致したいと考えています。

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

TailOfGon様

 

ようやくLabVIEWの作業に戻って来れたので、ご提供下さったサンプルを真似してみました。

元々作成していた垂直スライダー・水平スライダー・ゲージ・タンクから成るアナログ表示器XControlに

 ・スケール最大値 (数値)

 ・スケール最小値 (数値)

 ・スケール反転 (ブール)

のプロパティを追加しようとしました。

 

しかし、数値とブールのタイプ定義をアナログ表示器XControl状態.ctlのタイプ定義クラスタに追加する手順がわからず、困っています。

この手順そのものか、手順を説明してある場所のURLを教えて頂けないでしょうか。

 

以上、ご回答の程よろしくお願い申し上げます。

0 件の賞賛
メッセージ5/7
4,452件の閲覧回数
解決策
トピック作成者が受理

こんにちは、

 

プロジェクトの.xctl内の状態.ctlのタイプ定義をダブルクリックすると状態.ctlを制御する新しいウィンドウが立ち上がります。

そちらにあるクラスタの中に数値やブールを入れると追加できます。

 

xcontrolに関してはこちらのリンク先が役に立つと思います。

http://zone.ni.com/reference/ja-XX/help/371361H-0112/TOC44.htm

0 件の賞賛
メッセージ6/7
4,418件の閲覧回数

dragon1さま

 

ありがとうございました。おかげさまで解決しました。

 

最初にxxxx状態.ctlのデータ定義クラスタに必要な制御器を登録しておき、その後でそれらの制御器を利用するプロパティを追加

するという手順を取ればよかったんですね。

その逆の手順で作ろうとしていたのが失敗の元でした。

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