应用接口函数-匹配字符执行回调
一个简单的应用接口函数,采用检测字符,执行对应的回调函数,为以后查看,记录笔记。
步骤:
1、首先根据需求对象定义一个结构体,这里是一个字符对应一个处理函数,因此定义
typedef struct typ_BenSaSi2fsk_handler:
2、初始化结构体数组typBen_t typBenTable[];
3、编写供外部应用函数调用,将参数传入与表中字符对比,匹配则执行对应函数
void SendFreq_CodeToSlave(uint freq,char code);
4、编写回调函数。
a.c
#include "a.h"
//****************************************************
//初始化结构体数组(表) ,这么写的好处是方便后续的添加,及每个码方便编写单独的回调函数
//****************************************************
typBen_t typBenTable[]=
{
{'A',FreqCallBack},
{'B',FreqCallBack},
{'C',FreqCallBack},
{'D',FreqCallBack},
{'E',FreqCallBack},
};
//回调函数
void FreqCallBack(unsigned int freq,char code)
{
switch(code)
{
case 'A':
{
for(int i=0;i<550;i++)
{
}
}break;
case 'B':
{
}break;
default:
{
}break;
}
}
//供外部应用函数调用,将参数传入与表中字符对比,匹配则执行对应函数
void SendFreq_CodeToSlave(uint freq,char code)
{
P1OUT |= BIT3;//给下板上电
Start_Tone();
for(int i=0;i<array_sizeof(typBenTable);i++)
{
if(typBenTable[i].CmdString==code)
{
typBenTable[i].CmdOperate(freq,code);
}
}
Stop_Tone(); //关PWM
P1OUT &=~ BIT3;//给下板断电
}
a.h
#define array_sizeof(a) (sizeof(a) / sizeof(a[0])) //计算接口体数组组数
/* 对象结构体*/
typedef struct typ_Ben_handler
{
char CmdString; //命令码
void (*CmdOperate)(unsigned int Fre,char Cmd);//命令执行的功能操作
} typBen_t;
void SendFreq_CodeToSlave(uint freq,char code);
void FreqCallBack(unsigned int freq,char code);