如何为Windows平台的USB设备编程驱动程序?

时间:2008-10-02 07:58:45

标签: windows usb driver

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

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

12 个答案:

答案 0 :(得分:8)

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

我最近一直在考虑在 wxPython 中重新编写应用程序,但因为它的GUI开发速度要快得多。

您希望如何显示/记录数据?有很多选择。无论是2D还是3D数据表示,您都可以使用the OpenGL capabilities of wxWidgets轻松完成一些非常酷的工作(很容易)。

答案 1 :(得分:6)

如果可以的话,我建议使用像libusb这样的库,正如kris和Jon Cage建议的那样。

如果libusb不能满足您的需求并且您正在为Windows开发,那么您应该查看Jungo提供的软件。同样,这将usb软件移动到用户空间而不是需要Windows内核开发。 (编辑3:Ilya在评论中指出Jungo也适用于Linux)

如果你必须进行一些内核开发(Windows或Linux),那么C就是你唯一的选择。调查Rubini的this书籍,了解Linux开发。对于Windows驱动程序开发,我可以推荐Oney的this书。 但是在这两种情况下,我都会优先考虑libusb选项而不是驱动程序开发。


顺便说一下。如果您感兴趣的是能够测量USB设备上的电压(并且编写代码并不重要),那么有许多产品可以帮助您。看一下National Instruments的一些产品。这些将处理usb的辛勤工作和数据采集,并为您提供一个很好的编程接口,以便在您的应用程序中使用。


(编辑2) 还有一些usb-serial芯片(例如these)可以直接连接到嵌入式处理器,仅使用uart。通常这些都带有驱动程序。

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

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

此外,请查看解释如何在C#中使用HID设备的this article

戴夫

答案 4 :(得分:1)

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

答案 5 :(得分:1)

除非你在固件方面打击自己的USB驱动程序,否则你的芯片可能会附带一个PC驱动程序。例如,Microchip的PIC单片机不仅具有PIC固件,而且具有Windows驱动程序。我希望其他支持USB的芯片也会附带自己的驱动程序。

请记住,当您直接在固件端与USB端口进行交互时,在PC端,您实际与之交互的只是主控制器的驱动程序。

答案 6 :(得分:1)

您最简单的选择可能是购买某种现成的数据采集设备。很多公司都会做出这样的事情,但它们有时会非常昂贵:

  1. National Instruments
  2. Amplicon
  3. LabJack
  4. 您也可以使用套件构建自己的套件,但我刚才找不到任何链接。

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

    大多数这些都有相当多的编程语言选择,我编写过的软件可以在过去用Visual Basic 6与EZ-USB设备进行通信。

答案 7 :(得分:1)

大多数微控制器都内置了ADC,其中大量的微控制器也内置了usb子系统。赛普拉斯,PIC,AVR浮现在脑海中。每当我为自己的项目进行USB工作时,我都使用pyusbwxPython。他们很容易完成工作,尽管初始学习曲线非常严苛。

无耻的自我插件,我用pyusb为USB-LCD设备写了一个小的python驱动程序。您可以查看我的源代码here

答案 8 :(得分:1)

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

答案 9 :(得分:1)

您没有说出您正在寻找的平台。如果您的目标是Windows,USB Revealed是一个非常棒的参考。

答案 10 :(得分:1)

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

如果您有硬件并希望在Windows中访问它,我最近发现了WinUSB。如果这就是您所需要的,请查看this white paper

答案 11 :(得分:0)

除了WinUSB,libusb和Jungo之外,还有另一种从用户模式编程USB设备的选项 - User-Mode Driver Framework (UMDF)

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