USB原始(批量)VISA读/写内部环路太慢?

USB原始(批量)VISA读/写内部环路太慢?,usb,labview,visa,Usb,Labview,Visa,我有一个自定义USB设备,其中包含一个ADC,我希望在LabVIEW中接收其采样数据。数据速率为16.384 MBit/s,块大小为每500 us 1024字节。一个小型的C++应用程序,用于接收数据(基于WiUSB驱动程序),没有任何问题。 为了在LabVIEW中设置USB通信,我遵循了这篇文章: 基本上,通讯正常,我可以接收一些数据。但是,每隔几秒钟,软件包就会丢失,在Windows 10设备管理器中,我可以看到设备已断开连接,并再次直接重新连接。LabVIEW是否可能无法每500 us执行

我有一个自定义USB设备,其中包含一个ADC,我希望在LabVIEW中接收其采样数据。数据速率为16.384 MBit/s,块大小为每500 us 1024字节。一个小型的C++应用程序,用于接收数据(基于WiUSB驱动程序),没有任何问题。 为了在LabVIEW中设置USB通信,我遵循了这篇文章:

基本上,通讯正常,我可以接收一些数据。但是,每隔几秒钟,软件包就会丢失,在Windows 10设备管理器中,我可以看到设备已断开连接,并再次直接重新连接。LabVIEW是否可能无法每500 us执行一次USB读/写过程?我能以某种方式改进我的LabVIEW程序吗(我是LabVIEW新手)

非常感谢你的帮助/想法


谢谢你的帮助!我通过调整USB设备的固件解决了这个问题:现在不是每500个U发送1024个字节,而是每10毫秒传输20480个字节。再次感谢

谢谢你的帮助!我通过调整USB设备的固件解决了这个问题:现在不是每500个U发送1024个字节,而是每10毫秒传输20480个字节。再次感谢

500美-不是对LabVIEW本身来说太多了,而是对Windows来说太多了。为了保持这样的阅读率,你需要考虑使用实时系统;因为在Windows上,您可以达到1毫秒的分辨率。但是总的来说,没有必要读得这么快,b/c我相信你的usb设备支持缓冲-所以你可以读,比方说,每1秒更大的数据块,这是常见的做法。因此,在边读边循环中增加延迟(我建议500-1000毫秒),并尝试这样做。在使用LabVIEW近8年的工作中,我几乎普遍发现USB设备是所有设备中最不可靠的。老实说,我建议你彻底抛弃USB。几乎其他任何东西都比它好。500US——不是对LabVIEW本身来说太多了,而是对Windows来说太多了。为了保持这样的阅读率,你需要考虑使用实时系统;因为在Windows上,您可以达到1毫秒的分辨率。但是总的来说,没有必要读得这么快,b/c我相信你的usb设备支持缓冲-所以你可以读,比方说,每1秒更大的数据块,这是常见的做法。因此,在边读边循环中增加延迟(我建议500-1000毫秒),并尝试这样做。在使用LabVIEW近8年的工作中,我几乎普遍发现USB设备是所有设备中最不可靠的。老实说,我建议你彻底抛弃USB。几乎其他的都更好。这听起来很奇怪。批量端点是具有流控制的流协议。它没有固定的时间和固定的消息大小。主机将确定是否以及何时准备好接收数据。因此,设备应不断地向缓冲区添加样本,并在主机请求且数据可用时传输数据。缓冲区的大小应能吸收最长暂停时间的数据(在您的情况下为LabVIEW)。固定计时不适用于批量终结点。听起来好像你减少了数据丢失的可能性,但没有解决潜在的问题。这听起来很奇怪。批量端点是具有流控制的流协议。它没有固定的时间和固定的消息大小。主机将确定是否以及何时准备好接收数据。因此,设备应不断地向缓冲区添加样本,并在主机请求且数据可用时传输数据。缓冲区的大小应能吸收最长暂停时间的数据(在您的情况下为LabVIEW)。固定计时不适用于批量终结点。听起来好像您已经降低了数据丢失的可能性,但没有解决潜在的问题。