[银河麒麟]因为没有安装串口相关驱动,导致无法检测到对应的串口,后来安装后,我的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。

相关推荐
ShineWinsu7 小时前
对于Qt:QWidget通用属性的解析—上
数据库·qt·microsoft·面试·gui·属性·qwidget
Quz9 小时前
QML 字体度量与文本度量:FontMetrics 与 TextMetrics
qt
Quz9 小时前
QML 字体加载:FontLoader 与 FontInfo
qt
奇树谦10 小时前
Qt | 基于 GVCP 协议的 GigE 工业相机 IP 配置工具
数码相机·qt·tcp/ip
扶尔魔ocy1 天前
【qt openGL入门笔记】windows编译MinGW版本的osgearth(2.10.1)
qt·opengl·osg
小王C语言1 天前
Qt常用控件:按钮类控件,普通按键、单选、复选
开发语言·qt
初阳7852 天前
【基于Qt5仿音乐播放器(六)】——细节打磨与总结
qt·1024程序员节
小鱼仙官2 天前
使用Qt封装C/C++ 动态库 用于第三方调用
c语言·c++·qt
扶尔魔ocy2 天前
【QT OpenGL】知识点编目及传送门
qt·opengl·osg
qq_401700412 天前
Qt Modbus 源码剖析:从 QModbusClient 到工业级通信框架
开发语言·qt·系统架构