本發(fā)明涉及電子設(shè)備領(lǐng)域,尤其涉及一種讀卡器及其對卡片上電的方法。
背景技術(shù):
讀卡器,是讀寫IC卡(Integrated Circuit Card,集成電路卡)的機具設(shè)備。IC卡,又稱智能卡(Smart card)、智慧卡(Intelligent card)、微電路卡(Microcircuit card)或微芯片卡等,是將一個微電子芯片嵌入符合ISO 7816標準的卡基中,做成卡片的形式。
本發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術(shù)中至少存在以下缺陷:讀卡器對卡片的上電、協(xié)議和參數(shù)選擇(PPS)需由上位機控制,當(dāng)上位機的操作系統(tǒng)不集成驅(qū)動時,需要讀卡器廠商自行開發(fā)驅(qū)動程序,并且由上位機控制上電和PPS會影響讀卡器對卡片的兼容性以及影響卡片的工作穩(wěn)定性。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是克服現(xiàn)有技術(shù)的缺陷,提供一種讀卡器及其對卡片上電的方法。
本發(fā)明是通過下述技術(shù)方案實現(xiàn)的:
一方面,本發(fā)明提供一種讀卡器對卡片上電的方法,包括:
步驟S1、讀卡器根據(jù)上位機下發(fā)的上電指令中的電壓選擇參數(shù)對卡片上電,并接收卡片返回的復(fù)位應(yīng)答,若上電成功則執(zhí)行步驟S2,若上電失敗則向上位機報告上電失敗,結(jié)束;
步驟S2、所述讀卡器根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置目標電壓,若所述目標電壓與卡片當(dāng)前的上電電壓相等則執(zhí)行步驟S4,否則執(zhí)行步驟S3;
步驟S3、所述讀卡器備份卡片當(dāng)前的上電電壓,使用所述目標電壓對卡片上電,并接收卡片返回的復(fù)位應(yīng)答,若上電成功則執(zhí)行步驟S4,若上電失敗則用當(dāng)前備份的上電電壓對卡片上電,接收卡片返回的復(fù)位應(yīng)答,執(zhí)行步驟S4;
步驟S4、所述讀卡器根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答判斷是否需要進行協(xié)議和參數(shù)選擇,是則執(zhí)行步驟S5,否則根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束;
步驟S5、所述讀卡器比較預(yù)設(shè)時鐘分頻因子和當(dāng)前接收到的復(fù)位應(yīng)答指定的時鐘分頻因子,根據(jù)二者中較小的時鐘分頻因子與卡片進行協(xié)議和參數(shù)選擇,若協(xié)議和參數(shù)選擇成功則根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束,否則根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束。
所述讀卡器根據(jù)上位機下發(fā)的上電指令中的電壓選擇參數(shù)對卡片上電,具體包括:
步驟1-1、所述讀卡器檢查上位機下發(fā)的上電指令中的電壓選擇參數(shù)的取值,若為預(yù)設(shè)值則執(zhí)行步驟1-2,否則執(zhí)行步驟1-3;
步驟1-2、所述讀卡器使用與所述預(yù)設(shè)值對應(yīng)的預(yù)設(shè)電壓對卡片上電;
步驟1-3、所述讀卡器按照電壓值從高到低或從低到高的順序,依次使用各預(yù)設(shè)電壓對卡片上電,直至使用一預(yù)設(shè)電壓對卡片上電成功或使用全部預(yù)設(shè)電壓對卡片上電均失敗;
所述預(yù)設(shè)值包括互不相等的第一預(yù)設(shè)值、第二預(yù)設(shè)值和第三預(yù)設(shè)值,所述預(yù)設(shè)電壓包括與第一預(yù)設(shè)值對應(yīng)的第一預(yù)設(shè)電壓、與第二預(yù)設(shè)值對應(yīng)的第二預(yù)設(shè)電壓和與第三預(yù)設(shè)值對應(yīng)的第三預(yù)設(shè)電壓。
所述讀卡器根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置目標電壓,具體包括:所述讀卡器判斷當(dāng)前接收到的復(fù)位應(yīng)答中是否指定了電壓,是則設(shè)置目標電壓為當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓,否則設(shè)置目標電壓為預(yù)設(shè)電壓;
所述設(shè)置目標電壓為當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓,具體包括:檢查當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓的數(shù)量,若為一個則設(shè)置目標電壓為當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓,若為多個則設(shè)置目標電壓為當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓中的任意電壓或電壓值最低的電壓或電壓值與卡片當(dāng)前的上電電壓最接近的電壓。
所述讀卡器根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置讀卡接口參數(shù),具體包括:所述讀卡器根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答確定卡片的數(shù)據(jù)傳輸協(xié)議,判斷與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù)在當(dāng)前接收到的復(fù)位應(yīng)答中是否有指定,是則按照當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù),否則將與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù)設(shè)置為默認值;
所述卡片的數(shù)據(jù)傳輸協(xié)議包括T=0協(xié)議和T=1協(xié)議;與T=0協(xié)議對應(yīng)的讀卡接口參數(shù)包括:基本時間單元、工作等待時間和額外保護時間;與T=1協(xié)議對應(yīng)的讀卡接口參數(shù)包括:基本時間單元、塊等待時間、字符等待時間和額外保護時間。
所述讀卡器根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),具體包括:所述讀卡器設(shè)置基本時間單元為默認值。
所述讀卡器比較預(yù)設(shè)時鐘分頻因子和當(dāng)前接收到的復(fù)位應(yīng)答指定的時鐘分頻因子,之前還包括:所述讀卡器根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答獲取對應(yīng)的時鐘速率轉(zhuǎn)換因子和位速率調(diào)整因子,將所述時鐘頻率轉(zhuǎn)換因子作為被除數(shù)、所述位速率調(diào)整因子作為除數(shù)進行除法運算,得到當(dāng)前接收到的復(fù)位應(yīng)答指定的時鐘分頻因子。
所述步驟S5中,根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù)之前還包括:所述讀卡器對卡片進行熱復(fù)位,并接收卡片返回的復(fù)位應(yīng)答,若熱復(fù)位失敗則向上位機報告上電失敗,結(jié)束;若熱復(fù)位成功則比較預(yù)設(shè)時鐘分頻因子和當(dāng)前接收到的復(fù)位應(yīng)答指定的時鐘分頻因子,根據(jù)二者中較小的時鐘分頻因子與卡片進行協(xié)議和參數(shù)選擇,若協(xié)議和參數(shù)選擇成功則根據(jù)當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束,否則根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束。
另一方面,本發(fā)明提供一種讀卡器,包括:
接收模塊,用于當(dāng)?shù)谝簧想娔K、第二上電模塊或第三上電模塊對卡片上電時,接收卡片返回的復(fù)位應(yīng)答;
第一上電模塊,用于根據(jù)上位機下發(fā)的上電指令中的電壓選擇參數(shù)對卡片上電,若上電失敗則向上位機報告上電失敗;
電壓設(shè)置模塊,用于當(dāng)所述第一上電模塊對卡片上電成功時,根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置目標電壓;
第二上電模塊,用于在卡片當(dāng)前的上電電壓與所述電壓設(shè)置模塊設(shè)置的目標電壓不相等時,備份卡片當(dāng)前的上電電壓,使用所述電壓設(shè)置模塊設(shè)置的目標電壓對卡片上電;
第三上電模塊,用于當(dāng)所述第二上電模塊對卡片上電失敗時,使用所述第二上電模塊備份的上電電壓對卡片上電;
判斷模塊,用于在卡片當(dāng)前的上電電壓與所述電壓設(shè)置模塊設(shè)置的目標電壓相等時、所述第二上電模塊對卡片上電成功時或所述第三上電模塊對卡片上電后,根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答判斷是否需要進行協(xié)議和參數(shù)選擇;
協(xié)議和參數(shù)選擇模塊,用于當(dāng)所述判斷模塊判斷需要進行協(xié)議和參數(shù)選擇時,比較所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定的時鐘分頻因子和預(yù)設(shè)時鐘分頻因子,根據(jù)二者中較小的時鐘分頻因子與卡片進行協(xié)議和參數(shù)選擇;
第一參數(shù)設(shè)置模塊,用于當(dāng)所述協(xié)議和參數(shù)選擇模塊進行的協(xié)議和參數(shù)選擇成功時,根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置讀卡接口參數(shù),向上位機報告上電成功;
第二參數(shù)設(shè)置模塊,用于當(dāng)所述判斷模塊判斷不需要進行協(xié)議和參數(shù)選擇時或所述協(xié)議和參數(shù)選擇模塊進行的協(xié)議和參數(shù)選擇失敗時,根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功。
所述第一上電模塊具體用于:檢查所述上位機下發(fā)的上電指令中的電壓選擇參數(shù)的取值,若為預(yù)設(shè)值則使用與所述預(yù)設(shè)值對應(yīng)的預(yù)設(shè)電壓對卡片上電,否則按照電壓值從高到低或從低到高的順序,依次使用各預(yù)設(shè)電壓對卡片上電,直至使用一預(yù)設(shè)電壓對卡片上電成功或使用全部預(yù)設(shè)電壓對卡片上電均失?。?/p>
所述第一上電模塊具體用于:檢查所述上位機下發(fā)的上電指令中的電壓選擇參數(shù)的取值,若為第一預(yù)設(shè)值則使用第一預(yù)設(shè)電壓對卡片上電,若為第二預(yù)設(shè)值則使用第二預(yù)設(shè)電壓對卡片上電,若為第三預(yù)設(shè)值則使用第三預(yù)設(shè)電壓對卡片上電,否則按照電壓值從高到低或從低到高的順序,依次使用三個預(yù)設(shè)電壓對卡片上電,直至使用三個預(yù)設(shè)電壓中的一個預(yù)設(shè)電壓對卡片上電成功,或使用三個預(yù)設(shè)電壓對卡片上電均失敗。
所述電壓設(shè)置模塊具體包括:
判斷單元,用于判斷所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中是否指定了電壓;
第一設(shè)置單元,用于當(dāng)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定了電壓時,設(shè)置目標電壓為所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓;
第二設(shè)置單元,用于當(dāng)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中沒有指定電壓時,設(shè)置目標電壓為預(yù)設(shè)電壓;
所述第一設(shè)置單元具體用于:當(dāng)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定了電壓時,檢查所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓的數(shù)量,若為一個則設(shè)置目標電壓為所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓,若為多個則設(shè)置目標電壓為當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓中的任意電壓或電壓值最低的電壓或電壓值與卡片當(dāng)前的上電電壓最接近的電壓。
所述第一參數(shù)設(shè)置模塊具體用于:根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答確定卡片的數(shù)據(jù)傳輸協(xié)議,判斷與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù)在所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中是否有指定,是則按照所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù),否則將與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù)設(shè)置為默認值;
所述第一參數(shù)設(shè)置模塊具體包括:
協(xié)議判斷單元,用于根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答確定卡片的數(shù)據(jù)傳輸協(xié)議;
第一參數(shù)設(shè)置單元,用于當(dāng)卡片的數(shù)據(jù)傳輸協(xié)議為T=0協(xié)議時,判斷所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中是否指定了讀卡接口參數(shù):基本時間單元、工作等待時間和額外保護時間,根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定的讀卡接口參數(shù),將所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中沒有指定的讀卡接口參數(shù)設(shè)置為默認值;
第二參數(shù)設(shè)置單元,用于當(dāng)卡片的數(shù)據(jù)傳輸協(xié)議為T=1協(xié)議時,判斷所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中是否指定了讀卡接口參數(shù):基本時間單元、塊等待時間、字符等待時間和額外保護時間,根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中指定的讀卡接口參數(shù),將所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中沒有指定的讀卡接口參數(shù)設(shè)置為默認值。
所述第二參數(shù)設(shè)置模塊具體用于:設(shè)置基本時間單元為默認值。
所述協(xié)議和參數(shù)選擇模塊還用于:根據(jù)所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答獲取對應(yīng)的時鐘速率轉(zhuǎn)換因子和位速率調(diào)整因子,將所述時鐘速率轉(zhuǎn)換因子作為被除數(shù)、所述位速率調(diào)整因子作為除數(shù)進行除法運算,得到所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答指定的時鐘分頻因子。
本發(fā)明提供的讀卡器還可以包括:熱復(fù)位模塊,用于當(dāng)所述協(xié)議和參數(shù)選擇模塊進行的協(xié)議和參數(shù)選擇失敗時,對卡片進行熱復(fù)位,并接收卡片返回的復(fù)位應(yīng)答,若熱復(fù)位失敗則向上位機報告上電失??;
所述協(xié)議和參數(shù)選擇模塊還用于:當(dāng)所述熱復(fù)位模塊熱復(fù)位成功時,比較預(yù)設(shè)時鐘分頻因子和所述接收模塊當(dāng)前接收到的復(fù)位應(yīng)答中的時鐘分頻因子,根據(jù)二者中較小的時鐘分頻因子進行協(xié)議和參數(shù)選擇。
本發(fā)明的有益效果在于:本發(fā)明提供的技術(shù)方案中,讀卡器自主控制上電時序,且在對卡片上電的過程中能夠根據(jù)卡片返回的復(fù)位應(yīng)答自動進行PPS,讀卡器對卡片上電的過程中還添加了容錯處理,通過以上提高了讀卡器對卡片的兼容性以及卡片的工作穩(wěn)定性。
附圖說明
為了更清楚的說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例1提供的一種讀卡器對卡片上電的方法的流程圖;
圖2為本發(fā)明實施例2提供的一種讀卡器對卡片上電的方法的流程圖;
圖3為圖2中啟動PPS的具體流程圖;
圖4為本發(fā)明實施例3提供的一種讀卡器的方框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例1
本實施例提供一種讀卡器對卡片上電的方法,如圖1所示,包括:
步驟S1、接收上位機下發(fā)的上電指令,根據(jù)上電指令中的電壓選擇參數(shù)對卡片上電,接收卡片返回的ATR(Answer To Reset,復(fù)位應(yīng)答),若上電成功則執(zhí)行步驟S2,若上電失敗則向上位機報告上電失敗,結(jié)束;
步驟S2、根據(jù)當(dāng)前接收到的ATR設(shè)置目標電壓,判斷卡片當(dāng)前的上電電壓是否與目標電壓相等,是則執(zhí)行步驟S5,否則執(zhí)行步驟S3;
步驟S3、將卡片當(dāng)前的上電電壓備份為成功上電電壓,使用目標電壓對卡片上電,若上電成功則執(zhí)行步驟S5;若上電失敗則執(zhí)行步驟S4;
步驟S4、使用備份的成功上電電壓對卡片上電,接收卡片返回的ATR,若上電成功則執(zhí)行步驟S5,若上電失敗則刪除備份的成功上電電壓,向上位機報告上電失敗,結(jié)束;
步驟S5、根據(jù)當(dāng)前接收到的ATR判斷是否需要進行協(xié)議和參數(shù)選擇,是則執(zhí)行步驟S6,否則執(zhí)行步驟S9;
步驟S6、啟動協(xié)議和參數(shù)選擇,若協(xié)議和參數(shù)選擇成功則執(zhí)行步驟S9,若協(xié)議和參數(shù)選擇失敗則執(zhí)行步驟S7;
步驟S7、對卡片進行熱復(fù)位,接收卡片返回的ATR,若熱復(fù)位成功則執(zhí)行步驟S8,若熱復(fù)位失敗則向上位機報告上電失敗,結(jié)束;
步驟S8、啟動協(xié)議和參數(shù)選擇,若協(xié)議和參數(shù)選擇成功則執(zhí)行步驟S9,若協(xié)議和參數(shù)選擇失敗則執(zhí)行步驟S10;
步驟S9、根據(jù)當(dāng)前接收到的ATR設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束;
步驟S10、根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束。
實施例2
本實施例提供一種讀卡器對卡片上電的方法,為使本發(fā)明提供的技術(shù)方案更加清楚,簡單介紹ATR如下:ATR的結(jié)構(gòu)大致為TS T0TA1TB1TC1TD1TA2TB2TC2TD2TA3...,其中,T0的高半個字節(jié)的4個比特位,自高位端向低位端依次表示ATR中是否包含TD1、TC1、TB1和TA1,TD1的高半個字節(jié)的4個比特位,自高位端向低位端依次表示ATR中是否包含TD2、TC2、TB2和TA2,TD2的高半個字節(jié)的4個比特位,自高位端向低位端依次表示ATR中是否包含TD3、TC3、TB3和TA3,依此類推;例如,T0的高半個字節(jié)為1101,則ATR中包含TA1、TC1和TD1,不包含TB1。
如圖2所示,本實施例提供的方法具體包括:
步驟101、接收上位機下發(fā)的上電指令,根據(jù)上電指令中的電壓選擇參數(shù)對卡片上電,并接收卡片返回的ATR;
具體地,上電指令的第8個字節(jié)為電壓選擇參數(shù)。
本實施例中,根據(jù)上電指令中的電壓選擇參數(shù)對卡片上電,可以具體包括:
步驟1-1、檢查上電指令中的電壓選擇參數(shù)的取值,若電壓選擇參數(shù)的取值為第一預(yù)設(shè)值則執(zhí)行步驟1-2,若電壓選擇參數(shù)的取值為第二預(yù)設(shè)值則執(zhí)行步驟1-3,若電壓選擇參數(shù)的取值為第三預(yù)設(shè)值則執(zhí)行步驟1-4,否則執(zhí)行步驟1-5;
步驟1-2、使用第一預(yù)設(shè)電壓對卡片上電;
步驟1-3、使用第二預(yù)設(shè)電壓對卡片上電;
步驟1-4、使用第三預(yù)設(shè)電壓對卡片上電;
步驟1-5、按照預(yù)設(shè)順序依次使用各預(yù)設(shè)電壓對卡片上電,直至使用某一預(yù)設(shè)電壓對卡片上電成功,或使用全部預(yù)設(shè)電壓對卡片上電均失敗。
具體地,步驟1-5中,當(dāng)使用某一預(yù)設(shè)電壓對卡片上電成功時,上電成功,當(dāng)使用全部預(yù)設(shè)電壓對卡片上電均失敗時,上電失敗。
本實施例中,預(yù)設(shè)電壓包括第一預(yù)設(shè)電壓、第二預(yù)設(shè)電壓和第三預(yù)設(shè)電壓;預(yù)設(shè)順序為電壓自高至低或電壓自低至高。
優(yōu)選地,第一預(yù)設(shè)值為0x01,第二預(yù)設(shè)值為0x02,第三預(yù)設(shè)值為0x03;第一預(yù)設(shè)電壓為5伏,第二預(yù)設(shè)電壓為3伏,第三預(yù)設(shè)電壓為1.8伏。
例如,步驟1-5具體包括:
步驟1-5-1、使用1.8伏電壓對卡片上電,若上電成功則步驟1-5結(jié)束,否則執(zhí)行步驟1-5-2;
步驟1-5-2、使用3伏電壓對卡片上電,若上電成功則步驟1-5結(jié)束,否則執(zhí)行步驟1-5-3;
步驟1-5-3、使用5伏電壓對卡片上電,步驟1-5結(jié)束。
步驟102、判斷是否上電成功,是則執(zhí)行步驟106,否則執(zhí)行步驟103;
步驟103、判斷是否有備份的成功上電電壓,是則執(zhí)行步驟104,否則向上位機報告上電失敗,結(jié)束;
步驟104、使用成功上電電壓對卡片上電,并接收卡片返回的ATR,
步驟105、判斷是否上電成功,是則執(zhí)行步驟110,否則刪除備份的成功上電電壓,向上位機報告上電失敗,結(jié)束;
步驟106、判斷是否有備份的成功上電電壓,是則執(zhí)行步驟110,否則執(zhí)行步驟107;
步驟107、判斷當(dāng)前接收到的ATR中是否指定了電壓,是則設(shè)置目標電壓為ATR中指定的電壓,執(zhí)行步驟108,否則設(shè)置目標電壓為第一預(yù)設(shè)電壓,執(zhí)行步驟108;
本實施中,判斷當(dāng)前接收到的ATR中是否指定了電壓,可以具體包括:
步驟2-1、判斷當(dāng)前接收到的ATR中是否包含全局接口字符,是則執(zhí)行步驟2-2,否則當(dāng)前接收到的ATR中沒有指定電壓;
具體地,檢查當(dāng)前接收到的ATR中是否包含全局接口字符包括:檢查當(dāng)前接收到的ATR中的TD(i-1),若TD(i-1)的高半字節(jié)的最低位為1,并且TD(i-1)的低半字節(jié)為1111,則當(dāng)前接收到的ATR中的TA(i)為全局接口字符,否則當(dāng)前接收到的ATR中不包含全局接口字符;其中,i為大于2的整數(shù);
步驟2-2、根據(jù)全局接口字符判斷當(dāng)前接收到的ATR中是否指定了電壓;
具體地,檢查全局接口字符低位端的6個比特位,若為000001或000010或000011或000100或000110或000111則當(dāng)前接收到的ATR中指定了電壓,否則當(dāng)前接收到的ATR中沒有指定電壓;
更進一步地,當(dāng)全局接口字符低位端的6個比特位為000001時,當(dāng)前接收到的ATR中指定的電壓為5伏;當(dāng)全局接口字符低位端的6個比特位為000010時,當(dāng)前接收到的ATR中指定的電壓為3伏;當(dāng)全局接口字符低位端的6個比特位為000011時,當(dāng)前接收到的ATR中指定的電壓為1.8伏;當(dāng)全局接口字符低位端的6個比特位為000100時,當(dāng)前接收到的ATR中指定的電壓包括5伏和3伏;當(dāng)全局接口字符低位端的6個比特位為000110時,當(dāng)前接收到的ATR中指定的電壓包括3伏和1.8伏;當(dāng)全局接口字符低位端的6個比特位為000111時,當(dāng)前接收到的ATR中指定的電壓包括5伏、3伏和1.8伏;
再進一步地,當(dāng)當(dāng)前接收到的ATR中指定的電壓多于一個時,設(shè)置目標電壓為其中任一電壓或最低電壓或與卡片當(dāng)前的上電電壓最接近的電壓。
例如,當(dāng)前接收到的ATR為0x 3B D0 95 20C0 0A 1F 02,根據(jù)當(dāng)前接收到的ATR的第2個字節(jié)T0的值0xD0確定當(dāng)前接收到的ATR的第5個字節(jié)為TD1;根據(jù)TD1的值0xC0確定當(dāng)前接收到的ATR的第7個字節(jié)為TD2;根據(jù)TD2的高半字節(jié)的最低位為1,低半個字節(jié)為1111,判定當(dāng)前接收到的ATR的第8個字節(jié)TA3為全局接口字符;根據(jù)TA3的低位端6個比特位為000010判定當(dāng)前接收到的ATR中指定了電壓,且指定的電壓為3伏;設(shè)置目標電壓為3伏。
步驟108、判斷卡片當(dāng)前的上電電壓與目標電壓是否相等,是則執(zhí)行步驟110,否則執(zhí)行步驟109;
步驟109、備份卡片當(dāng)前的上電電壓為成功上電電壓,使用目標電壓對卡片重新上電,并接收卡片返回的ATR,返回步驟102;
步驟110、根據(jù)當(dāng)前接收到的ATR判斷是否需要進行PPS(協(xié)議和參數(shù)選擇),是則執(zhí)行步驟111,否則執(zhí)行步驟117;
本實施例中,根據(jù)當(dāng)前接收到的ATR判斷是否需要進行PPS,可以具體包括:檢查當(dāng)前接收到的ATR是否包含TA2,若包含則需要進行PPS,若不包含則不需要進行PPS;
具體地,檢查當(dāng)前接收到的ATR是否包含TA2包括:判斷是否當(dāng)前接收到的ATR的T0的高半個字節(jié)的最高比特位為1,且TD1的高半個字節(jié)的最低比特位為1,則當(dāng)前接收到的ATR包含TA2字符,否則當(dāng)前接收到的ATR不包含TA2。
例如,當(dāng)前接收到的ATR為0x 3B D0 95 20C0 0A 1F 02,根據(jù)當(dāng)前接收到的ATR的第2個字節(jié)T0的值0xD0確定當(dāng)前接收到的ATR的第5個字節(jié)為TD1;檢查TD1,根據(jù)其高半個字節(jié)的最低比特位為1判定當(dāng)前接收到的ATR中包含TA2,需要進行PPS。
步驟111、啟動PPS;
本實施例中,如圖3所示,啟動PPS具體包括:
步驟3-1、根據(jù)當(dāng)前接收到的ATR獲取時鐘分頻因子;
本實施例中,可以根據(jù)當(dāng)前接收到的ATR中的TA1確定時鐘分頻因子;
具體地,根據(jù)當(dāng)前接收到的ATR中的TA1確定時鐘分頻因子,具體包括:獲取與TA1的高半個字節(jié)的值對應(yīng)的時鐘頻率轉(zhuǎn)換因子;獲取與TA1低半個字節(jié)的值對應(yīng)的位速率調(diào)整因子;計算獲取到的時鐘頻率轉(zhuǎn)換因子和位速率調(diào)整因子的商,商即為卡片返回的ATR確定的時鐘分頻因子;
進一步地,當(dāng)TA1的高半個字節(jié)為0000或0001時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于372,當(dāng)TA1的高半個字節(jié)為0010時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于558,當(dāng)TA1的高半個字節(jié)為0011時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于744,當(dāng)TA1的高半個字節(jié)為0100時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于1116,當(dāng)TA1的高半個字節(jié)為0101時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于1488,當(dāng)TA1的高半個字節(jié)為0110時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于1860,當(dāng)TA1的高半個字節(jié)為1001時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于512,當(dāng)TA1的高半個字節(jié)為1010時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于768,當(dāng)TA1的高半個字節(jié)為1011時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于1024,當(dāng)TA1的高半個字節(jié)為1100時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于1536,當(dāng)TA1的高半個字節(jié)為1110時,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于2048;
當(dāng)TA1的低半個字節(jié)為0001時,對應(yīng)的位速率調(diào)整因子為1,當(dāng)TA1的低半個字節(jié)為0010時,對應(yīng)的位速率調(diào)整因子為2,當(dāng)TA1的低半個字節(jié)為0011時,對應(yīng)的位速率調(diào)整因子為4,當(dāng)TA1的低半個字節(jié)為0100時,對應(yīng)的位速率調(diào)整因子為8,當(dāng)TA1的低半個字節(jié)為0101時,對應(yīng)的位速率調(diào)整因子為16,當(dāng)TA1的低半個字節(jié)為0110時,對應(yīng)的位速率調(diào)整因子為32,當(dāng)TA1的低半個字節(jié)為0111時,對應(yīng)的位速率調(diào)整因子為64,當(dāng)TA1的低半個字節(jié)為1000時,對應(yīng)的位速率調(diào)整因子為12,當(dāng)TA1低半個字節(jié)為1001時,對應(yīng)的位速率調(diào)整因子為20;
例如,當(dāng)前接收到的ATR為0x 3B D0 95 20C0 0A 1F 02,其中,TA1=0x95,TA1的高半個字節(jié)為1001,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于512,TA1的低半個字節(jié)為0101,對應(yīng)的位速率調(diào)整因子為16,時鐘分頻因子=時鐘頻率轉(zhuǎn)換因子/位速率調(diào)整因子=32。
步驟3-2、判斷獲取到的時鐘分頻因子是否小于預(yù)設(shè)時鐘分頻因子,是則執(zhí)行步驟3-3,否則執(zhí)行步驟3-4;
優(yōu)選地,預(yù)設(shè)時鐘分頻因子為372。
步驟3-3、根據(jù)獲取到的時鐘分頻因子生成PPS請求,執(zhí)行步驟3-5;
步驟3-4、根據(jù)預(yù)設(shè)時鐘分頻因子生成PPS請求,執(zhí)行步驟3-5;
步驟3-5、向卡片發(fā)送PPS請求,接收卡片返回的PPS響應(yīng)。
步驟112、判斷PPS是否成功,是則執(zhí)行步驟117,否則執(zhí)行步驟113;
步驟113、對卡片進行熱復(fù)位,并接收卡片返回的ATR;
步驟114、判斷熱復(fù)位是否成功,是則執(zhí)行步驟115,否則向上位機報告上電失敗,結(jié)束;
步驟115、啟動PPS;
步驟116、判斷PPS是否成功,是則執(zhí)行步驟117,否則執(zhí)行步驟118;
步驟117、根據(jù)當(dāng)前接收到的ATR設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束;
本實施例中,根據(jù)卡片返回的ATR設(shè)置讀卡接口參數(shù),可以具體包括:
步驟4-1、根據(jù)當(dāng)前接收到的ATR確定協(xié)議類型,當(dāng)協(xié)議類型為T=0時,執(zhí)行步驟4-2,當(dāng)協(xié)議類型為T=1時,執(zhí)行步驟4-3;
本實施例中,根據(jù)當(dāng)前接收到的ATR確定協(xié)議類型,可以具體包括:判斷當(dāng)前接收到的ATR中TD(j)的低半個字節(jié)是否有為0001的,若有則協(xié)議類型為T=1,否則協(xié)議類型為T=0;其中,j為正整數(shù);
例如,當(dāng)前接收到的ATR為0x 3B D0 95 20C0 0A 1F 02,根據(jù)當(dāng)前接收到的ATR的第2個字節(jié)T0的值0xD0確定當(dāng)前接收到的ATR的第5個字節(jié)為TD1;根據(jù)TD1的值0xC0確定當(dāng)前接收到的ATR的第7個字節(jié)為TD2;根據(jù)TD2的值0x1F判定協(xié)議類型為T=0。
步驟4-2、判斷當(dāng)前接收到的ATR中是否指定了ETU(elementary time unit,基本時間單元),是則按照當(dāng)前接收到的ATR中的指定設(shè)置讀卡接口的ETU,否則設(shè)置讀卡接口的ETU為默認值;
判斷當(dāng)前接收到的ATR中是否指定了工作等待時間,是則按照當(dāng)前接收到的ATR中的指定設(shè)置讀卡接口的工作等待時間,否則設(shè)置讀卡接口的工作等待時間為默認值;
判斷當(dāng)前接收到的ATR中是否指定了額外保護時間,是則按照當(dāng)前接收到的ATR中的指定設(shè)置讀卡接口的額外保護時間,否則設(shè)置讀卡接口的額外保護時間為默認值。
具體地,判斷當(dāng)前接收到的ATR中是否指定了ETU,可以具體包括:判斷當(dāng)前接收到的ATR中是否包含TA1,是則ATR中指定了ETU,否則ATR中沒有指定ETU;ETU=時鐘分頻因子/時鐘頻率,時鐘分頻因子根據(jù)TA1確定;
判斷當(dāng)前接收到的ATR中是否指定了工作等待時間,可以具體包括:判斷當(dāng)前接收到的ATR中是否包含TA1和TC2,是則ATR中指定了工作等待時間;工作等待時間=TC2的值×960×?xí)r鐘頻率轉(zhuǎn)換因子/時鐘頻率,時鐘頻率轉(zhuǎn)換因子根據(jù)TA1的高半個字節(jié)的值確定,時鐘頻率指讀卡器為卡片提供的時鐘信號的頻率;
判斷當(dāng)前接收到的ATR中是否指定了額外保護時間,可以具體包括:判斷當(dāng)前接收到的ATR中是否包含TC1,是則ATR中指定了額外保護時間,否則ATR中沒有指定額外保護時間;額外保護時間=TC1的值。
步驟4-3、判斷當(dāng)前接收到的ATR中是否指定了ETU,是則按照當(dāng)前接收到的ATR中的指定設(shè)置讀卡接口的ETU,否則設(shè)置讀卡接口的ETU為默認值;
判斷當(dāng)前接收到的ATR中是否指定了塊等待時間,是則按照當(dāng)前接收到的ATR中的指定設(shè)置讀卡接口的塊等待時間,否則設(shè)置讀卡接口的塊等待時間為默認值;
判斷當(dāng)前接收到的ATR中是否指定了字符等待時間,是則按照當(dāng)前接收到的ATR中的指定設(shè)置讀卡接口的字符等待時間,否則設(shè)置讀卡接口的字符等待時間為默認值;
判斷當(dāng)前接收到的ATR中是否指定了額外保護時間,是則按照當(dāng)前接收到的ATR中的指定設(shè)置讀卡接口的額外保護時間,否則設(shè)置讀卡接口的額外保護時間為默認值。
具體地,判斷當(dāng)前接收到的ATR中是否指定了塊等待時間,可以具體包括:判斷當(dāng)前接收到的ATR中是否包含TB3,是則ATR中指定了塊等待時間,否則ATR中沒有指定塊等待時間;塊等待時間=11ETU+,其中BWI=TB3高半個字節(jié)的值;
判斷當(dāng)前接收到的ATR中是否指定了字符等待時間,可以具體包括:判斷當(dāng)前接收到的ATR中是否包含TB3,是則ATR中指定了塊等待時間,否則ATR中沒有指定字符等待時間;字符等待時間=,其中CBWI=TB3低半個字節(jié)的值。
進一步地,判斷當(dāng)前接收到的ATR是否包含TA1包括:判斷當(dāng)前接收到的ATR的T0的高半個字節(jié)的最低比特位是否為1,是則當(dāng)前接收到的ATR中包含TA1,否則當(dāng)前接收到的ATR中不包含TA1;判斷當(dāng)前接收到的ATR中是否包含TC2包括:判斷是否當(dāng)前接收到的ATR的T0的高半個字節(jié)的最高比特位為1,且TD1的高半個字節(jié)的高位端起的第2個比特位為1,是則當(dāng)前接收到的ATR包含TC2,否則當(dāng)前接收到的ATR不包含TC2;判斷當(dāng)前接收到的ATR中是否包含TC1包括:判斷當(dāng)前接收到的T0的高位端起的第2個比特位是否為1,是則當(dāng)前接收到的ATR中包含TC1,否則當(dāng)前接收到的ATR中不包含TC1;判斷當(dāng)前接收到的ATR中是否包含TB3包括:判斷是否當(dāng)前接收到的ATR的T0的高半個字節(jié)的最高比特位為1,TD1的高半個字節(jié)的最高比特位為1,TD2的高半個字節(jié)的高位端起的第3個比特位是1,是則當(dāng)前接收到的ATR中包含TB3,否則當(dāng)前接收到的ATR中不包含TB3。
例如,當(dāng)前接收到的ATR為0x 3B D0 95 20C0 0A 1F 02;
第3個字節(jié)為TA1,TA1=0x95,TA1的高半個字節(jié)為1001,對應(yīng)的時鐘頻率轉(zhuǎn)換因子等于512,TA1的低半個字節(jié)為0101,對應(yīng)的位速率調(diào)整因子為16,時鐘分頻因子=時鐘頻率轉(zhuǎn)換因子/位速率調(diào)整因子=32;第4個字節(jié)為TC1,TC1=0x20,TC1的值為32;第6個字節(jié)為TC2,TC2=0x0A,TC2的值為10;
ATR中指定了ETU、工作等待時間和額外保護時間,例如,時鐘頻率為4兆,則ETU=時鐘分頻因子/時鐘頻率=32/4000000=秒,工作等待時間=TC2的值×960×?xí)r鐘頻率轉(zhuǎn)換因子/時鐘頻率=10×960×512/4000000=1.2288秒,額外保護時間=TC1的值=32ETU。
步驟118、根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功,結(jié)束。
本實施例中,根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),可以具體包括:設(shè)置讀卡接口的ETU為默認值。
本實施例中,設(shè)置讀卡接口的ETU為默認值可以具體為設(shè)置讀卡接口的ETU為1/10752秒;設(shè)置讀卡接口的工作等待時間為默認值可以具體為設(shè)置讀卡接口的工作等待時間為1.2288秒;設(shè)置讀卡接口的額外保護時間為默認值可以具體為設(shè)置讀卡接口的額外保護時間為0;設(shè)置讀卡接口的塊等待時間為默認值可以具體為設(shè)置讀卡接口的塊等待時間為11ETU+0.08928秒;設(shè)置讀卡接口的字符等待時間為默認值可以具體為設(shè)置讀卡接口的字符等待時間為12ETU。
實施例3
本實施例提供一種讀卡器,如圖4所示,包括:
接收模塊20,用于當(dāng)?shù)谝簧想娔K21對卡片上電時,接收卡片返回的復(fù)位應(yīng)答;用于當(dāng)?shù)诙想娔K23對卡片上電時,接收卡片返回的復(fù)位應(yīng)答;以及用于當(dāng)?shù)谌想娔K24對卡片上電時,接收卡片返回的復(fù)位應(yīng)答;
第一上電模塊21,用于根據(jù)上位機下發(fā)的上電指令中的電壓選擇參數(shù)對卡片上電,若上電失敗則向上位機報告上電失敗;
電壓設(shè)置模塊22,用于當(dāng)?shù)谝簧想娔K21對卡片上電成功時,根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置目標電壓;
第二上電模塊23,用于在卡片當(dāng)前的上電電壓與電壓設(shè)置模塊22設(shè)置的目標電壓不相等時,備份卡片當(dāng)前的上電電壓,使用電壓設(shè)置模塊22設(shè)置的目標電壓對卡片上電;
第三上電模塊24,用于當(dāng)?shù)诙想娔K23對卡片上電失敗時,使用第二上電模塊23備份的上電電壓對卡片上電;
判斷模塊25,用于當(dāng)卡片當(dāng)前的上電電壓與電壓設(shè)置模塊22設(shè)置的目標電壓相等時,根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答判斷是否需要進行協(xié)議和參數(shù)選擇;用于當(dāng)?shù)诙想娔K23對卡片上電成功時,根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答判斷是否需要進行協(xié)議和參數(shù)選擇;以及用于當(dāng)?shù)谌想娔K24對卡片上電后,根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答判斷是否需要進行協(xié)議和參數(shù)選擇;
協(xié)議和參數(shù)選擇模塊26,用于當(dāng)判斷模塊25的判斷需要進行協(xié)議和參數(shù)選擇時,比較接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定的時鐘分頻因子和預(yù)設(shè)時鐘分頻因子,根據(jù)二者中較小的時鐘分頻因子與卡片進行協(xié)議和參數(shù)選擇;
第一參數(shù)設(shè)置模塊27,用于當(dāng)協(xié)議和參數(shù)選擇模塊26進行的協(xié)議和參數(shù)選擇成功時,根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置讀卡接口參數(shù),向上位機報告上電成功;
第二參數(shù)設(shè)置模塊28,用于當(dāng)判斷模塊25判斷不需要進行協(xié)議和參數(shù)選擇時,根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功;以及用于當(dāng)協(xié)議和參數(shù)選擇模塊26進行的協(xié)議和參數(shù)選擇失敗時,根據(jù)預(yù)設(shè)配置設(shè)置讀卡接口參數(shù),向上位機報告上電成功。
進一步地,本實施例提供的讀卡器中,第一上電模塊21可以具體用于:檢查上位機下發(fā)的上電指令中的電壓選擇參數(shù)的取值,若為預(yù)設(shè)值則使用與所述預(yù)設(shè)值對應(yīng)的預(yù)設(shè)電壓對卡片上電,否則按照電壓值從高到低或從低到高的順序,依次使用各預(yù)設(shè)電壓對卡片上電,直至使用某一預(yù)設(shè)電壓對卡片上電成功或使用全部預(yù)設(shè)電壓對卡片上電均失??;
更進一步地,第一上電模塊21可以具體用于:檢查上位機下發(fā)的上電指令中的電壓選擇參數(shù)的取值,若為第一預(yù)設(shè)值則使用第一預(yù)設(shè)電壓對卡片上電,若為第二預(yù)設(shè)值則使用第二預(yù)設(shè)電壓對卡片上電,若為第三預(yù)設(shè)值則使用第三預(yù)設(shè)電壓對卡片上電,否則按照電壓值從高到低或從低到高的順序,依次使用三個預(yù)設(shè)電壓對卡片上電,直至使用三個預(yù)設(shè)電壓中的一個預(yù)設(shè)電壓對卡片上電成功,或使用三個預(yù)設(shè)電壓對卡片上電均失??;
優(yōu)選地,第一預(yù)設(shè)電壓為5伏,第二預(yù)設(shè)電壓為3伏,第三預(yù)設(shè)電壓為1.8伏。
進一步地,本實施例提供的讀卡器中,電壓設(shè)置模塊22可以具體包括:
判斷單元,用于判斷接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中是否指定了電壓;
第一設(shè)置單元,用于當(dāng)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定了電壓時,設(shè)置目標電壓為接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓;
第二設(shè)置單元,用于當(dāng)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中沒有指定電壓時,設(shè)置目標電壓為預(yù)設(shè)電壓;
更進一步地,第一設(shè)置單元可以具體用于:當(dāng)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定了電壓時,檢查接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓的數(shù)量,若為一個則設(shè)置目標電壓為接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓,若為多個則設(shè)置目標電壓為接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定的電壓中的任意電壓或電壓值最低的電壓或電壓值與卡片當(dāng)前的上電電壓最接近的電壓。
進一步地,本實施例提供的讀卡器中,第一參數(shù)設(shè)置模塊27可以具體用于:根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答確定卡片的數(shù)據(jù)傳輸協(xié)議,判斷與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù)在接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中是否有指定,是則按照接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù),否則將與卡片的數(shù)據(jù)傳輸協(xié)議對應(yīng)的讀卡接口參數(shù)設(shè)置為默認值;
更進一步地,第一參數(shù)設(shè)置模塊27可以具體包括:
協(xié)議判斷單元,用于根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答確定卡片的數(shù)據(jù)傳輸協(xié)議;
第一參數(shù)設(shè)置單元,用于當(dāng)協(xié)議判斷單元確定卡片的數(shù)據(jù)傳輸協(xié)議為T=0協(xié)議時,判斷接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中是否指定了讀卡接口參數(shù):基本時間單元、工作等待時間和額外保護時間,根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定的讀卡接口參數(shù),將接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中沒有指定的讀卡接口參數(shù)設(shè)置為默認值;
第二參數(shù)設(shè)置單元,用于當(dāng)協(xié)議判斷單元確定卡片的數(shù)據(jù)傳輸協(xié)議為T=1協(xié)議時,判斷接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中是否指定了讀卡接口參數(shù):基本時間單元、塊等待時間、字符等待時間和額外保護時間,根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答設(shè)置接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中指定的讀卡接口參數(shù),將接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中沒有指定的讀卡接口參數(shù)設(shè)置為默認值。
進一步地,本實施例提供的讀卡器中,第二參數(shù)設(shè)置模塊28具體用于:設(shè)置基本時間單元為默認值。
本實施例提供的讀卡器中,協(xié)議和參數(shù)選擇模塊26還可以用于:根據(jù)接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答獲取對應(yīng)的時鐘速率轉(zhuǎn)換因子和位速率調(diào)整因子,將所述時鐘速率轉(zhuǎn)換因子作為被除數(shù)、所述位速率調(diào)整因子作為除數(shù)進行除法運算,得到接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答指定的時鐘分頻因子。
本實施例提供的讀卡器還可以包括:熱復(fù)位模塊,用于當(dāng)協(xié)議和參數(shù)選擇模塊26進行的協(xié)議和參數(shù)選擇失敗時,對卡片進行熱復(fù)位,并接收卡片返回的復(fù)位應(yīng)答,若熱復(fù)位失敗則向上位機報告上電失??;
相應(yīng)地,協(xié)議和參數(shù)選擇模塊26還用于:當(dāng)熱復(fù)位模塊熱復(fù)位成功時,比較預(yù)設(shè)時鐘分頻因子和接收模塊20當(dāng)前接收到的復(fù)位應(yīng)答中的時鐘分頻因子,根據(jù)二者中較小的時鐘分頻因子進行協(xié)議和參數(shù)選擇。
以上所述的實施例只是本發(fā)明較優(yōu)選的具體實施方式,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進行的通常變化和替換都應(yīng)包含在本發(fā)明的保護范圍內(nèi)。