RFID |
您所在的位置:网站首页 › 基于rfid的按键控制电子钱包实验 › RFID |
文章目录
前言一、编译环境二、实现充值消费系统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.创建工程 打开软件->文件->新建,可看到下面的界面,依次按照提示操作即可完成创建工程!!! (1)将API文件夹下的三个文件mwrf32.*复制到你所创建的工程的文件夹中。 (2)添加头文件 函数 说明 rf_usbinit() 初始化USB通讯 rf_get_status() 获取版本号 rf_load_key() 向读写器下载授权密码 rf_beep() 蜂鸣器鸣叫 rf_card() 寻卡 rf_authentication() 认证 rf_write() 写卡 rf_read() 读卡 rf_halt() 终止卡操作 rf_exit() 关闭串口 4.搭建界面 通过控件选择静态文本,编辑框,按钮,列表框,搭建如下界面 右键->建立类向导->Member variables->Add Variable,选择变量名及变量类型 双击读卡,初始化信息,充值,消费即可直接编写程序。 (1)【定义全局变量】相应代码如下: HANDLE icdev; int st; int sector=1; CString str1; //余额 CString str2; //充值金额 CString str3; //消费金额(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("认证失败!");} //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("断开连接!");}(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(); str1.Format(_T("%.2f"),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("断开连接!");}(4)【充值】相应代码如下: icdev=rf_usbinit(); 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("%.2f"),yue); //余额 str2.Format(_T("%.2f"),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("断开连接!");}(5)【消费】相应代码如下: icdev=rf_usbinit(); 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("%.2f"),yue); //消费 str3.Format(_T("%.2f"),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/1de7lseleJFXQEJ2XosY0Pg 提取码:4na5 总结 首先,作为一名大三的学生,真的感觉大三好累,仿佛有干不完的事情。哈哈,真该好好吐槽一下!!!此充值消费系统作为我们RFID课程的一个小测试,感觉还是挺有意义的,让我们了解到了我们生活中的所谓“刷卡”的基本原理,真的是让我这个井底之蛙涨了见识。马上就要毕业了,就写了这篇博客来纪念即将逝去的RFID课程。也许真的是永别了~bye |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |