データを読み出したい

 1def single_daq_readout():
 2
 3    channels = [rp.RP_CH_1, rp.RP_CH_2]
 4    N = 16384
 5
 6    # データを保存するための辞書型オブジェクト
 7    wv = {}
 8    for ich in channels:
 9
10        # RAW
11        ibuff = rp.i16Buffer(N)
12        res = rp.rp_AcqGetOldestDataRaw(ich, N, ibuff.cast())
13
14        # Volts
15        fbuff = rp.fBuffer(N)
16        res = rp.rp_AcqGetDataV(ich, N, fbuff)
17
18        # Get data
19        data_raw = np.zeros(N, dtype=int)
20        data_volts = np.zeros(N, dtype=float)
21
22        for i in range(0, N):
23            data_raw[i] = ibuff[i]
24            data_volts[i] = fbuff[i]
25
26        wv[f"raw{ich+1}"] = data_raw
27        wv[f"v{ich+1}"] = data_volts
28
29    # wvの内容
30    # wv = {
31    #    "raw1": [...],
32    #    "v1": [...],
33    #    "raw2": [...],
34    #    "v2": [...],
35    #    }
36
37    # pd.DataFrameに変換する
38    waves = pd.DataFrame.from_dict(wv, orient="index")
39    # or
40    # waves = pd.DataFrame(data=wv.values(), index=wv.keys()).T
41
42    return waves

トリガーにかかった波形データを読み出すために必要な要素をサンプルコードから抜粋してみました。 波形データはRAW形式(=ADC値)と電圧値で読み出すことができます。 が、正直、どういうオブジェクトで読み出されているのかよく分かりません。

ibufffbuffはそのままではどうにもできないので、 forループを使ってバッファーサイズの大きさのnumpy配列に移し替えています。 numpy配列にしておけば、dictpd.DataFrameにも簡単に変換できます。

リファレンス