08-09-2018 02:55 AM
以前も同じような内容の質問をさせていただいたのですが、観点が少し変わったため再質問させていただきました。また、最近勉強を始めた学生ですので、コードが読みづらいかもしれませんが、ご容赦ください。
実行終了後にlabviewが一定時間フリーズのような状態になる件について質問させていただきます。
添付したスクリーンショットのような、電圧を読み取ってcsv形式にして保存するというコードを書きました。これを数分間実行したのち停止させると、コードがすべて終了してから、labviewがしばらくフリーズしてしまいます。
なお、現状確認した点は以下の2つになります。
・csvへの保存は1ループごとに行っている。(実行を一時停止して確認しました)
・コード末尾の「ファイルを閉じる」点もスムーズに終了している。(ファイルを閉じた後エラーを出力するコードを付け足し、ハイライトの状態で停止を行ったところ、エラー出力へとスムーズに流れていました)
つまり、添付画像にあるコードが完全に終了し、作成したcsvファイルは開ける状態なのですが、labviewだけフリーズしているといった状況です。
コードに問題があるのか、pcのスペックに問題があるのかわかりませんが、何かご意見がございましたら、ぜひ返信のほどよろしくお願いします。
解決済! 解決策の投稿を見る。
08-09-2018 03:39 AM
間が空いてしまいましたがこれまで同様VIが開けませんのでUPしていただいているスクリーンショットを見ての推測です。
コールライブラリで何のDLLを呼び出しているかわかりませんが
ほかの方の指摘通りDaqもしくはハードウェアのDLLをコールしている場合、ハードウェアのセッション(またはタスク)のオープンクローズ処理は適切に行われていますか?
1つのハードウェアをループが回るたびにオープンし、結果的に多重でオープンしてしまいVI終了時のクローズに時間がかかっている可能性があります。
もしDaqを使用しているのであればDLLの使用をいったん止めてDaq関数で同じ処理を組んでみてはいかがでしょうか?
その場合の動作と比較すると何かわかるかもしれません。
08-09-2018 03:55 AM
追記:
スクリーンショットを添付します。
08-09-2018 04:14 AM
追記です。
アドバイスありがとうございました。
ヘルプに開いたタスクを終了する旨の内容が書いてあったのを見落としていました。
無事、フリーズを起こすことなくコードが回るようになりました。
非常につたないコードですが、今後の初学者の役に立てればと思い、最終的なコードのスクリーンショットを添付いたします。
波形をcsvに出力するという非常に単純なものです。
08-09-2018 07:03 PM
こんにちは無事解決したようで何よりです
参考までに
Daqmxの設定はループの前後でも構わないとおもいます。
下記サンプルを参考にしてください、サンプル検索で「Daqmx」で検索できます。
アナログ入力 - 単一タスクでの電圧と熱電対
またおそらくこの方がいいだろうな
という処理を作ってみました。こちらも参考になれば幸いです。