我正在寻找一种通过 USB 接口读取接线电压并返回数据的设备。我将如何编写一些东西来解释这些数据以及我将使用什么语言?
编辑:如果有帮助,这个项目是为不支持综合 ODB2 数据端口的旧引擎开发一个数字转速表。因此,它将读取直流电路上的电压并具有准确的图形界面。我完全不知道从哪里开始,但我决心让它发挥作用!它适用于窗户。
12 回答
作弊并使用libusb。我为一个我已经工作了一段时间的项目做了这个,并编写了一个C++/ wxWidgets应用程序来处理数据。
我最近一直在考虑用wxPython在 PC 上重新编写应用程序,因为它对于 GUI 开发来说要快得多。
你想如何显示/记录数据?有很多可用的选项。您可以使用wxWidgets 的 OpenGL 功能(轻松地)做一些非常酷的事情,无论是 2D 还是 3D 数据表示。
如果可以的话,我会建议使用像 kris 和 Jon Cage 所建议的 libusb 这样的库。
如果 libusb 不能满足您的需求并且您正在为 Windows 开发,您应该看看Jungo提供的软件。同样,这将 USB 软件移动到用户空间,而不需要 Windows 内核开发。(编辑 3:Ilya 在评论中指出 Jungo 也可用于 Linux)
如果您必须进行一些内核开发(Windows 或 Linux),那么 C 是您唯一的选择。研究Rubini 为 linux 开发编写的这本书。对于 Windows 驱动程序开发,我可以推荐Oney 的这本书。但是在这两种情况下,我都会优先研究 libusb 选项而不是驱动程序开发。
顺便提一句。如果您感兴趣的只是能够测量 USB 设备上的电压(并且编写代码并不重要),那么有很多产品可以为您做到这一点。看看National Instruments提供的一些产品。这些将处理 USB 的艰苦工作和数据采集,并为您提供一个很好的编程接口以在您的应用程序中使用。
(编辑 2)还有一些 USB 串行芯片(例如这些)可以直接连接到仅使用 uart 的嵌入式处理器。通常这些都带有驱动程序。
看看libusb。它适用于 Linux 和 Windows。
Unless you're bit-banging your own USB driver on the firmware side, your chip will probably come with a driver for the PC. For example, PIC microcontrollers from Microchip come not only with firmware for the PIC, but with a Windows driver. I expect that other USB-enabled chips would also come with their own drivers.
Remember that while you interact with the USB port directly on the firmware side, on the PC side all you actually interact with is the driver for the host controller.
我个人使用的是 Microchip PIC——它们有 AD/DA 转换器、USB 端口、免费驱动程序和引导加载程序——所有这些都低于 4 美元。插入这样的设备后,您将获得一个额外的 COM 端口 - 其余的都是微不足道的。
你没有说你在看什么平台。如果您的目标是 Windows,USB Revealed是一个很棒的参考。
在我看来,如果你想读取接线电压,那么你需要一个 A/D 转换器。您是否正在制作自己的 A/D 转换器?如果是这样,您需要在设备端进行一些不错的固件编程,而不是您在此处询问的主机端驱动程序。否则你要买一个 A/D 转换器,你应该只使用供应商提供的驱动程序。
除了 WinUSB、libusb 和 Jungo,还有另一个从用户模式编程 USB 设备的选项 -用户模式驱动程序框架 (UMDF)。
编写 UMDF 驱动程序基本上是使用您喜欢的工具创建一个进程内 COM 组件。