广州致远电子有限公司概述一特征z采用最新PHILIPS高集成ISO14443A读卡芯片MFRC500z采用最新PHILIPS高集成PDIUSBD12符合USB1.1协议zUSB总线供电整机电流小于120mAz操作距离可达9cmz支持mifare1S50mifare1S70mifareUltraLightmifareLight和华虹SHC1102z未与PC机连接时可指示感应区内是否有卡z提供丰富的PC机接口函数和演示程序z有蜂鸣器及发光二极管进行报警二外观及尺寸如图所示实际尺寸124mm长×97mm宽×31mm高广州致远电子有限公司上电及状态指示将USB插头插入USBB型插座读卡器即可上电此时可通过观察读卡器上LED显示判断读卡器所处状态正常情况下上电时红灯和绿灯同时点亮约半秒钟后绿灯灭红灯继续亮此时读卡器进入工作状态可启动PC机程序对其进行操作读卡器上电稳定后红绿灯的任何其它可能的状态组合均为故障一红灯的作用红灯是用来指示Config()函数的执行状态的若该函数执行成功则红灯亮否则红灯不亮若读卡器执行了Close()函数则红灯灭二绿灯的作用有四种情况可能改变绿灯的状态1执行Config()函数和Close()函数若Config()函数执行成功则绿灯灭否则绿灯亮若读卡器执行了Close()函数则绿灯灭读卡器上电时将自动执行Config()函数因此读卡器稳定后若红灯亮绿灯灭则工作正常若红灯灭绿灯亮则RC500初始化失败将不能对卡进行操作必须送修2当读卡器上电进入正常工作状态后此时红灯亮绿灯灭在PC机未发出任何命令之前若读卡器感应区内有卡绿灯将亮否则绿灯灭在PC机已发出任何一条命令后此功能消失因此在未启动PC机程序之前本读卡器可以指示感应区内是否有卡3执行Set_Control_Bit()函数将熄灭绿灯执行Clr_Control_Bit()函数将点亮绿灯4执行Alarm()函数将可使绿灯闪烁三蜂鸣器执行Alarm()函数可使直流蜂鸣器发声可控制蜂鸣器发声的持续时间间歇时间及重复次数四USB指示读卡器一上电当USB通信正常时透过读卡器左边的百叶孔可以看见内部有一绿色发光管点亮当USB正在通信时该绿色发光管会闪烁若该发光管不亮则说明通信出错或USB驱动程序未安装有关驱动程序的安装见上位机库函数及演示软件使用说明广州致远电子有限公司读卡器数据传输协议版本号1.42004年01月30日广州致远电子有限公司数据块格式1.1主机USB读卡器命令模式SeqNrCommandLenData[0N]BCCINFO[0]......INFO[n]SeqNr1Byte数据交换包的序号Command1Byte命令字符Len1Byte数据的长度Data[]LenByte数据字节BCC1Byte的BCC校验1.2USB读卡器主机响应模式SeqNrstatusLenData[0N]BCCINFO[0]......INFO[n]SeqNr1Byte数据交换包的序号status1Byte状态字符Len1Byte数据的长度Data[]LenByte数据字节BCC1Byte的BCC校验1.3数据块格式描述z数据交换包的序号由主机发送数据块时产生取值范围为0-255在经过一次正确的数据交换后主机在发送下一个命令时将数据包的序号加1读卡器返回最近接收的包序号通常主机应用程序最好检查命令/响应包交换时的数据包的序号z不管在执行命令时出现了任何错误响应包中的数据长度为0Len=0zBCC校验码计算数据块中所有的INFO字节然后将结果传送到数据块的最后一个字节如下式所示INFO[n]=BCC=~INFO[0]⊕INFO[1]⊕...⊕INFO[n-1](⊕...XOR~…NOT)广州致远电子有限公司主机命令及参数(版本号1.4)2.1底层函数和高级函数命令参数补充说明名称数值发送接收Request0x41_Mode_TagType发出询问命令检查在有效范围内是否有卡存在Anticoll0x42_Bcnt_SNR开始防冲突操作返回卡的序号Anticoll20x71_Encoll,_Bcnt_SNR可禁止或允许多张卡进入CascAnticoll*0x74_Encoll,_Bcnt,_Select_Code_SNR可实现三层防碰撞协议Select0x43_SNR_Size选择卡返回卡的存贮容量CascSelect*0x75_Select_Code,_SNR_Sak可实现三层选择Authentication0x44_Mode,_SecNr--用EEPROM中的密码验证Authentication20x72_Mode,_SecNr,_KeyNr--选择密匙区E2中的密码区验证AuthKey0x73_Mode,_SecNr,_Key(6)--直接密码验证Halt0x45----将卡置于挂起模式Read0x46_Adr_Data从卡中相应地址中读出一个16字节的块Write0x47_Adr,_Data--向mifare1卡中相应地址块写入16字节数据ULWrite*0x76_Adr,_Data--向mifareUltraLight卡中相应地址页写入4字节数据Value0x70_Mode,_Adr,_Value,_Trans_Adr--包含加减恢复函数并带自动传送ValueDebit*0x77_Mode,_Adr,_Value--带内部自动传送的值操作支持MifareLightLoadKey0x4C_Mode,_SecNr,,_Nkey--改变存贮在EEPROM中的密钥Reset0x4E_Msec--关闭天线输出数ms使卡复位GetInfo0x4F--_Info读取固件信息RC500序列号SetControlBit0x50----将控制位置为高电平ClrControlBit0x51----将控制位置为低电平Config0x52----复位且配置RC500Close0x3F----关闭RC500CheckWrite0x53_SNR,_Authmode,_Adr,_Data--将所传送的数据和上一次所写的数据进行比较Alarm0x60_Control,_Opentm,_Closetm,_Repcnt--输出控制信号能控制动作时间间隙时间和重复次数ReadE20x61_Adr,_Length_Data读RC500内EEPROM的内容WriteE20x62_Adr,_Length,_Data--写数据到RC500内EEPROM以下是对华虹SHC1102卡的操作函数SHC1102_Auth0x80_KeyBlock,*_Key4字节密码验证SHC1102_Read0x81_Block*_Data读4字节数据SHC1102_Write0x82_Block,*_Data写4字节数据以上补充说明栏中打*号的是此版本的新增函数广州致远电子有限公司固件版本升级说明z2003年9月30日版本1.1在Get_Info()的返回数据中增加了一字节的固件版本号函数LoadKeyAuthentication和Authentication2增加了对密钥区号必须小于16的限制对Mifare1S70卡的支持更加完善z2003年10月16日版本1.2增加了对华虹SHC1102卡的操作支持z2003年12月03日版本1.3USB速度提高了很多z2004年01月30日版本1.4实现了三层防碰撞协议且完善了对MifareUltraLight和MifareLight的支持广州致远电子有限公司状态值列表名称值描述MI_OK,COMM_OK0函数调用成功MI_NOTAGERR1在有效区域内没有卡MI_CRCERR2从卡中接收到了错误的CRC校验和MI_EMPTY3值溢出MI_AUTHERR4不能验证MI_PARITYERR5从卡中接收到了错误的校验位MI_CODEERR6编码错误MI_SENDRERR8在防冲突时读到了错误的串行码MI_KEYERR9证实密码错MI_NOTAUTHERR10卡没有验证MI_BITCOUNTERR11从卡中接收到了错误数量的位MI_BYTECOUNTERR12从卡中接收了错误数量的字节MI_TRANSERR14调用Transfer函数出错MI_WRITEERR15调用Write函数出错MI_INCRERR16调用Increment函数出错MI_DECRERR17调用Decrment函数出错MI_READERR18调用Read函数出错MI_COLLERR24冲突错MI_ACCESSTIMEOUT27访问超时MI_QUIT30上一次了送命令时被打断MIS_CHK_OK0CheckWrite正确MIS_CHK_FAILED1CheckWrite出错MIS_CHK_COMPERR2CheckWrite:写出错比较出错COMM_ERR255串行通信错误3函数描述下面的描述可以作为函数声明广州致远电子有限公司请求Request声明ucharmifs_request(uchar_Mode,ucharidata*_TagType);主机⇒读卡器命令符0x41长度1Data[0]:_Mode读卡器⇒主机状态值MI_OKMI_QUITMI_NOTAGERRMI_BITCOUNTERRCOMM_ERR长度2Data[0]:tagtype(低字节)Data[1]:tagtype(高字节)参数_ModeALL=0请求天线范围内IDLE状态的卡HALT状态的除外ALL=1请求天线范围内的所有卡_tagtype当发生错误时不返回任何内容Len=0描述此函数发送Request命令检查在有效范围内是否有卡存在这个函数在选择一个新的卡是必须调用的ALL广州致远电子有限公司防碰撞Anticoll声明ucharmifs_anticoll(uchar_Bcnt,ucharidata*_SNR);主机⇒读卡器命令符0x42长度1Data[0]_Bcnt读卡器⇒主机状态值MI_OKMI_QUITMI_NOTAGERRMI_BITCOUNTERRCOMM_ERR长度4Data[0]snr(LL)Data[1]snr(LH)Data[2]snr(HL)Data[3]snr(HH)参数_Bcnt为预选卡所分配的位的个数通常Bcnt=0_SNR卡的序列号存贮在一个无符号的四字节数组中低字节放在地址处描述此函数开始防冲突操作必须在调用了Request命令后立即调用当知道了所要选择卡的序列号后就没有必要调用AntiColl此时调用了Request后直接调用Select函数即可广州致远电子有限公司选择Select声明ucharmifs_select(ucharidata*_SNR,ucharidata*_Size);主机⇒读卡器命令符0x43长度4Data[0]snr(LL)Data[1]snr(LH)Data[2]snr(H