c语言模块功能集合方法---伪类创建

最近有使用到一个模块,编程使用了C语言伪类,整合模块时觉的很好用,以下贴出一个简略的代码,方便自己多多参考

 

/*
使用C语言伪类,可以很好的整合模块的编程
使得模块思路更加清晰,并避免程序变量混乱
现象
*/


//=========C语言伪类.h=====================
#ifndef _AS608_APP_H
#define _AS608_APP_H
#include "stm32f10x.h"

//模块合成
//录指纹  -->操作  
typedef struct _Add_Finger {
	void (*GetFinger1)(void);     //指纹录入1
	void (*GetFinger2)(void);     //指纹录入2
	void (*EmitFinger)(void);     //生成指纹模版
	void (*AddFingerID)(u16);     //添加指纹ID
} Add_ModeType;
//删除模式 -->操作
typedef struct _Del_Finger {
	void (*DelFingerOneID)(u16 ); //删除单个指纹ID 
	void (*DelFingerAllID)(void); //删除整个指纹库 
} Del_ModeType;

//子类定义
typedef struct _AS608 {
	u8  *AS608Mode  ;             //AS608模式         (变量)
	u8  *addModePart;             //录入指纹步骤      (变量)
	u16 *fingerIDMax;             //指纹最大容量      (变量)
	u16 *fingerN;	              //现在录入指纹个数  (变量)
	Add_ModeType  *Add_Mode;      //录入指纹操作      (操作指向的父类)
	Del_ModeType  *Del_Mode;      //删除指纹操作      (操作指向的父类)
	void (*BrushFinger)(void);    //刷指纹            (操作指向的父类)
} AS608Type;

extern AS608Type AS608; //整个模块的操作

#endif


//=========C语言伪类.c=====================
#include "AS608_APP.h"
#include "delay.h"
#include "AS608_1.h"

//==录指纹==========================================================
//指纹录入1
void Add_FR1(void)
{
	printf(" 正在指纹录入1 \n");
}
//指纹录入2
void Add_FR2(void)
{
	printf(" 正在指纹录入2 \n");
}
//指纹比较,生成特征
void FR1_than_FR2(void)
{
	printf("指纹比较,生成特征\n");
}
//储存指纹ID
void SaveFingerprint(u16 ID)
{
	printf(" 正在保存指纹ID为 : %d \n",ID);
}


//删除单个指纹======================================================
void delectOneFingerprint(u16 ID)
{
	printf(" 正在删除指ID : %d \n",ID);
}
//删除指纹库
void DelectAllFingerprint(void)
{
	printf(" 正在删除指纹库 \n");
}


//刷指纹 ============================================================
void Refresh_FR(void)
{
	printf(" 正在刷指纹 ");
}
//===================================================================
//===以上为实质的函数=====================




//===以下为赋值父类实体================================================
//录入指纹
Add_ModeType Add_Mode = {
	.GetFinger1  =  Add_FR1,			  //指纹录入1
	.GetFinger2  = 	Add_FR2,			  //指纹录入2
	.EmitFinger  =  FR1_than_FR2,		  //生成指纹模版
	.AddFingerID =  SaveFingerprint 	  //添加指纹ID
};
//删除指纹
Del_ModeType Del_Mode = {
	.DelFingerOneID = delectOneFingerprint, //删除单个指纹ID
	.DelFingerAllID = DelectAllFingerprint  //删除整个指纹库
};

//==以下为赋值子类实体=================================================
u8 AS608Mode    = 0;
u8 AS608AddPart = 0;
AS608Type AS608 = {
	.AS608Mode     = &AS608Mode,          //AS608模式
	.addModePart   = &AS608AddPart,       //录入指纹步骤
	.fingerIDMax   = &AS608Para.PS_max,   //指纹最大容量
	.fingerN       = &ValidN	,         //现在录入指纹个数
	.Add_Mode      = &Add_Mode,           //录入指纹操作
	.Del_Mode      = &Del_Mode,           //删除指纹操作
	.BrushFinger   = Refresh_FR  		  //刷指纹
};

//================================
//====以下是伪类的运用

//变量赋值
AS608.AS608Mode[0]   = 0 ; //赋值AS608模式值
AS608.addModePart[0] = 0 ; //赋值录入指纹步骤

//运用伪类操作
AS608.Add_Mode->GetFinger1();  	     //录入指纹模式,指纹录入1
AS608.Add_Mode->GetFinger2(); 	     //录入指纹模式,指纹录入2
AS608.Add_Mode->GetFinger2();        //录入指纹模式,生成指纹模版
AS608.Add_Mode->AddFingerID(ID);     //录入指纹模式,添加指纹ID

AS608.Del_Mode->DelFingerOneID(ID);  //删除指纹模式,删除单个指纹ID
AS608.Del_Mode->DelFingerAllID();	 //删除指纹模式,删除整个指纹库

AS608->BrushFinger();                //刷指纹模式

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值