如何最正确地使用libusb与连接的USB设备进行通信
How to most properly use libusb to talk to connected USB devices?
如何最正确地使用libusb与连接的USB设备通话?
具体来说,我如何将数据传输到USB设备,从设备接收信息,找出连接设备的名称,如果它们有存储,等等。
更具体地说,我将在Mac上运行;OS;X机器,所以我知道我不能只使用Windows头文件。
如果对libusb和USB设备有一个很好的解释,那也会很有帮助。
这里有一篇关于类似问题的文章,可能对您有用。我包括很多链接。
但也许你更愿意在这里看到它。所以在这种情况下,它开始了!
Libusb允许您枚举设备,并根据特定的供应商/产品id(V/p id)选择您想要的设备。如果你不知道这一点,并且无法在网上找到产品描述,那么你可以很容易地找到它。
如果它不在线,您将需要在Linux上使用类似于lsusb的应用程序。(我不相信它在Mac上。)当你运行lsusb时,它会列出连接的设备及其V/P ID。您可以通过拔下插头、运行lsusb、将设备插回并进行比较来轻松找到您的设备。这是小菜一碟。Mac上的任何usb列表应用程序都有望像lsusb一样显示V/P ID。
一旦你有了这个V/p ID,你就会使用libusb(如果使用0.1)来枚举所有设备,并找到与该ID匹配的设备
选择设备后,您将使用功能报告或输出报告发送数据包。这是最复杂的部分,因为我相信你发送的数据包取决于单个设备。它是8个字节的数据,其中只有一个是您希望发送到usb设备的单个字符。(如果你想发送8个字符,你必须循环通过一个字符数组,并为每个字符发送一个功能或输出报告。)
作为一个例子,请随意参考我为控制两个LED而写的一个相当具体的终端例子。如果有帮助,那就太好了!它包含一个libusbx和libusb-0.1示例。
我希望这能有所帮助!
libusb1.0(更新的推荐版本)的官方网站是https://libusb.info/.API文档位于http://api.libusb.info.单击模块部分,浏览不同的功能区域。源位于https://github.com/libusb/libusb您可以在https://github.com/libusb/libusb/tree/master/examples.希望能有所帮助!
来自@user2469202的文章也是一篇很好的基本介绍。
您可以遵循的过程是:
- 获取要使用
lsusb
进行通信的设备的VID、PID - 尝试打开设备并读取设备描述符
- 如果您想要设备的名称,请使用字符串描述符来获取
- 检查是否连接了任何内核驱动程序。如果是,则将其分离并进行一些原始数据传输
- 再次获得响应后,重新连接驱动程序
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 通过USB在PC和Arduino之间进行串行通信
- 利用Mbed库建立STM32与PC机的串行USB通信
- Python-Arduino USB通信浮点错误
- 使用FTDI与USB设备通信时分割故障
- 使用 libusb-win32 与 USB 到 DMX512 接口通信,找不到任何端点
- 与USB设备通信
- 通过USB从C++与NXT通信
- 使用USB传输电缆,简易电缆,USB到USB桥接电缆进行PC到PC通信
- UBUNTU C 的 USB 到串行通信问题
- 用于串行通信的 USB 端口名称
- 通过 RS232 和 USB 进行串行通信
- 通过其 USB 入口和C++与 Blackstar ID 核心吉他放大器通信
- 如何使用USB扫描仪进行通信
- Arduino和PC之间通过Usb串行端口(C++控制台应用程序)进行通信
- 如何最正确地使用libusb与连接的USB设备进行通信
- microsoftvisualc++ 2010与Arduino UNO的USB串行通信
- WinCE设备和Windows PC之间通过USB进行通信
- C++ USB 与 USB 复合设备 (usbccgp.sys) 通信