Ctrl_CV_编程 2024-04-07 14:51 采纳率: 0%
浏览 71
已结题

Linux的qt下获取我当前连接的usb打印机的端口号

我搜了很多程序,就是没有我需要的dmesg | grep usb | grep usblp | tail -n 1 | awk '{print $NF}'
这个命令的含义是:

dmesg | grep usb:通过dmesg命令获取USB缓存区的信息,并使用grep过滤出包含"usb"的行。
grep usblp:再次使用grep过滤出包含"usblp"的行。
tail -n 1:只保留最后一行,即最新的插入信息。
awk '{print $NF}':使用awk提取最后一行的最后一个字段,即USB端口号。
请注意,这个命令假设您的USB设备已经插入并且内核已经记录了相关信息。如果没有找到带有usblp的USB端口号,可能是因为没有插入相应的设备或者内核没有记录相关信息

这个东西的回答还算是比较贴切的,我需要获取的USB打印机的端口号是,比如usblp0,usblp1这种类型,而且是只要当前插入的USB打印机,我不想要历史记录上的usb打印机,我不需要获取缓存区里的,而且不想要获取任何的文件路径,我因为我的程序跑在别人的电脑上不是这个文件路径,我不要文件路径

  • 写回答

13条回答 默认 最新

  • GISer Liu 2024-04-07 14:52
    关注

    该回答引用自GPT-4,由博主GISer Liu编写:

    首先,你可以使用lsusb命令来列出当前连接的所有 USB 设备,然后根据你的需求进一步筛选出 USB
    打印机的信息。以下是一个可能的解决方案:

    1. 使用 lsusb 命令列出当前连接的所有 USB 设备,找到与打印机相关的设备信息。假设打印机的信息类似于 Bus XXX Device XXX: ID XXXX:XXXX
    2. 使用 udevadm info -q all -n /dev/bus/usb/XXX/XXX 命令来获取该 USB 设备的详细信息,其中 /dev/bus/usb/XXX/XXX 是打印机的路径。
    3. 在输出信息中找到 ID_SERIALID_MODEL 相关的字段,这些字段可以帮助你区分不同的 USB 设备。
    4. 最后,根据你的需求,可以使用脚本来自动获取 USB 打印机的端口号,比如:
      bashCopy code
      #!/bin/bash
      # 列出所有 USB 设备
      lsusb | while read line; do
      # 如果设备信息包含打印机的关键词(比如 ID_SERIAL 或 ID_MODEL)
      if echo "$line" | grep -q "your_printer_keyword"; then
      # 提取出设备的总线号和设备号
      bus=$(echo "$line" | cut -d" " -f2)
      device=$(echo "$line" | cut -d" " -f4 | tr -d ':')
      # 打印设备的路径(端口号)
      echo "/dev/bus/usb/$bus/$device"
      fi
      done
      
      请注意,在脚本中替换 "your_printer_keyword" 为你打印机的关键词。这个脚本将列出匹配关键词的 USB 打印机的端口号。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月8日
  • 修改了问题 4月7日
  • 修改了问题 4月7日
  • 创建了问题 4月7日