您的位置:首页 > 房产 > 家装 > 东莞网络推广运营平台_南宁本地网站有哪些?_sem和seo_公司seo推广营销网站

东莞网络推广运营平台_南宁本地网站有哪些?_sem和seo_公司seo推广营销网站

2024/12/22 23:46:20 来源:https://blog.csdn.net/flyfish1986/article/details/143717691  浏览:    关键词:东莞网络推广运营平台_南宁本地网站有哪些?_sem和seo_公司seo推广营销网站
东莞网络推广运营平台_南宁本地网站有哪些?_sem和seo_公司seo推广营销网站

Qt 获取当前系统中连接的所有USB设备的信息 libudev版

flyfish

环境
Ubuntu22.04
Qt 6.2.4

#include <QCoreApplication>  // 包含 Qt 核心模块
#include <libudev.h>        // 包含 libudev 库
#include <stdio.h>          // 包含标准输入输出函数
#include <stdlib.h>         // 包含标准库函数
#include <string.h>         // 包含字符串处理函数// 用于获取USB设备的信息并打印出来
void listUSBInfo() {struct udev *udev;  // udev 上下文struct udev_enumerate *enumerate;  // 用于枚举设备的对象struct udev_list_entry *devices, *dev_list_entry;  // 设备列表和当前设备条目struct udev_device *dev;  // 设备对象// 初始化udevudev = udev_new();  // 创建一个新的 udev 上下文if (!udev) {fprintf(stderr, "Can't create udev\n");  // 如果创建失败,输出错误信息并返回return;}// 创建一个用于枚举设备的对象enumerate = udev_enumerate_new(udev);  // 创建一个新的 udev_enumerate 对象if (!enumerate) {fprintf(stderr, "Can't create udev enumerate\n");  // 如果创建失败,输出错误信息并释放 udev 资源udev_unref(udev);return;}// 添加子系统过滤器,只枚举USB设备udev_enumerate_add_match_subsystem(enumerate, "usb");  // 添加子系统过滤器,只枚举 USB 子系统的设备udev_enumerate_scan_devices(enumerate);  // 扫描设备// 获取设备列表devices = udev_enumerate_get_list_entry(enumerate);  // 获取设备列表if (!devices) {fprintf(stderr, "No devices found\n");  // 如果没有找到设备,输出错误信息并释放资源udev_enumerate_unref(enumerate);udev_unref(udev);return;}// 遍历设备列表udev_list_entry_foreach(dev_list_entry, devices) {  // 遍历设备列表const char *path;  // 设备路径path = udev_list_entry_get_name(dev_list_entry);  // 获取设备路径dev = udev_device_new_from_syspath(udev, path);  // 从系统路径创建设备对象if (dev) {const char *devnode = udev_device_get_devnode(dev);  // 获取设备节点const char *idVendor = udev_device_get_sysattr_value(dev, "idVendor");  // 获取厂商IDconst char *idProduct = udev_device_get_sysattr_value(dev, "idProduct");  // 获取产品IDconst char *manufacturer = udev_device_get_sysattr_value(dev, "manufacturer");  // 获取制造商名称const char *product = udev_device_get_sysattr_value(dev, "product");  // 获取产品名称if (devnode) {printf("Device Node: %s\n", devnode);  // 输出设备节点}if (idVendor) {printf("Vendor ID: %s\n", idVendor);  // 输出厂商ID}if (idProduct) {printf("Product ID: %s\n", idProduct);  // 输出产品ID}if (manufacturer) {printf("Manufacturer: %s\n", manufacturer);  // 输出制造商名称}if (product) {printf("Product Name: %s\n", product);  // 输出产品名称}printf("\n");  // 输出换行,使每个设备信息之间有空行分隔udev_device_unref(dev);  // 释放设备对象}}// 释放资源udev_enumerate_unref(enumerate);  // 释放 udev_enumerate 对象udev_unref(udev);  // 释放 udev 上下文
}int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);  // 创建 QCoreApplication 对象listUSBInfo();  // 调用 listUSBInfo 函数获取并打印 USB 设备信息return a.exec();  // 进入事件循环
}

结果

Device Node: /dev/bus/usb/001/001
Vendor ID: 1d6b
Product ID: 0002
Manufacturer: Linux 6.8.0-48-generic xhci-hcd
Product Name: xHCI Host ControllerDevice Node: /dev/bus/usb/001/002
Vendor ID: 046d
Product ID: c077
Manufacturer: Logitech
Product Name: USB Optical MouseDevice Node: /dev/bus/usb/001/003
Vendor ID: 046d
Product ID: c31c
Manufacturer: Logitech
Product Name: USB KeyboardDevice Node: /dev/bus/usb/002/001
Vendor ID: 1d6b
Product ID: 0003
Manufacturer: Linux 6.8.0-48-generic xhci-hcd
Product Name: xHCI Host Controller

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com