複数レコード集録をフェッチする
- 更新日2025-12-09
- 3分で読める
複数レコード集録を取得するには、「集録関数: 読み取りとフェッチ」に記載されるフェッチ関数と同じものを使用してください。ただし、取得するレコードを指定するための2つの追加属性があります。「レコード番号をフェッチ」属性は最初のレコードをフェッチするためのゼロ基準となる指標で、「レコード数をフェッチ」属性はフェッチするレコード数を指定します。デフォルトでは、「レコード数をフェッチ」は–1で、「レコード番号をフェッチ」の値からすべてのレコードがフェッチされます。
フェッチ関数は、「タイムアウト」パラメータが正の場合、指定されたサンプル数が集録されるまで待機します。複数レコード集録の場合は、各レコードにおいて指定されたサンプル数を待機します。レコード数属性はデフォルトで–1 (またはすべてのレコード) に設定されているため、フェッチ関数は指定されたすべてのレコードのサンプル数が集録されるまで待機します。
単一のフェッチ関数で複数レコードをフェッチするには、返される波形の順序を理解する必要があります。すべてのレコード0の波形は、レコード1の波形の前にきます。たとえば、3つのレコードを「0,1」のチャンネルリストでデータをフェッチすると、以下の順序になります。
- チャンネル0レコード0
- チャンネル1レコード0
- チャンネル0レコード1
- チャンネル1レコード1
- チャンネル0レコード2
- チャンネル1レコード2
CおよびVisual Basicでは、以下のようなコードを用いて宣言された1次元配列にすべての波形が含まれます。
// numWfmsを6に設定します (2つの集録チャンネル、3つのレコード) niScope_ActualNumWfms (vi, "0,1", &numWfms); // 強制レコード長をフェッチします niScope_ActualRecordLength (vi, &actualRecordLength); // 波形および波形情報の構造体を宣言します wfm = malloc (sizeof (ViReal64) * actualRecordLength * numWfms); wfmInfo = malloc (sizeof (struct niScope_wfmInfo) * numWfms);
最初の波形はwfm[0]から、2番目の波形はwfm[actualRecordLength]からというように開始されます。
LabVIEWでは、波形は2次元配列またはタイミング情報が含まれるクラスタの配列として返されます。どちらの場合も、指標配列関数を使用して必要な波形を取り出すことができます。
また、レコード数をフェッチパラメータを1に設定して、各レコードを個別にフェッチすることもできます。そして、ループ内で「レコード番号をフェッチ」属性に、フェッチするレコードのゼロ基準の指標を指定して、いずれかのフェッチ関数を呼び出します。