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