2010年8月12日 星期四

建立虛擬波道和讀取器

前一篇提到了CreateVoltageChannel,它是AIChannels集合所提供的一個方法;它是用來建立虛擬波道的,而虛擬波道是程式據以抓取數據的參考,這個方法的參數有幾個:
第一個參數是欲建立的波道,可以使用程式畫面上的某個控制項的內容來作為輸入,例如使用一個名為cmbChannel的ComboBox控制項


第二個參數是虛擬波道的名稱,以字串表示,如果不給的話,系統將自動設定(通常給定空字串即可)
第三個參數指定訊號接線的方式,它支援四種不同的訊號接線方式,以AITerminalConfiguration列舉表示,可使用的列舉內容如下

成員名稱
說明
Differential
差動式輸入.
Nrse
無參考式單接點
Pseudodifferential
擬差動式輸入
Rse
有參考式單接點


第四個和第五個參數是此虛擬波道將量測的數值範圍,可以使用表單上的二個NumericalUpDown元件用來選擇輸入的電壓範圍,即是將選擇後的數值填到這二個參數的位置。當確定所量測的電壓範圍,只需要將數值設定在所需的範圍即可,這樣可以有效地增加系統可量測的最小電壓數值。
第六個參數是量測電壓單位,以AIVoltageUnits列舉表示,此列舉的內容如下


成員名稱
說明
FromCustomScale
使用者指定的刻度
FromTeds
使用TEDS定義的資訊
Volts
使用電壓

將參數給定後,系統就會依參數的內容設備硬體。

接下來,我們介紹讀取器(Reader)的概念:
之前建立Task是一個執行工作的任務物件,而取得的AD資料就放在這個物件的Stream屬性裡面,如果想取得裡面的資料,就得使用讀取器。讀取器類別有二類,依不同的波道,分為AnalogSingleChannelReader和AnalogMultiChannelReader;使用AnalogSingleChannelReader類別可以建立單波道的讀取器物件,而使用AnalogMultiChannelReader則可以建立多波道的讀取器物件。例如讀取單波道的資料,程式的寫法可以如下
   1:  reader = New AnalogSingleChannelReader(ADTask.Stream)
   2:  Dim data As Double = reader.ReadSingleSample()
物件名稱是reader,以New建立後,再使用ReadSingleSample方法取得單一數據。
除了可以如上般地取單一數據外,該類別另外還有其他的方法可用,如下表所列

方法
說明
BeginMemoryOptimizedReadWaveform
開始非同步的方式讀取類比波道的數據波形
BeginReadMultiSample
開始非同步的方式讀取類比波道的多筆數據
BeginReadSingleSample
開始非同步的方式讀取類比波道的單筆數據
BeginReadWaveform
開始非同步的方式讀取類比波道的數據波形
EndReadMultiSample
非同步多筆取樣完成後應執行的函式
EndReadSingleSample
非同步單筆取樣完成後應執行的函式
EndReadWaveform
非同步波形取樣完成後應執行的函式
MemoryOptimizedReadWaveform
讀取波形數據
ReadMultiSample
讀取多筆資料
ReadSingleSample
讀取單筆資料
ReadWaveform
讀取波形資料

善用不同的方法,可以應用到不同的範圍,以得到不同的應用數據結果。

沒有留言:

張貼留言