各位先進您好: 目前小弟是使用VB.net來開發,遇到NationalInstruments.AnalogWaveform(Of Double)這個使用上的疑問,部分程式碼如下,小弟的疑問是: 我們知道當需要由DAQ卡讀取資料近來,Dim acquiredData() As NationalInstruments.AnalogWaveform(Of Double) = e.GetData,假設有八個通道,因此取締一個通道的資料就是宣告一個DOUBLE陣列然後將指定通道資料給入,例如取通道0的資料 Dim Data() as double= acquiredData(0).GetRawData,小弟遇到的問題是 acquiredData() 存放的是八個通道的資料,第一時間由DAQ卡讀入,因此取用通道資料只需要指定通道acquiredData(0).GetRawData或acquiredData(1).GetRawData,但是假設我需要在放入這樣DOUBLE陣列前就將DAQ卡讀入的每一點資料先做資料處理(例如資料放大或縮小),並存回acquiredData(),但是acquiredData()好像只能取出資料卻無法存入,是否有更好的寫法,還請各位前被多多指教,謝謝!
'開始真實由daq卡抓信號,並且放入Mass_acquiredData()多維度陣列內
Private Sub AutoDaqTask_DataReady(ByVal sender As System.Object, ByVal e As DCFanTester.DaqTask1ComponentDataReadyEventArgs) Handles AutoDaqTask.DataReady
Try
Dim Data() as double
Dim i = 0
Data = acquiredData(i).GetRawData
For i = 0 To (Daq_SamplesToRead - 1) '計算個節點的數值做總和
Data(i) = Data(i) *10 '放大資料
next
acquiredData(0)=Data() <===這一行是錯誤寫法,因為acquiredData只能取出通道資料,卻無法存入,亦是小弟的問題所在
Catch ex As NationalInstruments.DAQmx.DaqException
MessageBox.Show(ex.Message, "DAQ Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
DaqTimer.Enabled = False
AutoDaqTask.StopRead()
End Try
End Sub