データを読み出したい
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値)と電圧値で読み出すことができます。
が、正直、どういうオブジェクトで読み出されているのかよく分かりません。
ibuff
、fbuff
はそのままではどうにもできないので、
for
ループを使ってバッファーサイズの大きさのnumpy
配列に移し替えています。
numpy
配列にしておけば、dict
やpd.DataFrame
にも簡単に変換できます。