我正在开发通过 USB 与泰克 TDS2002 示波器交互的 C++/Qt 应用程序。示波器显示为“USB 测试和测量设备 (IVI)”。
目前我使用示波器供应商提供的 TekVISA 库。它可以工作,但它很大、很旧、有故障并且维护不善。因此,我想绕过库并直接连接设备。
到目前为止,我已经找到了这个简单的库:https://github.com/xyphro/WinUsbTmc这正是我正在寻找的,但它使用需要安装一些设备过滤器的 libusb,此外,建议将其作为开发工具而不是客户解决方案。你有这方面的经验吗?
在 Windows/C++/Qt 中与 USB 测试和测量设备交互的最简单方法是什么?
感谢您的建议:)
最佳答案
您需要一个 USB 驱动程序。我的示波器使用此 VISA 包中包含的驱动程序(可以很容易地提取驱动程序):http://www.keysight.com/main/software.jspx?cc=CZ&lc=eng&nid=-11143.0.00&id=2504667&pageMode=CV我假设所有 USB TMC 设备都可以使用相同的驱动程序,但我无法检查这一点。
可以通过标准 Windows 功能访问 USB 驱动程序。这个论坛上的人真的很亲密: https://forum.tek.com/viewtopic.php?f=568&t=137573而且这份文件也非常有用:http://www.ivifoundation.org/downloads/Class%20Specifications/Ivi-6%202_USBTMC_2010-03-23.doc
您不能直接向 OSC 写入命令 - 您发送和接收的数据具有特定的 header ,必须采用正确的格式,否则示波器会忽略该消息。查看这个简单库中的读写实现:https://github.com/xyphro/WinUsbTmc我没有使用这个库,因为它使用了使用某种设备过滤器的 libusb 库,我个人不喜欢这个概念(此外我有真正的工作驱动程序)。
您阅读的数据也有一个简单的标题。为确保您能很好地适应输入数据的 header 结构,您应该首先刷新输入缓冲区。然后您发出读取请求(使用写入命令 - 请参阅上面的 WinUsbTmc 库),最后您收到数据并将 header 放在其开头。
我希望这会对某些人有所帮助:)
问候
快乐
关于c++ - 在 Windows/C++ 上控制 USB TMC 设备的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893856/