我正在使用 VirtualBox 运行带有 Ubuntu 14 主机的 Windows 7 来宾系统,并且在使用 NI-DAQmx 的 ANSI C API 运行 National Instruments 提供的最简单示例时遇到了问题。
第一次打开 DAQ 设备电源时,我可以运行一次测量,之后,任何其他测量都会显示以下错误消息:
Attempted to read samples that are no longer available.
The requested sample was previously available, but has since been overwritten.
Increasing the buffer size, reading the data more frequently, or specifying
a fixed number of samples to read instead of reading all available samples
might correct the problem.
Property: DAQmx_Read_RelativeTo
Corresponding Value: DAQmx_Val_CurrReadPos
Property: DAQmx_Read_Offset
Corresponding Value: 0
Task Name: _unamedTask(0)
Status Code: -200279
为了能够开始新的测量,我必须重新启动 DAQ 设备,可能是为了清除任何被覆盖的内部缓冲区。
我有兴趣使用回调函数运行基本的连续电压测量。(NI提供的ContAcq_IntClk示例)
完全相同的配置,相同版本的 NI-DAQmx(9.7.5),在 Visual Studio 2012 上运行,在直接运行 Windows 7 的机器上运行流畅。
我怀疑问题在于内部缓冲区由于与虚拟机的连接而被搞砸了,但无法找到一个优雅的解决方案来修复它。
我使用的设备是 NI USB-6289。
固定的:
VirtualBox 似乎与 NI USB 设备存在兼容性问题。它似乎有效,但它是不可预测的。VMWare 工作得更好。切换到 VMWare Player,现在可以完美运行。