问题标签 [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 投票
1 回答
298 浏览

json - 在 Labview 中将 Express 数据展平为 JSON 字符串

我正在研究 Labview。我想将来自我的 DAQ-Assistent 的 Express 数据类型展平为 JSON 字符串。我正在使用 JKI JSON,但它显示数据类型不受支持的错误:Expressdata。有什么建议吗?在此处输入图像描述

0 投票
4 回答
470 浏览

python - 在 python 和 tkinter 中使用 while 循环持续更新传感器数据

我正在使用 NI 仪器读取数据并将其显示在 GUI 上。用过tkinter。但是找不到使用 while 循环更新数据的方法。

0 投票
0 回答
43 浏览

python - nidaqmx Python包的停止方法中的分段错误

在尝试使用 Python nidaqmx 包 0.5.7 版停止(和/或关闭)nidaqmx 任务时,我经常遇到分段错误。有一次我收到“非法指令”错误。

任何人都可以看到代码有问题吗?有人遇到过这个问题吗?是否有解决方案,或者您是否需要使用 NI 产品以外的其他产品?

代码片段位于子例程中,并以指示的时钟频率触发脉冲激光,同时相机抓取帧并且电机移动样本。

调用函数让上述任务在从相机抓取帧的同时运行,平均每帧中有数百个激光脉冲。经过指定量的电机运动后,相机停止并调用下面的 stop_scan_pattern 子例程来停止任务并(希望)释放内存(del 调用似乎也没有帮助,所以它被注释掉了) :

间歇性地,但过于频繁地,我遇到了分段错误。我正在使用故障处理程序,它将问题归咎于 NI 包中 task.py 中的 stop() 方法。有时它归咎于 close(),所以我们添加了 wait_until_done() 方法来解决这个问题,现在它似乎发生在第一个 close() 中,甚至没有进入 wait_until_done()。

大约 100 个周期后会发生故障,对于基本上相同类型的操作,似乎有些日子显然很糟糕,而有些日子则没有问题。

我正在使用 USB-6343 DAQ 在 Windows 10 上运行 Python 3.6.8,nidaqmx 模块 0.5.7,VS Code 1.46.1。

任何帮助将不胜感激!

0 投票
2 回答
76 浏览

labview - 在停止程序之前程序不会启动?

我是一个在我的项目中使用 LabView 的新手。因此,我正在开发一个程序,该程序从连接在 DAQmx 板上的传感器以及 STS-VIS 海洋光学的光谱仪收集数据。在第一次开发时,我将两个设备组合在同一个平面结构中的一个循环中,但我收到错误消息:“应用程序无法跟上硬件获取的速度。” 我无法获得两个设备的图表上显示的数据,但如果我单独运行它就好了。我发现解决方案说我需要在不同的while循环过程中分离两个设备,因为它可能有不同的缓冲区大小(?)。我做到了,并且所有传感器都显示在每个图表中。但奇怪的是,我需要在第一次运行时先停止程序,然后再次运行它第二次以获得在应用程序中显示的图形。谁能告诉我我做错了什么并给我解决方案?由于项目规则,我不能在这里公开分享我的 Vi,但如果有人有兴趣提供帮助,我想亲自分享。谢谢你。

0 投票
0 回答
173 浏览

python - 如何用python指定NI USB-6210的终端

我正在使用 NI DAQ USB-6210。我正在尝试制作可以使用python应用计数器输出的程序。

NI DAQ 正在工作,计数器信号来自 PFI4。当我删除 # 时,它必须从 PFI7 应用。但它显示了下面的错误。

“DaqError:在设备上找不到要路由的目标终端。”

我的问题是如何选择我想使用的终端?请告诉我这个问题的解决方案?

0 投票
0 回答
98 浏览

python - NI-USB Daqmx 通过 python 应用具有定义截止频率的低通滤波器

我正在尝试使用 NI-USB 6341 获取电压和温度数据。数据有噪声,需要一个滤波器,在我的情况下分别是低通滤波器和带通滤波器。我更喜欢通过 python 函数来完成它,基于 NI-DAQmx Python 文档,应该导入FilterType的nidaqmx.constants,但是应该在哪里使用FilterType以及如何定义低通和带通滤波器的截止频率?

0 投票
0 回答
105 浏览

c# - NI DAQ MAX 从 Task.CIChannels.CreateAngularEncoderChannel() 接收错误结果

我有一个 NI DAQ:cDAQ9185-1E7661EMod1,我试图从端口 ctr1 读取它的数据作为计数器通道:AngularEncoderChannel。我正在使用 NI 的 C# api。

我收到的只是大量 0、0.36、0.72 的流(几千乘以 0,然后再增加几千次 0.36,依此类推),而我期望的值约为 2000,并且不断变化。

物理接线没问题。我运行了角度编码器示例中的代码,效果很好。我将所有任务配置更改为与示例尽可能相似,但它仍然不起作用。

我的代码:

Sample 对象和 _exporterQueue 对于该程序的实际功能并不重要。我把它们留在这里,以防万一它们出人意料地相关。Sample 是一个具有 {double Data, and int SampleCounter} 的对象,_exportingQueue 是一个队列,用于存储样本并通过另一个线程将它们出列。此外,我还有一个 NI 的 Task 对象的别名为 NITask,只是因为我正在使用线程,这样两个 Task 对象就不会发生冲突。

我希望这个问题足够清楚。非常感谢!

0 投票
1 回答
66 浏览

c - 多线程使用p线程Linux问题

我有两个函数,由两个 p 线程调用的生产者和消费者,但是函数中的 while 循环没有运行。它是一个linux RT系统。这是我的代码。我在eclipse中编码。

我应该使用 pthread_exit 还是 pthread-join?当while循环退出时如何使用pthead_exit退出第一个线程?

现在我的控制台打印了这个

但实际上 i 和 k 的值应该达到 1000,当达到 1000 时,while 循环将停止并退出

有时我也会收到此错误

0 投票
1 回答
180 浏览

python - nidaqmx.Task: (OSError: [WinError 126] The specified module could not be found)

以下用于数据采集的代码给出了以下错误

OSError: [WinError 126] 找不到指定的模块。

你知道是什么原因以及如何解决吗?谢谢,干杯!

0 投票
1 回答
263 浏览

python - 使用 python 和 nidaqmx 进行延迟或溢出的数据采集

我无法让我的代码按照我想要的方式运行。该代码应该从传感器获取数据并将其存储在带有时间戳的文件中。使用其中一个传感器值控制直线电机。我使用带有 nidaqmx 包的 NI cDAQ 9184 和 Python。出现的第一个问题是数据传输延迟。结果,发动机的控制过程非常缓慢。我创建了一个 nidaqmx.task 并在循环中通过 task.read() 请求当前传感器值。此方法有几秒钟的延迟。在我看来,cDAQ 和 task.read() 方法不断地记录数据,缓存它并根据请求弹出缓存的数据(如在队列中)。但是,我希望仅在请求时查看值,并且没有要存储的数据,因为它将保存到 csv 文件中。如果我每次调用任务方法时都重新创建任务,我会得到适当且非延迟的值。但是,创建一个新任务大约需要 20 毫秒,在我看来,这不是我的请求的预期解决方案。当然,这也会减慢数据记录的速度,我想避免这种情况。

请参阅以下两个代码片段,它们描述了我为 DataAcquisition 编写的过程: 

我已经阅读了许多论坛帖子并试图挖掘 nidaqmx 的文档。我遇到了 Stream 方法。我对此发现很少,但我也尝试实现此方法。传感器值可以正确无延迟地传输。但是这里缓冲区溢出,根据采样率,迟早会弹出以下错误:

(基础)PS C:\Users\Jetting\Desktop\Robert\SCT_TryOut_DifferentAcqTypes> python SCT_18.02.2021_v1.0_stream.py SCT_18.02.2021_v1.0_stream.py:290:用户警告:尝试设置相同的底部 == 顶部 == 0.0导致奇异的变换;自动展开。ax.set_ylim(np.amin(dataPlot),np.amax(dataPlot)) SCT_18.02.2021_v1.0_stream.py:291:用户警告:尝试设置相同的左 == 右 == 0.0 会导致奇异变换;自动展开。ax.set_xlim(np.amin(timePlot),np.amax(timePlot)) SCT_18.02.2021_v1.0_stream.py:290:用户警告:尝试设置相同的底部 == 顶部 == 0.16962570625000006 导致奇异变换;自动展开。ax.set_ylim(np.amin(dataPlot),np.amax(dataPlot)) SCT_18.02.2021_v1.0_stream.py:291:用户警告:尝试设置相同的左侧 == 右侧 == 1。4031758308410645 导致奇异变换;自动展开。ax.set_xlim(np.amin(timePlot),np.amax(timePlot)) 进程 Process-1:回溯(最近一次调用最后一次):文件“C:\Users\Jetting\anaconda3\lib\multiprocessing\process.py” ,第 315 行,在 _bootstrap self.run() 文件“C:\Users\Jetting\anaconda3\lib\multiprocessing\process.py”中,第 108 行,在运行 self._target(*self._args, **self._kwargs ) 文件“C:\Users\Jetting\Desktop\Robert\SCT_TryOut_DifferentAcqTypes\SCT_18.02.2021_v1.0_stream.py”,第 105 行,在 DAQ_Monitoring reader.read_one_sample(values_read) 文件“C:\Users\Jetting\anaconda3\lib\站点包\nidaqmx\stream_readers.py”,第 370 行,在 read_one_sample _read_analog_f_64(self._handle,数据,1,超时)文件“C:或指定要读取的固定数量的样本而不是读取所有可用样本可能会解决问题。属性:DAQmx_Read_RelativeTo 对应值:DAQmx_Val_CurrReadPos 属性:DAQmx_Read_Offset 对应值:0 或指定要读取的固定数量的样本而不是读取所有可用样本可能会解决问题。属性:DAQmx_Read_RelativeTo 对应值:DAQmx_Val_CurrReadPos 属性:DAQmx_Read_Offset 对应值:0

任务名称:_unnamedTask<0>

状态码:-200279

在我看来,流不断地将数据存储到内存中,这导致了溢出(错误 -200279:无法跟上 DAQmx 中的采集 - National Instruments)。但我不知道如何覆盖数据而不是将其附加到内存中。老实说,我不得不承认,我并没有完全理解 task.read() 和流方法是如何完成它们的工作的。

以下是带有流媒体的代码:

感谢您对我的代码的任何建议或帮助和改进。如果缺少任何信息,我很抱歉(这是我的第一篇文章),以防万一。

谢谢!