问题标签 [nidaqmx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
925 浏览

python - 使用 PyQt GUI 进行连续数据采集

我正在构建一个应用程序,在该应用程序中,我不断地从 National Instruments 设备获取数据并对其进行一些实时处理。我正在尝试将采集部分连接到 PyQt GUI,以便用户可以启动、停止和配置数据采集并查看数据。我有一类用于数据采集,一类用于 GUI。我将数据采集过程作为 GUI 中的一个线程启动:

问题是,一旦我开始数据采集,应用程序就会崩溃。如果我在开始采集后添加 raw_input 行,那么它应该可以正常工作。但是,感觉这不是正确的方法。似乎一旦开始采集,线程返回并且采集的回调没有正确处理。知道如何解决这个问题吗?

更新

我已经用raw_input一个无限循环轮询状态属性替换了该行:

当用户按下开始按钮和按下停止按钮时,我设置了isRunningto属性。虽然这可行,但我不喜欢轮询,因为我认为它会对我的应用程序的性能产生负面影响。TrueFalse

0 投票
1 回答
2264 浏览

nidaqmx - libnipalu.so 未能初始化所有 NI 相关命令的错误

我已经在装有 Centos 6.9 32 位操作系统且内核版本为 2.6.32-754.2.1.el6.i686 的计算机的 PCI 插槽上安装了两个 DAQ 卡。第一个是 PCI-6225,第二个是 PCI-6509。我已按照说明的所有步骤更新内核并成功安装DAQmx802f0.iso驱动程序。但是,现在当我尝试执行命令来验证安装时,我只会收到一些错误。更详细地,我将详细说明这个问题,如下所示:

不幸的是,我已经运行了 updateNIDrivers 并且它已经成功执行,但是问题并没有解决。

以下是 NI 例程命令的一些输出:

请帮我解决这个问题。

更新:这是命令的输出dmesg | grep ni

0 投票
1 回答
278 浏览

python - 使用python导出PXI 6251的采样时钟

我想在 PXI 1000 机箱上同步两个 PXI 6251 以同时获取 32 个模拟输入。我正在将 python 与 nidaqmx 库一起使用。为此,我想在数字输出上导出一张卡的采样时钟,将其路由到另一张卡的数字输入并将其用作外部时钟。这是一个好的策略吗?

我已经尝试了以下代码。模拟输入记录有效,但我在终端 2.7 (PFI15) 上看不到时钟

我检查了 MAX 设备路由,任何 PFI 都适合直接路由采样时钟。我可以从 MAX 中的 DO 任务中反转线。

有人知道解决方案吗?

0 投票
0 回答
83 浏览

matlab - 使用 matlab 和 NI 设备生成连续信号

我正在使用 Ni Daq 的发射器,我有一个小问题。我生成了一段时间的信号,然后通过队列输出将其取出,然后我放置了一个侦听器以再次调用队列输出,但是此过程需要 0.1 秒(再次调用队列),因此对于 1KHz 来说这是一个很大的延迟例如信号,那么我怎样才能减少这种延迟。

这是我的代码:

0 投票
0 回答
504 浏览

python - NI DAQ M系列计数器带触发器

我正在使用 M 系列 DAQ 的两个计数器通道产生脉冲串来控制两个步进电机,但这两个通道不是完全独立的,当一个通道产生脉冲时,另一个通道也改变状态。在此链接中,它提到了一种在一个通道产生有限脉冲时使用 paule trigger 暂停另一个通道的方法。链接 我尝试将其转换为 python 代码,如下所示:

一个问题是,即使设置 co_pulse_term = " ",我仍然可以从示波器中获取通道的脉冲输出。这是我得到的一个错误:

nidaqmx.errors.DaqError:在设备上找不到要路由的源终端。

确保终端名称对指定设备有效。有关有效的终端名称,请参阅 Measurement & Automation Explorer。属性:DAQmx_DigLvl_PauseTrig_Src 属性:DAQmx_DigLvl_PauseTrig_When 源设备:Dev1 源终端:Dev1/Ctr1InternalOutput

不知何故,它找不到“内部输出”。

如果有人有经验,请帮助。非常感谢!

0 投票
1 回答
892 浏览

python - 用于python 3的国家仪器pyDAQmx

蟒蛇 3.7

我正在为 National Instruments 硬件编写 Python (3.7) 代码。Python 2.7有一个python 库。有关于如何将库转换为 Python 3 的说明。

  1. 我已经从项目网站下载了 PyDAQmx-1.4.1.tar.gz
  2. 将存档文件的内容提取到目录
  3. 转到终端中的那个目录
  4. 要将 PyDAQmx 库从 2 转换为 3,我按照说明在终端中运行 2to3 转换器。

C:\Downloads\>2to3 --output-dir=PyDAQmx-1.4.1-3 -W -n PyDAQmx-1.4.1 >2to3.log 2>&1

您可以检查日志文件中的错误和警告。

接下来,构建

C:\Downloads\PyDAQmx-1.4.1-3>py setup.py build >build 2>&1 and install

并安装

C:\Downloads\PyDAQmx-1.4.1-3>py setup.py install >install.log 2> &1

这应该在 Python 3 目录中创建一个 egg 文件。是的,确实有一个文件-> PyDAQmx-1.4.1-py3.7.egg

第一次尝试在 Python 3 中导入 PyDAQmx 库时,egg 文件将被解压缩,您将在 site-packages 文件夹中获得 PyDAQmx 子目录。

子目录中有 DAQmxConfig 文件。

为什么它不起作用?是否有比PyDAQmx 网站上提供的更好的协议

0 投票
2 回答
2188 浏览

python - 使用 NIDAQmx 触发输出任务

我无法在 NIDAQ usb6002 上执行我认为应该是一项非常简单的任务:我有一个低频正弦波,我正在模拟输入通道上测量,当它越过零时,我想点亮一个LED 1 秒。我正在尝试使用 nidaqmx Python API,但无法通过文档解决我的一些基本问题。https://nidaqmx-python.readthedocs.io/en/latest/

如果有人可以提供有关代码或我设置的基本逻辑的任何想法,那将非常有帮助。

这是我到目前为止所尝试的。我从一些导入和我的频道的定义开始:

我了解任务和事物的一般工作方式——我可以使用 task.ai_channels 方法读取和绘制给定采样率和样本数量的信号,而不会遇到任何麻烦。但这是我对如何执行“检测零并触发输出”的最佳猜测:

这给了我下面 cfg_anlg_edge 行的错误

我不知道为什么这里不支持模拟输入通道。本文档的第 245 页听起来应该是:https ://media.readthedocs.org/pdf/nidaqmx-python/latest/nidaqmx-python.pdf

我确信代码也存在其他问题。例如,采样时钟的操作似乎比我上面写的要复杂得多,但我找不到任何解释它在这种情况下如何工作的东西。

提前感谢您的帮助!

0 投票
1 回答
122 浏览

python - nidaqmx co_channels 无法写入样本并继续写入样本

正如这篇文章中所建议的那样,nidaqmx co_channels can't write sample

我能够运行我的 python 脚本,但是当我包含这个函数时,cfg_implicit_timing()Python 会抛出错误说

AttributeError:“任务”对象没有属性“cfg_implicit_timing”。

我的要求是连续产生脉冲,当用户要求改变频率时,它应该改变脉冲输出的频率。

而且我不能让while循环连续生成脉冲,因为我也在监控数字和模拟输入。

有没有我会调用一个函数,并且我指定脉冲生成时间,它会在没有一段时间或 for 循环的情况下连续生成?

谢谢!

0 投票
0 回答
288 浏览

python - 如何使用 NIDAQmx API 同步 ctr 和 ai 通道读取?

我有一个机箱 cDAQ-9174 和两个 DAQ(NI 9421 和 NI9208),用于监控一些基于电压的传感器并读取一些基于频率的传感器。

为此,在 MATLAB 中,我创建了一个会话,其中我为基于电压的传感器添加了 ai_channels,为频率传感器添加了 ci_channels。我什至设法进行了缓冲采集,因此我可以获得 1 Hz 频率同步读数:

“Matlab 代码”

由于 Matlab 许可证有点贵,而 python 不是,所以我使用 NIDAQmx 库将此代码转换为 python (v3.7)。

我很失望地发现,显然,您不能将不同的频道类型添加到同一个任务中:

查看此错误的文档,您会发现:

错误 -200559 任务不能包含具有指定通道类型的通道,因为该任务已经包含具有不同通道类型的通道。为每种渠道类型创建一个任务。

所以,现在我很困惑 MATLAB 代码是否有效(并且确实有效),以及如何实现两个已同步获取数据的任务。

0 投票
1 回答
316 浏览

python - 模拟输出的数字触发器

我想从 NI PCI 6713 上的数字触发器触发模拟输出

http://www.ni.com/pdf/manuals/371011c.pdf

根据数据表,我可以使用 PFI <0..9> 并且这些引脚在 NI MAX 中确实显示为绿色,带有 ao/StartTrigger

我的代码如下:

我收到以下错误:

我使用 Python 3.7