平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部 木村と申します。
LabVIEWでの割り込み制御に関しての質問に対して以下の通り回答いたします。
LabVIEWのストラクチャはその内のコードを実行するために前もってリソースを
確保するため、割り込んで止めるという作業はできない様に設計されております。
お客様に挙げていただいた例ではシーケンスストラクチャをご利用に
なっていますが、シーケンスストラクチャは性質としてすべてのフレームを
終えてから、個別のフレームからのデータを転送するようになっております。
ですので、シーケンスの途中から指示を出すことはできません。回避策としては
シーケンスストラクチャの中にケースストラクチャをご利用になっていただく
という手がございます。Whileループの制御を行うSTOPボタンからのデータにより、
その後にあるシーケンスフレームを実行するかしないかをケースストラクチャで
制御していただく形でシーケンスの途中からコードを実行しないように制御できる
と思います。
上記の回避策でお客様のご希望の動作が得られると思いますが、こういった
動作を行う時には弊社ではステートマシーン(State Machine)を推奨しています。
ステートマシーンはWhileループの中にケースストラクチャを入れたものですが、
シーケンスストラクチャのようにコードの順序を制御しつつ、次の行動を簡単に
制御できるコード構成となっております。具体的な作成方法は下記のリンクに
ございますのでそちらをご参照していただきたいと思います。
ステートマシーン
http://zone.ni.com/devzone/cda/tut/p/id/2926またシーケンスの途中で割り込む制御を行うような動作ができるステートマシーンの
サンプルが下記のリンクからダウンロードできます。
http://zone.ni.com/devzone/cda/epd/p/id/3063以上の内容でなにかご不明な点がありましたら、ご連絡願います。
今後とも宜しく御願いします。
このメッセージは 02-20-2007 12:47 AMに N.Kimura が編集しています。