📄 finger_test.c
字号:
} is_ok = ACK_FAIL;
// 第二次录入指纹 is_ok = ACK_FAIL;
} if(FailNumber == ACK_COUNT) return 0;
printf(" Add second...\n");
time_number = 0x02; // 第二次添加
is_ok = ACK_FAIL;
FailNumber = 0;
while ((is_ok == ACK_FAIL) & (FailNumber < ACK_COUNT))
{
is_ok = add_Fingerprint(time_number, USER_NUMBER_H, USER_NUMBER_L, USER_RIGHT);
if (is_ok == ACK_SUCCESS)
{
printf(" Second OK!\n"); break;
}
else if (is_ok == ACK_FULL)
{
printf(" Full\n");
FailNumber++;
}
else if (is_ok == ACK_NOUSER)
{
printf(" ID exist!\n");
FailNumber++;
}
else
{ FailNumber++;
printf(" Error %dth!\n",FailNumber);
} is_ok = ACK_FAIL;
}
if(FailNumber == ACK_COUNT) return 0;
// 第三次录入指纹
printf(" Add third...\n");
time_number = 0x03; // 第三次添加
is_ok = ACK_FAIL;
FailNumber = 0;
while ((is_ok == ACK_FAIL) & (FailNumber < ACK_COUNT))
{ is_ok = ACK_FAIL;
is_ok = add_Fingerprint(time_number, USER_NUMBER_H, USER_NUMBER_L, USER_RIGHT);
if (is_ok == ACK_SUCCESS)
{
printf(" Third OK!\n"); break;
}
else if (is_ok == ACK_FULL)
{
printf(" Full\n");
FailNumber++;
}
else if (is_ok == ACK_NOUSER)
{
printf(" ID exist!\n");
FailNumber++;
}
else
{ FailNumber++;
printf(" Error %dth!\n",FailNumber);
} is_ok = ACK_FAIL;
}
if(FailNumber == ACK_COUNT) return 0; //is_ok = select_one_onecontrast(); return 1;
// printf("\n指纹添加成功\n");
// show_output();
}/*********************************************************************************************
* name: select_one_onecontrast
* func: 录入指纹与指定的用户指纹进行1:1的对比
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
unsigned char select_one_onecontrast()
{
unsigned char is_ok;
//printf("\n Input the contrast user ID!\n");
InputUsernumber(); // 获取用户号
//is_ok = one_morecontrast();
is_ok = one_onecontrast(USER_NUMBER_H, USER_NUMBER_L);
if (is_ok == ACK_SUCCESS)
{
printf("\n Constrast OK!\n");
}
else
{
printf("\n Constrast Error!\n");
}
return is_ok;
}
/*********************************************************************************************
* name: select_Get_Usernumber_right
* func: 获取已登录所有用户用户号及权限
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void select_Get_Usernumber_right(void)
{
unsigned char is_ok;
unsigned char user_number;
unsigned char n;
is_ok = Get_UserNumber_Right();//因为在串口接收联系4个0时,丢失了一个0,所以在帧解析的时候进行还原处理
if (is_ok == ACK_SUCCESS)
{
//printf("\n Get user information:\n");
user_number = RXBUF[9]*16 + RXBUF[10];
printf(" The total number is: %x\n", user_number);
for (n = 0; n < user_number; n++)
{
printf(" ID: %x%x, Right: %x\n", RXBUF[n*3+11], RXBUF[n*3+12], RXBUF[n*3+13]);
}
}
else
{
printf("\n Get user information failed!\n");
}
}/*********************************************************************************************
* name: select_read_userright
* func: 读取指定用户的权限
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void select_read_userright()
{
unsigned char is_ok;
unsigned char user_number; // 用户总数
unsigned char user_right;
unsigned int n;
//printf("\n Input the user ID:\n");
InputUsernumber(); // 获取用户号
Get_UserNumber_Right(); // 获取全部的用户号和用户权限
is_ok = 0;
user_number = RXBUF[9]*16 + RXBUF[10]; // 用户总数
for (n = 0; n < user_number; n++)
{
if ((USER_NUMBER_H == RXBUF[n*3+11]) & (USER_NUMBER_L == RXBUF[n*3+12]))
{
user_right = RXBUF[n*3+13];
is_ok = 1;
break;
}
}
if (is_ok == 1)
{
printf("\n The right of this ID is: %x\n", user_right);
}
else
{
printf("\n The ID doesn't exist!\n");
}
}/*********************************************************************************************
* name: select_del_alluser
* func: 删除所有用户
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void select_del_alluser()
{
unsigned char is_ok;
printf("\n Delete all user!\n");
is_ok = del_alluser();
if (is_ok == ACK_SUCCESS)
{
printf(" Delete all user success!\n");
}
else
{
printf(" Delete all user failed!\n");
}
}int user_manage(){ char mode; while(1) { printf("\n"); printf(" -----------------------------------\n"); printf(" User Manage!\n"); printf(" 1: Delete a user.\n"); printf(" 2: Delete all users.\n"); printf(" 3: Get a user's right.\n"); printf(" 4: Get all users' ID and right.\n"); printf(" -----------------------------------\n"); printf(" Please select operation:(9---exit)\n"); scanf("%c",&mode);//mode = uart_getch(); scanf("%c",&mode); switch (mode) { case '1': { select_del_oneuser(); break; } case '2': { select_del_alluser(); break; } case '3': { select_read_userright(); break; } case '4': { select_Get_Usernumber_right(); break; } case '9': { return 0; } default: ;//printf(" Wrong Operation!\n"); } } }int main(int argc, char ** argv){ int t,ret; char mode;// fd_set uart_w,uart_r;// struct timeval tv ; char *device = "/dev/tts/0"; // 设备路径,初始使用UART0 //printf("\n RFID Test! \n\n"); // 从UART1打印信息给终端 for(t=1;t<argc;t++) // 获取程序入口时输入的参数 { if(!strcmp(argv[t],"-d") && (argc > (t+1))) { device = argv[t+1]; } } if(!strcmp(device,"/dev/tts/1")) // 不允许使用UART1,因为它已和PC相连。 { printf("can not use /dev/tts/1\n"); return -1; } fd = open(device, O_RDWR); // 打开设备 if (fd < 0) // 设备打开失败 { printf("open device error\n"); return -1; } //FD_ZERO(&uart_r); //FD_SET(fd,&uart_r); // 设置串口接收端口集 init_ttyS(fd); // 初始化设备 while(1) { #if 0 while(FD_ISSET(fd,&uart_r)||FD_ISSET(fd,&uart_w)) // 检测串口是否有读写动作 { if(select(fd+1,&uart_r,&uart_w,NULL,&tv)<0) perror("select"); else { sleep(1); // 延时,以让串口发送完成 ret = read(fd, rcv_buf, 256); // 试图从串口接收数 据 if(ret>0) // 确实接收到了数据,并打印出来 { *(rcv_buf+ret)='\0'; printf(" The card ID : %s\n",rcv_buf); ret = 0; } } } #endif set_addmode(1); // 设置指纹添加模式,禁止重复 show_menu(); printf(" Please select operation:\n"); //scanf("%c",&mode); scanf("%c",&mode);//mode = uart_getch(); switch (mode) { case '1': { ret =select_add_Fingerprint(); if(ret) { printf(" Add user fingerprint success!\n"); } else { printf(" Add user fingerprint failed!\n"); } break; } case '2': { select_one_onecontrast(); break; } case '3': { user_manage(); //select_Get_Usernumber_right(); break; } case '4': { //select_del_alluser(); break; } default: ;//printf(" Wrong Operation!\n"); } scanf("%c",&mode); } close(fd); // 关闭打开的设备 return 0; // 正常返回}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -