常用于单片机的接口适配器模式C语言实现

前言

通俗的讲,适配器模式是将一个类的接口转换成客户希望的另外一个接口,在我们编写程序的时候,尤其是在我们使用到单片机做项目的时候,经常会用到。

但是往往我们做项目写程序的时候,并没有想到那么多,如果在不带操作系统的情况下,想要整个框架易于移植,易于理解,那么我们真的需要好好想想这个设计模式怎么写了。

下面我根据自己的项目经验,来说说适用于单片机的接口适配器模式的实现。大佬勿扰,多多指教。

一般实现

在我们做项目的时候,一般的实现,可能我们会这样写代码

// FileName: test.c// 来源:公众号【技术让梦想更伟大】#include <stdio.h>#include “ExternModule.h”
int main(void){
/*初始化*/ vAllInit(); while(1) { /*项目逻辑*/ vLogicModule1(); vLogicModule2(); }}

在其外部文件中,调用相对应的初始化函数以及逻辑函数,但是当我们项目很复杂的时候,逻辑关系也层层覆盖、交替的时候,这样的写法就有些不是很好看了。

接口适配器

首先我们还是要来定义数据结构,一般这样的项目分为这样几个步骤:

  1. 初始化
  2. 输入
  3. 处理
  4. 输出

我们把这四个步骤封装起来,再定义数据结构如下:

// FileName: test1.c// 来源:公众号【技术让梦想更伟大】/* 适配器类型定义 */struct _ADAPTER {    void (*Init    )( void );  //初始化函数    void (*Input   )( void );  //输入转换函数    void (*Process )( void );  //处理函数    void (*Output  )( void );  //输出转换函数};typedef struct _ADAPTER ADAPTER ;

那么初始化函数,我们先来这样定义

// FileName: test1.c// 来源:公众号【技术让梦想更伟大】/* 模块初始化 */void moduleInit( ADAPTER *module ){    if( module->Init != NULL ) {        module->Init(); }}

模块的逻辑运行,我们可以这样使用

// FileName: test1.c
// FileName: test1.c// 来源:公众号【技术让梦想更伟大】/* 模块逻辑运行 */void moduleRun( ADAPTER *module ){ // 模块输入适配接口不为空,则执行输入适配操作 if( module->Input != NULL ) { module->Input(); }
// 模块处理接口不为空,则执行处理操作 // 模块输出适配接口不为空,则执行输出适配操作}
(0)

相关推荐

  • 高通camera模块的启动过程

    Camera驱动Vendor sensor部分启动初始化过程 mm-qcamera-daemon进程: vendor\qcom\proprietary\mm-camera\mm-camera2\ser ...

  • 用于单片机的几种C语言算法

    单片机主要作用是控制外围的器件,并实现一定的通信和数据处理.虽然单片机不擅长实现算法和进行复杂的运算,但在某些特定场合,不可避免地要用到数学运算. 比如:在单片机进行数据采集时,会遇到数据的随机误差, ...

  • 详细讲解台式电脑上的常用的几个接口!

    详细讲解台式电脑上的常用的几个接口! I/O接口部分 下图所有的接口,也是我们机箱后面的接口,统称为:I/O接口. 键鼠PS/2 PS/2接口是I/O接口中比较常见的一种接口,用来连接键盘和鼠标,二者 ...

  • 150个常用易混淆的成语,提高语言表达和写作技能必备知识

    (1)不动声色:不说话,不流露感情,态度镇定. 无动于衷:心里一点也不感动,不动心. (2) 不三不四:形容人时指人的品行不正派. 不伦不类:形容人时指人的着装不得体. (3) 蹉跎岁月:虚度光阴与岁 ...

  • 单片机常用的14个C语言算法

    算法(Algorithm):计算机解题的基本思想方法和步骤. 算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据.输出什么结果).采用什么结构.使用 ...

  • 常用电子产品接口大全(很全,值得收藏)

    视频接口: 在我们的生活中,电视机.电脑.投影设备.各种播放器上,视频会议产品和监控产品的编解码器的视频输入输出接口上看到很多视频接口,尤其在显卡上面,通常会出现3种甚至更多的接口.这些视频接口哪些是 ...

  • 收藏!西门子SCL语言编程,常用指令介绍

    蓝字 '玩转PLC工业机器人" 关注我们哦! 玩转PLC工业机器人 垂直PLC领域,定期分享工业机器人.PLC.变频器.模拟量.定位控制.通信控制.HMI.行业资讯等工控技术,为广大工控人提 ...

  • 常用俗语谚语2辑300句,蕴含人生哲理,极具语言魅力

    常用俗语谚语2辑300句,蕴含人生哲理,极具语言魅力

  • 女生常用语言翻译.

    女生常用语言翻译.

  • GO语言常用工具有哪些?这两款很重要

    Go语言是一门发展较久的编程语言,至今已有10年之多,它不仅优势多.领域广,而且前景非常好,是区块链的首选语言.那么Golang IDE有哪些呢?我想这是很多学习者都想要知道的问题,接下来我们一起来看 ...