【问题标题】:Python nidaqmx stream read does not change on every readPython nidaqmx 流读取不会在每次读取时更改
【发布时间】:2023-01-27 10:52:48
【问题描述】:

我想要做的是设置 16 个模拟输入通道,以给定的速率不断对其进行采样,并在调用读取函数时从每个通道读取 1 个样本。理想情况下,我想阅读最新的示例,这样我就可以在阅读时为其添加时间戳。

问题是读数不会在读取之间发生变化,只是在几秒钟之后。如果我调整采样速度,我可能会遇到错误,提示软件跟不上硬件采样率。

我的代码的哪一部分是错误的?

import numpy
import nidaqmx
from nidaqmx.stream_readers import AnalogSingleChannelReader, AnalogMultiChannelReader
from nidaqmx.constants import Edge, AcquisitionType

# Create a task and a reader
task = nidaqmx.Task()

values_read = numpy.zeros(16, dtype = numpy.float64)

task.ai_channels.add_ai_current_chan('cDAQ1Mod2/ai0:15')
task.timing.cfg_samp_clk_timing(rate = 1000, active_edge = Edge.RISING, sample_mode = AcquisitionType.CONTINUOUS, samps_per_chan = 1)
reader = AnalogMultiChannelReader(task.in_stream)

task.start()
while 1:
    reader.read_one_sample(values_read)
    print(values_read)

【问题讨论】:

    标签: python nidaqmx


    【解决方案1】:

    采样率为 1000,但您每次只读取一个样本。通常,每个 Read 调用需要几毫秒。您的阅读速度不够快,因此出现缓冲区溢出错误。 建议:

    1. 降低采样率。
    2. 每次读取调用读取更多样本。
    3. 由于只想自己读取最新的数据和时间戳,可以使用On Demand软件定时采集。参见示例ai_voltage_sw_timed.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2020-08-22
      • 2014-11-25
      • 2015-02-22
      • 2016-05-02
      相关资源
      最近更新 更多