NI製品ディスカッション

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

バッファ内のサンプル数確認

VisualBasic2010

USB-6002を使用

連続サンプリング中のサンプルデータ数を確認して

必要数のデータを取得したいと思っています。

必要数のデータが溜まった際にイベントを発生させ

サンプリングする方法はサンプルコードにありましたが

上記の方法でのサンプリング方法がわかりませんでした。

通常、このようなサンプリングは行わないのでしょうか?

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

こんにちは!

問題を把握するにあたり、2点質問してもよろしいでしょうか?

 

1.「連続サンプリング中のサンプルデータ数を確認して必要数のデータを取得したい」とのことですが、もう少し詳細な処理内容を伺ってもよろしいでしょうか。 

例.サンプルレート1000で、電圧を連続測定して5V以上の値を取得したい、など

 

2.参考にされたサンプルコードは、どのようなコードでしょうか。サンプル名がお判りであれば教えて頂けば幸いです。

 

なお補足となりますが、Visual Basic 2010でのDAQプログラミングについて、資料を見つけましたので、よろしければ参照いただければと思います。

Visual C# .NETでのDAQプログラミング - National Instruments

http://digital.ni.com/public.nsf/allkb/A20418336F02A21586256EC1003FCC88#NoMS

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

icchiさん、こんにちは。

メッセージありがとうございます。

 

ご質問いただいている点、回答します。

1msecのサンプルレートで、アナログ入力8チャンネルのサンプリングを行いたいとしています。

バッファからのデータ更新周期は100msecとしており、100msec毎に100サンプルのデータ取得を行っています。(ContAcqVoltageSamples_IntClkを参考)

 

フォームの移動などを行った際、イベントの処理がとまってしまうようで

データ受信が出来ず、しばらくするとメモリーのオーバーフローでエラーが出るような状態になります。

 

これを回避する方法として、デバイスのメモリ内にバッファリングされたデータ数を調べて、必要数に達していたら定量(100サンプル)のデータを取得する方法がとれないかと考えております。

 

このような方法は負荷もかかりそうなので、あまり良い方法とは思っていませんが、試すこともできず困っております。

お力をお貸しいただければ助かります。

 

参考にしたコードは、DAQmxをインストールした際に、同時にインストールされるサンプルプログラム

ContAcqVoltageSamples_IntClk or _SWTimed を参考にしています。

 

 

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

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

返事が遅れてしまいすみません。

 

中々、同じ事象が起こらず困っています…

 

教えて頂いた情報から判断すると、読み取り速度がハードウェアの収録に追いついていないため、イベント発生時に処理が止まると、バッファにデータが溜まっていき、メモリのオーバーフローが起きるのではないでしょうか。

ご提案いただいている回避策を試すよりも、先ずは読み取りの速度を上げてみてはいかがでしょうか。

 

もし上記の方法で問題が解決しない場合は、こちらでも問題の事象を再現してみたいと思いますので、お手数ですがソースコードをご開示いただけないでしょうか。

 

よろしくお願いいたします。

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

お探しのコードは下記のものかと思います。

AvailableSamplesPerChannel Property

 

ですが、icchiさんのおっしゃる通り根本的な原因を調べなくては、

どうしても場当たり的な対応になってしまい、後々問題が再発しかねません。

 

Readのループが長時間、実行されないような状況になっていませんか?

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

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