问题标签 [data-acquisition]

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 回答
104 浏览

python - 在 Python 文件中写入这么多值的更好方法(设备内存不足)

我对 Python 中的文件输出有疑问。我正在设计一个从 3 个传感器读取值的软件。每个传感器在 1 秒内读取 100 个值,在每个进程之间,我必须将它们打印到文件中。

下面是写入文件的代码。

所以文件中的结果看起来像

但是,当测量时间超过 8000 秒时,软件停止。我认为这是由于设备必须处理的数据太多,因为我使用的设备有点旧。(我无法更改设备,因为计算机已连接到 NI DAQ 设备。)

我试图找到许多替代方法来更改上面的代码,但我找不到。有没有人可以帮我解决这个问题??

0 投票
1 回答
988 浏览

c# - 使用 NI USB-6363 在 C# 中读取 CI 频率

工作LabVIEW代码

上面附上的是我过去成功用于从设备读取频率数据的 LabVIEW 代码。我也经常在我的属性节点和 while 循环之间使用 Start Task VI。

我正在尝试用 C# 编写代码。到目前为止,我已经成功地在我的设备 USB-6363 上对模拟输出和模拟输入进行了编码(所以我知道我能够使用 C# 成功地从设备写入和读取数据)。

我还使用万用表(帖子底部的 Grainger 链接)读取频率数据(设备在图片中设置为橙色 Hz 模式)。

但是,我的 C# 代码似乎在读取频率数据时出现问题。附上我的 C# 代码。当我尝试运行此程序时,出现以下错误。这与我在使用名为“MeasDigFreqBuffCont_ExtClk_ArmStart.2013”​​的示例程序时遇到的错误相同。我展示的代码只是创建任务,稍后我会在程序的不同部分调用代码,这就是我得到错误的方式。

- - - - - - - - - - - - - - - - - - - - - - - - - 开始错误代码 - - - - - - - - - - - - - - - - - - - - - - - - -

{Error=-200077 Message="请求的值不是此属性支持的值。属性值可能无效,因为它与另一个属性冲突。\n\n属性:NationalInstruments.DAQmx.CIChannel.FrequencyDivisor\n请求的值:1\ n可能的值:4 到 4294967295\n通道名称:数字频率\n\n任务名称:_unnamedTask<0>\n\n状态代码:-200077"}

- - - - - - - - - - - - - - - - - - - - - - - - - 结尾错误代码 - - - - - - - - - - - - - - - - - - - - - - - - --

在示例程序中,它要求提供采样时钟源(来自设备的 PFI 通道)。然而,在 LabVIEW 代码中,它并没有要求这样做。这个例子可能比我想要做的更详细吗?

FLUKE (R) Fluke-115 Compact - 基本功能 数字万用表,14° 至 122°F 温度。范围

0 投票
1 回答
1181 浏览

c++ - 时序问题:QT 写入串行端口,然后读取

我正在为我的实验室中的一个应用程序制作一个 Qt 数据采集 GUI 来替换 LabVIEW。

我想要我的 GUI 上的一个按钮将一些数据写入串行端口(到微控制器),然后等待数据采集完成(微控制器会这样做),然后通过串行端口获取数据以进行保存、绘图等.

以下 void 检查传入的串行数据。它打印串行缓冲区中的字节数。

现在,当我运行程序时,我单击按钮并在第一次单击时获得“0”。第二次单击为我提供了正确的可用字节数。

看来直到下次单击按钮时,我才能获得可用的传入串行数据。为什么是这样?

仅供参考,如果它很重要,以下是串行端口的属性:

2016 年 11 月 14 日更新

按照其他人的建议,以下代码可以正常工作,一旦我按下按钮,就会立即读取数据。我将 readyRead 信号连接到 readData:

注意 blockSignals 的使用,因此 DAQ 在运行时无法启动。

0 投票
0 回答
168 浏览

python - 数据采集​​连接最佳实践

配置 DAQ 并与之通信的最佳实践是什么?是配置一次数据采集器然后保持线路打开并在需要时进行通信,还是每次需要通信时打开、配置和关闭连接更好?我更关心稳定性而不是速度。使用一种或另一种方式工作有什么好处(如果有的话)?

系统规格:NI USB-6000 DAQ、Python 3 和 PyDaqMx 读取三个模拟通道。

0 投票
1 回答
176 浏览

spring-mvc - spring mvc中的数据采集层和结构是什么

我有一个 webapp 来接收来自设备的数据,并且我的客户有以下规格的要求——数据采集层应该在基于开源 MQ 的交付机制上工作。a) 数据采集层必须是平台无关的,可以在Linux或windows等操作系统上运行,并应使用java Gdk6)开发。

不知道什么是数据采集层

我需要在另一个单独的项目中实现它吗我的应用程序是在 Spring MVC 中开发的

请帮助我理解结构我应该如何实现它

0 投票
0 回答
213 浏览

c++11 - c++11以后版本的fetch_XXX函数中正确使用memory_order_acquire/release

我在下面找到了某个类中的代码。

我认为“memory_order_acquire”与读取操作一起使用。所以我理解了加载(memory_order_acquire)的功能。

但是, fetch_add 实际上由两个函数组成:

1) 读取当前值

2)写入新的附加值

在此类中还存在一个函数,该函数将 fetch_sub 函数包含到带有 memory_order_release 的“计数器”中。

fetch_add 中的 memory_order_acquire 和 fetch_sub 中的 memory_order_release 的意图是什么?难道不能在 fetch_add 中使用 memory_order_release 吗?

0 投票
1 回答
1068 浏览

c++ - 从工作线程更新 QtCharts 的正确方法?

因为这是我的第一个问题,所以我想说 StackOverflow 帮助了我无数次。谢谢你。

现在到我的问题。我目前正在尝试在 Qt 5.8 中实现一个简单的数据采集应用程序。应用程序必须与 DSP 通信并以 100Hz 至 10kHz 的速率获取一些电压。由于我需要对采集的电压进行一些额外的计算,我认为在与 GUI 线程不同的线程中进行数据采集和操作是个好主意。

数据采集​​和附加计算在单独的线程中工作得很好。我的问题是,使用 QtCharts 异步显示工作线程结果的正确方法是什么?

任何建议将不胜感激。

此致,

克拉斯特夫

0 投票
2 回答
2066 浏览

python - Keithley 2410 和 PyVISA - VI_ERROR_TMO:在操作完成前超时

我正在尝试在 x86_64 linux 机器(CentOS 7)上通过 python 控制 Keithley 2410。我正在使用 python 2.7.5、NI-VISA 16 和 PyVISA 1.8。吉时利通过一根 RS232 转 USB 电缆连接到计算机,并配置为 RS232 通信(参数为:波特 57600、位 8、奇偶校验无、终止符、流控制无)。当我尝试查询 Keithley 时,出现超时错误,如下所示:

0 投票
0 回答
375 浏览

matlab - 转子不平衡的 FFT 分析

我正在平衡一个空气主轴。对于不平衡分析,我使用加速度计(NI 设备)。我有来自加速度计的电压信号,对应于主轴在特定频率(rpm)下的振动,保存在 Excel 文件中。为了分析这个振动信号的不平衡,我使用了 Matlab 中的“fft”函数。我的数据以 100,000 Hz 的采样频率进行采样。我正在使用 fft 文档中给出的相同示例代码。在文档中,fft 在对应于正弦波信号频率(50Hz 和 120Hz)的频率处具有峰值。当我使用相同的代码获取旋转频率为 40Hz (2400rpm) 的采样数据的 fft 时,我没有得到 40Hz 的峰值。难道我做错了什么??在 fft 代码中我应该在哪里提到我的主轴的旋转频率。我想知道我的旋转频率(40Hz)的振动信号的相位和幅度。fft 图看起来像这个。我的代码如下。任何帮助深表感谢。

0 投票
3 回答
3872 浏览

python - 将行附加到 Pandas DataFrame

我正在尝试从测量计算个人测量设备 (PMD-1208FS) 中读取模拟信号,然后将其写入具有每个观察对应时间戳的文件。我想每秒一次附加到这个文件中,并进行新的观察。

PyUniversalLibrary允许我从设备中读取,但我一直试图弄清楚如何将信息保存到数据框中。此示例有助于从 PMD 读取数据,但它不提供任何数据记录示例。

下面的示例接近解决此问题,但该df.append(pd.DataFrame()功能没有为我提供所需的结果。此函数最终将最新的数据帧附加到先前保存的数据帧的底部,而不仅仅是附加新数据。结果是一个数据帧,其中包含许多按顺序重复的数据帧。

这是我的代码:

电流输出:

期望的输出: