学习分享: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. 重新插拔串口即可(这一步很关键!!!)

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

相关推荐
zhangrelay16 分钟前
新版|-|单片机原理与接口技术-2026持续改进优化-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
笔记·单片机·嵌入式硬件·学习
hhhjhl4 小时前
Undici 跨端三方库仓颉适配全流程
java·开发语言·ubuntu
叼烟扛炮4 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
m4Rk_6 小时前
【论文阅读】Agent 记忆机制(113):Agentic Memory Management——从“检索相关信息”走向“管理 Agent 内部记忆”
论文阅读·人工智能·学习·开源·github
辣知7 小时前
辣知·化智92 《山海经》里的史前密码
学习
鬼手点金7 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
kyrie_sakura8 小时前
大模型学习18 大模型学习 - LangChain2_Model I/O
学习·自然语言处理
宝绿特塑业再生科技9 小时前
板材收缩率不稳,户外家具装配尺寸为何对不上:从切割尺寸变化到接缝不一的系统性排查与对策
笔记·科技·学习·生活·户外家具·hdpe再生颗粒·hdpe
~城南花已开~10 小时前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师
十年磨一剑~10 小时前
APT 仓库包查看方法文档
linux·ubuntu