问题标签 [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.
c++ - 使 CVICALLBACK 成为 QT 创建者中的成员函数
我找到了一个关于如何使用一些 DAQmx 功能的 NI 示例。这是一个简单的 C 文件,包含以下一些内容:
当我倾向于使用 .h 文件中定义的某些变量或函数时,ChangeDetectionCallback 函数无法识别它们。我试图将此回调函数定义为 .h 文件中的成员函数,希望现在所有函数都可以访问。这是我的 .h 内容:
这是我的 .c 内容:
因此,我再次尝试了许多错误的方法来在头文件中定义我的回调函数,但均未成功。请帮我弄清楚这一点。这是我不清楚的错误消息:
这是原始代码。它触发回调函数以获取测量样本并将数据输出到控制台。我希望将采样数据写入我的成员变量并发出在对象的 .h 文件中定义的信号。
我找到了解决问题的方法。我在文件顶部声明了一个数组变量。这样我的回调函数就可以识别它。然后,我将此数组中的数据复制到我的成员数组中。同样,我创建了一个计数器变量,并在每次回调运行时递增它。同时我在我的成员函数中循环检查这个变量,直到它达到所需的值,然后发出一个信号。这种方法真的很糟糕,我希望找到一种更智能的方式来编写它。
qt - 在 Qt Creator 中具有不同回调的 DAQmxRegisterSignalEvent
大家好,新年快乐!我正在将 PCI 6259 + BNC2110 与 Qt Creator IDE(基于 C++)连接。我正在尝试使用外部触发对信号进行采样。我有一个正在运行的微处理器,可以产生触发信号。
DAQmxCfgChangeDetectionTiming似乎是一个不错的方法。我将其配置为在连接到port0/line0的信号的下降沿采样。因此,DAQmxRegisterSignalEvent启动回调,我在其中执行采样。
问题是我希望有两个或多个回调对 DAQmxRegisterSignalEvent 做出反应。目前,我需要有两个 virt。频道 - port0/line0和port0/line1。其中之一的更改应该称为它自己的回调。理论方法如下:
但是,此架构不起作用。似乎当line0或line1发生更改时,DAQmxRegisterSignalEvent并不关心更改发生在哪一行,因此会尝试调用其中一个回调。有没有办法使这种方法起作用?如何找出变化发生在哪一行?我需要更改 line0 或 line1 以触发不同的回调函数。非常感谢您提前。
python-2.7 - 使用基于 Mac OSX 的 python 和 NIDAQmx 从 USB6009 进行模拟输出
总之,我正在尝试使用 Python 和 DAQmx Base 来记录模拟输入并从我的 USB 6009 设备生成模拟输出。我一直在使用我找到的包装器,并且能够获得 AI,但我在 AO 上苦苦挣扎。有一个基类 NITask 处理任务生成等。我正在调用的类如下。当我尝试配置时钟时,该函数会引发错误。当我不这样做时,没有错误,但输出上也没有产生电压。任何帮助,将不胜感激。
谢谢!
c++ - 无法为 i386 构建 PortAudio 以使其与 NI 的 DAQmxBase 配合使用
我正在尝试编写一个小的 C/C++ 程序,它既可以从 NI USB DAQ 获取数据,又可以使用 PortAudio 播放音频。问题是,用于 Mac/Linux 的 NI DAQ 库 DAQmxBase 似乎必须在 i386 下构建,而我无法让 PortAudio 为 i386 构建。
我尝试-arch=i386
在运行之前将 CFLAGS 和 LDFLAGS 设置为./configure --disable-mac-universal && make && make install
,但是当我向其添加对 PortAudio 的调用时,NI DAQmxBase 示例代码仍然无法构建:
NI DAQmxBase Makefile 如下所示:
更改 DAQmxBase Makefile 中的 -arch 标志不起作用:
我认为这是因为 DAQmxBase 在编写时考虑了 i386 数据类型。来自 NIDAQmxBase.h 的上述错误引用的行是:
我可以自己构建一些普通的 PortAudio 示例,但我想将 PortAudio 和 DAQmxBase 放在同一个程序中并让它们相处。必须有一种方法来构建 PortAudio 以便它与 DAQmxBase 一起使用,不是吗?
谢谢!
c++ - 使用 NI DAQMX c/c++ 生成数字/模拟输出
我正在努力寻找一种使用 C/C++ 从我的 NI DAQMX 生成电压输出的方法。
我不知道如何使用 NI 设备库,也找不到任何有用的在线示例。
有没有人可以分享任何示例或见解来解决这个问题?
nidaqmx - 使用 DAQmxCfgDigEdgeStartTrig 时出错
我正在尝试使用采样时钟和“开始采样”触发器对 8 位输入进行采样。这是我配置任务的方式:
当我在 QT Creator 中运行它时,它给了我这个错误:
DAQmx 错误:指定的属性不受设备支持或不适用于任务。属性:DAQmx_StartTrig_Type
任务名称:_unnamedTask<0>
状态码:-200452 DAQmx 错误:指定的任务无效或不存在。状态码:-200088
以前,当我使用模拟输入而不是数字输入时,我没有任何问题。有人知道我的频道配置有什么问题吗?我正在使用 PCI6259 和 BNC2110。
node.js - nodejs 上的 NI-DAQmx C 库
我正在制作一个 nodejs 应用程序,它必须从 NI USB 6210 中提取数据。 National Instruments 提供了一堆使用他们(纯)C 库的示例,因为我在 nodejs 上,我想我可以“轻松" 使用 node-gyp 将它们回收到节点模块中,但我发现节点模块更有可能用 C++ 编写,而不是纯 C(如参考中所述),所以我想知道其他可能的解决方案。除此之外,整个库的东西也基于一堆框架(在 OSX 上)
所以我的第二个问题是框架如何与 nodejs 交互?我对此有点困惑。
更新
感谢@mscdex,我构建了我的第一个节点模块,它应该只包装框架并使它们在节点端可用。这是我到目前为止所做的:
绑定.gyp
有了这个我已经运行了配置和构建命令
需要注意的是,我使用的是nw-gyp,它是 node-gyp 的 hack,因为我需要为 node-webkit 构建一个模块,但它就像 node-gyp 一样,有一些改进。
该操作生成了一个名为 addon.node 的文件(加权 8kb)
之后我尝试运行一个简单的 js 测试文件
当我运行它时,它产生了
这就是我卡住的地方。
c++ - 将值从浮点数组传递到双精度数组时的奇怪行为(C、C++)
我正在开发一个使用 NI-DAQ 的应用程序,以下是提供商提供的一些方法。
我基本上调用 someMethod(),为 myArray[] 和 result[] 提供一个包含六个元素 ([6]) 的数组。正如你在代码中看到的,之后调用了 newMethod(),并将 float myArray[6] 传递给了 double myArray[] 参数(我真的不明白为什么这段代码的开发人员选择使用双精度数组,因为在 newMethod() 中声明的唯一数组是浮点类型)。
现在我的问题来了:在 for 循环中,一些值传递没有任何问题,但是当第四个和第五个值传递给 newMyArray[] 时,它接收到两个值的“-1.#INF0000”。乍一看,我认为这将是一些垃圾值,但每次执行时都会出现“-1.#INF0000”。
我知道 C 语言有时会很棘手,但我真的不知道为什么会这样……
c# - C#铸造或转换
我正在使用 NI ADC 做一些工作。我目前正在读取来自 AO 和 AI 的电压,List<dynamic>
并且我在使用 console.writeLine 时遇到了一些问题。
我使用动态类型是因为程序需要在运行时而不是编译时决定数据应该存储在什么位置。
因此,因此,每当我想打印列表的内容时,它都不知道我在问什么,所以它返回正在存储的类型,而不是选定的元素数据。
依次打印出来System.Double[]
。我将如何打印出元素实际存储的内容而不是其类型?我尝试了很多不同的方法来尝试获得我所追求的东西,但我在 C# 语法(我使用 C++)上苦苦挣扎——只使用了三周。
我试过了;
- 铸件
- ToString() 转换
<double>
使用 CopyTo将整个列表的内容复制到列表中。
我在这里有点茫然。
matlab - Matlab:在图像采集期间通过 NI DAQ 生成模拟输出信号(电压)
在 Matlab 中,我试图通过 National Instruments DAQ 在某个时间点(或帧号)提供模拟输出信号(电压),同时使用 USB3 相机获取图像。
如果图像采集从 t=0(第 0 帧)开始,则应在 t=40s(如果我们假设 10 fps,则在第 400 帧)提供模拟输出信号,直到 t=42s(两秒长)。图像采集应在输出电压生成期间继续(图像采集应仅在 t=90s(或帧 900,如果我们以帧计算)停止)。
如何将下面显示的用于生成模拟输出信号(电压)的代码合并到我的 Matlab 脚本中以进行图像采集?很感谢任何形式的帮助!