IC卡读写

合集下载

IC卡读写器使用说明

IC卡读写器使用说明

IC卡读写器使用说明一、产品特点:1.高度兼容性:IC卡读写器支持多种类型的IC卡,如非接触IC卡、接触式IC卡、CPU卡等。

2.快速读写:IC卡读取和写入速度快,可以实现迅速的数据传输和处理。

3.简单易用:IC卡读写器的操作简单方便,只需将IC卡放入读卡槽即可完成读取或写入操作。

4.高安全性:IC卡读写器支持密码认证功能,保证IC卡信息的安全性和私密性。

5.强大的扩展性:IC卡读写器支持多种接口类型,可以与不同设备进行连接,满足多样化的应用需求。

二、使用步骤:1.连接读写器:将IC卡读写器与电脑、POS机等设备的通信接口相连,确保接口连接正常。

2.安装驱动程序:根据设备的系统要求,在电脑上安装相应的驱动程序,确保设备可以正常工作。

3.打开读写器:打开IC卡读写器的电源开关,待指示灯亮起后,表示读写器已经准备就绪。

4.放置IC卡:将要读取或写入信息的IC卡放入读卡槽中,确保IC卡与读卡槽接触良好。

5.进行操作:根据实际需求,选择读取或写入操作,按照设备的操作提示进行操作。

6.完成操作:待操作完成后,及时将IC卡从读卡槽中取出,确保信息的安全性。

三、常见问题及解决方法:1.IC卡无法读取:首先检查IC卡与读卡槽是否接触良好,如果接触不良,可以用干净软布擦拭IC卡的金属接点。

还需检查读写器是否正常工作,可以尝试更换其他IC卡进行测试。

2.驱动程序无法安装:检查驱动程序是否与设备的操作系统相匹配,也可尝试重新插拔连接线,重新安装驱动程序。

3.读取或写入速度慢:可以尝试降低IC卡读写器与设备的通信速率,或者将IC卡稍微调整位置,以提升读取或写入速度。

4.IC卡读写器无法被识别:首先检查连接线是否松动或接触不良,可以尝试更换连接线。

还可以尝试连接到其他设备,以确定是否是设备的问题。

5.场景应用不稳定:如果在使用过程中出现稳定性问题,可查看设备是否与电源或其他干扰源距离过近,或者调整设备与电源之间的距离,以消除干扰。

IC卡读写机具的原理和应用

IC卡读写机具的原理和应用

IC卡读写机具的原理和应用IC卡读写机具(IC Card Reader/Writer)是一种用于读取和写入IC卡中信息的设备,一般由硬件电路和软件程序组成。

它通过与IC卡进行通信,实现读取卡内信息、写入新的信息、修改原有信息等功能。

IC卡(Integrated Circuit Card)是一种集成电路芯片与塑料卡片相结合的智能卡,广泛应用于金融、交通、社保、教育等领域。

本文将详细介绍IC卡读写机具的原理和应用。

一、IC卡读写机具的原理1. 通信原理IC卡读写机具与IC卡之间的通信是通过接触或非接触方式进行的。

接触式的IC卡读写机具通过金属接点与IC卡接触,通过与IC卡之间的电气连接来传输数据。

非接触式的IC卡读写机具则通过无线射频技术与IC卡之间进行通信,通过电磁波传输数据。

2. 数据交换原理IC卡读写机具与IC卡之间的数据交换主要分为两种模式:串行模式和并行模式。

串行模式采用一位一位的方式进行数据交换,通信速度较慢但可靠性较高。

并行模式同时传输多位数据,通信速度较快但可靠性较低。

一般情况下,IC卡读写机具通过半双工方式与IC卡进行数据交换,即在一段时间内只能进行单向数据传输。

3. 数据传输协议IC卡读写机具与IC卡之间的数据传输需要遵循一定的协议。

常用的协议有ISO 7816、ISO 14443等。

ISO 7816是一种通用IC卡标准,规定了IC卡与读写机具之间的物理接口和数据传输规范。

ISO 14443是一种非接触式IC卡标准,规定了IC卡与读写机具之间的射频通信规范。

二、IC卡读写机具的应用1. 金融领域IC卡读写机具在金融领域的应用非常广泛。

它可以用于银行卡、信用卡、借记卡等的读写,实现取款、存款、转账、消费等功能。

IC卡读写机具具有较高的安全性,能够防范银行卡的复制、篡改等风险,保护用户的财产安全。

2. 交通领域IC卡读写机具在交通领域的应用主要体现在公交卡、地铁卡等领域。

乘客可以通过IC卡读写机具进行充值、检票、乘车等操作。

IC卡读写机具的使用指南和操作技巧

IC卡读写机具的使用指南和操作技巧

IC卡读写机具的使用指南和操作技巧IC卡读写机具,也被称为智能卡读写器,是一种能够读取和写入IC卡信息的设备。

它广泛应用于各种领域,包括金融、物流、交通等,为用户提供了便捷和安全的服务。

本文将为您介绍IC卡读写机具的使用指南和操作技巧,以帮助您更好地应用这一设备。

一、IC卡读写机具的基本介绍IC卡读写机具是一种具备读取和写入IC卡信息能力的设备。

它可以与各类IC卡进行数据交换和通信,并通过这些卡片实现相应的功能。

例如,金融领域中的银行卡、交通领域中的公交卡、物流领域中的门禁卡等,都可以通过IC卡读写机具来读取和写入信息。

IC卡读写机具通常由硬件设备和相应的软件程序组成。

硬件设备部分包括读卡口、键盘、显示屏等,用于用户操作和信息显示。

而软件程序部分则是指控制卡片信息读取和写入的程序,通常会提供相应的用户界面以供操作。

二、IC卡读写机具的使用指南1. 准备工作在使用IC卡读写机具之前,需要先进行一些准备工作。

首先,确保IC卡读写机具处于正常工作状态,接通电源,并插入相应的通信线缆。

同时,也需要保证所使用的IC卡是正常的、已激活且具备相应的功能。

2. IC卡读取将IC卡放入读卡口中,并确保卡片与读卡口接触良好。

有些IC卡读写机具会自动读取卡片上的信息,而其他的可能需要用户手动触发读取操作。

在读卡过程中,注意保持卡片和读卡口的清洁,避免灰尘或刮伤对读取质量产生影响。

3. IC卡写入如果需要对IC卡进行写入操作,首先确保所使用的IC卡具备可写入的功能。

然后,通过IC卡读写机具提供的相应软件程序进入写入操作界面。

根据需要填写或选择相应的字段,然后点击写入按钮进行写入操作。

4. 安全性注意事项在使用IC卡读写机具时,需要注意保护用户信息的安全性。

首先,确保IC卡读写机具的软件程序是安全可靠的,不会泄露用户信息。

其次,在进行读写操作时,需要确保所在环境的安全性,避免他人窥视或非法读取用户信息。

另外,及时更新IC卡读写机具的系统或软件程序,以免遭受恶意攻击或病毒侵袭。

基于单片机的IC卡读写

基于单片机的IC卡读写

基于单片机的IC卡读写系统实验目的:1.学会并掌握可keil软件的使用;2.学会并掌握protues软件的使用;3.实现基于单片机的IC卡读写;4.通过实验巩固单片机相关知识和检验自身动手能力实验要求:掌握单片机相关知识,利用单片机控制和射频模块组合来读写IC卡,并实现软硬件的仿真模拟。

lC卡读卡器以MCS-51系列单片机作为核心构成,主要用于家庭和机构门锁的开关,具有安全稳定的特点,在识别,删除,添加,自动开锁时,用于对IC卡进行读写操作。

实验设备和仪器:1.89c51单片机最小系统2.射频模块RC522,智能IC卡以及其他附加电路实验内容:本次实验设计是由小组五个成员共同完成基于单片机的IC卡读写系统并完成实物搭建和撰写实验报告。

方案一:实验步骤:1.利用protues画电路图,电路图如图1所示:图1:方案一电路图2.模拟刷卡后显示,如图二:图2:方案一实现图3.根据电路图编写C语言代码:代码如下:#include "reg52.h"#include "main.h"#include "mfrc522.h"#include <string.h>#include "LCD1602.h"#include "DS1302.h"#define uchar unsigned char#define uint unsigned intsbit Speak = P2^7;//蜂鸣器sbit RED = P3^4; //红色指示灯sbit GREEN = P3^3;//绿色指示灯sbit Relay = P3^2; //继电器sbit KEY1 = P1^3;//小时加按键sbit KEY2 = P1^4; //小时减按键sbit KEY3 = P1^5; //分钟加按键sbit KEY4 = P1^6; //分钟减按键sbit KEY5 = P1^7; //添加删除卡sbit KEY = P2^6; //开门unsigned char idata RevBuffer[30];unsigned char Card_Num;void iccardcode();//系统初始化void InitializeSystem()//IC卡初始化{PcdReset(); //IC卡初始化PcdAntennaOff(); //IC卡初始化PcdAntennaOn(); //IC卡初始化M500PcdConfigISOType( 'A' );//IC卡初始化}unsigned char idata UID[4],Temp[4];//读取卡号数组unsigned char Table[3];//显示数组unsigned char Num;unsigned char Count,Countf,Count1,Count2,Count3,Count4,Count5,C_flag;//卡序号void Auto_Reader(void) //自动寻卡{if(PcdRequest(0x52,Temp)==0) //找到卡{if(PcdAnticoll(UID)==0){Speak=0;delay_10ms(20);Speak=1;//蜂鸣器提示Table[0]=UID[0]/100+0x30; //卡号显示Table[1]=UID[0]/10%10+0x30; //卡号显示Table[2]=UID[0]%10+0x30; //卡号显示LCD1602_Disp_ZF(0x80+0x40,"Num: ",16); //卡号显示LCD1602_Disp_ZF(0x84+0x40,Table,3); //卡号显示Count = UID[0]; //判断卡是不是有效if((Count==Count1)||(Count==Count2)||(Count==Count3)||(Count==Cou nt4)||(Count==Count5)){LCD1602_Disp_ZF(0x88+0x40,"Welcome",7); //卡有效GREEN = 0;Relay=0;delay_10ms(200);Relay=1;GREEN = 1; //绿灯亮,打开继电器C_flag=1;}else{LCD1602_Disp_ZF(0x88+0x40,"Error ",7);//卡无效RED = 0;delay_10ms(500);RED = 1; //红灯亮C_flag=2;}delay_10ms(200);LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//显示初始界面}}}uchar DS1302_Table[7]={0}; //读取时间值void Display_LCD2(uchar Dis_Hour,uchar Dis_Min,uchar Dis_Sec)//显示时间值{uchar Dis_Table[8]="11:22:33";Dis_Table[0] = Dis_Hour/10+0x30;Dis_Table[1] = Dis_Hour%10+0x30;Dis_Table[3] = Dis_Min/10+0x30;Dis_Table[4] = Dis_Min%10+0x30;Dis_Table[6] = Dis_Sec/10+0x30;Dis_Table[7] = Dis_Sec%10+0x30;LCD1602_Disp_ZF(0x85,Dis_Table,8);//显示时间值}void Run_DS1302(void){uchar sec, min, hour, day, month, week, year;v_W1302(0x8f, 0);sec = bcdtodec(uc_R1302(0x81)); //读出DS1302中的秒v_W1302(0x8f, 0);min = bcdtodec(uc_R1302(0x83)); //读出DS1302中的分v_W1302(0x8f, 0);hour = bcdtodec(uc_R1302(0x85)); //读出DS1302中的小时v_W1302(0x8f, 0);day = bcdtodec(uc_R1302(0x87)); //读出DS1302中的日v_W1302(0x8f, 0);month = bcdtodec(uc_R1302(0x89)); //读出DS1302中的月v_W1302(0x8f, 0);week = bcdtodec(uc_R1302(0x8b)); //读出DS1302中的星期v_W1302(0x8f, 0);year = bcdtodec(uc_R1302(0x8d)); //读出DS1302中的年DS1302_Table[0]=year;DS1302_Table[1]=month;DS1302_Table[2]=day;DS1302_Table[3]=week;DS1302_Table[4]=hour;DS1302_Table[5]=min;DS1302_Table[6]=sec;Display_LCD2(DS1302_Table[4],DS1302_Table[5],DS1302_Table[6]);//显示时间值}void main(void){InitializeSystem();LCD1602_init();//Money_1=x24c02_read(0X01);//x24c02_write(0X03,Money_3);LCD1602_Disp_ZF(0x80,"Time:",5);//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//LCD1602_Disp_ZF(0x80+0x40,"Num:",4);//ISP_ERASE(0x2c00); //注意:字节编程时必须要先要擦除整个扇区//for(i=0;i<255;i++)// ISP_PROGRAM(0x2c00+i, 0x00);while (1){//////////////////////////if(!KEY){Speak=0;delay_10ms(20);Speak=1;//蜂鸣器提示LCD1602_Disp_ZF(0x88+0x40,"Welcome",7); //卡有效GREEN = 0;Relay=0;delay_10ms(200);Relay=1;GREEN = 1; //绿灯亮,打开继电器delay_10ms(200);LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//显示初始界面}Run_DS1302(); //时间显示//delay_10ms(200);if(!KEY1) //调节小时加{delay_10ms(50);if(!KEY1) //调节小时加{DS1302_Table[4]++; //调节小时加Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节小时加}}if(!KEY2) //调节小时减{delay_10ms(50);if(!KEY2) //调节小时减{ //调节小时减DS1302_Table[4]--; //调节小时减Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0);//调节小时减}}//////////////////////////////////if(!KEY3) //调节分钟加{delay_10ms(50); //调节分钟加if(!KEY3){DS1302_Table[5]++; //调节分钟加Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节分钟加}}if(!KEY4) //调节分钟减{delay_10ms(50); //调节分钟减if(!KEY4) //调节分钟减{DS1302_Table[5]--; //调节分钟减Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节分钟减}}if(!KEY5) //添加删除卡{delay_10ms(50);if(!KEY5) //添加删除卡{if(C_flag==2) //添加卡{//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40," Register Card! ",16);Countf++;if(Countf==6)Countf=1;if(Countf==1) Count1 = Count;//记忆卡号if(Countf==2) Count2 = Count; //记忆卡号if(Countf==3) Count3 = Count; //记忆卡号if(Countf==4) Count4 = Count; //记忆卡号if(Countf==5) Count5 = Count;//记忆卡号}if(C_flag==1)//删除卡{//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40," Clean Card! ",16);if(Count==Count1)Count1=0;//删除卡号if(Count==Count2)Count2=0; //删除卡号if(Count==Count3)Count3=0; //删除卡号if(Count==Count4)Count4=0; //删除卡号if(Count==Count5)Count5=0; //删除卡号}Speak=0;delay_10ms(200);Speak=1;LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);C_flag =0;while(!KEY5);}}//////////////////////}}void iccardcode(){unsigned char cmd;unsigned char status;cmd = RevBuffer[0];switch(cmd){case 1: // Halt the card //终止卡的操作status= PcdHalt();;RevBuffer[0]=1;RevBuffer[1]=status;break;case 2: // Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)// 寻卡,防冲突,选择卡返回卡类型(2 bytes)+ 卡系列号(4 bytes)status= PcdRequest(RevBuffer[1],&RevBuffer[2]);if(status!=0){status= PcdRequest(RevBuffer[1],&RevBuffer[2]);if(status!=0){RevBuffer[0]=1;RevBuffer[1]=status;break;}}RevBuffer[0]=3;RevBuffer[1]=status;break;case 3: // 防冲突读卡的系列号MLastSelectedSnrstatus = PcdAnticoll(&RevBuffer[2]);if(status!=0){RevBuffer[0]=1;RevBuffer[1]=status;break;}//memcpy(MLastSelectedSnr,&RevBuffer[2],4);RevBuffer[0]=5;RevBuffer[1]=status;break;case 4: // 选择卡 Select Card//status=PcdSelect(MLastSelectedSnr);if(status!=MI_OK){RevBuffer[0]=1;RevBuffer[1]=status;break;}RevBuffer[0]=3;RevBuffer[1]=status;break;case 5: // Key loading into the MF RC500's EEPROM//status = PcdAuthState(RevBuffer[1], RevBuffer[3], DefaultKey, MLastSelectedSnr);// 校验卡密码RevBuffer[0]=1;RevBuffer[1]=status;break;case 6:RevBuffer[0]=1;RevBuffer[1]=status;break;case 7:RevBuffer[0]=1;RevBuffer[1]=status;break;case 8: // Read the mifare card// 读卡status=PcdRead(RevBuffer[1],&RevBuffer[2]);if(status==0){RevBuffer[0]=17;}else{RevBuffer[0]=1;}RevBuffer[1]=status;break;case 9: // Write the mifare card// 写卡下载密码status=PcdWrite(RevBuffer[1],&RevBuffer[2]);RevBuffer[0]=1;RevBuffer[1]=status;break;case 10:PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);RevBuffer[0]=1;RevBuffer[1]=status;break;case 12: // 参数设置PcdBakValue(RevBuffer[1], RevBuffer[2]);RevBuffer[0]=1; //contactRevBuffer[1]=0;break;}}4.实物验证结果如图4所示:图4:实物验证结果实物验证可以实现IC卡的读写,由于每个开发板不同,相比仿真程序,对实物验证程序进行了略微的修改,最小系统的LCD1602口不能使用使用外接杜邦线,为了稳定最终选择重新字节焊接板子,最终能达到要求。

非接触式IC卡读写芯片资料

非接触式IC卡读写芯片资料

非接触式IC卡读写芯片非接触式IC卡读写芯片原理非接触式IC卡卡片的电气部分由一个元件和AISC组成,没有其他的外部器件,卡片中的天线是只有线圈,很适合封状到ISO卡片中。

以Mifare为例,读卡器向IC卡发一组固定频率的电磁波,卡内有一个LC串联谐振电路,其频率与读写器的频率相同,这样便产生电磁共振,从而使电容内有了电荷,在电容的另一端接有一个单向通的电子泵,将电容内的电荷送到另一个电容内储存,当储存积累的电荷达到2V时,此电源可为其他电路提供工作电压,将卡内数据发射出去或接收读写器的数据。

其中Mifare的逻辑框图如下图所示。

非接触式读写器包含流向相反的两个信号通道:上部的发送通道和下部的接收通道。

发送通道首先由频率稳定的石英晶体振荡器产生相应工作频率载波信号,该信号将在调制级由已在ASIC段按曼彻斯特或变型密勒或NRZ规则编码的拟发送信息序列进行幅移键控(ASK)调制,最后经功率输出级放大后,由天线发送。

接收通道则首先滤除输入信号中的干扰和噪声。

从高强度的发射驱动信号中提取非接触式IC卡的微弱应答信号,继而放大解调后送ASIC进一步处理。

两个通道传输数据的示意图如下图所示。

特性非接触式识别技术带给我们一个便利接入存储于电子媒体中数据的方式,以13.56 MHz 智能卡读卡器芯片与模块为例:形成MIFARE 接口平台不可或缺的一部份,目前为非接触式与双接口智能卡机制的业界标准符合包括ISO 14443 A、ISO 14443 B 与ISO 15693 等国际化标准相当容易导入设计运作范围达100mm提供RF 数据通信加密选择通过MIFARE 演示系统协助,相当容易进行新型应用的开发典型器件MF RC522特性内置对卡片或标签的信号进行解调和译码的高集成度的模拟电路;采用少量外部元件,即可将输出驱动级接天线;5mm×5mm×0.85mm(HVQFN32)的超小体积;2.5~3.6V的低I电压低功耗设计。

IC卡和IC卡读写器常识

IC卡和IC卡读写器常识

IC卡和IC卡读写器常识人们常说的IC卡,其实际的概念是怎样的呢?IC是英文集成电路的缩写,其含义是指集成电路芯片。

由于法国人的发明,使集成电路芯片嵌入一张PVC之类的材料制成的卡内变成了现实,这就是今天人们所说的IC卡。

IC卡由于其功能可以认为有3个分支:1、IC 存贮卡,包括加密存贮卡。

读写器对卡的读写为接触式,因而称这种卡为接触式IC卡。

2、CPU卡,即IC卡内含有至少一个运算芯片CPU的IC卡。

读写器对卡的读写为接触式,因而称这种卡为接触式IC卡。

3、RF射频卡,射频卡内包括有加密逻辑电路,有的带有CPU芯片,读写器对卡的读写为非接触式,因而称这种IC卡为非接触式IC卡。

IC卡在使用中,有一些参数在卡型选择时是需要认真考虑的。

1)、如果IC卡的使用环境低于0℃时,最好不要选用CPU卡,因CPU卡的工作温度在0℃时以上。

而MemoryCard 可以工作在-20℃的低温下工作。

2)、IC卡是有工作电压指标的,西门子公司的IC卡一般工作电压在4.75V~5.25V之间。

ATMEL公司的IC卡工作电压约在2.7V~5.5V之间,用户在自己设计读写电路时应加以注意。

特别指出的是现在AT MEL新出的45DB041芯片由于工艺变化,已不能在5V电压环境正常工作,我司(深圳庆通科技)针对这种情况研发生产了低电压IC卡读写器和双电压切换的IC卡读写器。

3)、IC卡是有寿命的。

它的寿命是由对IC卡的擦写次数决定的,对于西门子的IC卡,指标为1万次擦写寿命;ATMEL的IC卡,指标称擦写寿命为10万次。

4)、IC卡读写器的使用寿命主要由两个因素决定。

a、读写器本身器件的选择;b、卡座的寿命;卡座的寿命分别有10万次,20万次和50万次。

国内一些个体经济也生产了相当数量的少于7000次寿命的卡座,主要用于IC卡收费的终端表内,如IC卡电表,IC卡民用水表,IC煤气表等。

我司(深圳庆通科技)所标配的卡座为10万次的卡座。

ic卡读写原理

IC卡读写原理主要涉及与IC卡和读写器之间的通信过程。

以下是其主要工作原理:
初始化:当IC卡与读写器接触时,读写器会向IC卡发送初始化命令。

IC卡接收并解析该命令,进行电源管理、芯片复位、寄存器初始化等操作,以确保芯片处于正确的工作状态。

通信:IC卡与读写器通过接触面进行双向通信。

通信过程中,读写器会发送指令给IC卡,IC卡接收并执行相应的操作,然后将结果返回给读写器。

这个过程中,读写器发送的指令包括读取数据、写入数据、加密解密等操作。

数据处理:接收到读写器发送的指令后,IC卡会根据指令进行相应的数据处理。

例如,当读写器发送读取数据的指令时,IC卡会从存储器中读取相应的数据并返回给读写器。

当读写器发送写入数据的指令时,IC卡会将数据写入到指定的存储器中。

在数据处理过程中,IC 卡还可以进行加密解密等安全操作,以保护数据的安全性。

除了基本的读写操作,IC卡还可以支持一些高级功能,如身份认证、支付功能等。

这些功能都基于以上原理实现。

ic卡 块读写流程

ic卡块读写流程IC卡(Integrated Circuit Card)是一种具有集成电路芯片的智能卡,广泛应用于各行各业。

在IC卡中,块读写是一种常见的操作流程,用于读取和写入IC卡中的数据。

本文将介绍IC卡块读写的流程。

一、IC卡块读写概述IC卡的存储空间被划分为多个块(Block),每个块有唯一的地址。

块读写是指通过读写指令,对指定块的数据进行读取或写入操作。

在进行块读写之前,需要先进行卡片认证操作,以确保读写操作的安全性。

二、块读流程1. 连接卡片读写器:将IC卡插入卡片读写器的卡槽中,并确保卡片与读写器的接触良好。

2. 发送卡片选择指令:读写器向IC卡发送选择指令,以选择要进行读取的卡片。

选择指令中包含了卡片的唯一标识信息,以确保选择正确的卡片。

3. 发送块读指令:读写器向IC卡发送块读指令,指定要读取的块的地址。

块读指令中包含了读取块的地址信息,以及读取的数据长度。

4. IC卡响应:IC卡接收到块读指令后,会进行相应的处理,并将要读取的数据发送回读写器。

5. 读取数据:读写器接收到IC卡返回的数据后,将数据保存在本地,供后续处理使用。

6. 断开连接:读写器完成数据读取后,可以断开与IC卡的连接,释放资源。

三、块写流程1. 连接卡片读写器:同样地,将IC卡插入卡片读写器的卡槽中,并确保卡片与读写器的接触良好。

2. 发送卡片选择指令:与块读流程相同,读写器向IC卡发送选择指令,选择要进行写入的卡片。

3. 发送块写指令:读写器向IC卡发送块写指令,指定要写入的块的地址和数据。

块写指令中包含了写入块的地址信息,以及要写入的数据。

4. IC卡响应:IC卡接收到块写指令后,会进行相应的处理,并将写入成功的消息发送回读写器。

5. 断开连接:写入操作完成后,可以断开与IC卡的连接,释放资源。

四、块读写的注意事项1. 认证操作:在进行块读写操作之前,需进行卡片认证操作,以确保操作的合法性和安全性。

2. 块地址:在发送块读写指令时,需指定要读写的块的地址信息,确保操作的准确性。

IC卡读写器使用说明

IC 读写器使用说明一、读写器连接1.1 把通讯线串口232交叉线‚DB9‛端插到PC 机的串口1/2 上1.2 把USB线的T型端插到读写器的T型USB座子上,另一头接电脑的USB口,从电脑取电.1.3 读写器上电以后可以听到”嘀,嘀”两声蜂鸣器的响声,说明FM1702复位初始化正常.如果没有听到蜂鸣器声,表明读写器没有正常上电或射频模块没有接好.二、启动Demo 软件2.1 双击启动测试软件2.2 然后进入‚IC卡操作‛软件2.3 进入功能选项‚参数设臵‛里面,可以设臵串口通讯参数:串口号、波特率、校验位、数据位、停止位等等,设置好了以后点击“修改串口”,如果出现“串口参数设置成功”,表明串口设置成功,如果出现异常,请按照提示做出改动。

2.4 设臵完毕以后可以点击‚测试读卡器‛,如果出现‚读卡器连接成功‛,并且听到读卡器的蜂鸣器响声,证明串口设臵正确!如果出现‚读卡器连接失败‛,表明串口设臵有问题;或者没有任何提示时,表明波特率设臵错误,请重新设臵。

2.5 读写器默认参数:Com1、9600bps、N、8、1三、M1卡片读写测试3.1 把一张Mifare One 卡片放在天线区域范围内3.2 进入功能选项‚低级操作‛里面点击‚寻卡‛,如果出现‚寻卡成功!‛表明寻卡正常,如果出现‚执行失败!‛表明出现异常,请检查卡片是否在寻卡范围内,如果确认卡片没有问题,那读写器有异常3.3 点击‚防冲突‛,如果出现‚执行成功‛表明防冲突正常,如果出现‚执行失败‛表明读写器出现异常或者卡片没有在天线区域范围内3.4 点击‚选择‛,如果出现‚执行成功‛表明选择正常,如果出现‚执行失败‛表明读写器出现异常或者卡片没有在天线区域范围内3.5 进入功能选项‚密码下载‛里面下载卡片密码,比如需要测试卡片扇区1 数据的读写,那么就在扇区1 后面填上密码A/B(注:卡片的初始密码A/B 均为全‘F’),然后选择‚A 组密码‛或者‚B 组密码‛,最后点击‚下载‛,如果出现‚密码下载成功‛表明密码下载成功,如果出现异常请按照错误提示更改后再下载一次,直至‚下载成功‛为止3.6 进入功能选项‚数据读写‛里面,‚请选择扇区号‛下面的可拉选项里面选择第5步下载密码的扇区号(比如扇区1),然后点击‚读出‛,如果提示‚第*扇区数据读出成功‛表明读数据正确。

IC卡读写器及使用的常见问题

IC卡读写器及使⽤的常见问题IC卡读写器简介ic卡读写器有⼈也称读卡器。

提起读卡器,很多⼈都⽴即会想到这种产品是配合数码相机⽽产⽣的,不过⽬前已经不再局限于数码相机使⽤了,⽽是扩展到了更多的领域。

“读卡器”顾名思义这是⼀种读取数据的设备,但其不单单可以⽀持数据的读取同样⽀持数据的写⼊。

其初期的设计思路主要是为了弥补数码相机数据输出的缺陷⽽产⽣的。

由于早期USB接⼝并不普及,因此数码相机的输出⼝都是同电脑的串⼝连接的,由于串⼝的数据传输速度很低,如果把这些数据拷贝到硬盘上,那就要花费⼤量的等待时间了。

因此,读卡器就应运⽽⽣了。

随着MP3、PDA等数码产品的发展,有⼒的推动了读卡器的发展。

⽬前MP3标配的32M或者64M闪存明显的已经不能满⾜我们的需要了,因此添置128M的闪存成了我们的标准配置,但我们如果要把MP3歌曲拷贝到闪存上的话,只有通过MP3播放器来进⾏,⽽这个时候我们就需要专⽤的连线、驱动和软件才能完成,这样MP3播放器的可以便携携性就差很多,⽽如果这个时候我们使⽤读卡器的话,完全不需要MP3播放器的⼲预,直接就可以把MP3歌曲存放到闪存上,这样MP3就变得使⽤更⽅便了。

IC读写器另外IC卡读卡器也可以是我们平时应⽤到的智能卡的读写机具。

⽐如我们⽤的预付费电卡、煤⽓表卡、⽔表卡、乘车的公交卡等。

⽬前市⾯上可以见到读卡器都是被整合在⾃助⼀体付费机⾥,或连接在银⾏柜台服务员的电脑⾥。

有接触类和⾮接触类之分,⽤于读取不同的接触类卡⽚和⾮接触类卡⽚。

IC卡读写器主要应⽤于为智能卡进⾏余额查询和充值的读写数据⼯作。

除了为上述的数码设备提供便捷的数据转移的⽤处之外,⽬前读卡器还被⼤量的运⽤在移动的数据存储上。

在早些年使⽤电脑的时候,只要⼏张软盘就能拷下常⽤的软件,DOS系统只要做在⼀张软盘⾥就够了,⽽那些⼩游戏⼀张软盘可以装好⼏个。

软驱作为标准的驱动设备基本可以满⾜⼈们⼯作、学习的存储需要。

后来,随着计算机技术的发展,特别是W INDOWS操作系统的推出,软件体积成⼏何级数增加,标准的1.44M软盘对于这些庞然⼤物来说那可怜的容量犹如“杯⽔车薪”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IC卡应用
IC(Integrated Circuit)卡,也被称作智能卡(Smart Card),具有写入数据和存储数据的功能,IC卡内存储器的内容可以根据需要有条件地供外部读取,完成信息处理和判定。

由于其内部具有集成电路,不但可以存储大量信息,具有极强的保密性能,并且还具有抗干扰、无磨损、寿命长等特性。

因此在各个领域中得到广泛应用。

下面通过两个实例介绍IC 卡的简单应用。

实例422 向IC卡中写入数据
实例说明
IC卡是携带应用信息和数据的媒体,空白IC卡是不能立即使用的,必须对IC卡应用系统进行初始化,写入系统IC卡和个人密码,个人专用信息和应用数据。

下面介绍如何向IC
卡中写入数据。

运行本例,在“数据”文本框中输入要存入IC卡中的数据,单击“写数据”按钮,即可将输入的数据写入IC卡中。

如图所示。

技术要点
本例使用的是深圳明华生产的明华IC卡读写器,用户在使用时将驱动程序安装完毕后,即可正常使用本系统。

本例通过调用链接库,进行IC卡的读写工作。

下面介绍与IC卡写操作相关的几个函数。

(1)auto_init函数
该函数用于初始化IC卡读卡器。

语法如下:
public static extern int auto_init(int port, int baud);
参数说明如下。

l port:标识端口号,Com1对应的端口号为0;Com2对应的端口号为1,依此类推。

l baud:标识波特率。

l 返回值:如果初始化成功,返回值是IC卡设备句柄;如果初始化失败,返回值小于零。

(2)setsc_md函数
该函数用于设置设备密码模式。

语法如下:
public static extern int setsc_md(int icdev, int mode);
参数说明如下。

l icdev:标识设备句柄,通常是auto_init函数的返回值。

l mode:标识设备密码模式,如果为0,设备密码有效,设备在加电时必须验证设备密码才能对设备进行操作。

如果为1,设备密码无效。

l 返回值:如果函数执行成功返回值为零,否则小于零。

(3)get_status函数
该函数用于获取设备的当前状态。

语法如下:
public static extern Int16 get_status(int icdev, Int16* state);
参数说明如下。

l icdev:标识设备句柄,通常是auto_init函数的返回值。

l state:用于接收函数返回的结果。

如果为0表示读卡器中无卡,为1表示读卡器中有卡。

l 返回值:如果函数执行成功返回值为零,否则小于零。

(4)csc_4442函数
该函数用于核对IC卡密码。

语法如下:
public static extern Int16 Csc_4442(int icdev, int len, [MarshalAs] byte[]
p_string);
参数说明如下。

l icdev:标识设备句柄,通常是auto_init函数的返回值。

l len:标识密码长度,其值为3。

l p_string:标识设置的密码。

l 返回值:如果函数执行成功返回值为零,否则小于零。

(5)swr_4442函数
该函数用于向IC卡中写入数据。

语法如下:
public static extern int swr_4442(int icdev, int offset, int len, char* w_string);参数说明如下。

l icdev:标识设备句柄,通常是auto_init函数的返回值。

l offset:标识地址的偏移量,范围是0~255。

l len:标识字符串长度。

l w_string:标识写入的数据。

(6)ic_exit函数
该函数用于关闭设备端口。

语法如下:
public static extern int ic_exit(int icdev);
参数说明如下。

l icdev:标识设备句柄,通常是auto_init函数的返回值。

(7)dv_beep函数
该函数使读卡器嗡鸣。

语法如下:
public static extern int dv_beep(int icdev, int time);
参数说明如下。

l icdev:标识设备句柄,通常是auto_init函数的返回值。

l time:标识嗡鸣持续的时间,单位是10毫秒。

实现过程
(1)新建一个项目,命名为Ex13_05,默认窗体为Form1。

(2)在Form1窗体中,主要添加两个Button控件,用于执行向卡中写入数据和退出程序的操作,添加一个TextBox控件,将TextBox中数据写入IC卡中。

(3)主要程序代码。

将程序所使用的操作IC卡的函数,封装在类IC中。

代码如下:
[StructLayout]
public unsafe class IC
{
ows[0][0].ToString();
= [0].Rows[0][1].ToString();
= [0].Rows[0][2].ToString();
= [0].Rows[0][3].ToString();
}
else
{
= "不存在该用户!";
}
}。

相关文档
最新文档