我正在寻找一种通过USB接口读取接线电压并返回数据的设备。 我将如何去编程解释这些数据,我会用什么语言?
编辑:如果有帮助的话,这个项目是为不支持全面ODB2数据端口的老式引擎开发一个数字转速表。 因此,它将读取直stream电路上的电压,并具有精确的graphics界面。 我完全不知道从哪里开始,但是我决心让它工作! 这是为Windows。
欺骗和使用libusb 。 我为一个我一直在研究的项目做了这个,写了一个C ++ / wxWidgets应用程序来处理数据。
我最近一直在考虑在wxPython上重新编写PC上的应用程序,因为GUI开发要快得多。
你想如何显示/记录数据? 有很多选项可用。 使用wxWidgets的OpenGL功能,您可以轻松地完成一些非常酷的功能,无论是2D还是3D数据表示。
如果你能,我会建议使用像libusb库,如克里斯和乔恩凯奇建议。
如果libusb不适合您的需求,而您正在为Windows开发,则应该查看Jungo提供的软件。 再次,这将USB软件移入用户空间,而不是要求Windows内核开发。 (编辑3:Ilya在评论中指出,Jungo也可用于Linux)
如果你必须做一些内核开发(无论是Windows还是Linux),那么C就是你的唯一选择。 由Rubyi调查这本书的Linux开发。 对于Windows驱动程序开发,我可以推荐Oney的这本书。 但是在这两种情况下,我都会优先考虑libusb选项来优化驱动程序。
顺便说一句。 如果你感兴趣的是能够测量USB设备上的电压(并且编写代码并不重要),那么有许多产品会为你做这些。 看看NI的一些产品。 这些将处理usb和数据采集的艰苦工作,并给你一个很好的编程接口,以在您的应用程序中使用。
(编辑2)也有一些usb串行芯片(如这些 )可以直接连接到嵌入式处理器usig只uart。 通常这些来与司机。
看看libusb 。 它可用于Linux和Windows。
由于您仍然在寻找将电压转换为信息的设备,因此建议您查看实现USB-HID(人机接口设备)接口的设备,例如此处的设备 。
他们的好处是不需要开发任何设备驱动程序,或者安装驱动程序。 它们像鼠标,键盘或闪存驱动器一样即插即用。 该接口非常通用,大多数制造商还提供必要的库来读取设备中的信息,在设备插入/接出时发出通知,发现设备等等。
另外,看看这篇文章 ,例如解释如何在C#中使用HID设备。
戴夫
在我看来,如果你想读取接线电压,那么你需要一个A / D转换器。 你制作自己的A / D转换器吗? 如果是这样的话,那么在设备端就有一些很好的固件编程,比你在这里询问的主机端驱动更多。 否则,你会购买一个A / D转换器,你应该只使用供应商提供的驱动程序。
除非你在固件一边咬你自己的USB驱动程序,否则你的芯片可能会带有一个PC驱动程序。 例如,Microchip的PIC微控制器不仅具有PIC的固件,而且具有Windows驱动程序。 我预计其他支持USB的芯片也将带有自己的驱动程序。
请记住,当您直接在固件端与USB端口进行交互时,在PC端与您实际交互的是主控制器的驱动程序。
您最简单的选择可能是购买某种现成的数据采集设备。 很多公司都是这样做的,但是有时候这些东西很贵,
您也可以从套件中构建自己的套件,尽管我现在找不到任何链接。
如果你想要更多的定制,你可以使用EZ-USB或PIC 。 他们提供USB驱动程序(至少对Windows来说),它允许您在不写驱动程序的情况下与设备进行交互。
其中大部分都有相当多的编程语言选择,过去我编写了与Visual Basic 6的EZ-USB设备进行通信的软件。
大多数微控制器都内置ADC,其中大部分还具有内置的usb子系统。 赛普拉斯,PIC,AVR浮现在脑海。 每当我为自己的项目做USB工作,我使用pyusb和wxPython 。 尽管最初的学习曲线相当严酷,但是他们很容易完成工作。
无耻的自我插到一边,我写了一个pyusb的小型python驱动程序用于USB-LCD设备。 你可以在这里查看我的源代码。
我个人使用的是Microchip PIC,它们具有AD / DA转换器,USB端口,免费的驱动程序和引导装载程序,所有这些都在4美元以下。 插入这样的设备后,你会得到一个额外的COM端口 – 其余的是微不足道的。
你不会说你在看什么平台。 如果你的目标是Windows, USB Revealed是一个很好的参考。
对于硬件,请看看FTDI产品。
如果你有硬件,并想在Windows上访问它,我最近发现了WinUSB 。 如果这就是你需要的,看看这个白皮书 。
除了WinUSB,libusb和Jungo之外,用户模式 - 用户模式驱动程序框架(UMDF)还有另外一个用于编程USB设备的选项。
编写一个UMDF驱动程序基本上是用你最喜欢的工具创建一个进程内COM组件。