如何枚举USB设备并读写它们?

3
有一个自定义的USB设备需要我进行通信,它没有特定的驱动程序。该设备不显示为 /dev/tty*
发现可以使用libudev列举USB设备,假设我成功获取了相应的struct udev_device
我无法弄清楚如何open(2)设备,以便我可以从中write(2)read(2)
是否可以与通用USB设备通信,设置波特率并只读/写?如果可以,那么在使用libudev找到设备后,应打开哪个“文件”?如果不行,编写内核级驱动程序是否必要?
1个回答

1

libusb 是一个理想的选择。此外,还有几个适用于您所描述情况的示例

在您的情况下,您只需要:

  • 创建默认上下文。
  • 请求设备列表。
  • 搜索具有所需供应商/产品ID的设备。
  • 打开设备,然后通过同步异步I/O调用进行通信。
  • 清除所请求的设备列表。
  • 完成后,关闭设备句柄并销毁上下文。
这使你能够相对轻松地编写用户空间应用程序/库。我已经使用它与麦克风、相机和DIY硬件(我构建的迷你装配线设备)取得了相当大的成功。邮件列表上的开发人员也非常乐意提供帮助, 尽管有一两个人对新成员的帖子不完美的情况下可能会有些刻薄。

1
对于未来的读者,libusb打开/dev/bus/usb/XXX/YYY。其中XXXYYY是总线和总线上设备的ID,您也可以通过lsusb命令查看到它们。 - Shahbaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接