一種智能讀卡器的工作方法
【專利摘要】本發(fā)明公開一種智能讀卡器的工作方法,包括:讀卡器上電進行初始化;根據(jù)與其連接的設(shè)備類型設(shè)置系統(tǒng)模式;判斷系統(tǒng)模式,如為蘋果模式則判斷是否需要重新進行蘋果認證操作,是則進行蘋果認證操作,等待并接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),讀卡器根據(jù)指令類型進行相應(yīng)操作;如為USB模式,則判斷USB數(shù)據(jù)傳輸標志是否置位,如未置位則使能USB連接并進行USB枚舉操作,枚舉完成后將USB數(shù)據(jù)傳輸標志置位;如置位則等待并接收上位機發(fā)送的USB數(shù)據(jù),讀卡器根據(jù)指令類型進行相應(yīng)操作。本發(fā)明的技術(shù)方案實現(xiàn)了讀卡器分別通過USB接口和lightning接口與上位機和iphone5手機連接進行通訊。
【專利說明】一種智能讀卡器的工作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及讀卡器領(lǐng)域,尤其涉及一種智能讀卡器的工作方法。
【背景技術(shù)】
[0002]讀卡器是一個數(shù)據(jù)傳輸與通訊設(shè)備,負責(zé)終端設(shè)備與存儲卡之間的交互式通信,終端設(shè)備可以是個人電腦或其他電子設(shè)備,存儲卡可以是智能卡、磁條卡或者其他類型的卡片。
[0003]通常,讀卡器通過USB接口或其他串口連接到終端設(shè)備上,從而實現(xiàn)與終端設(shè)備之間進行數(shù)據(jù)交互,并且在數(shù)據(jù)接收和發(fā)送的過程中,都需要遵循一定的數(shù)據(jù)通訊協(xié)議,讀卡器通過上述數(shù)據(jù)通訊協(xié)議規(guī)定的格式接收終端設(shè)備下發(fā)的數(shù)據(jù),并將此數(shù)據(jù)按照與讀卡器連接的特定的卡片所能夠接收的數(shù)據(jù)通訊協(xié)議格式,將數(shù)據(jù)重新組織后,轉(zhuǎn)發(fā)給卡片;同時當(dāng)讀卡器接收到卡片返回的數(shù)據(jù)后,則按照與讀卡器連接的終端設(shè)備所能夠接收的數(shù)據(jù)通訊協(xié)議格式,重新組織后將該數(shù)據(jù)返回給終端設(shè)備。
[0004]隨著計算機技術(shù)和科技技術(shù)的發(fā)展,出現(xiàn)了各種各樣的手機。目前,蘋果公司新發(fā)布的iphone5手機較為流行,但是現(xiàn)有技術(shù)中的智能讀卡器并不支持lightning接口,無法與iphone5手機進行通訊。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種智能讀卡器的工作方法,解決了 iphone5平臺的智能卡使用問題。
[0006]本發(fā)明提供了一種智能讀卡器的工作方法,包括:
[0007]步驟SO:讀卡器上電,進行初始化;進行初始化包括:將USB數(shù)據(jù)傳輸標志復(fù)位;
[0008]步驟S1:根據(jù)與其連接的設(shè)備類型設(shè)置系統(tǒng)模式;
[0009]步驟S2:判斷所述系統(tǒng)模式,如為蘋果模式,則執(zhí)行步驟S3,如為USB模式,則執(zhí)行步驟S6 ;
[0010]步驟S3:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟S4,否則執(zhí)行步驟S5 ;
[0011]步驟S4:進行蘋果認證操作,并判斷認證操作是否成功,是則設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟S5,否則返回步驟S2 ;
[0012]步驟S5:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到所述蘋果數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),返回步驟S2,如為下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),返回步驟S2 ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,返回步驟S2 ;
[0013]步驟S6:判斷所述USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟S9,否則執(zhí)行步驟S7;
[0014]步驟S7:使能USB連接;
[0015]步驟S8:進行USB枚舉操作,并判斷枚舉是否完成,是則將所述USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟S9,否則返回步驟S2 ;
[0016]步驟S9:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到所述USB數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),返回步驟S2,如為下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),返回步驟S2 ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述上位機,返回步驟S2。
[0017]進一步地,所述步驟S5中返回步驟S2之前還包括:
[0018]步驟Fl:判斷USB接口是否接入電源,是則執(zhí)行步驟F2,否則返回步驟S2 ;
[0019]步驟F2:判斷是否向所述蘋果設(shè)備發(fā)送過蘋果充電事件通知,是則執(zhí)行步驟F3,否則返回步驟S2 ;
[0020]步驟F3:向所述蘋果設(shè)備發(fā)送所述蘋果充電事件通知,返回步驟S2。
[0021]進一步地,所述步驟SI包括:
[0022]步驟Al:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟A2,否則執(zhí)行步驟A3 ;
[0023]步驟A2:設(shè)置所述系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟S2 ;
[0024]步驟A3:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟A4,否則返回步驟Al ;
[0025]步驟A4:設(shè)置所述系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟S2。
[0026]進一步地,所述步驟S5中返回步驟S2之前還包括:判斷所述蘋果設(shè)備是否拔出,是則初始化蘋果模式下的標志,返回步驟S2,否則返回步驟S2 ;
[0027]所述步驟S9中返回步驟S2之前還包括:判斷是否有所述蘋果設(shè)備與其連接,是則失能USB連接,將所述系統(tǒng)模式設(shè)置為蘋果模式,初始化USB模式下的標志,設(shè)置需要重新進行蘋果認證操作,返回步驟S2,否則直接返回步驟S2。
[0028]進一步地,所述步驟SI包括:
[0029]步驟B1:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟B2,否則返回步驟B3 ;
[0030]步驟B2:設(shè)置所述系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟S2 ;
[0031]步驟B3:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟B4,否則返回步驟BI ;
[0032]步驟B4:設(shè)置所述系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟S2。
[0033]進一步地,所述步驟S5中返回步驟S2之前還包括:判斷是否有USB設(shè)備與其連接,是則將系統(tǒng)模式設(shè)置為USB模式,將所述USB數(shù)據(jù)傳輸標志復(fù)位,初始化蘋果模式下的標志,返回步驟S2,否則返回步驟S2 ;
[0034]所述步驟S9中返回步驟S2之前還包括:判斷所述USB設(shè)備是否拔出,是則失能USB連接,返回步驟S2,否則返回步驟S2。
[0035]進一步地,所述步驟SI包括:啟動定時器,開始計時;
[0036]當(dāng)所述定時器計時到達預(yù)設(shè)時間時進入定時中斷;
[0037]所述定時中斷處理包括:[0038]步驟Pl:清除定時器中斷標志;
[0039]步驟P2:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟P3,否則執(zhí)行步驟P4 ;
[0040]步驟P3:將所述系統(tǒng)模式設(shè)為蘋果模式,執(zhí)行步驟P5 ;
[0041]步驟P4:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟P5 ;
[0042]步驟P5:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟P6,否則執(zhí)行步驟P7 ;
[0043]步驟P6:設(shè)置所述系統(tǒng)模式為USB模式,退出定時中斷;
[0044]步驟P7:將所述USB數(shù)據(jù)傳輸標志復(fù)位,退出定時中斷。
[0045]進一步地,所述進行蘋果認證操作,包括:
[0046]步驟S4-1:所述讀卡器喚醒內(nèi)部的蘋果認證芯片;
[0047]步驟S4-2:向所述蘋果設(shè)備發(fā)送第一預(yù)設(shè)命令,等待接收所述蘋果設(shè)備返回的第一響應(yīng);
[0048]步驟S4-3:判斷是否接收到所述第一響應(yīng),是則執(zhí)行步驟S4-4,否則執(zhí)行步驟
S4-9 ;
[0049]步驟S4-4:向所述蘋果設(shè)備發(fā)送附件配置信息,等待接收所述蘋果設(shè)備返回的配置響應(yīng);所述附件配置信息中包括可充電標志,所述配置響應(yīng)中包括置位后的可充電標志;
[0050]步驟S4-5:判斷是否接收到所述配置響應(yīng),是則執(zhí)行步驟S4-6,否則執(zhí)行步驟
S4-9 ;
[0051]步驟S4-6:向所述蘋果設(shè)備發(fā)送第二預(yù)設(shè)命令,等待接收蘋果設(shè)備返回的第二響應(yīng);
[0052]步驟S4-7:判斷是否接收到所述第二響應(yīng),是則執(zhí)行步驟S4-8,否則執(zhí)行步驟
S4-9 ;
[0053]步驟S4-8:判斷在預(yù)設(shè)時間內(nèi)是否接收到所述蘋果設(shè)備發(fā)送的認證指令,是則執(zhí)行步驟S4-10,否則執(zhí)行步驟S4-9 ;
[0054]步驟S4-9:將蘋果認證附件錯誤標志和重認證標志置位,所述蘋果認證芯片休目民,進行蘋果認證操作結(jié)束;
[0055]步驟S4-10:判斷接收到的所述認證指令是否為認證附件指令,是則執(zhí)行步驟
S4-11,否則返回步驟S4-8 ;
[0056]步驟S4-11:從所述蘋果認證芯片中讀取蘋果認證證書長度,根據(jù)所述蘋果認證證書長度從所述蘋果認證芯片中讀取證書內(nèi)容;
[0057]步驟S4-12:將所述證書內(nèi)容發(fā)送給所述蘋果設(shè)備;
[0058]步驟S4-13:等待接收所述蘋果設(shè)備發(fā)送的挑戰(zhàn)值,并判斷是否接收到所述挑戰(zhàn)值,是則執(zhí)行步驟S4-14,執(zhí)行返回步驟S4-13 ;
[0059]步驟S4-14:將所述接收到的挑戰(zhàn)值下發(fā)給所述蘋果認證芯片;
[0060]步驟S4-15:等待接收所述蘋果認證芯片返回的簽名結(jié)果,并判斷是否接收到所述簽名結(jié)果,是則執(zhí)行步驟S4-16,否則返回步驟S4-15 ;
[0061]步驟S4-16:將所述接收到的簽名結(jié)果發(fā)送給所述蘋果設(shè)備;
[0062]步驟S4-17:等待接收所述蘋果設(shè)備返回的驗證響應(yīng),并判斷是否接收到正確的驗證響應(yīng),是則所述蘋果認證芯片休眠,進行蘋果認證操作結(jié)束;否則執(zhí)行步驟S4-18 ;[0063]步驟S4-18:將所述蘋果認證附件錯誤標志和所述重認證標志置位,所述蘋果認證芯片休眠,進行蘋果認證操作結(jié)束。
[0064]進一步地,所述步驟S4-12與步驟S4-13之間還包括:
[0065]步驟S4-12’:判斷所述證書內(nèi)容是否發(fā)送完成,是則執(zhí)行步驟S4-13,否則繼續(xù)將剩余的證書內(nèi)容發(fā)送給所述蘋果設(shè)備,執(zhí)行步驟S4-12’。
[0066]進一步地,所述步驟S5包括:
[0067]步驟S5-1:等待并接收所述蘋果設(shè)備發(fā)送的所述蘋果數(shù)據(jù);
[0068]步驟S5-2:判斷是否接收完全部的蘋果數(shù)據(jù),是則執(zhí)行步驟S5-3,否則返回步驟
S5-1 ;
[0069]步驟S5-3:判斷所述接收到的蘋果數(shù)據(jù)是否為應(yīng)答類指令,是則給所述蘋果設(shè)備返回應(yīng)答響應(yīng),返回步驟S5-1 ;否則執(zhí)行步驟S5-4 ;
[0070]步驟S5-4:從所述接收到的蘋果數(shù)據(jù)中獲取指令標識;
[0071]步驟S5-5:判斷所述接收到的蘋果數(shù)據(jù)的指令類別,如為第一預(yù)設(shè)指令,則將所述指令標識和第一蘋果響應(yīng)返回給所述蘋果設(shè)備,返回步驟S5-1 ;如為數(shù)據(jù)處理指令則執(zhí)行步驟S5-6 ;如為第二預(yù)設(shè)指令,則將所述指令標識和第二蘋果響應(yīng)返回給所述蘋果設(shè)備,返回步驟S5-1 ;
[0072]步驟S5-6:給所述蘋果設(shè)備返回所述指令標識和數(shù)據(jù)處理指令響應(yīng);
[0073]步驟S5-7:判斷所述接收到的蘋果數(shù)據(jù)是否為寫用戶緩存指令,是則將所述接收到的蘋果數(shù)據(jù)寫入到用戶緩存中,并給所述蘋果設(shè)備返回成功寫入應(yīng)答,返回步驟S5-1 ;否則執(zhí)行步驟S5-8 ;
[0074]步驟S5-8:判斷所述接收到的蘋果數(shù)據(jù)是否符合CCID指令格式,是則執(zhí)行步驟
S5-9,否則向所述蘋果設(shè)備返回CCID指令不支持響應(yīng),返回步驟S5-1 ;
[0075]步驟S5-9:判斷所述接收到的蘋果數(shù)據(jù)中的字類型,如為第一預(yù)設(shè)值則執(zhí)行步驟
S5-10,如為其他值則執(zhí)行相應(yīng)操作;
[0076]步驟S5-10:根據(jù)所述接收到的蘋果數(shù)據(jù)判斷指令的類型,如為所述上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),執(zhí)行步驟S5-11,如為所述下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),執(zhí)行步驟S5-11 ;如為所述數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,執(zhí)行步驟
S5-11 ;
[0077]步驟S5-11:判斷讀卡芯片是否滿足下電條件,是則向所述讀卡芯片發(fā)送下電指令,返回步驟S2,否則返回步驟S2。
[0078]進一步地,所述步驟S9包括:
[0079]步驟S9-1:等待并接收所述上位機發(fā)送的USB數(shù)據(jù);
[0080]步驟S9-2:判斷是否接收完全部的USB數(shù)據(jù),是則執(zhí)行步驟S9_3,否則返回步驟S9-1 ;
[0081]步驟S9-3:判斷接收到的USB數(shù)據(jù)是否為寫用戶緩存指令,是則將所述接收到的USB數(shù)據(jù)寫入到用戶緩存中,并給所述上位機返回成功寫入應(yīng)答,返回步驟S9-1 ;否則執(zhí)行步驟S9-4 ;[0082]步驟S9-4:判斷所述接收到的USB數(shù)據(jù)是否符合CCID指令格式,是則執(zhí)行步驟S9-5,否則向所述上位機返回CCID指令不支持響應(yīng),返回步驟S9-1 ;
[0083]步驟S9-5:判斷所述接收到的USB數(shù)據(jù)中的字類型,如為第一預(yù)設(shè)值則執(zhí)行步驟S9-6,如為其他則執(zhí)行相應(yīng)操作;
[0084]步驟S9-6:根據(jù)所述接收到的USB數(shù)據(jù)判斷指令的類型,如為所述上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),步驟S9-7,如為所述下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),步驟S9-7 ;如為所述數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述上位機,步驟S9-7 ;
[0085]步驟S9-7:判斷讀卡芯片是否滿足下電條件,是則向所述讀卡芯片發(fā)送下電指令,返回步驟S2,否則返回步驟S2 ;
[0086]讀卡器開始接收所述上位機發(fā)送的USB數(shù)據(jù)時,開啟USB卡槽定時器;當(dāng)所述USB卡槽定時器計時到達預(yù)定值時,進入USB卡槽定時中斷,包括:
[0087]步驟Tl:關(guān)閉所述USB卡槽定時器,向所述讀卡芯片發(fā)送獲取卡槽狀態(tài)指令;
[0088]步驟T2:判斷卡槽狀態(tài)是否改變,是則執(zhí)行步驟T3,否則執(zhí)行步驟T2 ;
[0089]步驟T3:判斷卡槽中是否有卡,是則向所述上位機發(fā)送有卡響應(yīng),執(zhí)行步驟T4,否則向所述上位機發(fā)送無卡響應(yīng),執(zhí)行步驟T5 ;
[0090]步驟T4:判斷記錄的卡槽狀態(tài)是否為有卡,是則開啟所述USB卡槽定時器,退出USB卡槽定時中斷,否則記錄卡槽狀態(tài)為有卡,將卡槽狀態(tài)標識置位,開啟所述USB卡槽定時器,退出USB卡槽定時中斷;
[0091]步驟T5:判斷記錄的卡槽狀態(tài)是否為無卡,是開啟所述USB卡槽定時器,退出USB卡槽定時中斷,否則記錄卡槽狀態(tài)為無卡,將卡槽狀態(tài)標識置位,開啟所述USB卡槽定時器,退出USB卡槽定時中斷。
[0092]進一步地,所述步驟S5替換為步驟S5’ ;
[0093]步驟S5’:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到所述蘋果數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),返回步驟S5’,如為下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),返回步驟S5’ ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,返回步驟S5’ ;
[0094]所述步驟S9替換為步驟S9’ ;
[0095]步驟S9’:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到所述USB數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),返回步驟S9’,如為下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),返回步驟S9’ ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述上位機,返回步驟S9,。
[0096]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:
[0097]本發(fā)明的智能讀卡器的工作方法不僅實現(xiàn)了讀卡器通過USB接口與一般的終端連接通訊,還實現(xiàn)了讀卡器通過lightning接口與iphone5手機連接進行通訊,將傳統(tǒng)的USB讀卡器,加上蘋果認證技術(shù),實現(xiàn)智能芯片和智能平臺的數(shù)據(jù)傳輸。
【專利附圖】
【附圖說明】
[0098]圖1為本發(fā)明實施例一提供的一種智能讀卡器的工作方法流程圖;
[0099]圖2為本發(fā)明實施例二提供的一種智能讀卡器的工作方法流程圖;
[0100]圖3為本發(fā)明實施例三提供的一種智能讀卡器的工作方法流程圖;
[0101]圖4為本發(fā)明實施例四提供的一種智能讀卡器的工作方法流程圖;
[0102]圖5為本發(fā)明實施例五提供的一種智能讀卡器的工作方法流程圖;
[0103]圖6為本發(fā)明實施例六提供的一種智能讀卡器的工作方法流程圖;
[0104]圖7為本發(fā)明實施例六中的定時中斷處理流程;
[0105]圖8為本發(fā)明實施例七提供的一種進行蘋果認證操作的詳細實現(xiàn)過程流程圖;
[0106]圖9為本發(fā)明實施例八提供的讀卡器等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備的具體實現(xiàn)流程圖;
[0107]圖10為本發(fā)明實施例九提供的讀卡器等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機的具體實現(xiàn)流程圖;
[0108]圖11為圖9中的步驟810和圖10中步驟906的具體實現(xiàn)流程圖。
【具體實施方式】
[0109]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0110]在本發(fā)明的實施例中,讀卡器可以通過lightning接口與蘋果設(shè)備連接,也可以通過USB接口與終端連接;當(dāng)蘋果設(shè)備作為主設(shè)備向讀卡器發(fā)送指令時,讀卡器根據(jù)接收到的指令進行處理并給蘋果設(shè)備返回響應(yīng);當(dāng)讀卡器作為主設(shè)備向蘋果設(shè)備發(fā)送指令時,蘋果設(shè)備根據(jù)接收到的指令進行處理并給讀卡器返回響應(yīng)。本實施例中的終端具體以上位機為例進行說明。
[0111]實施例一
[0112]本發(fā)明實施例一提供一種智能讀卡器的工作方法,如圖1所示,包括:
[0113]步驟100:讀卡器上電,進行初始化;
[0114]在本實施例中,進行初始化包括:將定時器中斷標志、重認證標志、系統(tǒng)模式標志、USB數(shù)據(jù)傳輸標志、USB連接標志、卡槽狀態(tài)標識、USB接收完成標志復(fù)位、枚舉完成標志復(fù)位;將蘋果認證附件錯誤標志置位;
[0115]步驟101:讀卡器根據(jù)與其連接的設(shè)備類型設(shè)置系統(tǒng)模式;
[0116]步驟102:判斷系統(tǒng)模式,如為蘋果模式,則執(zhí)行步驟103,如為USB模式,則執(zhí)行步驟 106 ;
[0117]本實施例中的系統(tǒng)模式可以在讀卡器連接上位機或連接蘋果設(shè)備時進行設(shè)置,也可以在定時器中定時檢測與其連接的設(shè)備,根據(jù)檢測到的連接設(shè)備進行設(shè)置;[0118]步驟103:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟104,否則執(zhí)行步驟 105 ;
[0119]步驟104:進行蘋果認證操作,并判斷認證操作是否成功,是則設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟105,否則返回步驟102 ;
[0120]在本實施例中,進行蘋果認證操作在實施例七中進行詳述;
[0121]步驟105:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備,返回步驟102 ;
[0122]在本實施例中,當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備,包括:判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),返回步驟102,如為下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),返回步驟102 ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,返回步驟102 ;
[0123]步驟105的具體實現(xiàn)過程在實施例八中詳述;
[0124]在本實施例中,步驟105中返回步驟102之前還包括:
[0125]步驟Fl:判斷USB接口是否接入電源,是則執(zhí)行步驟F2,否則返回步驟102 ;
[0126]步驟F2:判斷是否向所述蘋果設(shè)備發(fā)送過蘋果充電事件通知,是則執(zhí)行步驟F3,否則返回步驟102 ;
[0127]步驟F3:向所述蘋果設(shè)備發(fā)送蘋果充電事件通知,返回步驟102。
[0128]步驟106:判斷USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟109,否則執(zhí)行步驟107 ;
[0129]步驟107:使能USB連接;
[0130]步驟108:進行USB枚舉操作,并判斷枚舉是否完成,是則將所述USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟109,否則返回步驟102 ;
[0131]步驟109:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機,返回步驟102 ;
[0132]在本實施例中,當(dāng)接收到USB數(shù)據(jù)進行處理并將處理結(jié)果返回給上位機,包括:判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),返回步驟102,如為下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),返回步驟102 ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到卡片返回的處理結(jié)果后將處理結(jié)果返回給所述上位機,返回步驟102 ;
[0133]步驟109的具體實現(xiàn)過程在實施例九中詳述。
[0134]本實施例中的讀卡器同時具有l(wèi)ightning接口和USB接口,可與蘋果設(shè)備與上位機連接進行連接,讀卡器上電后判斷與其連接的設(shè)備,如連接的設(shè)備為蘋果設(shè)備則一直以蘋果模式進行工作,如連接的設(shè)備為上位機則一直以USB模式進行工作。
[0135]本實施例中的方法還有另一種實現(xiàn)方式,即將在步驟105和步驟109中讀卡器將處理結(jié)果返回后繼續(xù)等待接收數(shù)據(jù),具體實現(xiàn)為:
[0136]步驟105’:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),返回步驟105’,如為下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),返回步驟105’ ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,返回步驟105,;
[0137]所述步驟109替換為步驟109’ ;
[0138]步驟109’:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),返回步驟109’,如為下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),返回步驟109’;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到卡片返回的處理結(jié)果后將處理結(jié)果返回給所述上位機,返回步驟109’。
[0139]實施例二
[0140]本發(fā)明實施例二提供一種智能讀卡器的工作方法,如圖2所示,包括:
[0141]步驟201:讀卡器上電,進行初始化;
[0142]具體的,在本實施例中,讀卡器進行初始化包括:將重認證標志、系統(tǒng)模式標志、USB數(shù)據(jù)傳輸標志、USB連接標志、卡槽狀態(tài)標識、USB接收完成標志、枚舉完成標志復(fù)位;將蘋果認證附件錯誤標志置位;
[0143]步驟202:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟203,否則執(zhí)行步驟204 ;
[0144]本實施例中,判斷是否有蘋果設(shè)備與其連接具體為:判斷蘋果供電管腳電信號是否為高電平,是則連接,否則未連接;
[0145]步驟203:設(shè)置系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟206 ;
[0146]在本實施例中,設(shè)置需要重新進行蘋果認證操作具體為:將重認證標志置位;設(shè)置系統(tǒng)模式為蘋果模式具體為:將系統(tǒng)模式標志設(shè)置為2 ;
[0147]步驟204:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟205,否則返回步驟202 ;
[0148]在本實施例中,步驟204具體為:判斷USB VCC供電管腳的電壓,如為高電壓則USB接口有連接設(shè)備,如為低電壓則USB接口沒有連接設(shè)備;具體的,高電壓為5V,低電壓為OV ;
[0149]步驟205:設(shè)置系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟206 ;
[0150]在本實施例中,設(shè)置系統(tǒng)模式為USB模式具體為:將系統(tǒng)模式標志設(shè)置為I ;
[0151]步驟206:判斷系統(tǒng)模式,如為蘋果模式則執(zhí)行步驟207,如為USB模式則執(zhí)行步驟
214;
[0152]具體的,步驟206包括:判斷系統(tǒng)模式標志的值,如為I則為USB模式,如為2則為
蘋果模式;
[0153]步驟207:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟208,否則執(zhí)行步驟 210 ;
[0154]在本實施例中,步驟207具體為:判斷重認證標志是否置位,是則需要重新進行蘋果認證操作,否則不需要重新進行蘋果認證操作;
[0155]步驟208:進行蘋果認證操作,并判斷蘋果認證操作是否成功,是則執(zhí)行步驟209,否則返回步驟206 ;
[0156]在本實施例中,進行蘋果認證操作在實施例七中進行詳述;
[0157]判斷蘋果認證操作是否成功具體為:判斷蘋果認證附件錯誤標志是否置位,是則蘋果認證操作不成功,否則蘋果認證操作成功;
[0158]步驟209:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟210 ;
[0159]在本實施例中,步驟209具體為:將重認證標志復(fù)位;
[0160]步驟210:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備;
[0161]在本實施例中,步驟210的具體實現(xiàn)過程在實施例八中詳述;
[0162]步驟211:判斷USB接口是否接入電源,是則執(zhí)行步驟212,否則返回步驟206 ;
[0163]步驟212:判斷是否向蘋果設(shè)備發(fā)送過蘋果充電事件通知,是則執(zhí)行返回206,否則執(zhí)行步驟213 ;
[0164]在本實施例中,讀卡器向蘋果設(shè)備發(fā)送蘋果充電指令之后讀卡器開始為蘋果設(shè)備充電;
[0165]步驟213:向蘋果設(shè)備發(fā)送蘋果充電事件通知,返回步驟206 ;
[0166]本實施例中的充電過程是可選方案,也可沒有充電過程,則步驟210執(zhí)行完后返回步驟206 ;
[0167]步驟214:判斷USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟219,否則執(zhí)行步驟
215;
[0168]步驟215:使能USB連接;
[0169]具體的,本實施例中的使能USB連接為將USB連接標志置位;
[0170]步驟216:進行USB枚舉操作;
[0171]具體的,本實施例中,進行USB枚舉操作為讀卡器接收到上位機下發(fā)的枚舉指令進行枚舉操作,枚舉完成后將枚舉完成標志置位,具體枚舉操作過程在此不再贅述;
[0172]步驟217:判斷枚舉是否完成,是則執(zhí)行步驟218,否則返回步驟206 ;
[0173]具體的,步驟217包括:判斷枚舉完成標志是否置位,是則枚舉完成,否則枚舉未完成;
[0174]步驟218:將USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟219 ;
[0175]步驟219:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機;
[0176]在本實施例中,步驟219的具體實現(xiàn)過程在實施例九中詳述。
[0177]本實施例的方法是蘋果模式優(yōu)先的讀卡器上電后只能以一種模式進行工作的實現(xiàn)方式,如上電后首先判斷是不是有蘋果設(shè)備連接,則一直以蘋果模式進行工作,如判斷不是蘋果設(shè)備連接而是USB設(shè)備連接,則一直以USB模式進行工作。
[0178]實施例三
[0179]本發(fā)明實施例三提供一種智能讀卡器的工作方法,如圖3所示,包括:
[0180]步驟301:讀卡器上電,進行初始化;
[0181]在本實施例中,進行初始化包括:將重認證標志、系統(tǒng)模式標志、USB數(shù)據(jù)傳輸標志、USB連接標志、卡槽狀態(tài)標識、USB接收完成標志、枚舉完成標志復(fù)位;將蘋果認證附件錯誤標志置位;
[0182]步驟302:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟303,否則執(zhí)行步驟304 ;
[0183]在本實施例中,步驟302具體為:判斷USB VCC供電管腳的電壓,如為高電壓則USB接口有連接設(shè)備,如為低電壓則USB接口沒有連接設(shè)備;具體的,高電壓為5V,低電壓為OV ;
[0184]步驟303:設(shè)置系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟306 ;
[0185]在本實施例中,設(shè)置系統(tǒng)模式為USB模式具體為:將系統(tǒng)模式標志設(shè)置為I ;
[0186]步驟304:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟305,否則返回步驟302 ;
[0187]本實施例中,判斷是否有蘋果設(shè)備與其連接具體為:判斷蘋果供電管腳電信號是否為高電平,是則連接,否則未連接;
[0188]步驟305:設(shè)置系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟306 ;
[0189]在本實施例中,設(shè)置需要重新進行蘋果認證操作具體為:將重認證標志置位;設(shè)置系統(tǒng)模式為蘋果模式具體為:將系統(tǒng)模式標志設(shè)置為2 ;
[0190]步驟306:判斷系統(tǒng)模式,如為蘋果模式則執(zhí)行步驟307,如為USB模式則執(zhí)行步驟
311;
[0191]具體的,步驟306包括:判斷系統(tǒng)模式標志的值,如為I則為USB模式,如為2則為
蘋果模式;
[0192]步驟307:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟308,否則執(zhí)行步驟 310 ;
[0193]在本實施例中,步驟307具體為:判斷重認證標志是否置位,是則需要重新進行蘋果認證操作,否則不需要重新進行蘋果認證操作;
[0194]步驟308:進行蘋果認證操作,并判斷蘋果認證操作是否成功,是則執(zhí)行步驟309,否則返回步驟306 ;
[0195]在本實施例中,進行蘋果認證操作在實施例七中進行詳述;
[0196]判斷蘋果認證操作是否成功具體為:判斷蘋果認證附件錯誤標志是否置位,是則蘋果認證操作不成功,否則蘋果認證操作成功;
[0197]步驟309:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟310 ;
[0198]在本實施例中,步驟309具體為:將重認證標志復(fù)位;
[0199]步驟310:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備,返回步驟306 ;
[0200]在本實施例中,步驟310的具體實現(xiàn)過程在實施例八中詳述;
[0201]步驟311:判斷USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟316,否則執(zhí)行步驟
312;
[0202]步驟312:使能USB連接;
[0203]具體的,本實施例中的使能USB連接為將USB連接標志置位;
[0204]步驟313:進行USB枚舉操作;
[0205]具體的,本實施例中,進行USB枚舉操作為讀卡器接收到上位機下發(fā)的枚舉指令進行枚舉操作,枚舉完成后將枚舉完成標志置位,具體枚舉操作過程在此不再贅述;[0206]步驟314:判斷枚舉是否完成,是則執(zhí)行步驟315,否則返回步驟306 ;
[0207]具體的,步驟314包括:判斷枚舉完成標志是否置位,是則枚舉完成,否則枚舉未完成;
[0208]步驟315:將USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟316 ;
[0209]步驟316:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機,返回步驟306 ;
[0210]在本實施例中,步驟316的具體實現(xiàn)過程在實施例九中詳述。
[0211]本實施例方法是USB模式優(yōu)先的一種模式工作的實現(xiàn)方式,如上電后首先判斷是不是有USB設(shè)備連接,有則一直以USB模式進行工作,如判斷不是USB設(shè)備連接而是蘋果設(shè)備連接,則一直以蘋果模式進行工作。
[0212]實施例四
[0213]本發(fā)明實施例四提供一種智能讀卡器的工作方法,如圖4所示,包括:
[0214]步驟401:讀卡器上電,進行初始化;
[0215]具體的,在本實施例中,讀卡器進行初始化包括:將重認證標志、系統(tǒng)模式標志、USB數(shù)據(jù)傳輸標志、USB連接標志、卡槽狀態(tài)標識、USB接收完成標志、枚舉完成標志復(fù)位;將蘋果認證附件錯誤標志置位;
[0216]步驟402:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟403,否則執(zhí)行步驟404 ;
[0217]本實施例中,判斷是否有蘋果設(shè)備與其連接具體為:判斷蘋果供電管腳電信號是否為高電平,是則連接,否則未連接;
[0218]步驟403:設(shè)置系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟406 ;
[0219]在本實施例中,設(shè)置系統(tǒng)模式為蘋果模式具體為:將系統(tǒng)模式標志設(shè)置為2 ;設(shè)置需要重新進行蘋果認證操作具體為:將重認證標志置位;
[0220]步驟404:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟405,否則返回步驟402 ;
[0221]在本實施例中,步驟404具體為:判斷USB VCC供電管腳的電壓,如為高電壓則USB接口有連接設(shè)備,如為低電壓則USB接口沒有連接設(shè)備;具體的,高電壓為5V,低電壓為OV ;
[0222]步驟405:設(shè)置系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟406 ;
[0223]在本實施例中,設(shè)置系統(tǒng)模式為USB模式具體為:將系統(tǒng)模式標志設(shè)置為I ;
[0224]步驟406:判斷系統(tǒng)模式,如為蘋果模式則執(zhí)行步驟407,如為USB模式則執(zhí)行步驟
413;
[0225]具體的,步驟406包括:判斷系統(tǒng)模式標志的值,如為I則為USB模式,如為2則為
蘋果模式;
[0226]步驟407:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟408,否則執(zhí)行步驟 410 ;
[0227]在本實施例中,步驟407具體為:判斷重認證標志是否置位,是則需要重新進行蘋果認證操作,否則不需要重新進行蘋果認證操作;
[0228]步驟408:進行蘋果認證操作,并判斷蘋果認證操作是否成功,是則執(zhí)行步驟409,否則返回步驟406 ;[0229]在本實施例中,進行蘋果認證操作在實施例七中進行詳述;
[0230]判斷蘋果認證操作是否成功具體為:判斷蘋果認證附件錯誤標志是否置位,是則蘋果認證操作不成功,否則蘋果認證操作成功;
[0231]步驟409:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟410 ;
[0232]具體的,在本實施例中,設(shè)置不需要重新進行蘋果認證操作具體為:將重認證標志復(fù)位;
[0233]步驟410:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備;
[0234]在本實施例中,步驟410的具體實現(xiàn)過程在實施例八中詳述;
[0235]步驟411:判斷蘋果設(shè)備是否拔出,是則執(zhí)行步驟412,否則返回步驟406 ;
[0236]步驟412:初始化蘋果模式下的標志,返回步驟402 ;
[0237]具體的,本實施例中,初始化蘋果模式下的標志包括:將重認證標志和系統(tǒng)模式標志復(fù)位,將蘋果認證附件錯誤標志置位;
[0238]步驟413:判斷USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟418,否則執(zhí)行步驟
414;
[0239]步驟414:使能USB連接;
[0240]具體的,本實施例中的使能USB連接為將USB連接標志置位;
[0241]步驟415:進行USB枚舉操作;
[0242]具體的,本實施例中,進行USB枚舉操作為讀卡器接收到上位機下發(fā)的枚舉指令進行枚舉操作,枚舉完成后將枚舉完成標志置位,具體枚舉操作過程在此不再贅述;
[0243]步驟416:判斷枚舉是否完成,是則執(zhí)行步驟417,否則返回步驟406 ;
[0244]具體的,步驟416包括:判斷枚舉完成標志是否置位,是則枚舉完成,否則枚舉未完成;
[0245]步驟417:將USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟418 ;
[0246]步驟418:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機;
[0247]在本實施例中,步驟418的具體實現(xiàn)過程在實施例九中詳述;
[0248]步驟419:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟420,否則返回步驟406 ;
[0249]步驟420:失能USB連接,將系統(tǒng)模式設(shè)置為蘋果模式,初始化USB模式下的標志,設(shè)置需要重新進行蘋果認證操作,返回步驟406 ;
[0250]具體的,本實施例中的失能USB連接為將USB連接標志復(fù)位;初始化USB模式下的標志,包括:將系統(tǒng)模式標志、USB數(shù)據(jù)傳輸標志、USB連接標志、卡槽狀態(tài)標識、USB接收完成標志、枚舉完成標志復(fù)位。
[0251]本實施例方法是USB模式和蘋果模式相互切換,且蘋果模式優(yōu)先的一種實現(xiàn)方式,如上電后首先判斷是不是有蘋果設(shè)備連接,有則以蘋果模式進行工作,在蘋果數(shù)據(jù)處理完成后如蘋果設(shè)備拔出后則重新判斷連接的設(shè)備,如蘋果設(shè)備未拔出則繼續(xù)以蘋果模式工作;如判斷不是蘋果設(shè)備連接而是USB設(shè)備連接,則以USB模式進行工作,在USB數(shù)據(jù)處理完成后如有蘋果設(shè)備接入則讀卡器重新判斷連接的設(shè)備。
[0252]實施例五[0253]本發(fā)明實施例五提供一種智能讀卡器的工作方法,如圖5所示,包括:
[0254]步驟501:讀卡器上電,進行初始化;
[0255]具體的,本實施例中的進行初始化包括:將重認證標志、系統(tǒng)模式標志、USB數(shù)據(jù)傳輸標志、USB連接標志、卡槽狀態(tài)標識、USB接收完成標志、枚舉完成標志復(fù)位;將蘋果認證附件錯誤標志置位;
[0256]步驟502:判斷USB接口是否有連接設(shè)備,是則執(zhí)行步驟503,否則執(zhí)行步驟504 ;
[0257]在本實施例中,步驟502具體為:判斷USB VCC供電管腳的電壓,如為高電壓則USB接口有連接設(shè)備,如為低電壓則USB接口沒有連接設(shè)備;具體的,高電壓為5V,低電壓為OV ;
[0258]步驟503:設(shè)置系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟506 ;
[0259]在本實施例中,設(shè)置系統(tǒng)模式為USB模式具體為:將系統(tǒng)模式標志設(shè)置為I ;
[0260]步驟504:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟505,否則返回步驟502 ;
[0261]在本實施例中,步驟504具體為:判斷蘋果供電管腳電信號是否為高電平,是則連接,否則未連接;
[0262]步驟505:設(shè)置系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟506 ;
[0263]在本實施例中,設(shè)置系統(tǒng)模式為蘋果模式具體為:將系統(tǒng)模式標志設(shè)置為2 ;設(shè)置需要重新進行蘋果認證操作具體為:將重認證標志置位;
[0264]步驟506:判斷系統(tǒng)模式,如為蘋果模式則執(zhí)行步驟507,如為USB模式則執(zhí)行步驟
513;
[0265]步驟507:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟508,否則執(zhí)行步驟 510 ;
[0266]在本實施例中,步驟507具體為:判斷重認證標志是否置位,是則需要重新進行蘋果認證操作,否則不需要重新進行蘋果認證操作;
[0267]步驟508:進行蘋果認證操作,并判斷蘋果認證操作是否成功,是則執(zhí)行步驟509,否則返回步驟506 ;
[0268]在本實施例中,進行蘋果認證操作在實施例七中進行詳述;
[0269]判斷蘋果認證操作是否成功具體為:判斷蘋果認證附件錯誤標志是否置位,是則蘋果認證操作不成功,否則蘋果認證操作成功;
[0270]步驟509:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟510 ;
[0271 ] 在本實施例中,步驟509具體為:將重認證標志復(fù)位;
[0272]步驟510:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備;
[0273]在本實施例中,步驟510的具體實現(xiàn)過程在實施例八中詳述;
[0274]步驟511:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟512,否則返回步驟506 ;
[0275]步驟512:將系統(tǒng)模式設(shè)置為USB模式,將USB數(shù)據(jù)傳輸標志復(fù)位,初始化蘋果模式下的標志,返回步驟506 ;
[0276]具體的,本實施例中,將系統(tǒng)模式設(shè)置為USB模式具體為:將系統(tǒng)模式標志設(shè)置為I ;初始化蘋果模式下的標志包括:將重認證標志和系統(tǒng)模式標志復(fù)位,將蘋果認證附件錯誤標志置位;
[0277]步驟513:判斷USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟518,否則執(zhí)行步驟
514;
[0278]步驟514:使能USB連接;
[0279]具體的,本實施例中的使能USB連接為將USB連接標志置位;
[0280]步驟515:進行USB枚舉操作;
[0281]具體的,本實施例中,進行USB枚舉操作為讀卡器接收到上位機下發(fā)的枚舉指令進行枚舉操作,枚舉完成后將枚舉完成標志置位,具體枚舉操作過程在此不再贅述;
[0282]步驟516:判斷枚舉是否完成,是則執(zhí)行步驟517,否則返回步驟506 ;
[0283]具體的,步驟516包括:判斷枚舉完成標志是否置位,是則枚舉完成,否則枚舉未完成;
[0284]步驟517:將USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟518 ;
[0285]步驟518:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機;
[0286]在本實施例中,步驟518的具體實現(xiàn)過程在實施例九中詳述;
[0287]步驟519:判斷USB設(shè)備是否拔出,是則執(zhí)行步驟520,否則返回步驟506 ;
[0288]步驟520:失能USB連接,返回步驟502 ;
[0289]具體的,本實施例中的失能USB連接為將USB連接標志復(fù)位。
[0290]本實施例方法是USB模式和蘋果模式相互切換,且USB模式優(yōu)先的一種實現(xiàn)方式,如上電后首先判斷是不是有USB設(shè)備連接,有則以USB模式進行工作,在USB數(shù)據(jù)處理完成后如USB設(shè)備拔出則重新判斷連接的設(shè)備,如USB設(shè)備未拔出則繼續(xù)以USB模式工作;如判斷不是USB設(shè)備連接而是蘋果設(shè)備連接,則以蘋果模式進行工作,在蘋果數(shù)據(jù)處理完成后如USB設(shè)備接入讀卡器則重新判斷連接的設(shè)備。
[0291]實施例六
[0292]本發(fā)明實施例六提供一種智能讀卡器的工作方法,如圖6所示,包括:
[0293]步驟601:讀卡器上電,進行初始化;
[0294]具體的,在本實施例中,讀卡器進行初始化包括:將定時器中斷標志、重認證標志、系統(tǒng)模式標志、USB數(shù)據(jù)傳輸標志、USB連接標志、卡槽狀態(tài)標識、USB接收完成標志、枚舉完成標志復(fù)位;將蘋果認證附件錯誤標志置位;
[0295]步驟602:啟動定時器,開始計時;
[0296]具體的,在本實施例中,當(dāng)定時器計時到達預(yù)設(shè)時間時進入定時中斷;
[0297]定時中斷處理如圖7所示,包括:
[0298]步驟Pl:清除定時器中斷標志;
[0299]步驟P2:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟P3,否則執(zhí)行步驟P4 ;
[0300]本實施例中,判斷是否有蘋果設(shè)備與其連接具體為:判斷蘋果供電管腳電信號是否為高電平,是則連接,否則未連接;
[0301]步驟P3:將系統(tǒng)模式設(shè)為蘋果模式,執(zhí)行步驟P5 ;
[0302]步驟P4:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟P5 ;
[0303]具體的,在本實施例中,設(shè)置不需要重新進行蘋果認證操作具體為:將重認證標志復(fù)位;
[0304]步驟P5:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟P6,否則執(zhí)行步驟P7 ;
[0305]在本實施例中,步驟P5具體為:判斷USB VCC供電管腳的電壓,如為高電壓則USB接口有連接設(shè)備,如為低電壓則USB接口沒有連接設(shè)備;具體的,高電壓為5V,低電壓為OV ;
[0306]步驟P6:設(shè)置系統(tǒng)模式為USB模式,退出定時中斷;
[0307]在本實施例中,設(shè)置系統(tǒng)模式為USB模式具體為:將系統(tǒng)模式標志設(shè)置為I ;
[0308]步驟P7:將USB數(shù)據(jù)傳輸標志復(fù)位,退出定時中斷;
[0309]步驟603:判斷系統(tǒng)模式,如為蘋果模式則執(zhí)行步驟604,如為USB模式則執(zhí)行步驟608 ;
[0310]具體的,步驟603包括:判斷系統(tǒng)模式標志的值,如為I則為USB模式,如為2則為
蘋果模式;
[0311]步驟604:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟605,否則執(zhí)行步驟 607 ;
[0312]在本實施例中,步驟604具體為:判斷重認證標志是否置位,是則需要重新進行蘋果認證操作,否則不需要重新進行蘋果認證操作;
[0313]步驟605:進行蘋果認證操作,并判斷蘋果認證操作是否成功,是則執(zhí)行步驟606,否則返回步驟603 ;
[0314]在本實施例中,進行蘋果認證操作在實施例七中進行詳述;
[0315]判斷蘋果認證操作是否成功具體為:判斷蘋果認證附件錯誤標志是否置位,是則蘋果認證操作不成功,否則蘋果認證操作成功;
[0316]步驟606:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟607 ;
[0317]步驟607:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備,返回步驟603 ;
[0318]在本實施例中,步驟607的具體實現(xiàn)過程在實施例八中詳述;
[0319]步驟608:判斷USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟613,否則執(zhí)行步驟609 ;
[0320]步驟609:使能USB功能,使能USB連接;
[0321]具體的,本實施例中的使能USB連接為將USB連接標志置位;
[0322]步驟610:進行USB枚舉操作;
[0323]具體的,本實施例中,進行USB枚舉操作為讀卡器接收到上位機下發(fā)的枚舉指令進行枚舉操作,枚舉完成后將枚舉完成標志置位,具體枚舉操作過程在此不再贅述;
[0324]步驟611:判斷枚舉是否完成,是則執(zhí)行步驟612,否則返回步驟603 ;
[0325]具體的,步驟611包括:判斷枚舉完成標志是否置位,是則枚舉完成,否則枚舉未完成;
[0326]步驟612:將USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟613 ;
[0327]步驟613:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機,返回步驟603 ;
[0328]在本實施例中,步驟613的具體實現(xiàn)過程在實施例九中詳述。[0329]本實施例方法是USB模式和蘋果模式相互切換,讀卡器上電后開啟定時器,定時器的計時到達預(yù)設(shè)時間時進入定時中斷,在定時中斷中檢測與其連接的設(shè)備并設(shè)置相應(yīng)的系統(tǒng)模式,退出定時中斷后,根據(jù)判斷的系統(tǒng)模式進行相應(yīng)操作。
[0330]實施例七
[0331]本發(fā)明實施例七提供了一種進行蘋果認證操作的實現(xiàn)過程;如圖8所示,包括:
[0332]步驟701:讀卡器喚醒內(nèi)部的蘋果認證芯片;
[0333]步驟702:向蘋果設(shè)備發(fā)送第一預(yù)設(shè)命令,等待接收蘋果設(shè)備返回的第一響應(yīng);
[0334]具體的,本實施例中的第一預(yù)設(shè)命令為StartIDPS命令;
[0335]步驟703:判斷是否接收到第一響應(yīng),是則執(zhí)行步驟704,否則執(zhí)行步驟709 ;
[0336]步驟704:向蘋果設(shè)備發(fā)送附件配置信息,等待接收蘋果設(shè)備返回的配置響應(yīng);
[0337]具體的,在本實施例中,附件配置信息中包括可充電標志,配置響應(yīng)中包括置位后的可充電標志;
[0338]步驟705:判斷是否接收到配置響應(yīng),是則執(zhí)行步驟706,否則執(zhí)行步驟709 ;
[0339]步驟706:向蘋果設(shè)備發(fā)送第二預(yù)設(shè)命令,等待接收蘋果設(shè)備返回的第二響應(yīng);
[0340]具體的,本實施例中的第二預(yù)設(shè)命令為EndIDPS命令;
[0341]步驟707:判斷是否接收到第二響應(yīng),是則執(zhí)行步驟708,否則執(zhí)行步驟709 ;
[0342]步驟708:判斷在預(yù)設(shè)時間內(nèi)是否接收到蘋果設(shè)備發(fā)送的認證指令,是則執(zhí)行步驟710,否則執(zhí)行步驟709 ;
[0343]步驟709:將蘋果認證附件錯誤標志和重認證標志置位,蘋果認證芯片休眠;
[0344]步驟710:判斷接收到的認證指令是否為認證附件指令,是則執(zhí)行步驟711,否則返回步驟708 ;
[0345]步驟711:從蘋果認證芯片中讀取蘋果認證證書長度,根據(jù)蘋果認證證書長度從蘋果認證芯片中讀取證書內(nèi)容;
[0346]步驟712:將證書內(nèi)容發(fā)送給蘋果設(shè)備;
[0347]本實施例中,在步驟712與步驟713之間還包括:
[0348]步驟712’:判斷證書內(nèi)容是否發(fā)送完成,是則執(zhí)行步驟713,否則繼續(xù)將剩余的證書內(nèi)容發(fā)送給蘋果設(shè)備,執(zhí)行步驟712’ ;
[0349]在本實施例中,如證書內(nèi)容太大則需要進行分包發(fā)送,當(dāng)發(fā)送完證書內(nèi)容的最后一包數(shù)據(jù)后,將發(fā)送完成標志置位;判斷證書內(nèi)容是否發(fā)送完成具體為:判斷發(fā)送完成標志是否置位,如置位則發(fā)送完成,如未置位則發(fā)送未完成;
[0350]步驟713:等待接收蘋果設(shè)備發(fā)送的挑戰(zhàn)值,并判斷是否接收到挑戰(zhàn)值,是則執(zhí)行步驟714,執(zhí)行返回步驟713 ;
[0351]步驟714:將接收到的挑戰(zhàn)值下發(fā)給蘋果認證芯片;
[0352]本實施例中,當(dāng)蘋果認證芯片接收到挑戰(zhàn)值時,使用保存的私鑰根據(jù)預(yù)設(shè)簽名算法對其進行簽名;
[0353]步驟715:等待接收蘋果認證芯片返回的簽名結(jié)果,并判斷是否接收到簽名結(jié)果,是則執(zhí)行步驟716,否則返回步驟715 ;
[0354]步驟716:將接收到的簽名結(jié)果發(fā)送給蘋果設(shè)備;
[0355]步驟717:等待接收蘋果設(shè)備返回的驗證響應(yīng),并判斷是否接收到正確的驗證響應(yīng),是則蘋果認證芯片休眠;否則執(zhí)行步驟718 ;
[0356]步驟718:將蘋果認證附件錯誤標志和重認證標志置位,蘋果認證芯片休眠。
[0357]實施例八
[0358]本發(fā)明實施例八提供了讀卡器等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到蘋果數(shù)據(jù)時進行處理并將處理結(jié)果返回給蘋果設(shè)備的具體實現(xiàn)過程;讀卡器與蘋果設(shè)備通過lightning接口進行通訊,如圖9所示,具體實現(xiàn)過程具體包括:
[0359]步驟801:讀卡器等待并接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù);
[0360]在本實施例中,讀卡器通過lightning接口接收蘋果設(shè)備下發(fā)的蘋果數(shù)據(jù),并存儲到串口緩存區(qū)中;
[0361]步驟802:判斷是否接收完全部的蘋果數(shù)據(jù),是則執(zhí)行步驟803,否則返回步驟801 ;
[0362]在本實施例中,當(dāng)接收完上位機下發(fā)的全部蘋果數(shù)據(jù)后,將蘋果接口數(shù)據(jù)標志置位;步驟802具體為:判斷蘋果接口數(shù)據(jù)標志是否置位,是則接收完全部的蘋果數(shù)據(jù),否則未接收完全部的蘋果數(shù)據(jù);
[0363]步驟803:判斷接收到的蘋果數(shù)據(jù)是否為應(yīng)答類指令,是則給蘋果設(shè)備返回應(yīng)答響應(yīng),返回步驟801 ;否則執(zhí)行步驟804 ;
[0364]具體的,本實施例中的應(yīng)答類指令為ACK指令;
[0365]步驟804:從接收到的蘋果數(shù)據(jù)中獲取指令標識;
[0366]步驟805:判斷接收到的蘋果數(shù)據(jù)的指令類別,如為第一預(yù)設(shè)指令,則將指令標識和第一蘋果響應(yīng)返回給蘋果設(shè)備,返回步驟801 ;如為數(shù)據(jù)處理指令則執(zhí)行步驟806 ;如為第二預(yù)設(shè)指令,則將指令標識和第二蘋果響應(yīng)返回給蘋果設(shè)備,返回步驟801 ;
[0367]在本實施例中,第一預(yù)設(shè)指令具體為:Open_Data_Session_For_Protocol指令,第二預(yù)設(shè)指令為Close_Data_Session指令;
[0368]在本實施例中,讀卡器通過lightning接口將響應(yīng)返回給蘋果設(shè)備;
[0369]步驟806:給蘋果設(shè)備返回指令標識和數(shù)據(jù)處理指令響應(yīng);
[0370]步驟807:判斷收到的蘋果數(shù)據(jù)是否為寫用戶緩存指令,是則將數(shù)接收到的蘋果數(shù)據(jù)寫入到用戶緩存中,并給蘋果設(shè)備返回成功寫入應(yīng)答,返回步驟801 ;否則執(zhí)行步驟808 ;
[0371]步驟808:判斷接收到的蘋果數(shù)據(jù)是否符合CCID指令格式,是則執(zhí)行步驟809,否則向蘋果設(shè)備返回CCID指令不支持響應(yīng),返回步驟801 ;
[0372]步驟809:判斷接收到的蘋果數(shù)據(jù)中的字類型,如為第一預(yù)設(shè)值則執(zhí)行步驟810,如為其他值則執(zhí)行相應(yīng)操作;
[0373]在本實施例中,判斷接收到的蘋果數(shù)據(jù)中的字類型具體為:判斷蘋果數(shù)據(jù)中第一字節(jié)上的數(shù)據(jù),如為第一預(yù)設(shè)值則執(zhí)行步驟810,如為其他值則執(zhí)行相應(yīng)操作;
[0374]具體的,第一預(yù)設(shè)值為0x65 ;本實施例中,如蘋果數(shù)據(jù)中的字類型為第一預(yù)設(shè)值則表示接收到的蘋果數(shù)據(jù)為獲取卡槽狀態(tài)指令;
[0375]在本實施例中,為其他值則執(zhí)行相應(yīng)操作包括:如為第二預(yù)設(shè)值則根據(jù)數(shù)據(jù)傳輸類型對接收到的數(shù)據(jù)類型進行相應(yīng)操作,如為第三預(yù)設(shè)值則判斷CCID指令中ESCAPE子功能類,如為第四預(yù)設(shè)值則進行DUKPT類處理流程;如為其他值則發(fā)送給讀卡芯片進行相應(yīng)處理;具體的,數(shù)據(jù)類型包括雙向加密傳輸、單向加密傳輸和明文傳輸;第二預(yù)設(shè)值為0x6f,第三預(yù)設(shè)值為0x6b,第四預(yù)設(shè)值為0x5b ;
[0376]步驟810:將接收到的蘋果數(shù)據(jù)發(fā)送給讀卡芯片進行處理,并等待接收讀卡芯片返回處理結(jié)果;
[0377]步驟811:當(dāng)接收到讀卡芯片返回的處理結(jié)果時,將處理結(jié)果發(fā)送給蘋果設(shè)備;
[0378]步驟812:判斷讀卡芯片是否滿足下電條件,是則向讀卡芯片發(fā)送下電指令,本流程結(jié)束,否則本流程結(jié)束;
[0379]在本實施例中,讀卡芯片的下電條件為:卡槽狀態(tài)改變且卡片被拔出。
[0380]實施例九
[0381]如圖10所示,為本發(fā)明實施例九提供的讀卡器等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時進行處理并將處理結(jié)果返回給上位機的具體實現(xiàn)流程圖,包括:
[0382]步驟901:讀卡器等待并接收上位機發(fā)送的USB數(shù)據(jù);
[0383]在本實施例中,讀卡器通過USB接口接收上位機下發(fā)的USB數(shù)據(jù),并存儲到USB緩存區(qū)中;本實施例中,讀卡器開始接收上位機發(fā)送的USB數(shù)據(jù)時,開啟USB卡槽定時器;當(dāng)USB卡槽定時器計時到達預(yù)定值時,進入USB卡槽定時中斷,執(zhí)行步驟Tl-步驟T5 ;
[0384]步驟Tl:關(guān)閉USB卡槽定時器,讀卡器向讀卡芯片發(fā)送獲取卡槽狀態(tài)指令;
[0385]步驟T2:判斷卡槽狀態(tài)是否改變,是則執(zhí)行步驟T3,否則返回步驟T2 ;
[0386]在本實施例中,步驟T2具體為:判斷卡槽狀態(tài)標識是否置位,是則卡槽狀態(tài)改變,否則卡槽狀態(tài)未改變;
[0387]步驟T3:判斷卡槽中是否有卡,是則向上位機發(fā)送有卡響應(yīng),執(zhí)行步驟T4,否則向上位機發(fā)送無卡響應(yīng),執(zhí)行步驟T5 ;
[0388]具體的,本實施例中的有卡響應(yīng)為0x9002,無卡響應(yīng)為0x9003 ;
[0389]步驟T4:判斷記錄的卡槽狀態(tài)是否為有卡,是則開啟USB卡槽定時器,退出USB卡槽定時中斷,否則記錄卡槽狀態(tài)為有卡,將卡槽狀態(tài)標識置位,開啟USB卡槽定時器,退出USB卡槽定時中斷;
[0390]步驟T5:判斷記錄的卡槽狀態(tài)是否為無卡,是開啟USB卡槽定時器,退出USB卡槽定時中斷,否則記錄卡槽狀態(tài)為無卡,將卡槽狀態(tài)標識置位,開啟USB卡槽定時器,退出USB卡槽定時中斷;
[0391]步驟902:判斷是否接收完全部的USB數(shù)據(jù),是則執(zhí)行步驟903,否則返回步驟901 ;
[0392]在本實施例中,當(dāng)讀卡器通過USB接口接收完上位機下發(fā)的全部USB數(shù)據(jù)后,將USB接收完成標志置位;
[0393]步驟902具體為:判斷USB接收完成標志是否置位,是則接收完全部的USB數(shù)據(jù),否則未接收完全部的USB數(shù)據(jù);
[0394]步驟903:判斷接收到的USB數(shù)據(jù)是否為寫用戶緩存指令,是則將USB數(shù)據(jù)寫入到用戶緩存中,并給上位機返回成功寫入應(yīng)答,返回步驟901 ;否則執(zhí)行步驟904 ;
[0395]步驟904:判斷接收到的USB數(shù)據(jù)是否符合CCID指令格式,是則執(zhí)行步驟905,否則向上位機返回CCID指令不支持響應(yīng),返回步驟901 ;
[0396]步驟905:判斷接收到的USB數(shù)據(jù)中的字類型,如為第一預(yù)設(shè)值則執(zhí)行步驟906,如為其他則執(zhí)行相應(yīng)操作;
[0397]在本實施例中,判斷接收到的USB數(shù)據(jù)中的字類型具體為:判斷USB數(shù)據(jù)中第一字節(jié)上的數(shù)據(jù),如為第一預(yù)設(shè)值則執(zhí)行步驟906,如為其他值則執(zhí)行相應(yīng)操作;
[0398]具體的,第一預(yù)設(shè)值為0x65,本實施例中,如USB數(shù)據(jù)中的子類型為第一預(yù)設(shè)值則表示接收到的為獲取卡槽狀態(tài)指令;
[0399]在本實施例中,如為其他則執(zhí)行相應(yīng)操作包括:如為第二預(yù)設(shè)值則根據(jù)數(shù)據(jù)傳輸類型對接收到的數(shù)據(jù)類型進行相應(yīng)操作,如為第三預(yù)設(shè)值則判斷CCID指令中ESCAPE子功能類,如為第四預(yù)設(shè)值則進行DUKPT類處理流程;如為其他則發(fā)送給讀卡芯片進行相應(yīng)處理;具體的,數(shù)據(jù)類型包括雙向加密傳輸、單向加密傳輸和明文傳輸;第二預(yù)設(shè)值為0x6f,第三預(yù)設(shè)值為0x6b,第四預(yù)設(shè)值為0x5b ;
[0400]步驟906:將接收到的USB數(shù)據(jù)發(fā)送給讀卡芯片進行處理,并等待接收讀卡芯片返回處理結(jié)果;
[0401]步驟907:當(dāng)接收到讀卡芯片返回的處理結(jié)果時,將處理結(jié)果發(fā)送給上位機;
[0402]步驟908:判斷讀卡芯片是否滿足下電條件,是則向讀卡芯片發(fā)送下電指令,本流程結(jié)束,否則本流程結(jié)束;
[0403]在本實施例中,讀卡芯片的下電條件為:卡槽狀態(tài)改變且卡片被拔出。
[0404]具體的,在實施例八和實施例九中讀卡芯片接收到讀卡器發(fā)送的數(shù)據(jù)進行處理的具體現(xiàn)過程相同,如圖11所示,包括:
[0405]步驟L1:讀卡芯片根據(jù)接收到數(shù)據(jù)檢測指令的類型,如是上電指令,則執(zhí)行步驟L2,如是下電指令,則執(zhí)行步驟L4 ;如是數(shù)據(jù)交換APDU指令,則執(zhí)行步驟L5 ;
[0406]步驟L2:讀卡芯片對卡片進行上電操作;
[0407]步驟L3:讀卡芯片判斷是否接收到卡片返回的ATR (復(fù)位應(yīng)答文件),是則將上電成功響應(yīng)返回給讀卡器,否則將上電失敗響應(yīng)返回給讀卡器;
[0408]本實施例中的ATR中包含卡片復(fù)位參數(shù),如等待時間、通訊速率、T0/T1協(xié)議等;
[0409]步驟L4:讀卡芯片對卡片執(zhí)行下電操作,將下電成功信息返回給讀卡器;
[0410]步驟L5:讀卡芯片將接收到的數(shù)據(jù)按照IS07816協(xié)議發(fā)送給卡片,并等待卡片返回的響應(yīng);
[0411]步驟L6:讀卡芯片將接收到的卡片返回的響應(yīng)返回給讀卡器。
[0412]在本實施例中,在步驟LI中判斷如是設(shè)置參數(shù)指令,則執(zhí)行步驟L7 ;如是獲取參數(shù)指令,則執(zhí)行步驟Lll ;如是復(fù)位參數(shù)指令,則執(zhí)行步驟L12 ;如是擴展通道指令,則執(zhí)行步驟L13 ;
[0413]步驟L7:讀卡芯片根據(jù)設(shè)置參數(shù)指令中的指令參數(shù)與卡片協(xié)商通訊參數(shù);
[0414]本實施例中的通訊參數(shù)包括波特率;
[0415]步驟L8:讀卡芯片判斷協(xié)商通訊參數(shù)是否成功,是則執(zhí)行步驟L9,否則執(zhí)行步驟LlO ;
[0416]本實施例中步驟L8具體包括:讀卡芯片判斷卡片返回的數(shù)據(jù)和發(fā)送給卡片的數(shù)據(jù)是否相同,是則協(xié)商通訊參數(shù)成功,否則協(xié)商通訊參數(shù)不成功;
[0417]步驟L9:讀卡芯片將通訊參數(shù)返回給讀卡器,并根據(jù)通訊參數(shù)對CPU接口進行相應(yīng)設(shè)置;[0418]步驟LlO:讀卡芯片將默認通訊參數(shù)返回給讀卡器;
[0419]步驟Lll:讀卡芯片根據(jù)獲取參數(shù)指令獲取相應(yīng)的參數(shù),并將其返回給讀卡器;
[0420]步驟L12:讀卡芯片根據(jù)復(fù)位參數(shù)指令進行復(fù)位操作,將默認參數(shù)發(fā)送給讀卡器;
[0421]步驟L13:讀卡芯片根據(jù)擴展通道指令進行相應(yīng)操作,并將操作結(jié)果發(fā)送給讀卡器。
[0422]以上所述,僅為本發(fā)明較佳的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明公開的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。
【權(quán)利要求】
1.一種智能讀卡器的工作方法,其特征在于,包括: 步驟SO:讀卡器上電,進行初始化;進行初始化包括:將USB數(shù)據(jù)傳輸標志復(fù)位; 步驟S1:根據(jù)與其連接的設(shè)備類型設(shè)置系統(tǒng)模式; 步驟S2:判斷所述系統(tǒng)模式,如為蘋果模式,則執(zhí)行步驟S3,如為USB模式,則執(zhí)行步驟S6; 步驟S3:判斷是否需要重新進行蘋果認證操作,是則執(zhí)行步驟S4,否則執(zhí)行步驟S5 ;步驟S4:進行蘋果認證操作,并判斷認證操作是否成功,是則設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟S5,否則返回步驟S2 ; 步驟S5:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到所述蘋果數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),返回步驟S2,如為下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),返回步驟S2 ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,返回步驟S2 ; 步驟S6:判斷所述USB數(shù)據(jù)傳輸標志是否置位,是則執(zhí)行步驟S9,否則執(zhí)行步驟S7 ; 步驟S7:使能USB連接; 步驟S8:進行USB枚舉操作,并判斷枚舉是否完成,是則將所述USB數(shù)據(jù)傳輸標志置位,執(zhí)行步驟S9,否則返回步驟S2 ; 步驟S9:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到所述USB數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),返回步驟S2,如為下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),返回步驟S2 ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述上位機,返回步驟S2。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟S5中返回步驟S2之前還包括: 步驟Fl:判斷USB接口是否接入電源,是則執(zhí)行步驟F2,否則返回步驟S2 ; 步驟F2:判斷是否向所述蘋果設(shè)備發(fā)送過蘋果充電事件通知,是則執(zhí)行步驟F3,否則返回步驟S2 ; 步驟F3:向所述蘋果設(shè)備發(fā)送所述蘋果充電事件通知,返回步驟S2。
3.如權(quán)利要求1所述的方法,其特征在于,所述步驟SI包括: 步驟Al:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟A2,否則執(zhí)行步驟A3 ; 步驟A2:設(shè)置所述系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟S2 ; 步驟A3:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟A4,否則返回步驟Al ; 步驟A4:設(shè)置所述系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟S2。
4.如權(quán)利要求3所述的方法,其特征在于, 所述步驟S5中返回步驟S2之前還包括:判斷所述蘋果設(shè)備是否拔出,是則初始化蘋果模式下的標志,返回步驟S2,否則返回步驟S2 ; 所述步驟S9中返回步驟S2之前還包括:判斷是否有所述蘋果設(shè)備與其連接,是則失能USB連接,將所述系統(tǒng)模式設(shè)置為蘋果模式,初始化USB模式下的標志,設(shè)置需要重新進行蘋果認證操作,返回步驟S2,否則直接返回步驟S2。
5.如權(quán)利要求1所述的方法,其特征在于,所述步驟SI包括: 步驟B1:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟B2,否則返回步驟B3 ; 步驟B2:設(shè)置所述系統(tǒng)模式為USB模式,使能USB功能,執(zhí)行步驟S2 ; 步驟B3:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟B4,否則返回步驟B1 ; 步驟B4:設(shè)置所述系統(tǒng)模式為蘋果模式,設(shè)置需要重新進行蘋果認證操作,執(zhí)行步驟S2。
6.如權(quán)利要求5所述的方法,其特征在于, 所述步驟S5中返回步驟S2之前還包括:判斷是否有USB設(shè)備與其連接,是則將系統(tǒng)模式設(shè)置為USB模式,將所述USB數(shù)據(jù)傳輸標志復(fù)位,初始化蘋果模式下的標志,返回步驟S2,否則返回步驟S2 ; 所述步驟S9中返回步驟S2之前還包括:判斷所述USB設(shè)備是否拔出,是則失能USB連接,返回步驟S2,否則返回步驟S2。
7.如權(quán)利要求1所述的方法,其特征在于,所述步驟SI包括:啟動定時器,開始計時; 當(dāng)所述定時器計時到達預(yù)設(shè)時間時進入定時中斷; 所述定時中斷處理包括: 步驟Pl:清除定時器中斷標志; 步驟P2:判斷是否有蘋果設(shè)備與其連接,是則執(zhí)行步驟P3,否則執(zhí)行步驟P4 ; 步驟P3:將所述系統(tǒng)模式設(shè)為蘋果模式,執(zhí)行步驟P5 ; 步驟P4:設(shè)置不需要重新進行蘋果認證操作,執(zhí)行步驟P5 ; 步驟P5:判斷是否有USB設(shè)備與其連接,是則執(zhí)行步驟P6,否則執(zhí)行步驟P7 ; 步驟P6:設(shè)置所述系統(tǒng)模式為USB模式,退出定時中斷; 步驟P7:將所述USB數(shù)據(jù)傳輸標志復(fù)位,退出定時中斷。
8.如權(quán)利要求1-7任意一項所述的方法,其特征在于,所述進行蘋果認證操作,包括: 步驟S4-1:所述讀卡器喚醒內(nèi)部的蘋果認證芯片; 步驟S4-2:向所述蘋果設(shè)備發(fā)送第一預(yù)設(shè)命令,等待接收所述蘋果設(shè)備返回的第一響應(yīng); 步驟S4-3:判斷是否接收到所述第一響應(yīng),是則執(zhí)行步驟S4-4,否則執(zhí)行步驟S4-9 ;步驟S4-4:向所述蘋果設(shè)備發(fā)送附件配置信息,等待接收所述蘋果設(shè)備返回的配置響應(yīng);所述附件配置信息中包括可充電標志,所述配置響應(yīng)中包括置位后的可充電標志; 步驟S4-5:判斷是否接收到所述配置響應(yīng),是則執(zhí)行步驟S4-6,否則執(zhí)行步驟S4-9 ;步驟S4-6:向所述蘋果設(shè)備發(fā)送第二預(yù)設(shè)命令,等待接收蘋果設(shè)備返回的第二響應(yīng);步驟S4-7:判斷是否接收到所述第二響應(yīng),是則執(zhí)行步驟S4-8,否則執(zhí)行步驟S4-9 ;步驟S4-8:判斷在預(yù)設(shè)時間內(nèi)是否接收到所述蘋果設(shè)備發(fā)送的認證指令,是則執(zhí)行步驟S4-10,否則執(zhí)行步驟S4-9 ; 步驟S4-9:將蘋果認證附件錯誤標志和重認證標志置位,所述蘋果認證芯片休眠,進行蘋果認證操作結(jié)束; 步驟S4-10:判斷接收到的所述認證指令是否為認證附件指令,是則執(zhí)行步驟S4-11,否則返回步驟S4-8 ;步驟S4-11:從所述蘋果認證芯片中讀取蘋果認證證書長度,根據(jù)所述蘋果認證證書長度從所述蘋果認證芯片中讀取證書內(nèi)容; 步驟S4-12:將所述證書內(nèi)容發(fā)送給所述蘋果設(shè)備; 步驟S4-13:等待接收所述蘋果設(shè)備發(fā)送的挑戰(zhàn)值,并判斷是否接收到所述挑戰(zhàn)值,是則執(zhí)行步驟S4-14,執(zhí)行返回步驟S4-13 ; 步驟S4-14:將所述接收到的挑戰(zhàn)值下發(fā)給所述蘋果認證芯片; 步驟S4-15:等待接收所述蘋果認證芯片返回的簽名結(jié)果,并判斷是否接收到所述簽名結(jié)果,是則執(zhí)行步驟S4-16,否則返回步驟S4-15 ; 步驟S4-16:將所述接收到的簽名結(jié)果發(fā)送給所述蘋果設(shè)備; 步驟S4-17:等待接收所述蘋果設(shè)備返回的驗證響應(yīng),并判斷是否接收到正確的驗證響應(yīng),是則所述蘋果認證芯片休眠,進行蘋果認證操作結(jié)束;否則執(zhí)行步驟S4-18 ; 步驟S4-18:將所述蘋果認證附件錯誤標志和所述重認證標志置位,所述蘋果認證芯片休眠,進行蘋果認證操作結(jié)束。
9.如權(quán)利要求8所述的方法,其特征在于,所述步驟S4-12與步驟S4-13之間還包括: 步驟S4-12’:判斷所述證書內(nèi)容是否發(fā)送完成,是則執(zhí)行步驟S4-13,否則繼續(xù)將剩余的證書內(nèi)容發(fā)送給所述蘋果設(shè)備,執(zhí)行步驟S4-12’。
10.如權(quán)利要求1-7任意一項所述的方法,其特征在于,所述步驟S5包括: 步驟S5-1:等待并接收所述蘋果設(shè)備發(fā)送的所述蘋果數(shù)據(jù); 步驟S5-2:判斷是否接收完全部的蘋果數(shù)據(jù),是則執(zhí)行步驟S5-3,否則返回步驟S5-1 ; 步驟S5-3:判斷所述接收到的蘋果數(shù)據(jù)是否為應(yīng)答類指令,是則給所述蘋果設(shè)備返回應(yīng)答響應(yīng),返回步驟S5-1 ;否則執(zhí)行步驟S5-4 ; 步驟S5-4:從所述接收到的蘋果數(shù)據(jù)中獲取指令標識; 步驟S5-5:判斷所述接收到的蘋果數(shù)據(jù)的指令類別,如為第一預(yù)設(shè)指令,則將所述指令標識和第一蘋果響應(yīng)返回給所述蘋果設(shè)備,返回步驟S5-1 ;如為數(shù)據(jù)處理指令則執(zhí)行步驟S5-6 ;如為第二預(yù)設(shè)指令,則將所述指令標識和第二蘋果響應(yīng)返回給所述蘋果設(shè)備,返回步驟S5-1 ; 步驟S5-6:給所述蘋果設(shè)備返回所述指令標識和數(shù)據(jù)處理指令響應(yīng); 步驟S5-7:判斷所述接收到的蘋果數(shù)據(jù)是否為寫用戶緩存指令,是則將所述接收到的蘋果數(shù)據(jù)寫入到用戶緩存中,并給所述蘋果設(shè)備返回成功寫入應(yīng)答,返回步驟S5-1 ;否則執(zhí)行步驟S5-8 ; 步驟S5-8:判斷所述接收到的蘋果數(shù)據(jù)是否符合CCID指令格式,是則執(zhí)行步驟S5-9,否則向所述蘋果設(shè)備返回CCID指令不支持響應(yīng),返回步驟S5-1 ; 步驟S5-9:判斷所述接收到的蘋果數(shù)據(jù)中的字類型,如為第一預(yù)設(shè)值則執(zhí)行步驟S5-10,如為其他值則執(zhí)行相應(yīng)操作; 步驟S5-10:根據(jù)所述接收到的蘋果數(shù)據(jù)判斷指令的類型,如為所述上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),執(zhí)行步驟S5-11,如為所述下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),執(zhí)行步驟S5-11 ;如為所述數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,執(zhí)行步驟S5-11 ;步驟S5-11:判斷讀卡芯片是否滿足下電條件,是則向所述讀卡芯片發(fā)送下電指令,返回步驟S2,否則返回步驟S2。
11.如權(quán)利要求1-7任意一項所述的方法,其特征在于,所述步驟S9包括: 步驟S9-1:等待并接收所述上位機發(fā)送的USB數(shù)據(jù); 步驟S9-2:判斷是否接收完全部的USB數(shù)據(jù),是則執(zhí)行步驟S9-3,否則返回步驟S9-1 ;步驟S9-3:判斷接收到的USB數(shù)據(jù)是否為寫用戶緩存指令,是則將所述接收到的USB數(shù)據(jù)寫入到用戶緩存中,并給所述上位機返回成功寫入應(yīng)答,返回步驟S9-1 ;否則執(zhí)行步驟 S9-4 ; 步驟S9-4:判斷所述接收到的USB數(shù)據(jù)是否符合CCID指令格式,是則執(zhí)行步驟S9-5,否則向所述上位機返回CCID指令不支持響應(yīng),返回步驟S9-1 ; 步驟S9-5:判斷所述接收到的USB數(shù)據(jù)中的字類型,如為第一預(yù)設(shè)值則執(zhí)行步驟S9-6,如為其他則執(zhí)行相應(yīng)操作; 步驟S9-6:根據(jù)所述接收到的USB數(shù)據(jù)判斷指令的類型,如為所述上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),步驟S9-7,如為所述下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),步驟S9-7 ;如為所述數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述上位機,步驟S9-7 ; 步驟S9-7:判斷讀卡芯片是否滿足下電條件,是則向所述讀卡芯片發(fā)送下電指令,返回步驟S2,否則返回步驟S2 ; 讀卡器開始接收所述上位機發(fā)送的USB數(shù)據(jù)時,開啟USB卡槽定時器;當(dāng)所述USB卡槽定時器計時到達預(yù)定值時,進入USB卡槽定時中斷,包括: 步驟Tl:關(guān)閉所述USB卡槽定時器,向所述讀卡芯片發(fā)送獲取卡槽狀態(tài)指令; 步驟T2:判斷卡槽狀態(tài)是否改變,是則執(zhí)行步驟T3,否則執(zhí)行步驟T2 ; 步驟T3:判斷卡槽中是否有卡,是則向所述上位機發(fā)送有卡響應(yīng),執(zhí)行步驟T4,否則向所述上位機發(fā)送無卡響應(yīng),執(zhí)行步驟T5 ; 步驟T4:判斷記錄的卡槽狀態(tài)是否為有卡,是則開啟所述USB卡槽定時器,退出USB卡槽定時中斷,否則記錄卡槽狀態(tài)為有卡,將卡槽狀態(tài)標識置位,開啟所述USB卡槽定時器,退出USB卡槽定時中斷; 步驟T5:判斷記錄的卡槽狀態(tài)是否為無卡,是開啟所述USB卡槽定時器,退出USB卡槽定時中斷,否則記錄卡槽狀態(tài)為無卡,將卡槽狀態(tài)標識置位,開啟所述USB卡槽定時器,退出USB卡槽定時中斷。
12.如權(quán)利要求1所述的方法,其特征在于,所述步驟S5替換為步驟S5’; 步驟S5’:等待接收蘋果設(shè)備發(fā)送的蘋果數(shù)據(jù),當(dāng)接收到所述蘋果數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述蘋果設(shè)備返回上電處理響應(yīng),返回步驟S5’,如為下電指令則對卡片進行下電處理并給所述蘋果設(shè)備返回下電成功響應(yīng),返回步驟S5’ ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后將所述處理結(jié)果返回給所述蘋果設(shè)備,返回步驟 S5’ ;所述步驟S9替換為步驟S9’ ; 步驟S9’:等待接收上位機發(fā)送的USB數(shù)據(jù),當(dāng)接收到所述USB數(shù)據(jù)時判斷指令的類型,如為上電指令則對卡片進行上電處理并給所述上位機返回上電處理響應(yīng),返回步驟S9’,如為下電指令則對卡片進行下電處理并給所述上位機返回下電成功響應(yīng),返回步驟S9’ ;如為數(shù)據(jù)交換APDU指令則將所述數(shù)據(jù)交換APDU指令中的APDU數(shù)據(jù)發(fā)送給卡片進行處理,當(dāng)接收到所述卡片返回的處理結(jié)果后`將所述處理結(jié)果返回給所述上位機,返回步驟S9’。
【文檔編號】G06F13/38GK103678215SQ201310659047
【公開日】2014年3月26日 申請日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】陸舟, 于華章 申請人:飛天誠信科技股份有限公司