[银河麒麟]因为没有安装串口相关驱动,导致无法检测到对应的串口,后来安装后,我的qt的相关接口就可以识别到了

是的,这个现象很正常。在银河麒麟/Linux下,Qt 的 QSerialPortInfo::availablePorts()并不是直接去"扫描硬件",而是枚举系统已经暴露出来的串口设备节点,比如:

  • /dev/ttyS*:原生串口

  • /dev/ttyUSB*:USB 转串口,如 CH340、CP210x、FTDI、PL2303

  • /dev/ttyACM*:CDC-ACM 类设备

如果内核里对应的串口驱动没有安装或没有加载,内核就不会创建这些 /dev/tty* 节点,udev 也不会生成对应设备信息,Qt 自然就识别不到。安装驱动并加载模块后,设备节点出现,Qt SerialPort 相关接口就能枚举到了。




我的设备的串口名称为ttyWCH0-3

ttyWCH0-3 这个名称直接表明你的设备使用的是沁恒(WCH)官方厂商驱动 ,而不是 Linux 内核默认的 8250_pci 通用驱动。


讲讲沁恒(WCH)

沁恒(WCH,全称WinChipHead)是一家专注于连接技术 和微处理器内核 的国产集成电路设计企业,其核心特点是坚持全栈自研IP,走了一条"先打IP地基、再建芯片高楼"的产业化路径。

南京沁恒微电子股份有限公司成立于2004年5月9日,总部位于江苏南京




之前没想到还需要再自己安装串口驱动

你这次的现象其实非常典型:

驱动没装 → 内核没创建设备节点 → Qt 枚举不到串口

驱动装好 → /dev/ttyWCH0-3 出现 → Qt 的 QSerialPortInfo 就能识别

问题从头到尾都不在 Qt,Qt 只是"读系统里已经存在的串口设备"。它不会去凭空发现硬件。

为什么 Linux 还要自己装串口驱动?

因为 Linux 只是把很多常见硬件的驱动内置进内核了,所以给人感觉"不用装驱动"。但遇到下面这些情况,往往还是要额外装:

  • USB 转串口:CH340、CP210x、FTDI、PL2303 等

  • PCIe/PCI 转串口卡:比如沁恒 CH382、CH384

  • 多串口卡、工业串口卡

  • 较新的芯片,发行版内核还没集成

  • 国产系统内核版本较旧,厂商驱动没进官方源




为什么是 ttyWCH0-3 而不是 ttyS*?

你的设备是一块 PCIe 转多串口卡 ,芯片型号很可能是 CH35x 或 CH38x系列(如 CH382、CH384)。Linux 内核自带的 8250_pci 驱动也能驱动部分沁恒芯片,但会将其识别为标准的 ttyS* 设备。为了获得更好的兼容性和高级功能(如更高的波特率、硬件流控、RS485 支持等),你需要安装沁恒官方的驱动。官方驱动加载后,会主动解绑 8250_pci 驱动,并为设备创建专用的 **/dev/ttyWCH***设备节点。编号从 0 开始,你的卡有 4 个串口,所以就是 ttyWCH0 到 ttyWCH3。

相关推荐
Cx330❀18 小时前
Qt 多线程深度解析:从底层原理到 UI 线程与同步实战
开发语言·qt·ui·搜索引擎·性能优化·图形渲染
西西弗Sisyphus19 小时前
Qt6 实现 会动的界面像物理世界一样
c++·qt
MayZork20 小时前
Qt 开发集成CMake + vcpkg
开发语言·c++·qt
书生执笔画浮沉20 小时前
Linux桌面端应用向鸿蒙PC迁移适配纪实
c++·qt·c·信创·海思·libc·ohos
今夜有雨.21 小时前
图像运算、掩膜/ROI 与绘制交互
c语言·数据结构·c++·qt·算法·计算机视觉
时间的拾荒人1 天前
Qt 网络编程与音视频开发实战:从 UDP/TCP 到 HTTP 与多媒体
网络·qt·音视频
扶尔魔ocy2 天前
【qt openGL入门笔记】FPS相机
qt·opengl
扶尔魔ocy2 天前
qt openGL入门笔记】FPS相机和轨道相机
qt·opengl
尘客-追梦2 天前
qmake / jom / 影子构建:把编译管起来
开发语言·c++·qt