CN104915616B - 一种访问智能卡的方法和读卡器 - Google Patents

一种访问智能卡的方法和读卡器 Download PDF

Info

Publication number
CN104915616B
CN104915616B CN201510248878.1A CN201510248878A CN104915616B CN 104915616 B CN104915616 B CN 104915616B CN 201510248878 A CN201510248878 A CN 201510248878A CN 104915616 B CN104915616 B CN 104915616B
Authority
CN
China
Prior art keywords
block
data block
card reader
data
test system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510248878.1A
Other languages
English (en)
Other versions
CN104915616A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201510248878.1A priority Critical patent/CN104915616B/zh
Publication of CN104915616A publication Critical patent/CN104915616A/zh
Application granted granted Critical
Publication of CN104915616B publication Critical patent/CN104915616B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开一种访问智能卡的方法和读卡器,该方法包括:读卡器接收指令数据作为当前指令数据;若当前指令数据的长度超过预先协商的通信长度,则根据预先协商的通信长度,从当前指令数据中获取指令数据,设置协议控制字节,向智能卡发送组合得到的指令数据块,接收智能卡返回的应答数据块;更新当前指令数据;若当前指令数据的长度未超过预先协商的通信长度,设置协议控制字节,向智能卡发送组合得到的指令数据块,接收智能卡返回的应答数据块;从应答数据块中获取应答数据;若应答数据块不带链接则向上位机返回应答数据;若应答数据块带链接则设置协议控制字节,根据协议控制字节得到指令数据块,向智能卡发送指令数据块,接收返回的应答数据块。

Description

一种访问智能卡的方法和读卡器
技术领域
本发明涉及通信领域,尤其涉及一种访问智能卡的方法和读卡器。
背景技术
日常生活中,RFID(Radio Frequency Identification,射频识别)技术越来越的得到广泛的应用。这种通过无线电传输的非接触方式在形式上很方便,但RFID技术中,读卡器和智能卡的交互流程比较复杂,在嵌入式编程实现时会导致代码体积比较庞大,流程耗时较长,造成处理困难;且容错机制过于简单,对差错处理不够理想。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种访问智能卡的方法和读卡器,流程简洁,节省处理时间,增加差错控制机制,使得当受到外界干扰后,能够进行容错。
本发明提供的一种访问智能卡的方法和读卡器,包括:
步骤S1:读卡器接收上位机发送的指令数据,将接收到的所述指令数据作为当前指令数据,初始化当前块号;
步骤S2:所述读卡器判断当前指令数据的长度是否超过预先协商的通信长度,是则执行步骤S3,否则执行步骤S5;
步骤S3:所述读卡器根据所述预先协商的通信长度,从当前指令数据中获取指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节和获取到的指令数据得到指令数据块,向智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块;
步骤S4:所述读卡器切换当前块号,根据预先协商的通信长度更新当前指令数据,返回步骤S2;
步骤S5:所述读卡器将协议控制字节设置为不带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节与当前指令数据得到指令数据块,向智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块;
步骤S6:所述读卡器切换当前块号,从所述应答数据块中获取应答数据,顺序存储获取到的应答数据;
步骤S7:所述读卡器判断所述应答数据块是否带链接,是则执行步骤S8,否则向所述上位机返回正确信息和存储的应答数据,结束;
步骤S8:所述读卡器将协议控制字节设置为接收准备块,根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块,向所述智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块,返回步骤S6。
本发明提供一种访问智能卡的读卡器,所述读卡器包括:接收发送模块、初始化模块、第一判断模块、第一组合模块、更新模块、第二组合模块、获取模块、第二判断模块和第三组合模块;
所述接收发送模块,用于接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据;向智能卡发送所述第一组合模块、所述第二组合模块、所述第三组合模块组合得到的指令数据块,接收所述智能卡返回的应答数据块;当所述第二判断模块判断所述应答数据块不带链接时,向所述上位机返回正确信息和存储的应答数据;
所述初始化模块,用于初始化当前块号;
所述第一判断模块,用于判断当前指令数据的长度是否超过预先协商的通信长度;
所述第一组合模块,用于当所述第一判断模块判断当前指令数据的长度超过预先协商的通信长度时,根据所述预先协商的通信长度,从当前指令数据中获取指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节和获取到的指令数据得到指令数据块;
所述更新模块,用于在所述接收发送模块在接收所述智能卡返回的应答数据块之后,切换当前块号,根据预先协商的通信长度更新当前指令数据,触发所述第一判断模块;
所述第二组合模块,用于当所述第一判断模块判断当前指令数据的长度未超过预先协商的通信长度时,将协议控制字节设置为不带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节与当前指令数据得到指令数据块;
所述获取模块,用于在所述接收发送模块接收到所述智能卡返回的应答数据块之后,切换当前块号,从所述应答数据块中获取应答数据,顺序存储获取到的应答数据;
所述第二判断模块,用于判断所述获取模块获取到的所述应答数据块是否带链接;
所述第三组合模块,用于当所述第二判断模块判断所述应答数据块带链接时,将所述协议控制字节设置为接收准备块,根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块。
本发明与现有技术相比,具有以下优点:
本发明提供的一种访问智能卡的方法和读卡器,流程简洁,节省处理时间,增加差错控制机制,使得当受到外界干扰后,能够进行容错。
附图说明
图1是本发明实施例1提供的一种访问智能卡的方法的流程图;
图2是本发明实施例1中步骤103的具体实现流程图;
图3是本发明实施例1中步骤113的具体实现流程图;
图4是本发明实施例2提供的一种访问智能卡的读卡器的模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例中,读卡器与智能卡之间以数据块的形式进行通信;数据块分为3种类型,分别为用于传输APDU的I块(Information-block,信息块)、用于传输确认信息的R块(Receive ready-block,接收准备块)和用于传输控制信息的S块(Supervisory-block,管理块);一个数据块包括开端域、信息域和终止域,其中开端域和终止域是必需的,信息域是可选的;开端域中包括PCB(Protocol Control Byte,协议控制字节),用于区分不同类型的数据块,例如,若PCB的第8位和第7位为00则表示该数据块为I块,若PCB的第8位和第7位为10则表示该数据块为R块,若PCB的第8位和第7位为11则表示该数据块为S块;除此之外,PCB还可以标示数据块是否带链接以及数据块的块号,例如,PCB的第5位表示该数据块是否带链接,PCB的第1位表示该数据块的块号;终止域中为开端域和信息域中的数据的校验码;本实施例中,R块没有信息域;
读卡器接收来自上位机的指令数据,根据指令数据组成指令数据块,读卡器向智能卡发送指令数据块,接收智能卡返回的应答数据块,对应答数据块进行检查,检查成功后得到应答数据块中的应答数据。
实施例1
本发明的实施例1提供了一种访问智能卡的方法,如图1所示,包括:
步骤101:读卡器接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据,初始化重发次数和当前块号;
例如,本实施例中,重发次数初始值为0,当前块号的初始值为0;除此之外,当前块号也可以为标志位,初始状态为复位;指令数据为0x00 01 02 03 04 05 06 07 08 09 0A0B 0C 0D 0E 0F;
步骤102:读卡器判断当前指令数据的长度是否超过预先协商的通信长度,是则执行步骤103,否则执行步骤105;
具体地,本实施例中,读卡器与智能卡预先协商通信长度,当读卡器中的当前指令数据的长度大于预先协商的通信长度时,读卡器向智能卡发送的带链接的指令数据块,否则读卡器向智能卡发送的不带链接的指令数据块;当前指令数据的初始值为读卡器接收到的指令数据;
例如,指令数据0x00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F的长度为16字节,预先协商的通信长度为7字节,则确定当前向智能卡发送的指令数据块需要带链接;
步骤103:读卡器根据预先协商的通信长度,从当前指令数据中获取指令数据,将PCB设置为带链接的I块,根据当前块号设置PCB中的块号,根据PCB和获取到的指令数据得到指令数据块,向智能卡发送指令数据块,等待接收智能卡返回的应答数据块;
具体地,读卡器从当前指令数据的起始位置开始,获取长度为预先协商的通信长度的数据;读卡器对PCB和获取到的指令数据进行校验,得到校验码,将PCB、获取到的指令数据和校验码进行拼接,得到指令数据块;
本实施例中,当前块号的取值为0或1,除此之外,若当前块号为标志位,则当前块号的取值为复位或者置位;
例如,预先协商的通信长度为7字节,读卡器根据预先协商的通信长度,从当前指令数据中获取到的指令数据为0x00 01 02 03 04 05 06;PCB为二进制数据00010010,PCB的第8位和第7位为00,表示该数据块为I块,PCB的第5位为1,表示该数据块带链接,PCB的第1位为0,表示该数据块的块号为0;读卡器根据PCB和获取到的指令数据,组合得到指令数据块为0x12 00 01 02 03 04 05 06 C0 E9;
步骤104:当读卡器接收到智能卡返回的应答数据块时,读卡器判断接收到的应答数据块是否为R块,是则执行步骤107,否则向上位机返回错误信息;
具体地,读卡器判断接收到的应答数据块中的PCB的第一预设位置上的数据是否为第一预设值,是则确定应答数据块为R块,否则确定应答数据块不为R块;优选地,PCB的第一预设位置为PCB的第8位和第7位,第一预设值为10;
例如,读卡器接收到的应答数据块为0xA2F93E,其中,PCB为A2,即二进制数据10100010,则PCB的第8位和第7位为10,读卡器确定接收到的应答数据块为R块;
步骤105:读卡器将PCB设置为不带链接的I块,根据当前块号设置PCB中的块号,根据PCB与当前指令数据,组合得到指令数据块,向智能卡发送指令数据块,等待接收智能卡返回的应答数据块;
具体地,读卡器对PCB和当前指令数据进行校验,得到校验码,将PCB、当前指令数据和校验码进行拼接,得到指令数据块;
例如,当前指令数据为0x0E 0F;PCB为二进制数据00000010,PCB的第8位和第7位为00,表示该数据块为I块,PCB的第5位为0,表示该数据块不带链接,PCB的第1位为0,表示该数据块的块号为0;读卡器根据PCB和当前指令数据,组合得到指令数据块为0x02 0E 0F5801;
步骤106:当读卡器接收到智能卡返回的应答数据块时,读卡器判断接收到的应答数据块是否为R块,是则执行步骤107,否则执行步骤110;
具体地,读卡器判断应答数据块中的PCB的第8位和第7位是否为10,是则确定接收到的应答数据块为R块,否则确定接收到的应答数据块不为R块;
例如,读卡器接收到的应答数据块为0x02 39 30 30 30 E4 BC,其中,PCB为02,即二进制数据00000010,则PCB的第8位和第7位为00,读卡器确定接收到的应答数据块不为R块;
步骤107:读卡器判断接收到的应答数据块中的块号与发送的指令数据块中的块号是否相同,是则执行步骤108,否则执行步骤109;
例如,读卡器发送的指令数据块为0x12 00 01 02 03 04 05 06 C0 E9,其中,PCB中的块号为0;读卡器接收到的应答数据块为0xA2 F9 3E,其中,PCB中的块号为0;则接收到的应答数据块中的块号与发送的指令数据块中的块号相同;
步骤108:读卡器切换当前块号,根据预先协商的通信长度更新当前指令数据,初始化重发次数,返回步骤102;
本实施例中,若当前块号为0,则读卡器将当前块号切换为1;若当前块号为1,则读卡器将当前块号切换为0;除此之外,若当前块号为标志位且取值为复位,则读卡器将当前块号切换为置位;若当前块号为置位,则读卡器将当前块号切换为复位;根据预先协商的通信长度更新当前指令数据具体为:从当前指令数据的起始位置开始删除长度为预先协商的通信长度的数据;
步骤109:读卡器判断重发次数是否达到最大发送次数,是则向上位机返回错误信息,否则更新重发次数,返回步骤102;
步骤110:读卡器判断接收到的应答数据块是否正确,是则执行步骤111,否则向上位机返回错误信息;
具体地,读卡器对接收到的应答数据块进行检查,若应答数据块通过校验,并且应答数据块为I块,并且应答数据块长度不为0,并且应答数据块的块号与发送的指令数据块的块号相同,则确定接收到的应答数据块正确,否则确定接收到的应答数据块不正确;
步骤111:读卡器切换当前块号,从应答数据块中获取应答数据,顺序存储获取到的应答数据;
具体地,本实施例中,读卡器获取应答数据块中的信息域中的数据作为应答数据;
步骤112:读卡器判断接收到的应答数据块是否带链接,是则执行步骤113,否则向上位机返回正确信息和存储的应答数据,结束;
具体地,读卡器判断接收到的应答数据块中的PCB的第二预设位置上的数据是否为第二预设值,是则确定接收到的应答数据块带链接,否则确定接收到的应答数据块不带链接;优选地,PCB的第二预设位置为PCB的第5位,第二预设值为1;
步骤113:读卡器将PCB设置为R块,根据当前块号设置PCB中的块号,根据PCB得到指令数据块,向智能卡发送指令数据块,并接收智能卡返回的应答数据块,返回步骤110;
具体地,读卡器对PCB进行校验,得到校验码,将PCB和校验码进行拼接,得到指令数据块;
例如,PCB为二进制数据10000010,PCB的第8位和第7位为10,表示该数据块为R块,PCB的第1位为0,表示该数据块的块号为0;读卡器根据PCB得到的指令数据块为0x A2 F93E;
本实施例中,步骤103中读卡器向智能卡发送指令数据块,等待接收智能卡返回的应答数据块,如图2所示,具体包括:
步骤201:读卡器向智能卡发送指令数据块,接收智能卡返回的数据,初始化数据块重传次数、回传标志位和S块请求次数;
例如,回传标志位的初始状态为复位;
步骤202:读卡器判断数据块重传次数是否达到最大重传次数,是则执行步骤203,否则执行步骤205;
步骤203:读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤204,否则向上位机返回错误信息;
具体地,读卡器获取接收到的数据中的错误码,判断错误码是否为第一预设值,是则确定发送和接收成功,否则确定发送和接收不成功;优选地,第一预设值为0x00;该步骤中,发送和接收不成功包括:超时、协议错误、传输错误和校验错误;
步骤204:读卡器判断接收到的数据中的应答数据块是否为S块,是则向上位机返回错误信息,否则执行步骤104;
步骤205:读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤206,否则执行步骤211;
具体地,读卡器获取接收到的数据中的错误码,判断错误码是否为第一预设值,是则确定发送和接收成功,否则确定发送和接收不成功;优选地,第一预设值为0x00;具体地,该步骤中,发送和接收不成功包括:超时、协议错误、传输错误和校验错误;
步骤206:读卡器判断接收到的数据中的应答数据块是否为S块,是则执行步骤207,否则执行步骤104;
具体地,读卡器判断接收到的数据中的应答数据块中的PCB的第一预设位置上的数据是否为第四预设值是则确定接收到的应答数据为S块,否则确定接收到的应答数据不为S块;优选地,PCB的第一预设位置为PCB的第8位和第7位,第四预设值为11;
例如,读卡器接收到的应答数据块为0xF2 28 C5 3E,其中的PCB为0xF2,即二进制数据11110010,则PCB的第8位和第7位为11,确定接收到的应答数据为S块;
步骤207:读卡器判断回传标志位是否置位,是则更新S块请求次数,初始化回传标志位,执行步骤208,否则初始化S块请求次数,执行步骤208;
步骤208:读卡器初始化数据块重传次数,判断S块请求次数是否超过最大S块请求次数,是则向上位机返回错误信息,否则执行步骤209;
例如,最大S块请求次数为2;
步骤209:读卡器判断应答数据块中的请求信息是否合法,是则执行步骤210,否则向上位机返回错误信息;
例如,读卡器判断请求信息中的请求时间是否超过预设时长,是则确定应答数据块中的请求信息不合法,否则确定应答数据块中的请求信息合法;
步骤210:读卡器根据应答数据块中的请求信息更新延迟时间,根据请求信息生成应答信息,将PCB设置为S块,根据PCB与应答信息得到指令数据块,向智能卡发送指令数据块,并接收智能卡返回的数据,返回步骤205;
具体地,读卡器对PCB和应答信息进行校验,得到校验码,将PCB、应答信息和校验码进行拼接,得到指令数据块;
例如,PCB为0xF2,根据请求信息生成的应答信息为0x28,则读卡器组合得到的指令数据块为0xF228C53E;
步骤211:读卡器将回传标志位置位,将PCB设置为包含否定确认的R块,根据当前块号设置PCB中的块号,根据PCB得到指令数据块,向智能卡发送指令数据块,并接收智能卡返回的数据,更新数据块重传次数,返回步骤202;
例如,PCB为二进制数据10010010,PCB的第8位和第7位为10,表示该数据块为R块,PCB的第5位为1,表示该数据块包含否定确认;PCB的第1位为0,表示该数据块的块号为0;读卡器根据PCB得到的指令数据块为0x B2 35 3F;
本实施例中,步骤105中读卡器向智能卡发送指令数据块,等待接收智能卡返回的应答数据块,具体流程如步骤201至步骤211,其中,步骤206和步骤204中读卡器判断接收到的数据中的应答数据块不为S块时执行步骤106;
本实施例中,如图3所示,步骤113中读卡器向智能卡发送指令数据块,等待接收智能卡返回的应答数据块,具体流程如步骤201至步骤210,其中,步骤206和步骤204中读卡器判断接收到的数据中的应答数据块不为S块时返回步骤110;步骤205中,根据接收到的数据判断发送和接收不成功时,执行步骤212;
步骤212:读卡器将PCB设置为包含肯定确认的R块,根据当前块号设置PCB中的块号,根据PCB得到指令数据块,向智能卡发送指令数据块,并接收智能卡返回的数据,更新数据块重传次数,返回步骤202;
例如,PCB为二进制数据10000010,PCB的第8位和第7位为10,表示该数据块为R块,PCB的第5位为0,表示该数据块包含肯定确认;PCB的第1位为0,表示该数据块的块号为0;读卡器根据PCB得到的指令数据块为0x A2 F9 3E;
本实施例中,读卡器内部分为上层主流程和下层函数;上层主流程执行步骤101至步骤113;
其中,步骤103中,上层主流程生成第一重传请求RNAK,将指令数据块和第一重传请求发送给下层函数;下层函数接收指令数据块和第一重传请求,执行步骤201至步骤210;其中,步骤205中,根据接收到的数据判断发送和接收不成功时,执行以下步骤:
读卡器判断重传请求的类型,若是第一重传请求则执行步骤211,若是第二重传请求则执行步骤212,若是其他则向上位机返回错误信息;
步骤105中,上层主流程生成第一重传请求RNAK,将指令数据块和第一重传请求发送给下层函数;下层函数接收指令数据块和第一重传请求,执行步骤201至步骤210;其中,步骤206和步骤204中读卡器判断接收到的数据中的应答数据块不为S块时执行步骤106;步骤205中,根据接收到的数据判断发送和接收不成功时,执行以下步骤:
读卡器判断重传请求的类型,若是第一重传请求则执行步骤211,若是第二重传请求则执行步骤212,若是其他则向上位机返回错误信息;
步骤113中,上层主流程生成第二重传请求RACK,将指令数据块和第二重传请求发送给下层函数;下层函数接收指令数据块和第二重传请求,执行步骤201至步骤210;其中,步骤206和步骤204中读卡器判断接收到的数据中的应答数据块不为S块时返回步骤110;步骤205中,根据接收到的数据判断发送和接收不成功时,执行以下步骤:
读卡器判断重传请求的类型,若是第一重传请求则执行步骤211,若是第二重传请求则执行步骤212,若是其他则向上位机返回错误信息;
本实施例中提供的一种访问智能卡的方法,流程简洁,节省处理时间,增加差错控制机制,使得当受到外界干扰后,能够进行容错。
实施例2
本发明的实施例2提供了一种访问智能卡的读卡器,如图4所示,包括:接收发送模块301、初始化模块302、第一判断模块303、第一组合模块304、更新模块305、第二组合模块306、获取模块307、第二判断模块308和第三组合模块309;
接收发送模块301,用于接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据;向智能卡发送第一组合模块304、第二组合模块306、第三组合模块309组合得到的指令数据块,接收智能卡返回的应答数据块;当第二判断模块308判断应答数据块不带链接时,向上位机返回正确信息和存储的应答数据;
初始化模块302,用于初始化当前块号;
第一判断模块303,用于判断当前指令数据的长度是否超过预先协商的通信长度;
第一组合模块304,用于当第一判断模块303判断当前指令数据的长度超过预先协商的通信长度时,根据预先协商的通信长度,从当前指令数据中获取指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置协议控制字节中的块号,根据协议控制字节和获取到的指令数据得到指令数据块;
更新模块305,用于在接收发送模块301在接收智能卡返回的应答数据块之后,切换当前块号,根据预先协商的通信长度更新当前指令数据,触发第一判断模块303;
第二组合模块306,用于当第一判断模块303判断当前指令数据的长度未超过预先协商的通信长度时,将协议控制字节设置为不带链接的信息块,并根据当前块号设置协议控制字节中的块号,根据协议控制字节与当前指令数据得到指令数据块;
获取模块307,用于在接收发送模块301接收到智能卡返回的应答数据块之后,切换当前块号,从应答数据块中获取应答数据,顺序存储获取到的应答数据;
第二判断模块308,用于判断获取模块307获取到的应答数据块是否带链接;
第三组合模块309,用于当第二判断模块308判断应答数据块带链接时,将协议控制字节设置为接收准备块,根据当前块号设置协议控制字节中的块号,根据协议控制字节得到指令数据块。
其中,第一组合模块304,具体用于当第一判断模块303判断当前指令数据的长度超过预先协商的通信长度时,从当前指令数据的起始位置开始,获取长度为预先协商的通信长度的数据作为指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置协议控制字节中的块号,根据协议控制字节和获取到的指令数据得到指令数据块。
其中,第一组合模块304,具体用于当第一判断模块303判断当前指令数据的长度超过预先协商的通信长度时,根据预先协商的通信长度,从当前指令数据中获取指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置协议控制字节中的块号,对协议控制字节和获取到的指令数据进行校验,得到校验码,将协议控制字节、获取到的指令数据和校验码进行拼接,得到指令数据块;
第二组合模块306,具体用于当第一判断模块303判断当前指令数据的长度未超过预先协商的通信长度时,将协议控制字节设置为不带链接的信息块,并根据当前块号设置协议控制字节中的块号,对协议控制字节和当前指令数据进行校验,得到校验码,将协议控制字节、获取到的指令数据和校验码进行拼接,得到指令数据块;
第三组合模块309,用于当第二判断模块308判断应答数据块带链接时,将协议控制字节设置为接收准备块,根据当前块号设置协议控制字节中的块号,对协议控制字节进行校验,得到校验码,将协议控制字节和校验码进行拼接,得到指令数据块。
其中,接收发送模块301,包括:第一发送接收单元、第一初始化单元、第一判断单元、第二判断单元、第三判断单元、第四判断单元、第五判断单元、第六判断单元、第一组合单元和第二组合单元;
第一发送接收单元,用于接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据;当第一判断单元判断数据块重传次数达到最大重传次数时,向上位机返回错误信息;当第五判断单元判断管理块请求次数超过最大管理块请求次数时,向上位机返回错误信息;当第六判断单元判断应答数据块中的请求信息不合法时,向上位机返回错误信息;向智能卡发送第一组合单元、第二组合单元组合得到的指令数据块,并接收智能卡返回的数据;还用于更新数据块重传次数;当第二判断模块308判断应答数据块不带链接时,向上位机返回正确信息和存储的应答数据;
第一初始化单元,用于初始化数据块重传次数、回传标志位和管理块请求次数;
第一判断单元,用于判断数据块重传次数是否达到最大重传次数;
第二判断单元,用于当第一判断单元判断数据块重传次数未达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
第三判断单元,用于当第二判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发更新模块305;
第四判断单元,用于当第三判断单元判断判断接收到的数据中的应答数据块为管理块时,判断回传标志位是否置位,是则更新管理块请求次数,触发第五判断单元,否则初始化管理块请求次数,触发第五判断单元;
第五判断单元,用于初始化数据块重传次数,判断管理块请求次数是否超过最大管理块请求次数;
第六判断单元,用于当第五判断单元判断管理块请求次数未超过最大管理块请求次数时,判断应答数据块中的请求信息是否合法;
第一组合单元,用于当第六判断单元判断应答数据块中的请求信息合法时,根据应答数据块中的请求信息更新延迟时间,根据请求信息生成应答信息,将协议控制字节设置为管理块,根据协议控制字节与应答信息得到指令数据块;
第二组合单元,用于当第二判断单元判断发送和接收失败时,将回传标志位置位,将协议控制字节设置为包含否定确认的接收准备块,并根据当前块号设置协议控制字节中的块号,根据协议控制字节得到指令数据块。
其中,接收发送模块301,还包括:第七判断单元和第八判断单元;
第七判断单元,用于当第一判断单元判断数据块重传次数达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
第八判断单元,用于当第七判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发更新模块305;
第一发送接收单元,还用于当第七判断单元判断发送和接收失败时,向上位机返回错误信息;当第八判断单元判接收到的数据中的应答数据块不为管理块时,向上位机返回错误信息。
读卡器还包括第三判断模块,用于判断接收发送模块301接收到的应答数据块是否为接收准备块,是则触发更新模块305;
接收发送模块301,还用于当第三判断模块判断应答数据块不为接收准备块时,向上位机返回错误信息。
其中,第三判断模块具体用于判断应答数据块中的协议控制字节的第一预设位置上的数据是否为第一预设值,是则确定应答数据块为接收准备块,否则确定应答数据块不为接收准备块.
读卡器还包括第四判断模块,用于当第三判断模块判断应答数据块为接收准备块时,判断应答数据块中的块号与指令数据块中的块号是否相同,是则触发更新模块305;
接收发送模块301,还用于当第四判断模块判断应答数据块中的块号与指令数据块中的块号不相同时,向上位机返回错误信息。
其中,初始化模块302还用于初始化重发次数;
读卡器还包括第五判断模块,用于当第四判断模块判断应答数据块中的块号与指令数据块中的块号不相同时,判断重发次数是否达到最大发送次数,否则更新重发次数,触发第一判断模块303;
接收发送模块301,还用于当第五判断模块判断重发次数达到最大发送次数时向上位机返回错误信息;
更新模块305,还用于初始化重发次数。
其中,更新模块305,具体用于在接收发送模块301发送指令数据块之后,切换当前块号,从当前指令数据的起始位置开始删除长度为预先协商的通信长度的数据,将删除之后的数据作为当前指令数据,触发第一组合模块304。
其中,接收发送模块301,包括:第二发送接收单元、第二初始化单元、第九判断单元、第十判断单元、第十一判断单元、第十二判断单元、第十三判断单元、第十四判断单元、第三组合单元和第四组合单元;
第二发送接收单元,用于接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据;当第九判断单元判断数据块重传次数达到最大重传次数时,向上位机返回错误信息;当第十三判断单元判断管理块请求次数超过最大管理块请求次数时,向上位机返回错误信息;当第十四判断单元判断应答数据块中的请求信息不合法时,向上位机返回错误信息;向智能卡发送第三组合单元、第四组合单元组合得到的指令数据块,并接收智能卡返回的数据;还用于更新数据块重传次数;当第二判断模块308判断应答数据块不带链接时,向上位机返回正确信息和存储的应答数据;
第二初始化单元,用于初始化数据块重传次数、回传标志位和管理块请求次数;
第九判断单元,用于判断数据块重传次数是否达到最大重传次数;
第十判断单元,用于当第九判断单元判断数据块重传次数未达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
第十一判断单元,用于当第十判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发获取模块307;
第十二判断单元,用于当第十一判断单元判断判断接收到的数据中的应答数据块为管理块时,判断回传标志位是否置位,是则更新管理块请求次数,触发第十三判断单元,否则初始化管理块请求次数,触发第十三判断单元;
第十三判断单元,用于初始化数据块重传次数,判断管理块请求次数是否超过最大管理块请求次数;
第十四判断单元,用于当第十三判断单元判断管理块请求次数未超过最大管理块请求次数时,判断应答数据块中的请求信息是否合法;
第三组合单元,用于当第十四判断单元判断应答数据块中的请求信息合法时,根据应答数据块中的请求信息更新延迟时间,根据请求信息生成应答信息,将协议控制字节设置为管理块,根据协议控制字节与应答信息得到指令数据块;
第四组合单元,用于当第十判断单元判断发送和接收失败时,将回传标志位置位,将协议控制字节设置为包含否定确认的接收准备块,并根据当前块号设置协议控制字节中的块号,根据协议控制字节得到指令数据块。
其中,接收发送模块301,还包括:第十五判断单元和第十六判断单元;
第十五判断单元,用于当第九判断单元判断数据块重传次数达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
第十六判断单元,用于当第十五判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发更新模块305;
第二发送接收单元,还用于当第十五判断单元判断发送和接收失败时,向上位机返回错误信息;当第十六判断单元判接收到的数据中的应答数据块不为管理块时,向上位机返回错误信息。
读卡器还包括第六判断模块,用于判断接收发送模块301接收到的应答数据块是否为接收准备块,是则触发第四判断模块,否则触发获取模块307。
其中,第六判断模块具体用于判断应答数据块中的协议控制字节的第一预设位置上的数据是否为第一预设值,是则确定应答数据块为接收准备块,否则确定应答数据块不为接收准备块。
读卡器还包括第七判断模块,用于当第六判断模块判断应答数据块不为接收准备块时,判断应答数据块是否正确,是则触发获取模块307;
接收发送模块301,还用于当第七判断模块判断应答数据块不正确时,向上位机返回错误信息;
第三组合模块309,具体用于将协议控制字节设置为接收准备块,根据当前块号设置协议控制字节中的块号,根据协议控制字节得到指令数据块。
其中,第七判断模块,具体用于对应答数据块进行检查,若应答数据块通过校验,且应答数据块为信息块,且应答数据块长度不为0,且应答数据块的块号与发送的指令数据块的块号相同,则确定应答数据块正确,否则确定应答数据块不正确。
其中,第二判断模块308,具体用于判断应答数据块中的协议控制字节的第二预设位置上的数据是否为第二预设值,是则确定应答数据块带链接,否则确定应答数据块不带链接。
其中,接收发送模块301,包括:第三发送接收单元、第三初始化单元、第十七判断单元、第十八判断单元、第十九判断单元、第二十判断单元、第二十一判断单元、第二十二判断单元、第五组合单元和第六组合单元;
第三发送接收单元,用于接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据;当第十七判断单元判断数据块重传次数达到最大重传次数时,向上位机返回错误信息;当第二十一判断单元判断管理块请求次数超过最大管理块请求次数时,向上位机返回错误信息;当第二十二判断单元判断应答数据块中的请求信息不合法时,向上位机返回错误信息;向智能卡发送第五组合单元、第六组合单元组合得到的指令数据块,并接收智能卡返回的数据;还用于更新数据块重传次数;当第二判断模块308判断应答数据块不带链接时,向上位机返回正确信息和存储的应答数据;
第三初始化单元,用于初始化数据块重传次数、回传标志位和管理块请求次数;
第十七判断单元,用于判断数据块重传次数是否达到最大重传次数;
第十八判断单元,用于当第十七判断单元判断数据块重传次数未达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
第十九判断单元,用于当第十八判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发获取模块307;
第二十判断单元,用于当第十九判断单元判断判断接收到的数据中的应答数据块为管理块时,判断回传标志位是否置位,是则更新管理块请求次数,触发第二十一判断单元,否则初始化管理块请求次数,触发第二十一判断单元;
第二十一判断单元,用于初始化数据块重传次数,判断管理块请求次数是否超过最大管理块请求次数;
第二十二判断单元,用于当第二十一判断单元判断管理块请求次数未超过最大管理块请求次数时,判断应答数据块中的请求信息是否合法;
第五组合单元,用于当第二十二判断单元判断应答数据块中的请求信息合法时,根据应答数据块中的请求信息更新延迟时间根据请求信息生成应答信息,,将协议控制字节设置为管理块,根据协议控制字节与应答信息得到指令数据块;
第六组合单元,用于当第十八判断单元判断发送和接收失败时,将回传标志位置位,将协议控制字节设置为包含肯定确认的接收准备块,并根据当前块号设置协议控制字节中的块号,根据协议控制字节得到指令数据块。
其中,接收发送模块301,还包括:第二十三判断单元和第二十四判断单元;
第二十三判断单元,用于当第十七判断单元判断数据块重传次数达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
第二十四判断单元,用于当第二十四判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发更新模块305;
第三发送接收单元,还用于当第二十三判断单元判断发送和接收失败时,向上位机返回错误信息;当第二十四判断单元判接收到的数据中的应答数据块不为管理块时,向上位机返回错误信息。
其中,第一组合单元,具体用于当第六判断单元判断应答数据块中的请求信息合法时,根据应答数据块中的请求信息更新延迟时间,将协议控制字节设置为管理块,对协议控制字节和应答信息进行校验,得到校验码,将协议控制字节、应答信息和校验码进行拼接,得到指令数据块。
其中,第三组合单元,具体用于当第十四判断单元判断应答数据块中的请求信息合法时,根据应答数据块中的请求信息更新延迟时间,将协议控制字节设置为管理块,对协议控制字节和应答信息进行校验,得到校验码,将协议控制字节、应答信息和校验码进行拼接,得到指令数据块。
其中,第五组合单元,具体用于当第二十二判断单元判断应答数据块中的请求信息合法时,根据应答数据块中的请求信息更新延迟时间,将协议控制字节设置为管理块,对协议控制字节和应答信息进行校验,得到校验码,将协议控制字节、应答信息和校验码进行拼接,得到指令数据块。
其中,第七判断单元具体用于获取接收到的数据中的错误码,判断错误码是否为第三预设值,是则确定发送和接收成功,否则确定发送和接收不成功。
其中,第八判断单元具体用于判断应答数据块中的协议控制字节的第一预设位置上的数据是否为第四预设值,是则确定应答数据块为管理块,否则确定应答数据块不为管理块。
其中,第十五判断单元具体用于获取接收到的数据中的错误码,判断错误码是否为第三预设值,是则确定发送和接收成功,否则确定发送和接收不成功。
其中,第十六判断单元具体用于判断应答数据块中的协议控制字节的第一预设位置上的数据是否为第四预设值,是则确定应答数据块为管理块,否则确定应答数据块不为管理块。
其中,第二十三判断单元具体用于获取接收到的数据中的错误码,判断错误码是否为第三预设值,是则确定发送和接收成功,否则确定发送和接收不成功。
其中,第二十四判断单元具体用于判断应答数据块中的协议控制字节的第一预设位置上的数据是否为第四预设值,是则确定应答数据块为管理块,否则确定应答数据块不为管理块。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (35)

1.一种访问智能卡的方法,其特征在于,所述方法包括:
步骤S1:读卡器接收上位机发送的指令数据,将接收到的所述指令数据作为当前指令数据,初始化当前块号;
步骤S2:所述读卡器判断当前指令数据的长度是否超过预先协商的通信长度,是则执行步骤S3,否则执行步骤S5;
步骤S3:所述读卡器根据所述预先协商的通信长度,从当前指令数据中获取指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节和获取到的指令数据得到指令数据块,向智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块;
步骤S4:所述读卡器切换当前块号,根据预先协商的通信长度更新当前指令数据,返回步骤S2;
步骤S5:所述读卡器将协议控制字节设置为不带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节与当前指令数据得到指令数据块,向智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块;
步骤S6:所述读卡器切换当前块号,从所述应答数据块中获取应答数据,顺序存储获取到的应答数据;
步骤S7:所述读卡器判断所述应答数据块是否带链接,是则执行步骤S8,否则向所述上位机返回正确信息和存储的应答数据,结束;
步骤S8:所述读卡器将协议控制字节设置为接收准备块,根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块,向所述智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块,返回步骤S6;
所述步骤S3,所述向智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块,具体为:
步骤A1-1:所述读卡器向所述智能卡发送所述指令数据块,接收所述智能卡返回的数据,初始化数据块重传次数、回传标志位和管理块请求次数;
步骤A1-2:所述读卡器判断所述数据块重传次数是否达到最大重传次数,是则向所述上位机返回错误信息,否则执行步骤A1-3;
步骤A1-3:所述读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤A1-4,否则执行步骤A1-9;
步骤A1-4:所述读卡器判断接收到的数据中的应答数据块是否为管理块,是则执行步骤A1-5,否则执行步骤S4;
步骤A1-5:所述读卡器判断所述回传标志位是否置位,是则更新所述管理块请求次数,初始化所述回传标志位,执行步骤A1-6,否则初始化所述管理块请求次数,执行步骤A1-6;
步骤A1-6:所述读卡器初始化所述数据块重传次数,判断所述管理块请求次数是否超过最大管理块请求次数,是则向所述上位机返回错误信息,否则执行步骤A1-7;
步骤A1-7:所述读卡器判断所述应答数据块中的请求信息是否合法,是则执行步骤A1-8,否则向所述上位机返回错误信息;
步骤A1-8:所述读卡器根据所述应答数据块中的请求信息更新延迟时间,根据所述请求信息生成应答信息,将协议控制字节设置为管理块,根据所述协议控制字节与所述应答信息得到指令数据块,向所述智能卡发送所述指令数据块,并接收所述智能卡返回的数据,返回步骤A1-3;
步骤A1-9:所述读卡器将所述回传标志位置位,将协议控制字节设置为包 含否定确认的接收准备块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块,向所述智能卡发送所述指令数据块,并接收所述智能卡返回的数据,更新所述数据块重传次数,返回步骤A1-2;
所述步骤S5中,所述向智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块,具体为:
步骤A2-1:所述读卡器向所述智能卡发送所述指令数据块,接收所述智能卡返回的数据,初始化数据块重传次数、回传标志位和管理块请求次数;
步骤A2-2:所述读卡器判断所述数据块重传次数是否达到最大重传次数,是则向所述上位机返回错误信息,否则执行步骤A2-3;
步骤A2-3:所述读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤A2-4,否则执行步骤A2-9;
步骤A2-4:所述读卡器判断接收到的数据中的应答数据块是否为管理块,是则执行步骤A2-5,否则执行步骤S6;
步骤A2-5:所述读卡器判断所述回传标志位是否置位,是则更新所述管理块请求次数,初始化所述回传标志位,执行步骤A2-6,否则初始化所述管理块请求次数,执行步骤A2-6;
步骤A2-6:所述读卡器初始化所述数据块重传次数,判断所述管理块请求次数是否超过最大管理块请求次数,是则向所述上位机返回错误信息,否则执行步骤A2-7;
步骤A2-7:所述读卡器判断所述应答数据块中的请求信息是否合法,是则执行步骤A2-8,否则向所述上位机返回错误信息;
步骤A2-8:所述读卡器根据所述应答数据块中的请求信息更新延迟时间,根据所述请求信息生成应答信息,将协议控制字节设置为管理块,根据所述协 议控制字节与所述应答信息得到指令数据块,向所述智能卡发送所述指令数据块,并接收所述智能卡返回的数据,返回步骤A2-3;
步骤A2-9:所述读卡器将所述回传标志位置位,将协议控制字节设置为包含否定确认的接收准备块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块,向所述智能卡发送所述指令数据块,并接收所述智能卡返回的数据,更新所述数据块重传次数,返回步骤A2-2;
所述步骤S8中,所述向智能卡发送所述指令数据块,接收所述智能卡返回的应答数据块,具体为:
步骤A3-1:所述读卡器向所述智能卡发送所述指令数据块,接收所述智能卡返回的数据,初始化数据块重传次数、回传标志位和管理块请求次数;
步骤A3-2:所述读卡器判断所述数据块重传次数是否达到最大重传次数,是则向所述上位机返回错误信息,否则执行步骤A3-3;
步骤A3-3:所述读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤A3-4,否则执行步骤A3-9;
步骤A3-4:所述读卡器判断接收到的数据中的应答数据块是否为管理块,是则执行步骤A3-5,否则返回步骤S6;
步骤A3-5:所述读卡器判断所述回传标志位是否置位,是则更新所述管理块请求次数,初始化所述回传标志位,执行步骤A3-6,否则初始化所述管理块请求次数,执行步骤A3-6;
步骤A3-6:所述读卡器初始化所述数据块重传次数,判断所述管理块请求次数是否超过最大管理块请求次数,是则向所述上位机返回错误信息,否则执行步骤A3-7;
步骤A3-7:所述读卡器判断所述应答数据块中的请求信息是否合法,是则 执行步骤A3-8,否则向所述上位机返回错误信息;
步骤A3-8:所述读卡器根据所述应答数据块中的请求信息更新延迟时间,根据所述请求信息生成应答信息,将协议控制字节设置为管理块,根据所述协议控制字节与所述应答信息得到指令数据块,向所述智能卡发送所述指令数据块,并接收所述智能卡返回的数据,返回步骤A3-3;
步骤A3-9:所述读卡器将协议控制字节设置为包含肯定确认的接收准备块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块,向所述智能卡发送所述指令数据块,并接收所述智能卡返回的数据,更新所述数据块重传次数,返回步骤A3-2。
2.根据权利要求1所述的方法,其特征在于,所述读卡器根据所述预先协商的通信长度,从当前指令数据中获取指令数据,具体为:所述读卡器从当前指令数据的起始位置开始,获取长度为预先协商的通信长度的数据作为指令数据。
3.根据权利要求1所述的方法,其特征在于,所述根据所述协议控制字节和获取到的指令数据得到指令数据块,具体为:所述读卡器对所述协议控制字节和获取到的指令数据进行校验,得到校验码,将所述协议控制字节、获取到的指令数据和所述校验码进行拼接,得到所述指令数据块;
所述根据所述协议控制字节与当前指令数据得到指令数据块,具体为:所述读卡器对所述协议控制字节和当前指令数据进行校验,得到校验码,将所述协议控制字节、当前指令数据和所述校验码进行拼接,得到所述指令数据块;
所述根据所述协议控制字节得到指令数据块,具体为:所述读卡器对所述协议控制字节进行校验,得到校验码,将所述协议控制字节和所述校验码进行 拼接,得到所述指令数据块。
4.根据权利要求1所述的方法,其特征在于,所述步骤A1-2中所述读卡器判断所述数据块重传次数达到最大重传次数时,还包括:
步骤B1-1:所述读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤B1-2,否则向所述上位机返回错误信息;
步骤B1-2:所述读卡器判断接收到的数据中的应答数据块是否为管理块,是则向所述上位机返回错误信息,否则执行步骤S4。
5.根据权利要求1所述的方法,其特征在于,所述步骤S4之前包括:
步骤S3-1:所述读卡器判断所述应答数据块是否为接收准备块,是则执行步骤S4,否则向所述上位机返回错误信息。
6.根据权利要求5所述的方法,其特征在于,所述步骤S3-1判断所述应答数据块为接收准备块之后,执行所述步骤S4之前包括:
步骤S4-0:所述读卡器判断所述应答数据块中的块号与所述指令数据块中的块号是否相同,是则执行步骤S4,否则向所述上位机返回错误信息。
7.根据权利要求6所述的方法,其特征在于,所述步骤S1还包括:所述读卡器初始化重发次数;
所述步骤S4-0中,所述读卡器判断所述应答数据块中的块号与所述指令数据块中的块号不相同时,还包括:所述读卡器判断所述重发次数是否达到最大 发送次数,是则向所述上位机返回错误信息,否则更新所述重发次数,返回步骤S2;
所述步骤S4还包括:所述读卡器初始化所述重发次数。
8.根据权利要求1所述的方法,其特征在于,所述根据预先协商的通信长度更新当前指令数据,具体为:所述读卡器从当前指令数据的起始位置开始删除长度为预先协商的通信长度的数据,将删除之后的数据作为当前指令数据。
9.根据权利要求1所述的方法,其特征在于,所述步骤A1-2中所述读卡器判断所述数据块重传次数达到最大重传次数时,还包括:
步骤B2-1:所述读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤B2-2,否则向所述上位机返回错误信息;
步骤B2-2:所述读卡器判断接收到的数据中的应答数据块是否为管理块,是则向所述上位机返回错误信息,否则执行步骤S6。
10.根据权利要求6所述的方法,其特征在于,所述步骤S6之前包括:
步骤S6-0:所述读卡器判断所述应答数据块是否为接收准备块,是则返回步骤S4-0,否则执行步骤S6。
11.根据权利要求5或10所述的方法,其特征在于,所述读卡器判断所述应答数据块是否为接收准备块,具体为:所述读卡器判断所述应答数据块中的协议控制字节的第一预设位置上的数据是否为第一预设值,是则确定所述应答 数据块为接收准备块,否则确定所述应答数据块不为接收准备块。
12.根据权利要求10所述的方法,其特征在于,所述步骤S6-0判断为否时执行步骤S6之前包括:
步骤S6-1:所述读卡器判断所述应答数据块是否正确,是则执行步骤S6,否则向所述上位机返回错误信息;
所述步骤S8具体为:所述读卡器将协议控制字节设置为接收准备块,根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块,向所述智能卡发送所述指令数据块,并接收所述智能卡返回的应答数据块,返回步骤S6-1。
13.根据权利要求12所述的方法,其特征在于,所述读卡器判断所述应答数据块是否正确,具体为:所述读卡器对所述应答数据块进行检查,若所述应答数据块通过校验,且所述应答数据块为信息块,且所述应答数据块长度不为0,且所述应答数据块的块号与发送的所述指令数据块的块号相同,则确定所述应答数据块正确,否则确定所述应答数据块不正确。
14.根据权利要求1所述的方法,其特征在于,所述读卡器判断所述应答数据块是否带链接,具体为:所述读卡器判断所述应答数据块中的协议控制字节的第二预设位置上的数据是否为第二预设值,是则确定所述应答数据块带链接,否则确定所述应答数据块不带链接。
15.根据权利要求1所述的方法,其特征在于,所述步骤A3-2中所述读卡 器判断所述数据块重传次数达到最大重传次数时,还包括:
步骤B3-1:所述读卡器根据接收到的数据判断发送和接收是否成功,是则执行步骤B3-2,否则向所述上位机返回错误信息;
步骤B3-2:所述读卡器判断接收到的数据中的应答数据块是否为管理块,是则向所述上位机返回错误信息,否则返回步骤S6。
16.根据权利要求1所述的方法,其特征在于,所述根据所述协议控制字节与应答信息得到指令数据块,具体为:所述读卡器对所述协议控制字节和所述应答信息进行校验,得到校验码,将所述协议控制字节、所述应答信息和所述校验码进行拼接,得到所述指令数据块。
17.根据权利要求4、9或15任意一项所述的方法,其特征在于,所述读卡器根据接收到的数据判断发送和接收是否成功,具体为:所述读卡器获取接收到的数据中的错误码,判断所述错误码是否为第三预设值,是则确定发送和接收成功,否则确定发送和接收不成功。
18.根据权利要求4、9或15任意一项所述的方法,其特征在于,所述读卡器判断接收到的数据中的应答数据块是否为管理块,具体为:所述读卡器判断所述应答数据块中的协议控制字节的第一预设位置上的数据是否为第四预设值,是则确定所述应答数据块为管理块,否则确定所述应答数据块不为管理块。
19.一种访问智能卡的读卡器,其特征在于,所述读卡器包括:接收发送模块、初始化模块、第一判断模块、第一组合模块、更新模块、第二组合模块、 获取模块、第二判断模块和第三组合模块;
所述接收发送模块,用于接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据;向智能卡发送所述第一组合模块、所述第二组合模块、所述第三组合模块组合得到的指令数据块,接收所述智能卡返回的应答数据块;当所述第二判断模块判断所述应答数据块不带链接时,向所述上位机返回正确信息和存储的应答数据;
所述初始化模块,用于初始化当前块号;
所述第一判断模块,用于判断当前指令数据的长度是否超过预先协商的通信长度;
所述第一组合模块,用于当所述第一判断模块判断当前指令数据的长度超过预先协商的通信长度时,根据所述预先协商的通信长度,从当前指令数据中获取指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节和获取到的指令数据得到指令数据块;
所述更新模块,用于在所述接收发送模块在接收所述智能卡返回的应答数据块之后,切换当前块号,根据预先协商的通信长度更新当前指令数据,触发所述第一判断模块;
所述第二组合模块,用于当所述第一判断模块判断当前指令数据的长度未超过预先协商的通信长度时,将协议控制字节设置为不带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节与当前指令数据得到指令数据块;
所述获取模块,用于在所述接收发送模块接收到所述智能卡返回的应答数据块之后,切换当前块号,从所述应答数据块中获取应答数据,顺序存储获取到的应答数据;
所述第二判断模块,用于判断所述获取模块获取到的所述应答数据块是否带链接;
所述第三组合模块,用于当所述第二判断模块判断所述应答数据块带链接时,将所述协议控制字节设置为接收准备块,根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块;
所述接收发送模块,包括:第一发送接收单元、第一初始化单元、第一判断单元、第二判断单元、第三判断单元、第四判断单元、第五判断单元、第六判断单元、第一组合单元和第二组合单元;
所述第一发送接收单元,用于接收上位机发送的指令数据,将接收到的指令数据作为当前指令数据;当所述第一判断单元判断数据块重传次数达到最大重传次数时,向所述上位机返回错误信息;当所述第五判断单元判断管理块请求次数超过最大管理块请求次数时,向所述上位机返回错误信息;当所述第六判断单元判断所述应答数据块中的请求信息不合法时,向所述上位机返回错误信息;向所述智能卡发送所述第一组合单元、所述第二组合单元组合得到的指令数据块,并接收所述智能卡返回的数据;还用于更新数据块重传次数;当所述第二判断模块判断所述应答数据块不带链接时,向所述上位机返回正确信息和存储的应答数据;
所述第一初始化单元,用于初始化数据块重传次数、回传标志位和管理块请求次数;
所述第一判断单元,用于判断所述数据块重传次数是否达到最大重传次数;
所述第二判断单元,用于当所述第一判断单元判断所述数据块重传次数未达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
所述第三判断单元,用于当所述第二判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发所述更新模块;
所述第四判断单元,用于当所述第三判断单元判断判断接收到的数据中的应答数据块为管理块时,判断所述回传标志位是否置位,是则更新所述管理块请求次数,触发所述第五判断单元,否则初始化所述管理块请求次数,触发所述第五判断单元;
所述第五判断单元,用于初始化所述数据块重传次数,判断所述管理块请求次数是否超过最大管理块请求次数;
所述第六判断单元,用于当所述第五判断单元判断管理块请求次数未超过最大管理块请求次数时,判断所述应答数据块中的请求信息是否合法;
所述第一组合单元,用于当所述第六判断单元判断所述应答数据块中的请求信息合法时,根据所述应答数据块中的请求信息更新延迟时间,根据所述请求信息生成应答信息,将协议控制字节设置为管理块,根据所述协议控制字节与所述应答信息得到指令数据块;
所述第二组合单元,用于当所述第二判断单元判断发送和接收失败时,将所述回传标志位置位,将协议控制字节设置为包含否定确认的接收准备块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块。
20.根据权利要求19所述的读卡器,其特征在于,所述第一组合模块,具体用于当所述第一判断模块判断当前指令数据的长度超过预先协商的通信长度时,从当前指令数据的起始位置开始,获取长度为预先协商的通信长度的数据作为指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节和获取到的指令数据得到指令数据块。
21.根据权利要求19所述的读卡器,其特征在于,所述第一组合模块,具体用于当所述第一判断模块判断当前指令数据的长度超过预先协商的通信长度时,根据预先协商的通信长度,从当前指令数据中获取指令数据,将协议控制字节设置为带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,对所述协议控制字节和获取到的指令数据进行校验,得到校验码,将所述协议控制字节、获取到的指令数据和所述校验码进行拼接,得到所述指令数据块;
所述第二组合模块,具体用于当所述第一判断模块判断当前指令数据的长度未超过预先协商的通信长度时,将协议控制字节设置为不带链接的信息块,并根据当前块号设置所述协议控制字节中的块号,对所述协议控制字节和当前指令数据进行校验,得到校验码,将所述协议控制字节、获取到的指令数据和所述校验码进行拼接,得到所述指令数据块;
所述第三组合模块,用于当所述第二判断模块判断所述应答数据块带链接时,将所述协议控制字节设置为接收准备块,根据当前块号设置所述协议控制字节中的块号,对所述协议控制字节进行校验,得到校验码,将所述协议控制字节和所述校验码进行拼接,得到所述指令数据块。
22.根据权利要求19所述的读卡器,其特征在于,所述接收发送模块,还包括:第七判断单元和第八判断单元;
所述第七判断单元,用于当所述第一判断单元判断所述数据块重传次数达到最大重传次数时,根据接收到的数据判断发送和接收是否成功;
所述第八判断单元,用于当所述第七判断单元判断发送和接收成功时,判断接收到的数据中的应答数据块是否为管理块,否则触发所述更新模块;
所述第一发送接收单元,还用于当所述第七判断单元判断发送和接收失败时,向所述上位机返回错误信息;当所述第八判断单元判接收到的数据中的应 答数据块不为管理块时,向所述上位机返回错误信息。
23.根据权利要求19所述的读卡器,其特征在于,所述读卡器还包括第三判断模块,用于判断所述接收发送模块接收到的所述应答数据块是否为接收准备块,是则触发所述更新模块;
所述接收发送模块,还用于当所述第三判断模块判断所述应答数据块不为接收准备块时,向所述上位机返回错误信息。
24.根据权利要求23所述的读卡器,其特征在于,所述第三判断模块具体用于判断所述应答数据块中的协议控制字节的第一预设位置上的数据是否为第一预设值,是则确定所述应答数据块为接收准备块,否则确定所述应答数据块不为接收准备块。
25.根据权利要求23所述的读卡器,其特征在于,所述读卡器还包括第四判断模块,用于当所述第三判断模块判断所述应答数据块为接收准备块时,判断所述应答数据块中的块号与所述指令数据块中的块号是否相同,是则触发所述更新模块;
所述接收发送模块,还用于当所述第四判断模块判断所述应答数据块中的块号与所述指令数据块中的块号不相同时,向所述上位机返回错误信息。
26.根据权利要求25所述的读卡器,其特征在于,所述初始化模块还用于初始化重发次数;
所述读卡器还包括第五判断模块,用于当所述第四判断模块判断所述应答 数据块中的块号与所述指令数据块中的块号不相同时,判断所述重发次数是否达到最大发送次数,否则更新所述重发次数,触发所述第一判断模块;
所述接收发送模块,还用于当所述第五判断模块判断所述重发次数达到最大发送次数时向所述上位机返回错误信息;
所述更新模块,还用于初始化所述重发次数。
27.根据权利要求19所述的读卡器,其特征在于,所述更新模块,具体用于在所述接收发送模块发送所述指令数据块之后,切换当前块号,从当前指令数据的起始位置开始删除长度为预先协商的通信长度的数据,将删除之后的数据作为当前指令数据,触发所述第一组合模块。
28.根据权利要求25所述的读卡器,其特征在于,所述读卡器还包括第六判断模块,用于判断所述接收发送模块接收到的所述应答数据块是否为接收准备块,是则触发所述第四判断模块,否则触发所述获取模块。
29.根据权利要求28所述的读卡器,其特征在于,所述第六判断模块具体用于判断所述应答数据块中的协议控制字节的第一预设位置上的数据是否为第一预设值,是则确定所述应答数据块为接收准备块,否则确定所述应答数据块不为接收准备块。
30.根据权利要求28所述的读卡器,其特征在于,所述读卡器还包括第七判断模块,用于当所述第六判断模块判断所述应答数据块不为接收准备块时,判断所述应答数据块是否正确,是则触发所述获取模块;
所述接收发送模块,还用于当所述第七判断模块判断所述应答数据块不正确时,向所述上位机返回错误信息;
所述第三组合模块,具体用于将协议控制字节设置为接收准备块,根据当前块号设置所述协议控制字节中的块号,根据所述协议控制字节得到指令数据块。
31.根据权利要求30所述的读卡器,其特征在于,所述第七判断模块,具体用于对所述应答数据块进行检查,若所述应答数据块通过校验,且所述应答数据块为信息块,且所述应答数据块长度不为0,且所述应答数据块的块号与发送的所述指令数据块的块号相同,则确定所述应答数据块正确,否则确定所述应答数据块不正确。
32.根据权利要求19所述的读卡器,其特征在于,所述第二判断模块,具体用于判断所述应答数据块中的协议控制字节的第二预设位置上的数据是否为第二预设值,是则确定所述应答数据块带链接,否则确定所述应答数据块不带链接。
33.根据权利要求19所述的读卡器,其特征在于,所述第一组合单元,具体用于当所述第六判断单元判断所述应答数据块中的请求信息合法时,根据所述应答数据块中的请求信息更新延迟时间,将协议控制字节设置为管理块,对所述协议控制字节和所述应答信息进行校验,得到校验码,将所述协议控制字节、所述应答信息和所述校验码进行拼接,得到所述指令数据块。
34.根据权利要求22所述的读卡器,其特征在于,所述第七判断单元具体用于获取接收到的数据中的错误码,判断所述错误码是否为第三预设值,是则确定发送和接收成功,否则确定发送和接收不成功。
35.根据权利要求22所述的读卡器,其特征在于,所述第八判断单元具体用于判断所述应答数据块中的协议控制字节的第一预设位置上的数据是否为第四预设值,是则确定所述应答数据块为管理块,否则确定所述应答数据块不为管理块。
CN201510248878.1A 2015-05-15 2015-05-15 一种访问智能卡的方法和读卡器 Active CN104915616B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510248878.1A CN104915616B (zh) 2015-05-15 2015-05-15 一种访问智能卡的方法和读卡器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510248878.1A CN104915616B (zh) 2015-05-15 2015-05-15 一种访问智能卡的方法和读卡器

Publications (2)

Publication Number Publication Date
CN104915616A CN104915616A (zh) 2015-09-16
CN104915616B true CN104915616B (zh) 2017-11-28

Family

ID=54084674

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510248878.1A Active CN104915616B (zh) 2015-05-15 2015-05-15 一种访问智能卡的方法和读卡器

Country Status (1)

Country Link
CN (1) CN104915616B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105812099B (zh) * 2016-04-13 2019-03-05 飞天诚信科技股份有限公司 一种通过同步机制保证大数据通信稳定的方法及装置
CN106295767B (zh) * 2016-07-31 2019-03-15 飞天诚信科技股份有限公司 一种智能卡及其工作方法
CN107688760B (zh) * 2016-08-05 2020-04-21 李明 一种数据通讯方法及数据通讯系统
CN107689946B (zh) * 2016-08-05 2020-04-17 李明 一种数据通讯方法及数据通讯系统
US10609552B2 (en) 2016-08-05 2020-03-31 Tendyron Corporation System and method for data communication protection
CN106934310B (zh) * 2017-02-24 2019-09-13 飞天诚信科技股份有限公司 一种测试智能卡的方法及读卡器
CN110297800B (zh) * 2019-06-29 2021-06-08 飞天诚信科技股份有限公司 一种主控芯片与安全芯片之间稳定通信的实现方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365701A (zh) * 2013-07-10 2013-10-23 飞天诚信科技股份有限公司 一种模拟读卡器的工作方法和模拟通信系统
CN104268605A (zh) * 2014-08-21 2015-01-07 飞天诚信科技股份有限公司 一种操作智能sd卡和普通sd卡的读卡器及其工作方法
CN104573591A (zh) * 2015-01-05 2015-04-29 飞天诚信科技股份有限公司 一种安全读卡器及其工作方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365701A (zh) * 2013-07-10 2013-10-23 飞天诚信科技股份有限公司 一种模拟读卡器的工作方法和模拟通信系统
CN104268605A (zh) * 2014-08-21 2015-01-07 飞天诚信科技股份有限公司 一种操作智能sd卡和普通sd卡的读卡器及其工作方法
CN104573591A (zh) * 2015-01-05 2015-04-29 飞天诚信科技股份有限公司 一种安全读卡器及其工作方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
中国金融集成电路(IC卡)规范第3部分:与应用无关的IC卡与终端接口规范;中国人民银行发布;《中华人民共和国金融行业标准》;20130205;第30-40页 *

Also Published As

Publication number Publication date
CN104915616A (zh) 2015-09-16

Similar Documents

Publication Publication Date Title
CN104915616B (zh) 一种访问智能卡的方法和读卡器
CN103019788A (zh) 一种基于can总线的远程在线升级方法
CN104954502A (zh) 生产线中的mac地址更新方法和系统
CN101689983B (zh) 用于在无线电通信中改善重新排序功能的系统和方法
CN105338520A (zh) 一种实现一号多卡的方法和设备
CN108989103B (zh) 设备升级方法、调试器、网络设备和网络系统
CN101907998A (zh) 嵌入式系统的更新系统和方法
CN106790724A (zh) 配置文件下载方法和装置
CN109582331A (zh) 车载通信模块的升级方法、装置和系统
EP3493450B1 (en) Information processing method, communication device, and computer storage medium
CN102594893A (zh) 一种移动终端设备与计算机远程互控的方法及其系统
EP2830373A1 (en) Method and apparatus compatible with multi-version for storing wireless resource
US20140115194A1 (en) Data Card Updating Method, Personal Computer, and Data Card
CN102355480A (zh) 基于tftp的文件传输方法、系统、客户端和服务器
CN100372439C (zh) 用户终端运行安全模式的方法
CN100518210C (zh) 一种电子设备的操作控制方法及系统
CN106375064A (zh) 一种密码键盘usb通信异常恢复方法及系统
CN116055578B (zh) 一种轻量级的at协议栈、通信方法和系统
CN100414556C (zh) 一种主机与智能卡信息交互的方法和装置
CN104333856A (zh) 一种Java SIM卡转网的方法、SIM卡、服务器和系统
CN104902476A (zh) 一种蓝牙安全管理的控制方法
CN105530360B (zh) 双系统切换方法及终端
CN109951255A (zh) 一种基于tcp的数据传输方法、系统、源设备、及目标设备
US8638813B2 (en) Protocol parameter negotiation
CN108109626A (zh) 一种基于app语音识别控制的系统与方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant