工控软件
文章平均质量分 90
宁静致远2021
天道酬勤,持之以恒。
发上等愿,结中等缘,享下等福;
择高处立,寻平处住,向宽处行。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ARM 架构 Ubuntu 20.04 / 22.04 触摸屏设备
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2026-04-25 10:24:03 · 246 阅读 · 0 评论 -
Mermaid VSCode插件制作流程图保存方法
打开预览窗口:一般可以通过右键点击编辑区域,选择“Open Mermaid Preview” 或者使用特定的快捷键(具体快捷键可能因插件配置而异)来打开Mermaid图表的预览窗口。导出图片:在预览窗口中,通常会有一个导出按钮(可能是一个下载图标),点击该按钮。你可以选择导出的图片格式,如PNG、SVG等,然后选择保存的位置,完成图片的下载。打开Mermaid代码文件:在VSCode中打开包含Mermaid代码的 .md(Markdown)文件。和 ` ````之间。原创 2026-04-07 10:15:31 · 275 阅读 · 0 评论 -
qt5.xx版本用msvc2017编译器,源代码使用UTF-8编码,但是调试输出窗口,中文显示乱码解决方法
这个问题是由于 Windows 控制台默认代码页与 Qt 内部 UTF-8 编码不匹配导致的。工具 → 选项 → 环境 → 终端 → 勾选"运行输出时使用UTF-8编码"工具 → 选项 → 文本编辑器 → 默认编码 → 设置为 “UTF-8”这一句加在main入口的最前面。原创 2026-02-25 22:02:36 · 403 阅读 · 0 评论 -
C++的RAII(Resource Acquisition Is Initialization,资源获取即初始化)机制
RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。原创 2026-02-18 21:09:36 · 661 阅读 · 0 评论 -
在Linux和Windows系统下使用Qt监测U盘的插拔事件
本文介绍了在Linux和Windows系统下使用Qt监测U盘插拔事件的两种方法。方法一通过执行lsblk命令获取U盘路径信息,适用于Linux系统;方法二使用Qt的QStorageInfo类,可跨平台获取存储设备信息,包括U盘名称、路径、文件系统类型及容量等。两种方法均提供了完整的代码示例,其中QStorageInfo方法还能区分USB设备类型,适用于更复杂的应用场景。这些方案为开发跨平台U盘监控功能提供了实用参考。原创 2025-09-16 21:34:16 · 932 阅读 · 0 评论 -
深入理解Qt状态机的应用
有限状态机(finite-state machine)又称有限状态自动机(finite-state automaton),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。这个概念在计算机科学、数学、语言学、工程以及其他研究领域都有广泛的应用。有限状态机非常适合用于描述那些通过一系列的输入来转移状态的系统。原创 2025-04-17 12:02:12 · 1251 阅读 · 0 评论 -
Qt触摸屏隐藏鼠标指针
1.如果只希望在某个 widget 中不显示鼠标指针,那么在该 widget 的构造函数中调用。还可以用setCursor函数来设置鼠标指针的不同样式。3.可以在任一控件或者页面下显示或者隐藏鼠标指针。QT鼠标图标显示与隐藏。原创 2025-04-12 20:50:09 · 797 阅读 · 0 评论 -
【C++设计模式】第一篇:C++单例模式--懒汉与饿汉以及线程安全
无论全局静态变量还是局部静态变量,都是执行动态初始化,也就是都得在代码真正执行时,原创 2025-04-06 22:03:51 · 951 阅读 · 0 评论 -
openssl交叉编译
no-async: 交叉编译工具链没有提供GNU C的ucontext库。no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程;–cross-compile-prefix=: 交叉编译工具。shared: 生成动态连接库。–prefix=: 安装路径。执行下面的命令配置工程。原创 2025-04-06 10:03:35 · 770 阅读 · 0 评论 -
qt 操作多个sqlite文件
以下是一个简单的示例,展示如何在Qt中操作多个SQLite数据库文件。在Qt中使用多线程操作多个SQLite数据库文件时,需要注意SQLite的线程安全性以及Qt的多线程机制。SQLite默认支持多线程操作,但需要确保每个线程使用独立的数据库连接,以避免竞争条件。如果文件不存在,SQLite会自动创建它。使用QSqlDatabase::addDatabase创建独立的数据库连接,并通过moveToThread将工作者对象移动到独立的线程中。程序会创建多个线程,每个线程操作一个独立的SQLite数据库文件。原创 2025-03-08 20:21:15 · 1738 阅读 · 0 评论 -
QT-自定义参数设计框架软件
常用本地数据参数通常使用的是xml等文本的格式,进行本地的数据参数的存储。这种参数的保存方式有个致命的一点,就是可以存在参数的丢失。特别是在软件异常退出的情况下发生。针对此等情况,我们现在使用的是sqllite的本地存储方式进行设计,并且尽量将参数的格式通用化。原创 2025-03-04 21:17:31 · 1075 阅读 · 0 评论 -
Qt互斥锁(QMutex)的使用、QMutexLocker的使用
QMutexLocker提供的简化互斥锁锁定和解锁的机制在很多时候时蛮方便的,在使用互斥锁的地方使用QMutexLocker会减去许多安全隐患;不过在多线程循环输出ABC的时候好像就不适合该方法。所以使用类似的类还得按情况而定。原创 2025-02-27 22:12:20 · 4642 阅读 · 0 评论 -
Qt延时处理的四种方法
这种方法不会阻塞当前线程,尤其适合Qt的单线程带UI程序,或者UI线程,因为线程阻塞时,很明显的现象就是UI卡死。它可以使得程序在while等待期间,去处理一下本线程的事件循环,处理事件循环最多100ms必须返回本语句,如果提前处理完毕,则立即返回这条语句。1、 多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait()进行延时处理。4、 创建子事件循环,在子事件循环中,父事件循环仍然是可以执行的。原创 2025-02-26 20:35:28 · 1394 阅读 · 0 评论 -
VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant
把软件也分用户和系统管理员,对于普通用户而言,为了避免不必要的麻烦,建议使用System版,仅供参考。对于User版安装程序以及VScode程序默认均为英文,貌似不能读取系统语言环境,System版直接是中文安装程序,以及中文显示面板。User版本无法在系统分区(盘) 创建默认文件夹Microsoft VS Code,可见权限不足。Visual Studio Code官网却提供了User和System两个版本。对于System版无此问题,可next step到底,和其他不分的软件一样了。原创 2025-02-16 19:48:14 · 6689 阅读 · 0 评论 -
win10上设置开机自动登录
Win + R,然后在弹出的输入框中输入regedit,回车运行,打开注册表。原创 2025-02-04 14:26:28 · 6633 阅读 · 0 评论 -
TortoiseGit间接处理linux目录下的仓库,用到window映射linux目录方案
这次尝试了3种映射linux目录到window的方案,都可以完成映射,基本的增删改查文件都没问题。但是只有WinFsp这个工具完美运行TortoiseGit,搞定收工。原创 2025-02-02 22:17:47 · 804 阅读 · 0 评论 -
无需命令行,用 VSCode 轻松提交 Git 代码
Git 作为版本控制工具,通过在开发过程中记录代码的变化,简化了开发者之间的代码协作。而对于许多开发者而言,命令行提交 Git 代码却是一项让人感到困难的任务。然而,现在你可以轻松地通过 VSCode 提交 Git 代码,让你的代码管理变得更加轻松和高效。在本文中,我们将介绍如何使用 VSCode 来实现简单的 Git 提交, 帮助你更加流畅地完成软件开发。git stash 命令用于临时保存当前工作目录的修改,并将工作目录恢复到上一次提交的状态。原创 2025-02-01 17:27:15 · 5202 阅读 · 0 评论 -
Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成
Doxygen 是一个由 C++ 编写的、开源的、跨平台的文档生成系统。最初主要用于生成 C++ 库的 API 文档,但目前又添加了对 C、C#、Java、Python、Fortran、PHP 等语言的支持。其从源代码中提取注释,并生成多种输出格式,如HTML、PDF、LaTeX、RTF等,以帮助开发者创建易于阅读和理解的代码文档。Doxygen 简化了另行编写文档带来的重复性劳动,将代码和文档的工作合二为一。经过 10 年的迭代,Doxygen 成为了 C/C++ 项目首选的文档生成工具。原创 2025-01-31 18:14:31 · 1270 阅读 · 0 评论 -
使用Doxygen实现代码自文档化
Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档,后者API参考手册要遵守一定的注释规范,才能被Doxygen识别和转化在每个代码项中都可以有两类描述:brief描述 和 detailed描述;两种任选其一若需要通过Doxygen生成漂亮的文档,一般有如下几个地方需要使用Doxygen支持的风格进行注释头文件(.h 和 .hpp):主要用于声明版权,描述本文件实现的功能,以及文件版本信息等。原创 2025-01-31 11:34:12 · 1351 阅读 · 0 评论 -
Qt u盘自动升级软件
【代码】Qt u盘自动升级软件。原创 2025-01-30 08:55:33 · 1015 阅读 · 0 评论 -
linux下实现U盘和sd卡的自动挂载
2、在/etc下的mdev.conf文件中加入(如果没有这个文件,则新建一个)3、在/etc下建立hotplug文件夹,并在该文件夹下建立两个文件。1、在/etc/init.d/rcS中加入以下语句。原创 2025-01-11 22:39:16 · 1604 阅读 · 0 评论 -
千兆宽带和全屋WiFi覆盖
路由器能覆盖的面积,根据房子的格局不同而不同。市面上的路由器信号都差不多(那些看上去很牛逼,很多天线的路由器,信号也好不到哪里去!),一个路由器想要覆盖整个房子,很难!于是乎,我有了做全屋wifi的想法。原创 2025-01-06 14:43:28 · 5096 阅读 · 0 评论 -
C++深拷贝和浅拷贝的区别
在 C++ 中,浅拷贝和深拷贝是处理对象复制时非常关键的概念,尤其是当对象内部有指针成员指向动态分配的内存时。对于指针成员,浅拷贝只复制指针的值(即内存地址),而不复制指针所指向的数据。这意味着原对象和拷贝对象的指针成员将指向同一块内存地址。选择浅拷贝还是深拷贝取决于具体情况,但在涉及到动态内存管理的场景下,深拷贝通常是必要的,以确保数据的独立性和程序的稳定性。这样,原对象和拷贝对象的指针成员就分别指向不同的内存地址,互不干扰。当一个对象被浅拷贝时,所有的成员变量都会直接复制其值,包括指针类型的成员变量。原创 2024-12-27 17:55:45 · 1028 阅读 · 0 评论 -
细谈 C++ 返回传值的三种方式:按值返回、按常量引用返回以及按引用返回
C++ 的代码很难看懂,也许就在这些方面,一方面入参的四种方式,一方面出值的三种方式。相互组合,就会让人觉得晦涩难懂。其实好好深入到里面弄清楚其里面的含义,也就比较好理解了。这篇和上一篇写传参四种方式的博客写的非常认真,也希望能够对 C++ 初学者能有一些帮助。原创 2024-12-26 19:42:49 · 1464 阅读 · 0 评论 -
rk3588(七):GPIO简介及使用
原文链接:https://blog.csdn.net/qq_32636415/article/details/134918848在 RK3588 中,有只支持 1.8V,和支持 1.8V/3.3V 两种电压可配置,共两种类型的 GPIO。Core-3588J 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分,常用以下公式计算引脚:GPIO pin脚计算公式:pin = bank * 32 + numberGPIO 小组编号计原创 2024-12-02 14:19:11 · 4035 阅读 · 0 评论 -
Ubuntu20.04下安装VSCode(配置C/C++开发环境)和设备树插件用于嵌入式开发
vscode-icons , VSCode 图标插件,主要是资源管理器下各个文件夹的图标。用这个命令安装deb文件:sudo dpkg -i <package-name.deb>进入VSCode官网Visual Studio Code,下载deb版本。在左侧扩展商店中查找 ”chinese“选第一个安装,安装好后重启软件。在左侧扩展商店中查找 ”DeviceTree“安装,,设备树语法插件。在左侧扩展商店中查找 ”C/C++“选第一个安装。在左侧扩展商店中查找 ”Json“选第一个安装。原创 2024-11-28 17:52:12 · 1536 阅读 · 0 评论 -
【迅为电子】RK3568驱动指南|第十七篇 串口-第199章 串口子系统框架
在串口通信协议和串口通信接口类型的基础上,串口子系统框架为串口设备的驱动和管理提供了完整的架构。rx”,“tx”打开tx dma、“rx”打开rx dma、“!pinctrl-names 和 pinctrl-0:用于串口设备的管脚控制,以配置和管理串口设备的引脚设置。串口子系统框架的层级设计将串口设备的功能分解为不同的层次,实现了功能的模块化和抽象化,方便开发者进行串口设备的驱动开发和维护。reg:指定串口设备的地址和大小,0xfe6d0000 是串口设备的基地址,0x100 表示地址空间的大小。原创 2024-11-27 21:15:48 · 1032 阅读 · 0 评论 -
瑞芯微RK3568驱动配置之十串口
瑞芯微RK3568驱动配置之十串口Chaptet1 瑞芯微RK3568驱动配置之十串口Chapter2 创龙瑞芯微RK3568设备树1(修改设备树GPIO和串口)前言基础题外话内容1.GPIO2.串口不同总结后续Chapter3 QT串口大量数据动态实时显示(三)========“customplot绘图步骤”前言第一部分: 串口接收大量数据动态显示的难点串口大量数据QT接收时问题的原因:选择customplot绘图的原因:Chapter4 创龙瑞芯微RK3568参数修改(调试口波特率和rootfs原创 2024-11-27 20:55:03 · 3244 阅读 · 0 评论 -
解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题
设置缩放比例,调节所有字体缩放的倍数,如我设置1.5倍大小,自己根据自己的电脑分辨率定。屏幕分辨率太高了,导致整个系统字体看起来过小。安装完成后,在终端输入下面命令,弹出优化窗口。安装gnome-tweaks桌面配置工具。输入数字完成后,按下enter回车键即可。原创 2024-11-18 19:52:23 · 2127 阅读 · 0 评论 -
Qt 通用pro配置
如果指定 TEMPLATE为 lib模板,且未指定 CONFIG为静态库或者动态库,则默认生成动态库。提供一个通用的Qt pro工程配置。原创 2024-11-16 16:21:04 · 819 阅读 · 0 评论 -
VMware 17虚拟Ubuntu 22.04设置共享目录
lang=zh_cn。笔者按官方文档https://docs.vmware.com/en/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-AB5C80FE-9B8A-4899-8186-3DB8201B1758.html,以及vmhgfs-fuse -h示例,使用vmhgfs-fuse .host:/ /mnt/hgfs来挂载共享目录,可是还是无法显示出来。是的我认为是我的,共享文件挂载问题,很多文章的挂载过程比较简单,甚至挂载过后依然无效。原创 2024-11-15 11:17:57 · 2458 阅读 · 0 评论 -
Qt生成随机数详细指南(更现代化的QRandomGenerator类)
Qt提供了强大的随机数生成功能,主要通过QRandomGenerator和QRandomGenerator64类来实现。这些类不仅提供了生成整数和浮点数随机数的方法,还支持生成指定范围内的随机数。虽然旧的qrand()函数仍然可以使用,但高版本已经弃用,不再推荐。原创 2024-11-11 14:09:36 · 3002 阅读 · 0 评论 -
QJson-趟过的各种坑(先坑后用法)
rapidjson是腾讯的开源json解析框架,用c++实现。由于全部代码仅用header file实现,所以很容易集成到项目中。rapidjson的性能也非常出色。原创 2024-11-09 17:29:33 · 856 阅读 · 0 评论 -
Ubuntu中以root身份运行Qt创建的项目
使用Qt开发项目时遇到了一个问题,项目要调用串口时会需要root权限,而当我们使用桌面启动Qt creator使用的是用户身份,在debug或run项目时会出现权限不够的状况。可以在终端直接找到项目的bin文件以sudo权限运行,但是太过繁琐,不能每次都这样去调试。原创 2024-11-09 16:00:33 · 1282 阅读 · 0 评论 -
【Qt问题】解决 Cannot retrieve debugging output
本文介绍了在Qt开发过程中遇到的’Cannot retrieve debugging output’问题及其解决方法。该问题可能由于同时运行了两个Qt软件导致,解决方案包括关闭其中一个Qt实例或确保项目在单个Qt环境中打开。这时需要打开一个选项:工具->选项->构建和运行->default for “Run in terminal”:由disabled改为enabled。原创 2024-11-07 17:02:59 · 1453 阅读 · 0 评论 -
Qt QQueue 安全的多线程队列、阻塞队列
public://唤醒等待队列中的一个线程(来自wait)T take()private:这个 BlockingQueue类使用QMutex和QWaitCondition来保证线程安全,并实现了put、take、isEmpty和size等方法。其中,put方法用于往队列中插入元素,take方法用于从队列中取出元素,isEmpty方法用于判断队列是否为空,size方法用于获取队列中元素的数量。原创 2024-11-06 16:31:18 · 1450 阅读 · 0 评论 -
QtRO(Qt Remote Objects)分布式对象远程通信
Qt Remote Objects(QRO)是Qt提供的一种用于实现远程对象通信的机制。QtRO支持两种类型的通信:RPC(远程过程调用)和LPC(本地进程通信)。RPC(远程过程调用)包括以下几种类型:基于HTTP协议的RPC:例如Dubbo、Thrift等。基于二进制协议的RPC:例如GRPC、Hetty等。基于TCP协议的RPC:例如RMI、Remoting等。LPC包括基于共享内存的通信和基于消息传递的通信。总的来说,QtRO类似于平时的socket通信、串口通信、信号槽通信。原创 2024-11-05 19:40:55 · 998 阅读 · 0 评论 -
QT5串口多线程--派生类加moveToThread
之前讲过继承QThread,在虚函数run()中实现线程里的工作。这是qt4.6之前的方法,目前官方推荐的方法,是继承QObject类,再用方法moveToThread来将QObject派生类移动到新线程中去,这样QObject派生类定义的信号和槽的事件响应行为,都会发生在新的线程中。这个方法非常简单。下面还是以串口通讯作为例子,这次不用窗口,用控制台的方式。原创 2024-11-05 15:15:43 · 1308 阅读 · 0 评论 -
Qt 彻底搞懂 SUBDIRS 的作用
本文主要介绍 qmake 的SUBDIRS变量在多项目工程中的应用。当Qt项目规模比较小的时候,我们用一个工程就可以将所有源码文件组织起来,而不影响编译效率。但是随着项目规模的增加,只用一个工程组织所有的文件就不合适了,这时可以考虑将项目按照功能拆分成多个子工程,而SUBDIRS就是用来将多个子工程组织在一起的qmake变量。每个Qt工程文件中都有一个TEMPLATE变量,Qt通过该变量的值决定如何构建工程。TEMPLATE常用的类型有三种,见下表。原创 2024-11-04 12:02:17 · 1184 阅读 · 0 评论 -
SDK设计心得之接口设计
嗯,感觉良好,然后有一天,有一个应用只接入第二个平台而不接入第一个平台,我们第一次懵逼了,但是当时偷懒了,没有根本解决这个问题,而是选择虽然不接入第一个平台,也去第一个平台配置这个字段~~~这就已经很傻了,还不赶紧改,第二波就来了,第一个平台忽然调整了那个配置字段,弃用了,换了新的字段来标示,同时值也变化了(他们做了兼容,可以同时支持新旧字段),但是第二个平台就瞬间跪了,只能二选一,用老的值,新版本有问题,用新的值,老版本有问题,瞬间煞笔了~~好吧,在举个实际的例子,发现所有的经验都是血泪史,要哭了啊。原创 2024-11-04 11:52:46 · 1099 阅读 · 0 评论
分享