📄 module.c
字号:
return FALSE;
case ANSWER_FAIL:
case ANSWER_SEARCH_FAIL:
FingerOff();
return FALSE;}}}
FingerOff();}}
//增加一般管理员指纹信息
void AddFinger_Adm(void)
{ static uchar i;
static uchar AH;//字节号
static uchar AL;//位号
uchar t = 0;
if(!Add_Deal)
{ FingerOn();
BellOn();
DelayNmS(200);
BellOff();
//1 读取模块Flash
if(ReadFingerFlash(FingerRecord,sizeof(FingerRecord),0,0) != OK)
{ DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}
//2 寻找下一个空位
for(i = 10;i<MAX_FINGER;i++)
{ AH = i/8;AL = i%8;
t = FingerRecord[AH]<<(7-AL);
t = t>>7;
if(0 == t)break;} //找到空位
if(i == MAX_FINGER)
{ //记录已满
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}
//发送ADD指令
CommBuf[0] = C_ADD_FINGER;
CommBuf[1] = 0;
CommBuf[2] = i;
Clear_Uart_Variable();
SendCommand(C_COMMAND,3,CommBuf);//发送增加指纹命令
//等待正确返回
Tc = 2;
while(!ReceiveOK&&Tc);
Clear_Uart_Variable();
if((SCC==CommBuf[CommBuf[3]+4])&&Tc)//数据包和校验判断 和 接收超时判断
{ if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
{//返回正确
//UARTSendByte(0xFF);
Add_Deal = 1;
Add_Deal2 = 1;}
else{Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
else
{ Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
//接收第一次按手指指令
if(Add_Deal2&&ReceiveOK)
{ Clear_Uart_Variable();
if(SCC==CommBuf[CommBuf[3]+4]) //数据包和校验判断
{ if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
{ //接收正确
//UARTSendByte(0xFC);
switch(CommBuf[5])
{ case ANSWER_OK:
BellOn();
BellTimer = 6;//中断中关闭Bell
Add_Deal2 = 0;
Add_Deal3 = 1;
break;
case ANSWER_OUT_TIME:
DisplayOutTime();
break;
case ANSWER_NUMBER_E:
DisplayFail();//增加失败
break;}
if(Add_Deal2)
{ Add_Deal = 0;
Add_Deal2 = 0;
FingerOff();
NowKey = NO_KEY;
return;}}
else
{ Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
else
{ Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
//接收第二次按手指
if(Add_Deal3&&ReceiveOK)
{ Add_Deal3 = 0;
Add_Deal = 0;
Clear_Uart_Variable();
if(SCC==CommBuf[CommBuf[3]+4]) //数据包和校验判断
{ if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
{//接收正确
switch(CommBuf[5])
{ case ANSWER_OK:
DisplayOK();
//4 更改指纹记录
for(i = 0;i<MAX_FINGER;i++)
{ AH = i/8;AL = i%8;
t = FingerRecord[AH]<<(7-AL);
t = t>>7;
if(0 == t)break;}//找到空位
FingerRecord[AH] |= 1<<AL;
t = WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0);
UARTSendByte(t);
if(OK == t);else DisplayErr();
break;
case ANSWER_OUT_TIME:
DisplayOutTime();
break;
case ANSWER_FAIL:
case ANSWER_NUMBER_E:
DisplayFail();//增加失败
break;}}
else DisplayErr();}
else DisplayErr();
FingerOff();
NowKey = NO_KEY;}}
void AddFingerModule(void)
{ static uchar i;
static uchar AH;//字节号
static uchar AL;//位号
uchar t = 0;
if(!Add_Deal)
{FingerOn();
BellOn();
DelayNmS(200);
BellOff();
//1 读取模块Flash
if(ReadFingerFlash(FingerRecord,sizeof(FingerRecord),0,0) != OK)
{ DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}
//2 寻找下一个空位
for(i = 0;i<MAX_FINGER;i++)
{ AH = i/8;
AL = i%8;
t = FingerRecord[AH]<<(7-AL);
t = t>>7;
if(0 == t)break;}//找到空位
if(i == MAX_FINGER)
{ //记录已满
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}
//发送ADD指令
CommBuf[0] = C_ADD_FINGER;
CommBuf[1] = 0;
CommBuf[2] = i;
Clear_Uart_Variable();
SendCommand(C_COMMAND,3,CommBuf);//发送增加指纹命令
//等待正确返回
Tc = 2;
while(!ReceiveOK&&Tc);
Clear_Uart_Variable();
if((SCC==CommBuf[CommBuf[3]+4])&&Tc) //数据包和校验判断 和 接收超时判断
{ if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
{ //返回正确
//UARTSendByte(0xFF);
Add_Deal = 1;
Add_Deal2 = 1;}
else{
Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
else{
Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
//接收第一次按手指指令
if(Add_Deal2&&ReceiveOK)
{ Clear_Uart_Variable();
if(SCC==CommBuf[CommBuf[3]+4]) //数据包和校验判断
{ if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
{ //接收正确
//UARTSendByte(0xFC);
switch(CommBuf[5])
{ case ANSWER_OK:
BellOn();
BellTimer = 6;//中断中关闭Bell
Add_Deal2 = 0;
Add_Deal3 = 1;
break;
case ANSWER_OUT_TIME:
DisplayOutTime();
break;
case ANSWER_NUMBER_E:
DisplayFail();//增加失败
break;}
if(Add_Deal2)
{ Add_Deal = 0;
Add_Deal2 = 0;
FingerOff();
NowKey = NO_KEY;
return;}}
else{
Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
else{
Add_Deal = 0;
Add_Deal2 = 0;
DisplayErr();
FingerOff();
NowKey = NO_KEY;
return;}}
//接收第二次按手指
if(Add_Deal3&&ReceiveOK)
{ Add_Deal3 = 0;
Add_Deal = 0;
Clear_Uart_Variable();
if(SCC==CommBuf[CommBuf[3]+4]) //数据包和校验判断
{ if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
{ //接收正确
switch(CommBuf[5])
{ case ANSWER_OK:
DisplayOK();
//4 更改指纹记录
for(i = 0;i<MAX_FINGER;i++)
{ AH = i/8;
AL = i%8;
t = FingerRecord[AH]<<(7-AL);
t = t>>7;
if(0 == t) break;}//找到空位
FingerRecord[AH] |= 1<<AL;
t = WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0);
UARTSendByte(t);
if(OK == t);else DisplayErr();
break;
case ANSWER_OUT_TIME:
DisplayOutTime();
break;
case ANSWER_FAIL:
case ANSWER_NUMBER_E:
DisplayFail();//增加失败
break;}}
else DisplayErr();}
else DisplayErr();
FingerOff();
NowKey = NO_KEY;}}
void EmptyFingerModule(void)
{ //1 指纹标识全部清零
memset(FingerRecord,0,sizeof(FingerRecord));
FingerOn();
BellOn();
DelayNmS(200);
BellOff();
//2 写入模块Flash中
if(OK == WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0));
else{ DisplayErr();
FingerOff();
return;}
//3 清空指纹库
if(OK == EmptyFinger())DisplayOK();
else DisplayErr();
FingerOff();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -