【问题标题】:Enum USB devices in Linux/C++在 Linux/C++ 中枚举 USB 设备
【发布时间】:2011-01-05 20:20:41
【问题描述】:

我正在为 Linux 设备编写 IO 例程,该设备将连接各种不断变化的 USB 设备。为此,我需要能够确定哪个设备连接到哪个端口,以便我可以使用正确的软件打开它。类似于“udevinfo”的东西是理想的,但我不知道如何开始写这样的东西。

关于 c++ api 阅读的建议?

【问题讨论】:

  • 我同意 341008。一票投给他。

标签: c++ linux usb


【解决方案1】:

看看libudev++。这似乎就是您要找的东西。

【讨论】:

  • libudev++ 看起来很有趣,但不想安装在我的 RHEL5.5 系统上。
【解决方案2】:

libusblibusb_get_device_listlibusb_get_bus_numberlibusb_get_device_address

【讨论】:

    【解决方案3】:

    GIO 应该可以帮助你。连接到volume-addedvolume-removed 信号将提醒您的程序注意系统中添加或删除的任何存储设备。如果您不需要 GIO 提供的控制级别,您可以使用libudev++,它提供了对 GIO 的高级封装。

    【讨论】:

      【解决方案4】:

      我不知道你需要什么样的信息,但你可以通过 /sys/bus/usb 吗?

      【讨论】:

      • 对我来说,诀窍是找出哪个 USB 设备对应于 /dev/TTYUSBn 中的哪个条目。我在使用 libusb 或 libudev 方面没有取得太大成功,所以我更多地考虑了一个脚本解决方案,该解决方案将在 cmd 行的相关开发路径中传递。
      【解决方案5】:

      我最终在 chkconfig 文件中使用了 BASH 解决方案。我浏览所有 ttyUSB 条目并查看每个条目的驱动程序信息:

      USB_ID=`egrep -i "mct u232|pl2303|keyspan" -m 1 /proc/tty/driver/usbserial | awk '{ printf( "$d", $1 )}'`
      if [ -z $USB_ID ]
      then
         echo $echo_n "No USB serial adapter found.";
         exit 1
      fi
      

      【讨论】:

        【解决方案6】:

        最近的解决方案:

        遍历这些文件系统目录:

        /dev/serial/by-id
        /dev/snd/by-id
        /dev/disk/by-id
        /dev/input/by-id
        /dev/v4l/by-id
        

        取决于您要查找的设备类别。

        例如,为我的 Arduino Nano 寻找串口:

        #include <filesystem>
        #include <string>
        
        const std::string path = "/dev/serial/by-id";
        
        for( const auto & file : std::filesystem::directory_iterator( path ) )
        {
            const std::string s = "NANO_33_IoT";
            if( file.path().generic_string().find(s) )
            {
                return file.path();
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-03
          • 2023-03-14
          相关资源
          最近更新 更多