- 博客(172)
- 资源 (54)
- 收藏
- 关注
原创 Qt中如何在同一个类中共享使用一个Qtimer
例如:某个程序需要播放警告声音,同一时间只能播放一个警告声音。一共有10种警告声音,需要根据优先级来播放。每次播放间隔时间根据需求来调整。这个时候有什么好的办法呢?当你在一个类中需要多个地方使用定时器,但是又不需要为每一个操作定义一个定时器变量。因为它们之间的行为是单一的。在具体的需求实验中,经过不断调整,最终找到了一种共享定时器的方法。
2025-03-24 10:22:55
280
原创 Yocto之fstab文件详解
在 Yocto 项目构建的嵌入式 Linux 系统中,fstab文件(通常位于/etc/fstab)起着至关重要的作用,它用于定义系统在启动时如何挂载文件系统。以下是对 Yocto 中fstab。
2025-03-20 10:40:01
734
原创 linux声音框架alsa的api学习之wav文件解析
WAV 文件是一种常见的无损音频文件格式,它就像是一个装着音频数据的 “盒子”,这个 “盒子” 有特定的结构,规定了音频的各种信息,比如采样率、声道数、音频数据等。我们可以把 WAV 文件想象成一个多层的蛋糕,每一层都有不同的含义和作用。
2025-03-07 10:09:09
710
原创 lwip和tcp/ip区别
lwIP(Lightweight IP)和 TCP/IP 并不是同一级别的概念,lwIP 实际上是一个。,它定义了设备如何在网络上通信。lwIP(Lightweight IP)是。,专为资源受限的嵌入式系统设计,提供基本的。TCP/IP 是用于。
2025-02-18 10:14:41
1118
原创 mongoose和lwip有啥区别
它本身并不提供底层网络栈,而是依赖操作系统或底层 TCP/IP 协议栈(如 lwIP、Linux 的 socket API)进行网络通信。lwIP(Lightweight IP)是一个。,以在没有完整操作系统的情况下进行网络通信。,用于在嵌入式设备或其他系统上实现。组合,以确保低功耗和高性能。,用于嵌入式系统,提供完整的。Mongoose 是一个。,作为 HTTP 服务器。是的,Mongoose。
2025-02-18 09:54:45
750
原创 Yocto中编译时候新加一个用户
在yocto中使用PulseAudio服务时候,默认是root用户,该服务无法启动。因此需要新加一个普通用户。该命令用于创建用户的 ,带有特定选项和参数,通常用于添加服务用户(如 PulseAudio 的守护进程用户),以下是命令中各部分的解析::::::::::创建一个名为 的用户:用户组设置:不能登录:用途:执行命令后,可以通过以下方式验证用户是否成功创建:1.查看 文件: 输出类似: 2.查看用户所属组: 输出类似: 3.确保用户不能登录: 输出类似:
2024-12-27 13:12:51
563
原创 C++模版函数写在类内和内外的区别
当你在类的内部定义一个模板函数时,编译器会在编译过程中自动实例化该模板函数,针对你在代码中使用到的每一种类型实例化该模板。模板函数在类内部定义时会隐式实例化,而在类外部定义时需要显式实例化,原因与 C++ 编译过程和模板的实例化机制密切相关。如果模板函数在类外部定义(即在类外部的实现文件中),编译器无法像在类内部定义时那样自动实例化模板函数。模板函数在类外部定义时,需要显式实例化是因为编译器无法在类外部自动推导出类型,所以你需要显式告诉编译器哪些类型的实例化是必要的。类型的实例,并为这些类型自动生成。
2024-12-13 13:58:39
882
原创 使用QtCreator创建一个类的时候为什么总是加“explicit”
防止隐式转换:阻止在某些情况下编译器自动进行类型转换。确保构造函数调用的明确性:要求开发者显式地进行类型转换,避免意外的构造函数调用。提高代码的安全性和可维护性:减少了隐式转换可能导致的错误,使代码更加容易理解和调试。explicit防止构造函数被隐式调用,避免潜在的错误。它确保构造函数的调用是明确的、易于理解的。Qt 自动生成的类中加explicit是为了提高代码的安全性,避免不经意间发生隐式类型转换。
2024-12-10 19:41:00
870
原创 删除Yocto中build-x9hp_ms_a12_vemmc_ap2/tmp/work/aarch64-sdrv-linux/package后再编译出错问题
在yocto编译中,一般会添加自己的package并编译打包到yocto里去。这个包里的内容有时候需要添加或者删除。但是我删除了文件,在编译完成烧录到板子上,里面还有自己删除的文件,于是就在yocto搜索哪个目录有该文件,然后就把它删除了。这样就导致我编译的时候出了下面问题,有时候也可能是其他问题。
2024-12-09 19:17:38
220
原创 Yocto标准的meta-openembedded 目录结构说明
是 Yocto 项目的一个重要层(layer),它提供了大量通用的配方(recipes)和工具,用于扩展和增强 Yocto 的功能。这个层包含许多常见的开源软件包,是 Yocto 项目社区的重要组成部分。
2024-12-07 11:22:53
640
原创 Yocto中增加一个自己的应用
最近做车载项目仪表的开发,仪表应用都开发个差不多了。但是仪表运行的linux系统却是不尽人意。之前做的项目都是基于buildroot构建的linux。已经习惯了这种方法。但是现在改用yocto,不得不硬着头皮研究下去。在本节中,主要讲解如何添加一个自己的应用,主要操作的目录是meta-semidrive。其它目录以后慢慢展开讲。 2.2)该目录结构在meta-semidrive下的结构2.3) bb文件编写内容2.4)conf文件的编写三、编译、烧录
2024-12-07 11:09:28
474
原创 yocto的xxx.bb文件在什么时候会拷贝文件到build目录
文件拷贝到build目录:主要发生在阶段,文件会被从构建目录(${WORKDIR})拷贝到目标目录(${D}),然后生成安装包。构建阶段和安装阶段的区别:构建阶段(如do_compile)主要是生成中间文件,而安装阶段(如do_install)是将这些生成的文件拷贝到模拟的目标文件系统目录(${D})中。在.bb文件中,do_install阶段是决定文件最终拷贝到哪里并打包的关键部分。
2024-12-06 13:58:36
1451
原创 GStreamer; Unable to play - “xxxx.wav“ Warning: “No decoder available for type ‘audio/x-wav‘.“
解决QMediaPlayer在开发版上不能播放声音问题
2024-12-04 16:21:11
397
原创 Linux终端使用echo输出带颜色字符串
是 ANSI 转义序列的开头,033 是八进制,表示转义字符 ESC(ASCII 值为 27)。0m 用于清除之前的颜色和样式,恢复到默认状态。echo 的参数,用于使反斜杠转义序列生效。这是 ANSI 转义序列的重置部分。是要输出的文本内容,显示为黄色。33 表示黄色(前景色)。用于开始颜色或样式设置。
2024-11-28 11:44:28
499
转载 关于QML仪表空间 CircularGauge的理解
最近做一个qt仪表,但是对于qml自带的仪表控件有点模式,于是在网上找到了一篇很好理解的文章,转载记录。
2022-08-19 11:27:51
1495
1
原创 Linux下搭建本地git服务器
作为一个程序员,有的时候开发项目可能并不需要立即提交到公司的git服务器或者是内部的预演项目。但是每天修改又担心不能回滚,因此用本地git是个不错的选择。文旨在介绍linux系统下如何创建一个本地的git服务器,这样便于开发者管理本地项目。
2022-06-01 20:15:51
1212
原创 Window下编译qtpdfium
系统环境:windows11Qt版本:Qt5.15.2源代码路径:下载下来后,直接用MSVC2019编译器的CMake环境编译,顺利通过。但是使用Mingw编译器编译的时候,却出现了一堆错误。错误就不截图了,现在已经把坑全部填平,懒得再返回去了。接下来直接贴出要修改的地方1.修改qpdf\CMakeLists.txt#在代码set(CMAKE_DEBUG_POSTFIX d)#后面,添加下面代码if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE
2022-04-23 10:12:55
2449
8
原创 linux之字符设备驱动
最近由于工作需要,因此回顾了下字符设备驱动。具体的内容我就不多说了,直接看这位博主写的:Linux设备驱动(二)—— 字符设备驱动(三)——自动创建设备节点_Thanos Yan的博客-优快云博客写的是相当详细。此处我主要介绍我使用的示例: app-write.c build.sh epoll_read.c Makefile memdev.c memdev.hmemdev.c memdev.h是我的驱动示例文件app-write.c 向字符设备驱动写一段十六进制
2022-04-06 16:59:23
279
原创 MateBook D MRC-W50 15.6更换指纹开机键
前言看到别的小朋友笔记本都有指纹开机按键,于是就像让自己的MateBookD也拥有指纹。因为去年买了一台MacBookPro13.3寸的顶配,因此就不打算再买一个windows本本。一、购买指纹开机按键为了给老笔记本升级指纹按键,于是在某宝上搜索了相关信息,没找到合适的。于是到某鱼上找,功夫不负有心人,终于让我找到了。如下图:二、更换今天早上兴高采烈的早早来到公司,打开我的工具箱,认认真真的把我的华为本本拆开。随着一幕幕映入眼帘的景象,让我内心越来越凉。拆到这里,..
2022-04-06 09:09:44
3913
原创 Ubuntu20.04基于QT5.15.2搭建android环境
一、之前搭建Qt for android环境步骤1.安装JDK然后再配置环境变量。2.安装SDK配置环境变量3.安装NDK配置环境变量二、现在搭建Qt for android环境1.安装JDK然后再配置环境变量。下载jdkJava Downloads | Oracle选择框线那个。解压到:/opt/jdk/jdk-18编辑bashrc文件vi ~/.bashrc设置内容如下:#set jdk environmentexport JAV..
2022-03-31 23:18:16
5726
原创 Ubuntu20安装以后要做的事
0.启动工作如果是华硕笔记本,那么需要看下是否是双显卡,我的笔记本是VM520U,打开BIOS可以看到一个是Intel集成显卡,一个是AMD的独立显卡,而BIOS中又没有设置切换显卡的地方,为此我还升级了BIOS,但是还是没有设置显卡的接口。如下图:这样也会导致你开机输入用户名和密码后直接紫屏或者是黑屏。原因是AMD的显卡无官方Linux驱动。解决方案如下:0.1)强制关机,然后到登录界面时按Ctrl+Alt+F2进入tty2,然后输入用户名和密码,修改下列文件:sudo vi /et
2022-03-30 14:52:23
2925
1
原创 华硕笔记本安装Ubuntu20.04
前言:由于工作原因,需要使用Ubuntu18以上的版本,因此我干脆一步到位,直接安装Ubuntu20.04,以下是我这两天的魔鬼经历,特此记录,给遇到同样问题的同学做个参考。一、安装前准备1.1). 更换笔记本机械硬盘为SSD。1.2). 制作U盘安装工具。此处我使用到的是rufus-3.18.exe和Ubuntu官网镜像。我已经打包放到百度网盘,需要的来取:链接:https://pan.baidu.com/s/1Bbyg4M5S_KHa6pn54ejYfQ提取码:xtls..
2022-03-29 18:13:48
7139
10
原创 QSettings清空内容
最近写项目使用到QSettings来保存配置文件,但是有时候打开文件发现里面内容错乱,为了保证文件里的内容正确,每次更新文件都会调用clear或者remove来清理内容。但是保存以后发现错乱的信息还在,于是想到了有可能执行sync才会同步到文件。因此试了以下。发现可以清空。具体写法如下:如果只调用QSettings::clear或者settings.remove,只是清空内存中的数据。真正的要把文件清空,写法如下:void clearIconIni(){ QSettings icon
2022-03-26 12:58:15
3316
原创 Qt使用wxsqlite为sqlite加/解密并制作sqlite3shell工具
在嵌入式上使用QT开发用户界面时候,少不了使用数据库。但是Qt自带的sqlite3数据库是没有加密的,因此当保存一些敏感信息的时候很容易暴漏个人隐私。网上查了很多资料,此处做下总结方便大家学习。1.加密方式分类1.1)使用SQLCipher加密。1.2)使用wxSqlite加密。2.使用wxSqlite加密步骤2.1)下载并解压文件下载地址:Releases · utelle/wxsqlite3 · GitHub此处我下载的是3-4.5.1,解压后如下:由于文件众..
2022-03-15 12:17:46
2662
2
原创 Qt调用SQLCipher实现数据库加密/解密
书接上回。(1条消息) Qt 使用Sqlite3数据库加密_ 刘一儿(嵌入式)-优快云博客_qt sqlite数据库加密加密后,如何在命令行进行解密呢?SQLCipher官网API:SQLCipher API - Zetetic经过查找发现使用 如下命令可以打开数据库:PS E:\QtPro\Qt5\sqlitecipher > .\sqlite3shell.exe .\student.dbSQLite version 3.8.2 2013-12-06 14:53:30E.
2022-03-14 13:41:19
2781
原创 windows下创建本地git仓库
有些时候自己新建的一些工程并不太愿意上传到git服务器,而又想做到可以版本回退,那么创建本地git仓库是很好的办法。1.在自己的项目目录,初始化本地仓库lsyai@Eleven MINGW64 /e/QtPro/test/test_local_git$ git initInitialized empty Git repository in E:/QtPro/test/test_local_git/.git/2.使用add命令,增加本地文件lsyai@Eleven MINGW64 /
2022-03-12 08:57:22
1872
原创 qml打印输出行号
在qml中我们调试打印信息使用console.log()方式去打印信息,但是在控制台上并不能显示该条信息具体打印的位置以及是哪个文件。如果我们项目的文件非常多,那么很难定位。那么使用Qt日志重定向功能很好的解决这个问题。1.在main.cpp中加入以下代码:#include <QFile>#include <QMutex>#include <QDateTime>QtMessageHandler gDefaultHandler = NULL;void m
2022-03-11 10:02:01
1586
原创 创建QML单例在项目中使用
一、创建QML单例的几种方式在我们开发项目时,一般都会单独写一个文件作为全局的配置文件。而这个文件一般都是全局只能有一个对象。因此在QML文件中,也提供了创建单例的方法。1.纯QML文件创建单例模式1.1假设有配置文件名为:Config.qml,内容如下:pragma Singleton //qml开头必须要有这一句import QtQuick 2.9QtObject { id: config objectName: "config" property
2022-03-08 20:33:57
1278
原创 qml插件自动生成描述文件(plugin.qmltypes)
1.什么是qmltypes文件?答:qmltypes是qml插件的解释文件,用于QtCreator语法高亮。可通过Qt提供的工 具qmlplugindump自动生成。2.在windows下编译qml插件时候,如何自动生成该文件?2.1 设置qmlplugindump工具在windows中的环境变量。1.找到qmlplugindump安装路径2.加入环境变量3.启动dos窗口,输入命令qmlplugindump验证:2.2 写生成脚本cr...
2022-03-05 21:08:09
2004
1
原创 在IMX6上使用hdmi显示qt应用
首先将迅为-IMX6开发板分别连接9.7寸屏和HDMI显示器然后使用MfgTool工具烧写QT系统然后拨码开关设置成从emmc启动在uboot命令行下设置开发板为9.7寸屏显示(这样也会同时设置HDMI)设置完,保存配置,如下图:然后设置启动QT系统,并保存设置,如下图:然后开发板重新启动,可以看到默认9.7寸屏显示qt的触摸校准程序了,点击屏幕校准,最后会在9.7寸屏上运行QT的demo程序。HDMI显示通道默认是关闭的,在串口命令行下输入命令“echo 0 >..
2022-01-13 18:24:58
1266
linux之字符设备驱动学习示例
2022-04-06
logcat移植到linux4.19内核上
2022-01-10
嵌入式linux-4.19内核支持的logcat驱动文件
2022-01-08
win7_debuger_32_64
2021-07-29
GComboBox.rar
2020-05-31
chapter_two.rar
2020-04-03
screenShort.tar.gz
2020-03-05
arm下移植linphone
2018-07-05
基于qt4的温度计
2017-07-31
qt获取按键双击、多击事件
2016-01-25
Linux图书管理系统
2011-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人