我试着用Ni来产生脉冲.nidaqmx提供的示例如下所示:
import nidaqmx
from nidaqmx.types import CtrTime
with nidaqmx.Task() as task:
task.co_channels.add_co_pulse_chan_time("Dev1/ctr0")
sample = CtrTime(high_time=0.001, low_time=0.002)
print('1 Channel 1 Sample Write: ')
print(task.write(sample))但是,在运行这个脚本之后,它会生成一些错误,如下所示:
引发DaqError(error_buffer.value.decode("utf-8"),error_code) DaqError:任务没有缓冲或没有通道。如果任务没有缓冲,请使用此函数的标量版本。如果任务没有通道,则向任务中添加一个。任务名称:_unnamedTask<0> 现状代码:-201395
是什么导致了这个问题?怎么解决这个问题?
非常感谢!
发布于 2018-04-23 17:10:05
NI-DAQmx的Python示例针对NI的X系列设备( 63xx模型)进行了调整。62xx型号是M系列设备,它们的计数器对你如何编程比较挑剔。简而言之:必须在创建信道时给出脉冲规格,而不能在以后给出。X系列设备没有此限制。
配置脉冲的形状
而不是
task.co_channels.add_co_pulse_chan_time("Dev1/ctr0")试一试
# https://github.com/ni/nidaqmx-python/blob/master/nidaqmx/_task_modules/co_channel_collection.py#L160
task.co_channels.add_co_pulse_chan_time(
counter="Dev1/ctr0",
low_time=0.002,
high_time=0.001)而且,因为您以这种方式指定了脉冲,所以不再需要write()到通道。当你想启动脉冲序列时,只需使用
task.start()配置脉冲序列的长度
当你产生一个脉冲序列,你可以告诉司机发出有限的脉冲或一个连续的方波。
在start()任务之前,请使用cfg_implicit_timing()。这个片段产生1200个脉冲:
# https://github.com/ni/nidaqmx-python/blob/master/nidaqmx/_task_modules/timing.py#L2878
pulse_count = 1200;
task.cfg_implicit_timing(
sample_mode=AcquisitionType.FINITE,
samps_per_chan=pulse_count)https://stackoverflow.com/questions/49951166
复制相似问题