07-25-2018 11:13 PM
プログラムの停止時間について質問させていただきます。
添付ファイルのような、電圧を読み取ってグラフに描画しつつcsvに保存する、というコードを書きました。
ここで、処理を開始し、【stopボタンを押してから処理が完全に止まるまでにかかる時間が長い】ので、これを短くしたいと考えています。
処理が数十秒程度であれば停止にも数秒程度しかかからないのですが、処理が数分単位になってくるとどうしても停止の時間も長くなってしまいます。
取得したデータを保持したまま処理を行っているのが原因なのか、と考えているところなのですが、どうも解決策がわかりません。
現状の問題点と改善のアドバイスを頂けないでしょうか。
初学者のため、読みづらいコードになっておりましたら、申し訳ありません。
07-26-2018 04:17 AM
こんにちは
添付されていたVIのバージョンが新しく開くことができませんでしたので推測でお返事します
計測時間が長くなるほど停止時間が長くなるとありましたが停止処理でデータ保存も行っていますか?
だとするとデータ量が多い場合停止時にHDDへアクセスするため停止処理時間が長くなります。
この場合であれば定期的にデータ保存すれば解決されると思います。
よろしければVIとあわせてブロックダイアグラムのスクリーンショットを添付していただければ
もっとはっきり回答できると思います。
08-05-2018 10:44 PM
アドバイスありがとうございます。
返事が遅くなってしまい申し訳ありません。
確かに、保存するデータサイズの問題なのかもしれません。
定期的に保存するアルゴリズムのアドバイスをいただければ幸いです。
ブロックダイアグラムのスクリーンショットを添付いたしました。
見ずらい箇所もあるかと存じますが、どうかよろしくお願いいたします。
08-05-2018 11:24 PM
推測なのですが、DAQmxのコードをDLL化して呼び出しているのでしょうか。
Whileループは内部で行われているすべての処理が停止しないと止まりませんので
DLL内の処理がプログラム停止までの遅延を起こしている可能性があると思います。
08-09-2018 03:02 AM
返信ありがとうございます。
アドバイス頂いたように、DLL呼び出しの点について検討したのですが、whileループ自体はきちんと終了しているようです。ハイライトの状態で停止させて確認しました。
ループは抜けて、コードが終了してからlabviewが停止するといった状況になります。
少し質問の観点が変わってしまったため、ただいま改めてトピックを立てて質問させていただきました。
もしよろしければ、そちらも見て頂ければ幸いです。
アドバイスありがとうございました。