自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

热土程序园,利他愉己~

AI应用于程序开发以提高效率,在路上...

  • 博客(383)
  • 收藏
  • 关注

原创 C语言中生成随机数的几种方式

C语言中生成随机数的几种方式1.rand介绍C语言提供了一个函数叫rand,这函数是可以生成随机数的,函数原型如下所示:int rand (void);2.srand介绍C语言中还提供了一个函数叫srand用来初始化随机数的生成器的,srand的原型如下:void srand (unsigned int seed);3.time函数介绍在C语言中有一个函数叫time,就可以获得这个时间,time函数原型如下:time_t time (time_t* timer);

2024-04-12 20:42:17 13277

原创 QT中Qwt、QChart、QCustomPlot使用与性能对比

QT中对比Qwt、QChart、QCustomPlot三个绘图库,qcustomplot在绘制大量点的二维曲线上性能优势明显,通过qcustomplot程序合理使用(包括开启硬件加速)及针对项目需求的优化,在实际项目应用中应用qcustomplot做到实时刷新曲线一千万点是没有问题的,甚至设计合理还能做到更高。关键词:QT5绘图,QT6绘图,qcustomplot,qchart,QT绘图性能,qcustomplot绘图性能测试,qchart绘图性能测试;

2023-12-06 14:52:02 8017 8

原创 嵌入式下快速傅里叶变换(FFT)C语言库kissfft

本文介绍了两种常用的FFT库:FFTW和KissFFT。FFTW是高性能计算库,支持多平台和语言集成。重点介绍的KissFFT是一个轻量级库,具有500行简洁代码、无外部依赖的特点,支持浮点和定点运算,特别适合嵌入式系统。文章详细说明了两种输入模式(浮点和定点数)的配置方法,并提供了1024点浮点FFT和512点Q15定点FFT的代码示例。最后比较了两种模式的特点:浮点模式精度高,适合科学计算;定点模式速度快、功耗低,适合实时系统。文中还给出了根据需求选择合适模式的具体建议。

2025-07-16 20:10:45 1194

原创 TreeSize Free - windows下硬盘空间管理工具

TreeSize Free - windows下硬盘空间管理工具TreeSize Free 是一款免费且广受欢迎的磁盘空间分析工具(由 JAM Software 开发),主要用于 Windows 系统。它的核心功能是帮助你快速、清晰地了解硬盘、文件夹或存储设备上的空间究竟被哪些文件和文件夹占用了。它以直观的树状结构、多种视图(尤其是 Treemap)和强大的排序功能,帮助你快速定位磁盘空间消耗大户,是进行磁盘清理、存储管理和解决空间不足问题的必备工具之一。

2025-07-14 20:13:08 892

原创 浮点数的乘法与除法运算耗时对比

浮点数运算中,除法比乘法显著更慢,主要由于硬件实现的差异:乘法采用并行结构,而除法依赖迭代算法。实测显示42亿次除法耗时约3.7秒,是乘法(1.9秒)的2倍。优化方案包括:1)预先计算倒数转换为乘法运算;2)使用牛顿迭代法提高倒数精度;3)利用FMA指令加速。这些方法适用于分母恒定的场景,可有效提升运算效率,但需权衡精度损失。

2025-07-13 19:12:45 414

原创 C语言变量初始化为0或者空注意点

嵌入式程序中变量初始化的常用方法:数值变量初始化为0,字符变量设为'\0';字符串建议用memset按字节填充0;指针应初始化为NULL,动态内存使用后及时置空;结构体推荐memset初始化,注意数组长度处理。重点强调memset是按字节填充的特性,需正确理解其使用场景。

2025-07-13 19:10:21 690

原创 嵌入式项目太多全局变量的弊端与规避

全局变量的过度使用会带来诸多弊端,包括代码可读性差、维护困难、可移植性差、内存管理问题、潜在bug增加、破坏模块化设计、调试难度大等。规避方法包括:使用静态局部变量替代、通过指针/引用访问、优化函数参数传递、妥善处理共享数据、封装模块化设计、定期代码优化及团队代码审查。合理控制全局变量使用能显著提升代码质量。(148字)

2025-07-12 18:36:25 809

原创 sscanf函数使用详解

sscanf函数使用详解1.函数原型与基本概念int sscanf(const char *str, const char *format, ...);核心功能:从字符串中读取格式化输入(String Scan Formatted)参数说明:str:源字符串(从中读取数据)format:格式控制字符串...:接收数据的变量地址列表

2025-07-12 18:34:19 861

原创 strchr 与 strstr 函数详解

strchr 与 strstr 函数详解一.strchr - 字符查找函数1.函数原型char *strchr(const char *str, int c);2.核心功能在字符串中查找特定字符的第一次出现位置3.参数说明参数 类型     说明str    const char* 要搜索的字符串c      int         要查找的字符(自动转换为char)

2025-07-11 19:56:31 979

原创 strtol 与 strtod 函数详解

strtol 与 strtod 函数详解一.strtol - 字符串转长整型1. 函数原型long int strtol(const char *str, char **endptr, int base);2. 核心功能将字符串转换为长整型数值,支持多种进制转换3. 参数说明参数   类型        说明str     const char*  要转换的字符串endptr char**      存储转换结束位置的指针地址(可为NULL)

2025-07-11 19:53:31 772

原创 QTextCodec的功能及其在Qt5及Qt6中的演变

QTextCodec的功能及其在Qt5及Qt6中的演变TextCodec 是Qt5中处理文本编码的核心类,主要功能包括:编码/解码:在字节序列(QByteArray)和Unicode字符串(QString)之间转换,支持如GBK、Shift-JIS、CP1252等传统编码。QT6中已经移除QTextCodec。

2025-07-10 19:44:05 1292

原创 Qt中处理多个同类型对象共享槽函数应用

Qt中处理多个同类型对象共享槽函数应用Qt中处理多个同类型对象共享槽函数应用场景数字键盘按钮处理动态生成的控件管理工具栏按钮响应游戏中的网格点击处理使用时需特别注意对象生命周期管理和类型安全,现代Qt开发中更推荐使用Lambda表达式替代sender()机制。

2025-07-10 19:40:51 1072

原创 Qt6中模态与非模态对话框区别

Qt6中模态与非模态对话框区别1.模态对话框阻塞父窗口:打开后,用户必须先处理该对话框(关闭或完成操作),才能继续操作父窗口。应用场景:强制用户立即响应的场景,如确认对话框、登录窗口、文件选择器等2.非模态对话框不阻塞父窗口:打开后,用户可同时与对话框和父窗口交互。应用场景:需要长时间操作的工具窗口(如调色板、属性编辑器)或提示信息(如通知气泡)。

2025-07-09 20:22:11 965

原创 跨平台C++开发中编译器与平台差异解析

跨平台C++开发中编译器与平台差异解析在C++的世界中,编译器和平台的差异对开发者来说既是挑战也是机遇。了解这些差异对于编写高效、可移植的代码至关重要。本文将深入探讨C++编译器的特性、不同平台的影响以及如何在这样的环境下开发软件。

2025-07-09 20:19:52 748

原创 跨平台软件构建方法及工具介绍

场景:Java/Kotlin 项目(Android 官方构建工具)、混合语言项目(如 C++ 通过插件)。场景:C/C++/Rust 项目追求构建速度(如 GNOME)、替代 CMake 的轻量方案。场景:超大型多语言项目(如 TensorFlow)、微服务架构、要求构建可重现性的场景。场景:中大型 C/C++ 项目(如 Qt、VLC)、跨平台库开发(如 OpenCV)。场景:现代框架项目(Vue/React)、追求开发体验的高速迭代场景。场景:Java 后端服务(Buck)、数据工程管道(Pants)。

2025-07-08 20:31:40 702

原创 跨平台软件开发的意义

跨平台软件开发的意义1.降低开发与维护成本2.扩大用户覆盖范围3.加速产品迭代4.生态融合与未来扩展

2025-07-08 20:30:10 284

原创 POCO 和Boost Libraries区别

POCO 和Boost Libraries区别POCO:适合需要快速构建跨平台网络服务或嵌入式应用,避免重复造轮子。Boost:适合底层开发、需要极致性能控制或长期兼容 C++ 标准的场景。混合使用:常见实践是用 Boost 补充 POCO 的底层功能(如 Asio 替换 POCO Net)。

2025-07-07 15:26:04 40

原创 Poco C++库之跨平台网络编程的应用

Poco C++库之跨平台网络编程的应用Poco(The Portable Components) 是一套现代 C++ 的跨平台开发库,广泛应用于嵌入式系统、服务端程序、工业控制和 AI 后端服务等领域。其设计理念类似于 Java 的标准库,为 C++ 提供“标准的非标准功能”。

2025-07-07 15:24:06 192

原创 QT6实现软键盘的两种方法

QT6实现软键盘的两种方法在触摸屏设备上,软键盘是替代物理键盘的重要输入方式。一般简单的功能需要数字小键盘,复杂的需要全键盘。二.QT6实现数字小键盘三.调用windows的自带软键盘osk.exe

2025-06-26 20:12:46 1141

原创 CSMatIO库的安装与C#实现.mat文件生成

CSMatIO库的安装与C#实现.mat文件生成CSMatIO 是一个用于读写 MATLAB .mat 文件的开源 C# 库,它提供了简单而高效的 API,使 .NET 应用程序能够与 MATLAB 进行数据交换,支持读取和写入 MATLAB 的 .mat 文件(版本 5 和 7.3),兼容 MATLAB 数据类型:矩阵、结构体、单元数组、字符数组等,不依赖 MATLAB Runtime,适合独立应用程序。

2025-06-25 20:17:58 931

原创 Windows10中设置多个虚拟IP方法

Windows10中添加多个虚拟IP方法介绍在 Windows 10 中,使用 netsh 命令为现有物理网卡或虚拟网卡添加额外的 IP 地址(IP Alias)是最直接的方法。这些 IP 地址与主 IP 在同一网段,共享同一张网卡的 MAC 地址。netsh interface ipv4 add address name="以太网" address=192.168.1.107 mask=255.255.255.0

2025-06-25 20:13:36 603

原创 GLib库介绍与linux下应用

GLib库介绍与linux下应用GLib 是一个由 GNOME 项目组开发的高性能、跨平台 C 语言工具库,最初为 GTK 图形界面框架提供底层支持,后发展为独立的通用库。它通过封装常用数据结构和系统功能,显著提升了 C 语言开发的效率和可移植性。

2025-06-24 20:39:25 733

原创 Meson介绍及编译Glib库

Meson介绍及编译Glib库Meson(The Meson Build System)是个项目构建系统,类似的构建系统有 Makefile、CMake、automake …。 Meson 是一个由 Python 实现的开源项目,其思想是,开发人员花费在构建调试上的每一秒都是浪费,同样等待构建过程直到真正开始编译都是不值得的。

2025-06-24 20:37:20 792

原创 QT6中控件QScrollArea

QT6中控件QScrollAreaQScrollArea 是 Qt 中用于创建可滚动区域的容器控件,当内容超出可视区域时,会自动显示滚动条。在 QT6 中,它保持了与之前版本相似的接口,但进行了内部优化。

2025-06-23 20:49:15 645

原创 QT6工程各种路径详解

QT6工程各种路径详解一.当前工作目录1.获取方法: #include <QDir> qDebug() << "当前工作目录:" << QDir::currentPath();

2025-06-23 20:46:34 508

原创 ABI与API定义及区别

ABI与API定义及区别ABI(Application Binary Interface,应用二进制接口)和 API(Application Programming Interface,应用程序接口)是软件工程中两个核心概念,本质区别在于作用层级与交互对象。

2025-06-19 21:58:20 960

原创 QT6与VS下实现没有CMD窗口的C++控制台程序

QT6与VS下实现没有CMD窗口的C++控制台程序普通的控制台程序都会有一个CMD的黑色框,有时候需要在程序中调用一个exe程序,不想CMD窗口出现,本文讲述多种设置方法

2025-06-19 21:56:10 836

原创 freeRTOS之队列(queue)

freeRTOS之队列(queue)队列(queue)可以用于"任务到任务"、“任务到中断”、"中断到任务"直接传输信息。核心功能:线程安全:自动处理多任务访问时的互斥问题。数据复制:入队时复制数据(而非引用),避免内存共享风险。阻塞机制:当队列满 / 空时,任务可选择阻塞等待。优先级支持:高优先级任务优先获取队列资源。

2025-06-18 20:31:15 886

原创 C语言函数返回值类型与应用

C语言函数返回值类型与应用

2025-06-18 20:27:51 812

原创 C++中std命名空间介绍与使用

C++中std命名空间介绍与使用命名空间(Namespace)的基本概念命名空间是 C++ 中用于组织代码的一种机制,可避免不同库或模块之间的命名冲突。例如:若两个库都定义了名为 sort 的函数,直接调用会引发冲突。使用命名空间可区分:lib1::sort() 和 lib2::sort()。

2025-06-17 20:58:26 537

原创 C语言中errno错误码定义及使用

C语言中errno错误码定义及使用在 C 语言中,errno是一个用于标识程序运行时错误的全局变量。当系统调用或库函数执行失败时,通常会设置errno以指示具体的错误类型。

2025-06-17 20:55:11 932

原创 C语言编译优化实战与技巧

C语言编译优化实战与技巧C语言编译优化是提升程序性能的核心手段,涉及从源代码到机器码的多层次转换,下面从优化级别、常用技术、内存管理、指令调度等多个维度详细介绍。

2025-06-16 20:57:30 720

原创 C语言环形缓冲区的设计与应用

C语言环形缓冲区的设计与应用在嵌入式系统中,环形缓冲区(Ring Buffer) 是处理数据流的核心数据结构,尤其适用于异步通信、实时数据流处理及资源受限场景。其价值在于以极低的内存开销实现高效、安全的数据传递,避免资源竞争与数据丢失。

2025-06-16 20:53:53 893

原创 单元测试与QTestLib框架使用

单元测试与QTestLib框架使用在软件开发中,单元测试是指对软件中最小可测试单元(通常是函数、类的方法)进行隔离的、可重复的验证。

2025-06-06 20:29:45 1473 1

原创 AI之MCP协议介绍

AI之MCP协议介绍MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司(Claude大模型的母公司)于2024年11月25日发布的一种开放通信标准协议,旨在解决目前AI大模型因为数据孤岛限制而无法充分发挥潜力的问题,统一大模型语言(LLM)与外界数据源和工具之间的通信协议,它就像 USB-C 接口一样,提供了一种标准化的方法,将 AI 模型连接到各种数据源和工具,为 AI 应用提供了连接万物的接口。

2025-06-05 20:20:43 104

原创 C及C++编译链接过程详解

C及C++编译链接过程详解C/C++程序的构建是一个多阶段的过程,从源代码到最终可执行文件需要经历预处理、编译、汇编和链接四个主要阶段。完整构建过程(GCC)(1)预处理gcc -E main.c -o main.i(2)编译gcc -S main.i -o main.s(3)汇编as main.s -o main.o(4)链接ld main.o -o app -lc

2025-06-05 20:13:48 932

原创 VS下C++及C#项目打包发布方法

VS下C++及C#项目打包发布方法一.打包为单一exe文件1.打开项目属性页(右键项目 → 属性)2.选择配置(如 Release)3.项目属性→ C/C++ → 代码生成→ 运行库 将 运行时库(Runtime Library) 设置为: /MT(Release 模式) /MTd(Debug 模式)注意:不要选择 /MD 或 /MDd,否则会动态链接运行时库。

2025-06-03 21:12:37 1400

原创 VS2022下C++ Boost库安装与使用使用

VS2022下C++ Boost库安装与使用使用Boost 是一个广泛使用的 C++ 库集合,提供了许多高质量、可移植、高效的工具和组件,被视为 C++ 标准库的延伸。自 1998 年成立以来,Boost 已成为 C++ 社区的核心资源,许多 Boost 库通过实践验证后被纳入 C++ 标准(如智能指针、正则表达式、多线程),因此被称为 “C++ 的未来实验室”。2.跨平台兼容:支持 Windows、Linux、macOS 等主流操作系统,以及 GCC、Clang、MSVC 等编译器。

2025-06-03 21:10:46 1125

原创 matIo库及.mat数据格式介绍

matIo库及.mat数据格式介绍.mat 是 MATLAB 软件的标准二进制数据存储格式,用于保存变量、矩阵、数组、结构体等数据类型。其名称源于 “MATLAB Data” 的缩写,最初设计为高效存储和加载 MATLAB 环境中的数据,后来逐渐成为科学计算、工程分析等领域的通用数据格式之一。

2025-05-22 20:31:55 918

原创 MIPI摄像头linux驱动开发步骤及说明

MIPI摄像头linux驱动开发步骤及说明本文是 MIPI(Mobile Industry Processor Interface)摄像头驱动开发 的详细步骤及技术说明,基于 Linux 内核(V4L2 音视频框架) 和嵌入式系统开发场景,涵盖硬件初始化、协议处理、驱动实现及调试全流程。

2025-05-22 20:30:01 2033

QT6采用QCustomPlot库绘制曲线

采用QCustomPlot库,qt6实现如下功能代码:画一条曲线,点数为10000点(点数变量可设置),0.2秒刷新一次,每次刷新数据会变化,直接可用

2025-07-18

qt6中用qchart实现柱状图

qt6中用qchart实现柱状图

2025-07-10

qt6 qtchart实现多通道曲线功能

qt6 qtchart实现多通道曲线功能

2025-07-10

QT6.6实现usb摄像头接入与图像拍功能

QT6.6实现usb摄像头接入与图像拍功能

2025-05-09

QT6.8实现:WebSocket的客户端与服务端demo程序

qt6.8环境下开发实现:WebSocket的客户端与服务端demo程序

2025-05-08

QWT6.30画曲线工程-QT6.8 的MSVC工程

QWT6.30画曲线工程,内有动态库和lib库,QT6.8 的MSVC工程,下载直接可用

2025-03-31

QT实现升级进度条页面

在Qt中实现固件升级的进度条显示窗口,你可以通过创建一个自定义的对话框(Dialog)来完成。这个对话框可以包含一个进度条(QProgressBar)、一些文本标签(QLabel)用于显示状态信息,以及可能的按钮(如取消按钮)来允许用户中断升级过程。

2024-09-22

keil下自定义lib静态库工程

keil下自定义lib静态库的使用具有以下优点: 1.封装源代码,对外不开放,提高保密性。 2.将标准功能函数封装成库,提高代码的复用性。 3.使用库开发,简化开发流程,提高开发效率。 4.系统调用库函数,提高执行效率。 工程下载直接可用。

2024-06-22

Qt中接收麦克风数据并保存为WAV文件

实现在Qt中接收麦克风数据并保存为WAV文件,使用QAudioInput来录音,并使用QFile来保存数据到WAV文件。 开发环境:QT5.12 本文用极简代码实现,核心代码只需不到100行。

2024-06-04

QT6实现usb摄像头的显示与抓拍功能

QT6实现usb摄像头的显示与抓拍功能,完整工程,下载直接可用 对应博文:https://blog.csdn.net/xieliru/article/details/135880424

2024-01-07

zoomlinechart.zip

android上可以实现多点触摸放大、缩小及移动qchart图形

2024-04-12

QT6实现音频输出功能

其功能为本地产生一些声音数据,然后输出到扬声器或者耳机。 可以应用在通过网络接收的声音数据,然后输出到音频播放设备; 代码为纯qt实现,可以应用在windows、linux和android上,无需修改。

2024-03-29

QFtp实现的ftp客户端实例工程

QFtp实现的ftp客户端实例工程,直接编译可用,qt5.12环境开发

2024-03-04

QT-modbus.zip

QT_modbus.zip 为QT实现的串口和网络连接的modbus通信功能的完整代码,编译环境为QT5.12,下载直接编译可用。

2024-02-19

QPainter绘制图形代码示例.zip

QPainter绘制图形代码工程中是在QT5.12中绘制各种图形的代码示例,包括线、矩形、圆形,扇形,渐变色及各种特征设置;并详细讲述了QPainter,QPen,QFont,QBrush及QPrinter的用法,各种渐变色属性的设置,下载后即可直接使用。

2024-02-19

QT5.12实现多线程代码示例

QT5.12实现多线程示例,逻辑功能如下: 点击Start A按钮开始打印字符“A”,同时按钮显示Stop A;点击Start B按钮开始打印字符“B”,同时按钮显示Stop B; 点击Stop A按钮停止字符“A”打印,点击Stop B按钮停止字符“B”打印,点击Quit按钮退出Tread窗体。 完整工程代码,可直接编译使用。

2024-02-18

QT中动态库制作及调用

QT中动态库制作及调用工程实例,下载直接可用; 对应本博客博文:QT中自己实现DLL及调用 链接:https://blog.csdn.net/xieliru/article/details/135581244?spm=1001.2014.3001.5502

2024-01-14

QT通过QPdfWriter类实现pdf文件生成与输出完整工程示例

QPdfWrite是一个用于创建PDF文件的类,它是Qt库的一部分。它提供了一些方法和功能,使您能够创建和写入PDF文件。 工程代码对应博客文章:https://mp.csdn.net/mp_blog/creation/editor/135565616 完整工程代码,下载后可以直接编译使用 包含设置pdf文件title,日期,页码,排版功能

2024-01-13

新榜2023内容产业年度报告

【新榜】2023内容产业年度报告:2023年度微信公众号、抖音,视频号,小红书等平台的深度分析报告; 趋势分析,数据分析

2024-01-05

Qwt库画Spectrogram频谱图工程代码

Qwt库画Spectrogram频谱图工程代码,对应博客文章:https://blog.csdn.net/xieliru/article/details/135326713?spm=1001.2014.3001.5501

2024-01-01

QT中 QEvent事件应用完整工程

本工程实现了QT中event事件基本用法,提供完整项目实例代码,下载即可使用

2023-12-30

FTP client 软件

三款ftp client软件,其中一款为小巧、功能齐全的免安装版本,非常好用~

2023-12-07

USB通讯程序开发调试工具

资源内一共三款USB通讯程序开发调试必备工具: 1.USB Monitor Pro 允许监控 USB 流量,检测 USB 设备软件,硬件和驱动程序开发过程中的错误和问题。 2.USB Device Tree Viewer 在微软USB viewer的基础上开发的USB设备信息的神器。可以方便的查看当前电脑连接了哪些usb设备,同时能够列出设备的详细信息; 3.Zadig 是一个免费的USB驱动程序安装器,可以为您解决USB驱动程序相关的问题; 工具具体功能及使用介绍见本博客USB专栏文章, USB调试工具与资料介绍:https://blog.csdn.net/xieliru/article/details/132985864?spm=1001.2014.3001.5502

2023-12-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除