C 如何枚举USB设备*并*读取/写入它们?

C 如何枚举USB设备*并*读取/写入它们?,c,linux,usb,udev,C,Linux,Usb,Udev,我需要与一个自定义USB设备通信。它没有特定的驱动程序。设备未显示为/dev/tty* 我知道如何使用libudev枚举USB设备,比如说,我设法获得相应的struct udev_设备 我不明白的是我如何才能打开(2)设备,以便写入(2)和读取(2) 是否可以与通用USB设备通信,设置波特率并只进行读/写?如果是这样,在找到带有libudev的设备后,应该打开什么“文件”?如果没有,是否需要编写内核级驱动程序?是一个理想的选择。还有 在您的情况下,您只需要: 创建默认上下文 请求设备列表 搜索

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

我知道如何使用
libudev
枚举USB设备,比如说,我设法获得相应的
struct udev_设备

我不明白的是我如何才能
打开(2)
设备,以便
写入(2)
读取(2)

是否可以与通用USB设备通信,设置波特率并只进行读/写?如果是这样,在找到带有
libudev
的设备后,应该打开什么“文件”?如果没有,是否需要编写内核级驱动程序?

是一个理想的选择。还有

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

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

这允许您相对轻松地编写用户空间应用程序/库。我将其与麦克风、照相机和DIY硬件(我制造的小型流水线设备)配合使用,取得了相当大的成功,尽管有一两名研究员如果他们的帖子写得不完美,可能会对新成员有些苛刻。

对于未来的读者,libusb会打开
/dev/bus/usb/XXX/YYY
XXX
YYY
是总线id上的总线和设备,您也可以通过
lsusb
看到它们。