RFID

您所在的位置:网站首页 基于rfid的按键控制电子钱包实验 RFID

RFID

2023-10-05 05:51| 来源: 网络整理| 查看: 265

文章目录 前言一、编译环境二、实现充值消费系统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)【定义全局变量】相应代码如下:

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