文章目錄
- 前言
- 一、編譯環境
- 二、實作充值消費系統
- 1.創建工程
- 2.添加mwf32相關API檔案
- 3.常用函式介紹
- 4.搭建界面
- 5.設定變數
- 6.撰寫程式
- 總結
前言
射頻識別(RFID)是 Radio Frequency Identification 的縮寫,
其原理為閱讀器與標簽之間進行非接觸式的資料通信,達到識別目標的目的,RFID 的應用非常廣泛,典型應用有動物晶片、汽車晶片防盜器、門禁管制、停車場管制、生產線自動化、物料管理,
提示:以下是本篇文章正文內容,下面案例可供參考
一、編譯環境
本系統基于VC++6.0版本,如果沒有安裝此軟體的讀者,可以通過百度網盤下載該軟體,
鏈接:https://pan.baidu.com/s/1_pUq7swULst7plceOAQpSA
提取碼:l0x5
二、實作充值消費系統
1.創建工程
打開軟體->檔案->新建,可看到下面的界面,依次按照提示操作即可完成創建工程!!!





2.添加mwf32相關API檔案
(1)將API檔案夾下的三個檔案mwrf32.*復制到你所創建的工程的檔案夾中,

相關檔案已放入整個系統工程中!!!
(2)添加頭檔案

(3)工程->設定->連接->物件/庫模塊

3.常用函式介紹
函式 說明
rf_usbinit() 初始化USB通訊
rf_get_status() 獲取版本號
rf_load_key() 向讀寫器下載授權密碼
rf_beep() 蜂鳴器鳴叫
rf_card() 尋卡
rf_authentication() 認證
rf_write() 寫卡
rf_read() 讀卡
rf_halt() 終止卡操作
rf_exit() 關閉串口
4.搭建界面
通過控制元件選擇靜態文本,編輯框,按鈕,串列框,搭建如下界面

5.設定變數
右鍵->建立類向導->Member variables->Add Variable,選擇變數名及變數型別

6.撰寫程式
雙擊讀卡,初始化資訊,充值,消費即可直接撰寫程式,
(1)【讀卡】相應代碼如下:
icdev=rf_usbinit();
if (icdev>0) {list.AddString("設備連接成功!");}
else {list.AddString("連接失敗!");}
unsigned long snr;
st=rf_card(icdev,1,&snr);
if(st!=0) {list.AddString("請放置卡片!!!");}
st=rf_authentication(icdev,0,sector);
if(st!=0) {list.AddString("認證失敗!");}
//UpdateData();
unsigned char databuff[17];
ZeroMemory(databuff,17);
st=rf_read(icdev,sector*4,databuff);
if(st==0) {list.AddString((char*)databuff);xingming=databuff;}
st=rf_read(icdev,sector*4+1,databuff);
if(st==0) {list.AddString((char*)databuff);xuehao=databuff;}
st=rf_read(icdev,sector*4+2,databuff);
str1=databuff; //型別轉換
if(st==0) {list.AddString((char*)databuff);yue=atof(str1);}
UpdateData(false);
st=rf_halt(icdev);
st=rf_exit(icdev);
if(st==0) {list.AddString("斷開連接!");}
}
(2)【初始化資訊】相應代碼如下:
icdev=rf_usbinit();
if (icdev>0) {list.AddString("設備連接成功!");}
else {list.AddString("連接失敗!");}
unsigned long snr;
st=rf_card(icdev,1,&snr);
if(st!=0) {list.AddString("請放置卡片!!!");}
st=rf_authentication(icdev,0,sector);
if(st!=0)
{
list.AddString("認證失敗!");
}
else
{
UpdateData();
str1.Format(_T("%lf"),yue); //余額
char* data1=xingming.GetBuffer(xingming.GetLength()); //姓名
char* data2=xuehao.GetBuffer(xuehao.GetLength()); //學號
char* data3=str1.GetBuffer(str1.GetLength()); //余額
st=rf_write(icdev,sector*4,(unsigned char*)data1);
if(st==0) {list.AddString("寫姓名成功!");}
else {list.AddString("寫姓名失敗!");}
st=rf_write(icdev,sector*4+1,(unsigned char*)data2);
if(st==0) {list.AddString("寫學號成功!");}
else {list.AddString("寫學號失敗!");}
st=rf_write(icdev,sector*4+2,(unsigned char*)data3);
if(st==0) {list.AddString("寫余額成功!");}
else {list.AddString("寫余額失敗!");}
unsigned char databuff[17];
ZeroMemory(databuff,17);
st=rf_read(icdev,sector*4,databuff);
if(st==0) {list.AddString((char*)databuff);}
st=rf_read(icdev,sector*4+1,databuff);
if(st==0) {list.AddString((char*)databuff);}
st=rf_read(icdev,sector*4+2,databuff);
if(st==0) {list.AddString((char*)databuff);}
UpdateData(false);
}
st=rf_halt(icdev);
st=rf_exit(icdev);
if(st==0) {list.AddString("斷開連接!");}
(3)【充值】相應代碼如下:
icdev=rf_usbinit();
if (icdev>0) {list.AddString("設備連接成功!");}
else {list.AddString("連接失敗!");}
unsigned long snr;
st=rf_card(icdev,1,&snr);
if(st!=0) {list.AddString("請放置卡片!!!");}
st=rf_authentication(icdev,0,sector);
if(st!=0) {list.AddString("認證失敗!");}
else //讀卡才能進行操作
{
UpdateData();
yue=yue+chongzhi; //充值
chongzhi=0; //充值置零
str1.Format(_T("%lf"),yue); //余額
str2.Format(_T("%lf"),chongzhi); //充值置零
char* data3=str1.GetBuffer(str1.GetLength()); //余額
st=rf_write(icdev,sector*4+2,(unsigned char*)data3);
if(st==0) {list.AddString("充值成功!");}
else {list.AddString("充值失敗!");}
unsigned char databuff[17];
ZeroMemory(databuff,17);
st=rf_read(icdev,sector*4+2,databuff);
if(st==0) {list.AddString((char*)databuff);}
UpdateData(false);
}
st=rf_halt(icdev);
st=rf_exit(icdev);
if(st==0) {list.AddString("斷開連接!");}
(4)【消費】相應代碼如下:
icdev=rf_usbinit();
if (icdev>0) {list.AddString("設備連接成功!");}
else {list.AddString("連接失敗!");}
unsigned long snr;
st=rf_card(icdev,1,&snr);
if(st!=0) {list.AddString("請放置卡片!!!");}
st=rf_authentication(icdev,0,sector);
if(st!=0) {list.AddString("認證失敗!");}
else //讀卡才能操作
{
UpdateData();
yue=yue-xiaofei; //消費
xiaofei=0; //消費置零
str1.Format(_T("%lf"),yue); //消費
str3.Format(_T("%lf"),xiaofei); //消費置零
char* data3=str1.GetBuffer(str1.GetLength()); //余額
st=rf_write(icdev,sector*4+2,(unsigned char*)data3);
if(st==0) {list.AddString("消費成功!");}
else {list.AddString("消費失敗!");}
unsigned char databuff[17];
ZeroMemory(databuff,17);
st=rf_read(icdev,sector*4+2,databuff);
if(st==0) {list.AddString((char*)databuff);}
UpdateData(false);
}
st=rf_halt(icdev);
st=rf_exit(icdev);
if(st==0) {list.AddString("斷開連接!");}
本系統工程檔案,大家可以通過百度網盤進行下載,
鏈接:https://pan.baidu.com/s/17jQPCLfoFZ-8Vo9MxAtGsg
提取碼:akvh
總結
首先,作為一名大三的學生,真的感覺大三好累,仿佛有干不完的事情,哈哈,真該好好吐槽一下!!!此充值消費系統作為我們RFID課程的一個小測驗,感徑訓是挺有意義的,讓我們了解到了我們生活中的所謂“刷卡”的基本原理,真的是讓我這個井底之蛙漲了見識,馬上就要畢業了,就寫了這篇博客來紀念即將逝去的RFID課程,也許真的是永別了~bye
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237139.html
標籤:其他
上一篇:C語言:cJSON庫用法詳解
