NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

NationalInstruments.AnalogWaveform(Of Double)使用上的疑問

各位先進您好:  目前小弟是使用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
0 積分
1 條訊息(共 4 條)
4,821 檢視

acquiredData(0)=Data()               <===這一行是錯誤寫法,因為acquiredData只能取出通道資料,卻無法存入,亦是小弟的問題所在
請再建立一個array存入。Dim xx as double.

acquiredData 是NI DAQ卡的資料輸出,無法再被寫入。

由 Fatty 在 03-19-2009 12:16 AM
上編輯的訊息
0 積分
2 條訊息(共 4 條)
4,815 檢視
謝謝Fatty大大的回答,但是NI內部有提供什麼樣的陣列型態是像 Dim acquiredData() As NationalInstruments.AnalogWaveform(Of Double)中的acquiredData()嗎?因為我有八個通道的話就必須定義八個ARRARY出來,像dim DATA(),DATA1()...as double,且假設我用必須運算每一個通道的資料每衣的SAMPLE資料,我就必須宣告出來二維的列 像是 dim data(8,3000), 8表示通道數目,3000為DAQ的取樣數目,也就是每次由DAQ的每個通道抓3000筆資料,因此在後續上的程式碼撰寫與使用上變的很繁瑣,因為我必須去判斷是哪一個通道與那一個通道的哪幾筆資料,原來的NationalInstruments.AnalogWaveform(Of Double)只需要這樣寫 dim data() as double=acquiredData(0).getrawdata,不知道NI是否有提供可以存入多為資料的陣列型態像 NationalInstruments.AnalogWaveform(Of Double),但是必許是可寫入與可讀取,謝謝各位前輩指教!
0 積分
3 條訊息(共 4 條)
4,810 檢視

您的問題需要研究一下。

 

但是我提供另一種方法自動產生程式碼,雖然不是VB,但是很像,請參考。可以透過自動產生程式碼觀看資料型態。

 

http://zone.ni.com/devzone/cda/tut/p/id/4652

http://digital.ni.com/public.nsf/allkb/F6BC86D70307654D8625733F006CB357

 

由 Fatty 在 03-19-2009 02:42 AM
上編輯的訊息
4 條訊息(共 4 條)
4,803 檢視