




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验九:M1卡数据块的值操作一、实验目的1、熟悉rf_increment(块加值)和rf_decrement(块减值)两个函数。2、理解M1卡数值存储格式。二、实验准备M1卡中数值块只能通过以数值块格式的写操作生成。数值:有符号4字节数值,数值的最低字节存储在最低地址字节。负值以标准的2的补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。地址(Adr):1字节地址,当进行备份管理时,可用于保存块的地址。地址保存四次。两次取反,两次不取反。三、功能要求1、能够读取M1卡中某块的信息。2、能够进行加值/减值的操作。四、实验内容:1、用Microsoft Visual C+新建一个工程(MFC AppWizardexe),应用程序类型是基本对话框,应用程序向导创建完成之后,系统进入到对话框编译页面的主页面,用控件设计对话框,对话框的设计如下图所示:2、编写程序。(1)、由于本次试验没有用“连接设备”按钮,所以需要让定时器在程序启动时就开始工作,我把启动定时器、连接设备和装载密码的代码放在了初始化程序里面了,代码如下:BOOL CFpzDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu.SetTimer(1,1000,NULL);/定义时钟1,时间间隔为1sicdev=rf_usbinit();/返回的设备描述符if (icdev0) /如果设备连接成功。m_list.AddString(设备连接成功!);/在列表框中显示设备连接成功rf_beep(icdev,50);/控制蜂鸣器, 蜂鸣时间50毫秒unsigned char status19;st=rf_get_status(icdev,status);/返回读写器版本信息,长度为18字节if (st=0) /如果设备连接成功。m_list.AddString(char*)status);/在列表框中显示版本号elsem_list.AddString(获取版本号失败!);/在列表框中显示获取版本号失败!unsigned char key6=0xff,0xff,0xff,0xff,0xff,0xff;st=rf_load_key(icdev,0,sector,key);/*向读写器装载指定扇区的新密码(不与卡片进行通讯),密码类型为 KEY A */if(st=0)m_list.AddString(load key right!);/在列表框中显示load key right!elsem_list.AddString(load key fail!);/在列表框中显示load key fail!elsem_list.AddString(连接失败!);/在列表框中显示连接失败!(2)、定时器执行的代码如下:void CCaikaDlg:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultswitch(nIDEvent)case 1: /1号定时器应该处理的事情unsigned long snr;st=rf_card(icdev,1,&snr);/发送读卡命令if (st=0)m_list.ResetContent();/显示数据之前先清空列表m_list.AddString(读卡成功!);/在显示区显示读卡成功!st=rf_authentication(icdev,0,sector);/*验证1扇区密码*/if (st=0)m_list.AddString(验证密码成功!);/显示扇区号和块号m_list1.ResetContent();/显示之前把列表框清空m_list1.AddString(1);/在扇区号 列表框显示1m_list2.ResetContent();/显示之前把列表框清空m_list2.AddString(2);/在块号列表框显示2/读取当前值m_list3.ResetContent();rf_readval(icdev,6,&value);/读取1扇区2块值操作块值CString str;str.Format(%d,value);/格式转换为10进制m_list3.AddString(str);/显示当前值else/清空所有列表,并在显示框显示请放卡!m_list.ResetContent();m_list.AddString(请放卡!);m_list1.ResetContent();m_list2.ResetContent();m_list3.ResetContent();break;(3)、初始化按钮执行的代码如下:void CCaikaDlg:OnButton15() rf_initval(icdev,6,0); /把1扇区2块初始化为零(4)、加值按钮执行代码如下:void CCaikaDlg:OnButton13() / TODO: Add your control notification handler code hereUpdateData();st=rf_increment(icdev,6,m_edit);/进行减值操作,减数为编辑框里的值m_editif(st=0)m_list.AddString(加值成功!);/在显示框显示加值成功!elsem_list.AddString(加值失败!);/在显示框显示加值失败!/读出并显示当前值rf_readval(icdev,6,&value);/读取1扇区2块值操作块值 CString str;str.Format(%d,value);/格式转换为10进制m_list3.ResetContent();/显示之前把当前值框清空m_list3.AddString(str);/在当前值框显示加值后的值m_edit=0;/编辑框初始化为0UpdateData(false);/把初始化后的m_edit显示在编辑框 (5)、减值按钮执行代码如下:void CCaikaDlg:OnButton14() / TODO: Add your control notification handler code hereUpdateData();st=rf_decrement(icdev,6,m_edit);/进行加值操作,加数为编辑框里的值m_editif(st=0)m_list.AddString(减值成功!);/在显示框显示减值成功!elsem_list.AddString(减值失败!);/在显示框显示减值失败!/读出并显示当前值rf_readval(icdev,6,&value);/读取1扇区2块值操作块值 CString str;str.Format(%d,value);/格式转换为10进制m_list3.ResetContent();/显示之前把当前值框清空m_list3.AddString(str);/在当前值框显示加值后的值m_edit=0;/编辑框初始化为0UpdateData(false);/把初始化后的m_edit显示在编辑框五、实验效果.(1)放卡后,运行程序并初始化后显示 (2)在编辑框输入50,点加值后显示效果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年无人机驾驶员职业技能考核试卷及答案(无人机操作规范与要求)
- 宫腔粘连考试试题及答案
- 设备人员面试题目及答案
- 飞机训练考试题及答案
- 2025年CAAC执照理论复习考试总题库及答案
- 高利贷借款合同模板全套(3篇)
- 房屋买卖双方签订的带抵押的正式协议
- 出纳岗位安全责任聘用合同
- 创新型农业技术研发成果转化合作补充合同
- 个体户食品加工厂员工劳动合同范本
- JGT366-2012 外墙保温用锚栓
- 《动物比较生理学》课件
- 火龙罐综合灸疗法
- 化学锚栓承载力计算
- 肺部感染性疾病课件
- 医院健康体检表
- 肌肉工作原理
- 液体外渗的处理ppt
- 2016火力发电机组及蒸汽动力设备水汽质量
- 市政排水管网施工方案
- 2023年6月浙江省大学英语三级考试真题试卷
评论
0/150
提交评论