首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nidaqmx co_channels不能写入示例

nidaqmx co_channels不能写入示例
EN

Stack Overflow用户
提问于 2018-04-21 00:13:54
回答 1查看 983关注 0票数 0

我试着用Ni来产生脉冲.nidaqmx提供的示例如下所示:

代码语言:javascript
复制
    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

是什么导致了这个问题?怎么解决这个问题?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 17:10:05

NI-DAQmx的Python示例针对NI的X系列设备( 63xx模型)进行了调整。62xx型号是M系列设备,它们的计数器对你如何编程比较挑剔。简而言之:必须在创建信道时给出脉冲规格,而不能在以后给出。X系列设备没有此限制。

配置脉冲的形状

而不是

代码语言:javascript
复制
task.co_channels.add_co_pulse_chan_time("Dev1/ctr0")

试一试

代码语言:javascript
复制
# 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()到通道。当你想启动脉冲序列时,只需使用

代码语言:javascript
复制
task.start()

配置脉冲序列的长度

当你产生一个脉冲序列,你可以告诉司机发出有限的脉冲或一个连续的方波。

start()任务之前,请使用cfg_implicit_timing()。这个片段产生1200个脉冲:

代码语言:javascript
复制
# 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49951166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档