自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_45463480的博客

精心创作,共同进步。

  • 博客(971)
  • 资源 (26)
  • 问答 (1)
  • 收藏
  • 关注

原创 Git误操作急救手册大纲

Git误操作急救手册摘要 针对代码管理中的常见Git误操作,本手册提供分类急救方案:提交错误(敏感信息/漏文件)、分支误删/合并混乱、回退失误及远程仓库覆盖等场景。核心急救工具包括git reflog追踪历史、reset/revert回退提交、filter-repo清理敏感数据,以及fsck修复仓库。强调预防措施:频繁推送备份、启用分支保护、高危命令简化。附命令速查表及工具推荐,助开发者快速恢复代码并规避风险。(149字)

2026-03-22 20:36:33 49

原创 Qt C++ Modbus实现,可直接用于项目,测试通过

本文档介绍了使用Modbus Slave工具测试QtModbus应用程序的方法。主要内容包括: 准备工作:安装Modbus Slave模拟器和QtModbus程序 TCP模式测试: 配置从站TCP连接参数 设置寄存器数据和从站ID 测试读取保持寄存器、输入寄存器、线圈等功能 测试写入单个/多个寄存器和线圈操作 RTU模式测试: 创建虚拟串口对 配置串口连接参数 注意事项:Qt 5.8-5.12版本存在Bug,本项目已实现自动保护机制 测试步骤详细说明了参数配置和预期结果,帮助用户验证QtModbus功能。

2026-03-22 20:31:43 209 2

原创 C++并发编程新纪元:线程库、异步操作与泛型Lambda深度解析

C++11/14并发编程核心特性摘要 C++11/14标准引入了三大关键并发编程特性:标准线程库、异步操作机制和泛型lambda表达式。标准线程库(<thread>)提供了跨平台线程管理方案,通过std::thread类创建线程,this_thread命名空间管理当前线程,以及互斥锁实现线程同步。异步操作机制(<future>)通过std::async、std::future和std::promise简化异步任务执行,支持延迟或立即执行策略。泛型lambda(C++14)则允许编写类

2026-03-22 20:07:21 400

原创 C++11三大核心特性深度解析:类型特征、时间库与原子操作

C++11三大核心特性解析:类型特征、时间库与原子操作 摘要:C++11标准引入的三大核心特性为现代C++开发提供了强大支持。类型特征(<type_traits>)实现了编译时的类型查询与转换,增强了模板元编程的安全性和灵活性;时间库(<chrono>)提供了类型安全、高精度的时间处理机制,替代了传统的C时间函数;原子操作(<atomic>)则为并发编程提供了线程安全的原子变量操作。这些特性分别解决了泛型编程的类型安全、时间处理的精确性和多线程编程的线程安全等关键问题,成

2026-03-22 19:48:28 349

原创 C++11 新特性 正则表达式、随机数库、元组

本文介绍了C++11引入的三个重要特性:正则表达式、随机数库和元组。正则表达式库提供了强大的文本处理能力,支持多种语法规则和核心功能;随机数库通过引擎与分布分离的设计,解决了传统rand()的缺陷,支持多种概率分布;元组则实现了类型安全的异构数据集合,简化了多值返回和临时数据聚合。每个特性都配有实用代码示例,展示了其在数据验证、随机数生成和多值返回等场景的应用。这些特性显著提升了C++在文本处理、科学计算和泛型编程方面的能力。

2026-03-14 14:03:10 469 2

原创 Day 2:信号槽连接方式对比 - 实战练习题

通过对比Qt4和Qt5的不同连接语法,深入理解信号槽的类型安全机制,掌握Lambda表达式作为槽函数的应用场景。通过修改连接类型,观察信号槽在不同情况下的执行差异。:Day 3将学习跨线程通信的深入应用,包括。:信号发射后,Lambda函数没有执行。:程序在跨线程信号槽通信时崩溃。

2026-03-12 21:09:45 50 2

原创 Day 2:连接方式对比 - 核心知识图解

本文系统对比了Qt信号槽连接方式的演进过程,从Qt4的字符串宏方式到Qt5的函数指针方式,再到Lambda表达式支持。重点分析了三种连接方式的差异:Qt4采用运行时检查(易出错),Qt5引入编译时类型安全(高效可靠),Lambda支持捕获上下文(灵活便捷)。文章通过架构图、语法对比图和错误处理表详细展示了不同连接方式的工作原理、执行时序和适用场景,并提供了从Qt4迁移到Qt5的转换流程、Lambda编写指南以及连接失败诊断方法。最后强调学习优先级:Qt5语法和跨线程通信是核心,Lambda和线程安全是重点,

2026-03-12 20:40:32 147

原创 fmtlog:轻量级高性能C++日志库指南

fmtlog是一款轻量级高性能的C++日志库,具有极低延迟(8-10纳秒)和header-only设计等特性。该库集成简单,只需包含头文件即可使用,支持日志回调、频率限制等功能,适合对性能要求高的场景。虽然功能相对较少,但其优异的性能和易用性使其成为小型项目、快速原型开发的理想选择。与其他主流日志库相比,fmtlog在延迟和集成难度方面表现突出,特别适合资源受限环境下的应用开发。

2026-03-12 20:09:02 257

原创 boost::log:功能丰富的C++日志库指南

Boost.Log:功能强大的C++日志库指南 Boost.Log是Boost库中的高性能日志组件,提供高度可定制的日志系统。核心特性包括自定义日志级别、强大过滤功能、多种输出目标和线程安全支持。适用于需要复杂日志功能的企业级应用,特别是已使用Boost的项目。 优势在于功能丰富、可扩展性强,但学习曲线较陡且依赖整个Boost库。相比spdlog等轻量级方案,Boost.Log更适合需要高度定制化的场景。安装简单,通过包管理器或源码编译即可集成。文档全面,提供从基础到高级的丰富示例。 推荐在大型、长期维护的

2026-03-12 19:45:08 200

原创 glog(Google Log):企业级C++日志库指南

摘要: glog是Google开发的C++企业级日志库,提供多级别日志记录(INFO/WARNING/ERROR/FATAL)、条件日志、频率控制等高级功能。主要优势包括企业级可靠性、简单API和自动文件管理,但在Windows支持、扩展性方面存在局限。适用于大型C++项目和企业级系统,特别适合对稳定性要求高的生产环境。安装可通过包管理器或源码编译,CMake集成简便。相比spdlog/log4cpp,glog在稳定性和功能完备性上表现突出,但灵活性稍逊。项目地址:https://github.com/go

2026-03-09 21:41:53 51 2

原创 spdlog:超高性能「轻量又彪悍」的C++日志库

📝 摘要:spdlog是一款高性能C++11日志库,专为嵌入式系统优化设计。主要特点包括: 🚀 超高性能(同步500w/s,异步更高) 📁 支持文件轮转/自动切割 🔄 提供同步/异步模式 🎨 彩色控制台输出 🔧 极简API(几行代码即可使用) 📱 嵌入式友好(低内存占用,支持自定义Sink) 相比原生printf,spdlog具有线程安全、动态日志级别调整等优势,特别适合资源受限的嵌入式开发场景。虽然需要C++11支持,但其轻量级设计和丰富功能使其成为现代C++项目的理想日志解决方案。 🔗

2026-03-08 14:09:05 41 2

原创 C++11 三大核心特性深度解析变长模板、模板别名与智能指针

海康威视面试题解析摘要: 自我介绍模板:提供实习生和有工作经验者两种版本,强调技术栈和项目经验。 C++虚函数机制: 实现多态和动态绑定 通过虚函数表(vtable)和虚函数指针(vptr)实现 包含内存布局图示和调用流程说明 Qt多线程实现: 三种方式:继承QThread、moveToThread、QtConcurrent 对比表格展示各自适用场景和优缺点 提供完整代码示例 线程同步机制: 互斥锁(QMutex)基础用法和RAII方式 读写锁(QReadWriteLock)的读写分离特性 条件变量(QWa

2026-03-05 21:50:35 411

原创 Qt 历险记 面试总结经验

海康威视面试题解析摘要: 自我介绍模板:提供实习生和有工作经验者两种版本,强调技术栈和项目经验。 C++虚函数机制: 实现多态和动态绑定 通过虚函数表(vtable)和虚函数指针(vptr)实现 包含内存布局图示和调用流程说明 Qt多线程实现: 三种方式:继承QThread、moveToThread、QtConcurrent 对比表格展示各自适用场景和优缺点 提供完整代码示例 线程同步机制: 互斥锁(QMutex)基础用法和RAII方式 读写锁(QReadWriteLock)的读写分离特性 条件变量(QWa

2026-03-04 21:24:59 190

原创 # C++11 三大核心特性深度解析 变长模板、模板别名与智能指针

C++11三大核心特性深度解析:变长模板、模板别名与智能指针彻底改变了现代C++编程范式。变长模板通过参数包实现任意数量参数的模板编程,配合递归展开和C++17折叠表达式,极大提升了代码灵活性;模板别名使用using语法简化复杂类型定义,增强了类型系统的可读性和可维护性;智能指针则通过自动内存管理解决了资源泄漏问题。这三个特性分别从模板编程、类型系统和内存管理三个维度,使C++代码更安全、优雅和高效,成为现代C++开发的基石。

2026-03-04 20:25:15 394

原创 C++11 三大特性深度解析 static_assert、委托构造函数、override/final

C++11引入了三大关键特性:static_assert编译时断言、委托构造函数和override/final虚函数控制。static_assert在编译阶段验证条件,确保类型安全和约束满足;委托构造函数通过构造函数间调用实现代码复用,遵循DRY原则;override明确虚函数重写,防止签名错误,final禁止进一步重写或继承。这些特性分别从编译检查、代码复用和面向对象设计三个维度提升了C++程序的健壮性和可维护性。

2026-03-04 20:23:35 443 3

原创 C++11 新特性 auto 类型推导 范围 for 循环 lambda 表达式(灰常详细带例子)

C++11核心特性摘要 C++11引入了三大革命性特性: auto类型推导 - 自动推断变量类型,简化代码,提高可读性。支持基本类型、容器、函数返回值和复杂类型推导,但需注意const和初始化列表的陷阱。 范围for循环 - 提供简洁的容器遍历语法,支持vector、list、map等各种容器,可与引用、const修饰符结合,避免不必要的拷贝开销。 lambda表达式 - 匿名函数支持就地定义,灵活捕获外部变量(值捕获/引用捕获),语法简洁:capture->ret{body},与STL算法完美配合。

2026-03-01 16:46:26 403

原创 C++新特性11/14/17/20/23/26学习计划安排

摘要:本文系统梳理了C++11至C++26各版本的核心特性。C++11引入auto、lambda、移动语义等25项特性;C++14增加泛型lambda、二进制字面量等10项改进;C++17推出结构化绑定、并行算法等20项新特性;C++20带来概念、协程、模块等15项重大更新;C++23新增多维下标运算符等8项特性;C++26预计将支持契约、SIMD等5项功能。这些版本迭代持续增强C++在类型系统、并发编程、编译期计算等方面的能力,推动现代C++发展。

2026-03-01 13:54:54 751 3

原创 Qt Creator 15.0.1 调试指南|代码分析指南

QtCreator提供全面的调试工具链,支持本地/远程调试、QML性能分析和静态检查。核心功能包括:1️⃣自动/手动调试器配置;2️⃣远程调试支持;3️⃣QML调试与性能分析工具;4️⃣集成Clang/Cppcheck静态分析;5️⃣Valgrind/Heob内存检测;6️⃣LinuxPerf性能分析。开发者可快速定位代码问题,优化应用程序性能。

2026-02-27 22:10:10 89 3

原创 windows平台QSharedPointer 循环引用问题与解决方案+vld开源库实时检测内存泄露问题

本文介绍了Qt智能指针中的循环引用问题及解决方案。项目通过对比QSharedPointer和QWeakPointer的使用,展示了循环引用导致的内存泄漏问题(两个对象相互持有强引用导致引用计数无法归零),以及使用弱引用打破循环引用的方法。关键点包括:1)强引用适用于明确所有权场景;2)弱引用用于观察者模式或可能形成循环引用的场景;3)提供了完整的代码示例和内存泄漏检测方法(使用VLD工具)。项目包含源码和详细日志分析,帮助开发者正确使用智能指针避免内存问题。

2026-02-26 21:16:23 723

原创 Qt Creator 15.0.1 创建项目指南

摘要:本文介绍了Qt项目创建与配置流程。首先需确定应用程序类型,通过QtCreator向导选择模板并设置项目属性。项目支持多种构建系统(qmake/Qbs/CMake)和纯C/C++项目,还可导入通用项目进行代码编辑。移动开发需安装相应工具链并配置设备连接。Qt安装时会自动创建开发Kit,项目配置时可选择适用的Kit并设置构建/运行参数。构建配置支持快速切换,可覆盖全局首选项实现个性化设置。(149字)

2026-02-25 22:44:35 86

原创 Qt Creator 15.0.1 配置指南

QtCreator配置指南 QtCreator作为Qt开发IDE,安装后需配置相关组件才能使用。主要包括: Kit配置:添加Qt版本、编译器和设备路径 代码片段:自定义常用代码模板提高效率 版本控制:支持Git等主流系统 辅助功能:支持快捷键、屏幕阅读器等无障碍操作 界面优化:可调整配色方案、缩放级别等视觉设置 通过"Preferences"菜单可完成各项配置,使开发环境更符合个人需求。独立安装时需额外配置Qt和编译器路径。

2026-02-24 21:34:14 106

原创 Qt C++ 零基础到精通:信号与槽入门

摘要:Qt元对象系统是信号槽机制的核心,由QObject基类、Q_OBJECT宏和元对象编译器(MOC)组成。MOC预处理生成元对象代码,实现信号槽连接。信号槽工作原理包括信号发射、元对象激活、连接查找和槽函数执行。连接方式分为直接连接(DirectConnection)、队列连接(QueuedConnection)和阻塞队列连接(BlockingQueuedConnection)。信号槽相比回调具有类型安全、线程安全等优势,虽有一定性能开销但通常可接受。开发时需注意Q_OBJECT宏的添加和MOC生成的代

2026-02-23 15:03:53 215

原创 # [特殊字符] Day 1:Qt 信号槽原理深入 - 核心学习笔记

本文深入解析了Qt信号槽机制的核心原理,重点介绍了元对象系统的三大组件(QObject基类、Q_OBJECT宏和MOC编译器)及其协同工作方式。详细讲解了MOC的编译流程和生成的代码结构,并对比分析了四种信号槽连接类型(Auto/Direct/Queued/BlockingQueued)的特点和适用场景。文章还涵盖了元对象系统的运行时功能,包括类型查询、动态属性和反射调用,并提供了不同线程场景下的连接方式选型建议。通过问答形式解答了常见问题,帮助开发者深入理解Qt信号槽机制的设计哲学和实现细节。

2026-02-23 14:17:35 550

原创 【Qt Creator 15.0.1 安装指南】

Qt Creator 15.0.1 开发环境指南 核心功能 Qt Creator 15.0.1 是一款跨平台集成开发环境,专为 Qt 应用程序开发设计。它支持完整的开发生命周期,包括: 项目管理(支持 CMake、qmake 等构建系统) 用户界面设计(Qt Quick 和 Qt Widgets) 代码编辑(提供语义高亮、代码补全等智能功能) 多平台构建与调试(支持桌面、嵌入式和移动平台) 安装选项 提供两种安装方式: 通过 Qt Online Installer(包含最新版本) 独立安装(支持包管理器、安

2026-02-23 14:01:53 965

原创 Day 1:信号槽原理深入

5. 答案:错误解析:Qt5的函数指针语法在编译期进行类型检查,如果参数类型不匹配,编译器会直接报错,无法通过编译。你对信号槽原理有扎实的理解,可以进入下一阶段的学习。信号槽原理的理解还不够深入,建议:重新阅读《定制学习简报》结合《核心知识图解》理解整体架构查看示例代码,从实践角度理解理论全错建议从头开始系统学习,重点理解:元对象系统的三个组件及其关系moc编译过程的基本流程不同连接类型的适用场景拓展思考完成基础测验后,可以思考以下问题,深化理解:为什么Qt要设计元对象系统而不是直接使用C++的RTTI?

2026-02-14 18:32:33 462

原创 Setup Factory 是一款功能强大的 Windows 安装程序制作工具(支持Qt/C++/C#)

SetupFactory是一款专业的Windows安装程序制作工具,由IndigoRose公司开发。该软件提供可视化界面,支持Lua脚本,可创建包含多种文件类型(如可执行文件、Qt应用及其依赖库)的专业安装包。主要功能包括自定义安装选项、注册表操作、多语言支持和数字签名等,适用于商业软件发布、企业内部部署及Qt应用打包等场景。通过直观的图形界面和自动化构建功能,SetupFactory能快速生成兼容各版本Windows系统的安装程序,提升软件分发效率与用户体验。

2026-02-10 22:07:15 438 1

原创 LightTools 是一款基于 Qt 框架开发的多功能工具管理和启动器应用

LightTools是一款基于Qt框架开发的工具管理应用,提供高效的工具集中管理平台。核心功能包括文件/文件夹/网页快速访问、系统工具快捷启动、个性化主题设置和悬浮窗口模式。采用模块化设计,运用单例模式和工厂模式实现工具管理,支持通过QProcess执行外部命令。应用场景覆盖日常办公、开发工作和系统管理,可显著提升工作效率。项目具有良好扩展性,未来计划支持跨平台、云同步和插件系统等功能。通过简洁界面和便捷操作,LightTools实现了工具管理的智能化和个性化。

2026-02-08 17:10:44 147

原创 C++ 策略模式

策略模式是一种行为设计模式,允许在运行时动态切换算法。它通过将算法封装为独立类(Strategy接口及其实现),使它们可互换。Context类维护策略引用,客户端可灵活切换不同策略(如冒泡排序和快速排序)。该模式避免了多重条件判断,提高可维护性和扩展性,适用于需要动态选择算法或封装多种相似行为的场景。注意客户端需了解策略差异,且可能增加对象数量。

2026-02-05 20:58:38 346

原创 VTK-9.5.0 1D2D3DWidget实现灰度图+深度图+3D点云显示(可轻松集成到自己的项目)

VTK1D2D3DWidget是一个基于Qt和VTK开发的3D点云可视化工具,支持RGB和深度点云数据的显示与处理。主要功能包括点云加载、可视化、保存为PLY格式文件,以及背景颜色、点间隔、坐标轴显示等参数的自定义设置。该工具采用模块化设计,核心组件包括主窗口管理类、VTK渲染组件和自定义鼠标交互样式,依赖Qt5+和VTK9.5.0库实现跨平台支持。项目提供完整的源码和构建指南,适用于点云数据的快速展示与分析。

2026-02-05 20:55:57 297

原创 【3D 可视化】VTK-8.2.0+msvc2017_x64演示Qt C++ Demo

本文介绍了在Windows10平台上使用CMake+VS2017和Qt5.14.2开发VTK(Visualization Toolkit)可视化应用的实践。重点展示了如何通过Qt模块化思维管理VTK8.2.0库,使用.pri文件实现解耦和自动依赖管理,并提供了完整的库配置示例。文章还详细讲解了pro文件的优化配置方法,包括调试信息生成、字符集设置等。最后通过一个五角星3D渲染Demo,演示了从创建顶点数据到渲染显示的全过程,包含详细的代码实现和效果展示。文末提供了完整的项目资源下载链接。

2026-02-01 19:13:44 69

原创 C++ 观察者模式

摘要:观察者模式是一种行为设计模式,建立对象间一对多依赖关系,当被观察者状态变化时自动通知所有观察者。核心包含Subject(管理观察者)和Observer(接收通知)两个角色,通过attach/detach方法动态管理观察关系。该模式优势在于松耦合、可扩展性强,适用于事件处理、实时数据更新等场景。实现时需注意线程安全、循环引用等问题,可通过添加互斥锁、异步通知等机制优化。典型应用包括GUI事件处理、发布-订阅系统等,是提升系统灵活性和可维护性的有效设计模式。

2026-01-31 20:36:30 682

原创 C++ 工厂模式

工厂模式选择指南:三种工厂模式(简单工厂、工厂方法、抽象工厂)的核心区别在于创建对象的灵活性和扩展性。简单工厂适用于产品类型少且固定的场景,工厂方法适合需要频繁扩展产品的系统,抽象工厂则用于创建相关产品族。选择时应考虑项目需求、产品特性、设计原则和团队能力,优先推荐工厂方法模式以满足大多数中等规模项目的需求。

2026-01-28 20:44:59 571

原创 什么是 QRectF

QRectF是Qt中用于高精度图形操作的浮点矩形类,支持两种定义方式:左上角坐标+尺寸或对角点坐标。提供5种构造方法,支持坐标查询、状态判断(null/empty/valid)、尺寸修改和平移变换等核心操作。关键功能包括:边界调整(setX/moveTo等)、几何变换(translate/adjust)、关系运算(contains/intersects/united)以及类型转换(toRect/toAlignedRect)。特别要注意标准化处理(normalized)可确保矩形有效性,且移动(move)与设

2026-01-28 17:13:58 333

原创 【认识 QPointF 是什么】

QPointF是Qt中用于高精度坐标处理的类,使用浮点数存储x,y坐标。主要功能包括:构造空点或指定坐标点;通过x()/y()获取坐标,setX()/setY()或rx()/ry()修改坐标;支持向量运算(加减乘除)和点积计算;提供坐标转换、距离计算等方法。相比整数坐标的QPoint,QPointF更适合图形绘制、动画等需要小数精度的场景。建议通过实际编码练习掌握其向量运算特性,并与其他几何类(QLineF等)配合使用。

2026-01-28 16:33:20 211

原创 C++ 多种单例模式

摘要:本文详细介绍了5种C++单例模式的实现方式及适用场景。包括饿汉模式、C++11懒汉模式、传统懒汉模式、智能指针单例和智能指针+友元方式,从线程安全、内存管理、性能等维度进行对比分析。针对不同项目需求,给出了具体选择建议:简单场景推荐饿汉模式,现代C++项目首选C++11懒汉模式,内存敏感场景建议智能指针单例。文章强调应根据项目需求、技术栈、团队经验等因素选择最合适的实现方式,避免过度设计,并提供了代码示例和实践建议。(149字)

2026-01-27 20:46:16 645

原创 C++设计模式

设计模式选择指南摘要:本文系统介绍了如何根据项目场景选择合适的设计模式。针对客户端应用、MCU控制器和SDK开发三大场景,分别推荐了适用的设计模式组合,如观察者模式、工厂模式、策略模式等。同时分析了不同设备类型(PC/移动端/MCU)和通信方式(USB/网络/蓝牙)对设计模式选择的影响,并提供了决策表辅助快速选择。核心原则强调理解问题本质、关注变化点、权衡系统约束,避免过度设计。通过智能家居、工业控制和跨平台SDK三个案例,展示了设计模式的实际应用。建议优先掌握高频模式,理解设计原则,通过实践积累经验。

2026-01-25 20:59:56 554

原创 Qt C++调试之如何生成dump文件(收藏)

=================================Qt生成PDB文件的方法============================================qDebug() << "当前线程ID:" << currentThread->currentThreadId();qDebug() << "执行时间:" << timer.elapsed() << "毫秒";- ✅ **断言机制**:使用 `Q_ASSERT()` 和 `Q_CHECK_PTR()`

2026-01-22 21:51:38 44

原创 兵器王者 | Qt C++游戏开发实战

《QtC++兵器锻造游戏开发实战》摘要:本项目是一个使用Qt框架和现代C++开发的兵器锻造小游戏,涵盖Qt核心控件、信号槽机制、QSS美化等GUI技术,融合智能指针、Lambda表达式等C++14特性。采用观察者模式设计游戏架构,实现多线程资源采集系统。项目结构清晰,包含完整构建配置(qmake/CMake),适合学习游戏开发、设计模式及Qt应用开发。特色包括零第三方依赖、规范注释、线程安全设计,是提升C++和Qt技能的优质实践项目。(148字)

2026-01-18 20:31:01 208

原创 Linux | i.MX6ULL C 程序调用 shell

本文介绍了在Linux系统下通过C程序调用shell命令控制GPIO的方法。首先需要修改设备树文件注释LED和按键功能,然后通过popen函数执行shell命令操作/sys/下的gpio节点。文中提供了完整的C代码实现,包括导出GPIO、设置输入输出模式、读取按键值和控制LED状态等功能。代码使用popen创建管道执行shell命令,通过循环交替读取GPIO1_18状态和控制GPIO3输出,实现LED闪烁效果。程序编译后需移植到开发板运行,修改uboot时需要重新刷写镜像。该方法实现了C程序与shell命令

2026-01-17 21:01:19 109

原创 我的 TRAE 编程体验-热门 MCP Server 详解和智能体搭建

本文介绍了TRAEIDE开发中常用的MCPServer工具,重点解析GitHubMCPServer的核心功能(仓库管理、Issue追踪、PR协作等)及其在AI辅助开发、自动化工作流等场景的应用。同时提供了从市场安装MCPServer的简易步骤,并展示了可一键导入的自定义智能体模板,帮助开发者快速配置个性化开发环境。这些工具能有效提升代码管理效率和团队协作能力。

2026-01-11 12:54:46 764

嵌入式PC端虚拟串口端口生成及串口调试工具.rar

只要是编程人员,这两个工具你一定要使用。 【1】打开第一个文件Setup.exe,双击setup进行安装,安装位置可以自定义,安装完成后把对号去掉(launch...) 【2】在桌面上找已经安装软件快捷方式【Launch Virtual Serial Port Driver】,右键,打开文件所在位置。 将文件caack中的补丁【vspdpro.exe】拖到文件所在位置,替换,安装完成!

2023-08-08

SQLite是数据库,在Qt中实现,用于存储用户信息

Qt 实现SQLite全部语法 【1】SQLite Qt界面设计 【2】SQLite Qt数据库创建、打开、关闭、删除 【3】SQLite Qt表格的创建 【4】SQLite Qt表格的插入 【5】SQLite Qt表格的查询 【6】SQLite Qt表格的删除 【7】SQLite Qt表格的更新 【8】SQLite Qt表格的结构 【9】SQLite Qt表格的修改 【10】SQLite 常用内置函数举例 1、计算表格行数 2、计算表格某列最大值 3、计算表格某列最小值 4、计算表格某列平均值 5、计算表格某列总和 6、计算一个随机数 7、计算绝对值 8、字符串转化大小写 9、计算字符串长度 10、效果 【11】SQLite 日期函数 【12】SQLite LIKE和GLOB子句(通配符) 【13】SQLite LIMIT子句 (限定行显示) 【14】SQLite 表格排序 (升序、降序) 【15】SQLite GROUP BY子句 (分组) 【16】SQLite HAVING 子句(分组的条件) 【17】SQLite DISTINCT 关键字(去重) 【18】SQLite 交叉连接

2023-06-24

QT EventFilterQChartsQDataStreamQDir

androidandroidopenc 雄甾烷 EventFilterQChartsQDataStreamQDir EventFilterQChartsQDataStreamQDir FileQLabelQPainterQPushButtonQPushButton1 FileQLabelQPainterQPushButtonQPushButton 1 创建日期: 2022/9/18 创建日期:2022/9/18 QSpeech QSpeech 大小:82.5 MB 大小:82.5MB QT Camera solree oue QT相机独树OUE 文件夹: build-QPainte 文件夹:Build-QPainte QT_RB QT_Rb QTextCodecQTWidgetwidgetTEST QTextCodecQTWidgetwidgetTEST V4L2 camera display QThreadV4L2 camera display QTimerYD-Ul V4L2相机显示QThreadV4L2相机显示QTimerYD-Ul

2023-02-19

QT 文件操作 事件过滤器 鼠标移动事件

QT学习资料 QT 文件操作 事件过滤器 鼠标移动事件

2023-02-19

基于数据结构商品购物系统 项目.zip

#include <stdlib.h> #include <stdio.h> #include <string.h> #include "program.h" //注册资源管理器 (商品头结点 购物车头结点 管理器头节点 初始化) extern node_t *register_resouse_manage(void) { //为管理结构体申请一块内存 node_t *new_manage_node; new_manage_node = malloc(sizeof(node_t)); //存储商品信息或购物历史信息 if(new_manage_node == NULL) { free(new_manage_node); return NULL; } //申请商品链表头结点 申请成功应该初始化 传入文件信息 new_manage_node->com_info_list = request_commodity_list_node(); printf(

2022-05-01

第八天-内核链表排序.zip

第八天-内核链表排序.zip

2022-05-01

第七天-二叉树与排序算法.zip

int main(int argc, char **argv) { // 打开一个包含百万数据级别的文件 FILE *src = fopen("numbers.txt", "r");//只读方式打开 if(src == NULL) { perror("打开文件失败"); exit(0);//结束程序 } // 1,将原始数据文件,分割成N个有序的子文件 bool done = false; char file[20]; int N = 0; int wanted = 10*10000; // 假设每次只能读取10万个数据 int infact = wanted;//狂铁:10万伏特 while(1) { // 试图从文件读取 wanted 个数据 unsigned *data = calloc(wanted, sizeof(unsigned));//申请10万块,每块4字节 for(int i=0; i

2022-05-01

第六天-内核链表及二叉树.zip

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <list.h> struct student_info{ char name[4096];//姓名 short age;//年龄 float height;//身高 }; //大结构体 typedef struct list_node{ struct student_info data; struct list_head list;//导入内核链表小结构体 }node_t;//链表节点类型 //申请空间 node_t *request_link_list_node(void) { node_t *new_node; new_node = malloc(sizeof(node_t)); if(new_node == NULL) { perror("申请链表节点失败"); return NULL; }

2022-05-01

内核链表代码111.zip

/* * @Author: your name * @Date: 2021-09-01 17:01:47 * @LastEditTime: 2021-09-01 17:35:15 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \Desktop\kernel_list\main.c */ #include <stdio.h> #include <stdlib.h> #include "list.h" typedef struct big{ int data; struct list_head list; }node_t; typedef struct one{ int data; struct list_head list; }node_one_t; typedef struct two{ int data; struct list_head list; }node_two_t; no

2022-05-01

第三天-队列与栈的逻辑与单向循环链表.zip

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> typedef struct list_node{ int data; struct list_node *next; }node_t;//链表节点类型 //不安全的遍历 #define list_for_each(head, pos) for(pos=head->next; pos!=head; pos=pos->next) //安全的遍历 #define list_for_each_safe(head, pos, n) for(pos=head->next, n=pos->next; pos!=head; pos=n, n=n->next) node_t *request_link_list_node(void) { node_t *new_node; new_node = malloc(sizeof(node_t)); if(new_node == NULL) { perror

2022-05-01

第四天-双向循环链表.zip

int main(void) { int input_value; node_t *list_head, *new_node;//申明两个链表节点的指针变量,其中list_head用来存放链表的头节点,new_node用来临时存放一下新申请的节点 //新建链表头节点 list_head = request_list_node(); while(1) { scanf("%d", &input_value); if(input_value > 0) { //新建节点 new_node = request_list_node();//新申请一个节点 new_node->data = input_value;//将数据存放进去这个节点当中 //将这个新的节点插入到list_head所对应的表格中 insert_node_to_list_tail(list_head, new

2022-04-25

第二天-单向链表.zip

int main(void) { int input_value; node_t *list_head, *new_node; //新建头节点 list_head = request_link_list_node(); if(list_head == NULL) return -1; list_head->data = -1; while(1) { scanf("%d", &input_value); if(input_value > 0) { //新建节点 new_node = request_link_list_node(); new_node->data = input_value; //将节点插入到表格当中 insert_node_link_list(list_head, new_node);

2022-04-23

QT软件工具使用.zip

解压文件夹--》配置windows环境变量(右键计算机--》属性--》更改设置--》高级--》环境变量--》Path中添加你解压的mplayer.exe所在的路径)

2022-04-23

第一天-数据结构概念及顺序表.zip

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define SQL_NUMB 10 typedef struct sequance_list{ int array[SQL_NUMB];//这个是用来放数据的 int last;//这个是用来记录上面的数组用到第几个元素的 }sql_t; //函数返回结构体地址【因为这样才能利用里面的数据】 sql_t *request_sequence_list(void) { sql_t *new_sql;//定义一个结构体变量 //堆是由程序员自己申请的,所以要自己使用释放函数释放,栈是系统自己释放 new_sql = malloc(sizeof(sql_t));//申请一块结构体大小的内存 if(new_sql == NULL) { perror("申请内存失败"); return NULL; } new_sql->last = -1;//初始化以下,数组是从0开始保存数据,-1就是没有数据 return new_sql;//返回

2022-04-23

QT中项目第二个.zip

//识别图片 void CarSystem::on_regBt_clicked() { //识别--pPath是成员变量保存车头照片路径 cv::Mat plateImage = cv::imread(pPath.toUtf8().data());//要识别的车牌照片路径(要清晰,正面) //定义一个容器存放识别结果 //RunPiplineAsImage()根据你提供的车牌照片识别车牌 std::vector<pr::PlateInfo> res = carPrc->RunPiplineAsImage(plateImage,pr::SEGMENTATION_FREE_METHOD); float conf = 0; //保存识别的车牌号码 std::string plateNumber = ""; //新式for循环 for (pr::PlateInfo st : res) { if (st.confidence>0.70) //判断识别率,识别结果中识别率高于90% {

2022-04-23

10.QT项目第一个.zip

#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDir> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); pp=2; //设置窗口标题 setWindowTitle("客户端008"); //初始化套接字对象 sock=new QTcpSocket(this); //绑定客户端自己的ip和端口号 sock->bind(QHostAddress("192.168.24.86"),7000); //关联readyRead()信号 connect(sock,SIGNAL(readyRead()),this,SLOT(recvservermsg())); //设置水平头 --》树状列表框的树根 ui->treeWidget->setHeade

2022-04-23

1.QT环境搭建,QT工程,ui界面设计,代码登录

1.QT环境搭建,QT工程,ui界面设计,代码登录

2022-04-17

2.QString,信号与槽,设计ui的两种方式

2.QString,信号与槽,设计ui的两种方式

2022-04-17

3.多界面跳转,界面传递参数,布局管理器

3.多界面跳转,界面传递参数,布局管理器

2022-04-17

4.消息盒子,对话框,定时器,日期和时间

4.消息盒子,对话框,定时器,日期和时间

2022-04-17

5.列表框,交叉编译QT程序,QT控制硬件,多进程

5.列表框,交叉编译QT程序,QT控制硬件,多进程

2022-04-17

6.多线程,菜单栏,打包QT程序,其它组件

6.多线程,菜单栏,打包QT程序,其它组件

2022-04-17

7.网络编程,Http和JSON解析,事件

7.网络编程,Http和JSON解析,事件

2022-04-17

7.QT数据库入门学习

7.QT数据库入门学习

2022-04-17

9.串口编程QT实现教程

9.串口编程QT实现教程

2022-04-17

语音离线识别包,可通过局域网通信实现语音交流

语音离线识别包,可通过局域网通信实现语音交流

2022-04-17

RFID射频识别你了解多少,开车刷卡,蓝牙刷卡,门禁卡等等,代码实现编写,A,B命令字带你掌握

RFID射频识别你了解多少,开车刷卡,蓝牙刷卡,门禁卡等等,代码实现编写,A,B命令字带你掌握

2022-04-17

串口编程让你了解什么是同步和异步吗?进来看看

串口编程让你了解什么是同步和异步吗?进来看看

2022-04-17

led驱动-各种版本的mplayer-arm+linux-gnueabi-5.4.0.tar.xz+Qt-Embedded-5.

LED驱动:GEC6818开发板上的灯驱动 各种版本的mplaye: 音视频播放器,使用命令即可播放,支持win10和开发板,应用于各种场合,特别是语音识别技术,很多毕设都是用这个做的。 gcc编译工具:arm+linux-gnueabi-5.4.0.tar.xz, 解压命令:tar -zxvf arm+linux-gnueabi-5.4.0.tar.xz linux或者开发板编译工具,gcc main.c -o main生成可执行文件,,,运行 ./main QT交叉编译工具:Qt-Embedded-5 (1)把我给的5.4.0的编译器拷贝到家目录,然后解压 tar -xf arm-linux-gnueabi-5.4.0.tar.xz (2)配置一下环境变量 export PATH=你的新的arm-linux-gcc所在的路径:$PATH //一次性的

2022-04-05

JLINK使用驱动下载,ST-LINK驱动及教程,STM32F4串口下载软件(FLYMCU),ST-LINK官方驱动.zip

之前所有正点原子 STM32 教程讲解的调试工具都是以 JLINK 为例。由于德产 J-LINK 价格非常昂贵,而国产 J-LINK 因为版权问题将在万能的淘宝销声匿迹。所以我们有必要给大家介绍 JTAG/SWD 调试工具中另外一个主流仿真器 ST-Link 的使用方法,让大家在今后的 STM32学习中,能熟练掌握 JTAG/SWD 调试配置方法。 如果你已经了解了 JLINK 的使用方法,那么 ST-Link 的使用方法将会非常简单,几乎 99% 的操作方法都是一模一样的。几乎所有 JTAG/SWD 仿真器的使用都有下面三个方面的知识: 1. 驱动的安装。 2. 编程软件(MDK)配置。 3. 固件升级方法

2022-04-05

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

TA关注的人

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