最近用RC523讀身份證ID,經(jīng)過幾天摸索和參考網(wǎng)上資料,終于所成功了,特發(fā)此貼給有需要的朋友,但愿能少走彎路
RC523 寄存器配置:
RcSetReg(JREG_TXASK, 0x00);
RcSetReg(JREG_CONTROL, 0x10);
RcSetReg(JREG_TXMODE, 0x03);
RcSetReg(JREG_RXMODE, 0x0B);
RcSetReg(JREG_TYPEB, 0x03);
RcSetReg(JREG_DEMOD, 0x4D);
RcSetReg(JREG_GSN, 0xFF);
RcSetReg(JREG_CWGSP, 0x3F);
RcSetReg(JREG_MODGSP, 0x18);
RcSetReg(JREG_RXTHRESHOLD, 0x4D);
RcSetReg(JREG_MODWIDTH,0x68);
身份證讀卡器的程序流程如下:
先發(fā)送0×05,0×00,0×00詢卡命令后,身份證返回12字節(jié)卡類型代碼,不同身份證返回的數(shù)據(jù)不一樣。比如對兩個身份證發(fā)送詢卡命令后分別返回
0×50 0×00 0×00 0×00 0×00 0xd1 0×03 0×86 0×0c 0×00 0×80 0×80
0×50 0×00 0×00 0×00 0×00 0xd1 0×03 0×86 0×07 0×00 0×80 0×90
詢卡成功后,發(fā)送SELECT命令:0×1d 0×00 0×00 0×00 0×00 0×00 0×08 0×01 0×08 對二代身份證進行選卡操作。這時身份證返回的第一個字節(jié)應該等于SELECT命令的最后一個字節(jié)0×08,根據(jù)這個條件來判斷SELECT命令是否操作成功。
最后發(fā)送GUID命令:0×00 0×36 0×00 0×00 0×08,身份證會返回10字節(jié)數(shù)據(jù),其中前8字節(jié)就是身份證的唯一ID,后兩字節(jié)是0×90 0×00。可以用后兩字節(jié)來判斷得到的是否是身份證ID。
|