⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htag.c

📁 另外一个RC531非接触式读卡器的全部源代码
💻 C
字号:
#include <stdio.h>#include <unistd.h>#include "rc531.h"int hh_auth(int sector, char *passwd);int main(void){ int retv, sector, data; char passwd[4] = {0xff, 0xff, 0xff, 0xff}; char cmdbuf[128]; char cbuf[128]; retv = pcd_reset(RESET_TYPEA); retv = pcd_open(); if(retv){     printf("Cannot open rc531!\n");     return retv; } while(1){     printf("-");     fgets(cmdbuf, 128, stdin);     if(cmdbuf[0]=='q')         break;     switch(cmdbuf[0]){     case 'r':         retv = reqa(REQA, &data);         mferror(retv);         if(retv){             printf("No card.\n");         }else{             printf("Card return ATQA: %04x\n", data);         }         break;     case 'l':         sscanf(cmdbuf+1, "%x", (int*)&passwd);         retv = hh_auth(8, passwd);         mferror(retv);         break;     case 'e':         sector = 0;         sscanf(cmdbuf+1, "%x", &sector);         retv = mfread(sector, cbuf);         mferror(retv);         if(retv){             printf("read error!\n");         }else{             int i;             printf("read OK!\n");             printf("return data: ");             for(i=0; i<4; i++){                 printf("%02x ", cbuf[i]);             }             printf("\n");         }         break;     case 'p':         sector = 0;         data = 0x11111111;         sscanf(cmdbuf+1, "%x %x", &sector, &data);         *(int*)&cbuf[0] = data;         retv = mfwrite(sector, cbuf);         mferror(retv);         break;     case 'h':         halta();         break;     case 'w':         retv = reqa(WAKEUPA, &data);         mferror(retv);         if(retv){             printf("No card.\n");         }else{             printf("Card return ATQA: %04x\n", data);         }         break;     default:     } }; pcd_close(); return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -