【问题标题】:How to enumerate USB devices *and* read/write to them?如何枚举USB设备*和*读/写它们?
【发布时间】:2015-09-22 15:50:25
【问题描述】:

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

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

我不知道如何open(2) 设备,所以我可以write(2)read(2) 从它。

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

【问题讨论】:

    标签: c linux usb udev


    【解决方案1】:

    libusb 是一个理想的选择。还有several examples for such a case as you described

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

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

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

    【讨论】:

    • 对于未来的读者,libusb 打开/dev/bus/usb/XXX/YYYXXXYYY 是总线和总线设备 ID,您也可以使用 lsusb 看到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2010-10-25
    • 2012-07-12
    相关资源
    最近更新 更多