当前位置: 首页 > news >正文

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

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

http://www.lryc.cn/news/146841.html

相关文章:

  • Javaweb入门
  • 后端开发基础概念
  • ELK原理和介绍
  • FBX SDK 开发环境配置 visual studio 2022
  • vue面试题_vue2和vue3的区别
  • Shiro整合SpringBoot,实战下的应用场景
  • C语言——全局变量和局部变量重名了会怎么样
  • linux下vi或vim操作Found a swap file by the name的原因及解决方法--九五小庞
  • 通过RD Client远程连接windows电脑踩坑点
  • 学习node之——如何在项目中使用MySQL、前后端的身份认证
  • AUTOSAR从入门到精通-【应用篇】参照AUTOSAR架构的柴油车后处理集成电控系统软件设计与研究(续)
  • Linux 内核动态打印调试(dev_info、 dev_dbg )
  • 深入浅出AXI协议(3)——握手过程
  • Ansible学习笔记5
  • LeetCode 面试题 02.06. 回文链表
  • linux环境没有curl或者telnet命令解决方法与区分linux环境类型
  • golang channel
  • 高等职业学校物联网实训室建设方案
  • Python基础学习第四天:Python注释
  • Puppeteer中使用Stealth.min.js库
  • JVM ZGC垃圾收集器
  • 事务管理-事务进阶-propagation属性
  • 树多选搜索查询,搜索后选中状态仍保留
  • 数据结构--字典树(trie)
  • iframe通过postMessage进行跨域通信以及在Angular中使用
  • rust学习-引用C库
  • WebAssembly 在云原生中的实践指南
  • Azure sqlserver 更改字符集
  • git push时,由于commit了大文件无法成功push的解决办法
  • 2023_Spark_实验一:Windows中基础环境安装