- 博客(231)
- 资源 (24)
- 收藏
- 关注

原创 C语言实现设计模式-策略模式+命令模式组合使用
文章目录使用环境介绍使用策略模式使用命令模式使用环境介绍当主设备和从设备使用串口信息交互通讯,根据串口协议,实现对从设备的控制访问。使用情况1:当主设备发送板卡信息获取、读取数据命令时,希望获取从设备的数据信息,从设备应答操作。使用情况2:当主设备发送采集命令时,从设备收到但不进行回复,不应答操作。使用策略模式首先识别命令,对需要进行应答的命令进行判断,区分动作使用命令模式...
2020-08-02 11:19:50
3285
原创 通用接口函数注册模块设计与实现
通用接口函数注册模块()是一个用于实现动态函数注册的轻量级工具。它通过偏移量计算和函数指针赋值的方式,实现了C语言中类似面向对象的接口机制。模块支持动态注册、调试日志输出,并且易于扩展。void* ctx;// 设备上下文通过接口注册模块,可以在C语言中实现类似面向对象的接口机制。它不仅简化了代码结构,还提高了模块的可扩展性和可维护性。无论是驱动开发还是插件系统,这个模块都能提供强大的支持。
2025-04-08 18:56:03
107
原创 C语言-查表法详解与实践
查表法是一种将复杂的条件判断转换为表驱动的编程技术,通过建立映射表来替代繁琐的if-else或switch-case语句。fill:#333;color:#333;color:#333;fill:none;查表法表结构定义查找算法数组映射结构体映射顺序查找索引查找查表法是一种简单而有效的编程技术,通过合理使用可以显著提升代码质量和运行效率。
2025-04-03 13:52:30
821
原创 cJSON- API 深度解析:设计理念与实现原理(二)
这些 API 的设计充分体现了 cJSON 的设计理念:简单、高效、安全。通过合理的抽象和封装,既保证了使用的便利性,又不失灵活性和性能。
2025-03-26 18:24:06
652
原创 cJSON-轻量级 C 语言 JSON 解析库的使用(一)
在当今互联网时代,JSON (JavaScript Object Notation) 已成为数据交换的通用格式。对于 C 语言开发者来说,cJSON 库提供了一种简单而强大的方式来处理 JSON 数据。本文将深入剖析 cJSON 的设计理念、核心功能和实际应用场景。cJSON 是由 Dave Gamble 开发的一个轻量级 JSON 解析和生成库,使用纯 C 语言编写,仅包含一个头文件和一个源文件,总代码量不到 4000 行。简单、高效、易用。
2025-03-26 17:05:50
1158
原创 epoll:Linux 高性能 I/O 多路复用技术
epoll 是 Linux 内核提供的高效 I/O 事件通知机制,于 2.6 版本内核中引入。它解决了传统 select 和 poll 在高并发场景下的性能瓶颈问题,成为构建高性能网络服务器的首选技术。epoll 作为 Linux 平台上的高性能 I/O 多路复用机制,通过创新的设计解决了传统 select/poll 的性能瓶颈,为构建高并发网络应用提供了强大支持。掌握 epoll 的使用,对于开发高性能服务器至关重要。《Linux 高性能服务器编程》,游双著。
2025-03-24 19:00:20
1087
原创 内存管理模块设计与实现
在嵌入式系统或需要精确控制内存使用的场景中,一个良好的内存管理模块至关重要。内存使用追踪内存分配记录内存泄漏检测线程安全设计内存对齐支持/* 链表节点 */void *ptr;/* 申请地址 *//* 申请大小 *//* 申请行数 *//* 申请函数名 *//* 已经使用内存 *//* 最大使用内存 *//* 信息记录 *//* 初始化标记 */完整的内存追踪能力线程安全的实现便捷的调试接口灵活的内存对齐支持详细的使用记录。
2025-03-24 17:24:44
699
原创 设计模式的六大原则
单一职责原则:一个类只做一件事开闭原则:对扩展开放,对修改关闭里氏替换原则:子类可以替换父类接口隔离原则:接口要小而专一依赖倒置原则:依赖抽象而不是具体迪米特法则:降低对象之间的耦合这六大原则是设计模式的基础,遵循这些原则可以帮助我们写出更好的代码。它们不是硬性规定,而是指导原则,需要根据实际情况灵活运用。
2025-03-23 20:02:27
406
原创 C语言-发布订阅模式详解与实践
发布订阅模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题。这个主题在状态发生变化时,会通知所有依赖于它的订阅者对象,使它们能够自动更新。发布订阅模式通过解耦发布者和订阅者,实现了灵活的消息通知机制。这种模式特别适合处理事件驱动的场景。
2025-03-23 19:55:06
686
原创 C语言-MVC模式详解与实践 - 温度监控系统
MVC模式将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于实现关注点分离,使得程序更容易维护和扩展。MVC模式通过分离关注点,使得温度监控系统的代码结构更加清晰,便于维护和扩展。这种模式特别适合处理数据、显示和用户交互的系统。
2025-03-23 19:33:03
688
原创 C语言-装饰器模式详解与实践 - LED控制系统
装饰器模式允许我们动态地向对象添加新的功能,而不改变其原有结构。在LED控制系统中,我们可以通过装饰器模式实现不同的LED效果叠加。装饰器模式在LED控制系统中的应用,使得我们可以灵活地组合不同的LED效果,同时保持代码的清晰和可维护性。这种模式特别适合需要动态组合多种LED效果的场景。
2025-03-23 19:24:02
670
原创 C语言-状态模式详解与实践 - OTA升级状态机
在OTA升级过程中,设备会经历多个不同的状态(如空闲、下载、校验、升级等),每个状态下的行为和响应都不同。状态模式可以帮助我们清晰地管理这些状态转换和相应的行为。通过状态模式,我们实现了一个清晰、可维护的OTA升级状态机。这种设计方式使得复杂的升级流程变得条理分明,同时也便于后续功能扩展。
2025-03-23 19:11:03
1016
原创 C语言-访问者模式详解与实践
这个例子展示了访问者模式在嵌入式系统中的实际应用。通过将传感器数据采集和处理逻辑分离,我们可以灵活地添加新的数据处理方法,同时保持代码的清晰和可维护性。
2025-03-23 18:59:58
457
原创 C语言-适配器模式详解与实践
适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器让原本由于接口不兼容而不能一起工作的类可以协同工作。适配器模式通过转换接口,使得原本不兼容的系统能够协同工作。这种模式特别适合系统升级或整合第三方库的场景。
2025-03-23 18:52:16
1084
原创 C语言-桥接模式详解与实践
桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使它们都可以独立地变化。这种模式通过组合的方式建立两个类之间的关系,而不是继承。桥接模式通过将抽象和实现分离,实现了它们的独立变化。这种模式特别适合处理跨平台或需要支持多种实现的场景。
2025-03-23 18:48:28
789
原创 C语言- 工厂模式详解与实践
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过一个共同的接口来指向新创建的对象。工厂模式通过封装对象的创建过程,提供了一种灵活且可扩展的对象创建机制。这种模式特别适合处理需要创建多种类型对象的场景。
2025-03-23 18:43:13
927
原创 【NXP i.MX6ULL 使用】IMX6Y2C-512M-EMMC 设备树配置文档
【代码】【NXP i.MX6ULL 使用】IMX6Y2C-512M-EMMC 设备树配置文档。
2025-02-12 10:45:32
509
原创 Linux 应用层 GPIO 编程指南
GPIO(General Purpose Input/Output)是通用输入输出端口,可以通过软件控制实现输入输出功能。
2024-10-31 14:25:51
895
原创 signal() -函数的详细使用说明
函数用于设置特定信号的处理方式。它允许程序在接收到特定信号时执行自定义的处理函数,或者采用默认的处理方式,也可以选择忽略该信号。这些信号在不同的操作系统上可能会有一些细微的差别,但总体上它们的行为是相似的。在编写程序时,可以根据需要使用。函数或其他信号处理机制来改变这些信号的默认行为,以实现更灵活的程序控制和错误处理。这个函数接收两个参数,返回一个函数指针。以下是一个完整的示例代码,展示了如何使用。
2024-10-29 14:32:52
1780
原创 Modbus从机模式多包数据解析方案
多包循环解析指针偏移管理解析次数限制功能码分类处理有效解决了 Modbus 从机模式下的多包数据处理问题,提高了数据处理的可靠性和效率。
2024-10-29 10:43:25
267
原创 【modbus协议】Modbus-TCP消息帧格式
Modbus Application Header 是 Modbus TCP 通信中的关键部分,它提供了事务标识、协议标识、数据长度和设备标识等信息,帮助客户端和服务器正确解析和处理 Modbus 请求和响应。通过理解这些字段的含义和作用,可以更好地实现和调试 Modbus TCP 通信。
2024-10-28 15:51:59
1526
原创 TLS 加密的原理和过程
TLS(Transport Layer Security,传输层安全协议)是一种为网络通信提供安全及数据完整性保障的安全协议。TLS 的主要目的是在两个通信应用程序之间提供保密性和数据完整性。它通过使用对称加密、非对称加密和哈希函数等多种加密技术来实现这一目标。通过以上过程,TLS 实现了在不安全的网络环境中安全地传输数据。
2024-10-09 23:02:26
738
原创 【MQTT协议使用总结】基于-FreeRTOS平台-移植MQTT协议栈
实际使用过程中,遇到了lwip阻塞的阻塞情况,注意采用非阻塞方式进行读取。
2024-09-18 22:07:16
622
原创 【QT】定时器使用
一、创建与初始化使用QTimer类来创建定时器。可以在构造函数中指定父对象,确保定时器在正确的对象生命周期内被管理。,这里的this表示定时器的父对象,通常是一个QObject派生类的实例,这样可以确保在父对象销毁时,定时器也能被正确清理。二、设置时间间隔通过方法设置定时器的时间间隔,单位为毫秒。设置定时器每 1000 毫秒触发一次。三、连接信号与槽使用connect函数将定时器的timeout信号与相应的槽函数连接起来,以便在定时器超时时执行特定的操作。,当定时器超时时,会调用。
2024-09-15 22:22:21
1804
原创 【QT】基础入门学习
槽是一个普通的成员函数,可以在任何 Qt 对象中定义。槽函数可以有不同的参数和返回值类型,具体取决于需要处理的信号。例如,一个槽函数可以用来处理按钮点击事件,执行一些特定的操作,如打开一个新窗口、更新数据等。为了建立信号与槽的连接,可以使用connect函数。这个函数接受发送者对象、发送者发出的信号、接收者对象和接收者的槽函数作为参数。例如:connect(senderObject, SIGNAL(signalName()), receiverObject, SLOT(slotName()));。
2024-09-08 19:12:01
941
原创 【MA35D1】buildroot 编译使用经验
NuMicro® MA35D1系列为一颗异核同构的多核心微处理器,适用于高端 Edge IIoT Gateway。它是基于双核 64 位 Arm® Cortex-A35 内核,执行速度可达 800 MHz,并搭载一颗 180 MHz Arm Cortex-M4 内核。基于此高性能内核,MA35D1 系列有助于 Tiny AI/ML 边缘运算。
2024-09-02 21:39:01
1552
原创 Linux 终端重定向技术详解:串口日志捕获实现
在嵌入式系统开发中,串口日志对于调试和问题排查至关重要。传统的串口日志查看方式需要物理连接,这在远程开发环境下存在诸多不便。本文介绍一种基于TIOCCONS的终端重定向技术,实现远程捕获串口日志的功能。本文详细介绍了基于TIOCCONS的终端重定向技术,通过系统调用和设备控制实现串口日志的远程捕获。这种方案在远程开发和调试中具有重要应用价值,但需要注意安全性和资源管理等关键问题。
2024-08-13 15:15:17
264
原创 Linux 使用 FFTW库在多线程环境下的线程安全问题分析与解决方案
在多线程环境中使用 FFTW 库时,需要特别注意:只有及其变体是线程安全的其他函数需要互斥锁保护正确初始化和清理避免资源泄漏合理使用锁保护共享资源优化计划创建和复用减少锁竞争使用线程本地存储通过合理的设计和实现,可以在保证线程安全的同时,充分发挥 FFTW 库的性能优势。
2023-10-26 09:13:18
3487
原创 使用 cJSON 解析超范围整数导致的 CRC 校验失败分析
在处理大数值时,要特别注意数据类型的范围限制使用 cJSON 时,优先使用而不是已废弃的valueint根据实际需求选择合适的数据类型,必要时进行安全的类型转换。
2023-02-09 10:58:38
3726
DS-000189-ICM-20948-v1_1_89_translate.pdf
2019-10-09
用C-语言实现面向对象编程.pdf
2019-08-13
嵌入式技术与应用丛书 汽车电子KEA系列微控制器 基于ARM Cortex-M0+内核 [王宜怀,李跃华著][电子工业出版社].pdf
2019-04-08
AnalogDevices.ADuCM36x_DFP.1.0.0.pack
2019-04-04
AD7124英文手册
2019-03-29
AD7124中文手册
2019-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人