一种操作智能sd卡和普通sd卡的读卡器及其工作方法

文档序号:6624193阅读:462来源:国知局
一种操作智能sd卡和普通sd卡的读卡器及其工作方法
【专利摘要】本发明为一种操作智能SD卡和普通SD卡的读卡器及其工作方法,属于通信领域。本发明提供的方法包括:读卡器向卡片发送绑定指令,读取指定地址中的数据,如果读取到的数据与绑定指令相同,则将所述卡片标识置为普通SD卡标识,检测置位的中断标志,当所述置位的中断标志是USB接收数据标志时,所述读卡器获取USB存储器中的数据,判断获取到的数据的指令类型,如果是智能SD卡通信指令,则读卡器与卡片进行通信;如果是存储通道指令,则根据所述卡片标识和所述存储通道指令执行相应操作。采用本方法,使读卡器能够对普通SD卡进行读写数据操作,并能够下发指令操作智能SD卡。
【专利说明】一种操作智能SD卡和普通SD卡的读卡器及其工作方法

【技术领域】
[0001]本发明涉及通信领域,特别涉及一种操作智能SD卡和普通SD卡的读卡器及其工作方法。

【背景技术】
[0002]目前,随着科技的发展,智能手机以及数码产品的得到广泛应用,SD卡作为一种基于半导体闪存工艺的存储卡,由于其具有大容量、高性能、安全、读写速度高达2M/秒等特点,现已成为智能手机以及数码产品中应用最广泛的一种存储卡。SD卡分为智能SD卡和普通SD卡两种,其中,智能SD卡中有智能芯片,集合了与设备进行数据和存储数据两部分功能;普通SD卡只具备存储数据的功能;
[0003]本发明人发现,现有技术中,智能SD卡只能应用于智能手机或数码产品,无法被读卡器操作。


【发明内容】

[0004]为了解决现有技术中存在的缺陷,本发明提出一种操作智能SD卡和普通SD卡的读卡器的工作方法,包括:
[0005]步骤S1:所述读卡器进行初始化,将卡片标识置为智能SD卡标识,读取指定地址中的数据,并将读取到的数据作为备份数据;
[0006]步骤S2:所述读卡器向卡片发送绑定指令,从所述指定地址中读取所述卡片返回的数据,判断所述卡片返回的数据与所述绑定指令是否相同,是则将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息,在接收到上位机下发的获取接口的配置信息指令时,将所述SCSI接口的配置信息发送给所述上位机,并执行步骤S3 ;否则定义CCID接口的配置信息和SCSI接口的配置信息,在接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和所述SCSI接口的配置信息发送给所述上位机,并执行步骤S3 ;
[0007]步骤S3:所述读卡器判断是否存在置位的中断标志,如果不存在置位的中断标志,则返回步骤S3 ;如果存在置位的中断标志,则判断所述置位的中断标志的类型,如果所述置位的中断标志是USB接收数据标志,则获取USB存储器中的数据,并对获取到的数据进行判断,如果是智能SD卡通信指令,则执行步骤S4 ;如果是存储通道指令,则执行步骤S5 ;
[0008]步骤S4:所述读卡器根据所述智能SD卡通信指令与所述卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给所述上位机,返回步骤S3 ;
[0009]步骤S5:所述读卡器根据所述卡片标识和所述存储通道指令,判断是否可以执行所述存储通道指令,是则执行所述存储通道指令,返回步骤S3 ;否则返回步骤S3。
[0010]所述步骤S2中,所述读卡器定义SCSI接口的配置信息之后,还包括:所述读卡器使能USB连接;
[0011 ] 所述步骤S2中,所述读卡器定义CCID接口的配置信息和SCSI接口的配置信息之后,还包括:所述读卡器使能USB连接;
[0012]所述步骤S3之前,还包括:
[0013]步骤S3-1:所述读卡器进行USB枚举,判断USB接口是否为连接状态,是则执行所述步骤S3 ;否则返回步骤S3-1。
[0014]所述读卡器进行初始化,包括:所述读卡器将卡槽状态置为无卡;
[0015]所述步骤S3,还包括:
[0016]如果所述置位的中断标志是卡到位标志,所述读卡器执行以下步骤:
[0017]步骤al:所述读卡器根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则执行步骤a2 ;如果是无卡,则执行步骤a3 ;
[0018]步骤a2:所述读卡器向上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,返回步骤S3 ;
[0019]步骤a3:所述读卡器向上位机发送无卡响应,并将所述卡槽状态保存为无卡,返回步骤S3。
[0020]所述智能SD卡通信指令为上电指令;
[0021]所述步骤S4,具体为:
[0022]步骤Cl:所述读卡器向所述卡片发送绑定指令;
[0023]步骤c2:所述读卡器从所述卡片中读取绑定响应数据,向所述卡片发送断开指令;
[0024]步骤c3:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送连接指令;
[0025]步骤c4:所述读卡器从所述卡片中读取连接响应数据,向所述卡片发送获取ATR指令;
[0026]步骤c5:所述读卡器从所述卡片中读取ATR响应数据,向所述上位机发送所述ATR响应数据,返回步骤S3。
[0027]所述读卡器进行初始化,还包括:将第一读取次数清零;
[0028]所述步骤c2,包括:
[0029]步骤c2_l:所述读卡器延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数;
[0030]步骤c2_2:所述读卡器判断所述第一读取次数是否小于预设值,是则执行步骤c2-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ;
[0031]步骤c2_3:所述读卡器判断是否成功读取所述绑定响应数据,是则执行步骤c2-4 ;否则返回步骤c2-l ;
[0032]步骤c2_4:所述读卡器将所述第一读取次数清零,向所述卡片发送断开指令,执行步骤c3。
[0033]所述读卡器进行初始化,包括:将第二读取次数清零;
[0034]所述步骤c3包括:
[0035]步骤c3_l:所述读卡器延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数;
[0036]步骤c3_2:所述读卡器判断所述第二读取次数是否小于预设值,是则执行步骤c3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ;
[0037]步骤c3_3:所述读卡器判断是否成功读取所述断开响应数据,是则执行步骤c3_4 ;否则返回步骤c3_l ;
[0038]步骤c3_4:所述读卡器将所述第二读取次数清零,向所述卡片发送连接指令,执行步骤c4。
[0039]所述读卡器进行初始化包括:将第三读取次数清零;
[0040]所述步骤c4,具体包括:
[0041]步骤c4_l:所述读卡器延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数;
[0042]步骤c4_2:所述读卡器判断所述第三读取次数是否小于预设值,是则执行步骤c4-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ;
[0043]步骤c4_3:所述读卡器判断是否成功读取所述连接响应数据,是则执行步骤c4-4 ;否则返回步骤c4-l ;
[0044]步骤c4_4:所述读卡器将所述第三读取次数清零,向所述卡片发送获取ATR指令,执行步骤c5。
[0045]所述读卡器进行初始化,包括:将第四读取次数清零;
[0046]所述步骤c5包括:
[0047]步骤c5_l:所述读卡器延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数;
[0048]步骤c5_2:所述读卡器判断所述第四读取次数是否小于预设值,是则执行步骤c5-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ;
[0049]步骤c5_3:所述读卡器判断是否成功读取所述ATR响应数据,是则执行步骤c5_4 ;否则返回步骤c5-l ;
[0050]步骤c5_4:所述读卡器将所述第四读取次数清零,向所述上位机发送所述ATR响应数据,返回步骤S3。
[0051]所述智能SD卡通信指令为下电指令;
[0052]所述步骤S4,具体为:
[0053]步骤dl:所述读卡器向所述卡片发送断开指令;
[0054]步骤d2:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送解锁绑定指令;
[0055]步骤d3:所述读卡器从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,返回步骤S3。
[0056]所述读卡器进行初始化包括:将第五读取次数清零;
[0057]所述步骤d3包括:
[0058]步骤d3-l:所述读卡器延时预设时间,从所述卡片中读取所述解锁绑定响应数据,更新所述第五读取次数;
[0059]步骤d3-2:所述读卡器判断所述第五读取次数是否小于预设值,是则执行步骤d3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ;
[0060]步骤d3-3:所述读卡器判断是否成功读取所述解锁绑定响应数据,是则执行步骤d3-4 ;否则返回步骤d3-l ;
[0061]步骤d3-4:所述读卡器将所述第五读取次数清零,向所述上位机发送下电成功信息,返回步骤S3。
[0062]所述读卡器进行初始化包括:将第六读取次数清零;
[0063]所述智能SD卡通信指令为数据交换指令;
[0064]所述步骤S4,具体为:
[0065]步骤bl:所述读卡器向所述卡片发送获取APDU指令;
[0066]步骤b2:所述读卡器延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数;
[0067]步骤b3:所述读卡器判断所述第六读取次数是否小于预设值,是则执行步骤b4 ;否则向所述上位机发送读取失败信息,返回步骤S3 ;
[0068]步骤b4:所述读卡器判断是否成功读取所述APDU响应数据,是则执行步骤b5 ;否则返回步骤b2 ;
[0069]步骤b5:所述读卡器将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机,返回步骤S3。
[0070]所述读卡器根据所述卡片标识和所述存储通道指令,判断是否可以执行所述存储通道指令,具体为:
[0071]所述读卡器获取所述存储通道指令的第一预设字节上的数据,将其作为目标地址,如果所述目标地址为所述指定地址,并且所述卡片标识是智能SD卡标识,则执行所述存储通道指令,返回步骤S3 ;否则返回步骤S3。
[0072]所述读卡器执行所述存储通道指令具体包括:
[0073]步骤el:所述读卡器根据所述存储通道指令的第二预设字节上的数据判断所述存储通道指令的类型,如果是读操作指令,则执行步骤e2 ;如果是写操作指令,则执行步骤e3 ;
[0074]步骤e2:所述读卡器读取所述目标地址中的数据,并将其发送给所述上位机,返回步骤S3 ;
[0075]步骤e3:所述读卡器获取所述存储通道指令的第三预设字节上的数据,将其作为待写数据长度,根据所述待写数据长度从所述存储通道指令中第三预设字节的下一字节开始获取待写数据,并且将其写入所述目标地址中,向所述上位机发送写操作完成信息,返回步骤S3。
[0076]一种操作智能SD卡和普通SD卡的读卡器的工作方法,包括:
[0077]步骤Wl:读卡器进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息,当所述读卡器接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机;
[0078]步骤W2:所述读卡器判断是否存在置位的中断标志,如果不存在置位的中断标志,则返回步骤W2 ;如果存在置位的中断标志,则判断所述置位的中断标志的类型,如果所述置位的中断标志是USB接收数据标志,则执行步骤W3 ;如果所述置位的中断标志是其他标志,则执行相应操作,返回步骤W2 ;
[0079]步骤W3:所述读卡器获取USB存储器中的数据,判断接收所述USB存储器中的数据的接口,如果是第一接口,则执行步骤W4 ;如果是第二接口,则执行步骤W5 ;
[0080]步骤W4:所述读卡器根据SCSI接口的配置信息对所述USB存储器中的数据执行相应操作,并生成操作码,向所述上位机发送所述操作码,返回步骤W2 ;
[0081]步骤W5:所述读卡器根据所述USB存储器中的数据与卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给所述上位机,返回步骤W2。
[0082]所述Wl与步骤W2之间,包括:所述读卡器使能USB连接;
[0083]所述步骤W2中,所述读卡器判断是否存在置位的中断标志,并判断置位的中断标志的类型之前,还包括:
[0084]步骤W2-1:所述读卡器进行USB枚举,判断USB接口是否为连接状态,是则所述读卡器判断是否存在置位的中断标志,并判断置位的中断标志的类型;否则返回步骤W2-1。
[0085]所述读卡器进行初始化,包括:将卡槽状态置为无卡;
[0086]当所述置位的中断标志的类型是卡到位标志时,所述读卡器执行以下步骤:
[0087]步骤kl:所述读卡器根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则执行步骤k2 ;如果是无卡,则执行步骤k3 ;
[0088]步骤k2:所述读卡器向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,返回步骤W2 ;
[0089]步骤k3:所述读卡器向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,返回步骤W2。
[0090]所述USB存储器中的数据为上电指令;
[0091]所述步骤W5,具体为:
[0092]步骤ml:所述读卡器向卡片发送绑定指令;
[0093]步骤m2:所述读卡器从所述卡片中读取绑定响应数据,向所述卡片发送断开指令;
[0094]步骤m3:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送连接指令;
[0095]步骤m4:所述读卡器从所述卡片中读取连接响应数据,向所述卡片发送获取ATR指令;
[0096]步骤m5:所述读卡器从所述卡片中读取ATR响应数据,向所述上位机发送所述ATR响应数据,返回步骤W2。
[0097]所述读卡器进行初始化,包括:将第一读取次数清零;
[0098]所述步骤m2包括:
[0099]步骤m2-l:所述读卡器延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数;
[0100]步骤Π12-2:所述读卡器判断所述第一读取次数是否小于预设值,是则执行步骤m2-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ;
[0101]步骤m2-3:所述读卡器判断是否成功读取所述绑定响应数据,是则执行步骤m2-4 ;否则返回步骤m2-l ;
[0102]步骤m2-4:所述读卡器将所述第一读取次数清零,向所述卡片发送断开指令,执行步骤m3。
[0103]所述读卡器进行初始化,包括:将第二读取次数清零;
[0104]所述步骤m3包括:
[0105]步骤m3-l:所述读卡器延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数;
[0106]步骤m3-2:所述读卡器判断所述第二读取次数是否小于预设值,是则执行步骤m3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ;
[0107]步骤m3-3:所述读卡器判断是否成功读取所述断开响应数据,是则执行步骤m3-4 ;否则返回步骤m3-l ;
[0108]步骤m3-4:所述读卡器将所述第二读取次数清零,向所述卡片发送连接指令,执行步骤m4。
[0109]所述读卡器进行初始化,包括:将第三读取次数清零;
[0110]所述步骤m4包括:
[0111]步骤m4-l:所述读卡器延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数;
[0112]步骤m4-2:所述读卡器判断所述第三读取次数是否小于预设值,是则执行步骤m4-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ;
[0113]步骤m4-3:所述读卡器判断是否成功读取所述连接响应数据,是则执行步骤m4-4 ;否则返回步骤m4-l ;
[0114]步骤m4_4:所述读卡器将所述第三读取次数清零,向所述卡片发送获取ATR指令,执行步骤m5。
[0115]所述读卡器进行初始化,包括:将第四读取次数清零;
[0116]所述步骤m5包括:
[0117]步骤m5-l:所述读卡器延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数;
[0118]步骤m5-2:所述读卡器判断所述第四读取次数是否小于预设值,是则执行步骤m5-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ;
[0119]步骤m5-3:所述读卡器判断是否成功读取所述ATR响应数据,是则执行步骤m5_4 ;否则返回步骤m5-l ;
[0120]步骤m5-4:所述读卡器将所述第四读取次数清零,向所述上位机发送所述ATR响应数据,返回步骤W2。
[0121]所述USB存储器中的数据为下电指令;
[0122]所述步骤W5,具体为:
[0123]步骤nl:所述读卡器向卡片发送断开指令;
[0124]步骤n2:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送解锁绑定指令;
[0125]步骤n3:所述读卡器从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,返回步骤W2。
[0126]所述读卡器进行初始化包括:将第五读取次数清零;
[0127]所述步骤n3包括:
[0128]步骤n3-l:所述读卡器延时预设时间,从所述卡片中读取所述解锁绑定响应数据,更新所述第五读取次数;
[0129]步骤n3-2:所述读卡器判断所述第五读取次数是否小于预设值,是则执行步骤n3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ;
[0130]步骤n3-3:所述读卡器判断所述解锁绑定响应数据是否读取成功,是则执行步骤n3-4 ;否则返回步骤n3-l ;
[0131]步骤n3-4:所述读卡器将所述第五读取次数清零,向所述上位机发送下电成功信息,返回步骤W2。
[0132]所述读卡器进行初始化包括:将第六读取次数清零;
[0133]所述所述USB存储器中的数据为数据交换指令;
[0134]所述步骤W5,具体为:
[0135]步骤11:所述读卡器向所述卡片发送获取APDU指令;
[0136]步骤12:所述读卡器延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数;
[0137]步骤13:所述读卡器判断所述第六读取次数是否小于预设值,是则执行步骤14 ;否则向所述上位机发送读取失败信息,返回步骤W2 ;
[0138]步骤14:所述读卡器判断所述APDU响应数据是否读取成功,是则执行步骤15 ;否则返回步骤12 ;
[0139]步骤15:所述读卡器将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机,返回步骤W2。
[0140]一种操作智能SD卡和普通SD卡的读卡器,包括:
[0141]初始化模块,用于进行初始化,将卡片标识置为智能SD卡标识;
[0142]读取模块,用于读取指定地址中的数据,并将读取到的数据作为备份数据,并触发第一处理模块;
[0143]第一处理模块,用于向卡片发送绑定指令,从所述指定地址中读取所述卡片返回的数据,并触发第一判断模块;
[0144]第一判断模块,用于判断所述卡片返回的数据与所述绑定指令是否相同;
[0145]第二处理模块,用于在所述第一判断模块判断所述卡片返回的数据与所述绑定指令相同时,将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息,并触发第一配置信息发送模块;
[0146]第一配置信息发送模块,用于当接收到上位机下发的获取接口的配置信息指令时,将所述SCSI接口的配置信息发送给所述上位机,并触发检测模块;
[0147]第三处理模块,用于在所述第一判断模块判断所述卡片返回的数据与所述绑定指令不相同时,定义CCID接口的配置信息和SCSI接口的配置信息,并触发第二配置信息发送模块;
[0148]第二配置信息发送模块,用于当接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机,并触发检测模块;
[0149]检测模块,用于判断是否存在置位的中断标志,并判断置位的中断标志的类型;
[0150]第一获取模块,用于在所述检测模块判断存在置位的中断标志,并且所述置位的中断标志是USB接收数据标志时,获取USB存储器中的数据,并触发第二判断模块;
[0151]第二判断模块,用于对所述第一获取模块获取到的数据进行判断;
[0152]第四处理模块,用于在所述第二判断模块判断获取到的数据为智能SD卡通信指令时,根据所述智能SD卡通信指令与所述卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给所述上位机,并触发所述检测模块;
[0153]第三判断模块,用于在所述第二判断模块判断获取到的数据的为存储通道指令时,根据所述卡片标识和所述存储通道指令判断是否可以执行所述存储通道指令;
[0154]第五处理模块,用于在所述第三判断模块判断可以执行所述存储通道指令时,执行所述存储通道指令,并触发所述检测模块。
[0155]还包括:
[0156]第一使能模块,用于在所述第二处理模块将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息时,使能USB连接,并触发第一配置信息发送模块;
[0157]第二使能模块,用于在所述第三处理模块定义CCID接口的配置信息和SCSI接口的配置信息时,使能USB连接,并触发第二配置信息发送模块;
[0158]第四判断模块,用于在所述第一配置信息发送模块将所述SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在当所述USB接口为连接状态时,触发检测模块;在所述第二配置信息发送模块将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在当所述USB接口为连接状态时,触发检测模块。
[0159]所述初始化模块,还用于将卡槽状态置为无卡;
[0160]还包括:第二获取模块,用于在所述检测模块检测到存在置位的中断标志,并且所述置位的中断标志为卡到位标志时,根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,并触发所述检测模块;如果是无卡,则向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,并触发所述检测模块。
[0161]第四处理模块,包括:
[0162]第一绑定子模块,用于在所述第二判断模块判断获取到的数据为上电指令时,向卡片发送绑定指令,从所述卡片中读取绑定响应数据,并触发第一断开子模块;
[0163]第一断开子模块,用于向所述卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第一连接子模块;
[0164]第一连接子模块,用于向所述卡片发送连接指令,从所述卡片中读取连接响应数据,并触发第一获取ATR子模块;
[0165]第一获取ATR子模块,用于向所述卡片发送获取ATR指令,从所述卡片中读取ATR响应数据,向所述上位机发送ATR响应数据,并触发所述检测模块。
[0166]所述初始化模块,用于将第一读取次数清零;
[0167]所述第一绑定子模块,包括:
[0168]第一发送绑定指令单元,用于在所述第二判断模块判断获取到的数据为上电指令时,向所述卡片发送绑定指令,延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数,并触发第一判断单元;
[0169]第一判断单元,用于判断所述第一读取次数是否小于预设值;
[0170]第二判断单元,用于在所述第一判断单元判断所述第一读取次数小于预设值时,判断是否成功读取所述绑定响应数据;
[0171]第一归零单元,用于在所述第二判断单元判断成功读取所述绑定响应数据时,将所述第一读取次数清零,并触发第一断开子模块。
[0172]所述初始化模块,还用于将第二读取次数清零;
[0173]所述第一断开子模块,包括:
[0174]第一发送断开指令单元,用于向所述卡片发送断开指令,延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数,并触发第三判断单元;
[0175]第三判断单元,用于判断所述第二读取次数是否小于预设值;
[0176]第四判断单元,用于在所述第三判断单元判断所述第二读取次数小于预设值时,判断是否成功读取所述断开响应数据;
[0177]第二归零单元,用于在所述第四判断单元判断成功读取所述断开响应数据时,将所述第二读取次数清零,并触发第一连接子模块。
[0178]所述初始化模块,还用于将第三读取次数清零;
[0179]所述第一连接子模块,具体包括:
[0180]第一发送连接指令单元,用于向所述卡片发送连接指令延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数,并触发第五判断单元;
[0181]第五判断单元,用于判断所述第三读取次数是否小于预设值;
[0182]第六判断单元,用于在所述第五判断单元,判断所述第三读取次数小于预设值时,判断是否成功读取所述连接响应数据;
[0183]第三归零单元,用于在所述第六判断单元判断成功读取所述连接响应数据时,将所述第三读取次数清零,并触发第一获取ATR子模块。
[0184]所述初始化模块,还用于将第四读取次数清零;
[0185]所述第一获取ATR子模块,具体包括:
[0186]第一发送获取ATR指令单元,用于向所述卡片发送获取ATR指令,延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数,并触发第七判断单元;
[0187]第七判断单元,用于判断所述第四读取次数是否小于预设值;
[0188]第八判断单元,用于在所述第七判断单元判断所述第四读取次数小于预设值时,判断是否成功读取所述ATR响应数据;
[0189]第四归零单元,用于在所述第八判断单元判断成功读取所述ATR响应数据时,将所述第四读取次数清零,向所述上位机发送ATR响应数据,并触发所述检测模块。
[0190]所述第四处理模块,包括:
[0191]第二断开子模块,用于在所述第二判断模块判断获取到的数据为下电指令时,向卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第一解锁绑定子模块;
[0192]第一解锁绑定子模块,用于向所述卡片发送解锁绑定指令,从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,并触发所述检测模块。
[0193]所述初始化模块,用于将第五读取次数清零;
[0194]所述第一解锁绑定子模块,包括:
[0195]第一发送解锁绑定指令单元,用于向所述卡片发送解锁绑定指令,延时预设时间,从所述卡片中读取解锁绑定响应数据,更新所述第五读取次数,并触发第九判断单元;
[0196]第九判断单元,用于判断所述第五读取次数是否小于预设值;
[0197]第十判断单元,用于在所述第九判断单元判断所述第五读取次数小于预设值时,判断是否成功读取所述解锁绑定响应数据;
[0198]第五归零单元,用于在所述第十判断单元判断成功读取所述解锁绑定响应数据时,将所述第五读取次数清零,向所述上位机发送下电成功信息,并触发所述检测模块。
[0199]所述初始化模块,还用于将第六读取次数清零;
[0200]所述读卡器还包括:
[0201]第六处理模块,具体用于在所述第四处理模块中所述智能SD卡通信指令为数据交换指令时,向所述卡片发送获取APDU指令,并触发第七处理模块;
[0202]第七处理模块,用于延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数,并触发第五判断模块;
[0203]第五判断模块,用于判断所述第六读取次数是否小于预设值;
[0204]第六判断模块,用于在所述第五判断模块判断所述第六读取次数小于预设值时,判断APDU响应数据是否读取成功;
[0205]第八处理模块,用于在所述第六判断模块判断APDU响应数据读取成功时,将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机,并触发检测模块。
[0206]所述第三判断模块,具体用于获取所述存储通道指令的第一预设字节上的数据,将其作为目标地址,如果所述目标地址为所述指定地址,并且所述卡片标识是智能SD卡标识,则确定不可以执行所述存储通道指令;否则确定可以执行所述存储通道指令。
[0207]所述第五处理模块,具体包括:
[0208]第五处理模块判断子模块,用于在所述第三判断模块判断可以执行所述存储通道指令时,根据所述存储通道指令的第二预设字节上的数据判断所述存储通道指令的类型;
[0209]第五处理模块读操作模块,用于在所述第五处理模块判断子模块判断存储通道指令是读操作指令时,读取所述目标地址中的数据,并将其发送给所述上位机,并触发所述检测模块;
[0210]第五处理模块写操作模块,用于在所述第五处理模块判断子模块判断存储通道指令是写操作指令时,获取所述存储通道指令的第三预设字节上的数据,将其作为待写数据长度,根据所述待写数据长度从所述存储通道指令中第三预设字节的下一字节开始获取待写数据,并且将其写入所述目标地址中,向所述上位机发送写操作完成信息,并触发所述检测模块。
[0211]一种操作智能SD卡和普通SD卡的读卡器,包括:
[0212]初始标志模块,用于进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息;
[0213]接口配置信息发送模块,用于在接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机,并触发判断中断模块;
[0214]判断中断模块,用于判断是否存在置位的中断标志,并判断置位的中断标志的类型;
[0215]第一中断处理模块,用于在所述判断中断模块判断存在置位的中断标志,并且置位的中断标志为USB接收数据标志时,获取USB存储器中的数据,并触发第一判断接口模块;
[0216]第一判断接口模块,用于判断接收所述USB存储器中的数据的接口 ;
[0217]第一接口处理模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第一接口时,根据所述SCSI接口的配置信息的所述USB存储器中的数据执行相应操作,并生成操作码,向上位机发送所述操作码,并触发所述判断中断模块;
[0218]第二接口处理模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,根据所述USB存储器中的数据与卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给上位机,并触发所述判断中断模块。
[0219]还包括:
[0220]使能连接模块,用于在所述初始标志模块进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息时,使能USB连接,并触发接口配置信息发送模块;
[0221]枚举判断模块,用于在所述接口配置信息发送模块将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在所述USB接口为连接状态时,触发判断中断模块。
[0222]所述初始标志模块,还用于将卡槽状态置为无卡;
[0223]还包括:操作模块,用于在所述判断中断模块判断存在置位的中断标志,并且置位的中断标识为卡到位标志时,根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,并触发所述判断中断模块;如果是无卡,则向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,触发所述判断中断模块。
[0224]所述第二接口处理模块,包括:
[0225]第一判断指令类型子模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据;
[0226]第一指令处理子模块,用于在所述第一判断指令类型子模块判断所述USB存储器中的数据为上电指令时,向卡片发送绑定指令,从所述卡片中读取绑定响应数据,并触发第二指令处理子模块;
[0227]第二指令处理子模块,用于向所述卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第三指令处理子模块;
[0228]第三指令处理子模块,用于向所述卡片发送连接指令,从所述卡片中读取连接响应数据,并触发第四指令处理子模块;
[0229]第四指令处理子模块,用于向所述卡片发送获取ATR指令,从所述卡片中读取ATR响应数据,向所述上位机发送所述ATR响应数据,并触发所述判断中断模块。
[0230]所述初始标志模块,还用于将第一读取次数清零;
[0231]所述第一指令处理子模块,包括:
[0232]第一发送绑定指令单元,用于第一判断指令类型子模块判断所述USB存储器中的数据为上电指令时,向所述卡片发送绑定指令,延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数,并触发第一判断单元;
[0233]第一判断单元,用于判断所述第一读取次数是否小于预设值;
[0234]第二判断单元,用于在所述第一判断单元判断所述第一读取次数小于预设值时,判断是否成功读取所述绑定响应数据;
[0235]第一归零单元,用于在所述第二判断单元判断成功读取所述绑定响应数据时,将所述第一读取次数清零,并触发第二指令处理子模块。
[0236]所述初始标志模块,还用于将第二读取次数清零;
[0237]所述第二指令处理子模块,具体包括:
[0238]第一发送断开指令单元,用于向所述卡片发送断开指令,延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数,并触发第三判断单元;
[0239]第三判断单元,用于判断所述第二读取次数是否小于预设值;
[0240]第四判断单元,用于在所述第三判断单元判断所述第二读取次数小于预设值时,判断是否成功读取所述断开响应数据;
[0241]第二归零单元,用于在所述第四判断单元判断成功读取所述断开响应数据时,将所述第二读取次数清零,并触发第三指令处理子模块。
[0242]所述初始标志模块,还用于将第三读取次数清零;
[0243]所述第三指令处理子模块,具体包括:
[0244]第一发送连接指令单元,用于向所述卡片发送连接指令延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数,并触发第五判断单元;
[0245]第五判断单元,用于判断所述第三读取次数是否小于预设值;
[0246]第六判断单元,用于在所述第五判断单元,判断所述第三读取次数小于预设值时,判断是否成功读取所述连接响应数据;
[0247]第三归零单元,用于在所述第六判断单元判断成功读取所述连接响应数据时,将所述第三读取次数清零,并触发第四指令处理子模块。
[0248]所述初始标志模块,还用于将第四读取次数清零;
[0249]所述第四指令处理子模块,具体包括:
[0250]第一发送获取ATR指令单元,用于向所述卡片发送获取ATR指令,延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数,并触发第七判断单元;
[0251]第七判断单元,用于判断所述第四读取次数是否小于预设值;
[0252]第八判断单元,用于在所述第七判断单元判断所述第四读取次数小于预设值时,判断是否成功读取所述ATR响应数据;
[0253]第四归零单元,用于在所述第八判断单元判断成功读取所述ATR响应数据时,将所述第四读取次数清零,向所述上位机发送ATR响应数据,并触发所述判断中断模块。
[0254]所述第二接口处理模块,还包括:
[0255]第二判断指令类型子模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据;
[0256]第五指令处理子模块,用于在所述第二判断指令类型子模块判断所述USB存储器中的数据为下电指令时,向卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第六指令处理子模块;
[0257]第六指令处理子模块,用于向所述卡片发送解锁绑定指令,从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,并触发所述判断中断模块。
[0258]所述初始标志模块,用于将第五读取次数清零;
[0259]所述第六指令处理子模块,包括:
[0260]第一发送解锁绑定指令单元,用于向所述卡片发送解锁绑定指令,延时预设时间,从所述卡片中读取解锁绑定响应数据,更新所述第五读取次数,并触发第九判断单元;
[0261]第九判断单元,用于判断所述第五读取次数是否小于预设值;
[0262]第十判断单元,用于在所述第九判断单元判断所述第五读取次数小于预设值时,判断是否成功读取所述解锁绑定响应数据;
[0263]第五归零单元,用于在所述第十判断单元判断成功读取所述解锁绑定响应数据时,将所述第五读取次数清零,向所述上位机发送下电成功信息,并触发所述判断中断模块。
[0264]所述第二接口处理模块,包括:
[0265]第三判断指令类型子模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据;
[0266]第七指令处理子模块,用于在所述第三判断指令类型子模块判断所述USB存储器中的数据为数据交换指令时,向卡片发送获取APDU指令,并触发第一读取子模块;
[0267]第一读取子模块,用于延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数,并触发第一判断子模块;
[0268]第一判断子模块,用于判断所述第六读取次数是否小于预设值;
[0269]第二判断子模块,用于在所述第一判断子模块判断所述第六读取次数小于预设值时,判断是否成功读取所述APDU响应数据;
[0270]第一发送子模块,用于在所述第二判断子模块,判断成功读取所述APDU响应数据时,将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机;
[0271]第二发送子模块,用于在所述第二判断子模块,判断成功读取所述APDU响应数据时,向所述上位机发送读取失败信息。
[0272]本发明的有益效果为,提供一种读卡器,能够识别与自身连接的SD卡的类型,能够对普通SD卡进行读写操作,能够在接收到上位机下发的指令时,向智能SD卡下发相应指令,并获取智能SD卡返回的响应,使智能SD卡的应用不再单纯依赖智能手机以及数码产品O

【专利附图】

【附图说明】
[0273]图1至图3为实施例1提供的一种操作智能SD卡和普通SD卡的读卡器的工作方法流程图;
[0274]图4至图5为实施例2提供的一种操作智能SD卡和普通SD卡的读卡器的工作方法流程图;
[0275]图6为实施例3提供的一种操作智能SD卡和普通SD卡的读卡器结构图。

【具体实施方式】
[0276]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0277]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步的详细描述。
[0278]实施例1
[0279]如图1至图3所示,本实施例1提供一种操作智能SD卡和普通SD卡的读卡器的工作方法,具体包括:
[0280]步骤101:读卡器进行初始化;
[0281]本实施例中,初始化时包括,读卡器将中断标志复位,将第一读取次数清零、第二读取次数清零、第三读取次数清零清零、第四读取次数清零、第五读取次数清零、第六读取次数清零,将卡槽状态初始置为无卡,将卡片标识置为智能SD卡标识;
[0282]步骤102:读卡器读取指定地址中的数据,并将其作为备份数据;
[0283]步骤103:读卡器向卡片发送绑定指令,从指定地址中读取卡片返回的数据,判断读取到的数据是否与绑定指令相同,是则执行步骤104 ;否则执行步骤105 ;
[0284]步骤104:读卡器将卡片标识置为普通SD卡标识,将备份数据写入指定地址,定义SCSI接口的配置信息,使能USB连接,当接收到上位机下发的获取接口的配置信息指令时,将SCSI接口的配置信息发送给上位机,执行步骤106 ;
[0285]本实施例中,读卡器可以定义CCID、SCS1、hid、AutoRom中的任意一个接口的配置信息,相应的,当接收到上位机下发的获取接口的配置信息指令时,将定义的接口的配置信息发送给上位机。
[0286]步骤105:读卡器定义CCID接口的配置信息和SCSI接口的配置信息,使能USB连接,当接收到上位机下发的获取接口的配置信息指令时,将CCID接口的配置信息和SCSI接口的配置信息发送给上位机,执行步骤106 ;
[0287]本实施例中,读卡器可以定义CCID、SCS1、hid、AutoRom中的任意两个接口的配置信息,相应的,当接收到上位机下发的获取接口的配置信息指令时,将定义的接口的配置信息发送给上位机。
[0288]步骤106:读卡器进行USB枚举判断USB接口是否为连接状态,是则执行步骤107 ;否则返回步骤106 ;
[0289]步骤107:读卡器判断是否存在置位的中断标志,是则执行步骤108 ;否则返回步骤 106 ;
[0290]步骤108:读卡器判断置位的中断标志的类型,如果是卡到位标志,则执行步骤109 ;如果是USB接收数据标志,则执行步骤112 ;如果是其他标志,则返回步骤106 ;
[0291]本实施例中,当读卡器检测到卡到位引脚电平发生变化时,进入插拔卡中断,将卡到位标志置位;当读卡器接收到数据时,进入USB接收数据中断,将USB接收数据标志置位,并将接收到的数据存储到读卡器的USB存储器中。
[0292]步骤109:读卡器根据卡到位引脚的电平判断卡槽状态,如果卡槽状态为有卡未上电,则执行步骤110 ;如果卡槽状态为无卡,则执行步骤111 ;
[0293]本实施例中,读卡器判断卡到位引脚的电平状态,如果是高电平,则卡槽状态为有卡未上电;如果是低电平,则卡槽状态为无卡;
[0294]步骤110:读卡器向上位机发送有卡响应,并将卡槽状态保存为有卡未上电,返回步骤106 ;
[0295]本实施例中,当读卡器检测到卡到位引脚的电平为高电平时,通过INT端点向上位机发送有卡响应。
[0296]步骤111:读卡器向上位机发送无卡响应,并将卡槽状态保存为无卡,返回步骤106 ;
[0297]本实施例中,当读卡器检测到卡到位引脚的电平为高电平时,通过INT端点向上位机发送有卡响应。
[0298]步骤112:读卡器获取USB存储器中的数据,执行步骤113 ;
[0299]本实施例中,读卡器以中断的方式接收数据,将接收到的数据保存在USB存储器中;
[0300]步骤113:读卡器判断获取到的数据是否合法,是则执行步骤115 ;否则执行步骤114 ;
[0301 ] 本实施例中,读卡器判读获取到的数据的第一字节是否为0x62或0x63或0x6f,是则表示获取到的数据合法,否则表示获取到的数据不合法;
[0302]步骤114:读卡器向上位机发送错误信息,返回步骤106 ;
[0303]步骤115:读卡器判断获取到的数据的指令类型,如果是上电指令,则执行步骤116 ;如果是下电指令,则执行步骤134 ;如果是数据交换指令,则执行步骤143 ;如果是存储通道指令,则执行步骤148;
[0304]本实施例中,读卡器根据获取到的数据的第一字节判断指令类型,
[0305]如果第一字节是0x62,则获取到的数据为上电指令,执行步骤116 ;
[0306]如果第一字节是0X63,则获取到的数据为下电指令,执行步骤134 ;
[0307]如果第一字节是0X6f,则获取到的数据为数据交换指令,执行步骤143 ;
[0308]如果第一字节为第一预设值,则获取到的数据为存储通道指令,执行步骤148 ;优选的,第一预设值为0x6B。
[0309]步骤116:读卡器向卡片发送绑定指令;
[0310]本实施例中,绑定指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,绑定指令的命令标识码为:
[0311]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj 0x19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj0x03,OxlBj 0x12 ;
[0312]绑定指令的发送序列计数器为:0x00,0x00 ;
[0313]绑定指令的命令码为:0χ00,0x02 ;
[0314]例如,读卡器向卡片发送绑定指令为:
[0315]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlA, 0x03,OxIBj 0x12,
[0316]0x00,0x00,0x00,0x02,0x00,0x00,0x02 ;即绑定指令中包含 O 字节的 APDU。
[0317]步骤117:读卡器延时预设时间,从卡片中读取绑定响应数据,更新第一读取次数;
[0318]优选的,预设时间为5毫秒。
[0319]本实施例中,读卡器读取到的绑定响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,绑定响应数据的响应标识码为:
[0320]0x060F19161F160C0B1F1F180E1A1903021F0C0412160F050D061BD051A130B121 ;
[0321]绑定响应数据的发送序列计数器为:0x00,0x00 ;
[0322]例如,读卡器读取到的绑定响应数据为:
[0323]0x06 0F19161F160C0B1F1F180E1A1903021F0C0412160F0 50D0 61BD051A130B12100000000000000 ;
[0324]步骤118:读卡器判断第一读取次数是否小于预设值,是则执行步骤119 ;否则执行步骤133 ;
[0325]优选的,预设值为30。
[0326]步骤119:读卡器判断绑定响应数据是否读取成功,是则执行步骤120 ;否则返回步骤117 ;
[0327]本实施例中,判断是否读取成功的方法具体为:
[0328]读卡器读取卡片中的绑定响应数据,根据读取到的绑定响应数据判断是否读取成功,具体地,读卡器获取读取到的绑定响应数据的第三十四至第三十五字节,将其作为通讯状态码,如果通讯状态码为0x00、0x00,则表示读取成功;否则表示读取失败。
[0329]步骤120:读卡器将第一读取次数清零,向卡片发送断开指令,执行步骤121 ;
[0330]本实施例中,断开指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,断开指令的命令标识码与绑定指令的命令标识码相同;断开指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0331]断开指令的命令码为:0x01, 0x01 ;
[0332]例如,读卡器向卡片发送断开指令为:
[0333]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj 0x19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj0x03,OxlBj 0x12,
[0334]0x00,0x00,0x01,0x01,0x00,0x00,0x00 ;即断开指令中包含 O 字节的 APDU。
[0335]步骤121:读卡器延时预设时间,从卡片中读取断开响应数据,更新第二读取次数;
[0336]本实施例中,读卡器读取到的断开响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,断开响应数据的响应标识码与绑定响应数据的响应标识码相同,
[0337]断开响应数据的发送序列计数器与断开指令的发送序列计数器相同;
[0338]例如,读卡器读取到的断开响应数据为:
[0339]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,
[0340]0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;
[0341]步骤122:读卡器判断第二读取次数是否小于预设值,是则执行步骤123 ;否则执行步骤133 ;
[0342]步骤123:读卡器判断断开响应数据是否读取成功,是则执行步骤124 ;否则返回步骤121 ;
[0343]本实施例中,判断是否读取成功的方法具体为:
[0344]读卡器读取卡片中的断开响应数据,根据读取到的断开响应数据判断是否读取成功,具体地,读卡器获取读取到的断开响应数据的第三十四至第三十五字节上的数据,将其作为通讯状态码,如果通讯状态码为0X00、0X00,则表示读取成功;否则表示读取失败。
[0345]步骤124:读卡器将第二读取次数清零,向卡片发送连接指令,执行步骤125 ;
[0346]本实施例中,连接指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,连接指令的命令标识码与绑定指令的命令标识码相同;连接指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0347]连接指令的命令码为:0χ01,0x02 ;
[0348]例如,读卡器向卡片发送连接指令为:
[0349]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj 0x03,OxIBj 0x12,
[0350]0x00,0x00,0x01,0x02,0x00,0x01,0x00,0x02 ;即连接指令中包含 I 字节的 APDU,APDU 为 0x00。
[0351]步骤125:读卡器延时预设时间,从卡片中读取连接响应数据,更新第三读取次数;
[0352]本实施例中,读卡器读取到的连接响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,连接响应数据的响应标识码与绑定响应数据的响应标识码相同;
[0353]连接响应数据的发送序列计数器与绑定响应数据的发送序列计数器相同;
[0354]例如,读卡器读取到的连接响应数据为:
[0355]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,
[0356]0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x20,0x26 ;
[0357]步骤126:读卡器判断第三读取次数是否小于预设值,是则执行步骤127 ;否则执行步骤133 ;
[0358]步骤127:读卡器判断连接响应数据是否读取成功,是则执行步骤128 ;否则返回步骤125 ;
[0359]本实施例中,判断是否读取成功的方法具体为:
[0360]读卡器读取卡片中的连接响应数据,根据读取到的连接响应数据判断是否读取成功,具体地,读卡器获取读取到的连接响应数据的第三十四至第三十五字节上的数据,将其作为通讯状态码,如果通讯状态码为0χ00、0χ00,则表示读取成功;否则表示读取失败。
[0361]本实施例中,当读取成功时,还包括:
[0362]读卡器获取连接响应数据的第三十八、第三十九字节上的数据,将获取到的数据作为当前发送序列计数器;
[0363]例如,读卡器获取到的连接响应数据的第三十八、第三十九字节上的数据为0x50,OxOO0
[0364]步骤128:读卡器将第三读取次数清零,向卡片发送获取ATR指令,执行步骤129 ;
[0365]本实施例中,获取ATR指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、I字节的字节校验码,其中,获取ATR指令的命令标识码与绑定指令的命令标识码相同;读卡器获取更新当前发送序列计数器,将更新后的当前发送序列计数器作为获取ATR指令的发送序列计数器;具体地,读卡器更新当前发送序列计数器的方法为,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器。
[0366]获取ATR指令的命令码为:0x01,0x03 ;
[0367]例如,当前送序列计数器为0x05,0x00,预设步长为1,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器,即获取ATR指令的发送序列计数器为0x50,0x01。
[0368]读卡器向卡片发送获取ATR指令为:
[0369]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Oxl9, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxOD, 0x15, OxlA, 0x03, OxlB, 0x12,
[0370]0x50, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00 ;即获取 ATR 指令中包含 O 字节的 APDU。
[0371]需要说明的是,读卡器向卡片发送连接指令,在卡片接收到连接指令后,卡片生成一个符合预设范围的随机数作为发送序列计数器,并将所述发送序列计数器作为卡片中连接响应数据的一部分,当读卡器读取完卡片中的连接响应数据时,从读取到的连接响应数据中获取发送序列计数器,并更新发送序列计数器,判断更新后的发送序列计数器是否符合预设范围,是则将更新后的发送序列计数器作为读卡器将要向卡片发送的下一条指令的发送序列计数器;否则将发送序列计数器更新为1,将更新后的发送序列计数器作为读卡器将要向卡片发送的下一条指令的发送序列计数器;
[0372]其中,读卡器将发送序列计数器与预设步长做加法运算的结果作为更新后的发送序列计数器。
[0373]步骤129:读卡器延时预设时间,从卡片中读取ATR响应数据,更新第四读取次数;
[0374]本实施例中,读卡器读取到的ATR响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,ATR响应数据的响应标识码与绑定响应数据的响应标识码相同,
[0375]ATR响应数据的发送序列计数器与获取ATR指令的发送序列计数器相同;
[0376]例如,读卡器读取到的ATR响应数据为:
[0377]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,
[0378]0x05,0x01,0x00,0x00,0x00,0x20,0x76,0χ5Ε, 0x37,0x16,0x2F, 0x56,OxOCj OxOB,OxEAj OxIFj 0x19,OxOBj OxIAj 0x19,0x03,0x05,0x4E,OxCEj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x46,OxIBj 0xD5, 0x71,0χΑ6, 0x40,OxBEj 0x53,0xE4 ;
[0379]步骤130:读卡器判断第四读取次数是否小于预设值,是则执行步骤131 ;否则执行步骤133 ;
[0380]步骤131:读卡器判断ATR响应数据是否读取成功,是则执行步骤132 ;否则返回步骤129 ;
[0381 ] 本实施例中,判断是否读取成功的方法具体为,
[0382]读卡器读取卡片中的ATR响应数据,根据读取到的ATR响应数据判断是否读取成功,具体地,读卡器获取读取到的ATR响应数据的第三十四至第三十五字节,将其作为通讯状态码,如果通讯状态码为0x00、0x00,则表示读取成功;否则表示读取失败。
[0383]步骤132:读卡器将第四读取次数清零,向上位机发送ATR响应数据,返回步骤106 ;
[0384]步骤133:读卡器向上位机发送读取失败信息,返回步骤106 ;
[0385]步骤134:读卡器向卡片发送断开指令;
[0386]本实施例中,本实施例中,断开指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,断开指令的命令标识码与绑定指令的命令标识码相同;断开指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0387]断开指令的命令码为:0x01, 0x01 ;
[0388]例如,读卡器向卡片发送断开指令为:
[0389]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj 0x03,OxIBj 0x12,
[0390]0x00,0x00,0x01,0x01,0x00,0x00,0x00 ;即断开指令中包含 O 字节的 APDU。
[0391]步骤135:读卡器延时预设时间,从卡片中读取断开响应数据,更新第二读取次数;
[0392]本实施例中,读卡器读取到的断开响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,断开响应数据的响应标识码与绑定响应数据的响应标识码相同,
[0393]断开响应数据的发送序列计数器与断开指令的发送序列计数器相同;
[0394]例如,读卡器读取到的断开响应数据为:
[0395]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;
[0396]步骤136:读卡器判断第二读取次数是否小于预设值,是则执行步骤137 ;否则读卡器向上位机发送读取失败信息,返回步骤106 ;
[0397]步骤137:读卡器判断断开响应数据是否读取成功,是则执行步骤138 ;否则返回步骤135 ;
[0398]本实施例中,判断是否读取成功的方法与步骤123相同。
[0399]步骤138:读卡器将第二读取次数清零,向卡片发送解锁绑定指令,执行步骤139 ;
[0400]本实施例中,解锁绑定指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,解锁绑定指令的命令标识码与绑定指令的命令标识码相同;解锁绑定指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0401]解锁绑定指令的命令码为:0x00,0x03 ;
[0402]例如,读卡器向卡片发送解锁绑定指令为:
[0403]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Oxl9, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxOD, 0x15, OxlA, 0x03,OxlB, 0x12,0x00,0x00,0x00,0x03,0x00,0x00,0x03 ;即解锁绑定指令中包含 O 字节的ATOU。
[0404]步骤139:读卡器延时预设时间,从卡片中读取解锁绑定响应数据,更新第五读取次数;
[0405]本实施例中,读卡器读取到的解锁绑定响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,解锁绑定响应数据的响应标识码与绑定响应数据的响应标识码相同;
[0406]解锁绑定响应数据的发送序列计数器与绑定响应数据的发送序列计数器相同;
[0407]例如,读卡器读取到的解锁绑定响应数据为:
[0408]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,0x00,0x00,0x00,0x00,0x00,0x14 ;
[0409]步骤140:读卡器判断第五读取次数是否小于预设值,是则执行步骤141 ;否则读卡器向上位机发送读取失败信息,返回步骤106 ;
[0410]步骤141:读卡器判断断开响应数据是否读取成功,是则执行步骤142 ;否则返回步骤139 ;
[0411]本实施例中,判断是否读取成功的方法具体为:
[0412]读卡器读取卡片中的解锁绑定响应数据,根据读取到的解锁绑定响应数据判断是否读取成功,具体地,读卡器获取读取到的解锁绑定响应的第三十四至第三十五字节,将其作为通讯状态码,如果通讯状态码为0χ00、0χ00,则表示读取成功;否则表示读取失败。
[0413]步骤142:读卡器将第五读取次数清零,向上位机发送下电成功信息,返回步骤106 ;
[0414]步骤143:读卡器向卡片发送获取APDU指令;
[0415]本实施例中,获取APDU指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、I字节的字节校验码,其中,获取APDU指令的命令标识码与绑定指令的命令标识码相同;读卡器获取当前发送序列计数器,更新当前发送序列计数器,将更新后的发送序列计数器作为获取APDU指令的发送序列计数器;
[0416]具体地,读卡器更新当前发送序列计数器的方法为,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器。
[0417]获取APDU指令的命令码为:0x01,0x04 ;
[0418]例如,当前送序列计数器为0x05,0x01,预设步长为1,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器,即获取ATR指令的发送序列计数器为0x50,0x02。
[0419]读卡器向卡片发送获取APDU指令为:
[0420]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Oxl9, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxOD, 0x15, OxlA, 0x03, OxlB, 0x12,
[0421]0x05, 0x02, 0x01, 0x04, 0x00, 0x40, 0x51, OxOF, 0x18, 0x16, OxlF, 0x24, 0x84, OxEC,0x24, 0x5F, 0x09, 0x02, OxlB, 0x3C, 0x03, OxOb, OxlF, 0x04, 0x31, 0x15, 0x23, 0x9A, 0x7C, 0x14, 0x06, OxlB, OxOD, 0x15, 0x34, 0x40, OxlC, 0x42, 0x5C, 0x4F, 0x78, 0x34, 0x15, 0x62,0x36, 0xE2, 0x62, 0x51, 0x09, 0x02, OxlB, 0x3C, 0x18, OxlF, 0x04, 0x31, 0x15, 0x2E, 0x4A, Ox7D, 0x32, 0x17, 0x5B, OxOD, 0x28, 0x36, 0x41, 0x38, 0x22 ;
[0422]步骤144:读卡器延时预设时间,从卡片中读取APDU响应数据,更新第六读取次数;
[0423]本实施例中,读卡器读取到的卡片中的APDU响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,APDU响应数据的响应标识码与绑定响应数据的响应标识码相同,APDU响应数据的发送序列计数器与获取APDU指令的发送序列计数器相同;
[0424]例如,读卡器读取到的卡片中的APDU响应数据为:
[0425]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,
[0426]0x05,0x02,0x00,0x00,0x00,0x38,0x84,OxECj 0x24,0x5F, 0x09,0x02,OxlBj Ox3C,0x03,OxObj 0χΑ3, 0x14,0x38,0x15,0x23,0x9A, 0x7C, 0x14,0x06,OxlBj OxODj 0x26,0x34, 0x3A, OxlCj 0x42,0x5C, 0x4F, 0x78,0x34,0x37,0x62,0x36,0χΕ2, 0x62,0x51,0x09,0x02,0x74,0x3C, 0x39,
[0427]OxlFj 0x90,0x31,0x15,0x2E, 0x4A, 0x4D, 0x53,0x17,0χ5Β, 0x81,0χ2Α, 0x36,0x41,0χ5Ε,0x48 ;
[0428]步骤145:读卡器判断第六读取次数是否小于预设值,是则执行步骤146 ;否则读卡器向上位机发送读取失败信息,返回步骤106 ;
[0429]步骤146:读卡器判断APDU响应数据是否读取成功,是则执行步骤147 ;否则返回步骤144 ;
[0430]本实施例中,判断是否读取成功的方法具体为,
[0431]读卡器读取卡片中的APDU响应数据,根据读取到的APDU响应数据判断是否读取成功,具体地,读卡器获取APDU响应数据的第三十四至第三十五字节,将其作为通讯状态码,如果通讯状态码为0x00、0x00,则表示读取成功;否则表示读取失败。
[0432]步骤147:读卡器将第六读取次数清零,将APDU响应数据,发送给上位机,返回步骤 106 ;
[0433]步骤148:读卡器获取存储通道指令的第一预设字节上的数据将其作为目标地址,判断目标地址是否为指定地址,是则执行步骤149 ;否则执行步骤151 ;
[0434]本实施例中,第一预设字节为存储通道指令的第十二至十五字节。判断存储通道指令的第十二至第十五字节上的数据是否为第二预设值,如果是则执行步骤149 ;否则执行步骤151 ;优选的,第二预设值为0x07862208。
[0435]步骤149:读卡器判断卡片标识是否为智能SD卡标识,是则执行步骤150 ;否则执行步骤151 ;
[0436]本实施例中,步骤148至步骤149还可以为,
[0437]步骤148’:读卡器判断卡片标识是否为智能SD卡标识,是则执行步骤149’ ;否则执行步骤151 ;
[0438]步骤149’:读卡器获取存储通道指令的第一预设字节上的数据将其作为目标地址,判断目标地址是否为指定地址,是则执行步骤150 ;否则执行步骤151 ;
[0439]步骤150:读卡器向上位机发送不能向目标地址写入数据,返回步骤106 ;
[0440]步骤151:读卡器根据存储通道指令的第二预设字节判断存储通道指令的类型,如果是读操作指令,则执行步骤152 ;如果是写操作指令,则执行步骤153 ;
[0441]本实施例中,第二预设字节为存储通道指令的第十一字节,如果是存储通道指令的第十一字节上的数据为第三预设值,则存储通道指令为读操作指令,执行步骤152 ;如果存储通道指令的第十一字节上的数据为第四预设值,则存储通道指令为写操作指令;优选的,第三预设值为0x01 ;第四预设值为0x02。
[0442]步骤152:读卡器读取目标地址中的数据,并将其发送给上位机,返回步骤106 ;
[0443]本实施例中,读卡器获取扩展指令的第三预设字节上的数据,将其作为待读取数据的长度,读卡器从目标地址中读取长度等于待读取数据的长度的数据。优选的,第三预设字节为存储通道指令的第十六字节。
[0444]步骤153:读卡器获取存储通道指令的第三预设字节上的数据,将其作为待写数据长度,根据待写数据长度从存储通道指令中第三预设字节之后下一字节开始获取待写数据,并且将其写入目标地址中,向上位机发送写操作完成信息,返回步骤106。
[0445]本实施例中,读卡器从获取存储通道指令的第三预设字节后开始获取长度为待写数据长度的数据,将其作为待写数据。
[0446]实施例2
[0447]如图4至图5所示,本实施例2提供一种操作智能SD卡和普通SD卡的读卡器的工作方法,具体包括:
[0448]步骤201:读卡器进行初始化;
[0449]本实施例中,初始化时包括,读卡器将中断标志复位,将第一读取次数清零、第二读取次数清零、第三读取次数清零清零、第四读取次数清零、第五读取次数清零、第六读取次数清零,将卡槽状态初始置为无卡;
[0450]步骤202:读卡器定义CCID的配置信息和SCSI接口的配置信息,使能USB连接,当接收到上位机下发的获取接口配置信息指令时,将CCID的配置信息和SCSI接口的配置信息发送给上位机;
[0451]步骤203:读卡器进行USB枚举并判断USB是否为连接状态,是则执行步骤204 ;否则返回步骤203 ;
[0452]步骤204:读卡器判断是否存在置位的中断标志,是则执行步骤205 ;否则返回步骤 203 ;
[0453]步骤205:读卡器判断置位的中断标志的类型,如果是卡到位标志,则执行步骤206 ;如果是USB接收数据标志,则执行步骤209 ;如果是其他标志,则返回步骤203 ;
[0454]本实施例中,当读卡器检测到卡到位引脚电平发生变化时,进入插拔卡中断,将卡到位标志置位;当读卡器接收到数据时,进入USB接收数据中断,将USB接收数据标志置位,并将接收到的数据存储到读卡器的USB存储器中。
[0455]步骤206:读卡器根据卡到位引脚的电平判断卡槽状态,如果是有卡未上电,则执行步骤207 ;如果无卡,则执行步骤208 ;
[0456]本实施例中,读卡器根据卡到位引脚的电平判断卡槽状态具体为,如果卡到位引脚为高电平则卡槽状态为有卡未上电;如果卡到位引脚为低电平则卡槽状态为无卡。
[0457]步骤207:读卡器向上位机发送有卡响应,并将卡槽状态保存为有卡未上电,返回步骤203 ;
[0458]本实施例中,当读卡器检测到卡到位引脚的电平为高电平时,通过INT端点向上位机发送有卡响应。
[0459]步骤208:读卡器向上位机发送无卡响应,并将卡槽状态保存为无卡,返回步骤203 ;
[0460]本实施例中,当读卡器检测到卡到位引脚的电平为高电平时,通过INT端点向上位机发送有卡响应。
[0461]步骤209:读卡器获取USB存储器中的数据,判断接收USB存储器中的数据的接口,如果是第一接口,则执行步骤210 ;如果是第二接口,则执行步骤212 ;
[0462]本实施例中,读卡器以中断的方式接收数据,将接收到的数据保存在USB存储器中;
[0463]步骤210:读卡器根据SCSI接口的配置信息,对获取到的数据执行相应操作,并生成操作码;
[0464]本实施例中,读卡器判断获取到的数据的第二预设字节上的数据,如果是第二预设字节上的数据为第三预设值,则读卡器获取获取到的数据的第一预设字节,将其作为目标地址,读取目标地址中的数据;如果第二预设字节上的数据为第四预设值,则读卡器获取获取到的数据的第三预设字节,将其作为待写数据长度,根据待写数据长度从获取到的数据的第三预设字节后一字节开始获取待写数据,并将其写入目标地址中;
[0465]优选的,第二预设字节为获取到的数据的第十一字节,第三预设字节为获取到的数据的第十六字节;第三预设值为0x01 ;第四预设值为0x02。
[0466]步骤211:读卡器向上位机发送操作码,返回步骤203 ;
[0467]本实施例中,如果获取到的数据的第二预设字节为第三预设值,读卡器将读取到的数据作为操作码发送给上位机;如果获取到的数据的第四预设值,则读卡器在将待写数据写入目标地址之后生成写操作完成信息,将其作为操作码发送给上位机。
[0468]步骤212:读卡器判断获取到的数据的指令类型,如果是上电指令,则执行步骤213 ;如果是下电指令,则执行步骤231 ;如果是数据交换指令,则执行步骤240 ;
[0469]本实施例中,读卡器根据获取到的数据的第一字节判断指令类型,
[0470]如果第一字节是0x62,则获取到的数据为上电指令,执行步骤213 ;
[0471]如果第一字节是0X63,则获取到的数据为下电指令,执行步骤231 ;
[0472]如果第一字节是0X6f,则获取到的数据是数据交换指令,则执行步骤240 ;
[0473]步骤213:读卡器向智能SD卡发送绑定指令;
[0474]本实施例中,绑定指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,绑定指令的命令标识码为:
[0475]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj 0x03,OxIBj 0x12 ;
[0476]绑定指令的发送序列计数器为:0x00,0x00 ;
[0477]绑定指令的命令码为:0x00,0x02 ;
[0478]例如,读卡器向智能SD卡发送绑定指令为:
[0479]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj 0x03,OxIBj 0x12,
[0480]0x00,0x00,0x00,0x02,0x00,0x00,0x02 ;即绑定指令中包含 O 字节的 APDU。
[0481]步骤214:读卡器延时预设时间,从智能SD卡中读取绑定响应数据,更新第一读取次数;
[0482]优选的,预设时间为5毫秒。
[0483]本实施例中,读卡器读取到的绑定响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,绑定响应数据的响应标识码为:
[0484]0x060F19161F160C0B1F1F180E1A1903021F0C0412160F050D061BD051A130B121 ;
[0485]绑定响应数据的发送序列计数器为:0x00,0x00 ;
[0486]例如,读卡器读取到的绑定响应数据为:
[0487]0x060F19161F160C0B1F1F180E1A1903021F0C0412160F050D061BD051A130B12100000000000000 ;
[0488]步骤215:读卡器判断第一读取次数是否小于预设值,是则执行步骤216 ;否则执行步骤230 ;
[0489]优选的,预设值为30。
[0490]步骤216:读卡器判断绑定响应数据是否读取成功,是则执行步骤217 ;否则返回步骤214 ;
[0491]本实施例中,判断是否读取成功的方法具体为:
[0492]读卡器读取智能SD卡中的绑定响应数据,根据读取到的绑定响应数据判断是否读取成功,具体地,读卡器获取读取到的绑定响应数据的第三十四至第三十五字节,将其作为通讯状态码,如果通讯状态码为0χ00、0χ00,则表示读取成功;否则表示读取失败。
[0493]步骤217:读卡器将第一读取次数清零,向智能SD卡发送断开指令,执行步骤218 ;
[0494]本实施例中,断开指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,断开指令的命令标识码与绑定指令的命令标识码相同;断开指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0495]断开指令的命令码为:0x01,0x01 ;
[0496]例如,读卡器向智能SD卡发送断开指令为:
[0497]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj 0x03,OxIBj 0x12,
[0498]0x00,0x00,0x01,0x01,0x00,0x00,0x00 ;即断开指令中包含 O 字节的 APDU。
[0499]步骤218:读卡器延时预设时间,从智能SD卡中读取断开响应数据,更新第二读取次数;
[0500]本实施例中,读卡器读取到的断开响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,断开响应数据的响应标识码与绑定响应数据的响应标识码相同,
[0501]断开响应数据的发送序列计数器与断开指令的发送序列计数器相同;
[0502]例如,读卡器读取到的断开响应数据为:
[0503]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,
[0504]0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;
[0505]步骤219:读卡器判断第二读取次数是否小于预设值,是则执行步骤220 ;否则执行步骤230 ;
[0506]步骤220:读卡器判断断开响应数据是否读取成功,是则执行步骤221 ;否则返回步骤218 ;
[0507]本实施例中,判断是否读取成功的方法具体为:
[0508]读卡器读取智能SD卡中的断开响应数据,根据读取到的断开响应数据判断是否读取成功,具体地,读卡器获取读取到的断开响应数据的第三十四至第三十五字节上的数据,将其作为通讯状态码,如果通讯状态码为0X00、0X00,则表示读取成功;否则表示读取失败。
[0509]步骤221:读卡器将第二读取次数清零,向智能SD卡发送连接指令,执行步骤222 ;
[0510]本实施例中,连接指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,连接指令的命令标识码与绑定指令的命令标识码相同;连接指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0511]连接指令的命令码为:0x01,0x02 ;
[0512]例如,读卡器向智能SD卡发送连接指令为:
[0513]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Oxl9, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxOD, 0x15, OxlA, 0x03, OxlB, 0x12,
[0514]0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x02 ;即连接指令中包含 I 字节的 APDU,APDU 为 0x00。
[0515]步骤222:读卡器延时预设时间,从智能SD卡中读取连接响应数据,更新第三读取次数;
[0516]本实施例中,读卡器读取到的连接响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,连接响应数据的响应标识码与绑定响应数据的响应标识码相同;
[0517]连接响应数据的发送序列计数器与绑定响应数据的发送序列计数器相同;例如,读卡器读取到的连接响应数据为:
[0518]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Ox19, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxDO, 0x51, OxAl, 0x30, OxBl, 0x21,
[0519]0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x00, 0x20, 0x26 ;
[0520]步骤223:读卡器判断第三读取次数是否小于预设值,是则执行步骤224 ;否则执行步骤230 ;
[0521]步骤224:读卡器判断连接响应数据是否读取成功,是则执行步骤225 ;否则返回步骤222 ;
[0522]本实施例中,判断是否读取成功的方法具体为:
[0523]读卡器读取智能SD卡中的连接响应数据,根据读取到的连接响应数据判断是否读取成功,具体地,读卡器获取读取到的连接响应数据的第三十四至第三十五字节,将其作为通讯状态码,如果通讯状态码为0χ00、0χ00,则表示读取成功;否则表示读取失败。
[0524]本实施例中,当读取成功时,还包括:
[0525]读卡器获取连接响应数据的第三十八、第三十九字节上的数据,将获取到的数据作为当前发送序列计数器;
[0526]例如,读卡器获取到的连接响应数据的第三十八、第三十九字节上的数据为0x50,OxOO0
[0527]步骤225:读卡器将第三读取次数清零,向智能SD卡发送获取ATR指令,执行步骤
226 ;
[0528]本实施例中,获取ATR指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、I字节的字节校验码,其中,获取ATR指令的命令标识码与绑定指令的命令标识码相同;读卡器获取更新当前发送序列计数器,将更新后的当前发送序列计数器作为获取ATR指令的发送序列计数器;具体地,读卡器更新当前发送序列计数器的方法为,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器。
[0529]获取ATR指令的命令码为:0x01,0x03 ;
[0530]例如,当前送序列计数器为0x05,0x00,预设步长为1,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器,即获取ATR指令的发送序列计数器为0x50,0x01。
[0531 ] 读卡器向智能SD卡发送获取ATR指令为:
[0532]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Oxl9, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxOD, 0x15, OxlA, 0x03, OxlB, 0x12,
[0533]0x50, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00 ;即获取 ATR 指令中包含 O 字节的 APDU。
[0534]需要说明的是,读卡器向智能SD卡发送连接指令,在智能SD卡接收到连接指令后,智能SD卡生成一个符合预设范围的随机数作为发送序列计数器,并将所述发送序列计数器作为智能SD卡中连接响应数据的一部分,当读卡器读取完智能SD卡中的连接响应数据时,从读取到的连接响应数据中获取发送序列计数器,并更新发送序列计数器,判断更新后的发送序列计数器是否符合预设范围,是则将更新后的发送序列计数器作为读卡器将要向智能SD卡发送的下一条指令的发送序列计数器;否则将发送序列计数器更新为1,将更新后的发送序列计数器作为读卡器将要向智能SD卡发送的下一条指令的发送序列计数器;
[0535]其中,读卡器将发送序列计数器与预设步长做加法运算的结果作为更新后的发送序列计数器。
[0536]步骤226:读卡器延时预设时间,从智能SD卡中读取ATR响应数据,更新第四读取次数;
[0537]本实施例中,读卡器读取到的ATR响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,ATR响应数据的响应标识码与绑定响应数据的响应标识码相同,
[0538]ATR响应数据的发送序列计数器与获取ATR指令的发送序列计数器相同;
[0539]例如,读卡器读取到的ATR响应数据为:
[0540]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Ox19, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxDO, 0x51, OxAl, 0x30, OxBl, 0x21,
[0541]0x05, 0x01, 0x00, 0x00, 0x00, 0x20, 0x76, 0x5E, 0x37, 0x16, 0x2F, 0x56, OxOC, OxOB, OxEA, OxlF, 0x19, OxOB, OxlA, 0x19, 0x03, 0x05, 0x4E, OxCE, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x46, OxlB, 0xD5, 0x71, 0xA6, 0x40, OxBE, 0x53, 0xE4 ;
[0542]步骤227:读卡器判断第四读取次数是否小于预设值,是则执行步骤228 ;否则执行步骤230 ;
[0543]步骤228:读卡器判断ATR响应数据是否读取成功,是则执行步骤229 ;否则返回步骤226 ;
[0544]本实施例中,判断是否读取成功的方法具体为,
[0545]读卡器读取智能SD卡中的ATR响应数据,根据读取到的ATR响应数据判断是否读取成功,具体地,读卡器获取读取到的ATR响应数据的第三十四至第三十五字节上的数据,将其作为通讯状态码,如果通讯状态码为0X00、0X00,则表示读取成功;否则表示读取失败。
[0546]步骤229:读卡器将第四读取次数清零,向上位机发送ATR响应数据,返回步骤203 ;
[0547]步骤230:读卡器向上位机发送读取失败信息,返回步骤203 ;
[0548]步骤231:读卡器向智能SD卡发送断开指令;
[0549]本实施例中,本实施例中,断开指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,断开指令的命令标识码与绑定指令的命令标识码相同;断开指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0550]断开指令的命令码为:0x01,0x01 ;
[0551]例如,读卡器向智能SD卡发送断开指令为:
[0552]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj 0x03,OxIBj 0x12,
[0553]0x00,0x00,0x01,0x01,0x00,0x00,0x00 ;即断开指令中包含 O 字节的 APDU。
[0554]步骤232:读卡器延时预设时间,从智能SD卡中读取断开响应数据,更新第二读取次数;
[0555]本实施例中,读卡器读取到的断开响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,断开响应数据的响应标识码与绑定响应数据的响应标识码相同,
[0556]断开响应数据的发送序列计数器与断开指令的发送序列计数器相同;
[0557]例如,读卡器读取到的断开响应数据为:
[0558]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00 ;
[0559]步骤233:读卡器判断第二读取次数是否小于预设值,是则执行步骤234 ;否则读卡器向上位机发送读取失败信息,返回步骤203 ;
[0560]步骤234:读卡器判断断开响应数据是否读取成功,是则执行步骤235 ;否则返回步骤232 ;
[0561]本实施例中,判断是否读取成功的方法与步骤220相同。
[0562]步骤235:读卡器将第二读取次数清零,向智能SD卡发送解锁绑定指令,执行步骤
236 ;
[0563]本实施例中,解锁绑定指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、1字节的字节校验码,其中,解锁绑定指令的命令标识码与绑定指令的命令标识码相同;解锁绑定指令的发送序列计数器与绑定指令的发送序列计数器相同;
[0564]解锁绑定指令的命令码为:0x00,0x03 ;
[0565]例如,读卡器向智能SD卡发送解锁绑定指令为:
[0566]0x06, OxOF, 0x19, 0x16, OxlF, 0x16, OxOC, OxOB, OxlF, OxlF, 0x18, OxOE, OxlA, Oxl9, 0x03, 0x02, OxlF, OxOC, 0x04, 0x12, 0x16, OxOF, 0x05, OxOD, 0x06, OxlB, OxOD, 0x15, OxlA, 0x03,OxlB, 0x12,0x00,0x00,0x00,0x03,0x00,0x00,0x03 ;即解锁绑定指令中包含 O 字节的ATOU。
[0567]步骤236:读卡器延时预设时间,从智能SD卡中读取解锁绑定响应数据,更新第五读取次数;
[0568]本实施例中,读卡器读取到的解锁绑定响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,解锁绑定响应数据的响应标识码与绑定响应数据的响应标识码相同;
[0569]解锁绑定响应数据的发送序列计数器与绑定响应数据的发送序列计数器相同;
[0570]例如,读卡器读取到的解锁绑定响应数据为:
[0571]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,0x00,0x00,0x00,0x00,0x00,0x14 ;
[0572]步骤237:读卡器判断第五读取次数是否小于预设值,是则执行步骤238 ;否则读卡器向上位机发送读取失败信息,返回步骤203 ;
[0573]步骤238:读卡器判断解锁绑定响应数据是否读取成功,是则执行步骤239 ;否则返回步骤236 ;
[0574]本实施例中,判断是否读取成功的方法具体为:
[0575]读卡器读取智能SD卡中的解锁绑定响应数据,根据读取到的解锁绑定响应数据判断是否读取成功,具体地,读卡器获取读取到的解锁绑定响应的第三十四至第三十五字节上的数据,将其作为通讯状态码,如果通讯状态码为0X00、0X00,则表示读取成功;否则表示读取失败。
[0576]步骤239:读卡器将第五读取次数清零,向上位机发送下电成功信息,返回步骤203 ;
[0577]步骤240:读卡器向智能SD卡发送获取APDU指令;
[0578]本实施例中,获取APDU指令包含32字节的命令标识码、2字节的发送序列计数器、2字节的命令码、2字节的命令长度、若干字节的APDU、I字节的字节校验码,其中,获取APDU指令的命令标识码与绑定指令的命令标识码相同;读卡器获取当前发送序列计数器,更新当前发送序列计数器,将更新后的发送序列计数器作为获取APDU指令的发送序列计数器;
[0579]具体地,读卡器更新当前发送序列计数器的方法为,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器。
[0580]获取APDU指令的命令码为:0x01,0x04 ;
[0581]例如,当前送序列计数器为0x05,0x01,预设步长为1,读卡器将当前发送序列计数器与预设步长做加法运算的结果作为更新后的当前发送序列计数器,即获取ATR指令的发送序列计数器为0x50,0x02。
[0582]读卡器向智能SD卡发送获取APDU指令为:
[0583]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Oxl9,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxODj 0x15,OxlAj 0x03,OxIBj 0x12,
[0584]0x05,0x02,0x01,0x04,0x00,0x40,0x51,OxOFj 0x18,0x16,OxlFj 0x24,0x84,OxEC,0x24,0x5F, 0x09,0x02,OxlBj 0x3C, 0x03,OxObj OxlF,0x04,0x31,0x15,0x23,0x9A, 0x7C,0x14,0x06,OxlBj OxODj 0x15,0x34,0x40,OxlCj 0x42,0x5C, 0x4F, 0x78,0x34,0x15,0x62,Ox36,0xE2, 0x62,0x51,0x09,0x02,OxlBj 0x3C, 0x18,OxlFj 0x04,0x31,0x15,0x2E, 0x4A, 0x7D,0x32,0x17,0x5B, OxODj 0x28,0x36,0x41,0x38,0x22 ;
[0585]步骤241:读卡器延时预设时间,从智能SD卡中读取APDU响应数据,更新第六读取次数;
[0586]本实施例中,读卡器读取到的智能SD卡中的APDU响应数据包含,32字节的响应标识码、2字节的发送序列计数器、2字节的通讯状态码、2字节的响应数据长度,若干字节的响应数据、I字节的字节校验码;其中,APDU响应数据的响应标识码与绑定响应数据的响应标识码相同,APDU响应数据的发送序列计数器与获取APDU指令的发送序列计数器相同;
[0587]例如,读卡器读取到的智能SD卡中的APDU响应数据为:
[0588]0x06,OxOFj 0x19,0x16,OxIFj 0x16,OxOCj OxOBj OxIFj OxIFj 0x18,OxOEj OxIAj Ox19,0x03,0x02,OxlFj OxOCj 0x04,0x12,0x16,OxOFj 0x05,OxODj 0x06,OxlBj OxDOj 0x51,OxAl,0x30,OxBlj 0x21,
[0589]0x05,0x02,0x00,0x00,0x00,0x38,0x84,OxECj 0x24,0x5F, 0x09,0x02,OxlBj Ox3C,0x03,OxObj 0χΑ3, 0x14,0x38,0x15,0x23,0x9A, 0x7C, 0x14,0x06,OxlBj OxODj 0x26,0x34, 0x3A, OxlCj 0x42,0x5C, 0x4F, 0x78,0x34,0x37,0x62,0x36,0χΕ2, 0x62,0x51,0x09,0x02,0x74,0x3C, 0x39,
[0590]OxlFj 0x90,0x31,0x15,0x2E, 0x4A, 0x4D, 0x53,0x17,0χ5Β, 0x81,0χ2Α, 0x36,0x41,0χ5Ε,0x48 ;
[0591]步骤242:读卡器判断第六读取次数是否小于预设值,是则执行步骤243 ;否则读卡器向上位机发送读取失败信息,返回步骤203 ;
[0592]步骤243:读卡器判断APDU响应数据是否读取成功,是则执行步骤244 ;否则返回步骤230 ;
[0593]本实施例中,判断是否读取成功的方法具体为,
[0594]读卡器读取智能SD卡中的APDU响应数据,根据读取到的APDU响应数据判断是否读取成功,具体地,读卡器获取APDU响应数据的第三十四至第三十五字节上的数据,将其作为通讯状态码,如果通讯状态码为0χ00、0χ00,则表示读取成功;否则表示读取失败。
[0595]步骤244:读卡器将第六读取次数清零,将APDU响应数据,发送给上位机,返回步骤 203。
[0596]实施例3
[0597]本实施例提供一种操作智能SD卡和普通SD卡的读卡器,如图6所示,包括:
[0598]初始化模块301,用于进行初始化,将卡片标识置为智能SD卡标识,将卡槽状态置为无卡,将第一读取次数清零,将第二读取次数清零,将第三读取次数清零,将第四读取次数清零,将第五读取次数清零,将第六读取次数清零;
[0599]读取模块302,用于读取指定地址中的数据,并将读取到的数据作为备份数据,并触发第一处理模块303 ;
[0600]第一处理模块303,用于向卡片发送绑定指令,从所述指定地址中读取卡片返回的数据,并触发第一判断模块304 ;
[0601]第一判断模块304,用于判断所述卡片返回的数据与所述绑定指令是否相同;
[0602]第二处理模块305,用于在所述第一判断模块304判断所述卡片返回的数据与所述绑定指令相同时,将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息,并触发第一配置信息发送模块306 ;
[0603]第一配置信息发送模块306,用于当接收到上位机下发的获取接口的配置信息指令时,将所述SCSI接口的配置信息发送给所述上位机,并触发检测模块309 ;
[0604]第三处理模块307,用于在所述第一判断模块304判断所述卡片返回的数据与所述绑定指令不相同时,定义CCID接口的配置信息和SCSI接口的配置信息,并触发第二配置信息发送模块308 ;
[0605]第二配置信息发送模块308,用于当接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机,并触发检测模块309 ;
[0606]检测模块309,用于判断是否存在置位的中断标志,并判断置位的中断标志的类型;
[0607]第一获取模块310,用于在所述检测模块309判断存在置位的中断标志,并且所述置位的中断标志是USB接收数据标志时,获取USB存储器中的数据,并触发第二判断模块312 ;
[0608]第二获取模块311,用于在所述检测模块309判断存在置位的中断标志,并且所述置位的中断标志是其他标志时,执行相应操作,并触发所述检测模块309 ;
[0609]本实施例中,所述第二获取模块311,具体用于在所述检测模块309检测到存在置位的中断标志,并且所述置位的中断标志为卡到位标志时,根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,并触发所述检测模块309 ;如果是无卡,则向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,并触发所述检测模块309。
[0610]第二判断模块312,用于对所述第一获取模块310获取到的数据进行判断;
[0611]第四处理模块313,用于在所述第二判断模块312判断获取到的数据为智能SD卡通信指令时,根据所述智能SD卡通信指令与所述卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给所述上位机,并触发所述检测模块309 ;
[0612]本实施例中,第四处理模块313,包括:
[0613]第一绑定子模块Q1,用于在所述第二判断模块312判断获取到的数据为上电指令时,向卡片发送绑定指令,从所述卡片中读取绑定响应数据,并触发第一断开子模块Q2 ;
[0614]所述第一绑定子模块Q1,包括:
[0615]第一发送绑定指令单元Q1-1,用于在所述第二判断模块312判断获取到的数据为上电指令时,向所述卡片发送绑定指令,延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数,并触发第一判断单元Q1-2 ;
[0616]第一判断单元Q1-2,用于判断所述第一读取次数是否小于预设值;
[0617]第二判断单元Q1-3,用于在所述第一判断单元Q1-2判断所述第一读取次数小于预设值时,判断是否成功读取所述绑定响应数据;
[0618]第一归零单元Q1-4,用于在所述第二判断单元Q1-3判断成功读取所述绑定响应数据时,将所述第一读取次数清零,并触发第一断开子模块Q2。
[0619]第一断开子模块Q2,用于向所述卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第一连接子模块Q3 ;
[0620]所述第一断开子模块Q2,包括:
[0621]第一发送断开指令单元Q2-1,用于向所述卡片发送断开指令,延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数,并触发第三判断单元Q2-2 ;
[0622]第三判断单元Q2-2,用于判断所述第二读取次数是否小于预设值;
[0623]第四判断单元Q2-3,用于在所述第三判断单元Q2-2判断所述第二读取次数小于预设值时,判断是否成功读取所述断开响应数据;
[0624]第二归零单元Q2-4,用于在所述第四判断单元Q2-3判断成功读取所述断开响应数据时,将所述第二读取次数清零,并触发第一连接子模块Q3。
[0625]第一连接子模块Q3,用于向所述卡片发送连接指令,从所述卡片中读取连接响应数据,并触发第一获取ATR子模块Q4 ;
[0626]所述第一连接子模块Q3,具体包括:
[0627]第一发送连接指令单元Q3-1,用于向所述卡片发送连接指令延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数,并触发第五判断单元Q3-2 ;
[0628]第五判断单元Q3-2,用于判断所述第三读取次数是否小于预设值;
[0629]第六判断单元Q3-3,用于在所述第五判断单元Q3-2,判断所述第三读取次数小于预设值时,判断是否成功读取所述连接响应数据;
[0630]第三归零单元Q3-4,用于在所述第六判断单元Q3-3判断成功读取所述连接响应数据时,将所述第三读取次数清零,并触发第一获取ATR子模块Q4。
[0631 ] 第一获取ATR子模块Q4,用于向所述卡片发送获取ATR指令,从所述卡片中读取ATR响应数据,向所述上位机发送ATR响应数据,并触发所述检测模块309。
[0632]所述第一获取ATR子模块Q4,具体包括:
[0633]第一发送获取ATR指令单元Q4-4,用于向所述卡片发送获取ATR指令,延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数,并触发第七判断单元Q4-4;
[0634]第七判断单元Q4-4,用于判断所述第四读取次数是否小于预设值;
[0635]第八判断单元Q4-4,用于在所述第七判断单元Q4-4判断所述第四读取次数小于预设值时,判断是否成功读取所述ATR响应数据;
[0636]第四归零单元Q4-4,用于在所述第八判断单元Q4-4判断成功读取所述ATR响应数据时,将所述第四读取次数清零,向所述上位机发送ATR响应数据,并触发所述检测模块309。
[0637]第二断开子模块Q5,用于在所述第二判断模块312判断获取到的数据为下电指令时,向卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第一解锁绑定子模块Q6 ;
[0638]第一解锁绑定子模块Q6,用于向所述卡片发送解锁绑定指令,从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,并触发所述检测模块309。
[0639]所述第一解锁绑定子模块Q6,包括:
[0640]第一发送解锁绑定指令单元Q6-1,用于向所述卡片发送解锁绑定指令,延时预设时间,从所述卡片中读取解锁绑定响应数据,更新所述第五读取次数,并触发第九判断单元Q6-2 ;
[0641]第九判断单元Q6-2,用于判断所述第五读取次数是否小于预设值;
[0642]第十判断单元Q6-3,用于在所述第九判断单元Q6-2判断所述第五读取次数小于预设值时,判断是否成功读取所述解锁绑定响应数据;
[0643]第五归零单元Q6-4,用于在所述第十判断单元Q6-3判断成功读取所述解锁绑定响应数据时,将所述第五读取次数清零,向所述上位机发送下电成功信息,并触发所述检测模块309。
[0644]第三判断模块314,用于在所述第二判断模块312判断获取到的数据的为存储通道指令时,根据所述卡片标识和所述存储通道指令判断是否可以执行所述存储通道指令;
[0645]本实施例中,所述第三判断模块314,具体用于获取所述存储通道指令的第一预设字节上的数据,将其作为目标地址,如果所述目标地址为所述指定地址,并且所述卡片标识是智能SD卡标识,则确定不可以执行所述存储通道指令;否则确定可以执行所述存储通道指令。
[0646]第五处理模块315,用于在所述第三判断模块314判断可以执行所述存储通道指令时,执行所述存储通道指令,并触发所述检测模块309。
[0647]本实施例中,所述第五处理模块315,具体包括:
[0648]第五处理模块判断子模块R1,用于在所述第三判断模块314判断可以执行所述存储通道指令时,根据所述存储通道指令的第二预设字节上的数据判断所述存储通道指令的类型;
[0649]第五处理模块读操作模块R2,用于在所述第五处理模块判断子模块Rl判断存储通道指令是读操作指令时,读取所述目标地址中的数据,并将其发送给所述上位机,并触发检测模块309 ;
[0650]第五处理模块写操作模块R3,用于在所述第五处理模块判断子模块Rl判断存储通道指令是写操作指令时,获取所述存储通道指令的第三预设字节上的数据,将其作为待写数据长度,根据所述待写数据长度从所述存储通道指令中第三预设字节的下一字节开始获取待写数据,并且将其写入所述目标地址中,向所述上位机发送写操作完成信息,并触发检测模块309。
[0651]第一使能模块316,用于在所述第二处理模块305将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息时,使能USB连接,并触发第一配置信息发送模块306 ;
[0652]第一使能模块317,用于在所述第三处理模块307定义CCID接口的配置信息和SCSI接口的配置信息时,使能USB连接,并触发第二配置信息发送模块308 ;
[0653]第四判断模块318,用于在所述第一配置信息发送模块306将所述SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在当所述USB接口为连接状态时,触发检测模块309 ;在所述第二配置信息发送模块308将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在当所述USB接口为连接状态时,触发检测模块309。
[0654]第六处理模块319,具体用于在所述第四处理模块313中所述智能SD卡通信指令为数据交换指令时,向所述卡片发送获取APDU指令,并触发第七处理模块320 ;
[0655]第七处理模块320,用于延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数,并触发第五判断模块321 ;
[0656]第五判断模块321,用于判断所述第六读取次数是否小于预设值;
[0657]第六判断模块322,用于在所述第五判断模块321判断所述第六读取次数小于预设值时,判断APDU响应数据是否读取成功;
[0658]第八处理模块323,用于在所述第六判断模块322判断APDU响应数据读取成功时,将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机,并触发检测模块309。
[0659]实施例4
[0660]本实施例提供一种操作智能SD卡和普通SD卡的读卡器,包括:
[0661 ] 初始标志模块401,用于进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息,将卡槽状态置为无卡,将第一读取次数清零,将第二读取次数清零,将第三读取次数清零,将第四读取次数清零,将第五读取次数清零;
[0662]接口配置信息发送模块402,用于在接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机,并触发判断中断模块403 ;
[0663]判断中断模块403,用于判断是否存在置位的中断标志,并判断置位的中断标志的类型;
[0664]第一中断处理模块404,用于在所述判断中断模块403判断存在置位的中断标志,并且置位的中断标志为USB接收数据标志时,获取USB存储器中的数据,并触发第一判断接口模块406 ;
[0665]操作模块405,用于在所述判断中断模块403判断存在置位的中断标志,并且置位的中断标志为其他标志时,执行相应操作,并触发所述判断中断模块403 ;
[0666]本实施例中,所述操作模块405,具体用于在所述判断中断模块403判断存在置位的中断标志,并且置位的中断标识为卡到位标志时,根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,并触发所述判断中断模块403 ;如果是无卡,则向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,触发所述判断中断模块403。
[0667]第一判断接口模块406,用于判断接收所述USB存储器中的数据的接口 ;
[0668]第一接口处理模块407,用于在所述第一判断接口模块406判断接收USB存储器中的数据的接口是第一接口时,根据所述SCSI接口的配置信息的所述USB存储器中的数据执行相应操作,并生成操作码,向上位机发送所述操作码,并触发所述判断中断模块403 ;
[0669]第二接口处理模块408,用于在所述第一判断接口模块406判断接收USB存储器中的数据的接口是第二接口时,根据所述USB存储器中的数据与卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给上位机,并触发所述判断中断模块403。
[0670]本实施例中,所述第二接口处理模块408,包括:
[0671]第一判断指令类型子模块,用于在所述第一判断接口模块406判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据;
[0672]第一指令处理子模块,用于在所述第一判断指令类型子模块判断所述USB存储器中的数据为上电指令时,向卡片发送绑定指令,从所述卡片中读取绑定响应数据,并触发第二指令处理子模块;
[0673]本实施例中,所述第一指令处理子模块与实施例3中的第一绑定子模块相同。
[0674]第二指令处理子模块,用于向所述卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第三指令处理子模块;
[0675]本实施例中,所述第二指令处理子模块与实施例3中的第一断开子模块相同。
[0676]第三指令处理子模块,用于向所述卡片发送连接指令,从所述卡片中读取连接响应数据,并触发第四指令处理子模块;
[0677]本实施例中,所述第三指令处理子模块与实施例3中的第一连接子模块相同。
[0678]第四指令处理子模块,用于向所述卡片发送获取ATR指令,从所述卡片中读取ATR响应数据,向所述上位机发送所述ATR响应数据,并触发所述判断中断模块403。
[0679]本实施例中,所述第四指令处理子模块与实施例3中的第一获取ATR子模块相同。
[0680]第二判断指令类型子模块,用于在所述第一判断接口模块406判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据;
[0681]第五指令处理子模块,用于在所述第二判断指令类型子模块判断所述USB存储器中的数据为下电指令时,向卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第六指令处理子模块;
[0682]第六指令处理子模块,用于向所述卡片发送解锁绑定指令,从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,并触发所述判断中断模块403。
[0683]本实施例中,所述第六指令处理子模块与实施例3中的第一解锁绑定子模块相同。
[0684]第七指令处理子模块,用于在所述第三判断指令类型子模块判断所述USB存储器中的数据为数据交换指令时,向卡片发送获取APDU指令,并触发第一读取子模块;
[0685]第一读取子模块,用于延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数,并触发第一判断子模块;
[0686]第一判断子模块,用于判断所述第六读取次数是否小于预设值;
[0687]第二判断子模块,用于在所述第一判断子模块判断所述第六读取次数小于预设值时,判断是否成功读取所述APDU响应数据;
[0688]第一发送子模块,用于在所述第二判断子模块,判断成功读取所述APDU响应数据时,将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机;
[0689]第二发送子模块,用于在所述第二判断子模块,判断成功读取所述APDU响应数据时,向所述上位机发送读取失败信息。
[0690]使能连接模块409,用于在所述初始标志模块401进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息时,使能USB连接,并触发接口配置信息发送模块402 ;
[0691]枚举判断模块410,用于在所述接口配置信息发送模块402将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在所述USB接口为连接状态时,触发判断中断模块403。
[0692]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种操作智能SD卡和普通SD卡的读卡器的工作方法,其特征在于,包括: 步骤S1:所述读卡器进行初始化,将卡片标识置为智能SD卡标识,读取指定地址中的数据,并将读取到的数据作为备份数据; 步骤S2:所述读卡器向卡片发送绑定指令,从所述指定地址中读取所述卡片返回的数据,判断所述卡片返回的数据与所述绑定指令是否相同,是则将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息,在接收到上位机下发的获取接口的配置信息指令时,将所述SCSI接口的配置信息发送给所述上位机,并执行步骤S3 ;否则定义CCID接口的配置信息和SCSI接口的配置信息,在接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和所述SCSI接口的配置信息发送给所述上位机,并执行步骤S3 ; 步骤S3:所述读卡器判断是否存在置位的中断标志,如果不存在置位的中断标志,则返回步骤S3 ;如果存在置位的中断标志,则判断所述置位的中断标志的类型,如果所述置位的中断标志是USB接收数据标志,则获取USB存储器中的数据,并对获取到的数据进行判断,如果是智能SD卡通信指令,则执行步骤S4 ;如果是存储通道指令,则执行步骤S5 ; 步骤S4:所述读卡器根据所述智能SD卡通信指令与所述卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给所述上位机,返回步骤S3 ; 步骤S5:所述读卡器根据所述卡片标识和所述存储通道指令,判断是否可以执行所述存储通道指令,是则执行所述存储通道指令,返回步骤S3 ;否则返回步骤S3。
2.如权利要求1所述的方法,其特征在于,所述步骤S2中,所述读卡器定义SCSI接口的配置信息之后,还包括:所述读卡器使能USB连接; 所述步骤S2中,所述读卡器定义CCID接口的配置信息和SCSI接口的配置信息之后,还包括:所述读卡器使能USB连接; 所述步骤S3之前,还包括: 步骤S3-1:所述读卡器进行USB枚举,判断USB接口是否为连接状态,是则执行所述步骤S3 ;否则返回步骤S3-1。
3.如权利要求1所述的方法,其特征在于,所述读卡器进行初始化,包括:所述读卡器将卡槽状态置为无卡; 所述步骤S3,还包括: 如果所述置位的中断标志是卡到位标志,所述读卡器执行以下步骤: 步骤al:所述读卡器根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则执行步骤a2 ;如果是无卡,则执行步骤a3 ; 步骤a2:所述读卡器向上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,返回步骤S3 ; 步骤a3:所述读卡器向上位机发送无卡响应,并将所述卡槽状态保存为无卡,返回步骤S3。
4.如权利要求1所述的方法,其特征在于,所述智能SD卡通信指令为上电指令; 所述步骤S4,具体为: 步骤Cl:所述读卡器向所述卡片发送绑定指令; 步骤c2:所述读卡器从所述卡片中读取绑定响应数据,向所述卡片发送断开指令; 步骤c3:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送连接指令; 步骤c4:所述读卡器从所述卡片中读取连接响应数据,向所述卡片发送获取ATR指令; 步骤c5:所述读卡器从所述卡片中读取ATR响应数据,向所述上位机发送所述ATR响应数据,返回步骤S3。
5.如权利要求4所述的方法,其特征在于,所述读卡器进行初始化,还包括:将第一读取次数清零; 所述步骤c2,包括: 步骤c2-l:所述读卡器延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数; 步骤c2-2:所述读卡器判断所述第一读取次数是否小于预设值,是则执行步骤c2-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ; 步骤c2-3:所述读卡器判断是否成功读取所述绑定响应数据,是则执行步骤c2-4 ;否则返回步骤c2-l ; 步骤c2-4:所述读卡器将所述第一读取次数清零,向所述卡片发送断开指令,执行步骤c3。
6.如权利要求4所述的方法,其特征在于,所述读卡器进行初始化,包括:将第二读取次数清零; 所述步骤c3包括: 步骤c3-l:所述读卡器延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数; 步骤c3-2:所述读卡器判断所述第二读取次数是否小于预设值,是则执行步骤c3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ; 步骤c3-3:所述读卡器判断是否成功读取所述断开响应数据,是则执行步骤c3-4 ;否则返回步骤c3-l ; 步骤c3-4:所述读卡器将所述第二读取次数清零,向所述卡片发送连接指令,执行步骤c4。
7.如权利要求4所述的方法,其特征在于,所述读卡器进行初始化包括:将第三读取次数清零; 所述步骤c4,具体包括: 步骤c4-l:所述读卡器延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数; 步骤c4-2:所述读卡器判断所述第三读取次数是否小于预设值,是则执行步骤c4-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ; 步骤c4-3:所述读卡器判断是否成功读取所述连接响应数据,是则执行步骤c4-4 ;否则返回步骤c4-l ; 步骤c4-4:所述读卡器将所述第三读取次数清零,向所述卡片发送获取ATR指令,执行步骤c5。
8.如权利要求4所述的方法,其特征在于,所述读卡器进行初始化,包括:将第四读取次数清零; 所述步骤c5包括: 步骤c5-l:所述读卡器延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数; 步骤c5-2:所述读卡器判断所述第四读取次数是否小于预设值,是则执行步骤c5-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ; 步骤c5-3:所述读卡器判断是否成功读取所述ATR响应数据,是则执行步骤c5-4 ;否则返回步骤c5-l ; 步骤c5-4:所述读卡器将所述第四读取次数清零,向所述上位机发送所述ATR响应数据,返回步骤S3。
9.如权利要求1所述的方法,其特征在于,所述智能SD卡通信指令为下电指令; 所述步骤S4,具体为: 步骤dl:所述读卡器向所述卡片发送断开指令; 步骤d2:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送解锁绑定指令; 步骤d3:所述读卡器从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,返回步骤S3。
10.如权利要求9所述的方法,其特征在于,所述读卡器进行初始化包括:将第五读取次数清零; 所述步骤d3包括: 步骤d3-l:所述读卡器延时预设时间,从所述卡片中读取所述解锁绑定响应数据,更新所述第五读取次数; 步骤d3-2:所述读卡器判断所述第五读取次数是否小于预设值,是则执行步骤d3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤S3 ; 步骤d3-3:所述读卡器判断是否成功读取所述解锁绑定响应数据,是则执行步骤d3-4 ;否则返回步骤d3-l ; 步骤d3-4:所述读卡器将所述第五读取次数清零,向所述上位机发送下电成功信息,返回步骤S3。
11.如权利要求1所述的方法,其特征在于,所述读卡器进行初始化包括:将第六读取次数清零; 所述智能SD卡通信指令为数据交换指令; 所述步骤S4,具体为: 步骤bl:所述读卡器向所述卡片发送获取APDU指令; 步骤b2:所述读卡器延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数; 步骤b3:所述读卡器判断所述第六读取次数是否小于预设值,是则执行步骤b4 ;否则向所述上位机发送读取失败信息,返回步骤S3 ; 步骤b4:所述读卡器判断是否成功读取所述APDU响应数据,是则执行步骤b5 ;否则返回步骤b2 ; 步骤b5:所述读卡器将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机,返回步骤S3。
12.如权利要求1所述的方法,其特征在于, 所述读卡器根据所述卡片标识和所述存储通道指令,判断是否可以执行所述存储通道指令,具体为: 所述读卡器获取所述存储通道指令的第一预设字节上的数据,将其作为目标地址,如果所述目标地址为所述指定地址,并且所述卡片标识是智能SD卡标识,则执行所述存储通道指令,返回步骤S3 ;否则返回步骤S3。
13.如权利要求12所述的方法,其特征在于,所述读卡器执行所述存储通道指令具体包括: 步骤el:所述读卡器根据所述存储通道指令的第二预设字节上的数据判断所述存储通道指令的类型,如果是读操作指令,则执行步骤e2 ;如果是写操作指令,则执行步骤e3 ; 步骤e2:所述读卡器读取所述目标地址中的数据,并将其发送给所述上位机,返回步骤S3 ; 步骤e3:所述读卡器获取所述存储通道指令的第三预设字节上的数据,将其作为待写数据长度,根据所述待写数据长度从所述存储通道指令中第三预设字节的下一字节开始获取待写数据,并且将其写入所述目标地址中,向所述上位机发送写操作完成信息,返回步骤S3。
14.一种操作智能SD卡和普通SD卡的读卡器的工作方法,其特征在于,包括: 步骤Wl:读卡器进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息,当所述读卡器接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机; 步骤W2:所述读卡器判断是否存在置位的中断标志,如果不存在置位的中断标志,则返回步骤W2;如果存在置位的中断标志,则判断所述置位的中断标志的类型,如果所述置位的中断标志是USB接收数据标志,则执行步骤W3 ;如果所述置位的中断标志是其他标志,则执行相应操作,返回步骤W2 ; 步骤W3:所述读卡器获取USB存储器中的数据,判断接收所述USB存储器中的数据的接口,如果是第一接口,则执行步骤W4 ;如果是第二接口,则执行步骤W5 ; 步骤W4:所述读卡器根据SCSI接口的配置信息对所述USB存储器中的数据执行相应操作,并生成操作码,向所述上位机发送所述操作码,返回步骤W2 ; 步骤W5:所述读卡器根据所述USB存储器中的数据与卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给所述上位机,返回步骤W2。
15.如权利要求14所述的方法,其特征在于,所述Wl与步骤W2之间,包括:所述读卡器使能USB连接; 所述步骤W2中,所述读卡器判断是否存在置位的中断标志,并判断置位的中断标志的类型之前,还包括: 步骤W2-1:所述读卡器进行USB枚举,判断USB接口是否为连接状态,是则所述读卡器判断是否存在置位的中断标志,并判断置位的中断标志的类型;否则返回步骤W2-1。
16.如权利要求14所述的方法,其特征在于,所述读卡器进行初始化,包括:将卡槽状态置为无卡; 当所述置位的中断标志的类型是卡到位标志时,所述读卡器执行以下步骤: 步骤kl:所述读卡器根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则执行步骤k2 ;如果是无卡,则执行步骤k3 ; 步骤k2:所述读卡器向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,返回步骤W2 ; 步骤k3:所述读卡器向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,返回步骤W2。
17.如权利要求14所述的方法,其特征在于,所述USB存储器中的数据为上电指令; 所述步骤W5,具体为: 步骤ml:所述读卡器向卡片发送绑定指令; 步骤m2:所述读卡器从所述卡片中读取绑定响应数据,向所述卡片发送断开指令; 步骤m3:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送连接指令; 步骤m4:所述读卡器从所述卡片中读取连接响应数据,向所述卡片发送获取ATR指令; 步骤m5:所述读卡器从所述卡片中读取ATR响应数据,向所述上位机发送所述ATR响应数据,返回步骤W2。
18.如权利要求17所述的方法,其特征在于,所述读卡器进行初始化,包括:将第一读取次数清零; 所述步骤m2包括: 步骤m2-l:所述读卡器延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数; 步骤m2-2:所述读卡器判断所述第一读取次数是否小于预设值,是则执行步骤m2-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ; 步骤m2-3:所述读卡器判断是否成功读取所述绑定响应数据,是则执行步骤m2-4 ;否则返回步骤m2-1 ; 步骤m2-4:所述读卡器将所述第一读取次数清零,向所述卡片发送断开指令,执行步骤m3。
19.如权利要求17所述的方法,其特征在于,所述读卡器进行初始化,包括:将第二读取次数清零; 所述步骤m3包括: 步骤m3-l:所述读卡器延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数; 步骤m3-2:所述读卡器判断所述第二读取次数是否小于预设值,是则执行步骤m3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ; 步骤m3-3:所述读卡器判断是否成功读取所述断开响应数据,是则执行步骤m3-4 ;否则返回步骤m3-l ; 步骤m3-4:所述读卡器将所述第二读取次数清零,向所述卡片发送连接指令,执行步骤m4。
20.如权利要求17所述的方法,其特征在于,所述读卡器进行初始化,包括:将第三读取次数清零; 所述步骤m4包括: 步骤m4-l:所述读卡器延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数; 步骤m4-2:所述读卡器判断所述第三读取次数是否小于预设值,是则执行步骤m4-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ; 步骤m4-3:所述读卡器判断是否成功读取所述连接响应数据,是则执行步骤m4-4 ;否则返回步骤m4-l ; 步骤m4-4:所述读卡器将所述第三读取次数清零,向所述卡片发送获取ATR指令,执行步骤m5。
21.如权利要求17所述的方法,其特征在于,所述读卡器进行初始化,包括:将第四读取次数清零; 所述步骤m5包括: 步骤m5-l:所述读卡器延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数; 步骤m5-2:所述读卡器判断所述第四读取次数是否小于预设值,是则执行步骤m5-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ; 步骤m5-3:所述读卡器判断是否成功读取所述ATR响应数据,是则执行步骤m5_4 ;否则返回步骤m5-l ; 步骤m5-4:所述读卡器将所述第四读取次数清零,向所述上位机发送所述ATR响应数据,返回步骤W2。
22.如权利要求14所述的方法,其特征在于,所述USB存储器中的数据为下电指令; 所述步骤W5,具体为: 步骤nl:所述读卡器向卡片发送断开指令; 步骤n2:所述读卡器从所述卡片中读取断开响应数据,向所述卡片发送解锁绑定指令; 步骤n3:所述读卡器从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,返回步骤W2。
23.如权利要求22所述的方法,其特征在于,所述读卡器进行初始化包括:将第五读取次数清零; 所述步骤n3包括: 步骤n3-l:所述读卡器延时预设时间,从所述卡片中读取所述解锁绑定响应数据,更新所述第五读取次数; 步骤n3-2:所述读卡器判断所述第五读取次数是否小于预设值,是则执行步骤n3-3 ;否则所述读卡器向所述上位机发送读取失败信息,返回步骤W2 ; 步骤n3-3:所述读卡器判断所述解锁绑定响应数据是否读取成功,是则执行步骤n3-4 ;否则返回步骤n3-l ; 步骤n3-4:所述读卡器将所述第五读取次数清零,向所述上位机发送下电成功信息,返回步骤W2。
24.如权利要求14所述的方法,其特征在于,所述读卡器进行初始化包括:将第六读取次数清零; 所述所述USB存储器中的数据为数据交换指令; 所述步骤W5,具体为: 步骤11:所述读卡器向所述卡片发送获取APDU指令; 步骤12:所述读卡器延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数; 步骤13:所述读卡器判断所述第六读取次数是否小于预设值,是则执行步骤14 ;否则向所述上位机发送读取失败信息,返回步骤W2 ; 步骤14:所述读卡器判断所述APDU响应数据是否读取成功,是则执行步骤15 ;否则返回步骤12 ; 步骤15:所述读卡器将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机,返回步骤W2。
25.一种操作智能SD卡和普通SD卡的读卡器,其特征在于,包括: 初始化模块,用于进行初始化,将卡片标识置为智能SD卡标识; 读取模块,用于读取指定地址中的数据,并将读取到的数据作为备份数据,并触发第一处理模块; 第一处理模块,用于向卡片发送绑定指令,从所述指定地址中读取所述卡片返回的数据,并触发第一判断模块; 第一判断模块,用于判断所述卡片返回的数据与所述绑定指令是否相同; 第二处理模块,用于在所述第一判断模块判断所述卡片返回的数据与所述绑定指令相同时,将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息,并触发第一配置信息发送模块; 第一配置信息发送模块,用于当接收到上位机下发的获取接口的配置信息指令时,将所述SCSI接口的配置信息发送给所述上位机,并触发检测模块; 第三处理模块,用于在所述第一判断模块判断所述卡片返回的数据与所述绑定指令不相同时,定义CCID接口的配置信息和SCSI接口的配置信息,并触发第二配置信息发送模块; 第二配置信息发送模块,用于当接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机,并触发检测模块;检测模块,用于判断是否存在置位的中断标志,并判断置位的中断标志的类型; 第一获取模块,用于在所述检测模块判断存在置位的中断标志,并且所述置位的中断标志是USB接收数据标志时,获取USB存储器中的数据,并触发第二判断模块; 第二判断模块,用于对所述第一获取模块获取到的数据进行判断; 第四处理模块,用于在所述第二判断模块判断获取到的数据为智能SD卡通信指令时,根据所述智能SD卡通信指令与所述卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给所述上位机,并触发所述检测模块; 第三判断模块,用于在所述第二判断模块判断获取到的数据的为存储通道指令时,根据所述卡片标识和所述存储通道指令判断是否可以执行所述存储通道指令; 第五处理模块,用于在所述第三判断模块判断可以执行所述存储通道指令时,执行所述存储通道指令,并触发所述检测模块。
26.如权利要求25所述的读卡器,其特征在于,还包括: 第一使能模块,用于在所述第二处理模块将所述卡片标识置为普通SD卡标识,将所述备份数据写入所述指定地址中,定义SCSI接口的配置信息时,使能USB连接,并触发第一配置信息发送模块; 第二使能模块,用于在所述第三处理模块定义CCID接口的配置信息和SCSI接口的配置信息时,使能USB连接,并触发第二配置信息发送模块; 第四判断模块,用于在所述第一配置信息发送模块将所述SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在当所述USB接口为连接状态时,触发检测模块;在所述第二配置信息发送模块将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在当所述USB接口为连接状态时,触发检测模块。
27.如权利要求25所述的读卡器,其特征在于,所述初始化模块,还用于将卡槽状态置为无卡; 还包括:第二获取模块,用于在所述检测模块检测到存在置位的中断标志,并且所述置位的中断标志为卡到位标志时,根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,并触发所述检测模块;如果是无卡,则向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,并触发所述检测模块。
28.如权利要求25所述的读卡器,其特征在于, 第四处理模块,包括: 第一绑定子模块,用于在所述第二判断模块判断获取到的数据为上电指令时,向卡片发送绑定指令,从所述卡片中读取绑定响应数据,并触发第一断开子模块; 第一断开子模块,用于向所述卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第一连接子模块; 第一连接子模块,用于向所述卡片发送连接指令,从所述卡片中读取连接响应数据,并触发第一获取ATR子模块; 第一获取ATR子模块,用于向所述卡片发送获取ATR指令,从所述卡片中读取ATR响应数据,向所述上位机发送ATR响应数据,并触发所述检测模块。
29.如权利要求28所述的读卡器,其特征在于,所述初始化模块,用于将第一读取次数清零; 所述第一绑定子模块,包括: 第一发送绑定指令单元,用于在所述第二判断模块判断获取到的数据为上电指令时,向所述卡片发送绑定指令,延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数,并触发第一判断单元; 第一判断单元,用于判断所述第一读取次数是否小于预设值; 第二判断单元,用于在所述第一判断单元判断所述第一读取次数小于预设值时,判断是否成功读取所述绑定响应数据; 第一归零单元,用于在所述第二判断单元判断成功读取所述绑定响应数据时,将所述第一读取次数清零,并触发第一断开子模块。
30.如权利要求28所述的读卡器,其特征在于,所述初始化模块,还用于将第二读取次数清零; 所述第一断开子模块,包括: 第一发送断开指令单元,用于向所述卡片发送断开指令,延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数,并触发第三判断单元; 第三判断单元,用于判断所述第二读取次数是否小于预设值; 第四判断单元,用于在所述第三判断单元判断所述第二读取次数小于预设值时,判断是否成功读取所述断开响应数据; 第二归零单元,用于在所述第四判断单元判断成功读取所述断开响应数据时,将所述第二读取次数清零,并触发第一连接子模块。
31.如权利要求28所述的读卡器,其特征在于,所述初始化模块,还用于将第三读取次数清零; 所述第一连接子模块,具体包括: 第一发送连接指令单元,用于向所述卡片发送连接指令延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数,并触发第五判断单元; 第五判断单元,用于判断所述第三读取次数是否小于预设值; 第六判断单元,用于在所述第五判断单元,判断所述第三读取次数小于预设值时,判断是否成功读取所述连接响应数据; 第三归零单元,用于在所述第六判断单元判断成功读取所述连接响应数据时,将所述第三读取次数清零,并触发第一获取ATR子模块。
32.如权利要求28所述的读卡器,其特征在于,所述初始化模块,还用于将第四读取次数清零; 所述第一获取ATR子模块,具体包括: 第一发送获取ATR指令单元,用于向所述卡片发送获取ATR指令,延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数,并触发第七判断单元; 第七判断单元,用于判断所述第四读取次数是否小于预设值; 第八判断单元,用于在所述第七判断单元判断所述第四读取次数小于预设值时,判断是否成功读取所述ATR响应数据; 第四归零单元,用于在所述第八判断单元判断成功读取所述ATR响应数据时,将所述第四读取次数清零,向所述上位机发送ATR响应数据,并触发所述检测模块。
33.如权利要求25所述的读卡器,其特征在于, 所述第四处理模块,包括: 第二断开子模块,用于在所述第二判断模块判断获取到的数据为下电指令时,向卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第一解锁绑定子模块; 第一解锁绑定子模块,用于向所述卡片发送解锁绑定指令,从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,并触发所述检测模块。
34.如权利要求33所述的读卡器,其特征在于,所述初始化模块,用于将第五读取次数清零; 所述第一解锁绑定子模块,包括: 第一发送解锁绑定指令单元,用于向所述卡片发送解锁绑定指令,延时预设时间,从所述卡片中读取解锁绑定响应数据,更新所述第五读取次数,并触发第九判断单元; 第九判断单元,用于判断所述第五读取次数是否小于预设值; 第十判断单元,用于在所述第九判断单元判断所述第五读取次数小于预设值时,判断是否成功读取所述解锁绑定响应数据; 第五归零单元,用于在所述第十判断单元判断成功读取所述解锁绑定响应数据时,将所述第五读取次数清零,向所述上位机发送下电成功信息,并触发所述检测模块。
35.如权利要求25所述的读卡器,其特征在于,所述初始化模块,还用于将第六读取次数清零; 所述读卡器还包括: 第六处理模块,具体用于在所述第四处理模块中所述智能SD卡通信指令为数据交换指令时,向所述卡片发送获取APDU指令,并触发第七处理模块; 第七处理模块,用于延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数,并触发第五判断模块; 第五判断模块,用于判断所述第六读取次数是否小于预设值; 第六判断模块,用于在所述第五判断模块判断所述第六读取次数小于预设值时,判断APDU响应数据是否读取成功; 第八处理模块,用于在所述第六判断模块判断APDU响应数据读取成功时,将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机,并触发检测模块。
36.如权利要求25所述的读卡器,其特征在于, 所述第三判断模块,具体用于获取所述存储通道指令的第一预设字节上的数据,将其作为目标地址,如果所述目标地址为所述指定地址,并且所述卡片标识是智能SD卡标识,则确定不可以执行所述存储通道指令;否则确定可以执行所述存储通道指令。
37.如权利要求36所述的读卡器,其特征在于,所述第五处理模块,具体包括: 第五处理模块判断子模块,用于在所述第三判断模块判断可以执行所述存储通道指令时,根据所述存储通道指令的第二预设字节上的数据判断所述存储通道指令的类型; 第五处理模块读操作模块,用于在所述第五处理模块判断子模块判断存储通道指令是读操作指令时,读取所述目标地址中的数据,并将其发送给所述上位机,并触发所述检测模块; 第五处理模块写操作模块,用于在所述第五处理模块判断子模块判断存储通道指令是写操作指令时,获取所述存储通道指令的第三预设字节上的数据,将其作为待写数据长度,根据所述待写数据长度从所述存储通道指令中第三预设字节的下一字节开始获取待写数据,并且将其写入所述目标地址中,向所述上位机发送写操作完成信息,并触发所述检测模块。
38.一种操作智能SD卡和普通SD卡的读卡器,其特征在在于,包括: 初始标志模块,用于进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息; 接口配置信息发送模块,用于在接收到上位机下发的获取接口的配置信息指令时,将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机,并触发判断中断模块; 判断中断模块,用于判断是否存在置位的中断标志,并判断置位的中断标志的类型;第一中断处理模块,用于在所述判断中断模块判断存在置位的中断标志,并且置位的中断标志为USB接收数据标志时,获取USB存储器中的数据,并触发第一判断接口模块;第一判断接口模块,用于判断接收所述USB存储器中的数据的接口 ; 第一接口处理模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第一接口时,根据所述SCSI接口的配置信息的所述USB存储器中的数据执行相应操作,并生成操作码,向上位机发送所述操作码,并触发所述判断中断模块; 第二接口处理模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,根据所述USB存储器中的数据与卡片进行通信,从所述卡片中读取通信响应,并将所述通信响应发送给上位机,并触发所述判断中断模块。
39.如权利要求38所述的读卡器,其特征在于,还包括: 使能连接模块,用于在所述初始标志模块进行初始化,定义CCID接口的配置信息和SCSI接口的配置信息时,使能USB连接,并触发接口配置信息发送模块; 枚举判断模块,用于在所述接口配置信息发送模块将所述CCID接口的配置信息和SCSI接口的配置信息发送给所述上位机时,进行USB枚举,判断USB接口是否为连接状态,并且在所述USB接口为连接状态时,触发判断中断模块。
40.如权利要求38所述的读卡器,其特征在于,所述初始标志模块,还用于将卡槽状态置为无卡; 还包括:操作模块,用于在所述判断中断模块判断存在置位的中断标志,并且置位的中断标识为卡到位标志时,根据卡到位引脚的电平判断所述卡槽状态,如果是有卡未上电,则向所述上位机发送有卡响应,并将所述卡槽状态保存为有卡未上电,并触发所述判断中断模块;如果是无卡,则向所述上位机发送无卡响应,并将所述卡槽状态保存为无卡,触发所述判断中断模块。
41.如权利要求38所述的读卡器,其特征在于,所述第二接口处理模块,包括: 第一判断指令类型子模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据; 第一指令处理子模块,用于在所述第一判断指令类型子模块判断所述USB存储器中的数据为上电指令时,向卡片发送绑定指令,从所述卡片中读取绑定响应数据,并触发第二指令处理子模块; 第二指令处理子模块,用于向所述卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第三指令处理子模块; 第三指令处理子模块,用于向所述卡片发送连接指令,从所述卡片中读取连接响应数据,并触发第四指令处理子模块; 第四指令处理子模块,用于向所述卡片发送获取ATR指令,从所述卡片中读取ATR响应数据,向所述上位机发送所述ATR响应数据,并触发所述判断中断模块。
42.如权利要求41所述的读卡器,其特征在于,所述初始标志模块,还用于将第一读取次数清零; 所述第一指令处理子模块,包括: 第一发送绑定指令单元,用于第一判断指令类型子模块判断所述USB存储器中的数据为上电指令时,向所述卡片发送绑定指令,延时预设时间,从所述卡片中读取绑定响应数据,更新所述第一读取次数,并触发第一判断单元; 第一判断单元,用于判断所述第一读取次数是否小于预设值; 第二判断单元,用于在所述第一判断单元判断所述第一读取次数小于预设值时,判断是否成功读取所述绑定响应数据; 第一归零单元,用于在所述第二判断单元判断成功读取所述绑定响应数据时,将所述第一读取次数清零,并触发第二指令处理子模块。
43.如权利要求41所述的读卡器,其特征在于,所述初始标志模块,还用于将第二读取次数清零; 所述第二指令处理子模块,具体包括: 第一发送断开指令单元,用于向所述卡片发送断开指令,延时预设时间,从所述卡片中读取断开响应数据,更新所述第二读取次数,并触发第三判断单元; 第三判断单元,用于判断所述第二读取次数是否小于预设值; 第四判断单元,用于在所述第三判断单元判断所述第二读取次数小于预设值时,判断是否成功读取所述断开响应数据; 第二归零单元,用于在所述第四判断单元判断成功读取所述断开响应数据时,将所述第二读取次数清零,并触发第三指令处理子模块。
44.如权利要求41所述的读卡器,其特征在于,所述初始标志模块,还用于将第三读取次数清零; 所述第三指令处理子模块,具体包括: 第一发送连接指令单元,用于向所述卡片发送连接指令延时预设时间,从所述卡片中读取连接响应数据,更新所述第三读取次数,并触发第五判断单元; 第五判断单元,用于判断所述第三读取次数是否小于预设值; 第六判断单元,用于在所述第五判断单元,判断所述第三读取次数小于预设值时,判断是否成功读取所述连接响应数据; 第三归零单元,用于在所述第六判断单元判断成功读取所述连接响应数据时,将所述第三读取次数清零,并触发第四指令处理子模块。
45.如权利要求41所述的读卡器,其特征在于,所述初始标志模块,还用于将第四读取次数清零; 所述第四指令处理子模块,具体包括: 第一发送获取ATR指令单元,用于向所述卡片发送获取ATR指令,延时预设时间,从所述卡片中读取ATR响应数据,更新所述第四读取次数,并触发第七判断单元; 第七判断单元,用于判断所述第四读取次数是否小于预设值; 第八判断单元,用于在所述第七判断单元判断所述第四读取次数小于预设值时,判断是否成功读取所述ATR响应数据; 第四归零单元,用于在所述第八判断单元判断成功读取所述ATR响应数据时,将所述第四读取次数清零,向所述上位机发送ATR响应数据,并触发所述判断中断模块。
46.如权利要求38所述的读卡器,其特征在于,所述第二接口处理模块,还包括: 第二判断指令类型子模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据; 第五指令处理子模块,用于在所述第二判断指令类型子模块判断所述USB存储器中的数据为下电指令时,向卡片发送断开指令,从所述卡片中读取断开响应数据,并触发第六指令处理子模块; 第六指令处理子模块,用于向所述卡片发送解锁绑定指令,从所述卡片中读取解锁绑定响应数据,向所述上位机发送下电成功信息,并触发所述判断中断模块。
47.如权利要求46所述的读卡器,其特征在于,所述初始标志模块,用于将第五读取次数清零; 所述第六指令处理子模块,包括: 第一发送解锁绑定指令单元,用于向所述卡片发送解锁绑定指令,延时预设时间,从所述卡片中读取解锁绑定响应数据,更新所述第五读取次数,并触发第九判断单元; 第九判断单元,用于判断所述第五读取次数是否小于预设值; 第十判断单元,用于在所述第九判断单元判断所述第五读取次数小于预设值时,判断是否成功读取所述解锁绑定响应数据; 第五归零单元,用于在所述第十判断单元判断成功读取所述解锁绑定响应数据时,将所述第五读取次数清零,向所述上位机发送下电成功信息,并触发所述判断中断模块。
48.如权利要求38所述的读卡器,其特征在于,所述第二接口处理模块,包括: 第三判断指令类型子模块,用于在所述第一判断接口模块判断接收USB存储器中的数据的接口是第二接口时,判断所述USB存储器中的数据; 第七指令处理子模块,用于在所述第三判断指令类型子模块判断所述USB存储器中的数据为数据交换指令时,向卡片发送获取APDU指令,并触发第一读取子模块; 第一读取子模块,用于延时预设时间,从所述卡片中读取APDU响应数据,更新所述第六读取次数,并触发第一判断子模块; 第一判断子模块,用于判断所述第六读取次数是否小于预设值; 第二判断子模块,用于在所述第一判断子模块判断所述第六读取次数小于预设值时,判断是否成功读取所述APDU响应数据; 第一发送子模块,用于在所述第二判断子模块,判断成功读取所述APDU响应数据时,将所述第六读取次数清零,将所述APDU响应数据发送给所述上位机; 第二发送子模块,用于在所述第二判断子模块,判断成功读取所述APDU响应数据时,向所述上位机发送读取失败信息。
【文档编号】G06K17/00GK104268605SQ201410413476
【公开日】2015年1月7日 申请日期:2014年8月21日 优先权日:2014年8月21日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1