解決方案
DAQmx不直接提供生成停止觸發器(stop trigger) 的方法;但是,透過使用參考觸發器(reference trigger)並修改讀取位置,您一樣可以在LabVIEW中創建等效的stop trigger。
要實現此目的,您必須在reference trigger之前設置一個有限擷取(finite acquisition),目的是在reference trigger觸發之前與之後各採集幾個samples。這是個很有用的方法,因為為了提供觸發前(pre-trigger)的samples給reference trigger,DAQmx將在等待reference trigger時不斷擷取資料。同時間,DAQmx Read仍然可以讀這些沒有明確定義在擷取設定裡的連續資料。
請參閱下面的程式碼,如何實現將reference trigger設置為等效stop triggger:

圖1:LabVIEW範例程式使用了DAQmx的Start與Stop Trigger功能
在上圖的範例中,使用DAQmx創建類比輸入任務,並為其配置為了兩個Trigger:一個Start Digital Edge Trigger,以及一個Reference Digital Edge Trigger。
Start Trigger決定何時擷取樣本(samples)並為之後的reference trigger做好準備,而reference trigger則是決定何時發送有限的pre-trigger和post-trigger的樣本(samples)來停止資料擷取任務。
注意:您可以將start和reference trigger設置在相同的PFI line,因為DAQmx驅動程式在start trigger觸發之前是不會等待reference trigger的。
。
設置Reference TriggerReference trigger需要一個名為
pretrigger samples per channel的額外輸入參數:
圖2:DAQmx Reference Triiger中的Pretrigger Samples Parameter
pretrigger sample的數量定義了在 finite acquisition期間採集的總樣本中有多少是在reference trigger發生之前。之後其餘的樣本被認為是
post-trigger samples.。
所以說,post-trigger的樣本數量可以透過下方等式表達:
Post-Trigger Samples =
samples per channel (DAQmx Timing input) -
pretrigger samples per channel (DAQmx Trigger input)
舉例來說,要設定獲得最少數量的pretrigger samples(2),並且40個post-trigger樣本的任務。您將DAQmx Timing上的samples per channel數值設定為42,並將DAQmx Reference Trigger上的pretrigger samples per channe設置為2。Finite acquisition的最終輸出看起來如下:
圖3:使用Reference Trigger後DAQmx Read輸出的最終概念圖
注意:設置任務的Timing時,Reference Trigger必須至少有2個pre-trigger和2個post-trigger樣本。因此,即使使用reference trigger作為stop trigger,在reference trigger發生後仍然會收到至少兩個樣本。但是,如果不需要,這些樣本可以在後續的資料處理中丟棄。