基于RFID的公交卡管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
郑州轻工业学院
课程设计说明书题目:基于RFID的公交卡管理系统
姓名:
院(系):计算机与通信工程学院
专业班级:物联网工程XXX
学号:
指导教师:
成绩:
时间: 2016年 1 月 5日至2016年 1 月 8日
郑州轻工业学院
课程设计任务书
题目基于RFID的公交卡管理系统
专业、班级物联网工程XX班学号姓名
主要内容、基本要求、主要参考资料等:
主要内容:利用实验室的读卡器和M1卡,编写程序,实现一简单的公交卡管理功能。
基本要求:(1)当卡放到读卡器上时能够自动显示姓名;
(2)读卡器可识别出该卡的类别,即月票、电子钱包、学生票,并显示出剩余的钱数或次数;
(3)当刷卡时,可自动扣除钱数或次数;
(4)当充值时,可加钱数或次数。
参考资料:[1]高建良,贺建飚.物联网RFID原理与技术[M].北京:电子工业出版社,2015.
[2]黄玉兰.物联网射频识别(RFID)核心技术详解[M].北京:人民
邮电出版社,2011.
2016年 1月 5日
课程设计成绩评定表
目录
1实验任务和目的 (1)
2实验过程和结果 (1)
2.1实验过程 (1)
2.2实验结果 (2)
3实验总结和心得 (3)
4参考文献 (4)
5附录(代码) (4)
1实验任务和目的
利用实验室的读卡器和M1卡,编写程序,实现一简单的公交卡管理功能。
能达到如下功能:
(1)当卡放到读卡器上时能够自动显示姓名;
(2)读卡器可识别出该卡的类别,即月票、电子钱包、学生票,并显示出剩余的钱数或次数;
(3)当刷卡时,可自动扣除钱数或次数;
(4)当充值时,可加钱数或次数。
2实验过程和结果
2.1实验过程
1.打开VC,建立新的MFC工程;
2.在MFC建立Dialog界面,如下图
3.建立相关的控件链接;
4.在程序编写相关程序,使其能达到相关目标;
5.运行程序检测实验是否成功。
2.2实验结果
1.基本界面
2.充值
3.更改持卡人信息
4.更改持卡类型
注:月票只提示刷卡成功,不扣费。
3实验总结和心得
这次课程设计是在掌握前几次的实验的基础上完成的,几乎全是运用了前几次的函数这次课程设计比前几次实验主要多运用了值操作。
通过本次课程设计我学会MFC工程的建立,提升了自己的编程能力,查找资料也是
学习新知识的必备技能,同时对M1卡的了解也更加深刻,对M1卡的操作也更加熟练,对课上老师讲的东西有了更深的理解,自己的动手能力也有了进一步的提升,这次的课程设计收获很大。
4参考文献
[1]高建良,贺建飚.物联网RFID原理与技术[M].北京:电子工业出版社,2015.
[2]黄玉兰.物联网射频识别(RFID)核心技术详解[M].北京:人民邮电出版社,2011.
5附录(代码)
HANDLE icdev;
int st;
void CXpDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch (nIDEvent)
{
case 1:
{
icdev=rf_usbinit();
rf_beep(icdev,50);
KillTimer(1);
break;
}
case 2:
{
UpdateData(true);
9;
UpdateData(false);
unsigned long snr;
//unsigned long value;
rf_card(icdev,1,&snr);
st=rf_authentication(icdev,0,3);
if (st!=0)
m_1.AddString("验证密码失败!");
unsigned long val=0;
st=rf_initval(icdev,13,val);//初始化第三扇区第一块
st=rf_authentication(icdev,0,2);//验证密码
if (st!=0)
m_2.AddString("验证密码失败!");
unsigned long va=100;
st=rf_initval(icdev,9,va);//初始化第二扇区第一块
if(st==0)
{
m_1.AddString("初始化成功!");//在显示框显示"加值成功!"
KillTimer(2);
}
else
m_1.AddString("初始化失败!");//在显示框显示"加值失败!"
}
case 3:
{
UpdateData(true);
5;
UpdateData(false);
unsigned long snr;
unsigned long value;
. rf_card(icdev,1,&snr);
st=rf_authentication(icdev,0,1);
if (st!=0)
m_1.AddString("验证密码失败!");
unsigned char
databuff[17];
ZeroMemory(databuff,17);
st=rf_read(icdev,5,databuff);//读取2扇区1块值
if(st==0)
{
m_1.ResetContent(); //
清除显示
m_1.AddString("持卡人姓名:");
m_1.AddString((char*)databuff);
st=rf_authentication(icdev,0,3);
if (st!=0)
m_1.AddString("验证密码失败!");
rf_readval(icdev,13,&value);//读取3
扇区1块值操作块值
if(value%2==0)
{
m_2.ResetContent(); //清除显示
m_2.AddString("学
生卡");//在当前值框显示加值后的值
st=rf_authentication(icdev,0,2);
if (st!=0)
m_1.AddString("验证密码失败!");
rf_readval(icdev,9,&value);//读取2扇区1块值操作块值
CString str;
str.Format("%d",value);//格式转换为10进制
st=rf_decrement(icdev,9,1);
if(value<=0)
{
m_1.ResetContent(); //清除显示
m_1.AddString("****余额不足,请充值
****");
rf_beep(icdev,5000);
}
else
{
m_1.AddString("****余额为:****");
m_1.AddString(str);//在当前值框显示加值后的值
rf_beep(icdev,50);
}
}
else
{
m_2.ResetContent(); //清除显示
m_2.AddString("月票");//在当前值框显示加值后的值
m_1.AddString("****刷卡成功****");
rf_beep(icdev,50);
}
break;
}
else
{
//m_1.AddString("读数据失败!");
m_1.ResetContent(); //