C语言开发适配器封装

简介

1、什么叫做适配器???????

 适配器是在具有直接调用的上下两层之间,约定好的、固定的调度方式。

2、适配器的用途?????

 1、当程序底层驱动发生改变的时候,可以写一个适配器来贯通APP与新的驱动,这样APP层就可以不改了
 2、保持一致性:比如目前我的板卡上有两个网口,一个是SPI扩展的W5500,一个是RMII扩展的8384。如果给两个封装统一的接口。那么,如果后续设计、评估需要改变两个网口的功能,就可以像调换串口一样简单了。

适配器描述

适配器的设计注意事项?????

 1、由于C程序中绝对不可以存在名称完全一致的全局函数(非static)和全局数据结构定义(不能有同名的结构体)。所以不可以采用所有模块,都取同一个变量和函数名的方式处理。

适配器的实现方法?????

 文章只考虑系统中存在两个以上底层不同、但是具备相互替代性的系统。(简单的替换很简单,就不多说了),个人总结总共两个。大家可以根据自己的实际情况选择。
 1、通过宏定义:这种方式代码结构要好,也就是思路清晰不要满世界include?????

#include "adap.h"

test.c
int test()
{
	adap_init();
	
	for(;;)
	{
		if(adap_chek() == 1)
		{
			adap_deal();
		}
		
	}
	
	return 0;
}

adap.h

#ifndef __ADAP_H
#define __ADAP_H
#ifdef __cplusplus
#extern "c" {
#endif

#include "driverA.h"
// #include "driverB.h"

#define adap_init()   driverA_open(9600)

#define adap_chek()  if(driverAGetStat(reg_B) == READY){ \
						if(driverACheckData(dat_B) == OK){ \
							return 1	\
						}					\
						return 0;			\
					}						
					
#define adap_deal()  driverBDeal(dat_B)					

#ifdef __cplusplus
#extern "c" {
#endif
#endif

 2、通过静态函数区分:由于静态函数会自动屏蔽全局函数,所以这种方法比较简单,很适合混乱无比的代码。但是由于结构体名不可以重复,可能数据结构名上必须稍微有所区别。这里就不举例了,有需求的同学留言。??????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值