IC卡通讯协议

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.数据格式1.1数据格式数据格式(起始位,数据位,校验位,停止位)可以根据通讯的需要由软件设置,下面是设备支持的数据格式:参数描述波特率可选:9600,19200,38400,57600,1152000数据位固定:8bits起始位固定:1Bits停止位固定:1bit.校验位可选:Odd,Even,None下面是默认设置:波特率数据位起始位停止位校验位9600811None1.2数据包格式数据包格式,命令包是由主机发送到读写器,返回包是由读写器返回主机。命令包格式(主机到读写器):STXSTATIONIDDATALENGTHCMDDATA[0..N]BCCETX(BCC)=STATIONID⊕DATALENGTH⊕CMD⊕DATA[0]⊕…⊕DATA[n],where⊕isthe“EOR”.返回包格式(读写器到主机)STXSTATIONIDDATALENGTHSTATUSDATA[0..N]BCCETX(BCC)=STATIONID⊕DATALENGTH⊕STATUS⊕DATA[0]⊕…⊕DATA[n],where⊕isthe“EOR”.数据包中字节描述:字段长度描述备注STX10x02–‘起始字节’–标准控制字节.表示一个数据包的开始STATIONID1设备地址,在多机通讯所必需,读写器在收到数据包后判断包内的地址与自身预设地址是否相符,相符才会响应。地址0x00是一个在单机模式下使用的特殊地址。读写器会响应任何带0地址的数据包(不进行地址判断).DATALENGTH1数据包中数据字节的长度.包括CMD/STATUS和DATAfield,但不包括BCC.LENGTH=字节数(CMD/STATUS+DATA[0..N])CMD1命令字:由一个命令字节组成.可以参照命令表该字节只在发送包中使用STATUS1返回状态字节:由读写器返回主机的状态该字节只在返回包中使用DATA[0-N]0–255这是一个长度与命令字有关的数据流。也有部分命令不需要附加数据.BCC18bits的校验字节.它包括除STX,ETX外所有字节的异或校验.ETX10x03:’终止字节’–标准控制字节,表示数据包的结束.2.COMMANDS(命令)命令表命令字名称描述ISO14443TYPEACommands(0x03~0x06)0x03REQAISO14443-A寻卡请求0x04AnticollA防冲突0x05SelectA选定卡0x06HaltA使卡进入HAIT状态ISO14443BTYPEBCommand((0x09~0x0C)0x09ReqBISO14443B寻卡命令0x0AAnticollBIS14443-B防冲突命令0x0BAttrib_TypeBISO14443BATTRIB命令0x0CRst_TypeB集成了寻卡和ATTRIB命令通过此命令直接对卡进行复位0x0DISO14443_TypeB_Transfer_CommandISO14443B传送命令,可以通过此命令向卡发任意有效的命令,数据MifareApplicationCommands(0x20~0x2F)0x20MF_Read集成寻卡,防冲突,选卡,验证密码,读卡等操作,一个命令完成读卡操作。0x21MF_Write集成寻卡,防冲突,选卡,验证密码,写卡等操作,一个命令完成写卡操作。0x22MF_InitVal集成寻卡,防冲突,选卡,验证密码等操作,一个命令完成块值初始化操作。0x23MF_Decrement集成了寻卡,防冲突,选卡,验证密码,块值减操作,一个命令完成块减值操作。0x24MF_Increment集成了寻卡,防冲突,选卡,验证密码,块值加等操作,一个命令完成块值加操作。0x25MF_GET_SNR集成了寻卡,防冲突,选卡等操作,一个命令完成读取卡片序列号的操作0x28ISO14443_TypeA_Transfer_CommandISO14443TypeA通用命令,可以根据ISO14443TypeA向卡发任何数据ISO15693Commands(0x10~0x1D)0x10ISO15693_Inventory寻卡,防冲突0x11ISO15693_Read读卡操作0x12ISO15693_Write写卡操作0x13ISO15693_Lockblock锁定卡扇区内容操作0x14ISO15693_StayQuiet将卡至于静止状态0x15ISO15693_Select选择卡0x16ISO15693_Resetready使卡进入READY状态0x17ISO15693_Write_Afi写AFI0x18ISO15693_Lock_Afi锁定AFI0x19ISO15693_Write_Dsfid写DSFID0x1AISO15693_Lock_Dsfid锁定DSFID0x1BISO15693_Get_Information获取卡信息0x1CISO15693_Get_Multipe_Block_Security获取块安全信息0x1DISO15693_Transfer_Command可以通过此命令向卡片发任何数据和命令系统命令(0x80~0xFF)0x80SetAddress设置读写器地址0x81SetBaudrate设置通讯波特率0x82SetSerlNum设置读写器的序列号0x83GetSerlNum读取读写器的序列号0x84Write_UserInfo设置用户数据信息0x85Read_UserInfo读取用户数据信息0x86Get_VersionNum用来读取模块的版本信息0x87Control_Led1控制led1的工作方式(只有带有两个LED口的模块,支持此命令)0x88Control_Led2控制led2的工作方式0x89Control_Buzzer控制buzzer的工作方式SystemCommands3.1SetAddress(0x80)发送数据:DATA[0]:要设置的新地址,十六进制表示。正确返回:STATUS:0x00–OKDATA[0]设置的地址错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:为读写器设置新的地址,读写器返回设置好的地址.比如:发送命令:02000280028003回执数据:020002000200033.2SetBaudrate(0x81)发送数据:DATA[0]波特率0x00–9600bps0x01–19200bps0x02–38400bps0x03–57600bps0x04–115200bps0x04—9600bps正确返回:STATUS:0x00–OKDATA[0]设置的波特率代码.错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:设置读写器与主机通讯的波特率.这个波特率将被保存到EEPROM内并作为新的默认波特率.设置好新的波特率后,系统开始使用新的波特率,而不需要复位。比如:发送命令:02000281018203回执数据:02000200010303(设置波特率为19200,N,8,1)3.3SetSerNum(0x82)发送数据:DATA[0..7]:8个字节的读写器序列号正确返回:STATUS:0x00–OKDATA[0]0x80(表示操作成功)错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:设置8个字节的序列号。比如:发送命令:02000982AABBAABBAABBAABB8B03回执数据:020002008082033.4GetserNum(0x83)发送数据:N/A正确返回:STATUS:0x00–OKDATA[0]:读写器地址DATA[1..8]:8个字节的读写器序列号错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:读取由厂家预设的1个字节的读卡器地址和8个字节序列号.比如:发送命令:020001838203回执数据:02000A0000AABBAABBAABBAABB0A03其中橙色的“00”表示模块当前的地址,其后八个字节表示读卡器的序列号3.5Write_UserInfo(0x84)发送数据:DATA[0]:对读写器进行写数据操作的区域号0x00:对读写器的区域0进行写操作0x01:对读写器的区域1进行写操作0x02:对读写器的区域2进行写操作0x03:对读写器的区域3进行写操DATA[1]要写入的数据的长度,不能大于120字节(以16字节形式表示,比如要写120个字节,那么DATA[1]=0x78)DATA[2..121]要写入的数据信息.正确返回:STATUS:0x00–OKDATA[0]:0x80(表示操作成功)错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:读卡器提供4个块(每个块不能大于120个字节),共480个字节空间的用户数据区。用户可以根据需要,储存相应的用户信息到读写器中.比如:发送命令:02007B840178AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA558603回执数据:020202008080033.6Read_UserInfo(0x85)发送数据:DATA[0]:对读写器进行读数据操作的区域号0x00:对读写器的区域0进行读操作0x01:对读写器的区域1进行读操作0x02:对读写器的区域2进行读操作0x03:对读写器的区域3进行读操作DATA[1]要读出的数据的长度,不能大于120字节(以16字节形式表示,比如要读120个字节,那么DATA[1]=0x78)正确返回:STATUS:0x00–OKDATA{1..N}读出的用户信息120byte错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:读取读卡器中提供4个块(每个块不能大于120个字节)的数据比如:发送命令:020003850178FF03回执数据:02007900AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA55AA5579033.7Get_VersionNum(0x86)发送数据:无正确返回:STATUS:0x00–OKDATA[1..N]版本号错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:读取读写器的版本号比如:发送命令:020001868703回执数据:0200110052444D3530305F303430375F313030307D033.8Control_Led1(0x87)发送数据:DATA[0]:在一次循环中灯亮的周期数(一个周期为20ms,所以DATA[0]最大为50)DATA[1]:LED状态循环的次数(一个循环一秒)正确返回:STATUS:0x00–OKDATA[0]:0x80(表示操作成功)错误返回:STATUS:0x01–FAILDATA[0]参考错误代码表描述:此命令用来控制LED1的运行状态(只有当模块或者读头,带有2个LED口时,才支持此命令,如果只带有一个LED口,只支持Control_Led2命令)比如:发送命令:02000387180A9603回执数据:0

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功