我使用VirtualBox运行带有Ubuntu 14主机的Windows 7客户系统,并且使用NI-DAQmx的ANSI C API运行甚至运行NI提供的最简单示例的问题。
首次启动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。
FIXED:
VirtualBox似乎与NI USB设备存在兼容性问题。它似乎工作,但它是不可预测的。 VMWare工作得更好。切换到VMWare播放器,现在可以完美无缺。