当前位置:文档之家› RFID实验报告(读写一体)

RFID实验报告(读写一体)

郑州轻工业学院
实验报告名称:《课程名称》综合实验
院(系):计算机与通信工程学院
专业班级:网络工程(物联网技术13-01)指导教师:
时间:2015-2016(1)
郑州轻工业学院
实验报告名称:《课程名称》综合实验
院(系):计算机与通信工程学院
专业班级:网络工程(物联网技术13-01)姓名:
学号:
指导教师:杨永双陈燕
成绩评定表
时间:2015-2016(1)
目录
1实验任务和目的 (7)
2实验过程和结果............................................................................................ 错误!未定义书签。

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)
{
m_list.AddString("读卡成功!"); //在列表框中显示读卡状况
}
else
{
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)
{
m_list1.AddString("验证密码失败!");
}
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);//在列表框中显示读出的数据
}
else
m_list1.AddString("读数据失败!");
rf_beep(icdev,30);//控制蜂鸣器,蜂鸣时间,单位:毫秒
}
(3)写数据。

对指定的区块进行写操作。

代码如下:
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("验证密码失败!");
}
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;要写入的数据,长度为16字节*/
if (st==0)//判断数据是否写入成功
{
m_list3.AddString("写数据成功!");
}
else
m_list3.AddString("写数据失败!");
unsigned char databuff[17];
ZeroMemory(databuff,17);
st=rf_read(icdev,m_sector1*4+m_kuai1,databuff);/*读取指定数据块的数据*/
if(st==0)
{
m_list3.AddString((char*)databuff);//显示读出的数据
}
else
m_list3.AddString("读数据失败!");
rf_beep(icdev,30);//控制蜂鸣器,蜂鸣时间,单位:毫秒
}
3、程序编译之后的运行效果。

(1)运行程序,点击连接设备。

显示结果如下:
(2)读卡操作。

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

区选为1,块选为1,点击写数据,运行结果如下:
(4)点击读数据(区选为1,块选为1)读出之前写入的数据,效果如下:
(5)点击断开连接,显示效果如下:
(6)点击清空数据,效果如下:
四、实验心得。

通过本次试验,我基本熟悉了VC++6.0环境。

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

相关主题