如何枚举USB设备*和*读/写给他们?

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

我发现如何使用libudev来枚举USB设备,假设我设法得到相应的struct udev_device

我弄不明白的是如何open(2)设备,以便我可以write(2)和从中read(2)

是否有可能与通用的USB设备进行通信,设置波特率和只读/写? 如果是这样,我findlibudev的设备后,应该打开什么“文件”? 如果不是,编写一个内核级驱动程序是必要的?

libusb是一个理想的选择。 您所描述的这种情况也有几个例子 。

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

  • 创建一个默认上下文。
  • 请求设备列表。
  • 搜索具有所需供应商/产品ID的设备。
  • 打开设备,然后通过同步或异步 I / O调用进行通信。
  • 清理请求的设备列表。
  • 完成后,关闭设备手柄并销毁上下文。

这使您可以相对轻松地编写用户空间应用程序/库。 我用它与麦克风,照相机,和DIY硬件(我已经建立的迷你装配线设备),相当成功。 邮件列表上的开发者也是非常有帮助的 ,但是如果他们的帖子写得不是很好的话,那么一两个研究人员往往会对新成员有点苛刻。