08-07-2014 11:41 PM
初めて投稿させていただきます
現在、USB-6009の同期パルス'図中トリガ入力'を受けてから(同中左上(掲載しているプログラムでは'計測開始'というボタン押すことで計測を開始するようにしています))データ入力を開始するようなプログラムを組んでいます。このプログラムではループの処理効率が悪く、プログラムの機能を追加していくとオーバーフローもしくは処理落ちを起こしてしまいます。最初はフラットシーケンスストラクチャもしくはスタックシーケンスストラクチャを用いて行おうと考えたのですが、それでは処理が重くなると思い、あえて使いませんでした。より効率の良いループの処理方法がありましたら、教えていただけないでしょうか。
初心者なもので、お見苦しいプログラムとなっていますが、よろしくお願いします。
08-15-2014 07:17 AM
まずDAQアシスタントを使わず、DAQmx関数を使うようになさってください。
DAQアシスタントがループの中にあると、デバイスへのアクセスを何回も行う可能性があるので、
処理の遅れが懸念されます。
次に配列の作成方法を再検討してください。
シフトレジスタに配列定数を渡して初期化していますが、
下記資料のように、置換関数等を使ってみてください。
http://digital.ni.com/public.nsf/allkb/6A14229B130B405686257845001D9B6A
08-18-2014 07:02 PM
Tepigさん
ご回答の方ありがとうございます
DAQmx関数を使う方法はあまり理解していなかったので,良い勉強になりました.
その関数を使用して,1ループあたりで安定したデータ取得を行うことができました.
また,配列の作成方法についてもご指摘いただいた方法を用いることで,なんとかオーバーフローを押さえることができました.
本当にありがとうございました.