解決方案
您可以設定nidaqmx.task類的 timing 屬性,如
參考文件中所示。方式是使用 cfg_samp_clk_timing 方法: 請在編寫 Python 腳本時執行以下步驟:
from nidaqmx.constants import Edge
from nidaqmx.constants import AcquisitionType
- 建立您的 nidaqmx 任務並為其增加頻道。 (此範例將使用 Digital Input 任務)
with nidaqmx.Task() as digitalInputTask:
digitalInputTask.di_channels.add_di_chan("cDAQ1Mod3/port0/line0", line_grouping=LineGrouping.CHAN_PER_LINE)
- 使用cfg_samp_clk_timing設定 timing 選項
digitalInputTask.timing.cfg_samp_clk_timing(1000,source =“”,active_edge = Edge.RISING,sample_mode = AcquisitionType.FINITE,samps_per_chan = 5)
此方法的參數如下:
- rate ( float )– 指定每秒每通道樣本中的取樣率。
- source (optional[ str ] )– 指定取樣時鐘的 source terminal。不指定的話會使用裝置的預設 onboard clock。
- active_edge – 指定在取樣時鐘脈衝的哪些 edge 上擷取或產生取樣。
- sample_mode – 指定任務是否連續擷取或產生樣本,或者它是否擷取或產生有限數量的樣本。
- samps_per_chan (optional[ long ] )– 指定使用FINITE_SAMPLES時每個通道要擷取取或產生的取樣數。
最終您的程式碼應會類似於下方程式碼片段:
import nidaqmx
from nidaqmx.constants import LineGrouping
from nidaqmx.constants import Edge
from nidaqmx.constants import AcquisitionType
with nidaqmx.Task() as digitalInputTask:
digitalInputTask.di_channels.add_di_chan("cDAQ1Mod3/port0/line0", line_grouping=LineGrouping.CHAN_PER_LINE)
digitalInputTask.timing.cfg_samp_clk_timing(100, source="", active_edge=Edge.RISING, sample_mode=AcquisitionType.FINITE, samps_per_chan=50)
data = digitalInputTask.read(50);
print(data)