问题标签 [daq-mx]
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.
labview - 如何在高速率采集多通道数据时定期更新 Labview 图表
寻求有关 Labview 数据收集程序的帮助。如果我可以在每个通道以 8kHz(提供 16 个数据点)收集 2ms 的数据(我正在使用 National Instruments 数据采集板在 4 个模拟通道上收集数据)。DAQ-MX 采集任务提供 4 个波形的一维数组。
如果我不显示数据,我可以做的所有计算时间大约是 2 毫秒,如果处理循环稍微落后于收集循环,那也没关系。在 Labview 的前面板中更新图表会引入不可接受的延迟。我们不需要非常快速地更新显示,可能 5-10Hz 就足够了。但我不知道如何设置。
我当前的 Labview VI 有三个并行循环
- 用于数据收集的定时循环
- 用于分析和处理的循环
- 用于将数据作为 TDMS 文件缓存到磁盘的低优先级循环
使用队列将数据从收集循环传递到其他循环。Labview 的例子给了我一些想法,但我被卡住了。
任何建议、参考、想法将不胜感激。
谢谢
阿齐姆
跟进问题
eaolson 建议我重新采样数据以进行显示。来自 DAQ-MX 读取的数据是一维波形数组。所以我需要以某种方式构建或连接每个通道的波形数据。然后在更新前面板图表之前重新采样数据。我想最好的方法是对数据进行排队,并在显示循环中将堆栈构建出列并根据屏幕分辨率重新采样数据,然后更新图表。有没有其他办法。我将在(NI Labview 论坛)[ http://forums.ni.com/ni/board?board.id=170]上查看 eaolson 建议的更多信息。
更新
- 将图表的可接受更新率更改为 5-10Hz(感谢 Underflow 和 eaolson)
- 磁盘缓存循环是低优先级的(感谢 eaolson)
- 感谢所有的回复。
c# - Prevent System.IO.FileNotFoundException when loading running code that uses a DLL from GAC
I'm using a third party API to access some data acquisition hardare (National Instruments hardware with DAQmx driver). To do so, I add a reference to its driver dll.
When I run the code on a machine that has the driver installed, no problem. But when I run on a machine without the driver, I get a System.IO.FileNotFoundException
that cannot be caught in a try/catch.
How can I check, before I execute API code, if the dll is available and its types can be used. This is important because not all machines will support this kind of data acquisition hardware (and thus have the driver installed).
I'm not sure, but I think the dll is registered in the GAC on the machines that have the driver installed.
labview - 缺少驱动程序LabVIEW
我正在尝试运行其他人在 LabVIEW 中编写的程序。程序记录电压。但是它不会打开,因为它缺少子 VI。
最初我以为只有一个丢失了,其余的都没有工作,因为它们已附加到它,但是在这个论坛上有人为我找到它之后,其余的 VI 仍然无法工作,所以我想我需要下载它们再次。但是,它们太多了,无法分开,我也尝试用谷歌搜索它们无济于事。
子 VI 是: Magnet Id, Hardware check, Plot Data and Print, Make Plot Lables, Plot it, Relabel It, Write File header, Record Analog Info, Fix Column Heading, Make Igor Label
等等(这不是一个完整的列表)。
我觉得我应该从 The National Instruments 网站下载一个 DAQ,但我不确定是哪一个。我在 Windows 上使用 64 位 LabVIEW 2010。有人可以帮我挑选正确的驱动程序吗?谢谢!
matlab - 从 NI 板进行数据采集时如何避免 matlab 中的数据丢失事件?
在获取波形数据(2 个通道)和模拟输入触发(设置为预触发模式 - 负延迟值)时,我在 matlab 中接收到 DataMissed 事件。
这是代码:
运行此代码时,我在收到触发事件后收到数据丢失事件(使用 showdaqevents(ai))。但是,数据丢失事件的样本数为 NA,所以我不能完全确定它们是在触发之后出现的。
这是 showdaqevents 输出的示例:
查看 matlab文档中的数据丢失事件,给出了两种解释:
- 引擎跟不上采集速度。
- 驱动程序在读取先前获取的数据之前将新数据写入硬件的 FIFO 缓冲区。您通常可以通过使用 BufferingConfig 属性增加内存块的大小来避免此问题。
我尝试使用 daqmem 命令增加可用内存,但我还没有发现它可以工作。500000 个样本/秒,3 个通道每个触发器总共大约 90 MB,daqmem 报告有超过 360MB 的可用空间(尽管缓冲模式设置为自动)。我想知道是否需要在 while 循环中定期调用 getdata(ai) 来清除内存。另一种可能性是我运行的系统采样率太高?
硬件:
- 双核 CPU (Athlon X2 3200)、4GB RAM、500GB SATA 硬盘
- NI PCI-6122
我应该提到,在按下触发器之前让系统获取的时间越长(及时),获得 DataMissed 事件的可能性就会越高。
我的数据采集代码是否有问题(我最不确定在采集过程中是否有暂停)?硬件?有什么不用担心的吗?Visual Studio 是否更适合处理 NI 板?
rhel - 在 RHEL 6.2 64 位上安装 Snort
我在 RHEL 6.2 上安装 snort
我正在尝试安装 DAQ。
我在跑步
进行安装
并得到以下错误:
RCE -module -export-dynamic -avoid-version -shared -L/usr/lib -ldnet -o daq_ipq.la -rpath /usr/local/lib/daq daq_ipq_la-daq_ipq.lo -lipq -L/usr/lib - ldnet ../sfbpf/libsfbpf.la ) libtool: relink: gcc -shared .libs/daq_ipq_la-daq_ipq.o -Wl,-rpath -Wl,/usr/local/lib -L/usr/lib -lipq -ldnet - l/usr/local/lib -lsfbpf -Wl,-soname -Wl,daq_ipq.so -o .libs/daq_ipq.so /usr/bin/ld: /usr/lib/libdnet.a(addr.o): 重定位R_X86_64_32 针对.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib/libdnet.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
libtool: install: error: relink
daq_ipq.la' 在安装之前使用上述命令 make[2]: * [install-pkglibLTLIBRARIES] 错误 1
make[2]: 离开目录`/usr/daq-0.6.2/os-daq-modules'
make[1]: * [install-am] 错误 2
make[1]: 离开目录`/usr/daq-0.6.2/os-daq-modules'
make: * [安装递归] 错误 1
请帮忙
labview - 如何配置 DAQ 助手以生成由波形定义的电压脉冲?
如何将波形脉冲输入DAQ 助手以使DAQ 6259 板产生所需的电压脉冲?
使用Simulate Signal express VI,我创建了一个方脉冲波形。
我的目标是允许 LabView 用户根据需要使用GUI中的旋钮配置频率和脉冲宽度,以生成所需的脉冲序列。该脉冲序列应发送到 DAQ 6259 以生成电压脉冲序列。电压脉冲序列将被示波器捕获以验证其正确性(即捕获的脉冲序列看起来与labview GUI 中显示的波形完全一样)。
实现这一目标的最简单方法是什么?是否有任何教程可以解释如何做到这一点?
c - NI USB 6211 读取模拟电压输入
我正在尝试通过 C 程序将电压输入读取到我的 NI USB-6211 中。为此,我尝试使用安装程序附带的一些示例程序,但无济于事。我查看了文档,但老实说,它根本没有帮助。
这是我改编的代码。(它有一些错误检查并且还要求输入......)
此刻所有代码正在做的就是打印出数字 1000,我也问了多少次。我很确定这来自这段代码:float64 data[1000];
. 有人知道如何读取直流电压吗?即使它只是一长串尚未格式化的数字(我可以弄清楚)。
谢谢
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。
labview - 如何在模拟 DAQ 设备中链接模拟输出和模拟输入?
我在 NI MAX 中模拟 NI PCI-6110 设备。在 LabView 中,我需要在此设备的 AO0 上发送一些信号并从其他范围的设备中读取此信号(从 AO0 或 AI0 读取无关紧要)。如何配置从 AO 到 AI 的重定向?
我可以将 AI 和 AO 与真实/物理设备上的电线连接起来,但我不知道如何在模拟设备上执行此操作。
LabView 2013 x86。