NI製品ディスカッション

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

実行終了後のフリーズ時間について

解決済み
解決策を見る

以前も同じような内容の質問をさせていただいたのですが、観点が少し変わったため再質問させていただきました。また、最近勉強を始めた学生ですので、コードが読みづらいかもしれませんが、ご容赦ください。

 

実行終了後にlabviewが一定時間フリーズのような状態になる件について質問させていただきます。

添付したスクリーンショットのような、電圧を読み取ってcsv形式にして保存するというコードを書きました。これを数分間実行したのち停止させると、コードがすべて終了してから、labviewがしばらくフリーズしてしまいます。

なお、現状確認した点は以下の2つになります。

・csvへの保存は1ループごとに行っている。(実行を一時停止して確認しました)

・コード末尾の「ファイルを閉じる」点もスムーズに終了している。(ファイルを閉じた後エラーを出力するコードを付け足し、ハイライトの状態で停止を行ったところ、エラー出力へとスムーズに流れていました)

 

つまり、添付画像にあるコードが完全に終了し、作成したcsvファイルは開ける状態なのですが、labviewだけフリーズしているといった状況です。

コードに問題があるのか、pcのスペックに問題があるのかわかりませんが、何かご意見がございましたら、ぜひ返信のほどよろしくお願いします。

0 件の賞賛
メッセージ1/5
2,517件の閲覧回数
解決策
トピック作成者landmarkが受理

間が空いてしまいましたがこれまで同様VIが開けませんのでUPしていただいているスクリーンショットを見ての推測です。

コールライブラリで何のDLLを呼び出しているかわかりませんが

ほかの方の指摘通りDaqもしくはハードウェアのDLLをコールしている場合、ハードウェアのセッション(またはタスク)のオープンクローズ処理は適切に行われていますか?

1つのハードウェアをループが回るたびにオープンし、結果的に多重でオープンしてしまいVI終了時のクローズに時間がかかっている可能性があります。

もしDaqを使用しているのであればDLLの使用をいったん止めてDaq関数で同じ処理を組んでみてはいかがでしょうか?

その場合の動作と比較すると何かわかるかもしれません。

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

追記:

スクリーンショットを添付します。

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

追記です。

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

ヘルプに開いたタスクを終了する旨の内容が書いてあったのを見落としていました。

無事、フリーズを起こすことなくコードが回るようになりました。

非常につたないコードですが、今後の初学者の役に立てればと思い、最終的なコードのスクリーンショットを添付いたします。

波形をcsvに出力するという非常に単純なものです。

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

こんにちは無事解決したようで何よりです

参考までに

Daqmxの設定はループの前後でも構わないとおもいます。

下記サンプルを参考にしてください、サンプル検索で「Daqmx」で検索できます。

アナログ入力 - 単一タスクでの電圧と熱電対

 

またおそらくこの方がいいだろうな

という処理を作ってみました。こちらも参考になれば幸いです。

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