如何枚举 USB 设备 *和* read/write 给他们?

How to enumerate USB devices *and* read/write to them?

有一个自定义 USB 设备需要与之通信。它没有特定的驱动程序。设备未显示为 /dev/tty*.

found out 如何使用 libudev 枚举 USB 设备,假设我设法获得相应的 struct udev_device.

我想不通的是如何 open(2) 设备,以便我可以 write(2)read(2) 从它。

是否可以与通用 USB 设备通信,设置波特率并仅 read/write?如果是,找到libudev的设备后,应该打开什么"file"?如果没有,是否需要编写内核级驱动程序?

libusb is an ideal choice. There are also several examples for such a case as you described.

对于你的情况,你只需要:

  • 创建默认上下文。
  • 请求设备列表。
  • 搜索具有所需 vendor/product ID 的设备。
  • 打开设备,然后通过synchronous or asynchronousI/O调用进行通信。
  • 清理请求的设备列表。
  • 完成后,关闭设备句柄并销毁上下文。

这使您可以相对轻松地编写用户空间 application/library。我已经将它与麦克风、相机和 DIY 硬件(我制作的迷你装配线设备)一起使用,并取得了相当大的成功。 The devs on the mailing list are also very helpful,虽然一两个研究员如果他们的帖子写得不完美,往往会对新成员有些刻薄。