版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
班级:物联网技术10-01 姓名:王博 学号:541013150141物联网感知和网络传输技能实训页郑州轻工业学院实训报告实训名称:物联网感知和网络传输技能实训姓名:王博院(系):计算机与通信工程学院专业班级:物联网技术10-01学号:541013150141指导教师:陈燕苏日建李娜娜张涛成绩:时间:2012年6月25日至2012年9月14日目录1主要内容 21.1读卡器的介绍 21.1.1特性 21.2M1卡的学习与操作 21.2.1RF接口 31.2.2M1卡工作及通讯原理 31.3上位机管理软件的开发 31.4个人信息的录入与整体系统的测试 52实训心得 83附录 83.1连接读卡器代码 83.2寻卡代码 93.3数字按键赋值代码 113.4充值代码 113.5消费代码 123.6写入数据代码 133.7清空数据代码 153.8断开连接代码 151主要内容1.1读卡器的介绍MIFAREMF1是符合ISO/IEC14443A的非接触智能卡。其通讯层(MIFARERF接口)符合ISO/IEC14443A标准的第2和第3部分。其安全层支持域检验的CRYPTO1数据流加密。1.1.1特性1.MIFARERF接口(ISO/IEC14443A)• 工作距离:可达100mm(取决于天线尺寸结构)• 工作频率:13.56MHz• 快速数据传输:106kbit/s• 高度数据完整性保护:16BitCRC,奇偶校验,位编码,位计数• 真正的防冲突2.EEPROM• 1Kbyte,分为16个区,每区4个块,每块16字节。• 用户可定义内存块的读写条件• 数据耐久性10年• 写入耐久性10万次以上3.安全性• 三层认证(ISO/IECDIS9798-2)• 带射频通道数据加密• 每区两个密钥,支持密钥分级的多应用场合• 每卡一个全球唯一序列号• 在运输过程中以传输密钥保护对EEPROM的访问权1.2M1卡的学习与操作MF1S50集成电路芯片内含1KbyteEEPROM、RF接口和数字控制单元。能量和数据通过天线传输,卡中天线为几匝线圈,直接连接到芯片上。.不再需要额外的组件。1.2.1RF接口–调制解调器–检波器–时钟发生器–上电复位–稳压器1.2.2M1卡工作及通讯原理命令由读写器发出,根据相应区读写条件受数字控制单元的控制。1.呼叫(REQUESTSTANDARD/ALL)卡上电复位后,通过发送request应答码(ATQA符合ISO/IEC14443A),能够回应读写器向天线范围内所有卡发出的request命令。2.防冲突循环(ANTICOLLISIONLOOP)在防冲突循环中,读回一张卡的序列号。如果在读写器的工作范围内有几张卡,它们可以通过唯一序列号区分开来,并可选定以进行下一步交易。未被选定的卡转入待命状态,等候新的request命令。3.选卡(SELECTCARD)读写器通过selectcard命令选定一张卡以进行认证和存储器相关操作。该卡返回选定应答码(ATS=08h),明确所选卡的卡型。4.三轮认证(3PASSAUTHENTICATION)选卡后,读写器指定后续读写的存储器位置,并用相应密钥进行三轮认证。认证成功后,所有的存储器操作都是加密的。5.存储器操作认证后可执行下列操作:• 读数据块• 写数据块• 减值:减少数据块内的数值,并将结果保存在临时内部数据寄存器中。• 加值:增加数据块内的数值,并将结果保存在数据寄存器中。• 恢复:将数据块内容移入数据寄存器。• 转存:将临时内部数据寄存器的内容写入数值块1.3上位机管理软件的开发用vs或vc制作设计操作界面,图1-1图1-1在相应按钮和编辑框后加入对应程序代码连接设备按钮对应代码,图1-2图1-2数字按钮“1”对应代码,图1-3图1-3按钮太多不再一一截图展示另因为编辑框和列表框不需要程序代码只需在属性中设置属性,在此不再截图展示1.4个人信息的录入与整体系统的测试程序开始运行界面,图1-4图1-4连接设备成功界面,图1-5图1-5连接M1卡并读取数据成功界面,图1-6图1-6写入数据成功界面,图1-7图1-7充值和消费成功界面,图1-8图1-8再次连接读取数据成功界面,图1-9图1-92实训心得此次实训为期四周,但在机房实训总时间只有十四天,实训刚开始两天老师讲了些M1卡的知识就开始让我们自己做,后来老师又讲了些实用的知识,自己又在网上找些资料还有问老师,还有和同学讨论,共同进步,才慢慢懂得了怎么做。总体来说实训期间也学到了许多知识,但由于C语言学的不好,很多代码不会写都是粘贴网上或者老师给的例子里面的代码段,让自己写代码的话还是不会。以后还是要多学学C语言。同时也让我认识到了团体的力量,每人解决一个问题,放在一起就能完成一个项目。3附录3.1连接读卡器代码 icdev=rf_usbinit(); if(icdev>0) {m_list.AddString("设备连接成功!"); unsignedcharstatus[19]; st=rf_get_status(icdev,status); if(st==0) {m_list.AddString((char*)status); } else {m_list.AddString("获取版本号失败!"); } unsignedcharkey[6]={0xff,0xff,0xff,0xff,0xff,0xff}; st=rf_load_key(icdev,0,sector,key); if(st==0) {m_list.AddString("loadkeyright!"); } else {m_list.AddString("loadkeyfail!"); } rf_beep(icdev,50); } else { m_list.AddString("连接失败!"); }}3.2寻卡代码 unsignedlongsnr; st=rf_card(icdev,0,&snr); if(st==0) {CStringstr; str.Format("%x",snr); m_list.AddString("rf_cardok!"); m_list.AddString(str); } else m_list.AddString("rf_carderror"); st=rf_authentication(icdev,0,sector); if(st!=0) { m_list.AddString("验证密码失败!"); } if(st==0) { m_list.AddString("读数据成功!"); } else m_list.AddString("读数据失败!");unsignedchardatabuff[17],databuff1[17],databuff2[17]; ZeroMemory(databuff,17); ZeroMemory(databuff1,17); //ZeroMemory(databuff2,17); st=rf_read(icdev,sector*4,databuff); st=rf_read(icdev,sector*4+1,databuff1); st=rf_read(icdev,sector*4+2,databuff2); if(st==0) { SetDlgItemText(IDC_EDIT1,(char*)databuff); SetDlgItemText(IDC_EDIT2,(char*)databuff1); SetDlgItemText(IDC_EDIT4,(char*)databuff2); //m_list.AddString((char*)databuff); m_list.AddString((char*)databuff); } else m_list.AddString("读数据失败!");}3.3数字按键赋值代码CStringmmstr1;mmstr1=m_v;mmstr1+="1";m_v=mmstr1;UpdateData(false);3.4充值代码{ unsignedM,N;CStringmmt,mmr; mmt=m_v.GetBuffer(16) mmr=m_n.GetBuffer(16);N=atoi(mmt); M=atoi(mmr); M+=N; SetDlgItemInt(IDC_EDIT4,M); UpdateData(); CStringrsing3=m_n.GetBuffer(16); m_list.SetCurSel(m_list.GetCount()-1); char*data3=rsing3.GetBuffer(rsing3.GetLength()); m_list.AddString(data3); m_list.SetCurSel(m_list.GetCount()-1); st=rf_write(icdev,sector*4+2,(unsignedchar*)data3); //char*data3=data.GetBuffer(data.GetLength()); if(st==0) { m_list.AddString("金额改写成功!"); m_list.SetCurSel(m_list.GetCount()-1); } else { m_list.AddString("金额改写失败!"); m_list.SetCurSel(m_list.GetCount()-1); } UpdateData(false);UpdateData();m_v=""; UpdateData(false); //TODO:Addyourcontrolnotificationhandlercodehere }3.5消费代码{unsignedM,N; CStringmmt,mmr; mmr=m_n.GetBuffer(16); mmt=m_v.GetBuffer(16);M=atoi(mmr); N=atoi(mmt); M-=N; SetDlgItemInt(IDC_EDIT4,M); UpdateData(); CStringrsing3=m_n.GetBuffer(16); m_list.SetCurSel(m_list.GetCount()-1); char*data3=rsing3.GetBuffer(rsing3.GetLength()); m_list.AddString(data3); m_list.SetCurSel(m_list.GetCount()-1); st=rf_write(icdev,sector*4+2,(unsignedchar*)data3); //char*data3=data.GetBuffer(data.GetLength()); if(st==0) { m_list.AddString("金额改写成功!"); m_list.SetCurSel(m_list.GetCount()-1); } else { m_list.AddString("金额改写失败!"); m_list.SetCurSel(m_list.GetCount()-1); } UpdateData(false);UpdateData(); m_v=""; UpdateData(false); //TODO:Addyourcontrolnotificationhandlercodehere}3.6写入数据代码{UpdateData(); CStringrsing=m_name.GetBuffer(16); m_list.SetCurSel(m_list.GetCount()-1); char*data1=rsing.GetBuffer(rsing.GetLength()); m_list.SetCurSel(m_list.GetCount()-1); //char*data1=data.GetBuffer(data.GetLength()); st=rf_write(icdev,sector*4,(unsignedchar*)data1); UpdateData(); m_list.SetCurSel(m_list.GetCount()-1); char*data3=rsing.GetBuffer(rsing.GetLength()); m_list.SetCurSel(m_list.GetCount()-1); //char*data1=data.GetBuffer(data.GetLength()); st=rf_write(icdev,sector*4,(unsigned
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论