📄 util.c
字号:
return ERROR;
}
}
for(i=0; i<6; i++)
{
disp_buf[i]='0';
}
disp_buf[5]=0;
while(1)
{
reverse=1;
GLCD_Locate(80,48);
dprintf(disp_buf,5);
key=0;
do{}while(!key); // 读键盘
key_judge();
if((key>=0x30) && (key<=0x39))
{
disp_buf[0]=disp_buf[1];
disp_buf[1]=disp_buf[2];
disp_buf[2]=disp_buf[3];
disp_buf[3]=disp_buf[4];
disp_buf[4]=key;
disp_buf[5]=0x00;
}
if(key=='F')
{
if(id_proc(disp_buf))
{
for(i=0; i<5; i++) End_user_id[i]=disp_buf[i];
reverse=0;
GLCD_Locate(80,48);
dprintf(disp_buf,5);
break;
}
else
pulse=3;
}
if(key=='C')
{
reverse=0;
return ERROR;
}
}
if(strcmp(Start_user_id, End_user_id)>0)
{
flag=TRUE;
reverse=0;
pulse=3;
}
}while(flag);
reverse=0;
return OK;
}
///////////////////////////////////////////////////////////////////////////////
// 设置出入条件时间信息
///////////////////////////////////////////////////////////////////////////////
bit set_enter_time_proc()
{
idata uint temp, temps, tempe;
bdata bit flag;
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("出入时间设置",12);
GLCD_Locate(0,32);
dprintf("开始时间: : ",15);
GLCD_Locate(0,48);
dprintf("终止时间: : ",15);
reverse=1;
GLCD_Locate(80,32);
dprintf("00",2);
reverse=0;
GLCD_Locate(104,32);
dprintf("00",2);
GLCD_Locate(80,48);
dprintf("23",2);
GLCD_Locate(104,48);
dprintf("59",2);
disp_buf[0]='0';
disp_buf[1]='0';
disp_buf[2]=0x00;
do
{
flag=0;
while(1)
{
reverse=1;
GLCD_Locate(80,32);
dprintf(disp_buf,2);
key=0;
do{}while(!key); // 读键盘
key_judge();
if((key>=0x30) && (key<=0x39))
{
disp_buf[0]=disp_buf[1];
disp_buf[1]=key;
disp_buf[2]=0x00;
}
if(key=='F')
{
temp=(disp_buf[0]-0x30)*10+(disp_buf[1]-0x30);
if(temp<=23)
{
Start_time[0]=disp_buf[0];
Start_time[1]=disp_buf[1];
reverse=0;
GLCD_Locate(80,32);
dprintf(disp_buf,2);
break;
}
else
pulse=3;
}
if(key=='C')
{
reverse=0;
return ERROR;
}
}
disp_buf[0]='0';
disp_buf[1]='0';
disp_buf[2]=0x00;
while(1)
{
reverse=1;
GLCD_Locate(104,32);
dprintf(disp_buf,2);
key=0;
do{}while(!key); // 读键盘
key_judge();
if((key>=0x30) && (key<=0x39))
{
disp_buf[0]=disp_buf[1];
disp_buf[1]=key;
disp_buf[2]=0x00;
}
if(key=='F')
{
temp=(disp_buf[0]-0x30)*10+(disp_buf[1]-0x30);
if(temp<=59)
{
Start_time[2]=disp_buf[0];
Start_time[3]=disp_buf[1];
reverse=0;
GLCD_Locate(104,32);
dprintf(disp_buf,2);
break;
}
else
pulse=3;
}
if(key=='C')
{
reverse=0;
return ERROR;
}
}
disp_buf[0]='2';
disp_buf[1]='3';
disp_buf[2]=0x00;
while(1)
{
reverse=1;
GLCD_Locate(80,48);
dprintf(disp_buf,2);
key=0;
do{}while(!key); // 读键盘
key_judge();
if((key>=0x30) && (key<=0x39))
{
disp_buf[0]=disp_buf[1];
disp_buf[1]=key;
disp_buf[2]=0x00;
}
if(key=='F')
{
temp=(disp_buf[0]-0x30)*10+(disp_buf[1]-0x30);
if(temp<=23)
{
End_time[0]=disp_buf[0];
End_time[1]=disp_buf[1];
reverse=0;
GLCD_Locate(80,48);
dprintf(disp_buf,2);
break;
}
else
{
pulse=3;
}
}
if(key=='C')
{
reverse=0;
return ERROR;
}
}
disp_buf[0]='5';
disp_buf[1]='9';
disp_buf[2]=0x00;
while(1)
{
reverse=1;
GLCD_Locate(104,48);
dprintf(disp_buf,2);
key=0;
do{}while(!key); // 读键盘
key_judge();
if((key>=0x30) && (key<=0x39))
{
disp_buf[0]=disp_buf[1];
disp_buf[1]=key;
disp_buf[2]=0x00;
}
if(key=='F')
{
temp=(disp_buf[0]-0x30)*10+(disp_buf[1]-0x30);
if(temp<=59)
{
End_time[2]=disp_buf[0];
End_time[3]=disp_buf[1];
reverse=0;
GLCD_Locate(104,48);
dprintf(disp_buf,2);
break;
}
else
{
pulse=3;
}
break;
}
if(key=='C')
{
reverse=0;
return ERROR;
}
}
temp=(Start_time[0]-0x30)*10 + (Start_time[1]-0x30);
temps=temp*60;
temp=(Start_time[2]-0x30)*10 + (Start_time[3]-0x30);
temps+=temp;
temp=(End_time[0]-0x30)*10 + (End_time[1]-0x30);
tempe=temp*60;
temp=(End_time[2]-0x30)*10 + (End_time[3]-0x30);
tempe+=temp;
if(tempe <= temps)
{
reverse=0;
flag=1;
}
}while(flag);
reverse=0;
return OK;
}
///////////////////////////////////////////////////////////////////////////////
// 显示待机时间
///////////////////////////////////////////////////////////////////////////////
void disptime()
{
read_time(); // 读取系统时间
GLCD_ClearScreen ();
GLCD_Locate(24,16);
reverse=0;
LcdPutDigit(cur_time[8]); // 时
GLCD_Locate(40,16);
LcdPutDigit(cur_time[9]); // 分
GLCD_Locate(56,16);
LcdPutDigit(10+0x30);
GLCD_Locate(72,16);
LcdPutDigit(cur_time[10]);
GLCD_Locate(88,16);
LcdPutDigit(cur_time[11]);
disp_buf[0]=cur_time[0];
disp_buf[1]=cur_time[1];
disp_buf[2]=cur_time[2];
disp_buf[3]=cur_time[3];
disp_buf[4]='/';
disp_buf[5]=cur_time[4];
disp_buf[6]=cur_time[5];
disp_buf[7]='/';
disp_buf[8]=cur_time[6];
disp_buf[9]=cur_time[7];
disp_buf[10]=0x00;
GLCD_Locate(16,48);
dprintf(disp_buf,10);
GLCD_Locate(96,48);
dprintf(week[cur_time[14]-0x30],2);
GLCD_Locate(112,48);
dprintf(" ",1);
}
///////////////////////////////////////////////////////////////////////////////
// 检查USER_ID的合法性
///////////////////////////////////////////////////////////////////////////////
bit id_proc(char *id)
{
if(id[0]>'6')return ERROR; // 非法
if(id[0]<'6')return OK; // 合法
if(id[0]=='6')
{
if(id[1]>'5')return ERROR; // 非法
if(id[1]<'5')return OK;
if(id[1]=='5')
{
if(id[2]>'5')return ERROR;
if(id[2]<'5')return OK;
if(id[2]=='5')
{
if(id[3]>'3')return ERROR;
if(id[3]<'3')return OK;
if(id[3]=='3')
{
if(id[4]>'4')return ERROR;
else return OK;
}
}
}
}
}
///////////////////////////////////////////////////////////////////////////////
// 增加字符串,按照数据增加方式进行
///////////////////////////////////////////////////////////////////////////////
void id_add(char *id)
{
id[4]=id[4]+1;
if(id[4]>'9')
{
id[4]='0';
id[3]=id[3]+1;
}
if(id[3]>'9')
{
id[3]='0';
id[2]=id[2]+1;
}
if(id[2]>'9')
{
id[2]='0';
id[1]=id[1]+1;
}
if(id[1]>'9')
{
id[1]='0';
id[0]=id[0]+1;
}
}
///////////////////////////////////////////////////////////////////////////////
// 将字符串转换为整数
///////////////////////////////////////////////////////////////////////////////
uint asctoint(char *str)
{
idata uchar i;
idata uchar j;
idata uchar k;
idata uint temp;
idata uint temp1;
temp=str[4]-0x30; // 个
temp1=(str[3]-0x30)*10; // 十
temp=temp+temp1;
temp1=(str[2]-0x30)*100; // 千
temp=temp+temp1;
temp1=0;
for(i='0';i<str[1]; i++) // 千
{
for(j=0;j<=9;j++)
temp1=temp1+100;
}
temp=temp+temp1;
temp1=0;
for(i='0';i<str[0]; i++) // 万
{
for(j=0;j<=9;j++)
{
for(k=0;k<=9;k++)
temp1=temp1+100;
}
}
temp=temp+temp1;
return temp;
}
///////////////////////////////////////////////////////////////////////////////
// 注册管理员,指纹注册
///////////////////////////////////////////////////////////////////////////////
void manage_reg_proc()
{
ManageClass='M'; // 管理员
AppClass='F'; // 指纹用户
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("注册管理用户",12);
reverse=0;
if(input_id_proc())
{
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("注册管理用户",12);
reverse=0;
Enroll();
}
}
///////////////////////////////////////////////////////////////////////////////
// 注册指纹用户
///////////////////////////////////////////////////////////////////////////////
void fp_reg_proc()
{
ManageClass='G'; // 普通用户
AppClass='F'; // 指纹用户
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("注册指纹用户",12);
if(input_id_proc())
{
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("注册指纹用户",12);
Enroll();
}
}
///////////////////////////////////////////////////////////////////////////////
// 密码用户注册
///////////////////////////////////////////////////////////////////////////////
void code_reg_proc()
{
ManageClass='G'; // 管理员
AppClass='P'; // 密码用户
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("注册密码用户",12);
if(code_proc())
{
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("注册密码用户",12);
Enroll();
}
}
///////////////////////////////////////////////////////////////////////////////
// 删除单个用户
///////////////////////////////////////////////////////////////////////////////
void delete_proc()
{
idata uchar i;
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("删除用户",8);
if(input_party_proc())
{
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("删除用户",8);
GLCD_Locate(32,32);
dprintf("确定吗?",8);
while(1)
{
key=0;
do{}while(!key); // 读键盘
key_judge();
if(key=='F') break; // 确定
if(key=='C') return; // 退出
}
GLCD_Locate(32,32);
dprintf("稍等....",8);
for(i=0;i<5;i++)
User_id[i]=Start_user_id[i];
i=0;
GLCD_Locate(32,48);
dprintf(User_id,5);
while(strcmp(User_id, End_user_id)<=0)
{
if(i>100)
{
i=0;
GLCD_ClearScreen ();
GLCD_Locate(0,0);
dprintf("删除用户",8);
GLCD_Locate(32,32);
dprintf("稍等....",8);
GLCD_Locate(32,48);
dprintf(User_id,5);
}
i++;
Delete_one(); // 合法用户分组编号
id_add(User_id);
}
}
}
///////////////////////////////////////////////////////////////////////////////
// 逐个设置用户出入条件
///////////////////////////////////////////////////////////////////////////////
void enter_proc()
{
idata uchar i;
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("出入时间设置",12);
if(input_party_proc())
{
if(set_enter_time_proc())
{
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("出入时间设置",12);
GLCD_Locate(32,32);
dprintf("稍等....",8);
for(i=0;i<5;i++)
{
User_id[i]=Start_user_id[i];
}
i=0;
GLCD_Locate(32,48);
dprintf(User_id,5);
while(strcmp(User_id, End_user_id)<=0)
{
if(i>100)
{
i=0;
GLCD_ClearScreen ();
GLCD_Locate(0,0);
dprintf("出入时间设置",12);
GLCD_Locate(32,32);
dprintf("稍等....",8);
GLCD_Locate(32,48);
dprintf(User_id,5);
}
i++;
One_enter(); // 合法分组输入,合法进入条件
Wait10ms();
Wait10ms();
id_add(User_id);
}
}
}
}
///////////////////////////////////////////////////////////////////////////////
// 清空数据库
///////////////////////////////////////////////////////////////////////////////
void erase_proc()
{
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("清数据库",8);
GLCD_Locate(32,32);
dprintf("确定吗?",8);
while(1)
{
key=0;
do{}while(!key); // 读键盘
key_judge();
if(key=='F') break; // 确定
if(key=='C') return; // 退出
}
GLCD_Locate(32,32);
dprintf("稍等....",8);
Erase_user();
}
///////////////////////////////////////////////////////////////////////////////
// 清报警电话
///////////////////////////////////////////////////////////////////////////////
void tele_reg()
{
idata uchar i, j;
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("注册报警话号",12);
GLCD_Locate(0,32);
dprintf("话号:",6);
reverse=1;
GLCD_Locate(16,48);
dprintf(" ",11);
for(i=0;i<12;i++)
tele_code[i]='F'; // 原始电话号码
for(i=0;i<12;i++)
disp_buf[i]=' ';
while(1)
{
reverse=1;
GLCD_Locate(16,48);
dprintf(disp_buf,11);
key=0;
do{}while(!key); // 读键盘
key_judge();
if((key>=0x30) && (key<=0x39))
{
disp_buf[0]=disp_buf[1];
disp_buf[1]=disp_buf[2];
disp_buf[2]=disp_buf[3];
disp_buf[3]=disp_buf[4];
disp_buf[4]=disp_buf[5];
disp_buf[5]=disp_buf[6];
disp_buf[6]=disp_buf[7];
disp_buf[7]=disp_buf[8];
disp_buf[8]=disp_buf[9];
disp_buf[9]=disp_buf[10];
disp_buf[10]=key;
disp_buf[11]=0x00;
}
if(key=='F')
{
if((disp_buf[3]==' ')&&(disp_buf[4]==' '))
{
pulse=3; // 电话号码不足7位
}
else
{
j=0;
for(i=0;i<11;i++)
{
if(disp_buf[i]!=' ')
{
tele_code[j++]=disp_buf[i]; // 获取电话号码
}
}
break;
}
}
if(key=='C')
{
reverse=0;
return;
}
}
if(wieformat==1) // 自定义门禁方式
reg_tele(); // 注册报警话号
}
///////////////////////////////////////////////////////////////////////////////
// 清报警电话
///////////////////////////////////////////////////////////////////////////////
void tele_del()
{
GLCD_ClearScreen ();
GLCD_Locate(0,0);
reverse=0;
dprintf("清报警话号",10);
GLCD_Locate(32,32);
dprintf("确定吗?",8);
while(1)
{
key=0;
do{}while(!key); // 读键盘
key_judge();
if(key=='F') break; // 确定
if(key=='C') return; // 退出
}
if(wieformat==1) // 自定义门禁方式
erase_tele(); // 清空所有报警话号
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -