NI製品ディスカッション

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

プログラムの停止時間について

プログラムの停止時間について質問させていただきます。

添付ファイルのような、電圧を読み取ってグラフに描画しつつcsvに保存する、というコードを書きました。

ここで、処理を開始し、【stopボタンを押してから処理が完全に止まるまでにかかる時間が長い】ので、これを短くしたいと考えています。

処理が数十秒程度であれば停止にも数秒程度しかかからないのですが、処理が数分単位になってくるとどうしても停止の時間も長くなってしまいます。

取得したデータを保持したまま処理を行っているのが原因なのか、と考えているところなのですが、どうも解決策がわかりません。

現状の問題点と改善のアドバイスを頂けないでしょうか。

 

 

初学者のため、読みづらいコードになっておりましたら、申し訳ありません。

0 件の賞賛
メッセージ1/5
2,193件の閲覧回数

こんにちは

添付されていたVIのバージョンが新しく開くことができませんでしたので推測でお返事します

計測時間が長くなるほど停止時間が長くなるとありましたが停止処理でデータ保存も行っていますか?

だとするとデータ量が多い場合停止時にHDDへアクセスするため停止処理時間が長くなります。

この場合であれば定期的にデータ保存すれば解決されると思います。

よろしければVIとあわせてブロックダイアグラムのスクリーンショットを添付していただければ

もっとはっきり回答できると思います。

0 件の賞賛
メッセージ2/5
2,170件の閲覧回数

アドバイスありがとうございます。

返事が遅くなってしまい申し訳ありません。

 

確かに、保存するデータサイズの問題なのかもしれません。

定期的に保存するアルゴリズムのアドバイスをいただければ幸いです。

ブロックダイアグラムのスクリーンショットを添付いたしました。

 

見ずらい箇所もあるかと存じますが、どうかよろしくお願いいたします。

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

推測なのですが、DAQmxのコードをDLL化して呼び出しているのでしょうか。

Whileループは内部で行われているすべての処理が停止しないと止まりませんので

DLL内の処理がプログラム停止までの遅延を起こしている可能性があると思います。

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

返信ありがとうございます。

アドバイス頂いたように、DLL呼び出しの点について検討したのですが、whileループ自体はきちんと終了しているようです。ハイライトの状態で停止させて確認しました。

ループは抜けて、コードが終了してからlabviewが停止するといった状況になります。

少し質問の観点が変わってしまったため、ただいま改めてトピックを立てて質問させていただきました。

もしよろしければ、そちらも見て頂ければ幸いです。

アドバイスありがとうございました。

 

 

0 件の賞賛
メッセージ5/5
2,096件の閲覧回数