标题:
NFC刷卡机工程 基于TAM3 一个真实项目工程!
[打印本页]
作者:
athunwer
时间:
2017-1-12 15:38
标题:
NFC刷卡机工程 基于TAM3 一个真实项目工程!
这是一个真实项目工程!
项目目的:做一套刷卡系统,识别并控制读写NFC卡中的信息,其中NFC是主动卡(含电源MCU,并有私有命令)
本项目是系统里面刷卡端,功能是发送无线命令到NFC卡,控制卡信息信息写入,读取刷卡记录,
本代码包括一个LCD屏,一个键盘,拼音输入法,NFC控制器,低功耗设置等
0.png
(63.33 KB, 下载次数: 155)
下载附件
2017-1-13 01:41 上传
完整代码下载:
ZCardA.zip
(582.06 KB, 下载次数: 22)
2017-1-12 15:29 上传
点击文件名下载附件
下载积分: 黑币 -5
部分源码预览:
#include <tam3lib.h>
#include <fcard_hal.h>
#include "flash_initiator.h"
#include "uart_dep_initiator.h"
#include "dep_initiator.h"
extern int main_app_init_user(void);
extern int main_app_init_finger(void);
extern int main_app_card_login(void);
extern int main_app_set_datetime(void);
extern int main_app_set_location(void);
extern int main_app_set_password(void);
extern int main_app_card_format(void);
static void show_main_menu(int index){
static char *menu[]={
"设置本机密码",
"设置日期时间",
"设置位置信息",
"初始化卡用户",
"下载用户指纹",
"卡管理员登录",
"格式化卡系统"
};
fcard_lcd_clear();
fcard_lcd_printh1("%d:%s",index+0,menu[index+0]);
fcard_lcd_printh2("%d:%s",index+1,menu[index+1]);
fcard_lcd_printh3("%d:%s",index+2,menu[index+2]);
fcard_lcd_printh4("%d:%s",index+3,menu[index+3]);
}
int get_choice(void){
int select = 0;
do{
mdelay(50);
select = fcard_kbd_peek();
if (select == 27 || select == 13)
break;
}while(select<'0'||select>'9');
return select;
}
int check_quit(void){
int select = 0;
do{
mdelay(50);
select = fcard_kbd_peek();
}while(select!=27&&select!=13);
return select;
}
int main_setting(){
int select=0;
for(;;){
show_main_menu(1);
select = get_choice();
if (select == 27) break;
switch(select){
case '0':
printf("select 0\r\n");
fcard_lcd_clear();
main_app_set_password();
//select=check_quit();
break;
case '1':
printf("select 1\r\n");
fcard_lcd_clear();
main_app_set_datetime();
//select=check_quit();
break;
case '2':
printf("select 2\r\n");
fcard_lcd_clear();
main_app_set_location();
break;
case '3':
printf("select 3\r\n");
fcard_lcd_clear();
main_app_init_user();
break;
case '4':
printf("select 4\r\n");
fcard_lcd_clear();
main_app_init_finger();
break;
case '5':
printf("select 5\r\n");
fcard_lcd_clear();
main_app_card_login();
break;
case '6':
printf("select 6\r\n");
fcard_lcd_clear();
main_app_card_format();
break;
default:
printf("default\r\n");
//fcard_lcd_clear();
break;
}
}
return 0;
}
int main_login(){
int i,key,length;
int timeout=15000;
char line[36];
char password[36];
char showinfo[36];
fcard_beep_off();
if (!hasAdministratorPassword()){
return main_setting();
}
fcard_kbd_flush();
fcard_lcd_clear();
sprintf(line,"请输入管理员密码");
fcard_lcd_printh1(line);
memset(showinfo,0x00,sizeof(showinfo));
memset(password,0x00,sizeof(password));
length = 0;
for (timeout=15000;timeout>0;){
if (length>=8)break;
key = fcard_kbd_peek();
if (key==0){
mdelay(20);
timeout -= 20;
continue;
}
if (key>='0'&&key<='9'){
showinfo[length]='*';
password[length++]=key;
fcard_lcd_printh2(showinfo);
fcard_lcd_printh3(password);
}
if (key==27){
if (length>0){
showinfo[--length]=' ';
password[length]=' ';
//fcard_kbd_flush();
//fcard_lcd_clear();
fcard_lcd_printh2(showinfo);
fcard_lcd_printh3(password);
}else{
break;
}
}
if (key==13){
break;
}
}
if (strlen(password)<=0){
//timeout -= 20;
//continue;
}else if (strncmp(password,administratorPassword,8)==0){
main_setting();
}else{
sprintf(line," 输入密码错误 ");
fcard_lcd_printh4(line);
}
return 0;
}
int main(void){
struct tm itm;
unsigned char line[32];
unsigned char txbuff[128];
char username[20];
int key,i;
int length;
broadcastinfo_t info;
fcard_sysclk_init();
fcard_nvic_init();
fcard_leds_init();
fcard_beep_init();
fcard_flash_init();
fcard_kbd_init();
fcard_lcd_init();
fcard_rtc_init();
fcard_uart3_init(BAUD_115200,8,0,1);
//formatSystemZone();
initFingerFeatureZone();
if (!hasFingerBackgroundPicture()){
saveFingerBackgroundPictureToFlash();
}
fcard_kbd_flush();
fcard_lcd_clear();
zigbeeProtocolProcessInit();
memset(username,0x00,sizeof(username));
for (;;){
fcard_lcd_clear();
fcard_get_datetime(&itm);
sprintf(line,"仁石科技有限公司");
fcard_lcd_printh1(line);
sprintf(line," %04d-%02d-%02d ", itm.tm_year,itm.tm_mon,itm.tm_mday);
fcard_lcd_printh2(line);
sprintf(line," %02d:%02d:%02d ", itm.tm_hour,itm.tm_min,itm.tm_sec);
fcard_lcd_printh3(line);
if (strlen(username)>0){
fcard_lcd_printh4(username);
fcard_beep_off();
}else{
if (hasLocationInformation()){
int istr=strlen(locationInformation)/2;
if (istr>=8){
istr=0;
}else{
istr=(8-istr)/2;
}
for (i=0;i<istr*2;i++){
username[i]=' ';
}
sprintf(&username[istr*2],"%s",locationInformation);
fcard_lcd_printh4(username);
fcard_beep_off();
}
}
memset(&info,0x00,sizeof(info));
if (hasLocationInformation()){
snprintf(info.location,96,"%s",locationInformation);
}
snprintf(info.time,32,"%04d-%02d-%02d %02d:%02d:%02d",itm.tm_year,itm.tm_mon,itm.tm_mday,itm.tm_hour,itm.tm_min,itm.tm_sec);
length = depMakeFrame(txbuff,0xFF,0x20,(unsigned char*)&info,sizeof(info));
if (zigbeeProtocolTalkToTarget(txbuff,length,line,22)==22){
if (line[0]==0xAA && line[21]==0x55 && line[1]==0x00){
snprintf(username,16,"%s",&line[4]);
fcard_beep_on();
}else{
memset(username,0x00,sizeof(username));
}
}else{
memset(username,0x00,sizeof(username));
}
key = fcard_kbd_peek();
if (key==13){
main_login();
}
}
zigbeeProtocolProcessExit();
return 0;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1