RFID——充值消费系统

   日期:2020-12-19     浏览:241    评论:0    
核心提示:文章目录前言一、编译环境二、实现充值消费系统1.创建工程2.添加mwf32相关API文档3.常用函数介绍4.搭建界面5.设置变量6.编写程序总结前言       射频识别(RFID)是 Radio Frequency Identification 的缩写。       其原理为阅读器与标签之间进行非接触式的数据通信,达到识别目标的目的。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.创建工程

        打开软件->文件->新建,可看到下面的界面,依次按照提示操作即可完成创建工程!!!




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

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服