学习分享:Ubuntu 下使用 Qt 打开串口报错 Permission denied

Ubuntu 下使用 Qt 打开串口报错 Permission denied

错误描述

提前声明一下,开发环境是 Ubuntu18.04,用户是非 root 用户。

因项目需求,需要使用到 Qt 收发串口数据,曾经写过一个串口调试助手的程序 通俗易懂玩QT:串口调试助手制作(内附主要源代码) ,这里直接拷贝到 Ubuntu 虚拟机下使用,发现每次打开串口的时候都会发生错误,最开始的时候还不知道发生了什么错误,以为是需要在串口名前面添加 / ,但是后面发现加了 / 后,并没有成功打开串口,所以问题不在于 / ,然后在网上搜索了一下问题,QSerialPort 类有个 errorString() 函数成员, 可以打印开启串口失败的原因,用它打印了一下,加了 / 后的串口错误信息 No such file or directory ,然后把 / 去掉后,再次打印串口错误信息 Permission denied ,于是在网上去搜索了一番,有两种解决方案,一种是将当前的用户添加到串口所在的分组,再一种就是改变 udev 规则,使普通用户可以访问其他用户组下的内容,个人觉得后者安全系数会更高点,下面也是分享的后者。

解决方案

  1. 打开 udev 的配置目录
bash 复制代码
cd /etc/udev/rules.d
  1. 新建并编辑配置文件70-ttyusb.rules(名称可以自己自行定义,不过后缀必须是 .rules, MODE 的值可以是 0666 ,也可以是0777,个人觉得前者更安全可靠点)
bash 复制代码
sudo vim 70-ttyusb.rules
> KERNEL=="ttyUSB*", OWNER="root", GROUP="root", MODE="0666"
  1. 修改配置文件70-ttyusb.rules的权限为666(该步骤可省略)
bash 复制代码
sudo chmod 664 70-ttyusb.rules
  1. 重启udev服务
bash 复制代码
sudo /etc/init.d/udev restart
< [ ok ] Restarting udev (via systemctl): udev.service.
  1. 重新插拔串口即可(这一步很关键!!!)

学习分享,一起成长!以上为小编的经验分享,若存在不当之处,请批评指正!

相关推荐
前进的李工1 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律3 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
沫璃染墨3 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
CCIE-Yasuo4 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga5 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
li星野5 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光6 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
WEI_YANG_JU7 小时前
初中数学教学中合作学习的研究与实践
学习
码农小韩7 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
longzhizhui9268 小时前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash