RFID实验报告(读写一体)

更新时间:2023-08-24 06:32:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

郑州轻工业学院

实验报告

名称:《课程名称》综合实验

院(系):计算机与通信工程学院

专业班级:网络工程(物联网技术13-01) 指导教师:

时间:2015-2016(1)

郑州轻工业学院

实验报告

名称:《课程名称》综合实验

院(系):计算机与通信工程学院

专业班级:网络工程(物联网技术13-01) 姓名:

学号: 指导教师:杨永双陈燕

成绩评定表

时间:2015-2016(1)

目录

1

2 实验任务和目的 .............................................................................................................................. 7 实验过程和结果 ............................................................................................ 错误!未定义书签。

2.1

2.2

3

4 实验过程 ........................................................................................... 错误!未定义书签。 实验结果 ........................................................................................... 错误!未定义书签。 实验总结和心得 ............................................................................................ 错误!未定义书签。 附录(代码) ................................................................................................ 错误!未定义书签。

实验五:读卡/写卡功能

1 实验任务和目的

1.1 实验任务

熟悉VC++6.0环境。

熟悉M1卡中读卡所需调用函数的规则。

实现M1卡任一块的读/写功能。

1.2 实验目的

能够选取扇区号和块号。

能够显示选定块号的内容。

能够将内容写入选定的块中。

实验过程和结果:

1、用Microsoft Visual C++新建一个工程(MFC AppWizard[exe]),应用程序类型是基本对话框,应用程序向导创建完成之后,系统进入到对话框编译页面的主页面,用控件设计对话框,对话框的设计如下图所示:

2、编写程序。

(1)连接设备。双击连接设备按钮,进入程序设计界面。代码如下:

HANDLE icdev;

int st;

void CRFEYEDlg::OnButton1()

{

// TODO: Add your control notification handler code here

icdev=rf_usbinit();//返回设备描述符

if (icdev>0) //如果设备连接成功,读卡。

{

} m_list.ResetContent();//清除列表框数据 m_list.AddString("设备连接成功!"); unsigned long snr; st=rf_card(icdev,1,&snr); //寻卡并返回卡片的系列号 if (st==0) { } else { } m_list.AddString("读卡失败!"); //在列表框中显示读卡状况 m_list.AddString("读卡成功!"); //在列表框中显示读卡状况 rf_beep(icdev,50);//控制蜂鸣器,蜂鸣时间,单位:毫秒

(2)读数据。能够读出指定块号的内容,代码如下:

void CRFEYEDlg::OnButton2()

{

// TODO: Add your control notification handler code here

UpdateData();//更新变量数据,区为m_sector,块为m_kuai。

m_list1.ResetContent();//清空列表框数据

st=rf_authentication(icdev,0,m_sector);/*验证某一扇区密码,

认证第m_sector(选定的扇区)扇区的密码A */

if (st!=0)

{

}

unsigned char databuff[17];

ZeroMemory(databuff,17);

st=rf_read(icdev,m_sector*4+m_kuai,databuff);/*从一个已选择的卡中

读取一个数据块(选定的块m_kuai); databuff为读出的数据*/

if(st==0)

{

} m_list1.AddString((char*)databuff);//在列表框中显示读出的数据 m_list1.AddString("验证密码失败!");

else

} m_list1.AddString("读数据失败!"); rf_beep(icdev,30);//控制蜂鸣器,蜂鸣时间,单位:毫秒

(3)写数据。对指定的区块进行写操作。代码如下:

} CString data=m_edit5;//把编辑框中的数据赋值给变量data。 char* data1=data.GetBuffer(data.GetLength()); st=rf_write(icdev,m_sector1*4+m_kuai1,(unsigned char*)data1);/*向卡中写入数据, 一次必须写一个块,为16个字节;块地址m_sector1*4+m_kuai1;要写入的数据,长度为16if (st==0)//判断数据是否写入成功 { } else m_list3.AddString("写数据失败!"); m_list3.AddString("写数据成功!"); void CRFEYEDlg::OnButton5() UpdateData();//更新变量数据,区为m_sector1,块为m_kuai1。 m_list3.ResetContent();//清空第三个列表框中的数据 st=rf_authentication(icdev,0,m_sector1);/*验证选定扇区的密码, 密码类型为密码A */ if (st!=0)//判断验证密码是否失败 { } m_list3.AddString("验证密码失败!"); { 字节 */ unsigned char databuff[17]; ZeroMemory(databuff,17); st=rf_read(icdev,m_sector1*4+m_kuai1,databuff);/*读取指定数据块的数据*/ if(st==0) { } else m_list3.AddString("读数据失败!"); rf_beep(icdev,30);//控制蜂鸣器,蜂鸣时间,单位:毫秒 m_list3.AddString((char*)databuff);//显示读出的数据

3、程序编译之后的运行效果。

(1)运行程序,点击连接设备。显示结果如下:

(2)读卡操作。区选为1,块选为0,点击读数据,读出之前写入的数据,效果如下:

(3)写卡操作。区选为1,块选为1,点击写数据,运行结果如下:

(4)点击读数据(区选为1,块选为1)读出之前写入的数据,效果如下:

(5)点击断开连接,显示效果如下:

(6)点击清空数据,效果如下:

四、实验心得。

通过本次试验,我基本熟悉了VC++6.0环境。能够编写基本的对话框程序,明白了调用函数的规则,对读卡、写卡需要使用的函数有了基本了解,明白了阅读器与电子标签之间的通信过程,对整个射频识别系统有了清晰的认识。

本文来源:https://www.bwwdw.com/article/3uki.html

Top