Contact-less Smart Card Reader & Mifare one Card 二次開發文檔
Author: Dennis Lan
Date: 2003/12/17
Copyright© Universal Master Information Co(sz)., Ltd 轉載請說明出處
續 http://www.csdn.net/Develop/read_article.asp?id=22903
防冲突机制 (Anti-collision Loop)
当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。
选择卡片(Select Tag)
选择被选中的卡的序列号,并同时返回卡的容量代码。
三次互相确认(3 Pass Authentication)
选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)
对数据块的操作
读 (Read):读一个块;
写 (Write):写一个块;
加(Increment):对数值块进行加值;
减(Decrement):对数值块进行减值;
存储(Restore):将块中的内容存到数据寄存器中;
传输(Transfer):将数据寄存器中的内容写入块中;
中止(Halt):将卡置于暂停工作状态;
四. Create An Interface for Communicate between WIN32 DLL and PL/SQL
因為 PL/SQL 並不能直接引用 RD800M 所提供的 dcrf32.dll , 必須重新用C來寫一個中介程式做界面讓 PL/SQL 和 dcrf32.dll 能夠溝通.
源程式碼請見 Card.c 用 Microsoft 的 Visual C++ 的Compiler CL把程式 Compile 成 DLL File(指令: CL /LD card.c /link dcrf32.lib).
五. Load Library Into PL/SQL
在 PL/SQL 中利用 ORA_FFI 的 Package 把和dcrf32.dll進行溝通介面程式 Card.dll到 PL/SQL中, PL/SQL透過Card.dll和dcrf32.dll進行溝通,調用其中的函數.
六. 寫卡
以上準備工作完成後就正式開始開發工作的第一項,把資料寫進 IC 卡中,也就是上面所介紹的數據塊的操作中的 Write.從上面的簡介中我們知道,一張 Mifare One IC 卡, 我們總共可以寫入的字節數: 3*16*16 = 768 個 bytes.每個扇區只有三個塊可供我們進行對其操作, 第四塊是控制塊, 用來存放密碼和控制Code, 前面對 M1 Card 的簡介中已有詳細的說明.
待續 ...
附錄:
參考資料: