1 / 74

第九章、儲值扣款系統開發

第九章、儲值扣款系統開發. 本章教導 RFID Mifare 系統之開發,針對 MIFARE 卡片規格、資料讀取方式與資料寫入等方式進行介紹。因為各家讀取器廠商硬體的呼叫方式等不盡相同,因此在程式上使用者恐無法完全轉移,但是只要您使用的是標準的 MIFARE 卡片,裡面所介紹的觀念與架構都是相同的,您只要詢問硬體廠商是否有提供這樣的使用介面就可以。本章所使用的設備為 PROMAG PCR-310 。. 大 綱. 9-1 MIFARE 規格 9-2 MIFARE 讀寫資料 9-3 餐廳小額消費應用. 儲值扣款系統開發.

courtney
Download Presentation

第九章、儲值扣款系統開發

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章、儲值扣款系統開發 本章教導RFID Mifare系統之開發,針對MIFARE卡片規格、資料讀取方式與資料寫入等方式進行介紹。因為各家讀取器廠商硬體的呼叫方式等不盡相同,因此在程式上使用者恐無法完全轉移,但是只要您使用的是標準的MIFARE卡片,裡面所介紹的觀念與架構都是相同的,您只要詢問硬體廠商是否有提供這樣的使用介面就可以。本章所使用的設備為PROMAG PCR-310。

  2. 大 綱 • 9-1 MIFARE 規格 • 9-2 MIFARE 讀寫資料 • 9-3 餐廳小額消費應用

  3. 儲值扣款系統開發 • RFID技術除了可以做到唯一辨識外,與條碼最重要的不同之處在於可以攜帶資訊,因此可以完成使用卡片(悠遊卡)坐捷運與購物消費等動作,這也是RFID應用市場上兵家未來爭奪的戰場之ㄧ • 本章針對RFID中標準的ISO 14443A卡片,或稱為MIFARE卡片的讀寫資料進行介紹

  4. MIFARE 規格

  5. MIFARE 規格 • MIFARE最早是由飛利浦(Philips)公司所研發的電子標籤規格,後來被收錄變成ISO14443的標準。總共分成三種規格,分別是MIFARE 1、MIFARE UltraLight與MIFARE ProX,使用的是13.56 MHz,傳輸速度為106 K bit/sec,以下針對MIFARE 1進行介紹

  6. MIFARE 規格 • MIFARE 1有可以分成S50與S70兩種,主要差異在記憶體大小,S50為1K Bytes(實際是1024 Bytes),S70為4K Bytes(實際是4096 Bytes),您可以依據不同應用選擇不同規格。這樣的記憶體區塊怎麼使用呢?全部一起?還是要劃分管理?怎麼劃分怎麼管理?飛利浦公司制定了一套規則來進行管理

  7. MIFARE 規格 • 管理方式採用Sector與Block方式進行管理,其實就是表格式管理,表格有分列(row)與欄(row),也就是先把一個空白表格劃分出列後,再從列裡面去切割欄,如圖9-1所示

  8. 空白表格 分割出三列 每列分割出六欄 圖9-1、表格分割圖

  9. MIFARE 規格 • 請把「空白表格」想像是MIFARE未分割前的全部記憶體區塊,現在開始進行劃分,如同表格先劃分列,但我們將其稱為「Sector」,最後對每個「Sector」再劃分出「Block」,這就完成了記憶體區塊的劃分管理作業。以S50為例,全部記憶體是1K Bytes,總共被劃分成16個Sector,每個Sector又劃分成4個Block,所以完成後的分割圖如圖9-2

  10. 圖9-2、S50記憶體分割圖

  11. MIFARE 規格 • 總共分成16個Sector,64個Block,每個Sector是64 Bytes,而每個Block為16 Bytes,同時將每個Block進行編號,從B0開始編號,一直到B63。其中B0被保留用來存放標籤的唯一辨識碼,這個辨識碼是出場時就指定,使用者無法更改

  12. MIFARE 規格 • 當您要讀取某個Sector內的Block時,需要通過兩組認證的密碼,稱之為KEY A與KEY B,這兩組密碼存放在每個Sector的最後面一個Block,也就是B3、B7、B11…等位置 • 而讀卡機本身內部也會儲存有KEY A與KEY B,KEY A是主要的驗證值,KEY B則為選擇性,也就是可以設定只驗證KEY A或是KEY A/KEY B同時都驗證

  13. MIFARE 規格 • 當讀卡機要讀取資料時,會先比對自己的KEY A/KEY B是否與要讀取的Block所屬Sector的KEY A/KEY B相同,如果不同是無法進行資料讀取與寫入作業,也確保了標籤內資料的安全性。但是B0內的卡號資料讀取是不需要經過KEY A/KEY B驗證的,這部份是開放讀取的,標籤出場時預設的KEY A/KEY B為FFFFFFFFFFFF

  14. MIFARE 讀寫資料

  15. MIFARE 讀寫資料 • MIFARE標籤資料的讀寫流程如圖9-3所示,首先由讀取器向電子標籤發出讀取請求,卡片會回應「Ready」與型態,確定標籤沒有損壞,可以繼續進行下一步動作

  16. 對卡片提出讀取需求 判定卡片種類 讀取卡號 (Block 0) 選擇Sector 進行KEY A/KEY B認證 通過 未通過 選擇Block 讀取資料 寫入資料 圖9-3、MIFARE資料讀寫流程圖

  17. MIFARE 讀寫資料 • 如果有需要讀取卡號,此時就可以進行卡號(位於Block 0)讀取作業;如果不需要卡號,則可以直接選擇您要讀取的Sector段落,接著進行KEY A/B的認證,通過認證才可以再選擇該Sector段落內的某個Block進行資料讀取與寫入作業

  18. MIFARE 讀寫資料 • 用程式實作圖9-3的MIFARE資料讀寫流程 • 如圖9-4是系統啟動畫面,首先需要做的就是讓系統與硬體讀寫器連線,右下方有「偵測讀取器」按鈕,可以針對連接埠進行自動掃描。多數硬體廠商都有提供這部份的API介面供使用者開發系統使用,讀者只要呼叫該API介面就可以自動與硬體做連線

  19. 圖9-4、MIFARE DEMO系統起始畫面

  20. MIFARE 讀寫資料 • 如果電腦與讀取器連接正確,系統將可以順利偵測到該讀取器,並顯示出其連接位置,如圖9-5的視窗標題,目前連接位置在COM 13。同時就可以開始透過讀寫器對電子標籤送出「讀取需求」,或事先設定讀取器內的「KEY A/B」,如此才擁有可以對卡片內的Sector與Block做出讀取的權利

  21. 圖9-5、Key A/B與資料讀寫需求畫面

  22. MIFARE 讀寫資料 • 如果讀取器與電子標籤內的Key A/B設定不符或是電子標籤損壞都可能造成讀取錯誤,如圖9-6所示,讀寫器對電子標籤發出讀取命令,但等不到電子標籤回應,畫面將出現「No Tag Error」,就無法進行下一個動作

  23. 圖9-6、資料讀寫需求回應錯誤畫面

  24. MIFARE 讀寫資料 • 如果讀寫器的讀寫需求有得到電子標籤的正常回應,畫面將顯示電子標籤的種類,例如圖9-7的「MIFARE 1K」,代表的是目前正在讀取MIFARE S50規格的電子標籤。接著可以進行電子標籤辨識碼或是記憶體內資料的讀寫動作

  25. 圖9-7、資料讀寫需求回應正常畫面

  26. MIFARE 讀寫資料 • 接著,可以在不需要Key A/B的狀況下讀取Sector 1/Block 0內的標籤識別碼,如圖9-8所示,讀取到的辨識碼共有八位,為「7D9C8176」。往下就可以針對標籤內記憶體的資料作讀寫的作業,所以要先選擇要讀取與寫入的位置,如圖9-2的規劃

  27. 圖9-8、電子標籤識別碼被正確讀取畫面

  28. MIFARE 讀寫資料 • 要讀取某個Sector內的資料,需要先經過該Sector最後一個Block內Key A/B與讀寫器內的Key A/B做比對認證,所以如圖9-9,我們針對Sector1做讀取,所以選擇Sector 1,並且只認證Key A

  29. 圖9-9、選擇讀取電子標籤內Sector 1內資料之畫面

  30. MIFARE 讀寫資料 • 其次,我們在圖9-10中選擇「認證KEY A/B」,如果讀寫器內的Key A/B與Sector1 內Block 3(圖9-2中的編號為B7)的Key A/B相同,則會出現pass的字樣,代表現在可以讀取Sector1內的第一個(Block 0)至第三個Block(Block 2)內的資料

  31. 圖9-10、通過Sector 1內Key A/B認證後後之畫面

  32. MIFARE 讀寫資料 • 圖9-11中我們選擇讀取Sector 1/Block 1內的資料,選擇完成Block後,按下「讀出資料」,就可以將裡面的資料讀取出來,如果沒有的話就是空的,這裡提供十六進制(Hex)與文字(Text)兩種格式

  33. 圖9-11、讀取Sector 1/Block 1內資料之畫面

  34. MIFARE 讀寫資料 • 相反於讀取,我們也可以將資料寫入,如圖9-12所示,在原本裡面沒有資料的Sector 1/ Block 1中寫入數值120,如果寫入成功,在寫入資料的流程上會出現ok字樣

  35. 圖9-12、將120寫入Sector 1/Block 1內之畫面

  36. MIFARE 讀寫資料 • 此時,再重新讀取Sector 1/ Block 1內的資料時,將出現上次寫入的數字120,如圖9-13所示,確認寫入動作成功

  37. 圖9-13、將120寫入Sector 1/Block 1內之畫面

  38. MIFARE 讀寫資料 • 針對「設定讀取器KEY A/B」按鈕,設計如圖9-14的畫面,使用者可以針對每個Sector設定自己需要的Key A/B進入到讀取器,當然這個部份需要與標籤內原先的設定要相同才可以讀取標籤資料。所有MIFARE電子標籤出場時的Sector Key A/B都是「FFFFFFFFFFF」

  39. 圖9-14、設定Sector內Key A/B之畫面

  40. MIFARE 讀寫資料 • 此時,我們故意更改Sector 1內的Key A值,變成如圖9-15的新值,並且儲存到讀寫器內 • 接著,我們再一次遵循上面的步驟讀取Sector 1/ Block 1的值,可是當我們在進行「認證KEY A/B」時,會發現出現KEY ERROR字樣,問題就在於電子標籤內Sector 1的Key A與讀寫器內儲存的Sector 1 Key A不相同所導致

  41. 圖9-15、設定讀取器內讀取標籤Sector 1 Key A/B之畫面

  42. 圖9-16、讀取標籤Sector 1時Key A認證失敗畫面

  43. 餐廳小額消費應用

  44. 餐廳小額消費應用 • 本節中我們使用MIFARE ISO 14443A卡片設計一個餐廳小額儲值扣款系統,我們將會員的基本資料如姓名、電話與金額分別寫入卡片內的Sector 1/Block 0、Sector 1/Block 1與Sector 1/Block 2內,未來讀者可以自行規劃您系統應用時卡片的資料儲存位置

  45. 餐廳小額消費應用 • 首先,使用本系統需要有帳號密碼,方便店長或是工讀生等人使用,同時也是基於安全考量,如圖9-17所示,需要輸入正確的帳號與密碼後才可以進入主系統

  46. 圖9-17、小額消費系統登入畫面

  47. 餐廳小額消費應用 • 如果帳號與密碼都正確,將進入到主系統畫面,如圖9-18所示,分成有會員資料、卡片加值、產品編輯、銷售紀錄與點餐扣款等五大部分 • 使用系統前,需要將系統與讀寫器連線,也就是要先驅動讀寫器,如圖9-19所示 • 成功驅動讀寫器的畫面如圖9-20所示,畫面上會出現讀寫器的型號與連接埠位置,此時就可以進行儲值、扣款與卡片資料維護等的作業

  48. 圖9-18、小額消費系統主畫面

  49. 圖9-19、小額消費系統驅動MIFARE讀寫器畫面

  50. 圖9-20、小額消費系統MIFARE讀寫器驅動成功畫面圖9-20、小額消費系統MIFARE讀寫器驅動成功畫面

More Related