04-26-2016 11:51 AM
私も確認できませんでした。
ちなみに、以下のような方法もあります。
制御器リファレンスをより具体的なクラスにキャストする方法です。クラスが一致しない場合はエラーがでますので無視し、次のリファレンスをテストします。M.Shiraishiさまの方法と同様な動作が期待できると考えます。
04-26-2016 05:11 PM
タイブデスクリプタプロパティは無くなっちゃったんですかね・・・
なんせ当方のverは6とか7とかの古いものなので、しかしある程度基本的なプロパティだと思っていたので
まさか無くなったとは。失礼しました。
TailOfGonさんの方法で具体的なクラスにキャストして一致するかしないか選別できるのであれば
それでいけそうですね。
04-26-2016 06:32 PM - 編集済み 04-26-2016 06:32 PM
LabVIEW 2015を見る限り、そのプロパティは無くなったように見受けられます。M.Shiraishi様のVIはLabVIEW 2015で開くことができますので、下位互換を残しつつ、サポートが終了したと思われます。コピーペーストができますので使いまわしはできるようですが。
現在は「より特定のクラスに変換」関数を使用したタイプチェックが推奨されているということなのかもしれないですね。
04-26-2016 08:45 PM
皆様、お邪魔します。
LabVIEW2010SP1を使っているものです。
使えるのに、確かにプロパティの一覧に表示されないですね。
クラス毎に処理を分けた方が良いのかも
M.Shiraishi様のサンプルをいじってみました。
タイプデスクリプタ(LabVIEW 2014ヘルプ)
http://zone.ni.com/reference/ja-XX/help/371361L-0112/lvconcepts/type_descriptors/
クラス IDプロパティ(LabVIEW 2013ヘルプ)
http://zone.ni.com/reference/ja-XX/help/371361K-0112/lvprop/gen_class_id/
04-26-2016 11:42 PM
coco1104様
TypeDescriptorがプロパティノードに現れない件ですが、調べてみましたところ、こちらのプロパティはLabVIEW7.1までしかサポートされていないとのことでした。よってその後のバージョンでは使用はできるものの(サポートはされていません)、プロパティノードで選択することはできません。
以上、よろしくお願いします。
04-27-2016 01:55 AM
04-27-2016 02:36 AM
皆様
いろいろ調べて頂いて、メッセージありがとうございます。
TailOfGon様の具体的なクラスにキャストする方法を参考して、
設計通りの動作がうまくできました。
大変勉強になりました。
ありがとうございました。
05-04-2016 04:32 AM
こういうことですよね?私が気づいていない方法があれば知りたいので教えてもらえると幸いです。
05-10-2016 06:40 PM
TAKASU様 クラス名を取得して条件にするので、エラークラスタをあてにしなくても良いのでダイアグラムがすっきりしていいですね。
「具体的なクラスに変換」を使った場合にもっとダイアグラムをすっきりできないか考えてみました。
上のようにすると、すっきりしてよさそうです。しかし、この方法ではVIを呼び出す毎にチェックをするという無駄ができてしまいます。制御器の識別は一度でよいので、下のようにすることもできそうです。一度識別しクラスタ内に識別済みのリファレンスを保持し、アプリケーションレベルでそのクラスタを(ステートマシンなどに)キャッシュしておけばいつでも使い回しがききます。