一种非接触式卡片及其工作方法与流程

文档序号:12600867阅读:292来源:国知局
一种非接触式卡片及其工作方法与流程

本发明涉及非接触通信领域,尤其涉及一种非接触式卡片及其工作方法。



背景技术:

非接触式卡片集合了射频技术和IC卡技术,得益于它拥有的诸多优点,一经推出就得到了快速的推广应用,然而随着非接触式卡片的推广应用,对于非接触式卡片的生产及应用等环节的要求也愈来愈高,本发明人在实现本发明的过程中发现,现有技术中至少存在以下缺陷:当RF场中存在多张非接触式卡片时,很难准确地选择到需要操作的非接触卡片,以达到安全生产等目的。



技术实现要素:

本发明的目的是克服现有技术的缺陷,提供一种非接触卡片及其工作方法。

本发明是通过下述技术方案实现的:

一方面,本发明提供一种非接触卡片的工作方法,包括:

步骤S1、等待读卡设备下发命令,若接收到读卡设备下发的预设命令,则向读卡设备返回预设应答,与读卡设备进行数据透传;若接收到读卡设备下发的请求命令或唤醒命令,则向读卡设备返回请求应答,执行步骤S2;否则继续等待;

步骤S2、等待读卡设备下发命令,若接收到读卡设备下发的防冲突命令,则执行步骤S3;若接收到读卡设备下发的选择命令,则执行步骤S5;否则返回步骤S1;

步骤S3、检查防冲突命令,若防冲突命令中不包含有效位,或防冲突命令中包含与卡片唯一标识符匹配的有效位,则执行步骤S4;否则返回步骤S1;

步骤S4、判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别向读卡设备发送相应串联级别的卡片唯一标识符,返回步骤S2;

步骤S5、判断选择命令中的唯一标识符与卡片唯一标识符是否匹配,是则向读卡设备发送标识唯一标识符完整的选择确认;否则向读卡设备发送标识唯一标识符不完整的选择确认,返回步骤S1。

具体地,所述请求命令和所述唤醒命令均为以7个数据位发送的单字节命令;所述预设命令是多字节命令,或是以8个数据位发送的单字节命令,或是以7个数据位发送的不同于所述请求命令和所述唤醒命令的单字节命令。

所述与读卡设备进行数据透传之前还可以包括:

步骤A1、等待读卡设备下发命令,若接收到读卡设备下发的选择命令则执行步骤A2;否则返回步骤S1;

步骤A2、判断选择命令中的唯一标识符与卡片唯一标识符是否匹配,是则向读卡设备发送标识唯一标识符完整的选择确认;否则向读卡设备发送标识唯一标识符不完整的选择确认,返回步骤S1;

或者,所述与读卡设备进行数据透传之前还包括:

步骤B1、等待读卡设备下发命令,若接收到读卡设备下发的防冲突命令则执行步骤B2;若接收到读卡设备下发的选择命令则执行步骤B4;否则返回步骤S1;

步骤B2、检查防冲突命令,若防冲突命令中不包含有效位,或防冲突命令中包含与卡片唯一标识符匹配的有效位,则执行步骤B3;否则返回步骤S1;

步骤B3、根据所述防冲突命令选择的串联级别向读卡设备发送相应串联级别的卡片唯一标识符,返回步骤B1;

步骤B4、判断所述选择命令中的唯一标识符与卡片唯一标识符是否匹配,是则向读卡设备发送标识唯一标识符完整的选择确认;否则向读卡设备发送标识唯一标识符不完整的选择确认,返回步骤S1。

进一步地,所述与读卡设备进行数据透传之前还包括:接收读卡设备下发的选择应答请求,向读卡设备返回选择应答。

具体地,所述检查防冲突命令,具体包括:

步骤1-1、判断防冲突命令中是否包含有效位,是则执行步骤1-2,否则确定防冲突命令中不包含有效位;

步骤1-2、判断防冲突命令中的有效位与卡片唯一标识符是否匹配,是则确定防冲突命令中包含与卡片唯一标识符匹配的有效位,否则确定防冲突命令中包含与卡片唯一标识符不匹配的有效位。

进一步地,所述判断防冲突命令中是否包含有效位,可以具体包括:判断防冲突命令中的有效位数目的取值,若取值为第一预设值,则确定防冲突命令中不包含有效位;若取值为所述第一预设值至第二预设值之间的任意值,则确定防冲突命令中包含有效位;

所述判断防冲突命令中的有效位与卡片唯一标识符是否匹配,可以具体包括:判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别判断防冲突命令中的有效位与相应串联级别的卡片唯一标识的相应数据位是否相同,是则确定防冲突命令中的有效位与卡片唯一标识符匹配,否则确定防冲突命令中的有效位与卡片唯一标识符不匹配。

具体地,所述判断防冲突命令选择的串联级别,可以具体包括:判断防冲突命令中的选择代码的取值,若为第三预设值,则确定防冲突命令选择的串联级别为1;若为第四预设值,则确定防冲突命令选择的串联级别为2;若为第五预设值,则确定防冲突命令选择的串联级别为3。

所述判断选择命令中的唯一标识符与卡片唯一标识符是否匹配,可以具体为:判断选择命令选择的串联级别,根据选择命令选择的串联级别判断选择命令中的唯一标识符与相应串联级别的卡片唯一标识符是否相同,是则确定选择命令中的唯一标识符与卡片唯一标识符匹配,否则确定选择命令中的唯一标识符与卡片唯一标识符不匹配;

进一步地,所述判断选择命令选择的串联级别,具体包括:判断选择命令中的选择代码的取值,若为第六预设值,则确定选择命令选择的串联级别为1;若为第七预设值,则确定选择命令选择的串联级别为2;若为第八预设值,则确定选择命令选择的串联级别为3。

本发明提供的非接触卡片的工作方法中,所述向读卡设备发送标识唯一标识符完整的选择确认之后,还可以包括:

若接收到读卡设备下发的休眠命令,则执行以下步骤:

步骤C1、等待读卡设备下发命令,若接收到读卡设备下发的唤醒命令,则执行步骤C2;否则继续等待;

步骤C2、向读卡设备返回请求应答,返回步骤S2。

和/或包括:

步骤D1、接收读卡设备下发的选择应答请求,向读卡设备返回选择应答;

步骤D2、与读卡设备进行数据透传。

进一步地,所述步骤D1之后还包括:接收读卡设备下发的协议和参数选择请求,向读卡设备返回协议和参数选择响应,执行所述步骤D2。

本发明提供的非接触卡片的工作方法中,所述与读卡设备进行数据透传时,还包括:若接收到读卡设备下发的取消选择命令,则执行以下步骤:

步骤E1、等待读卡设备下发命令,若接收到读卡设备下发的唤醒命令,则执行步骤E2,否则继续等待;

步骤E2、向读卡设备返回请求应答,返回步骤S2。

另一方面,本发明提供一种与上述方法对应的非接触卡片,所述非接触式卡片包括:接收模块、第一响应模块和第二响应模块;

所述接收模块,用于所述非接触式卡片进入非接场后,等待和接收读卡设备下发的命令;

所述第一响应模块,用于当所述接收模块接收到预设命令时,向读卡设备返回预设应答,与读卡设备进行数据透传;

所述第二响应模块,包括:

第一初始应答子模块,用于当所述接收模块接收到请求命令或唤醒命令时,向读卡设备返回请求应答,等待和接收读卡设备下发的命令;

第一防冲突应答子模块,用于当所述第一初始应答子模块接收到防冲突命令时,检查所述防冲突命令,若所述防冲突命令中不包含有效位,或所述防冲突命令包含与卡片唯一标识符匹配的有效位,则判断防冲突命令选择的串联级别,根据所述防冲突命令选择的串联级别向读卡设备发送相应串联级别的卡片唯一标识符;

第一选择应答子模块,用于当所述第一初始应答子模块接收到选择命令时,判断所述选择命令中的唯一标识符与卡片唯一标识符是否匹配,是则向读卡设备发送标识唯一标识符完整的选择确认,否则向读卡设备发送标识唯一标识符不完整的选择确认;

所述接收模块,还用于当所述第一初始应答子模块接收到除防冲突命令和选择命令之外的命令时,或所述第一防冲突应答子模块确定所述防冲突命令中包含与卡片唯一标识符不匹配的有效位时,或所述第一选择应答子模块向读卡设备发送标识唯一标识符不完整的选择确认时,等待和接收读卡设备下发的命令;

所述第一初始应答子模块,还用于当所述第一防冲突应答子模块向读卡设备返回相应串联级别的卡片唯一标识符后,等待和接收读卡设备下发的命令。

本发明的有益效果在于:本发明提供的非接触卡片支持两种不同的协议,其中一种是标准14443协议,该非接触卡片能够与只采用标准14443协议的卡片在同一RF场中共存,且互不影响;采用本发明提供的技术方案能够实现非接触式卡片在RF场中被准确地选择。

附图说明

图1为本发明实施例1提供的一种非接触式卡片的工作方法的流程图;

图2为本发明实施例2提供的一种非接触式卡片的工作方法的流程图;

图3为本发明实施例3提供的一种非接触式卡片的工作方法的流程图;

图4为本发明实施例4提供的一种非接触式卡片的工作方法的流程图;

图5为适用本发明实施例1-4提供的方法的非接触式卡片的一种结构示意图;

图6为适用本发明实施例1-4提供的方法的非接触式卡片的另一种结构示意图;

图7为本发明实施例5提供的非接触可视卡的方框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步的详细描述。

实施例1

本实施例提供一种非接触式卡片的工作方法,包括卡片进入RF场通过电感耦合获取能量上电后执行如下操作,具体如图1所示:

步骤101、等待读卡设备下发命令;

若接收到读卡设备下发的预设命令,则执行步骤102;

若接收到读卡设备下发的请求命令或唤醒命令,则执行步骤104;

否则继续等待。

具体地,请求命令和唤醒命令均是以7个数据位发送的单字节命令,请求命令具体为值等于0x26的数据:0100110,唤醒命令具体为值等于0x52的数据:1010010;

预设命令可以具体是以7个数据位发送的单字节命令、以8个数据位发送的单字节命令或多字节命令;当预设命令是以7个数据位发送的单字节命令时,预设命令具体为值不等于0x26和0x52的数据,例如0110110;当预设命令是以8个数据位发送的单字节命令时,预设命令可以为值为任意值的数据,例如00100110;当预设命令是多字节命令时,预设命令可以为值为任意值的数据,例如,00101000 11100101。

步骤102、向读卡设备返回预设应答。

具体地,预设应答中可以包括卡片UID(unique identifier,唯一标识符)字节个数等信息;

例如,预设应答具体为:0x44 0x00。

步骤103、与读卡设备进行数据透传。

例如,步骤103中,接收到读卡设备下发的数据:0x02 0x00 0x84 0x00 0x00 0x08 0x2F 0xEC,向读卡设备返回数据0x02 0xAC 0xCD 0x4E 0xD5 0xDD 0x92 0x2A 0xCB 0x90 0x00 0xB9 0x6B。

步骤104、向读卡设备返回请求应答。

具体地,请求应答中包含卡片UID字节个数和比特帧防冲突等信息;

例如,请求应答具体为0x44 0x00。

步骤105、等待读卡设备下发命令;

若接收到读卡设备下发的防冲突命令,则执行步骤106;

若接收到读卡设备下发的选择命令,则执行步骤109;

否则,返回步骤101。

例如,防冲突命令具体为:0x93 0x42 0x88 0x04 0x01;选择命令具体为:0x93 0x70 0x88 0x04 0xA5 0xB6 0x9F 0xAF 0x4F。

步骤106、判断防冲突命令中是否包含有效位,是则执行步骤107,否则执行步骤108。

本实施例中,判断防冲突命令中是否包含有效位具体为:判断防冲突命令的第二个字节(NVB,有效位数目)的取值,若取值为第一预设值,则防冲突命令中不包含有效位,若取值为第一预设值至第二预设值之间的任意值则防冲突命令中包含有效位;其中,第一预设值优选为0x20,第二预设值优选为0x70。

例如,防冲突命令具体为:0x93 0x20,其第二个字节的取值为0x20,防冲突命令中不包含有效位;又例如,防冲突命令具体为:0x93 0x42 0x88 0x04 0x01,其第二个字节的取值为0x42,防冲突命令中包含有效位。

步骤107、判断防冲突命令中的有效位与卡片UID是否匹配,是则执行步骤108,否则返回步骤101。

优选地,步骤107可以包括:判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别判断防冲突命令中的有效位与相应串联级别的卡片UID是否匹配,是则执行步骤108,否则返回步骤101;

进一步地,判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别判断防冲突命令中的有效位与相应串联级别的卡片UID是否匹配,可以具体包括:

步骤i、判断防冲突命令中的选择代码的取值,若为第三预设值则防冲突命令选择的串联级别为1,执行步骤ii;若为第四预设值则防冲突命令选择的串联级别为2,执行步骤iv;若为第五预设值则防冲突命令选择的串联级别为3,执行步骤vi;

步骤ii、判断防冲突命令中的有效位与串联级别1的卡片UID是否匹配;

步骤iii、判断防冲突命令中的有效位与串联级别2的卡片UID是否匹配;

步骤iv、判断防冲突命令中的有效位与串联级别3的卡片UID是否匹配;

其中,选择代码具体为防冲突命令的第一个字节;第三预设值优选为0x93,第四预设值优选为0x95,第五预设值优选为0x97;

卡片UID由4个、7个或10个UID字节组成:

当卡片UID由4个UID字节组成时,卡片支持的最大串联级别为1,串联级别1的卡片UID为卡片UID的第1至4个字节;

当卡片UID由7个UID字节组成时,卡片支持的最大串联级别为2,其中,串联级别1的卡片UID为卡片UID的第1至3个字节,串联级别2的卡片UID为卡片UID的第4至7个字节;

当卡片UID由10个UID字节组成时,卡片支持的最大串联级别为3,其中,串联级别1的卡片UID为卡片UID的第1至3个字节,串联级别2的卡片UID为卡片UID的第4至6个字节,串联级别3的卡片UID为卡片UID的第7至10个字节。

具体地,若防冲突命令中的有效位与相应串联级别的UID的相应数据位相同,则防冲突命令中的有效位与相应串联级别的卡片UID匹配,否则防冲突命令中的有效位与相应串联级别的卡片UID不匹配;

例如,防冲突命令具体为:0x93 0x42 0x88 0x04 0x01,防冲突命令的第一个字节的取值为0x93,防冲突命令选择的串联级别为1,防冲突命令的第二个字节的取值为0x42,防冲突命令的长度为4个字节零2个比特位,防冲突命令中的有效位为0x88 0x04 0x01(其中,0x01是以2个数据位发送的),其中卡片UID为0x04 0x03 0x84 0x32 0xF0 0x2E 0x81,串联级别1的卡片UID为0x04 0x03 0x84,比较防冲突命令中的有效位与串联级别1的卡片UID的第1个字节、第2个字节以及第3个字节低位端的两个比特,比较结果为不相同,防冲突命令中的有效位与串联级别1的卡片UID不匹配。

步骤108、根据防冲突命令选择的串联级别向读卡设备发送相应串联级别的卡片UID,返回步骤105。

优选地,步骤108可以具体包括:

步骤i、判断防冲突命令中的选择代码的取值,若为第三预设值则防冲突命令选择的串联级别为1,执行步骤ii;若为第四预设值则防冲突命令选择的串联级别为2,执行步骤iii;若为第五预设值则防冲突命令选择的串联级别为3,执行步骤iv;

步骤ii、向读卡设备发送串联级别1的卡片UID,返回步骤105;

步骤iii、向读卡设备发送串联级别2的卡片UID,返回步骤105;

步骤iv、向读卡设备发送串联级别3的卡片UID,返回步骤105。

其中,选择代码具体为防冲突命令的第一个字节;第三预设值优选为0x93,第四预设值优选为0x95,第五预设值优选为0x97;

本实施例中,卡片UID由4个、7个或10个UID字节组成;若卡片UID由7个UID字节组成,则向读卡设备发送串联级别1的卡片UID时,在串联级别1的卡片UID的前端添加串联标志;若卡片UID由10个UID字节组成时,则向读卡设备发送串联级别1的卡片UID和发送串联级别2的卡片UID时,分别在串联级别1的卡片UID和串联级别2的卡片UID的前端添加串联标志;

更进一步地,向读卡设备发送相应串联级别卡片UID时,在相应串联级别卡片UID的末端添加校验字节;

优选地,串联标志具体为0x88;校验字节为校验字节之前的4个字节数据的异或值。

例如,卡片UID为0x04 0x03 0x84 0x32 0xF0 0x2E 0x81,防冲突命令具体为:0x93 0x20,第一个字节的取值为0x93,防冲突命令选择的串联级别为1,向读卡设备返回0x88 0x04 0x03 0x84 0x0B。

步骤109、判断选择命令中的UID与卡片UID是否匹配,是则执行步骤111,否则执行步骤110。

具体地,步骤109包括:判断选择命令选择的串联级别,根据选择命令选择的串联级别判断选择命令中的UID与相应串联级别的卡片UID是否相同,是则执行步骤111,否则执行步骤110。

进一步地,判断选择命令选择的串联级别,根据选择命令选择的串联级别判断选择命令中的UID与相应串联级别的卡片UID是否相同,可以具体包括:

步骤i、判断选择命令中的选择代码的取值,若为第六预设值则选择命令选择的串联级别为1,执行步骤ii;若为第七预设值则选择命令选择的串联级别为2,执行步骤iv;若为第八预设值则选择命令选择的串联级别为3,执行步骤vi;

步骤ii、判断选择命令中的UID与串联级别1的卡片UID是否相同;

步骤iii、判断选择命令中的UID与串联级别2的卡片UID是否相同;

步骤iv、判断选择命令中的UID与串联级别3的卡片UID是否相同;

其中,选择代码具体为选择命令的第一个字节;第六预设值优选为0x93,第七预设值优选为0x95,第八预设值优选为0x97;

例如,卡片UID为0x04 0x03 0x84 0x32 0xF0 0x2E 0x81,则串联级别1的卡片UID为0x04 0x03 0x84,串联级别2的卡片UID为0x32 0xF0 0x2E 0x81;若选择命令为:0x93 0x70 0x88 0x04 0x03 0x84 0x0B 0x1E 0xC1,则选择命令中的UID与卡片UID不匹配,若选择命令为0x95 0x70 0x32 0xF0 0x2E 0x81 0x6D 0xF4 0x0A,则选择命令中的UID与卡片UID匹配。

步骤110、向读卡设备发送标识UID不完整的选择确认,返回步骤101;

优选地,卡片通过将选择确认的低位端第3个比特置1标识UID不完整。

例如,步骤110中向读卡设备发送的选择确认具体为:0x04 0xDA 0x17。

步骤111、向读卡设备发送标识UID完整的选择确认。

优选地,卡片通过将选择确认的低位端第3个比特置0标识UID完整;

例如,步骤111中向读卡设备发送的选择确认具体为:0x00 0xFE 0x51。

本实施例中,卡片可以遵循ISO/IEC 14443-4协议,也可以不遵循ISO/IEC 14443-4协议;当卡片不遵循ISO/IEC 14443-4协议时,步骤111具体为向读卡设备发送标识UID完整以及卡片不遵循ISO/IEC 14443-4协议的选择确认;优选地,卡片通过将选择确认的低位端第6个比特置0标识卡片不遵循ISO/IEC 14443-4协议;当卡片遵循ISO/IEC 14443-4协议时,步骤111具体为:向读卡设备发送标识UID完整以及卡片遵循ISO/IEC 14443-4协议的选择确认;优选地,卡片通过将选择确认的低位端第6个比特置1标识卡片遵循ISO/IEC 14443-4协议。

进一步地,步骤111之后还可以包括:若接收到读卡设备下发的休眠命令,则执行以下步骤:

步骤A1、等待读卡设备下发命令;

若接收到读卡设备下发的唤醒命令,则执行步骤A2;

否则,继续等待;

步骤A2、向读卡设备返回请求应答,返回步骤105;

例如,休眠命令可以具体为:0x50 0x00 0x57 0xCD。

更进一步地,当卡片遵循ISO/IEC 14443-4协议时,步骤111之后还包括:

步骤B1、接收读卡设备下发的选择应答请求,向读卡设备返回选择应答;

优选地,选择应答中包含帧等待时间、起始帧保护时间、支持最大帧长和支持最大速率等信息;

例如,读卡设备下发的选择应答请求具体为:0xE0 0x80 0x31 0x73,向读卡设备返回的选择应答为0x0E 0x38 0x33 0xB1 0x4A 0x43 0x4F 0x50 0x34 0x31 0x56 0x32 0x32 0x31 0xA2 0x85。

步骤B2、与读卡设备进行数据透传。

再进一步地,步骤B1后还可以包括:接收读卡设备下发的协议和参数选择请求,向读卡设备返回协议和参数选择响应,执行步骤B2;

例如,读卡设备下发的协议和参数选择请求具体为:0xD0 0x11 0x0A 0x08 0x09,向读卡设备发送的协议和参数选择响应为:0xD0 0x73 0x87。

本实施例所述的方法还可以包括:当非接触式卡片与读卡设备进行数据透传时,若接收到读卡设备下发的取消选择命令,则执行以下步骤:

步骤C1、等待读卡设备下发命令;

若接收到读卡设备下发的唤醒命令,则执行步骤C2;

否则,继续等待;

步骤C2、向读卡设备返回请求应答,返回步骤105。

例如,取消选择命令具体为0xC2 0xE0 0x84。

实施例2

本实施例提供一种非接触式卡片的工作方法,包括卡片进入RF场通过电感耦合获取能量上电后执行如下操作,具体如图2所示:

步骤201、等待读卡设备下发命令;

若接收到读卡设备下发的预设命令,则执行步骤202;

若接收到读卡设备下发的请求命令或唤醒命令,则执行步骤205~步骤212;

否则继续等待。

具体地,请求命令和唤醒命令均是以7个数据位发送的单字节命令,请求命令具体为值等于0x26的数据:0100110,唤醒命令具体为值等于0x52的数据:1010010;

预设命令可以具体是以7个数据位发送的单字节命令、以8个数据位发送的单字节命令或多字节命令;当预设命令是以7个数据位发送的单字节命令时,预设命令具体为值不等于0x26和0x52的数据,例如0110110;当预设命令是以8个数据位发送的单字节命令时,预设命令可以为值为任意值的数据,例如00100110;当预设命令是多字节命令时,预设命令可以为值为任意值的数据,例如,00101000 11100101。

步骤202、向读卡设备返回预设应答。

具体地,预设应答中可以包括卡片UID(unique identifier,唯一标识符)字节个数等信息;

例如,预设应答具体为:0x44 0x00。

步骤203、接收读卡设备下发的选择应答请求,向读卡设备返回选择应答。

优选地,选择应答中包含帧等待时间、起始帧保护时间、支持最大帧长和支持最大速率等信息;

例如,读卡设备下发的选择应答请求具体为:0xE0 0x80 0x31 0x73,向读卡设备返回的选择应答为0x0E 0x38 0x33 0xB1 0x4A 0x43 0x4F 0x50 0x34 0x31 0x56 0x32 0x32 0x31 0xA2 0x85。

步骤204、与读卡设备进行数据透传。

例如,步骤204中,接收到读卡设备下发的数据:0x02 0x00 0x84 0x00 0x00 0x08 0x2F 0xEC,向读卡设备返回数据0x02 0xAC 0xCD 0x4E 0xD5 0xDD 0x92 0x2A 0xCB 0x90 0x00 0xB9 0x6B。

本实施例中的步骤205~步骤212与实施例1中的步骤104~步骤111的内容相同,在此不再赘述。

实施例3

本实施例提供一种非接触式卡片的工作方法,包括卡片进入RF场通过电感耦合获取能量上电后执行如下操作,具体如图3所示:

步骤301、等待读卡设备下发命令;

若接收到读卡设备下发的预设命令,则执行步骤302;

若接收到读卡设备下发的请求命令或唤醒命令,则执行步骤309~步骤316;

否则继续等待。

具体地,请求命令和唤醒命令均是以7个数据位发送的单字节命令,请求命令具体为值等于0x26的数据:0100110,唤醒命令具体为值等于0x52的数据:1010010;

预设命令可以具体是以7个数据位发送的单字节命令、以8个数据位发送的单字节命令或多字节命令;当预设命令是以7个数据位发送的单字节命令时,预设命令具体为值不等于0x26和0x52的数据,例如0110110;当预设命令是以8个数据位发送的单字节命令时,预设命令可以为值为任意值的数据,例如00100110;当预设命令是多字节命令时,预设命令可以为值为任意值的数据,例如,00101000 11100101。

步骤302、向读卡设备返回预设应答。

具体地,预设应答中可以包括卡片UID(unique identifier,唯一标识符)字节个数等信息;

例如,预设应答具体为:0x44 0x00。

步骤303、等待读卡设备下发命令;

若接收到读卡设备下发的选择命令,则执行步骤304;

否则,返回步骤301。

例如,选择命令具体为:0x93 0x70 0x88 0x04 0xA5 0xB6 0x9F 0xAF 0x4F。

步骤304、判断选择命令中的UID与卡片UID是否匹配,是则执行步骤306,否则返回步骤305。

具体地,步骤304包括:判断选择命令选择的串联级别,根据选择命令选择的串联级别判断选择命令中的UID与相应串联级别的卡片UID是否相同,是则执行步骤306,否则执行步骤305。

进一步地,判断选择命令选择的串联级别,根据选择命令选择的串联级别判断选择命令中的UID与相应串联级别的卡片UID是否相同,可以具体包括:

步骤i、判断选择命令中的选择代码的取值,若为第一预设值则选择命令选择的串联级别为1,执行步骤ii;若为第二预设值则选择命令选择的串联级别为2,执行步骤iv;若为第三预设值则选择命令选择的串联级别为3,执行步骤vi;

步骤ii、判断选择命令中的UID与串联级别1的卡片UID是否相同;

步骤iii、判断选择命令中的UID与串联级别2的卡片UID是否相同;

步骤iv、判断选择命令中的UID与串联级别3的卡片UID是否相同;

其中,选择代码具体为选择命令的第一个字节;第一预设值优选为0x93,第二预设值优选为0x95,第三预设值优选为0x97;

例如,卡片UID为0x04 0x03 0x84 0x32 0xF0 0x2E 0x81,则串联级别1的卡片UID为0x04 0x03 0x84,串联级别2的卡片UID为0x32 0xF0 0x2E 0x81;若选择命令为:0x93 0x70 0x88 0x04 0x03 0x84 0x0B 0x1E 0xC1,则选择命令中的UID与卡片UID不匹配,若选择命令为0x95 0x70 0x32 0xF0 0x2E 0x81 0x6D 0xF4 0x0A,则选择命令中的UID与卡片UID匹配。

步骤305、向读卡设备发送标识UID不完整的选择确认,返回步骤301;

优选地,卡片通过将选择确认的低位端第3个比特置1标识UID不完整。

例如,步骤305中向读卡设备发送的选择确认具体为:0x04 0xDA 0x17。

步骤306、向读卡设备发送标识UID完整的选择确认。

优选地,卡片通过将选择确认的低位端第3个比特置0标识UID完整;

例如,步骤306中向读卡设备发送的选择确认具体为:0x00 0xFE 0x51。

步骤307、接收读卡设备下发的选择应答请求,向读卡设备返回选择应答。

优选地,选择应答中包含帧等待时间、起始帧保护时间、支持最大帧长和支持最大速率等信息;

例如,读卡设备下发的选择应答请求具体为:0xE0 0x80 0x31 0x73,向读卡设备返回的选择应答为0x0E 0x38 0x33 0xB1 0x4A 0x43 0x4F 0x50 0x34 0x31 0x56 0x32 0x32 0x31 0xA2 0x85。

步骤308、与读卡设备进行数据透传。

例如,步骤308中,接收到读卡设备下发的数据:0x02 0x00 0x84 0x00 0x00 0x08 0x2F 0xEC,向读卡设备返回数据0x02 0xAC 0xCD 0x4E 0xD5 0xDD 0x92 0x2A 0xCB 0x90 0x00 0xB9 0x6B。

本实施例中的步骤309~步骤316与实施例1中的步骤104~步骤111的内容相同,在此不再赘述。

实施例4

本实施例提供一种非接触式卡片的工作方法,包括卡片进入RF场通过电感耦合获取能量上电后执行如下操作,具体如图4所示:

步骤401、等待读卡设备下发命令;

若接收到读卡设备下发的预设命令,则执行步骤402;

若接收到读卡设备下发的请求命令或唤醒命令,则执行步骤412~步骤419;

否则继续等待。

具体地,请求命令和唤醒命令均是以7个数据位发送的单字节命令,请求命令具体为值等于0x26的数据:0100110,唤醒命令具体为值等于0x52的数据:1010010;

预设命令可以具体是以7个数据位发送的单字节命令、以8个数据位发送的单字节命令或多字节命令;当预设命令是以7个数据位发送的单字节命令时,预设命令具体为值不等于0x26和0x52的数据,例如0110110;当预设命令是以8个数据位发送的单字节命令时,预设命令可以为值为任意值的数据,例如00100110;当预设命令是多字节命令时,预设命令可以为值为任意值的数据,例如,00101000 11100101。

步骤402、向读卡设备返回预设应答。

具体地,预设应答中可以包括卡片UID(unique identifier,唯一标识符)字节个数等信息;

例如,预设应答具体为:0x44 0x00。

步骤403、等待读卡设备下发命令;

若接收到读卡设备下发的防冲突命令,则执行步骤404;

若接收到读卡设备下发的选择命令,则执行步骤407;

否则,返回步骤401。

例如,防冲突命令具体为:0x93 0x42 0x88 0x04 0x01;选择命令具体为:0x93 0x70 0x88 0x04 0xA5 0xB6 0x9F 0xAF 0x4F。

步骤404、判断防冲突命令中是否包含有效位,是则执行步骤405,否则执行步骤406。

优选地,判断防冲突命令中是否包含有效位具体为:判断防冲突命令的第二个字节(NVB,有效位数目)的取值,若取值为第一预设值,则防冲突命令中不包含有效位,若取值为第一预设值至第二预设值之间的任意值则防冲突命令中包含有效位;其中个,第一预设值优选为0x20,第二预设值优选为0x70。

例如,防冲突命令具体为:0x93 0x20,其第二个字节的取值为0x20,防冲突命令中不包含有效位;

又例如,防冲突命令具体为:0x93 0x42 0x88 0x04 0x01,其第二个字节的取值为0x42,防冲突命令中包含有效位。

步骤405、判断防冲突命令中的有效位与卡片UID是否匹配,是则执行步骤406,否则返回步骤401。

优选地,步骤405可以包括:判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别判断防冲突命令中的有效位与相应串联级别的卡片UID是否匹配;

进一步地,判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别判断防冲突命令中的有效位与相应串联级别的卡片UID是否匹配,可以具体包括:

步骤i、判断防冲突命令中的选择代码的取值,若为第三预设值则防冲突命令选择的串联级别为1,执行步骤ii;若为第四预设值则防冲突命令选择的串联级别为2,执行步骤iv;若为第五预设值则防冲突命令选择的串联级别为3,执行步骤vi;

步骤ii、判断防冲突命令中的有效位与串联级别1的卡片UID是否匹配;

步骤iii、判断防冲突命令中的有效位与串联级别2的卡片UID是否匹配;

步骤iv、判断防冲突命令中的有效位与串联级别3的卡片UID是否匹配;

其中,选择代码具体为防冲突命令的第一个字节;第三预设值具体为0x93,第四预设值具体为0x95,第五预设值具体为0x97,卡片UID由4个、7个或10个UID字节组成:

当卡片UID由4个UID字节组成时,卡片支持的最大串联级别为1,串联级别1的卡片UID为卡片UID的第1至4个字节;

当卡片UID由7个UID字节组成时,卡片支持的最大串联级别为2,其中,串联级别1的卡片UID为卡片UID的第1至3个字节,串联级别2的卡片UID为卡片UID的第4至7个字节;

当卡片UID由10个UID字节组成时,卡片支持的最大串联级别为3,其中,串联级别1的卡片UID为卡片UID的第1至3个字节,串联级别2的卡片UID为卡片UID的第4至6个字节,串联级别3的卡片UID为卡片UID的第7至10个字节。

具体地,若防冲突命令中的有效位与相应串联级别的UID的相应数据位相同,则防冲突命令中的有效位与相应串联级别的卡片UID匹配,否则防冲突命令中的有效位与相应串联级别的卡片UID不匹配;

例如,防冲突命令具体为:0x93 0x42 0x88 0x04 0x01,防冲突命令的第一个字节的取值为0x93,防冲突命令选择的串联级别为1,防冲突命令的第二个字节的取值为0x42,防冲突命令的长度为4个字节零2个比特位,防冲突命令中的有效位为0x88 0x04 0x01(其中,0x01是以2个数据位发送的),其中卡片UID为0x04 0x03 0x84 0x32 0xF0 0x2E 0x81,串联级别1的卡片UID为0x04 0x03 0x84,比较防冲突命令中的有效位与串联级别1的卡片UID的第1个字节、第二个字节以及第3个字节低位端的两个比特,比较结果为不相同,防冲突命令中的有效位与串联级别1的卡片UID不匹配。

步骤406、根据防冲突命令选择的串联级别向读卡设备发送相应串联级别的卡片UID,返回步骤403。

优选地,步骤406可以具体包括:

步骤i、判断防冲突命令中的选择代码的取值,若为第三预设值则防冲突命令选择的串联级别为1,执行步骤ii;若为第四预设值则防冲突命令选择的串联级别为2,执行步骤iii;若为第五预设值则防冲突命令选择的串联级别为3,执行步骤iv;

步骤ii、向读卡设备发送串联级别1的卡片UID,返回步骤403;

步骤iii、向读卡设备发送串联级别2的卡片UID,返回步骤403;

步骤iv、向读卡设备发送串联级别3的卡片UID,返回步骤403。

其中,选择代码具体为防冲突命令的第一个字节;第三预设值具体为0x93,第四预设值具体为0x95,第五预设值具体为0x97;

本实施例中,卡片UID由4个、7个或10个UID字节组成;若卡片UID由7个UID字节组成,则向读卡设备发送串联级别1的卡片UID时,在串联级别1的卡片UID的前端添加串联标志;若卡片UID由10个UID字节组成时,则向读卡设备发送串联级别1的卡片UID和发送串联级别2的卡片UID时,分别在串联级别1的卡片UID和串联级别2的卡片UID的前端添加串联标志;

更进一步地,向读卡设备发送相应串联级别卡片UID时,在相应串联级别卡片UID的末端添加校验字节;

优选地,串联标志具体为0x88;校验字节为校验字节之前的4个字节数据的异或值。

例如,卡片UID为0x04 0x03 0x84 0x32 0xF0 0x2E 0x81,防冲突命令具体为:0x93 0x20,第一个字节的取值为0x93,防冲突命令选择的串联级别为1,向读卡设备返回0x88 0x04 0x03 0x84 0x0B。

步骤407、判断选择命令中的UID与卡片UID是否匹配,是则执行步骤409,否则执行步骤408。

具体地,步骤407包括:判断选择命令选择的串联级别,根据选择命令选择的串联级别判断选择命令中的UID与相应串联级别的卡片UID是否相同,是则执行步骤409,否则执行步骤408。

进一步地,判断选择命令选择的串联级别,根据选择命令选择的串联级别判断选择命令中的UID与相应串联级别的卡片UID是否相同,可以具体包括:

步骤i、判断选择命令中的选择代码的取值,若为第六预设值则选择命令选择的串联级别为1,执行步骤ii;若为第七预设值则选择命令选择的串联级别为2,执行步骤iv;若为第八预设值则选择命令选择的串联级别为3,执行步骤vi;

步骤ii、判断选择命令中的UID与串联级别1的卡片UID是否相同;

步骤iii、判断选择命令中的UID与串联级别2的卡片UID是否相同;

步骤iv、判断选择命令中的UID与串联级别3的卡片UID是否相同;

其中,选择代码具体为选择命令的第一个字节;第六预设值优选为0x93,第七预设值优选为0x95,第八预设值优选为0x97;

例如,卡片UID为0x04 0x03 0x84 0x32 0xF0 0x2E 0x81,则串联级别1的卡片UID为0x04 0x03 0x84,串联级别2的卡片UID为0x32 0xF0 0x2E 0x81;若选择命令为:0x93 0x70 0x88 0x04 0x03 0x84 0x0B 0x1E 0xC1,则选择命令中的UID与卡片UID不匹配,若选择命令为0x95 0x70 0x32 0xF0 0x2E 0x81 0x6D 0xF4 0x0A,则选择命令中的UID与卡片UID匹配。

步骤408、向读卡设备发送标识UID不完整的选择确认,返回步骤401;

优选地,卡片通过将选择确认的低位端第3个比特置1标识UID不完整。

例如,步骤408中向读卡设备发送的选择确认具体为:0x04 0xDA 0x17。

步骤409、向读卡设备发送标识UID完整的选择确认。

优选地,卡片通过将选择确认的低位端第3个比特置0标识UID完整;

例如,步骤409中向读卡设备发送的选择确认具体为:0x00 0xFE 0x51。

步骤410、接收读卡设备下发的选择应答请求,向读卡设备返回选择应答;

优选地,选择应答中包含帧等待时间、起始帧保护时间、支持最大帧长和支持最大速率等信息;

例如,读卡设备下发的选择应答请求具体为:0xE0 0x80 0x31 0x73,向读卡设备返回的选择应答为0x0E 0x38 0x33 0xB1 0x4A 0x43 0x4F 0x50 0x34 0x31 0x56 0x32 0x32 0x31 0xA2 0x85。

步骤411、与读卡设备进行数据透传。

例如,步骤411中,接收到读卡设备下发的数据:0x02 0x00 0x84 0x00 0x00 0x08 0x2F 0xEC,向读卡设备返回数据0x02 0xAC 0xCD 0x4E 0xD5 0xDD 0x92 0x2A 0xCB 0x90 0x00 0xB9 0x6B。

本实施例中的步骤412~步骤419与实施例1中的步骤104~步骤111的内容相同,在此不再赘述。

采用上述各实施例方法的非接触式卡片同时支持两种不同的协议,其中一种是标准14443协议。具体地,上述各实施例方法可以适用于如图5或图6所示的非接触式卡片,其中的标准卡芯片用于实现方法中的标准14443协议流程,定制开发芯片用于实现方法中的其余流程。图5所示的非接触式卡片中,标准卡芯片和定制开发芯片拥有并使用各自的线圈与读卡设备进行通信,图6所示的非接触式卡片中,标准芯片和定制芯片拥有和使用同一个线圈与读卡设备进行通信。需要说明的是,图5和图6只是为了示意芯片和线圈的使用情况,未示出非接触式芯片的其它必要或可选结构,不用作对非接触式卡片结构的限定。

实施例5

本实施例提供一种非接触式卡片,如图7所示,非接触式卡片包括接收模块71、第一响应模块72和第二响应模块73,各个模块的功能或具体组成具体如下:

接收模块71,用于非接触卡片进入非接场后,等待和接收读卡设备下发的命令;

第一响应模块72,用于当接收模块71接收到预设命令时,向读卡设备返回预设应答,与读卡设备进行数据透传;

第二响应模块73包括:

第一初始应答子模块731,用于当接收模块71接收到请求命令或唤醒命令时,向读卡设备返回请求应答,等待和接收读卡设备下发的命令;

第一防冲突应答子模块732,用于当第一初始应答子模块731接收到防冲突命令时,检查防冲突命令,若防冲突命令中不包含有效位,或防冲突命令包含与卡片唯一标识符匹配的有效位,则判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别向读卡设备发送相应串联级别的卡片唯一标识符;

第一选择应答子模块733,用于当第一初始应答子模块731接收到选择命令时,判断选择命令中的唯一标识符与卡片唯一标识符是否匹配,是则向读卡设备发送标识唯一标识符完整的选择确认,否则向读卡设备发送标识唯一标识符不完整的选择确认;

相应地,接收模块71还用于当第一初始应答子模块731接收到除防冲突命令和选择命令之外的命令时,或第一防冲突应答子模块732确定防冲突命令中包含与卡片唯一标识符不匹配的有效位时,或第一选择应答子模块733向读卡设备发送标识唯一标识符不完整的选择确认时,等待和接收读卡设备下发的命令;

第一初始应答子模块731还用于当第一防冲突应答子模块732向读卡设备返回相应串联级别的卡片唯一标识符后,等待和接收读卡设备下发的命令。

本实施例中,请求命令和唤醒命令均为以7个数据位发送的单字节命令;预设命令是多字节命令,或是以8个数据位发送的单字节命令,或是以7个数据位发送的不同于所述请求命令和所述唤醒命令的单字节命令。

本实施例中,第一响应模块72可以具体包括:

第二初始应答子模块,用于当接收模块71接收到预设命令时,向读卡设备返回预设应答,等待和接收读卡设备下发的命令;

第二选择应答子模块,用于当第二初始应答子模块接收到选择命令时,判断所述选择命令中的唯一标识符与卡片唯一标识符是否匹配,是则向读卡设备发送标识唯一标识符完整的选择确认,与读卡设备进行数据透传,否则向读卡设备发送标识唯一标识符不完整的选择确认;

相应地,接收模块71还用于当第二初始应答子模块接收到除选择命令之外的命令时,或第二选择应答子模块向读卡设备发送标识唯一标识符不完整的选择确认时,等待和接收读卡设备下发的命令。

或者,第一响应模块72具体包括:

第二初始应答子模块,用于当接收模块71接收到预设命令时,向读卡设备返回预设应答,等待和接收读卡设备下发的命令;

第二防冲突应答子模块,用于当第二初始应答子模块接收到防冲突命令时,检查防冲突命令,若防冲突命令中不包含有效位,或防冲突命令中包含与卡片唯一标识符匹配的有效位,则根据防冲突命令选择的串联级别向读卡设备发送相应串联级别的卡片唯一标识符;

第二选择应答子模块,用于当第二初始应答子模块接收到选择命令时,判断选择命令中的唯一标识符与卡片唯一标识符是否匹配,是则向读卡设备发送标识唯一标识符完整的选择确认,与读卡设备进行数据透传,否则向读卡设备发送标识唯一标识符不完整的选择确认;

相应地,接收模块71还用于当第二初始应答子模块接收到除防冲突命令和选择命令之外的命令时,或第二防冲突应答子模块确定防冲突命令中包含与卡片唯一标识符不匹配的有效位时,或第二选择应答子模块向读卡设备发送标识唯一标识符不完整的选择确认时,等待和接收读卡设备下发的命令;

第二初始应答子模块还用于第二选择应答子模块向读卡设备发送相应串联级别的卡片唯一标识符后,等待和接收读卡设备下发的命令。

进一步地,第一响应模块72还用于接收读卡设备下发的选择应答请求,向读卡设备返回选择应答。

本实施例中,第一防冲突应答子模块732中包括:

第一判断单元,用于判断防冲突命令中是否包含有效位;

第二判断单元,用于当第一判断单元确定防冲突命令中包含有效位时,判断防冲突命令中的有效位与卡片唯一标识符是否匹配,是则确定防冲突命令中包含与卡片唯一标识符匹配的有效位,否则确定防冲突命令中包含与卡片唯一标识符不匹配的有效位。

进一步地,第一判断单元可以具体用于:判断防冲突命令中的有效位数目的取值,若取值为第一预设值,则确定防冲突命令中不包含有效位,若取值为所述第一预设值至第二预设值之间的任意值,则确定防冲突命令中包含有效位;

第二判断单元可以具体用于:当第一判断单元确定防冲突命令中包含有效位时,判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别判断防冲突命令中的有效位与相应串联级别的卡片唯一标识的相应数据位是否相同,是则确定防冲突命令中的有效位与卡片唯一标识符匹配,否则确定防冲突命令中的有效位与卡片唯一标识符不匹配。

第二防冲突应答子模块中可以包括:

第三判断单元,用于判断防冲突命令中是否包含有效位;

第四判断单元,用于当第三判断单元确定防冲突命令中包含有效位时,判断防冲突命令中的有效位与卡片唯一标识符是否匹配,是则确定防冲突命令中包含与卡片唯一标识符匹配的有效位,否则确定防冲突命令中包含与卡片唯一标识符不匹配的有效位;

进一步地,第三判断单元可以具体用于:判断防冲突命令中的有效位数目的取值,若取值为第一预设值,则确定防冲突命令中不包含有效位,若取值为所述第一预设值至第二预设值之间的任意值,则确定防冲突命令中包含有效位;

第四判断单元可以具体用于:当所述第三判断单元确定防冲突命令中包含有效位时,判断防冲突命令选择的串联级别,根据防冲突命令选择的串联级别判断防冲突命令中的有效位与相应串联级别的卡片唯一标识的相应数据位是否相同,是则确定防冲突命令中的有效位与卡片唯一标识符匹配,否则确定防冲突命令中的有效位与卡片唯一标识符不匹配。

更进一步地,本实施例中,第四判断单元中可以包括:串联级别识别子单元,用于判断防冲突命令中的选择代码的取值,若为第三预设值,则确定防冲突命令选择的串联级别为1;若为第四预设值,则确定防冲突命令选择的串联级别为2;若为第五预设值,则确定防冲突命令选择的串联级别为3。

本实施例中,第一防冲突应答子模块732中可以包括:第一串联级别识别单元,用于判断防冲突命令中的选择代码的取值,若为第三预设值,则确定防冲突命令选择的串联级别为1;若为第四预设值,则确定防冲突命令选择的串联级别为2;若为第五预设值,则确定防冲突命令选择的串联级别为3。

本实施例中,第一选择应答子模块733中可以包括:

第二串联级别识别单元,用于判断选择命令选择的串联级别;

第五判断单元,用于根据第二串联级别识别单元确定的选择命令选择的串联级别,判断选择命令中的唯一标识符与相应串联级别的卡片唯一标识符是否相同,是则确定选择命令中的唯一标识符与卡片唯一标识符匹配,否则确定选择命令中的唯一标识符与卡片唯一标识符不匹配;

进一步地,第二串联级别识别单元可以具体用于:判断选择命令中的选择代码的取值,若为第六预设值,则确定选择命令选择的串联级别为1;若为第七预设值,则确定选择命令选择的串联级别为2;若为第八预设值,则确定选择命令选择的串联级别为3。

本实施例中,第二响应模块73中还可以包括:休眠应答子模块734,用于第一选择应答子模块733向读卡设备发送标识唯一标识符完整的选择确认后,接收读卡设备下发的休眠命令;接收到休眠命令后,接收读卡设备下发的唤醒命令;以及接收到唤醒命令后,向读卡设备返回请求应答;

相应地,第一初始应答子模块731,还用于休眠应答子模块734向读卡设备返回请求应答后,等待和接收读卡设备下发的命令。

本实施例中,第二响应模块73中还可以包括:数据透传子模块735,用于第一选择应答子模块733向读卡设备发送标识唯一标识符完整的选择确认后,接收读卡设备下发的选择应答请求,向读卡设备返回选择应答,与读卡设备进行数据透传;

进一步地,数据透传子模块735还用于:接收读卡设备下发的协议和参数选择请求,向读卡设备返回协议和参数选择响应;

相应地,第一初始应答子模块731还用于:数据透传子模块735向读卡设备返回请求应答后,等待和接收读卡设备下发的命令。

本实施例中,第一响应模块还可以用于:在与读卡设备进行数据透传时,接收读卡设备下发的取消选择命令;接收到取消选择命令后,接收读卡设备下发的唤醒命令;接收到唤醒命令后向读卡设备返回请求应答;

相应地,第一初始应答子模块731还用于:第一响应模块71向读卡设备返回请求应答后,等待和接收读卡设备下发的命令。

以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1