久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6077|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

NFC刷卡機(jī)工程 基于TAM3 一個(gè)真實(shí)項(xiàng)目工程!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這是一個(gè)真實(shí)項(xiàng)目工程!
項(xiàng)目目的:做一套刷卡系統(tǒng),識(shí)別并控制讀寫(xiě)NFC卡中的信息,其中NFC是主動(dòng)卡(含電源MCU,并有私有命令)
本項(xiàng)目是系統(tǒng)里面刷卡端,功能是發(fā)送無(wú)線(xiàn)命令到NFC卡,控制卡信息信息寫(xiě)入,讀取刷卡記錄,
本代碼包括一個(gè)LCD屏,一個(gè)鍵盤(pán),拼音輸入法,NFC控制器,低功耗設(shè)置等


完整代碼下載:
ZCardA.zip (582.06 KB, 下載次數(shù): 22)

部分源碼預(yù)覽:
  1. #include <tam3lib.h>
  2. #include <fcard_hal.h>

  3. #include "flash_initiator.h"
  4. #include "uart_dep_initiator.h"
  5. #include "dep_initiator.h"

  6. extern int main_app_init_user(void);
  7. extern int main_app_init_finger(void);
  8. extern int main_app_card_login(void);
  9. extern int main_app_set_datetime(void);
  10. extern int main_app_set_location(void);
  11. extern int main_app_set_password(void);
  12. extern int main_app_card_format(void);

  13. static void show_main_menu(int index){
  14.     static char *menu[]={
  15.         "設(shè)置本機(jī)密碼",
  16.         "設(shè)置日期時(shí)間",
  17.         "設(shè)置位置信息",
  18.         "初始化卡用戶(hù)",
  19.         "下載用戶(hù)指紋",
  20.         "卡管理員登錄",
  21.         "格式化卡系統(tǒng)"
  22.     };   
  23.     fcard_lcd_clear();
  24.     fcard_lcd_printh1("%d:%s",index+0,menu[index+0]);
  25.     fcard_lcd_printh2("%d:%s",index+1,menu[index+1]);
  26.     fcard_lcd_printh3("%d:%s",index+2,menu[index+2]);
  27.     fcard_lcd_printh4("%d:%s",index+3,menu[index+3]);
  28. }

  29. int get_choice(void){
  30.     int select = 0;
  31.     do{
  32.         mdelay(50);
  33.         select = fcard_kbd_peek();
  34.         if (select == 27 || select == 13)
  35.             break;
  36.     }while(select<'0'||select>'9');
  37.     return select;
  38. }
  39. int check_quit(void){
  40.     int select = 0;
  41.     do{
  42.         mdelay(50);
  43.         select = fcard_kbd_peek();
  44.     }while(select!=27&&select!=13);
  45.     return select;
  46. }

  47. int main_setting(){
  48.     int select=0;   
  49.     for(;;){
  50.         show_main_menu(1);
  51.         select = get_choice();  
  52.         if (select == 27) break;
  53.         switch(select){
  54.             case '0':
  55.                 printf("select 0\r\n");
  56.                 fcard_lcd_clear();
  57.                 main_app_set_password();
  58.                 //select=check_quit();
  59.                 break;
  60.             case '1':
  61.                 printf("select 1\r\n");
  62.                 fcard_lcd_clear();
  63.                 main_app_set_datetime();   
  64.                 //select=check_quit();            
  65.                 break;
  66.             case '2':
  67.                 printf("select 2\r\n");
  68.                 fcard_lcd_clear();
  69.                 main_app_set_location();   
  70.                 break;
  71.             case '3':
  72.                 printf("select 3\r\n");
  73.                 fcard_lcd_clear();
  74.                 main_app_init_user();  
  75.                 break;
  76.             case '4':
  77.                 printf("select 4\r\n");
  78.                 fcard_lcd_clear();
  79.                 main_app_init_finger();  
  80.                 break;
  81.             case '5':
  82.                 printf("select 5\r\n");
  83.                 fcard_lcd_clear();
  84.                 main_app_card_login();  
  85.                 break;
  86.             case '6':
  87.                 printf("select 6\r\n");
  88.                 fcard_lcd_clear();
  89.                 main_app_card_format();  
  90.                 break;            
  91.             default:
  92.                 printf("default\r\n");
  93.                 //fcard_lcd_clear();
  94.                 break;
  95.         }
  96.     }  
  97.     return 0;
  98. }
  99. int main_login(){
  100.     int i,key,length;
  101.     int timeout=15000;
  102.     char line[36];
  103.     char password[36];
  104.     char showinfo[36];
  105.    
  106.     fcard_beep_off();
  107.    
  108.     if (!hasAdministratorPassword()){
  109.         return main_setting();
  110.     }
  111.    
  112.     fcard_kbd_flush();
  113.     fcard_lcd_clear();
  114.     sprintf(line,"請(qǐng)輸入管理員密碼");
  115.     fcard_lcd_printh1(line);
  116.     memset(showinfo,0x00,sizeof(showinfo));
  117.     memset(password,0x00,sizeof(password));
  118.     length = 0;
  119.     for (timeout=15000;timeout>0;){
  120.         if (length>=8)break;
  121.         key = fcard_kbd_peek();
  122.         if (key==0){
  123.             mdelay(20);
  124.             timeout -= 20;
  125.             continue;
  126.         }
  127.         if (key>='0'&&key<='9'){
  128.             showinfo[length]='*';
  129.             password[length++]=key;
  130.             fcard_lcd_printh2(showinfo);
  131.             fcard_lcd_printh3(password);
  132.         }
  133.         if (key==27){
  134.             if (length>0){
  135.                 showinfo[--length]=' ';
  136.                 password[length]=' ';
  137.                 //fcard_kbd_flush();
  138.                 //fcard_lcd_clear();                        
  139.                 fcard_lcd_printh2(showinfo);
  140.                 fcard_lcd_printh3(password);  
  141.             }else{
  142.                 break;
  143.             }                 
  144.         }
  145.         if (key==13){
  146.             break;
  147.         }
  148.     }
  149.     if (strlen(password)<=0){
  150.         //timeout -= 20;
  151.         //continue;
  152.     }else if (strncmp(password,administratorPassword,8)==0){
  153.         main_setting();
  154.     }else{
  155.         sprintf(line,"  輸入密碼錯(cuò)誤  ");
  156.         fcard_lcd_printh4(line);
  157.     }   
  158.     return 0;
  159. }

  160. int main(void){
  161.     struct tm  itm;
  162.     unsigned char  line[32];
  163.     unsigned char  txbuff[128];
  164.     char        username[20];
  165.     int key,i;
  166.     int length;
  167.     broadcastinfo_t  info;
  168.    
  169.     fcard_sysclk_init();
  170.     fcard_nvic_init();
  171.     fcard_leds_init();
  172.     fcard_beep_init();
  173.     fcard_flash_init();
  174.     fcard_kbd_init();
  175.     fcard_lcd_init();
  176.     fcard_rtc_init();
  177.     fcard_uart3_init(BAUD_115200,8,0,1);
  178.     //formatSystemZone();
  179.     initFingerFeatureZone();
  180.     if (!hasFingerBackgroundPicture()){
  181.         saveFingerBackgroundPictureToFlash();
  182.     }

  183.     fcard_kbd_flush();
  184.     fcard_lcd_clear();
  185.     zigbeeProtocolProcessInit();
  186.     memset(username,0x00,sizeof(username));
  187.     for (;;){
  188.         fcard_lcd_clear();
  189.         fcard_get_datetime(&itm);
  190.         sprintf(line,"仁石科技有限公司");
  191.         fcard_lcd_printh1(line);         
  192.         sprintf(line,"   %04d-%02d-%02d   ", itm.tm_year,itm.tm_mon,itm.tm_mday);
  193.         fcard_lcd_printh2(line);   
  194.         sprintf(line,"    %02d:%02d:%02d    ", itm.tm_hour,itm.tm_min,itm.tm_sec);
  195.         fcard_lcd_printh3(line);
  196.         if (strlen(username)>0){
  197.             fcard_lcd_printh4(username);
  198.             fcard_beep_off();
  199.         }else{
  200.              if (hasLocationInformation()){
  201.                 int istr=strlen(locationInformation)/2;
  202.                 if (istr>=8){
  203.                     istr=0;
  204.                 }else{
  205.                     istr=(8-istr)/2;
  206.                 }
  207.                 for (i=0;i<istr*2;i++){
  208.                     username[i]=' ';
  209.                 }
  210.                 sprintf(&username[istr*2],"%s",locationInformation);
  211.                 fcard_lcd_printh4(username);
  212.                 fcard_beep_off();
  213.             }      
  214.         }

  215.         memset(&info,0x00,sizeof(info));
  216.         if (hasLocationInformation()){
  217.             snprintf(info.location,96,"%s",locationInformation);        
  218.         }
  219.         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);     
  220.    
  221.         length = depMakeFrame(txbuff,0xFF,0x20,(unsigned char*)&info,sizeof(info));
  222.         if (zigbeeProtocolTalkToTarget(txbuff,length,line,22)==22){
  223.             if (line[0]==0xAA && line[21]==0x55 && line[1]==0x00){
  224.                     snprintf(username,16,"%s",&line[4]);
  225.                     fcard_beep_on();
  226.             }else{
  227.                     memset(username,0x00,sizeof(username));               
  228.             }
  229.         }else{
  230.             memset(username,0x00,sizeof(username));
  231.         }
  232.       
  233.         key = fcard_kbd_peek();
  234.         if (key==13){
  235.             main_login();
  236.         }
  237.     }
  238.     zigbeeProtocolProcessExit();
  239.     return 0;
  240. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区中文在线 | 久久久亚洲 | 日韩在线中文字幕 | 国产高清精品一区二区三区 | 国产成人精品久久 | 美女爽到呻吟久久久久 | 亚洲成人一区二区在线 | 精品不卡| 亚洲在线一区二区 | 久久五月婷 | 国产成人综合网 | 天天操操 | 午夜av免费| 久久国产精品久久 | 中文字幕av一区二区三区 | 黑人巨大精品欧美一区二区免费 | 免费一区二区三区在线视频 | 国外成人在线视频网站 | 日韩影院在线 | 国产精品一区二区欧美黑人喷潮水 | 男女视频在线观看网站 | 国产日韩一区二区 | 国产成人免费视频网站高清观看视频 | 日韩中文字幕在线视频观看 | 日日噜噜夜夜爽爽狠狠 | 日本不卡免费新一二三区 | 精品一区二区三区在线观看国产 | 国产亚洲一区二区三区在线 | 精品国产黄色片 | 天天看天天操 | 美女黄18岁以下禁止观看 | 欧美一区二区三区在线视频 | 毛片免费视频 | 久久99精品久久久 | 国产精品欧美日韩 | 成人性视频免费网站 | 欧美日韩国产高清 | 久久国产精品久久久久 | 欧美精三区欧美精三区 | 噜久寡妇噜噜久久寡妇 | 亚洲精品成人 |