12

我正在寻找一种通过 USB 接口读取接线电压并返回数据的设备。我将如何编写一些东西来解释这些数据以及我将使用什么语言?

编辑:如果有帮助,这个项目是为不支持综合 ODB2 数据端口的旧引擎开发一个数字转速表。因此,它将读取直流电路上的电压并具有准确的图形界面。我完全不知道从哪里开始,但我决心让它发挥作用!它适用于窗户。

4

12 回答 12

8

作弊并使用libusb。我为一个我已经工作了一段时间的项目做了这个,并编写了一个C++/ wxWidgets应用程序来处理数据。

我最近一直在考虑用wxPython在 PC 上重新编写应用程序,因为它对于 GUI 开发来说要快得多。

你想如何显示/记录数据?有很多可用的选项。您可以使用wxWidgets 的 OpenGL 功能(轻松地)做一些非常酷的事情,无论是 2D 还是 3D 数据表示。

于 2008-10-02T08:02:44.590 回答
6

如果可以的话,我会建议使用像 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 的嵌入式处理器。通常这些都带有驱动程序。

于 2008-10-02T08:44:52.163 回答
3

看看libusb。它适用于 Linux 和 Windows。

于 2008-10-02T08:02:04.077 回答
2

由于您仍在寻找将电压转换为信息的设备,因此我建议您查看实现 USB-HID(人机接口设备)接口的设备,例如在此处找到的设备。

它们的好处是不需要进行任何设备驱动程序开发或安装驱动程序。它们就像鼠标、键盘或闪存驱动器一样即插即用。该接口非常通用,大多数制造商还提供了必要的库来从设备读取信息、插入/拔出设备时收到通知、发现设备等。

此外,请查看这篇文章,它解释了如何在 C# 中使用 HID 设备,例如。

戴夫

于 2008-10-02T10:49:48.323 回答
1

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.

于 2008-10-02T10:00:12.500 回答
1

大多数微控制器都内置了 ADC,其中很多还内置了 USB 子系统。赛普拉斯、PIC、AVR 浮现在脑海中。每当我为自己的项目做 USB 工作时,我都会使用pyusbwxPython。尽管初始学习曲线相当苛刻,但它们使完成工作变得非常容易。

抛开无耻的自我插件不谈,我用pyusb为USB-LCD设备编写了一个小的python驱动程序。你可以在这里查看我的源代码。

于 2008-10-02T15:18:52.217 回答
1

我个人使用的是 Microchip PIC——它们有 AD/DA 转换器、USB 端口、免费驱动程序和引导加载程序——所有这些都低于 4 美元。插入这样的设备后,您将获得一个额外的 COM 端口 - 其余的都是微不足道的。

于 2008-10-02T15:23:02.877 回答
1

你没有说你在看什么平台。如果您的目标是 Windows,USB Revealed是一个很棒的参考。

于 2008-10-02T15:30:57.320 回答
1

在我看来,如果你想读取接线电压,那么你需要一个 A/D 转换器。您是否正在制作自己的 A/D 转换器?如果是这样,您需要在设备端进行一些不错的固件编程,而不是您在此处询问的主机端驱动程序。否则你要买一个 A/D 转换器,你应该只使用供应商提供的驱动程序。

于 2008-10-02T08:40:55.327 回答
1

对于硬件,请查看FTDI产品。

如果您有硬件并想在 Windows 中访问它,我最近发现了WinUSB。如果这是您需要的,请查看此白皮书

于 2009-12-17T05:02:16.563 回答
1

您最简单的选择可能是购买某种现成的数据采集设备。很多公司都在做这种事情,但有时它们的价格高得吓人:

  1. 国家仪器
  2. 扩增子
  3. 实验室杰克

您也可以使用工具包构建自己的工具包,尽管我现在找不到任何链接。

如果您想要更自定义的东西,您可以使用EZ-USBPIC。它们提供 USB 驱动程序(至少适用于 Windows),允许您在不编写驱动程序的情况下与设备交互。

对于其中的大多数,您可以选择相当广泛的编程语言,我过去曾编写过用于与 Visual Basic 6 中的 EZ-USB 设备通信的软件。

于 2008-10-02T11:05:31.267 回答
0

除了 WinUSB、libusb 和 Jungo,还有另一个从用户模式编程 USB 设备的选项 -用户模式驱动程序框架 (UMDF)

编写 UMDF 驱动程序基本上是使用您喜欢的工具创建一个进程内 COM 组件。

于 2010-01-19T09:20:53.367 回答