在 Windows/C++ 上控制 USB TMC 设备的最简单方法

问题描述 投票:0回答:1

我正在开发 C++/Qt 应用程序,它通过 USB 与泰克 TDS2002 示波器交互。示波器显示为“USB 测试和测量设备 (IVI)”。

目前我使用示波器供应商提供的 TekVISA 库。它可以工作,但它很大、很旧、有很多问题而且维护得很差。因此我想绕过库并直接连接设备。

到目前为止,我已经找到了这个简单的库:https://github.com/xyphro/WinUsbTmc这正是我正在寻找的,但它使用libusb,需要安装一些设备过滤器,此外建议与其说是客户解决方案,不如说是开发工具。你有这方面的经验吗?

在 Windows/C++/Qt 中与 USB 测试和测量设备交互的最简单方法是什么?

谢谢您的建议:)

c++ windows usb
1个回答
6
投票
  1. 您需要一个 USB 驱动程序。我的示波器与此 VISA 软件包中包含的驱动程序配合使用(可以轻松提取该驱动程序): http://www.keysight.com/main/software.jspx?cc=CZ&lc=eng&nid=-11143.0.00&id=2504667&pageMode =CV 我假设所有 USB TMC 设备都可以使用相同的驱动程序,但我无法检查这一点。

  2. USB 驱动程序可以通过标准 Windows 功能访问。这个论坛上的人真的很亲密: 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

  3. 您不能直接向 OSC 写入命令 - 您发送和接收的数据具有特定的标头,该标头必须采用正确的格式,否则示波器将忽略该消息。请参阅这个简单库中的读写实现:https://github.com/xyphro/WinUsbTmc我没有使用这个库,因为它使用 libusb 库,该库使用某种设备过滤器,我个人不喜欢这个概念(此外我还有真正的工作司机)。

  4. 您读取的数据也有一个简单的标题。为了确保标头结构很好地适合输入数据,您应该首先刷新输入缓冲区。然后您发出读取请求(使用写入命令 - 请参阅上面的 WinUsbTmc 库),最后您收到数据并将标头放在其开头。

我希望这对某人有帮助:)

此致

klasyc

编辑:您可以查看我的ScpiNet库,它在 C# 中实现了上述说明。

© www.soinside.com 2019 - 2024. All rights reserved.