本發(fā)明涉及智能卡領(lǐng)域,特別涉及一種測(cè)試智能卡的方法及讀卡器。
背景技術(shù):
現(xiàn)有技術(shù)中,讀卡器直接將預(yù)設(shè)的準(zhǔn)備指令、防沖突指令和選擇指令發(fā)送給非接智能卡,并且讀卡器發(fā)送每條指令后均不向外部返回相應(yīng)指令的應(yīng)答結(jié)果,因此如果出現(xiàn)讀卡器和非接智能卡通訊異常的情況,外部無(wú)法得知非接智能卡在哪個(gè)指令環(huán)節(jié)中出現(xiàn)問(wèn)題。并且由于現(xiàn)有技術(shù)中的讀卡器,對(duì)預(yù)設(shè)的準(zhǔn)備指令、防沖突指令和選擇指令的發(fā)送都有嚴(yán)格的時(shí)間控制,從而又增加了測(cè)試非接智能卡的難度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種測(cè)試智能卡的方法及讀卡器,解決了上述技術(shù)問(wèn)題。
本發(fā)明提供了一種測(cè)試智能卡的方法,包括:
步驟s1:讀卡器接收來(lái)自上位機(jī)的指令,當(dāng)接收到來(lái)自上位機(jī)的第一測(cè)試指令后,執(zhí)行步驟s2;當(dāng)接收到來(lái)自上位機(jī)的第二測(cè)試指令后,執(zhí)行步驟s4;當(dāng)接收到來(lái)自上位機(jī)的第三測(cè)試指令后,執(zhí)行步驟s6;
步驟s2:所述讀卡器根據(jù)所述第一測(cè)試指令得到包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;向智能卡發(fā)送所述準(zhǔn)備指令;獲取來(lái)自所述智能卡的準(zhǔn)備應(yīng)答;
步驟s3:所述讀卡器根據(jù)所述準(zhǔn)備應(yīng)答向所述上位機(jī)報(bào)告第一測(cè)試應(yīng)答,返回步驟s1;
步驟s4:所述讀卡器根據(jù)所述第二測(cè)試指令得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;向智能卡發(fā)送所述防沖突指令;獲取來(lái)自所述智能卡的防沖突應(yīng)答;
步驟s5:所述讀卡器根據(jù)所述防沖突應(yīng)答向所述上位機(jī)報(bào)告第二測(cè)試應(yīng)答,返回步驟s1;
步驟s6:所述讀卡器根據(jù)所述第三測(cè)試指令得到包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令;向智能卡發(fā)送所述選擇指令;獲取來(lái)自所述智能卡的選擇應(yīng)答;
步驟s7:所述讀卡器根據(jù)所述選擇應(yīng)答向所述上位機(jī)報(bào)告第三測(cè)試應(yīng)答,返回步驟s1。
本發(fā)明還提供了一種測(cè)試智能卡的讀卡器,包括:第一接收模塊、第二接收模塊、第三接收模塊、準(zhǔn)備指令模塊、防沖突指令模塊、選擇指令模塊、第一發(fā)送模塊、第二發(fā)送模塊、第三發(fā)送模塊、第一獲取模塊、第二獲取模塊、第三獲取模塊、第一報(bào)告模塊、第二報(bào)告模塊和第三報(bào)告模塊;
所述第一接收模塊,用于接收來(lái)自上位機(jī)的第一測(cè)試指令;
所述第二接收模塊,用于接收來(lái)自上位機(jī)的第二測(cè)試指令;
所述第三接收模塊,用于接收來(lái)自上位機(jī)的第三測(cè)試指令;
所述準(zhǔn)備指令模塊,用于根據(jù)所述第一接收模塊接收到的所述第一測(cè)試指令得到包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;
所述防沖突指令模塊,用于根據(jù)所述第二接收模塊接收到的所述第二測(cè)試指令得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;
所述選擇指令模塊,用于根據(jù)所述第三接收模塊接收到的所述第三測(cè)試指令得到包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令;
所述第一發(fā)送模塊,用于向智能卡發(fā)送所述準(zhǔn)備指令;
所述第二發(fā)送模塊,用于向智能卡發(fā)送所述防沖突指令;
所述第三發(fā)送模塊,用于向智能卡發(fā)送所述選擇指令;
所述第一獲取模塊,用于獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答;
所述第二獲取模塊,用于獲取來(lái)自智能卡的防沖突應(yīng)答;
所述第三獲取模塊,用于獲取來(lái)自智能卡的選擇應(yīng)答;
所述第一報(bào)告模塊,用于根據(jù)所述準(zhǔn)備應(yīng)答向所述上位機(jī)報(bào)告第一測(cè)試應(yīng)答;
所述第二報(bào)告模塊,用于根據(jù)所述防沖突應(yīng)答向所述上位機(jī)報(bào)告第二測(cè)試應(yīng)答;
所述第三報(bào)告模塊,用于根據(jù)所述選擇應(yīng)答向所述上位機(jī)報(bào)告第三測(cè)試應(yīng)答。
本發(fā)明的有益效果:本發(fā)明提供了一種測(cè)試智能卡的方法及讀卡器。所述讀卡器接收來(lái)自外部的測(cè)試指令,并根據(jù)相應(yīng)的測(cè)試指令得到準(zhǔn)備指令、防沖突指令和選擇指令,向非接智能卡發(fā)送相應(yīng)指令,并且每條指令發(fā)送后,均根據(jù)非接智能卡的應(yīng)答向外部返回測(cè)試結(jié)果,使非接智能卡的測(cè)試變得可控,簡(jiǎn)單。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例1提供的一種測(cè)試智能卡的方法的流程圖;
圖2為本發(fā)明實(shí)施例2提供的一種測(cè)試智能卡的方法的流程圖;
圖3為本發(fā)明實(shí)施例3提供的一種測(cè)試智能卡的方法的流程圖;
圖4為本發(fā)明實(shí)施例4提供的一種測(cè)試智能卡的讀卡器的結(jié)構(gòu)方框圖。
具體實(shí)施方法
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例1
本實(shí)施例提供了一種測(cè)試智能卡的方法,如圖1所示,包括:
步驟s1:讀卡器接收來(lái)自上位機(jī)的指令,當(dāng)接收到來(lái)自上位機(jī)的第一測(cè)試指令后,執(zhí)行步驟s2;當(dāng)接收到來(lái)自上位機(jī)的第二測(cè)試指令后,執(zhí)行步驟s4;當(dāng)接收到來(lái)自上位機(jī)的第三測(cè)試指令后,執(zhí)行步驟s6;
步驟s2:讀卡器根據(jù)第一測(cè)試指令得到包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;向智能卡發(fā)送準(zhǔn)備指令;獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答;
本實(shí)施例中,智能卡具體為非接智能卡。
具體地,讀卡器根據(jù)第一測(cè)試指令得到包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;清空應(yīng)答寄存器,向智能卡發(fā)送準(zhǔn)備指令;獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答;從應(yīng)答寄存器中獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答。
步驟s3:讀卡器根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答,返回步驟s1;
步驟s4:讀卡器根據(jù)第二測(cè)試指令得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;向智能卡發(fā)送防沖突指令;獲取來(lái)自智能卡的防沖突應(yīng)答;
具體地,讀卡器根據(jù)第二測(cè)試指令得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;清空應(yīng)答寄存器,向智能卡發(fā)送防沖突指令;從應(yīng)答寄存器中獲取來(lái)自智能卡的防沖突應(yīng)答;
步驟s5:讀卡器根據(jù)防沖突應(yīng)答向上位機(jī)報(bào)告第二測(cè)試應(yīng)答,返回步驟s1;
步驟s6:讀卡器根據(jù)第三測(cè)試指令得到包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令;向智能卡發(fā)送選擇指令;獲取來(lái)自智能卡的選擇應(yīng)答;
具體地,讀卡器根據(jù)第三測(cè)試指令得到包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令;清空應(yīng)答寄存器,向智能卡發(fā)送選擇指令;從應(yīng)答寄存器中獲取來(lái)自智能卡的選擇應(yīng)答;
步驟s7:讀卡器根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答,返回步驟s1。
需說(shuō)明的是,本實(shí)施例中,讀卡器通過(guò)自身的智能芯片按照從低位到高位的順序向非接場(chǎng)中的智能卡發(fā)送指令的二進(jìn)制編碼,通過(guò)自身的智能芯片按照從低位到高位的順序接收來(lái)自非接場(chǎng)中的智能卡的應(yīng)答的二進(jìn)制編碼,并請(qǐng)其存儲(chǔ)在應(yīng)答寄存器中。
本實(shí)施例中,根據(jù)第一測(cè)試指令得到包括準(zhǔn)備參數(shù)的準(zhǔn)備指令,具體為:讀卡器從第一測(cè)試指令中獲取包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;
根據(jù)第二測(cè)試指令得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令,具體為:讀卡器從第二測(cè)試指令中獲取包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;
根據(jù)第三測(cè)試指令得到包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令,具體為:讀卡器從第三測(cè)試指令中獲取包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令。
本實(shí)施例中,根據(jù)第一測(cè)試指令得到包括準(zhǔn)備參數(shù)的準(zhǔn)備指令,具體為:讀卡器根據(jù)第一測(cè)試指令中的準(zhǔn)備參數(shù)組織包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;
本實(shí)施例中,準(zhǔn)備參數(shù)具體為初始化參數(shù)或者喚醒參數(shù);準(zhǔn)備指令包括初始化指令或者喚醒指令;
組織包括準(zhǔn)備參數(shù)的準(zhǔn)備指令具體為:若準(zhǔn)備參數(shù)為初始化參數(shù),將初始化參數(shù)作為初始化指令;若準(zhǔn)備參數(shù)為喚醒參數(shù),將喚醒參數(shù)作為喚醒指令;
根據(jù)第二測(cè)試指令得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令,具體為:讀卡器根據(jù)第二測(cè)試指令中的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)組織包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;
組織包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令具體為:根據(jù)串聯(lián)級(jí)別參數(shù)設(shè)置防沖突指令的第一個(gè)字節(jié)上的數(shù)據(jù),根據(jù)有效數(shù)據(jù)參數(shù)設(shè)置防沖突指令的第二個(gè)字節(jié)上的數(shù)據(jù),根據(jù)卡標(biāo)識(shí)參數(shù)設(shè)置防沖突指令的第二個(gè)字節(jié)之后的數(shù)據(jù),得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令。
根據(jù)第三測(cè)試指令得到包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令,具體為:讀卡器根據(jù)第三測(cè)試指令中的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)組織包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令。
組織包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令,具體為:根據(jù)第三測(cè)試指令中的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)計(jì)算第一校驗(yàn)值,根據(jù)串聯(lián)級(jí)別參數(shù)設(shè)置選擇指令的第一個(gè)字節(jié)上的數(shù)據(jù),根據(jù)有效數(shù)據(jù)參數(shù)設(shè)置選擇指令的第二個(gè)字節(jié)上的數(shù)據(jù),根據(jù)卡標(biāo)識(shí)參數(shù)設(shè)置選擇指令的第三到第七字節(jié)上的數(shù)據(jù),根據(jù)第一校驗(yàn)值設(shè)置卡標(biāo)識(shí)參數(shù)之后的數(shù)據(jù),得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)、卡標(biāo)識(shí)參數(shù)和第一校驗(yàn)值的選擇指令;
組織包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令,或者具體為:根據(jù)串聯(lián)級(jí)別參數(shù)設(shè)置選擇指令的第一個(gè)字節(jié)上的數(shù)據(jù),根據(jù)有效數(shù)據(jù)參數(shù)設(shè)置選擇指令的第二個(gè)字節(jié)上的數(shù)據(jù),根據(jù)卡標(biāo)識(shí)參數(shù)設(shè)置選擇指令的第三到第七字節(jié)上的數(shù)據(jù),根據(jù)第三測(cè)試指令中的第一校驗(yàn)值設(shè)置卡標(biāo)識(shí)參數(shù)之后的數(shù)據(jù),得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)、卡標(biāo)識(shí)參數(shù)和第一校驗(yàn)值的選擇指令。
本實(shí)施例中,向智能卡發(fā)送防沖突指令之前還包括:設(shè)置防沖突測(cè)試;向智能卡發(fā)送防沖突指令之后,還包括獲取防沖突測(cè)試結(jié)果;第二測(cè)試應(yīng)答中還包括防沖突測(cè)試結(jié)果。
進(jìn)一步地,第二測(cè)試指令中包括防沖突測(cè)試參數(shù);
設(shè)置防沖突測(cè)試之前還包括:根據(jù)防沖突測(cè)試參數(shù)判斷是否設(shè)置防沖突測(cè)試,如果是,則設(shè)置防沖突測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,獲取來(lái)自智能卡的防沖突應(yīng)答,執(zhí)行步驟s5。
本實(shí)施例中,步驟s5可以用具體包括:
步驟a1:讀卡器根據(jù)防沖突測(cè)試結(jié)果判斷在當(dāng)前串聯(lián)級(jí)別下是否存在卡片響應(yīng)沖突,如果是,則執(zhí)行步驟a2;否則,執(zhí)行步驟a3;
步驟a2:讀卡器根據(jù)防沖突測(cè)試結(jié)果中的防沖突位置更新有效數(shù)據(jù)參數(shù),根據(jù)防沖突位置和防沖突應(yīng)答獲取卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼,向上位機(jī)報(bào)告包括防沖突測(cè)試結(jié)果、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第二測(cè)試應(yīng)答,返回步驟s1;
步驟a3:讀卡器將卡標(biāo)識(shí)參數(shù)更新為防沖突應(yīng)答,將有效數(shù)據(jù)參數(shù)更新為第二預(yù)設(shè)值,向上位機(jī)報(bào)告包括防沖突測(cè)試結(jié)果、更新后的有效數(shù)據(jù)參數(shù)和更新后的卡標(biāo)識(shí)參數(shù)第二測(cè)試應(yīng)答,返回步驟s1。
本實(shí)施例中,步驟s5還可以具體為:向上位機(jī)報(bào)告包括防沖突應(yīng)答的第二測(cè)試應(yīng)答,返回步驟s1。
本實(shí)施例中,步驟s7可以具體為:向上位機(jī)報(bào)告包括選擇應(yīng)答的第三測(cè)試應(yīng)答,返回步驟s1。
本實(shí)施例中,步驟s7還可以具體包括:
步驟b1:讀卡器根據(jù)選擇應(yīng)答判斷智能卡是否處于工作狀態(tài),如果是,則向上位機(jī)報(bào)告智能卡處于工作狀態(tài),返回步驟s1;否則,執(zhí)行步驟b2;
步驟b2:讀卡器將串聯(lián)級(jí)別參數(shù)更新為下一串聯(lián)級(jí)別值,將有效數(shù)據(jù)參數(shù)更新為第一預(yù)設(shè)值,將卡標(biāo)識(shí)更新為空,向上位機(jī)報(bào)告包括更新后的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第三測(cè)試應(yīng)答,返回步驟s1。
本實(shí)施例中,向智能卡發(fā)送選擇指令之前,還包括:設(shè)置應(yīng)答校驗(yàn)測(cè)試;第三測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;
根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果。
進(jìn)一步地,第三測(cè)試指令中還包括:應(yīng)答校驗(yàn)測(cè)試參數(shù);
設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,獲取來(lái)自智能卡的選擇應(yīng)答,執(zhí)行步驟s7。
本實(shí)施例中,向智能卡發(fā)送準(zhǔn)備指令和/或防沖突指令和/或選擇指令之前,還包括:設(shè)置數(shù)據(jù)傳輸測(cè)試;
若向智能卡發(fā)送準(zhǔn)備指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第一測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第二測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第三測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果。
進(jìn)一步地,第一測(cè)試指令中和/或第二測(cè)試指令中和/或第三測(cè)試指令中包括:數(shù)據(jù)傳輸測(cè)試參數(shù);
若第一測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送準(zhǔn)備指令,獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答,執(zhí)行步驟s3;
若第二測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,獲取來(lái)自智能卡的防沖突應(yīng)答,執(zhí)行步驟s5;
若第三測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,獲取來(lái)自智能卡的選擇應(yīng)答,執(zhí)行步驟s7。
本實(shí)施例中,數(shù)據(jù)傳輸測(cè)試可以但不限于為:數(shù)據(jù)幀測(cè)試或奇偶校驗(yàn)測(cè)試或者接收超時(shí)測(cè)試或者其他測(cè)試。
本實(shí)施例中,步驟s1中還可以包括:當(dāng)接收到來(lái)自上位機(jī)的第四測(cè)試指令后,執(zhí)行步驟s8;當(dāng)接收到來(lái)自上位機(jī)的第五測(cè)試指令后,執(zhí)行步驟s10;
步驟s8:讀卡器根據(jù)第四測(cè)試指令得到獲取通訊數(shù)據(jù)指令;向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;獲取來(lái)自智能卡的通訊數(shù)據(jù)應(yīng)答;
步驟s9:讀卡器根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答;
步驟s10:讀卡器根據(jù)第五測(cè)試指令得到通訊協(xié)商指令;向智能卡發(fā)送通訊協(xié)商指令;獲取來(lái)自智能卡的通訊協(xié)商應(yīng)答;
步驟s11:讀卡器根據(jù)通訊協(xié)商應(yīng)答,向上位機(jī)報(bào)告第五測(cè)試應(yīng)答;返回步驟s1。
進(jìn)一步地,根據(jù)第四測(cè)試指令得到獲取通訊數(shù)據(jù)指令,具體為:讀卡器根據(jù)第三預(yù)設(shè)值設(shè)置獲取通訊數(shù)據(jù)指令中的第一字節(jié)上的數(shù)據(jù),根據(jù)第四測(cè)試指令中的第一參數(shù)和第二參數(shù)設(shè)置獲取通訊數(shù)據(jù)指令中的第二字節(jié)上的數(shù)據(jù);根據(jù)獲取通訊數(shù)據(jù)指令中的第一字節(jié)和第二字節(jié)上的數(shù)據(jù)計(jì)算第二校驗(yàn)值,將第二校驗(yàn)值設(shè)置在獲取通訊數(shù)據(jù)指令中的第二字節(jié)后,得到獲取通訊數(shù)據(jù)指令;
根據(jù)第五測(cè)試指令得到通訊協(xié)商指令,具體為:讀卡器根據(jù)第五測(cè)試指令中的第二參數(shù)設(shè)置通訊協(xié)商指令中的第一字節(jié)上的數(shù)據(jù);根據(jù)第五測(cè)試指令中的第四參數(shù)設(shè)置通訊協(xié)商指令中的第二字節(jié)上的數(shù)據(jù);根據(jù)第五測(cè)試指令中的第五參數(shù)設(shè)置通訊協(xié)商指令中的第三字節(jié)上的數(shù)據(jù),根據(jù)通訊協(xié)商指令中的第一字節(jié)、第二字節(jié)和第三字節(jié)上的數(shù)據(jù)計(jì)算第三校驗(yàn)值,將第三校驗(yàn)值設(shè)置在通訊協(xié)商指令中的第三字節(jié)后,得到通訊協(xié)商指令。
本實(shí)例中,根據(jù)第四測(cè)試指令得到獲取通訊數(shù)據(jù)指令,還可以具體為:從第四測(cè)試指令中獲取獲取通訊數(shù)據(jù)指令;
根據(jù)第五測(cè)試指令得到通訊協(xié)商指令,還可以具體為:從第五測(cè)試指令中獲取通訊協(xié)商指令。
本實(shí)施例中,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令之前,還包括:設(shè)置應(yīng)答校驗(yàn)測(cè)試;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;則第四測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;第五測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果。
進(jìn)一步地,第四測(cè)試指令中和/或第五測(cè)試指令中包括:還包括:應(yīng)答校驗(yàn)測(cè)試參數(shù);
若第四測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),則設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,獲取來(lái)自智能卡的通訊數(shù)據(jù)應(yīng)答;執(zhí)行步驟s9;
若第五測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),則設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,獲取來(lái)自智能卡的通訊協(xié)商應(yīng)答;執(zhí)行步驟s11。
本實(shí)施例中,向智能卡發(fā)送準(zhǔn)備指令和/或防沖突指令和/或選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令之前,還包括:設(shè)置數(shù)據(jù)傳輸測(cè)試;
若向智能卡發(fā)送準(zhǔn)備指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第一測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第二測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第三測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;
若向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第四測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答,之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;
若向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第五測(cè)試應(yīng)答中包括:數(shù)據(jù)傳輸測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答,之前還包括:獲取數(shù)據(jù)傳輸測(cè)試結(jié)果。
進(jìn)一步地,第一測(cè)試指令中和/或第二測(cè)試指令中和/或第三測(cè)試指令中和/或第四測(cè)試指令中和/或第五測(cè)試指令中包括:數(shù)據(jù)傳輸測(cè)試參數(shù);
若第一測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置數(shù)據(jù)傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送準(zhǔn)備指令,獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答,執(zhí)行步驟s3;
若第二測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置數(shù)據(jù)傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,獲取來(lái)自智能卡的防沖突應(yīng)答,執(zhí)行步驟s5;
若第三測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置數(shù)據(jù)傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,獲取來(lái)自智能卡的選擇應(yīng)答,執(zhí)行步驟s7;
若第四測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置數(shù)據(jù)傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,獲取來(lái)自智能卡的通訊數(shù)據(jù)應(yīng)答;執(zhí)行步驟s9;
若第五測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù),則設(shè)置數(shù)據(jù)傳輸測(cè)試之前,還包括:根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試,如果是,則設(shè)置數(shù)據(jù)傳輸測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,獲取來(lái)自智能卡的通訊協(xié)商應(yīng)答;執(zhí)行步驟s11。
本實(shí)施例中,步驟s1中還包括:當(dāng)接收到來(lái)自上位機(jī)的第六測(cè)試指令后,執(zhí)行步驟s12;
步驟s12:讀卡器根據(jù)第六測(cè)試指令得到包括掛起參數(shù)的第六測(cè)試指令;向智能卡發(fā)送第六測(cè)試指令;獲取來(lái)自智能卡的掛起應(yīng)答;
步驟s13:讀卡器根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答。
本實(shí)施例提供了一種測(cè)試智能卡的方法,讀卡器接收來(lái)自外部的測(cè)試指令,并根據(jù)相應(yīng)的測(cè)試指令得到準(zhǔn)備指令、防沖突指令和選擇指令,向非接智能卡發(fā)送相應(yīng)指令,并且每條指令發(fā)送后,均根據(jù)非接智能卡的應(yīng)答向外部返回測(cè)試結(jié)果,使非接觸智能卡的測(cè)試變得可控,簡(jiǎn)單。
實(shí)施例2
本實(shí)施例提供了一種測(cè)試智能卡的方法的流程圖,如圖2所示,包括:
步驟201:讀卡器等待接收來(lái)自上位機(jī)的指令;若指令為開(kāi)啟非接場(chǎng)指令,則執(zhí)行步驟202;若指令為第一測(cè)試指令,則執(zhí)行步驟203;若指令為第二測(cè)試指令,則執(zhí)行步驟206;若指令為第三測(cè)試指令,則執(zhí)行步驟210;若指令為第四測(cè)試指令,則執(zhí)行步驟214;若指令為第五測(cè)試指令,則執(zhí)行步驟218;若指令為第六測(cè)試指令,則執(zhí)行步驟222;若指令為關(guān)閉非接場(chǎng)指令,則執(zhí)行步驟226;
本實(shí)施例中,讀卡器可以根據(jù)接收到的指令的指令標(biāo)識(shí)判斷指令的類(lèi)型。
步驟202:讀卡器開(kāi)啟非接場(chǎng),返回步驟201;
步驟203:讀卡器根據(jù)第一測(cè)試指令中的準(zhǔn)備參數(shù)組織初始化指令或喚醒指令,清空應(yīng)答寄存器,向智能卡發(fā)送初始化指令或喚醒指令;
具體地,讀卡器獲取第一測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第一測(cè)試指令的指令標(biāo)識(shí),根據(jù)第一測(cè)試指令中的指令標(biāo)識(shí)從第一測(cè)試指令中獲取準(zhǔn)備參數(shù),根據(jù)準(zhǔn)備參數(shù)組織初始化指令或者喚醒指令;清空應(yīng)答寄存器,向智能卡發(fā)送初始化指令或喚醒指令;
例如:上位機(jī)獲取第一測(cè)試指令8103260000中的第二個(gè)字節(jié)上的數(shù)據(jù)03,并將其作為第一測(cè)試指令的指令標(biāo)識(shí),根據(jù)第一測(cè)試指令中的指令標(biāo)識(shí)03從第一測(cè)試指令中獲取第一測(cè)試指令中第三字節(jié)上的數(shù)據(jù)26,并將其作為初始化指令,清空應(yīng)答寄存器,向智能卡發(fā)送初始化指令26。
本實(shí)施例中,初始化指令具體為reqa指令,喚醒指令具體為wupa指令。本實(shí)施例中,智能卡具體為非接智能卡。
步驟204:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的準(zhǔn)備應(yīng)答;
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答為4800。
步驟205:讀卡器根據(jù)準(zhǔn)備應(yīng)答封裝第一測(cè)試應(yīng)答,將第一測(cè)試應(yīng)答返回給上位機(jī),返回步驟201;
具體地,讀卡器根據(jù)準(zhǔn)備應(yīng)答封裝包括準(zhǔn)備應(yīng)答的第一測(cè)試應(yīng)答,將第一測(cè)試應(yīng)答返回給上位機(jī),返回步驟201。
例如:讀卡器根據(jù)準(zhǔn)備應(yīng)答4800封裝包括準(zhǔn)備應(yīng)答的第一測(cè)試應(yīng)答48009000,將第一測(cè)試應(yīng)答48009000,返回給上位機(jī),返回步驟201。
步驟206:讀卡器從第二測(cè)試指令中獲取串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln),組織包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)的防沖突指令;
其中,讀卡器從第二測(cè)試指令中獲取串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)具體為:讀卡器獲取第二測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第二測(cè)試指令的指令標(biāo)識(shí),根據(jù)第二測(cè)試指令中的指令標(biāo)識(shí)從第二測(cè)試指令中獲取串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)。
例如:上位機(jī)獲取第二測(cè)試指令8104932000中的第二個(gè)字節(jié)上的數(shù)據(jù)04,并將其作為第二測(cè)試指令的指令標(biāo)識(shí),根據(jù)第二測(cè)試指令中的指令標(biāo)識(shí)04獲取第二測(cè)試指令中第三字節(jié)上的數(shù)據(jù)93,并將其作為串聯(lián)級(jí)別參數(shù)(sel)93,獲取第二測(cè)試指令中第四字節(jié)上的數(shù)據(jù)20,并將其作為有效數(shù)據(jù)參數(shù)(nvb)20,獲取第二測(cè)試指令中第五字節(jié)上的數(shù)據(jù)00,并將其作為卡標(biāo)識(shí)參數(shù)(uidcln)的長(zhǎng)度,根據(jù)卡標(biāo)識(shí)參數(shù)(uidcln)的長(zhǎng)度00,得到卡標(biāo)識(shí)參數(shù)(uidcln)為空值。
其中,組織包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)的防沖突指令,具體為,讀卡器將串聯(lián)級(jí)別參數(shù)設(shè)置在防沖突指令的第一個(gè)字節(jié)上,將有效數(shù)據(jù)參數(shù)設(shè)置在防沖突指令的第二個(gè)字節(jié)上,將卡標(biāo)識(shí)參數(shù)設(shè)置在有效數(shù)據(jù)參數(shù)之后,得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令。
例如,讀卡器將串聯(lián)級(jí)別參數(shù)93設(shè)置在防沖突指令的第一個(gè)字節(jié)上,將有效數(shù)據(jù)參數(shù)20設(shè)置在防沖突指令的第二個(gè)字節(jié)上,得到包括串聯(lián)級(jí)別參數(shù)和有效數(shù)據(jù)參數(shù)的防沖突指令9320。
本實(shí)施例中,防沖突指令具體為anticollision指令。
步驟207:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送防沖突指令;
本實(shí)施例中,讀卡器向智能卡發(fā)送防沖突應(yīng)答之前還包括:設(shè)置防沖突應(yīng)答。
其中,設(shè)置防沖突應(yīng)答具體為:讀卡器將測(cè)試寄存器中的防沖突測(cè)試標(biāo)志位置位。
需要說(shuō)明的是,讀卡器上電后,復(fù)位測(cè)試寄存器中的所有標(biāo)志位。
步驟208:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的防沖突應(yīng)答;從錯(cuò)誤寄存器中獲取防沖突測(cè)試結(jié)果;
本實(shí)施例中,防沖突測(cè)試結(jié)果包括:防沖突錯(cuò)誤標(biāo)識(shí)和/或防沖突位置。
具體地,讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的防沖突應(yīng)答;從錯(cuò)誤第一寄存器中獲取包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼和/或從錯(cuò)誤第二寄存器中獲取防沖突位置。
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的防沖突應(yīng)答880431378a,從錯(cuò)誤第一寄存器中獲取包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼00;從錯(cuò)誤第二寄存器中獲取防沖突位置00。
本實(shí)施例中,錯(cuò)誤碼中包括防沖突標(biāo)志位,防沖突錯(cuò)誤標(biāo)識(shí)具體為防沖突標(biāo)志位上的數(shù)據(jù)。本實(shí)施例中,錯(cuò)誤碼可以但不限于為1個(gè)字節(jié),防沖突標(biāo)志位可以但不限于為錯(cuò)誤碼中的第五比特位(從低位到高位)。
本實(shí)施中,防沖突位置為具有沖突的多張(兩張或兩張以上)智能卡接收到來(lái)自讀卡器的防沖突指令后,各自向讀卡器返回的信息的二進(jìn)制編碼(從低位到高位)中的第一個(gè)數(shù)值不同的比特位所在的位置。
需說(shuō)明的是,當(dāng)讀卡器上電后,讀卡器復(fù)位錯(cuò)誤第一寄存器中的錯(cuò)誤碼中的所有標(biāo)志位;當(dāng)讀卡器的智能芯片檢測(cè)出存在卡片響應(yīng)沖突后,置位錯(cuò)誤第一寄存器中的錯(cuò)誤碼中的防沖突標(biāo)志位,獲取防沖突位置,并將防沖突位置存儲(chǔ)到錯(cuò)誤第二寄存器中。
更加詳細(xì)地,讀卡器的智能芯片向智能卡發(fā)送防沖突指令后,根據(jù)接收到來(lái)自卡片的數(shù)據(jù)判斷出是否存在卡片響應(yīng)沖突,如果是,則讀卡器的智能芯片根據(jù)接收到來(lái)自智能卡的數(shù)據(jù)獲取防沖突應(yīng)答,將其存儲(chǔ)在應(yīng)答寄存器中,根據(jù)接收到來(lái)自智能卡的數(shù)據(jù)獲取防沖突位置,將防沖突位置存儲(chǔ)到錯(cuò)誤寄存器中;并置位錯(cuò)誤第一寄存器中的錯(cuò)誤碼中的防沖突標(biāo)志位;否則,將接收到的來(lái)自智能卡的數(shù)據(jù)作為防沖突應(yīng)答,并將其存儲(chǔ)在應(yīng)答寄存器中。
步驟209:讀卡器根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果封裝第二測(cè)試應(yīng)答,將第二測(cè)試應(yīng)答返回給上位機(jī),返回步驟201;
本步驟可以具體為:讀卡器將包括防沖突應(yīng)答、包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼和防沖突位置的第二測(cè)試應(yīng)答,返回給上位機(jī);
例如:讀卡器將包括防沖突應(yīng)答880431378a、包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼00和防沖突位置00的第二測(cè)試應(yīng)答880431378a00009000返回給上位機(jī)。
本步驟又可以具體包括:
步驟209-1:讀卡器根據(jù)錯(cuò)誤碼和/或防沖突位置判斷在當(dāng)前串聯(lián)級(jí)別下是否存在卡片響應(yīng)沖突,如果是,則執(zhí)行步驟209-2;否則,執(zhí)行步驟209-3;
具體地,讀卡器獲取錯(cuò)誤碼,檢測(cè)錯(cuò)誤碼中的防沖突標(biāo)志位是否被置位,如果是,則判斷在當(dāng)前串聯(lián)級(jí)別下存在卡片響應(yīng)沖突,則執(zhí)行步驟209-2;否則,判斷在當(dāng)前串聯(lián)級(jí)別下不存在卡片響應(yīng)沖突,執(zhí)行步驟209-3。
或者讀卡器獲取防沖突位置,判斷防沖突位置是否為00,如果是,則判斷在當(dāng)前串聯(lián)級(jí)別下不存在卡片響應(yīng)沖突,執(zhí)行步驟209-3;否則判斷在當(dāng)前串聯(lián)級(jí)別下存在卡片響應(yīng)沖突,則執(zhí)行步驟209-2。
或者讀卡器獲取錯(cuò)誤碼和防沖突位置,檢測(cè)錯(cuò)誤碼中的防沖突標(biāo)志位是否被置位且判斷防沖突位置是否不為00,如果是,則判斷在當(dāng)前串聯(lián)級(jí)別下是否存在卡片響應(yīng)沖突,如果是,則執(zhí)行步驟209-2;否則,判斷在當(dāng)前串聯(lián)級(jí)別下不存在卡片響應(yīng)沖突,執(zhí)行步驟209-3;
步驟209-2:讀卡器根據(jù)防沖突位置更新有效數(shù)據(jù)參數(shù),根據(jù)防沖突位置和防沖突應(yīng)答獲取卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼,向上位機(jī)報(bào)告包括錯(cuò)誤碼、防沖突位置、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第二測(cè)試應(yīng)答,返回步驟201;
具體地,讀卡器從錯(cuò)誤第二寄存器中獲取防沖突位置,根據(jù)防沖突位置得到增加的有效比特位數(shù),計(jì)算有效數(shù)據(jù)參數(shù)所表示的有效比特位總數(shù)與增加的有效比特位數(shù)的和,根據(jù)計(jì)算得到的結(jié)果更新有效數(shù)據(jù)參數(shù),在防沖突應(yīng)答中獲取防沖突位置之前(包括防沖突位置)的所有比特位上的數(shù)據(jù),并將獲取到的數(shù)據(jù)的中的防沖突位置上的數(shù)據(jù)設(shè)置為第一數(shù)值,并將得到的數(shù)據(jù)作為卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼,向上位機(jī)報(bào)告包括錯(cuò)誤碼、防沖突位置、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第二測(cè)試應(yīng)答,返回步驟201;
優(yōu)選地,第一數(shù)值為1。
例如,讀卡器從錯(cuò)誤第二寄存器中獲取防沖突位置為04,根據(jù)防沖突位置04得到增加的有效比特位數(shù)為4個(gè)比特位,計(jì)算有效數(shù)據(jù)參數(shù)20所表示的有效比特位總數(shù)16與增加的有效比特位數(shù)4的和,根據(jù)計(jì)算得到的結(jié)果20作為更新后的效數(shù)據(jù)參數(shù)所表示的有效比特位總數(shù),將20除以8得到的整數(shù)2,即0010作為更新后的有效數(shù)據(jù)參數(shù)的高四位;將20除以8得到的余數(shù)4,作為更新后的有效數(shù)據(jù)參數(shù)的低四位0100,即更新后的有效數(shù)據(jù)參數(shù)的為00100100,即更新后的有效數(shù)據(jù)參數(shù)為24;在防沖突應(yīng)答0000000000的二進(jìn)制編碼(從低位到高位)00000000……中獲取防沖突位置即第四比特位上的數(shù)據(jù)之前(包括防沖突位置)的所有比特位上的數(shù)據(jù)0000,并將獲取到的數(shù)據(jù)的中的防沖突位置即第四比特位上的數(shù)據(jù)設(shè)置為第一數(shù)值1,得到0001,即08,并將08作為卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼,向上位機(jī)報(bào)告包括錯(cuò)誤碼00、防沖突位置04、有效數(shù)據(jù)參數(shù)24和卡標(biāo)識(shí)參數(shù)08的第二測(cè)試應(yīng)答,返回步驟201;
步驟209-3:讀卡器將卡標(biāo)識(shí)參數(shù)更新為防沖突應(yīng)答,將有效數(shù)據(jù)參數(shù)更新為第二預(yù)設(shè)值,向上位機(jī)報(bào)告包括錯(cuò)誤碼、防沖突位置、更新后的有效數(shù)據(jù)參數(shù)和更新后的卡標(biāo)識(shí)參數(shù)第二測(cè)試應(yīng)答,返回步驟201。
本實(shí)施例中,第二預(yù)設(shè)值為70。
例如:讀卡器將卡標(biāo)識(shí)參數(shù)更新為防沖突應(yīng)答880431378a、將有效數(shù)據(jù)參數(shù)更新為第二預(yù)設(shè)值70,向上位機(jī)報(bào)告包括錯(cuò)誤碼00、防沖突位置00、更新后的有效數(shù)據(jù)參數(shù)70和更新后的卡標(biāo)識(shí)參數(shù)880431378a的第二測(cè)試應(yīng)答880431378a7000009000,返回步驟201。
步驟210:讀卡器從第三測(cè)試指令中獲取串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln),根據(jù)串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)計(jì)算第一校驗(yàn)值,組織包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)、卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值的選擇指令;
其中,讀卡器從第三測(cè)試指令中獲取串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)具體為:讀卡器獲取第三測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第三測(cè)試指令的指令標(biāo)識(shí),根據(jù)第三測(cè)試指令中的指令標(biāo)識(shí)從第三測(cè)試指令中獲取串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)。
例如:上位機(jī)獲取第三測(cè)試指令8105937005880431378a中的第二個(gè)字節(jié)上的數(shù)據(jù)05,并將其作為第三測(cè)試指令的指令標(biāo)識(shí),根據(jù)第三測(cè)試指令中的指令標(biāo)識(shí)05獲取第三測(cè)試指令中第三字節(jié)上的數(shù)據(jù)93,并將其作為串聯(lián)級(jí)別參數(shù)(sel)93,獲取第三測(cè)試指令中第四字節(jié)上的數(shù)據(jù)70,并將其作為有效數(shù)據(jù)參數(shù)(nvb)70,獲取第三測(cè)試指令中第五字節(jié)上的數(shù)據(jù)05,并將其作為卡標(biāo)識(shí)參數(shù)(uidcln)的長(zhǎng)度05,根據(jù)卡標(biāo)識(shí)參數(shù)(uidcln)的長(zhǎng)度05,獲取第五字節(jié)之后(不包括第五字節(jié))數(shù)據(jù)長(zhǎng)度為5個(gè)字節(jié)的數(shù)據(jù)880431378a,并將其作為卡標(biāo)識(shí)參數(shù)(uidcln)。
其中,根據(jù)串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)計(jì)算第一校驗(yàn)值,組織包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)、卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值的選擇指令,具體為:根據(jù)串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)計(jì)算第一校驗(yàn)值,將串聯(lián)級(jí)別參數(shù)設(shè)置在選擇指令的第一個(gè)字節(jié)上,將有效數(shù)據(jù)參數(shù)設(shè)置在選擇指令的第二個(gè)字節(jié)上,將卡標(biāo)識(shí)參數(shù)設(shè)置在選擇指令的第三到第七字節(jié)上,將第一校驗(yàn)值設(shè)置在卡標(biāo)識(shí)參數(shù)之后,組織包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)、卡標(biāo)識(shí)參數(shù)和第一校驗(yàn)值的選擇指令。
例如:根據(jù)串聯(lián)級(jí)別參數(shù)93、有效數(shù)據(jù)參數(shù)70和卡標(biāo)識(shí)參數(shù)880431378a計(jì)算第一校驗(yàn)值crc_a。將串聯(lián)級(jí)別參數(shù)93設(shè)置在選擇指令的第一個(gè)字節(jié)上,將有效數(shù)據(jù)參數(shù)設(shè)置在選擇指令的第二個(gè)字節(jié)上70,將卡標(biāo)識(shí)參數(shù)880431378a設(shè)置在選擇指令的第三到第七字節(jié)上,將第一校驗(yàn)值crc_a設(shè)置在卡標(biāo)識(shí)參數(shù)之后,組織包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)、卡標(biāo)識(shí)參數(shù)和第一校驗(yàn)值的選擇指令9370880431378acrc_a。
本實(shí)施例中,第三測(cè)試指令中,還可以包括:第一校驗(yàn)值;相應(yīng)地,步驟210可以被替換為:讀卡器從第三測(cè)試指令中獲取串聯(lián)級(jí)別參數(shù)(sel)有效數(shù)據(jù)參數(shù)(nvb)、卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值,根據(jù)串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值,組織包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)、卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值的選擇指令。
本實(shí)施例中,選擇指令具體為select指令。
步驟211:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送選擇指令;
步驟212:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的選擇應(yīng)答;
步驟213:讀卡器根據(jù)選擇應(yīng)答封裝第三測(cè)試應(yīng)答,將第三測(cè)試應(yīng)答返回給上位機(jī),返回步驟201;
本步驟可以具體為:讀卡器根據(jù)選擇應(yīng)答封裝包括選擇應(yīng)答的第三測(cè)試應(yīng)答,將第三測(cè)試應(yīng)答返回給上位機(jī),返回步驟201;
例如:讀卡器根據(jù)選擇應(yīng)答封裝24封裝包括選擇應(yīng)答的第三測(cè)試應(yīng)答249000,將第三測(cè)試應(yīng)答返回給上位機(jī),返回步驟201;
本步驟還可以具體為:讀卡器根據(jù)選擇應(yīng)答判斷卡是否處于工作狀態(tài),如果是,則向上位機(jī)報(bào)告卡片處于工作狀態(tài),返回步驟201;否則,更新串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù),向上位機(jī)報(bào)告包括更新后的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第三測(cè)試應(yīng)答,返回步驟201;
具體地,讀卡器獲取選擇應(yīng)答的二進(jìn)制編碼的第一個(gè)字節(jié)的第三比特位上(從低位到高位算起)的數(shù)據(jù),判斷其是否為第一數(shù)值,如果是,則判斷卡未處于工作狀態(tài),則將串聯(lián)級(jí)別參數(shù)更新為下一串聯(lián)級(jí)別值,將有效數(shù)據(jù)參數(shù)更新為第一預(yù)設(shè)值,將卡標(biāo)識(shí)更新為空,向上位機(jī)報(bào)告包括更新后的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第三測(cè)試應(yīng)答,返回步驟201;如果不為第一數(shù)值,則判斷卡處于工作狀態(tài),則向上位機(jī)報(bào)告卡片處于工作狀態(tài),返回步驟201。
本實(shí)施例中,串聯(lián)級(jí)別可以包括三級(jí),分別為:串聯(lián)級(jí)別1、串聯(lián)級(jí)別2和串聯(lián)級(jí)別3,其串聯(lián)級(jí)別值分別為第一串聯(lián)級(jí)別值93、第二串聯(lián)級(jí)別值95和第三串聯(lián)級(jí)別值97。其中,串聯(lián)級(jí)別1的下一串聯(lián)級(jí)別為串聯(lián)級(jí)別2,串聯(lián)級(jí)別2的下一串聯(lián)級(jí)別為串聯(lián)級(jí)別3。第一預(yù)設(shè)值為20。
例如:讀卡器獲取選擇應(yīng)答24crc_a的二進(jìn)制編碼00100100……的第一個(gè)字節(jié)24的第三比特位上(從低位到高位算起)的數(shù)據(jù),判斷其為第一數(shù)值1,則判斷卡未處于工作狀態(tài),則將串聯(lián)級(jí)別參數(shù)更新為下一串聯(lián)級(jí)別值即第二串聯(lián)級(jí)別值95,將有效數(shù)據(jù)參數(shù)更新為第一預(yù)設(shè)值20,將卡標(biāo)識(shí)更新為空,將更新后的串聯(lián)級(jí)別參數(shù)95、有效數(shù)據(jù)參數(shù)20和卡標(biāo)識(shí)參數(shù)作為第三測(cè)試應(yīng)答,向上位機(jī)報(bào)告第三測(cè)試應(yīng)答,返回步驟201。
再例如:讀卡器獲取選擇應(yīng)答20crc_a的二進(jìn)制編碼00100000……的第一個(gè)字節(jié)20的第三比特位上(從低位到高位算起)的數(shù)據(jù),判斷其數(shù)值為0,不為第一數(shù)值1,則判斷卡處于工作狀態(tài),則向上位機(jī)報(bào)告卡片處于工作狀態(tài),返回步驟201。
步驟214:讀卡器從第四測(cè)試指令中獲取第一參數(shù)和第二參數(shù),根據(jù)第一參數(shù)和第二參數(shù)組織獲取通訊數(shù)據(jù)指令;
其中,讀卡器從第四測(cè)試指令中獲取第一參數(shù)和第二參數(shù),具體為:讀卡器獲取第四測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第四測(cè)試指令的指令標(biāo)識(shí),根據(jù)第四測(cè)試指令中的指令標(biāo)識(shí)從第四測(cè)試指令中獲取第一參數(shù)和第二參數(shù)。
例如:上位機(jī)獲取第四測(cè)試指令8106080000中的第二個(gè)字節(jié)上的數(shù)據(jù)06,并將其作為第四測(cè)試指令的指令標(biāo)識(shí),根據(jù)第四測(cè)試指令中的指令標(biāo)識(shí)06獲取第四測(cè)試指令中第三字節(jié)上的數(shù)據(jù)08,并將其作為第一參數(shù),獲取第四測(cè)試指令中第四字節(jié)上的數(shù)據(jù)00,并將其作為第二參數(shù)。
其中,根據(jù)第一參數(shù)和第二參數(shù)組織獲取通訊數(shù)據(jù)指令具體為:讀卡器將第三預(yù)設(shè)值設(shè)置在獲取通訊數(shù)據(jù)指令中的第一字節(jié)上;將第一參數(shù)的二進(jìn)制編碼左移四位,得到獲取通訊數(shù)據(jù)指令中的第二字節(jié)上的數(shù)據(jù)的高四位,將第二參數(shù)的二進(jìn)制編碼的低四位作為獲取通訊數(shù)據(jù)指令中的第二字節(jié)上的數(shù)據(jù)的低四位;根據(jù)獲取通訊數(shù)據(jù)指令中的第一字節(jié)和第二字節(jié)上的數(shù)據(jù)計(jì)算第二校驗(yàn)值,將第二校驗(yàn)值設(shè)置在獲取通訊數(shù)據(jù)指令中的第二字節(jié)后,得到獲取通訊數(shù)據(jù)指令。
例如:將第三預(yù)設(shè)值e0設(shè)置在獲取通訊數(shù)據(jù)指令中的第一字節(jié)上;將第一參數(shù)08的二進(jìn)制編碼00001000左移四位,得到獲取通訊數(shù)據(jù)指令中的第二字節(jié)上的數(shù)據(jù)的高四位1000,將第二參數(shù)00的二進(jìn)制編碼00000000的低四位0000作為獲取通訊數(shù)據(jù)指令中的第二字節(jié)上的數(shù)據(jù)的低四位;根據(jù)獲取通訊數(shù)據(jù)指令中的第一字節(jié)和第二字節(jié)上的數(shù)據(jù)計(jì)算第二校驗(yàn)值crc,將第二校驗(yàn)值設(shè)置在獲取通訊數(shù)據(jù)指令中的第二字節(jié)后,得到獲取通訊數(shù)據(jù)指令e080crc。
本實(shí)施例中,獲取通訊數(shù)據(jù)指令具體為rats指令。
步驟215:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;
步驟216:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的獲取通訊數(shù)據(jù)應(yīng)答;
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的獲取通訊數(shù)據(jù)應(yīng)答0e75f7b1024a434f503234325232。
步驟217:讀卡器根據(jù)獲取通訊數(shù)據(jù)應(yīng)答封裝第四測(cè)試應(yīng)答,將第四測(cè)試應(yīng)答返回給上位機(jī),返回步驟201;
例如:讀卡器根據(jù)獲取通訊數(shù)據(jù)應(yīng)答0e75f7b1024a434f503234325232封裝第四測(cè)試應(yīng)答0e75f7b1024a434f5032343252329000,將第四測(cè)試應(yīng)答返回給上位機(jī),返回步驟201。
步驟218:讀卡器從第五測(cè)試指令中獲取第三參數(shù)、第四參數(shù)和第五參數(shù),組織包括第三參數(shù)、第四參數(shù)和第五參數(shù)的通訊協(xié)商指令;
其中,讀卡器從第五測(cè)試指令中獲取第三參數(shù)、第四參數(shù)和第五參數(shù),具體為:讀卡器獲取第五測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第五測(cè)試指令的指令標(biāo)識(shí),根據(jù)第五測(cè)試指令中的指令標(biāo)識(shí)獲取第三參數(shù)、第四參數(shù)和第五參數(shù)。
例如:讀卡器從第五測(cè)試指令810800000300110f中的第二個(gè)字節(jié)上的數(shù)據(jù)08,并將其作為第三測(cè)試指令的指令標(biāo)識(shí),根據(jù)第三測(cè)試指令中的指令標(biāo)識(shí)08獲取第五測(cè)試指令中第六字節(jié)上的數(shù)據(jù)00,并將其作為第三參數(shù)00,獲取第五測(cè)試指令中第七字節(jié)上的數(shù)據(jù)11,并將其作為第四參數(shù)11,獲取第五測(cè)試指令中第八字節(jié)上的數(shù)據(jù)0f,并將其作為第五參數(shù)0f。
其中根據(jù)第三參數(shù)、第四參數(shù)和第五參數(shù)組織通訊協(xié)商指令,具體為:將1101作為通訊協(xié)商指令的第一字節(jié)上的數(shù)據(jù)的高四位,將第三參數(shù)的二進(jìn)制編碼的低四位作為通訊協(xié)商指令中的第一字節(jié)上的數(shù)據(jù)的低四位;將第四參數(shù)設(shè)置在通訊協(xié)商指令中的第二字節(jié)上;將第五參數(shù)設(shè)置在通訊協(xié)商指令中的第三字節(jié)上,根據(jù)通訊協(xié)商指令中的第一字節(jié)、第二字節(jié)和第三字節(jié)上的數(shù)據(jù)計(jì)算第三校驗(yàn)值,將第三校驗(yàn)值設(shè)置在通訊協(xié)商指令中的第三字節(jié)后,得到通訊協(xié)商指令。
例如,將1101作為通訊協(xié)商指令的第一字節(jié)上的數(shù)據(jù)的高四位,將第三參數(shù)00的二進(jìn)制編碼00000000的低四位0000作為通訊協(xié)商指令中的第一字節(jié)上的數(shù)據(jù)的低四位;將第四參數(shù)11設(shè)置在通訊協(xié)商指令中的第二字節(jié)上;將第五參數(shù)0f設(shè)置在通訊協(xié)商指令中的第三字節(jié)上,根據(jù)通訊協(xié)商指令中的第一字節(jié)、第二字節(jié)和第三字節(jié)上的數(shù)據(jù)計(jì)算第三校驗(yàn)值crc,將第三校驗(yàn)值設(shè)置在通訊協(xié)商指令中的第三字節(jié)后,得到通訊協(xié)商指令d0110fcrc。
本實(shí)施例中,通訊協(xié)商指令具體為pps指令。
其中,根據(jù)第三參數(shù)、第四參數(shù)和第五參數(shù)組織通訊協(xié)商指令,還可以具體為:將第三參數(shù)設(shè)置在通訊協(xié)商指令中的第一字節(jié)上;將第四參數(shù)設(shè)置在通訊協(xié)商指令中的第二字節(jié)上;將第五參數(shù)設(shè)置在通訊協(xié)商指令中的第三字節(jié)上,根據(jù)通訊協(xié)商指令中的第一字節(jié)、第二字節(jié)和第三字節(jié)上的數(shù)據(jù)計(jì)算第三校驗(yàn)值,將第三校驗(yàn)值設(shè)置在通訊協(xié)商指令中的第三字節(jié)后,得到通訊協(xié)商指令。
例如:當(dāng)上位機(jī)獲取到第五測(cè)試指令為8108000003d0110f時(shí),將第三參數(shù)d0設(shè)置在通訊協(xié)商指令中的第一字節(jié)上;將第四參數(shù)11設(shè)置在通訊協(xié)商指令中的第二字節(jié)上;將第五參數(shù)0f設(shè)置在通訊協(xié)商指令中的第三字節(jié)上,根據(jù)通訊協(xié)商指令中的第一字節(jié)、第二字節(jié)和第三字節(jié)上的數(shù)據(jù)計(jì)算第三校驗(yàn)值crc,將第三校驗(yàn)值設(shè)置在通訊協(xié)商指令中的第三字節(jié)后,得到通訊協(xié)商指令d0110fcrc。
步驟219:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送通訊協(xié)商指令;
步驟220:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的通訊協(xié)商應(yīng)答;
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的通訊協(xié)商應(yīng)答d0。
步驟221:讀卡器根據(jù)通訊協(xié)商應(yīng)答封裝第五測(cè)試應(yīng)答,將第五測(cè)試應(yīng)答返回給上位機(jī),返回步驟201;
例如:讀卡器根據(jù)通訊協(xié)商應(yīng)答d0封裝第五測(cè)試應(yīng)答d09000,將第五測(cè)試應(yīng)答返回給上位機(jī),返回步驟201。
步驟222:讀卡器從第六測(cè)試指令中獲取掛起參數(shù),根據(jù)掛起參數(shù)組織掛起指令;
步驟223:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送掛起指令;
步驟224:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的掛起應(yīng)答;
步驟225:讀卡器根據(jù)掛起應(yīng)答封裝第六測(cè)試應(yīng)答,向上位機(jī)返回第六測(cè)試應(yīng)答,返回步驟201;
步驟226:讀卡器關(guān)閉非接場(chǎng),返回步驟201。
需說(shuō)明的是,本實(shí)施例中,上位機(jī)和讀卡器之間通訊的指令和指令應(yīng)答的格式均符合apdu(applicationprotocoldataunit,應(yīng)用協(xié)議數(shù)據(jù)單元)協(xié)議。
本實(shí)施例中,讀卡器向智能卡發(fā)送選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令之前,還包括:設(shè)置應(yīng)答校驗(yàn)測(cè)試;
本實(shí)施例中,應(yīng)答校驗(yàn)測(cè)試具體為crc校驗(yàn)測(cè)試,用于測(cè)試智能卡返回的應(yīng)答中的crc是否正確。
若讀卡器向智能卡發(fā)送選擇指令之前,還包括:設(shè)置應(yīng)答校驗(yàn)測(cè)試;第三測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;則第四測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;第五測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果。
其中,設(shè)置應(yīng)答校驗(yàn)測(cè)試具體為:讀卡器將測(cè)試寄存器中的應(yīng)答校驗(yàn)測(cè)試標(biāo)志位置位。
其中,獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),將其作為應(yīng)答校驗(yàn)測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的應(yīng)答校驗(yàn)測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為應(yīng)答校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),若應(yīng)答校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示智能卡返回的選擇應(yīng)答中存在校驗(yàn)錯(cuò)誤;否則,表示智能卡返回的應(yīng)答中不存在校驗(yàn)錯(cuò)誤。
本實(shí)施例中,應(yīng)答校驗(yàn)測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第二比特位(從低位到高位)。
進(jìn)一步地,第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令中包括:還包括:應(yīng)答校驗(yàn)測(cè)試參數(shù);
若第三測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟212;
若第四測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),則設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟216;
若第五測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),則設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟220。
本實(shí)施例中,讀卡器向智能卡發(fā)送初始化指令或喚醒指令和/或防沖突指令和/或選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令和/或掛起指令之前,還包括:設(shè)置數(shù)據(jù)幀測(cè)試;
若向智能卡發(fā)送初始化指令或喚醒指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第一測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第二測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第三測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;則第四測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第五測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送掛起之前,設(shè)置數(shù)據(jù)幀測(cè)試;第六測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
其中,設(shè)置數(shù)據(jù)幀測(cè)試具體為:讀卡器將測(cè)試寄存器中的數(shù)據(jù)幀測(cè)試標(biāo)志位置位。
其中,獲取數(shù)據(jù)幀測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取數(shù)據(jù)幀測(cè)試結(jié)果標(biāo)識(shí),將其作為數(shù)據(jù)幀測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的數(shù)據(jù)幀測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為數(shù)據(jù)幀測(cè)試結(jié)果標(biāo)識(shí),若數(shù)數(shù)據(jù)幀測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示智能卡返回的應(yīng)答中存在數(shù)據(jù)幀錯(cuò)誤;否則,表示智能卡返回的應(yīng)答中不存在數(shù)據(jù)幀錯(cuò)誤。
本實(shí)施例中,數(shù)據(jù)幀測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第三比特位(從低位到高位)。數(shù)據(jù)幀錯(cuò)誤具體為智能卡返回的應(yīng)答的第一個(gè)比特位上的數(shù)據(jù)出現(xiàn)錯(cuò)誤。
進(jìn)一步地,第一測(cè)試指令和/或第二測(cè)試指令中和/或第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令和/或第六測(cè)試指令中還包括:數(shù)據(jù)幀測(cè)試參數(shù);
若第一測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送初始化指令或喚醒指令,執(zhí)行步驟204;
若第二測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,執(zhí)行步驟208;
若第三測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟212;
若第四測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟216;
若第五測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟220;
若第六測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送掛起指令,執(zhí)行步驟224。
本實(shí)施例中,向智能卡發(fā)送初始化指令或喚醒指令和/或防沖突指令和/或選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令和/或掛起指令之前,還包括:設(shè)置奇偶校驗(yàn)測(cè)試;
若向智能卡發(fā)送初始化指令或喚醒指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第一測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第二測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第三測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;則第四測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第五測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送掛起之前,設(shè)置奇偶校驗(yàn)測(cè)試;第六測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
其中,設(shè)置奇偶校驗(yàn)測(cè)試具體為:讀卡器將測(cè)試寄存器中的奇偶校驗(yàn)測(cè)試標(biāo)志位置位。
其中,獲取奇偶校驗(yàn)測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取奇偶校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),將其作為奇偶校驗(yàn)測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的奇偶校驗(yàn)測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為奇偶校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),若數(shù)奇偶校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示智能卡返回的應(yīng)答中存在奇偶校驗(yàn)錯(cuò)誤;否則,表示智能卡返回的應(yīng)答中不存在奇偶校驗(yàn)錯(cuò)誤。
本實(shí)施例中,奇偶校驗(yàn)測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第四比特位(從低位到高位)。
進(jìn)一步地,第一測(cè)試指令和/或第二測(cè)試指令中和/或第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令和/或第六測(cè)試指令中還包括:奇偶校驗(yàn)測(cè)試參數(shù);
若第一測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送初始化指令或喚醒指令,執(zhí)行步驟204;
若第二測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,執(zhí)行步驟208;
若第三測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟212;
若第四測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟216;
若第五測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟220;
若第六測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送掛起指令,執(zhí)行步驟224。
本實(shí)施例中,讀卡器向智能卡發(fā)送初始化指令或喚醒指令和/或防沖突指令之前和/或選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令和/或掛起指令之前,還包括:設(shè)置接收超時(shí)測(cè)試;
若向智能卡發(fā)送初始化指令或喚醒指令之前,設(shè)置接收超時(shí)測(cè)試;第一測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置接收超時(shí)測(cè)試;第二測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置接收超時(shí)測(cè)試;第三測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置接收超時(shí)測(cè)試;則第四測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置接收超時(shí)測(cè)試;第五測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送掛起之前,設(shè)置接收超時(shí)測(cè)試;第六測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
其中,設(shè)置接收超時(shí)測(cè)試,具體為:讀卡器將測(cè)試寄存器中的接收超時(shí)測(cè)試標(biāo)志位置位。
其中,獲取接收超時(shí)測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取接收超時(shí)測(cè)試結(jié)果標(biāo)識(shí),將其作為接收超時(shí)測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的接收超時(shí)測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為接收超時(shí)測(cè)試結(jié)果標(biāo)識(shí),若接收超時(shí)測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示在接收智能卡返回的應(yīng)答過(guò)程中存在接收超時(shí)錯(cuò)誤;否則,表示在接收智能卡返回的應(yīng)答過(guò)程中不存在接收超時(shí)錯(cuò)誤。
本實(shí)施例中,接收超時(shí)測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第六比特位(從低位到高位)。本實(shí)施例中,接收超時(shí)錯(cuò)誤包括射頻模塊超時(shí)錯(cuò)誤和訪(fǎng)問(wèn)超時(shí)錯(cuò)誤。
進(jìn)一步地,第一測(cè)試指令和/或第二測(cè)試指令中和/或第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令和/或第六測(cè)試指令中還包括:接收超時(shí)測(cè)試參數(shù);
若第一測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送初始化指令或喚醒指令,執(zhí)行步驟204;
若第二測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,執(zhí)行步驟208;
若第三測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟212;
若第四測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟216;
若第五測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟220;
若第六測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送掛起指令,執(zhí)行步驟224。
實(shí)施例3
本實(shí)施例提供了一種測(cè)試智能卡的方法的流程圖,如圖3所示,包括:
步驟301:讀卡器等待接收來(lái)自上位機(jī)的指令;若指令為開(kāi)啟非接場(chǎng)指令,則執(zhí)行步驟302;若指令為第一測(cè)試指令,則執(zhí)行步驟303;若指令為第二測(cè)試指令,則執(zhí)行步驟306;若指令為第三測(cè)試指令,則執(zhí)行步驟310;若指令為第四測(cè)試指令,則執(zhí)行步驟314;若指令為第五測(cè)試指令,則執(zhí)行步驟318;若指令為第六測(cè)試指令,則執(zhí)行步驟322;若指令為關(guān)閉非接場(chǎng)指令,則執(zhí)行步驟326;
本實(shí)施例中,讀卡器可以根據(jù)接收到的指令的指令標(biāo)識(shí)判斷指令的類(lèi)型。
步驟302:讀卡器開(kāi)啟非接場(chǎng),返回步驟301;
步驟303:讀卡器從第一測(cè)試指令中獲取包括準(zhǔn)備參數(shù)的初始化指令或喚醒指令,清空應(yīng)答寄存器,向智能卡發(fā)送初始化指令或喚醒指令;
具體地,讀卡器獲取第一測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第一測(cè)試指令的指令標(biāo)識(shí),根據(jù)第一測(cè)試指令中的指令標(biāo)識(shí)從第一測(cè)試指令中獲取包括準(zhǔn)備參數(shù)的初始化指令或者喚醒指令;清空應(yīng)答寄存器,向智能卡發(fā)送初始化指令或喚醒指令;
例如:上位機(jī)獲取第一測(cè)試指令8103260000中的第二個(gè)字節(jié)上的數(shù)據(jù)03,并將其作為第一測(cè)試指令的指令標(biāo)識(shí),根據(jù)第一測(cè)試指令中的指令標(biāo)識(shí)03從第一測(cè)試指令中獲取包括準(zhǔn)備參數(shù)26的初始化指令26,清空應(yīng)答寄存器,向智能卡發(fā)送初始化指令26。
本實(shí)施例中,初始化指令具體為reqa指令,喚醒指令具體為wupa指令。本實(shí)施例中,智能卡具體為非接智能卡。
步驟304:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的準(zhǔn)備應(yīng)答;
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答為4800。
步驟305:讀卡器根據(jù)準(zhǔn)備應(yīng)答封裝第一測(cè)試應(yīng)答,將第一測(cè)試應(yīng)答返回給上位機(jī),返回步驟301;
具體地,讀卡器根據(jù)準(zhǔn)備應(yīng)答封裝包括準(zhǔn)備應(yīng)答的第一測(cè)試應(yīng)答,將第一測(cè)試應(yīng)答返回給上位機(jī),返回步驟301。
例如:讀卡器根據(jù)準(zhǔn)備應(yīng)答4800封裝包括準(zhǔn)備應(yīng)答的第一測(cè)試應(yīng)答48009000,將第一測(cè)試應(yīng)答48009000,返回給上位機(jī),返回步驟301。
步驟306:讀卡器從第二測(cè)試指令中獲取包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)的防沖突指令;
其中,讀卡器從第二測(cè)試指令中獲取包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)的防沖突指令具體為:讀卡器獲取第二測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第二測(cè)試指令的指令標(biāo)識(shí),根據(jù)第二測(cè)試指令中的指令標(biāo)識(shí)從第二測(cè)試指令中獲取包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)和卡標(biāo)識(shí)參數(shù)(uidcln)的防沖突指令。
例如:上位機(jī)獲取第二測(cè)試指令8104932000中的第二個(gè)字節(jié)上的數(shù)據(jù)04,并將其作為第二測(cè)試指令的指令標(biāo)識(shí),根據(jù)第二測(cè)試指令中的指令標(biāo)識(shí)04獲取第二測(cè)試指令中的第三到第五字節(jié)上的數(shù)據(jù),并將第三字節(jié)上的數(shù)據(jù)93作為防沖突指令中的串聯(lián)級(jí)別參數(shù)(sel)93,將第二測(cè)試指令中第四字節(jié)上的數(shù)據(jù)20作為防沖突指令中的有效數(shù)據(jù)參數(shù)(nvb)20,將第二測(cè)試指令中第五字節(jié)上的數(shù)據(jù)00,作為卡標(biāo)識(shí)參數(shù)(uidcln)的長(zhǎng)度,得到包括串聯(lián)級(jí)別參數(shù)93和有效數(shù)據(jù)參數(shù)20的防沖突指令9320。
本實(shí)施例中,防沖突指令具體為anticollision指令。
步驟307:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送防沖突指令;
本實(shí)施例中,讀卡器向智能卡發(fā)送防沖突應(yīng)答之前還包括:設(shè)置防沖突應(yīng)答。
其中,設(shè)置防沖突應(yīng)答具體為:讀卡器將測(cè)試寄存器中的防沖突測(cè)試標(biāo)志位置位。
需要說(shuō)明的是,讀卡器上電后,復(fù)位測(cè)試寄存器中的所有標(biāo)志位。
步驟308:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的防沖突應(yīng)答;從錯(cuò)誤寄存器中獲取防沖突測(cè)試結(jié)果;
本實(shí)施例中,防沖突測(cè)試結(jié)果包括:防沖突錯(cuò)誤標(biāo)識(shí)和/或防沖突位置。
具體地,讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的防沖突應(yīng)答;從錯(cuò)誤第一寄存器中獲取包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼和/或從錯(cuò)誤第二寄存器中獲取防沖突位置。
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的防沖突應(yīng)答880431378a,從錯(cuò)誤第一寄存器中獲取包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼00;從錯(cuò)誤第二寄存器中獲取防沖突位置00。
本實(shí)施例中,錯(cuò)誤碼中包括防沖突標(biāo)志位,防沖突錯(cuò)誤標(biāo)識(shí)具體為防沖突標(biāo)志位上的數(shù)據(jù)。本實(shí)施例中,錯(cuò)誤碼可以但不限于為1個(gè)字節(jié),防沖突標(biāo)志位可以但不限于為錯(cuò)誤碼中的第五比特位(從低位到高位)。
本實(shí)施中,防沖突位置為具有沖突的多張(兩張或兩張以上)智能卡接收到來(lái)自讀卡器的防沖突指令后,各自向讀卡器返回的信息的二進(jìn)制編碼(從低位到高位)中的第一個(gè)數(shù)值不同的比特位所在的位置。
需說(shuō)明的是,當(dāng)讀卡器上電后,讀卡器復(fù)位錯(cuò)誤第一寄存器中的錯(cuò)誤碼中的所有標(biāo)志位;當(dāng)讀卡器的智能芯片檢測(cè)出存在卡片響應(yīng)沖突后,置位錯(cuò)誤第一寄存器中的錯(cuò)誤碼中的防沖突標(biāo)志位,獲取防沖突位置,并將防沖突位置存儲(chǔ)到錯(cuò)誤第二寄存器中。
更加詳細(xì)地,讀卡器的智能芯片向智能卡發(fā)送防沖突指令后,根據(jù)接收到來(lái)自卡片的數(shù)據(jù)判斷出是否存在卡片響應(yīng)沖突,如果是,則讀卡器的智能芯片根據(jù)接收到來(lái)自智能卡的數(shù)據(jù)獲取防沖突應(yīng)答,將其存儲(chǔ)在應(yīng)答寄存器中,根據(jù)接收到來(lái)自智能卡的數(shù)據(jù)獲取防沖突位置,將防沖突位置存儲(chǔ)到錯(cuò)誤寄存器中;并置位錯(cuò)誤第一寄存器中的錯(cuò)誤碼中的防沖突標(biāo)志位;否則,將接收到的來(lái)自智能卡的數(shù)據(jù)作為防沖突應(yīng)答,并將其存儲(chǔ)在應(yīng)答寄存器中。
步驟309:讀卡器根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果封裝第二測(cè)試應(yīng)答,將第二測(cè)試應(yīng)答返回給上位機(jī),返回步驟301;
本步驟可以具體為:讀卡器將包括防沖突應(yīng)答、包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼和防沖突位置的第二測(cè)試應(yīng)答,將第二測(cè)試應(yīng)答返回給上位機(jī);返回步驟301;
例如:讀卡器將包括防沖突應(yīng)答880431378a、包括防沖突錯(cuò)誤標(biāo)識(shí)的錯(cuò)誤碼00和防沖突位置00的第二測(cè)試應(yīng)答880431378a00009000返回給上位機(jī),返回步驟301。
本步驟又可以具體包括:
步驟309-1:讀卡器根據(jù)錯(cuò)誤碼和/或防沖突位置判斷在當(dāng)前串聯(lián)級(jí)別下是否存在卡片響應(yīng)沖突,如果是,則執(zhí)行步驟309-2;否則,執(zhí)行步驟309-3;
具體地,讀卡器獲取錯(cuò)誤碼,檢測(cè)錯(cuò)誤碼中的防沖突標(biāo)志位是否被置位,如果是,則判斷在當(dāng)前串聯(lián)級(jí)別下存在卡片響應(yīng)沖突,則執(zhí)行步驟309-2;否則,判斷在當(dāng)前串聯(lián)級(jí)別下不存在卡片響應(yīng)沖突,執(zhí)行步驟309-3。
或者讀卡器獲取防沖突位置,判斷防沖突位置是否為00,如果是,則判斷在當(dāng)前串聯(lián)級(jí)別下不存在卡片響應(yīng)沖突,執(zhí)行步驟309-3;否則判斷在當(dāng)前串聯(lián)級(jí)別下存在卡片響應(yīng)沖突,則執(zhí)行步驟309-2。
或者讀卡器獲取錯(cuò)誤碼和防沖突位置,檢測(cè)錯(cuò)誤碼中的防沖突標(biāo)志位是否被置位且判斷防沖突位置是否不為00,如果是,則判斷在當(dāng)前串聯(lián)級(jí)別下是否存在卡片響應(yīng)沖突,如果是,則執(zhí)行步驟309-2;否則,判斷在當(dāng)前串聯(lián)級(jí)別下不存在卡片響應(yīng)沖突,執(zhí)行步驟309-3;
步驟309-2:讀卡器根據(jù)防沖突位置更新有效數(shù)據(jù)參數(shù),根據(jù)防沖突位置和防沖突應(yīng)答獲取卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼,向上位機(jī)報(bào)告包括錯(cuò)誤碼、防沖突位置、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第二測(cè)試應(yīng)答,返回步驟301;
具體地,讀卡器從錯(cuò)誤第二寄存器中獲取防沖突位置,根據(jù)防沖突位置得到增加的有效比特位數(shù),計(jì)算有效數(shù)據(jù)參數(shù)所表示的有效比特位總數(shù)與增加的有效比特位數(shù)的和,根據(jù)計(jì)算得到的結(jié)果更新有效數(shù)據(jù)參數(shù),在防沖突應(yīng)答中獲取防沖突位置之前(包括防沖突位置)的所有比特位上的數(shù)據(jù),并將獲取到的數(shù)據(jù)的中的防沖突位置上的數(shù)據(jù)設(shè)置為第一數(shù)值,并將得到的數(shù)據(jù)作為卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼,向上位機(jī)報(bào)告包括錯(cuò)誤碼、防沖突位置、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第二測(cè)試應(yīng)答,返回步驟301;
優(yōu)選地,第一數(shù)值為1。
例如,讀卡器從錯(cuò)誤第二寄存器中獲取防沖突位置為04,根據(jù)防沖突位置04得到增加的有效比特位數(shù)為4個(gè)比特位,計(jì)算有效數(shù)據(jù)參數(shù)20所表示的有效比特位總數(shù)16與增加的有效比特位數(shù)4的和,根據(jù)計(jì)算得到的結(jié)果20作為更新后的效數(shù)據(jù)參數(shù)所表示的有效比特位總數(shù),將20除以8得到的整數(shù)2,即0010作為更新后的有效數(shù)據(jù)參數(shù)的高四位;將20除以8得到的余數(shù)4,作為更新后的有效數(shù)據(jù)參數(shù)的低四位0100,即更新后的有效數(shù)據(jù)參數(shù)的為00100100,即更新后的有效數(shù)據(jù)參數(shù)為24;在防沖突應(yīng)答0000000000的二進(jìn)制編碼(從低位到高位)00000000……中獲取防沖突位置即第四比特位上的數(shù)據(jù)之前(包括防沖突位置)的所有比特位上的數(shù)據(jù)0000,并將獲取到的數(shù)據(jù)的中的防沖突位置即第四比特位上的數(shù)據(jù)設(shè)置為第一數(shù)值1,得到0001,即08,并將08作為卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼,向上位機(jī)報(bào)告包括錯(cuò)誤碼00、防沖突位置04、有效數(shù)據(jù)參數(shù)24和卡標(biāo)識(shí)參數(shù)08的第二測(cè)試應(yīng)答,返回步驟301;
步驟309-3:讀卡器將卡標(biāo)識(shí)參數(shù)更新為防沖突應(yīng)答,將有效數(shù)據(jù)參數(shù)更新為第二預(yù)設(shè)值,向上位機(jī)報(bào)告包括錯(cuò)誤碼、防沖突位置、更新后的有效數(shù)據(jù)參數(shù)和更新后的卡標(biāo)識(shí)參數(shù)第二測(cè)試應(yīng)答,返回步驟301。
本實(shí)施例中,第二預(yù)設(shè)值為70。
例如:讀卡器將卡標(biāo)識(shí)參數(shù)更新為防沖突應(yīng)答880431378a、將有效數(shù)據(jù)參數(shù)更新為第二預(yù)設(shè)值70,向上位機(jī)報(bào)告包括錯(cuò)誤碼00、防沖突位置00、更新后的有效數(shù)據(jù)參數(shù)70和更新后的卡標(biāo)識(shí)參數(shù)880431378a的第二測(cè)試應(yīng)答880431378a7000009000,返回步驟301。
步驟310:讀卡器從第三測(cè)試指令中獲取包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)、卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值的選擇指令;
具體地,讀卡器獲取第三測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第三測(cè)試指令的指令標(biāo)識(shí),根據(jù)第三測(cè)試指令中的指令標(biāo)識(shí)從第三測(cè)試指令中獲取包括串聯(lián)級(jí)別參數(shù)(sel)、有效數(shù)據(jù)參數(shù)(nvb)、卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值的選擇指令;
例如:上位機(jī)獲取第三測(cè)試指令8105937007880431378acrc_a中的第二個(gè)字節(jié)上的數(shù)據(jù)05,并將其作為第三測(cè)試指令的指令標(biāo)識(shí),根據(jù)第三測(cè)試指令中的指令標(biāo)識(shí)05獲取第三測(cè)試指令中第三到最后一個(gè)字節(jié)上的數(shù)據(jù)937006880431378acrc_a,并將第三字節(jié)上的數(shù)據(jù)作為選擇指令中的串聯(lián)級(jí)別參數(shù)(sel)93,將第三測(cè)試指令中第四字節(jié)上的數(shù)據(jù)70,作為選擇指令中的有效數(shù)據(jù)參數(shù)(nvb),將第三測(cè)試指令中第五字節(jié)上的數(shù)據(jù)07,并將其作為卡標(biāo)識(shí)參數(shù)(uidcln)和第一校驗(yàn)值的數(shù)據(jù)長(zhǎng)度之和,將第三測(cè)試指令中第六到第九字節(jié)上的數(shù)據(jù)作為選擇指令中的卡標(biāo)識(shí)參數(shù)(uidcln),將將第三測(cè)試指令中的第九字節(jié)之后(不包括第九字節(jié))的數(shù)據(jù)作為選擇指令中的第一校驗(yàn)值,得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)、卡標(biāo)識(shí)參數(shù)和第一校驗(yàn)值的選擇指令9370880431378acrc_a。
本實(shí)施例中,選擇指令具體為select指令。
步驟311:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送選擇指令;
步驟312:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的選擇應(yīng)答;
步驟313:讀卡器根據(jù)選擇應(yīng)答封裝第三測(cè)試應(yīng)答,將第三測(cè)試應(yīng)答返回給上位機(jī),返回步驟301;
本步驟可以具體為:讀卡器根據(jù)選擇應(yīng)答封裝包括選擇應(yīng)答的第三測(cè)試應(yīng)答,將第三測(cè)試應(yīng)答返回給上位機(jī),返回步驟301;
例如:讀卡器根據(jù)選擇應(yīng)答封裝24封裝包括選擇應(yīng)答的第三測(cè)試應(yīng)答249000,將第三測(cè)試應(yīng)答返回給上位機(jī),返回步驟301;
本步驟還可以具體為:讀卡器根據(jù)選擇應(yīng)答判斷卡是否處于工作狀態(tài),如果是,則向上位機(jī)報(bào)告卡片處于工作狀態(tài),返回步驟301;否則,更新串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù),向上位機(jī)報(bào)告包括更新后的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第三測(cè)試應(yīng)答,返回步驟301;
具體地,讀卡器獲取選擇應(yīng)答的二進(jìn)制編碼的第一個(gè)字節(jié)的第三比特位上(從低位到高位算起)的數(shù)據(jù),判斷其是否為第一數(shù)值,如果是,則判斷卡未處于工作狀態(tài),則將串聯(lián)級(jí)別參數(shù)更新為下一串聯(lián)級(jí)別值,將有效數(shù)據(jù)參數(shù)更新為第一預(yù)設(shè)值,將卡標(biāo)識(shí)更新為空,向上位機(jī)報(bào)告包括更新后的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第三測(cè)試應(yīng)答,返回步驟301;如果不為第一數(shù)值,則判斷卡處于工作狀態(tài),則向上位機(jī)報(bào)告卡片處于工作狀態(tài),返回步驟301。
本實(shí)施例中,串聯(lián)級(jí)別可以包括三級(jí),分別為:串聯(lián)級(jí)別1、串聯(lián)級(jí)別2和串聯(lián)級(jí)別3,其串聯(lián)級(jí)別值分別為第一串聯(lián)級(jí)別值93、第二串聯(lián)級(jí)別值95和第三串聯(lián)級(jí)別值97。其中,串聯(lián)級(jí)別1的下一串聯(lián)級(jí)別為串聯(lián)級(jí)別2,串聯(lián)級(jí)別2的下一串聯(lián)級(jí)別為串聯(lián)級(jí)別3。第一預(yù)設(shè)值為20。
例如:讀卡器獲取選擇應(yīng)答24crc_a的二進(jìn)制編碼00100100……的第一個(gè)字節(jié)24的第三比特位上(從低位到高位算起)的數(shù)據(jù),判斷其為第一數(shù)值1,則判斷卡未處于工作狀態(tài),則將串聯(lián)級(jí)別參數(shù)更新為下一串聯(lián)級(jí)別值即第二串聯(lián)級(jí)別值95,將有效數(shù)據(jù)參數(shù)更新為第一預(yù)設(shè)值20,將卡標(biāo)識(shí)更新為空,將更新后的串聯(lián)級(jí)別參數(shù)95、有效數(shù)據(jù)參數(shù)20和卡標(biāo)識(shí)參數(shù)作為第三測(cè)試應(yīng)答,向上位機(jī)報(bào)告第三測(cè)試應(yīng)答,返回步驟301。
再例如:讀卡器獲取選擇應(yīng)答20crc_a的二進(jìn)制編碼00100000……的第一個(gè)字節(jié)20的第三比特位上(從低位到高位算起)的數(shù)據(jù),判斷其數(shù)值為0,不為第一數(shù)值1,則判斷卡處于工作狀態(tài),則向上位機(jī)報(bào)告卡片處于工作狀態(tài),返回步驟301。
步驟314:讀卡器從第四測(cè)試指令中獲取獲取通訊數(shù)據(jù)指令;
具體為:讀卡器獲取第四測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第四測(cè)試指令的指令標(biāo)識(shí),根據(jù)第四測(cè)試指令中的指令標(biāo)識(shí)從第四測(cè)試指令中獲取獲取通訊數(shù)據(jù)指令。
例如:上位機(jī)獲取第四測(cè)試指令8106000004e080crc中的第二個(gè)字節(jié)上的數(shù)據(jù)06,并將其作為第四測(cè)試指令的指令標(biāo)識(shí),根據(jù)第四測(cè)試指令中的指令標(biāo)識(shí)06獲取第四測(cè)試指令中第六字節(jié)到最后一個(gè)字節(jié)之間的數(shù)據(jù)e080crc,并將其作為獲取通訊數(shù)據(jù)指令。
本實(shí)施例中,獲取通訊數(shù)據(jù)指令具體為rats指令。
步驟315:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;
步驟316:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的獲取通訊數(shù)據(jù)應(yīng)答;
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自智能卡的獲取通訊數(shù)據(jù)應(yīng)答0e75f7b1024a434f503234325232。
步驟317:讀卡器根據(jù)獲取通訊數(shù)據(jù)應(yīng)答封裝第四測(cè)試應(yīng)答,將第四測(cè)試應(yīng)答返回給上位機(jī),返回步驟301;
例如:讀卡器根據(jù)獲取通訊數(shù)據(jù)應(yīng)答0e75f7b1024a434f503234325232封裝第四測(cè)試應(yīng)答0e75f7b1024a434f5032343252329000,將第四測(cè)試應(yīng)答返回給上位機(jī),返回步驟301。
步驟318:讀卡器從第五測(cè)試指令中獲取通訊協(xié)商指令;
具體為:讀卡器獲取第五測(cè)試指令中的第二個(gè)字節(jié)上的數(shù)據(jù),并將其作為第五測(cè)試指令的指令標(biāo)識(shí),根據(jù)第五測(cè)試指令中的指令標(biāo)識(shí)從第五測(cè)試指令中獲取通訊協(xié)商指令。
例如:上位機(jī)獲取第五測(cè)試指令8108000005d0110fcrc中的第二個(gè)字節(jié)上的數(shù)據(jù)08,并將其作為第三測(cè)試指令的指令標(biāo)識(shí),根據(jù)第三測(cè)試指令中的指令標(biāo)識(shí)08從第五測(cè)試指令中獲取第六字節(jié)到最后字節(jié)之間的數(shù)據(jù)d0110fcrc,將獲取到的數(shù)據(jù)d0110fcrc作為通訊協(xié)商指令。
本實(shí)施例中,通訊協(xié)商指令具體為pps指令。
步驟319:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送通訊協(xié)商指令;
步驟320:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的通訊協(xié)商應(yīng)答;
例如:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的通訊協(xié)商應(yīng)答d0。
步驟321:讀卡器根據(jù)通訊協(xié)商應(yīng)答封裝第五測(cè)試應(yīng)答,將第五測(cè)試應(yīng)答返回給上位機(jī),返回步驟301;
例如:讀卡器根據(jù)通訊協(xié)商應(yīng)答d0封裝第五測(cè)試應(yīng)答d09000,將第五測(cè)試應(yīng)答返回給上位機(jī),返回步驟301。
步驟322:讀卡器從第六測(cè)試指令中獲取掛起參數(shù),根據(jù)掛起參數(shù)組織掛起指令;
步驟323:讀卡器清空應(yīng)答寄存器,向智能卡發(fā)送掛起指令;
步驟324:讀卡器從應(yīng)答寄存器中獲取來(lái)自卡片的掛起應(yīng)答;
步驟325:讀卡器根據(jù)掛起應(yīng)答封裝第六測(cè)試應(yīng)答,向上位機(jī)返回第六測(cè)試應(yīng)答,返回步驟301;
步驟326:讀卡器關(guān)閉非接場(chǎng),返回步驟301。
需說(shuō)明的是,本實(shí)施例中,上位機(jī)和讀卡器之間通訊的指令和指令應(yīng)答的格式可以均符合apdu(applicationprotocoldataunit,應(yīng)用協(xié)議數(shù)據(jù)單元)協(xié)議。
本實(shí)施例中,讀卡器向智能卡發(fā)送選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令之前,還包括:設(shè)置應(yīng)答校驗(yàn)測(cè)試;
本實(shí)施例中,應(yīng)答校驗(yàn)測(cè)試具體為crc校驗(yàn)測(cè)試,用于測(cè)試智能卡返回的應(yīng)答中的crc是否正確。
若讀卡器向智能卡發(fā)送選擇指令之前,還包括:設(shè)置應(yīng)答校驗(yàn)測(cè)試;第三測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;則第四測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;第五測(cè)試應(yīng)答中包括:應(yīng)答校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果。
其中,設(shè)置應(yīng)答校驗(yàn)測(cè)試具體為:讀卡器將測(cè)試寄存器中的應(yīng)答校驗(yàn)測(cè)試標(biāo)志位置位。
其中,獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),將其作為應(yīng)答校驗(yàn)測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的應(yīng)答校驗(yàn)測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為應(yīng)答校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),若應(yīng)答校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示智能卡返回的選擇應(yīng)答中存在校驗(yàn)錯(cuò)誤;否則,表示智能卡返回的應(yīng)答中不存在校驗(yàn)錯(cuò)誤。
本實(shí)施例中,應(yīng)答校驗(yàn)測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第二比特位(從低位到高位)。
進(jìn)一步地,第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令中包括:還包括:應(yīng)答校驗(yàn)測(cè)試參數(shù);
若第三測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟312;
若第四測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),則設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟316;
若第五測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù),則設(shè)置應(yīng)答校驗(yàn)測(cè)試之前,還包括:根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試,如果是,則設(shè)置應(yīng)答校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟320。
本實(shí)施例中,讀卡器向智能卡發(fā)送初始化指令或喚醒指令和/或防沖突指令和/或選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令和/或掛起指令之前,還包括:設(shè)置數(shù)據(jù)幀測(cè)試;
若向智能卡發(fā)送初始化指令或喚醒指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第一測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第二測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第三測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;則第四測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置數(shù)據(jù)幀測(cè)試;第五測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送掛起之前,設(shè)置數(shù)據(jù)幀測(cè)試;第六測(cè)試應(yīng)答中包括:數(shù)據(jù)幀測(cè)試結(jié)果;根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答之前還包括:獲取數(shù)據(jù)幀測(cè)試結(jié)果;
其中,設(shè)置數(shù)據(jù)幀測(cè)試具體為:讀卡器將測(cè)試寄存器中的數(shù)據(jù)幀測(cè)試標(biāo)志位置位。
其中,獲取數(shù)據(jù)幀測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取數(shù)據(jù)幀測(cè)試結(jié)果標(biāo)識(shí),將其作為數(shù)據(jù)幀測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的數(shù)據(jù)幀測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為數(shù)據(jù)幀測(cè)試結(jié)果標(biāo)識(shí),若數(shù)數(shù)據(jù)幀測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示智能卡返回的應(yīng)答中存在數(shù)據(jù)幀錯(cuò)誤;否則,表示智能卡返回的應(yīng)答中不存在數(shù)據(jù)幀錯(cuò)誤。
本實(shí)施例中,數(shù)據(jù)幀測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第三比特位(從低位到高位)。數(shù)據(jù)幀錯(cuò)誤具體為智能卡返回的應(yīng)答的第一個(gè)比特位上的數(shù)據(jù)出現(xiàn)錯(cuò)誤。
進(jìn)一步地,第一測(cè)試指令和/或第二測(cè)試指令中和/或第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令和/或第六測(cè)試指令中還包括:數(shù)據(jù)幀測(cè)試參數(shù);
若第一測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送初始化指令或喚醒指令,執(zhí)行步驟304;
若第二測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,執(zhí)行步驟308;
若第三測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟312;
若第四測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟316;
若第五測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟320;
若第六測(cè)試指令中包括數(shù)據(jù)幀測(cè)試參數(shù),則設(shè)置數(shù)據(jù)幀測(cè)試之前,還包括:根據(jù)數(shù)據(jù)幀測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)幀測(cè)試,如果是,則設(shè)置數(shù)據(jù)幀測(cè)試,繼續(xù);否則,向智能卡發(fā)送掛起指令,執(zhí)行步驟324。
本實(shí)施例中,向智能卡發(fā)送初始化指令或喚醒指令和/或防沖突指令和/或選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令和/或掛起指令之前,還包括:設(shè)置奇偶校驗(yàn)測(cè)試;
若向智能卡發(fā)送初始化指令或喚醒指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第一測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第二測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第三測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;則第四測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置奇偶校驗(yàn)測(cè)試;第五測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送掛起之前,設(shè)置奇偶校驗(yàn)測(cè)試;第六測(cè)試應(yīng)答中包括:奇偶校驗(yàn)測(cè)試結(jié)果;根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答之前還包括:獲取奇偶校驗(yàn)測(cè)試結(jié)果;
其中,設(shè)置奇偶校驗(yàn)測(cè)試具體為:讀卡器將測(cè)試寄存器中的奇偶校驗(yàn)測(cè)試標(biāo)志位置位。
其中,獲取奇偶校驗(yàn)測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取奇偶校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),將其作為奇偶校驗(yàn)測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的奇偶校驗(yàn)測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為奇偶校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí),若數(shù)奇偶校驗(yàn)測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示智能卡返回的應(yīng)答中存在奇偶校驗(yàn)錯(cuò)誤;否則,表示智能卡返回的應(yīng)答中不存在奇偶校驗(yàn)錯(cuò)誤。
本實(shí)施例中,奇偶校驗(yàn)測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第四比特位(從低位到高位)。
進(jìn)一步地,第一測(cè)試指令和/或第二測(cè)試指令中和/或第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令和/或第六測(cè)試指令中還包括:奇偶校驗(yàn)測(cè)試參數(shù);
若第一測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送初始化指令或喚醒指令,執(zhí)行步驟304;
若第二測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,執(zhí)行步驟308;
若第三測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟312;
若第四測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟316;
若第五測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟320;
若第六測(cè)試指令中包括奇偶校驗(yàn)測(cè)試參數(shù),則設(shè)置奇偶校驗(yàn)測(cè)試之前,還包括:根據(jù)奇偶校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置奇偶校驗(yàn)測(cè)試,如果是,則設(shè)置奇偶校驗(yàn)測(cè)試,繼續(xù);否則,向智能卡發(fā)送掛起指令,執(zhí)行步驟324。
本實(shí)施例中,讀卡器向智能卡發(fā)送初始化指令或喚醒指令和/或防沖突指令之前和/或選擇指令和/或獲取通訊數(shù)據(jù)指令和/或通訊協(xié)商指令和/或掛起指令之前,還包括:設(shè)置接收超時(shí)測(cè)試;
若向智能卡發(fā)送初始化指令或喚醒指令之前,設(shè)置接收超時(shí)測(cè)試;第一測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若向智能卡發(fā)送防沖突指令之前,設(shè)置接收超時(shí)測(cè)試;第二測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)防沖突應(yīng)答和防沖突測(cè)試結(jié)果向上位機(jī)報(bào)告第二測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若向智能卡發(fā)送選擇指令之前,設(shè)置接收超時(shí)測(cè)試;第三測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置接收超時(shí)測(cè)試;則第四測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置接收超時(shí)測(cè)試;第五測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
若讀卡器向智能卡發(fā)送掛起之前,設(shè)置接收超時(shí)測(cè)試;第六測(cè)試應(yīng)答中包括:接收超時(shí)測(cè)試結(jié)果;根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答之前還包括:獲取接收超時(shí)測(cè)試結(jié)果;
其中,設(shè)置接收超時(shí)測(cè)試,具體為:讀卡器將測(cè)試寄存器中的接收超時(shí)測(cè)試標(biāo)志位置位。
其中,獲取接收超時(shí)測(cè)試結(jié)果具體為:從錯(cuò)誤第一寄存器中獲取接收超時(shí)測(cè)試結(jié)果標(biāo)識(shí),將其作為接收超時(shí)測(cè)試結(jié)果。
更加具體地,從錯(cuò)誤第一寄存器中獲取錯(cuò)誤碼,獲取錯(cuò)誤碼中的接收超時(shí)測(cè)試標(biāo)志位上的數(shù)據(jù),并將其作為接收超時(shí)測(cè)試結(jié)果標(biāo)識(shí),若接收超時(shí)測(cè)試結(jié)果標(biāo)識(shí)為第一數(shù)值,則表示在接收智能卡返回的應(yīng)答過(guò)程中存在接收超時(shí)錯(cuò)誤;否則,表示在接收智能卡返回的應(yīng)答過(guò)程中不存在接收超時(shí)錯(cuò)誤。
本實(shí)施例中,接收超時(shí)測(cè)試標(biāo)志位可以但不限于為錯(cuò)誤碼中的第六比特位
(從低位到高位)。本實(shí)施例中,接收超時(shí)錯(cuò)誤包括射頻模塊超時(shí)錯(cuò)誤和訪(fǎng)問(wèn)超時(shí)錯(cuò)誤。
進(jìn)一步地,第一測(cè)試指令和/或第二測(cè)試指令中和/或第三測(cè)試指令和/或第四測(cè)試指令中和/或第五測(cè)試指令和/或第六測(cè)試指令中還包括:接收超時(shí)測(cè)試參數(shù);
若第一測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送初始化指令或喚醒指令,執(zhí)行步驟304;
若第二測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送防沖突指令,執(zhí)行步驟308;
若第三測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送選擇指令,執(zhí)行步驟312;
若第四測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令,執(zhí)行步驟316;
若第五測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送通訊協(xié)商指令,執(zhí)行步驟320;
若第六測(cè)試指令中包括接收超時(shí)測(cè)試參數(shù),則設(shè)置接收超時(shí)測(cè)試之前,還包括:根據(jù)接收超時(shí)測(cè)試參數(shù)判斷是否設(shè)置接收超時(shí)測(cè)試,如果是,則設(shè)置接收超時(shí)測(cè)試,繼續(xù);否則,向智能卡發(fā)送掛起指令,執(zhí)行步驟324。
實(shí)施例4
本實(shí)施例提供了一種測(cè)試智能卡的讀卡器,如圖4所示,包括:第一接收模塊01、第二接收模塊02、第三接收模塊03、準(zhǔn)備指令模塊04、防沖突指令模塊05、選擇指令模塊06、第一發(fā)送模塊07、第二發(fā)送模塊08、第三發(fā)送模塊09、第一獲取模塊10、第二獲取模塊11、第三獲取模塊12、第一報(bào)告模塊13、第二報(bào)告模塊14和第三報(bào)告模塊15;
第一接收模塊01,用于接收來(lái)自上位機(jī)的第一測(cè)試指令;
第二接收模塊02,用于接收來(lái)自上位機(jī)的第二測(cè)試指令;
第三接收模塊03,用于接收來(lái)自上位機(jī)的第三測(cè)試指令;
準(zhǔn)備指令模塊04,用于根據(jù)第一接收模塊01接收到的第一測(cè)試指令得到包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;
防沖突指令模塊05,用于根據(jù)第二接收模塊02接收到的第二測(cè)試指令得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;
選擇指令模塊06,用于根據(jù)第三接收模塊03接收到的第三測(cè)試指令得到包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令;
第一發(fā)送模塊07,用于向智能卡發(fā)送準(zhǔn)備指令;
第二發(fā)送模塊08,用于向智能卡發(fā)送防沖突指令;
第三發(fā)送模塊09,用于向智能卡發(fā)送選擇指令;
第一獲取模塊10,用于獲取來(lái)自智能卡的準(zhǔn)備應(yīng)答;
第二獲取模塊11,用于獲取來(lái)自智能卡的防沖突應(yīng)答;
第三獲取模塊12,用于獲取來(lái)自智能卡的選擇應(yīng)答;
第一報(bào)告模塊13,用于根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告第一測(cè)試應(yīng)答;
第二報(bào)告模塊14,用于根據(jù)防沖突應(yīng)答向上位機(jī)報(bào)告第二測(cè)試應(yīng)答;
第三報(bào)告模塊15,用于根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告第三測(cè)試應(yīng)答。
本實(shí)施例中,智能卡具體為非接智能卡。
本實(shí)施例中,準(zhǔn)備指令模塊04,具體用于從第一接收模塊01接收到的第一測(cè)試指令中獲取包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;
防沖突指令模塊05,具體用于從第二接收模塊02接收到的第二測(cè)試指令獲取包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;
選擇指令模塊06,用于從第三接收模塊03接收到的第三測(cè)試指令獲取包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令。
本實(shí)施例中,準(zhǔn)備指令模塊04可以具體包括:第一組織單元;防沖突指令模塊05可以具體包括:第二組織單元;選擇指令模塊06可以具體包括:第三組織單元;
第一組織單元,用于根據(jù)第一接收模塊01接收到的測(cè)試指令中的準(zhǔn)備參數(shù)組織包括準(zhǔn)備參數(shù)的準(zhǔn)備指令;
本實(shí)施例中,準(zhǔn)備參數(shù)具體為初始化參數(shù)或者喚醒參數(shù);準(zhǔn)備指令包括初始化指令或者喚醒指令;
第一組織單元,具體用于若準(zhǔn)備參數(shù)為初始化參數(shù),將初始化參數(shù)作為初始化指令;若準(zhǔn)備參數(shù)為喚醒參數(shù),將喚醒參數(shù)作為喚醒指令。
第二組織單元,用于根據(jù)第二接收模塊02接收到的第二測(cè)試指令中的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)組織包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令;
第二組織單元,具體用于根據(jù)串聯(lián)級(jí)別參數(shù)設(shè)置防沖突指令的第一個(gè)字節(jié)上的數(shù)據(jù),根據(jù)有效數(shù)據(jù)參數(shù)設(shè)置防沖突指令的第二個(gè)字節(jié)上的數(shù)據(jù),根據(jù)卡標(biāo)識(shí)參數(shù)設(shè)置防沖突指令的第二個(gè)字節(jié)之后的數(shù)據(jù),得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的防沖突指令。
第三組織單元,用于根據(jù)第三接收模塊03接收到的第三測(cè)試指令中的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)組織包括第一校驗(yàn)值、串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的選擇指令;
第三組織單元,具體用于根據(jù)第三測(cè)試指令中的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)計(jì)算第一校驗(yàn)值,根據(jù)串聯(lián)級(jí)別參數(shù)設(shè)置選擇指令的第一個(gè)字節(jié)上的數(shù)據(jù),根據(jù)有效數(shù)據(jù)參數(shù)設(shè)置選擇指令的第二個(gè)字節(jié)上的數(shù)據(jù),根據(jù)卡標(biāo)識(shí)參數(shù)設(shè)置選擇指令的第三到第七字節(jié)上的數(shù)據(jù),根據(jù)第一校驗(yàn)值設(shè)置卡標(biāo)識(shí)參數(shù)之后的數(shù)據(jù),得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)、卡標(biāo)識(shí)參數(shù)和第一校驗(yàn)值的選擇指令;
第三組織單元,或者具體用于根據(jù)串聯(lián)級(jí)別參數(shù)設(shè)置選擇指令的第一個(gè)字節(jié)上的數(shù)據(jù),根據(jù)有效數(shù)據(jù)參數(shù)設(shè)置選擇指令的第二個(gè)字節(jié)上的數(shù)據(jù),根據(jù)卡標(biāo)識(shí)參數(shù)設(shè)置選擇指令的第三到第七字節(jié)上的數(shù)據(jù),根據(jù)第三測(cè)試指令中的第一校驗(yàn)值設(shè)置卡標(biāo)識(shí)參數(shù)之后的數(shù)據(jù),得到包括串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)、卡標(biāo)識(shí)參數(shù)和第一校驗(yàn)值的選擇指令。
本實(shí)施例中提供的讀卡器,還可以包括:第一設(shè)置模;
第一設(shè)置模塊,用于設(shè)置防沖突測(cè)試;
第三獲取模塊12,還用于獲取防沖突測(cè)試結(jié)果;
第二報(bào)告模塊14,具體用于根據(jù)防沖突應(yīng)答向上位機(jī)報(bào)告包括防沖突測(cè)試結(jié)果的第二測(cè)試應(yīng)答。
進(jìn)一步地,本實(shí)施例中提供的讀卡器還可以包括第一判斷模塊;第二測(cè)試指令中包括防沖突測(cè)試參數(shù);
第一判斷模塊,用于根據(jù)防沖突測(cè)試參數(shù)判斷是否設(shè)置防沖突測(cè)試;
第一設(shè)置模塊,具體用于當(dāng)?shù)谝慌袛嗄K判斷為是后,設(shè)置防沖突測(cè)試;
第二發(fā)送模塊08,具體用于當(dāng)?shù)谝辉O(shè)置模塊設(shè)置防沖突測(cè)試后,向智能卡發(fā)送防沖突指令;當(dāng)?shù)谝慌袛嗄K判斷為否后,向智能卡發(fā)送防沖突指令。
進(jìn)一步地,第二報(bào)告模塊14,具體包括:第一判斷單元、第一更新單元、第二更新單元、第一報(bào)告單元和第二報(bào)告單元;
第一判斷單元,用于根據(jù)第二獲取模塊11獲取到的防沖突測(cè)試結(jié)果判斷在當(dāng)前串聯(lián)級(jí)別下是否存在卡片響應(yīng)沖突;
第一更新單元,用于當(dāng)?shù)谝慌袛鄦卧袛酁槭呛螅鶕?jù)防沖突測(cè)試結(jié)果中的防沖突位置更新有效數(shù)據(jù)參數(shù),根據(jù)防沖突位置和防沖突應(yīng)答獲取卡標(biāo)識(shí)防沖突碼,將卡標(biāo)識(shí)參數(shù)更新為卡標(biāo)識(shí)防沖突碼;
第一報(bào)告單元,用于向上位機(jī)報(bào)告包括防沖突測(cè)試結(jié)果、第一更新單元更新的有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第二測(cè)試應(yīng)答;
第二更新單元,用于當(dāng)?shù)谝慌袛鄦卧袛酁榉窈螅瑢⒖?biāo)識(shí)參數(shù)更新為防沖突應(yīng)答,將有效數(shù)據(jù)參數(shù)更新為第二預(yù)設(shè)值;
第二報(bào)告單元,用于向上位機(jī)報(bào)告包括第二更新單元更新的防沖突測(cè)試結(jié)果、更新后的有效數(shù)據(jù)參數(shù)和更新后的卡標(biāo)識(shí)參數(shù)第二測(cè)試應(yīng)答。
本實(shí)施例中,第二報(bào)告模塊14,可以具體用于向上位機(jī)報(bào)告包括第二獲取模塊11獲取到的防沖突應(yīng)答的第二測(cè)試應(yīng)答。
本實(shí)施例中,第三報(bào)告模塊15,可以具體用于向上位機(jī)報(bào)告包括第三獲取模塊12獲取到的選擇應(yīng)答的第三測(cè)試應(yīng)答。
本實(shí)施例中,第三報(bào)告模塊15,可以具體包括:第二判斷單元、第三更新單元、第三報(bào)告單元和第四報(bào)告單元;
第二判斷單元,用于根據(jù)第三獲取模塊12獲取到的選擇應(yīng)答判斷智能卡是否處于工作狀態(tài);
第三報(bào)告單元,用于當(dāng)?shù)诙袛鄦卧袛酁槭呛?,向上位機(jī)報(bào)告智能卡處于工作狀態(tài);
第三更新單元,用于當(dāng)?shù)诙袛鄦卧袛酁榉窈?,將串?lián)級(jí)別參數(shù)更新為下一串聯(lián)級(jí)別值,將有效數(shù)據(jù)參數(shù)更新為第一預(yù)設(shè)值,將卡標(biāo)識(shí)更新為空;
第四報(bào)告單元,用于向上位機(jī)報(bào)告包括第三更新單元更新后的串聯(lián)級(jí)別參數(shù)、有效數(shù)據(jù)參數(shù)和卡標(biāo)識(shí)參數(shù)的第三測(cè)試應(yīng)答。
本實(shí)施例中提供的讀卡器,還可以包括:第二設(shè)置模塊;
第二設(shè)置模塊,用于設(shè)置應(yīng)答校驗(yàn)測(cè)試;
本實(shí)施例中,應(yīng)答校驗(yàn)測(cè)試具體為crc校驗(yàn)測(cè)試,用于測(cè)試智能卡返回的應(yīng)答中的crc是否正確。
第三獲取模塊12,還用于獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;
第三報(bào)告模塊15,具體用于根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告包括應(yīng)答校驗(yàn)測(cè)試結(jié)果的第三測(cè)試應(yīng)答。
進(jìn)一步地,本實(shí)施例中提供的讀卡器還可以包括:第二判斷模塊;第三測(cè)試指令中還包括:應(yīng)答校驗(yàn)測(cè)試參數(shù);
第二判斷模塊,用于根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試;
第二設(shè)置模塊,具體用于當(dāng)?shù)诙袛嗄K判斷為是后,設(shè)置應(yīng)答校驗(yàn)測(cè)試;
第三發(fā)送模塊09,具體用于當(dāng)?shù)诙O(shè)置模塊設(shè)置應(yīng)答校驗(yàn)測(cè)試后,向智能卡發(fā)送選擇指令;當(dāng)?shù)诙袛嗄K判斷為否后,向智能卡發(fā)送選擇指令。
本實(shí)施例中提供的讀卡器,還可以包括:第三設(shè)置模塊;
第三設(shè)置模塊,用于設(shè)置數(shù)據(jù)傳輸測(cè)試;
若第三設(shè)置模塊,具體用于當(dāng)?shù)谝话l(fā)送模塊07向智能卡發(fā)送準(zhǔn)備指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則:第一獲取模塊10還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第一報(bào)告模塊13具體用于根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第一測(cè)試應(yīng)答;
若第三設(shè)置模塊,具體用于當(dāng)?shù)诙l(fā)送模塊08向智能卡發(fā)送防沖突指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則:第二獲取模塊11還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第二報(bào)告模塊14具體用于根據(jù)防沖突應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第二測(cè)試應(yīng)答;
若第三設(shè)置模塊,具體用于當(dāng)?shù)谌l(fā)送模塊09向智能卡發(fā)送選擇指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則:第三獲取模塊12還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第三報(bào)告模塊15具體用于根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第三測(cè)試應(yīng)答。
進(jìn)一步地,本實(shí)施例中提供的讀卡器還可以包括:第三判斷模塊;第一測(cè)試指令中和/或第二測(cè)試指令中和/或第三測(cè)試指令中包括:數(shù)據(jù)傳輸測(cè)試參數(shù);
第三判斷模塊,用于根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試;
第三設(shè)置模塊,具體用于若第一測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;若第二測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;若第三測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;
第一發(fā)送模塊07,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,向智能卡發(fā)送準(zhǔn)備指令;若第一測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送準(zhǔn)備指令;
第二發(fā)送模塊08,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,向智能卡發(fā)送防沖突指令;若第二測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送防沖突指令;
第三發(fā)送模塊09,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,用于向智能卡發(fā)送選擇指令;若第三測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送選擇指令。
本實(shí)施例中提供的讀卡器,還可以包括:第四接收模塊、第五接收模塊、獲取通訊數(shù)據(jù)指令模塊、通訊協(xié)商指令模塊、第四獲取模塊、第五獲取模塊、第四發(fā)送模塊、第五發(fā)送模塊、第四報(bào)告模塊和第五報(bào)告模塊;
第四接收模塊,用于接收來(lái)自上位機(jī)的第四測(cè)試指令;
第五接收模塊,用于接收來(lái)自上位機(jī)的第五測(cè)試指令;
獲取通訊數(shù)據(jù)指令模塊,用于根據(jù)第四測(cè)試指令得到獲取通訊數(shù)據(jù)指令;
第四發(fā)送模塊,用于向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;
第四獲取模塊,用于獲取來(lái)自智能卡的通訊數(shù)據(jù)應(yīng)答;
第四報(bào)告模塊,用于根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告第四測(cè)試應(yīng)答;
通訊協(xié)商指令模塊,用于根據(jù)第五接收模塊接收到的第五測(cè)試指令得到通訊協(xié)商指令;
第五發(fā)送模塊,用于向智能卡發(fā)送通訊協(xié)商指令;
第五獲取模塊,用于獲取來(lái)自智能卡的通訊協(xié)商應(yīng)答;
第五報(bào)告模塊,用于根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告第五測(cè)試應(yīng)答。
進(jìn)一步地,獲取通訊數(shù)據(jù)指令模塊,具體用于根據(jù)第三預(yù)設(shè)值設(shè)置獲取通訊數(shù)據(jù)指令中的第一字節(jié)上的數(shù)據(jù),根據(jù)第四測(cè)試指令中的第一參數(shù)和第二參數(shù)設(shè)置獲取通訊數(shù)據(jù)指令中的第二字節(jié)上的數(shù)據(jù);根據(jù)獲取通訊數(shù)據(jù)指令中的第一字節(jié)和第二字節(jié)上的數(shù)據(jù)計(jì)算第二校驗(yàn)值,將第二校驗(yàn)值設(shè)置在獲取通訊數(shù)據(jù)指令中的第二字節(jié)后,得到獲取通訊數(shù)據(jù)指令;
通訊協(xié)商指令模塊,具體用于根據(jù)第五測(cè)試指令中的第二參數(shù)設(shè)置通訊協(xié)商指令中的第一字節(jié)上的數(shù)據(jù);根據(jù)第五測(cè)試指令中的第四參數(shù)設(shè)置通訊協(xié)商指令中的第二字節(jié)上的數(shù)據(jù);根據(jù)第五測(cè)試指令中的第五參數(shù)設(shè)置通訊協(xié)商指令中的第三字節(jié)上的數(shù)據(jù),根據(jù)通訊協(xié)商指令中的第一字節(jié)、第二字節(jié)和第三字節(jié)上的數(shù)據(jù)計(jì)算第三校驗(yàn)值,將第三校驗(yàn)值設(shè)置在通訊協(xié)商指令中的第三字節(jié)后,得到通訊協(xié)商指令。
本實(shí)施例中,獲取通訊數(shù)據(jù)指令模塊,還可以具體用于從第四測(cè)試指令中獲取獲取通訊數(shù)據(jù)指令;
通訊協(xié)商指令模塊,還可以具體用于從第五測(cè)試指令中獲取通訊協(xié)商指令。
本實(shí)施例中提供的讀卡器,還可以包括:第二設(shè)置模塊;第二設(shè)置模塊,用于設(shè)置應(yīng)答校驗(yàn)測(cè)試;
若第二設(shè)置模塊,具體用于在第四發(fā)送模塊向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;則:第四獲取模塊還用于獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;第四報(bào)告模塊,具體用于根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告包括應(yīng)答校驗(yàn)測(cè)試結(jié)果的第四測(cè)試應(yīng)答;
若第二設(shè)置模塊,具體用于在第五發(fā)送模塊向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置應(yīng)答校驗(yàn)測(cè)試;則第五獲取模塊還用于獲取應(yīng)答校驗(yàn)測(cè)試結(jié)果;第五報(bào)告模塊,具體用于根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告包括應(yīng)答校驗(yàn)測(cè)試結(jié)果的第五測(cè)試應(yīng)答。
進(jìn)一步地,本實(shí)施例中提供的讀卡器,還可以包括:第二判斷模塊;第四測(cè)試指令中和/或第五測(cè)試指令中包括:還包括:應(yīng)答校驗(yàn)測(cè)試參數(shù);
第二判斷模塊,用于根據(jù)應(yīng)答校驗(yàn)測(cè)試參數(shù)判斷是否設(shè)置應(yīng)答校驗(yàn)測(cè)試;
第二設(shè)置模塊,具體用于若第四測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù)且當(dāng)?shù)诙袛嗄K判斷為是后,設(shè)置應(yīng)答校驗(yàn)測(cè)試;若第五測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù)且當(dāng)?shù)诙袛嗄K判斷為是后,設(shè)置應(yīng)答校驗(yàn)測(cè)試;
第四發(fā)送模塊,具體用于當(dāng)?shù)诙O(shè)置模塊設(shè)置應(yīng)答校驗(yàn)測(cè)試后,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;若第四測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù)且當(dāng)?shù)诙袛嗄K判斷為否后,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;
第五發(fā)送模塊,具體用于當(dāng)?shù)诙O(shè)置模塊設(shè)置應(yīng)答校驗(yàn)測(cè)試后,向智能卡發(fā)送通訊協(xié)商指令;若第五測(cè)試指令中包括應(yīng)答校驗(yàn)測(cè)試參數(shù)且當(dāng)?shù)诙袛嗄K判斷為否后,向智能卡發(fā)送通訊協(xié)商指令。
本實(shí)施例中提供的讀卡器,還可以包括:第三設(shè)置模塊;
第三設(shè)置模塊,用于設(shè)置數(shù)據(jù)傳輸測(cè)試;
若第三設(shè)置模塊,具體用于當(dāng)?shù)谝话l(fā)送模塊07向智能卡發(fā)送準(zhǔn)備指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則:第一獲取模塊10還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第一報(bào)告模塊13具體用于根據(jù)準(zhǔn)備應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第一測(cè)試應(yīng)答;
若第三設(shè)置模塊,具體用于當(dāng)?shù)诙l(fā)送模塊08向智能卡發(fā)送防沖突指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則:第二獲取模塊11還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第二報(bào)告模塊14具體用于根據(jù)防沖突應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第二測(cè)試應(yīng)答;
若第三設(shè)置模塊,具體用于當(dāng)?shù)谌l(fā)送模塊09向智能卡發(fā)送選擇指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則:第三獲取模塊12還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第三報(bào)告模塊15具體用于根據(jù)選擇應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第三測(cè)試應(yīng)答;
若第三設(shè)置模塊,具體用于當(dāng)?shù)谒陌l(fā)送模塊向智能卡發(fā)送獲取通訊數(shù)據(jù)指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則:第四獲取模塊還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第四報(bào)告模塊具體用于根據(jù)通訊數(shù)據(jù)應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第四測(cè)試應(yīng)答;
若第三設(shè)置模塊,具體用于當(dāng)?shù)谖灏l(fā)送模塊向智能卡發(fā)送通訊協(xié)商指令之前,設(shè)置數(shù)據(jù)傳輸測(cè)試;則第五獲取模塊還用于獲取數(shù)據(jù)傳輸測(cè)試結(jié)果;第五報(bào)告模塊具體用于根據(jù)通訊協(xié)商應(yīng)答向上位機(jī)報(bào)告包括數(shù)據(jù)傳輸測(cè)試結(jié)果的第五測(cè)試應(yīng)答。
進(jìn)一步地,本實(shí)施例中提供的讀卡器還可以包括:第三判斷模塊;第一測(cè)試指令中和/或第二測(cè)試指令中和/或第三測(cè)試指令中和/或第四測(cè)試指令中和/或第五測(cè)試指令中包括:數(shù)據(jù)傳輸測(cè)試參數(shù);
第三判斷模塊,用于根據(jù)數(shù)據(jù)傳輸測(cè)試參數(shù)判斷是否設(shè)置數(shù)據(jù)傳輸測(cè)試;
第三設(shè)置模塊,具體用于若第一測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;若第二測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;若第三測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;若第四測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;若第五測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為是后,設(shè)置數(shù)據(jù)傳輸測(cè)試;
第一發(fā)送模塊07,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,向智能卡發(fā)送準(zhǔn)備指令;若第一測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送準(zhǔn)備指令;
第二發(fā)送模塊08,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,向智能卡發(fā)送防沖突指令;若第二測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送防沖突指令;
第三發(fā)送模塊09,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,向智能卡發(fā)送選擇指令;若第三測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送選擇指令;
第四發(fā)送模塊,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;若第四測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送獲取通訊數(shù)據(jù)指令;
第五發(fā)送模塊,具體用于當(dāng)?shù)谌O(shè)置模塊設(shè)置數(shù)據(jù)傳輸測(cè)試后,向智能卡發(fā)送通訊協(xié)商指令;若第五測(cè)試指令中包括數(shù)據(jù)傳輸測(cè)試參數(shù)且當(dāng)?shù)谌袛嗄K判斷為否后,向智能卡發(fā)送通訊協(xié)商指令。
本實(shí)施例中提供的讀卡器,還可以包括:第六接收模塊、掛起指令模塊、第六發(fā)送模塊、第六獲取模塊和第六報(bào)告模塊;
第六接收模塊,用于接收來(lái)自上位機(jī)的第六測(cè)試指令;
掛起指令模塊,用于根據(jù)第六接收模塊接收到的第六測(cè)試指令得到包括掛起參數(shù)的第六測(cè)試指令;
第六發(fā)送模塊,用于向智能卡發(fā)送第六測(cè)試指令;
第六獲取模塊,用于獲取來(lái)自智能卡的掛起應(yīng)答;
第六報(bào)告模塊,用于根據(jù)掛起應(yīng)答向上位機(jī)報(bào)告第六測(cè)試應(yīng)答。
本實(shí)施例提供了一種測(cè)試智能卡的讀卡器,讀卡器接收來(lái)自外部的測(cè)試指令,并根據(jù)相應(yīng)的測(cè)試指令得到準(zhǔn)備指令、防沖突指令和選擇指令,向非接智能卡發(fā)送相應(yīng)指令,并且每條指令發(fā)送后,均根據(jù)非接智能卡的應(yīng)答向外部返回測(cè)試結(jié)果,使非接觸智能卡的測(cè)試變得可控,簡(jiǎn)單。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方法,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明公開(kāi)的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。