09-29-2011 02:53 AM
お世話になります。
LabVIEWを使い始めて2ヶ月程度の初心者です。
現在、LabVIEW9.0を使用しています。
停電時、UPS監視ソフトなどが行うPCシャットダウンの直前にLabVIEWをあらかじめ終了するような機能はないでしょうか。
動作の流れとしては、停電→実行中VI終了→PCのシャットダウンのイメージです。
早急にご教授頂ければ幸いです。
よろしくお願いします。
09-29-2011 08:16 PM - 編集済み 09-29-2011 08:18 PM
haljion 様
日本ナショナルインスツルメンツの原と申します。
平素より NI 製品をご利用頂きまして誠にありがとうございます。
UPS 使用とのことなので、こちらの動作は「イベントストラクチャ」そ使用することにより可能です。
1)まずは、ブロックダイアグラム上に「イベントストラクチャ」を配置します。(プログラミング » ストラクチャ » イベントストラクチャ)
2)タイムアウトと表記されている箇所を右クリック >> イベントケースを追加
3)LabVIEW のバージョンが 7.2 や 8.0 の場合は、新たに現れるダイアログ上で、「イベント内のアプリケーションの終了?」を選択します。バージョンが 8.2.1 や 8.5、2009、2010、2011 等では「アプリケーションインスタンスを閉じる?」を選択し、イベントを作成。
4)この作成したケースに「LabVIEW終了」関数を配置。(プログラミング » アプリケーション制御 » LabVIEW終了)
上記の動作により可能かと思われます。
こちらのケースにはシャットダウン前に必ず実行させたいコードを入れることにより、PC が落ちる前に実行させることが可能です。
下記ウェブサイトもご参照ください。
ウインドウズがシャット・ダウンする前に、LabVIEWプログラムを終了する方法。
http://digital.ni.com/public.nsf/allkb/B57DC6E186525EE786256F4F00039198
お試し頂き結果をご連絡いただけますでしょうか。
宜しくお願い致します。
+---+---+---+---+---+---+---+---+---+---+---+---+
日本ナショナルインスツルメンツ株式会社
技術部 原 智 (Satoshi Hara)
弊社のサポートに関する情報は以下のサイトをご覧ください。
技術データベース: http://www.ni.com/kb
お問い合わせフリーダイヤル 0120-527196
+---+---+---+---+---+---+---+---+---+---+---+---+
09-29-2011 11:34 PM
日本ナショナルインスツルメンツ 原様
迅速かつ丁寧な回答ありがとうございます。
回答にありました手順で動作させたところ、Windowsの終了前にLabVIEWを終了させることができました。
誠にありがとうございました。
09-30-2011 04:45 AM
たびたび失礼致します。
今回使用するイベントストラクチャはイベントの監視をどのように行なっているのでしょうか。
抽象的な質問で申し訳ありませんが、なるべくわかりやすいご回答をお願いいたします。
10-02-2011 09:08 PM - 編集済み 10-02-2011 09:08 PM
haljion 様
日本ナショナルインスツルメンツの原でございます。
いつもお世話になっております。
「どのように」とは、具体的にどういった事でしょうか。
イベントストラクチャでは、PC に起きる様々な状態を常に監視しております。
例えば、「イベントストラクチャ」にてマウスでクリックされた時にイベントを発生させたい場合、イベントストラクチャは、マウスがクリックされたっというデータをが出力されているかどうかを常に監視しております。
つまり、PC がシャットダウンする際に、PC 上で「PC がシャットダウンします」といった情報が流れます。それを認識した場合にのみ、このイベントが発生するようになっております。
技術部 原 智
10-03-2011 03:20 AM
日本ナショナルインスツルメンツ 原様
分かり易い解説ありがとうございます。
具体性が欠けた文章で申し訳ありませんでした。
例で示して頂いたもので理解できました。
また、イベントストラクチャは「PC に起きる様々な状態を常に監視する」とのことですが、
これはWhileループと同様に、ある条件が来るまで延々とループ(監視)し続ける、と解釈してもよろしいのでしょうか。
もしそうでしたら、イベントストラクチャによるPC終了前のLabVIEW終了の操作を、Whileループで代用することは可能でしょうか。
10-03-2011 09:08 PM
haljion 様
日本ナショナルインスツルメンツの原でございます。
いつもお世話になっております。
While ループで代用するとは、具体的にどういったコードで代用するということでしょうか。
参考までにお聞かせいただけますでしょうか。
宜しくお願い致します。
技術部 原 智
10-04-2011 12:37 AM
日本ナショナルインスツルメンツ 原様
ご返答ありがとうございます。
初心者のため、「どういったコード」かというのは具体的に説明できませんが、
Windows終了の信号を拾った時のみ、Windows終了の前にLabVIEWを終了するという動作を、イベントストラクチャではなく、
Whileループ(もしくは他の関数)を使用して実現できないか、ということです。
10-04-2011 07:18 PM
haljion 様
イベントストラクチャは While ループとは異なり、常に LabVIEW のプログラム的に監視しているわけではないようです。
監視していると言うよりも、イベントが起こった際だけに発動するような物です。
例えば、PC がクリック等を認識する動作と同じと考えられます。
プロパティーノード等を使用して同じ動作が行われるかどうかをこちらでも試して見ましたが、VI が閉じる前にある動作を行なうといったようなことは出来かねました。
よって、お客様のご希望する動作は、イベントストラクチャを使用していただく形になりますので、ご了承ください。
宜しくお願い致します。
技術部 原 智
10-04-2011 07:39 PM
日本ナショナルインスツルメンツ 原様
大変丁寧なご返答ありがとうございました。
他で代用できないならば、イベントストラクチャを使用したいと思います。