一種具有藍牙接口的ccid設備及其工作方法
【技術領域】
[0001]本發明涉及通訊領域,特別涉及一種具有藍牙接口的CCID設備及其工作方法。
【背景技術】
[0002]CCID設備是一種芯片/智能卡接口設備,CCID設備通過USB接口與主機或其它嵌入式主機連接,進行符合CCID協議標準的數據通訊,同時設備通過符合7816標準協議的接口與智能卡進行通訊。“藍牙”(Bluetooth),是一種采用了全球通用的短距離無線連接技術。
[0003]現有技術中,CCID設備只能通過USB接口與主機或其它嵌入式主機連接,限制了CCID設備的發展和應用。
【發明內容】
[0004]本發明解決了現有技術中CCID設備的發展和應用受限的缺陷。
[0005]本發明的技術方案是:
[0006]本發明提供了一種具有藍牙接口的CCID設備的工作方法,包括:
[0007]步驟S1:檢測通訊模式類型是否發生改變,如果是,則復位藍牙模塊,將第一緩沖區中的數據發送給所述藍牙模塊,執行步驟S2 ;否則,執行步驟S2 ;
[0008]步驟S2:獲取所述通訊模式類型,根據所述通訊模式類型和第二緩沖區中的數據,將CCID指令應答數據通過USB模塊返回給上位機;
[0009]所述方法還包括:
[0010]當通過所述藍牙模塊獲取到串口指令應答數據后,將所述串口指令應答數據存儲到第二緩沖區;
[0011]當通過所述USB模塊接收到來自所述上位機的CCID指令數據后,執行步驟BI ;
[0012]步驟B1:獲取所述CCID指令數據的類型和所述通訊模式類型,判斷所述CCID指令數據的類型是否和所述通訊模式類型相匹配,如果是,則執行步驟B2 ;否則,執行步驟B3 ;
[0013]步驟B2:根據所述CCID指令數據的類型,向所述藍牙模塊發送串口指令數據;
[0014]步驟B3:根據所述CCID指令數據的類型,設置與所述CCID指令數據的類型相匹配的通訊模式類型;根據所述CCID指令數據的類型,將串口指令數據存儲到第一緩沖區。
[0015]本發明提供了一種具有藍牙接口的CCID設備,包括:
[0016]檢測模塊,用于檢測通訊模式類型是否發生改變;
[0017]復位模塊,用于當所述檢測模塊檢測到所述通訊模式類型發生變化后,復位藍牙豐吳塊;
[0018]第一發送模塊,用于當所述復位模塊復位所述藍牙模塊后,將第一緩沖區中的數據發送給所述藍牙模塊;
[0019]第一獲取模塊,用于當所述檢測模塊檢測到所述通訊模式類型沒有發生變化后,獲取所述通訊模式類型;
[0020]當所述第一發送模塊將第一緩沖區中的數據發送給所述藍牙模塊后,獲取所述通訊模式類型;
[0021]第二發送模塊,用于根據所述第一獲取模塊獲取到的通訊模式類型和第二緩沖區中的數據,將CCID指令應答數據發送給USB模塊;
[0022]USB模塊,用于接收來自上位機的CCID指令數據;
[0023]以及,將來自所述第二發送模塊的所述CCID指令應答數據返回給所述上位機;
[0024]第二獲取模塊,用于當通過所述USB模塊接收到來自上位機的CCID指令數據后,獲取所述CCID指令數據的類型和所述通訊模式類型;
[0025]第一判斷模塊,用于判斷第二獲取模塊獲取到的所述CCID指令數據的類型是否和所述通訊模式類型相匹配;
[0026]第三發送模塊,用于當所述第一判斷模塊判斷出所述CCID指令數據的類型和所述通訊模式類型相匹配后,根據所述CCID指令數據的類型,將串口指令數據發送給所述藍牙豐吳塊;
[0027]第三獲取模塊,用于當所述第一判斷模塊判斷出所述CCID指令數據的類型和所述通訊模式類型不匹配后,根據所述CCID指令數據的類型,設置與所述CCID指令數據的類型相匹配的通訊模式類型;
[0028]第一存儲模塊,用于當所述第一判斷模塊判斷出所述CCID指令數據的類型和所述通訊模式類型不匹配后,根據所述CCID指令數據的類型,將串口指令數據存儲到第一緩沖區;
[0029]所述藍牙模塊,用于接收來自所述第一發送模塊的第一緩沖區中的數據;
[0030]接收來自所述第三發送模塊的串口指令數據;
[0031]以及,獲取串口指令應答數據;
[0032]第二存儲模塊,用于將所述藍牙模塊獲取到的串口指令應答數據存儲到第二緩沖區。
[0033]本發明的有益效果是:通過設置與CCID指令類型匹配的通訊模式類型,在CCID設備中實現藍牙模塊與USB模塊之間的數據交互,使得CCID設備能夠兼容藍牙接口,擴展了CCID設備的應用場景,實現了 CCID設備的多接口通訊,促進了 CCID設備的發展和應用。
【附圖說明】
[0034]圖1為本發明實施例1提供的一種具有藍牙接口的CCID設備的工作方法的流程圖;
[0035]圖2為本發明實施例1提供的一種具有藍牙接口的CCID設備的工作方法中的USB通訊中斷流程圖;
[0036]圖3為本發明實施例2提供的一種具有藍牙接口的CCID設備的工作方法的流程圖;
[0037]圖4為本發明實施例2提供的一種具有藍牙接口的CCID設備的工作方法中的USB通訊中斷流程圖;
[0038]圖5為本發明實施例3提供的一種具有藍牙接口的CCID設備的結構圖。
【具體實施方式】
[0039]下面將結合本發明的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明的一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0040]實施例1
[0041]本發明實施例提供了一種具有藍牙接口的CCID設備的工作方法,如圖1所示,包括:
[0042]本實施例中,遠端藍牙設備以藍牙讀卡器為例。
[0043]步驟101:設備上電,初始化;
[0044]本實施例中,初始化,包括:初始化串口,設置通訊模式類型,打開USB通訊中斷和串口通訊中斷,進行USB枚舉,向上位機返回CCID設備信息等;
[0045]本實施例中,初始化還可以包括:初始化工作時鐘,初始化USB接口,初復位模式轉換標識等。
[0046]本實施例中,設置通訊模式類型,包括:
[0047]設置通訊模式為透傳模式,設置通訊模式標識為透傳模式標識;
[0048]或者設置通訊模式為設置模式,設置通訊模式標識為設置模式標識。
[0049]本實施例中,通訊模式為設置模式或透傳模式,通訊模式標識為透傳模式標識或設置模式標識。
[0050]本實施例中,設備根據檢測模式轉換標識來判斷通訊模式是否發生變化,當通訊模式由透傳模式轉換為設置模式時,或者當通訊模式由設置模式轉換為透傳模式時,置位模式轉換標識。
[0051]初始化串口具體包括:設置串口參數信息等,
[0052]本實施例中,設置串口參數信息,具體包括:根據透傳參數信息或者設置參數信息設置波特率、數據位、校驗位和停止位等串口參數信息。
[0053]本實施例中,透傳模式和透傳參數信息以及透傳模式標識相匹配;設置模式和和設置參數信息以及設置模式標識相匹配。
[0054]本步驟中,優選的,以設置通訊模式類型為透傳模式為例:
[0055]具體地,設備上電,初始化串口,復位模式轉換標識,設置通訊模式類型為透傳模式,打開USB通訊中斷和串口通訊中斷,進行USB枚舉,向上位機返回CCID設備信息;
[0056]其中,初始化串口包括:將串口通訊參數信息設置為透傳參數信息等;
[0057]設置通訊模式類型為透傳模式,具體包括:
[0058]拉低第一引腳,設置通訊模式標識為透傳模式標識。
[0059]本實施例中,設備通過設置第一引腳電平高低來設置通訊模式類型,可以但不限于:拉低第一引腳,設置通訊模式類型為透傳模式;拉高第一引腳,設置通訊模式類型為設置模式。
[0060]還需說明的是,本步驟中,設備上電時,設備中的藍牙模塊上電。
[0061 ] 本實施例中,設備上電時,還可以對藍牙模塊上電。
[0062]步驟102:檢測通訊模式類型是否發生改變,如果是,則復位藍牙模塊,將第一緩沖區中的數據發送給藍牙模塊,執行步驟103 ;否則,執行步驟103 ;
[0063]具體地,檢測模式轉換標識是否被置位,如果是,則復位模式轉換標識,復位藍牙模塊,將第一緩沖區中的串口指令數據通過串口發送給藍牙模塊,執行步驟103 ;否則,執行步驟103 ;
[0064]本實施例中,復位藍牙模塊可以具體包括:拉低藍牙模塊的reset引腳之后,拉高藍牙模塊的reset引腳,復位藍牙模塊。
[0065]需要說明的是,本實施例中,步驟102中,將第一緩沖區中的數據發送給藍牙模塊之后,還可以包括:清空第一緩沖區。
[0066]步驟103:獲取通訊模式類型,根據通訊模式類型和第二緩沖區中的數據,將CCID指令應答數據通過USB模塊返回給上位機,返回步驟102。
[0067]具體地,檢測通訊模式標識,如果通訊模式標識是透傳模式標識,則判斷通訊模式類型是透傳模式;如果通訊模式標識是設置模式標識,則判斷通訊模式類型是設置模式,
[0068]當通訊模式類型是設置模式時,根據CCID協議組裝第二緩沖區中的數據,將第二緩沖區中的數據轉換為CCID指令應答數據,將CCID指令應答數據通過USB模塊返回給上位機,返回步驟102;
[0069]具體地,當通訊模式類型是設置模式時,根據第二預設指令頭組裝第二緩沖區中的串口設置指令應答數據,將串口設置指令應答數據轉換為CCID設置指令應答數據,將CCID設置指令應答數據作為CCID指令應答數據,通過USB批量傳輸通道將CCID指令應答數據返回給上位機。
[0070]其中,弟一■預設指令頭可以是0x83。
[0071]當通訊模式類型是透傳模式時,將第二緩沖區中的數據作為CCID指令應答數據,將CCID指令應答數據通過USB模塊返回給上位機,返回步驟102。
[0072]具體地,當通訊模式類型是透傳模式時,根據CCID協議解析第二緩沖區中的串口透傳指令應答數據,獲取第二緩沖區中的串口透傳指令應答數據的應答碼信息,判斷串口透傳指令應答數據是否是卡槽狀態信息,如果是,則串口透傳指令應答數據作為CCID透傳指令應答數據,將CCID透傳指令應答數據作為CCID指令應答數據通過USB中斷傳輸通道向上位機返回,返回步驟102 ;否則,將串口透傳指令應答數據作為CCID透傳指令應答數據,將CCID透傳指令應答數據作為CCID指令應答數據通過USB批量傳輸通道向上位機返回,返回步驟102 ;
[0073]本實施例中,卡槽狀態信息包括:無卡信息和有卡信息,無卡信息可以是0x5002,有卡信息可以是0x5003。
[0074]需要說明的是,本實施例中步驟102之后,步驟103之前,
[0075]或者步驟103中獲取通訊模式類型之后,根據通訊模式類型和第二緩沖區中的數據,將CCID指令應答數據通過USB模塊返回給上位機之前,
[0076]還可以包括:
[0077]判斷預設時間內第二緩沖區中是否存在數據,如果是,則執行步驟103 ;否則,返回步驟102 ;
[0078]具體地,判斷預設時間內第二緩沖區中是否存在串口指令應答,如果是,則執行步驟103 ;否則,返回步驟102 ;
[0079]優選的,預設時間可以是15ms。
[0080]需要說明的是,本實施例中,獲取通訊模式類型之后,當通訊模式類型是透傳模式后,將第二緩沖區中的數據作為CCID指令應答數據,將CCID指令應答數據通過USB模塊返回給上位機之前,還可以包括:
[0081]判斷第二緩沖區中的數據是否完整,如果是,則將第二緩沖區中的數據作為CCID指令應答數據,繼續;否則,返回判斷預設時間內第二緩沖區中是否存在數據,繼續。
[0082]具體地,根據CCID協議判斷第二緩沖區中的串口透傳指令應答數據是否完整,如果是,則將第二緩沖區中的串口透傳指令應答數據作為CCID透傳指令應答數據,將CCID透傳指令應答數據作為CCID指令應答數據,繼續;否則,返回判斷預設時間內第二緩沖區中是否存在數據,繼續。
[0083]需要說明的是,本實施例中,透傳參數信息和設置參數信息可以相同,也可以不同,當透傳參數信息和設置參數信息不同時,步驟102中判斷通訊模式改變之后,復位藍牙模塊之前,還包括:獲取通訊模式類型,根據通訊模式類型設置串口。
[0084]具體地,檢測通訊模式標識,如果通訊模式標識是透傳模式標識,則判斷通訊模式類型是透傳模式,則根據透傳參數信息設置串口 ;如果通訊模式標識是設置模式標識,則判斷通訊模式類型是設置模式,則根據設置參數信息設置串口。
[0085]本實施例中,第二緩沖區可以但不限于通過隊列的方式實現。
[0086]本發明實施例提供了一種具有藍牙接口的CCID設備的工作方法中的USB通訊中斷流程圖,如圖2所示,具體包括:
[0087]當通過USB模塊接收到CCID指令數據后,執行步驟al ;
[0088]具體地,當通過USB模塊接收到CCID指令數據后,檢測到USB通訊中斷標識被置位,執行步驟al ;
[0089]步驟al:進入USB通訊中斷;
[0090]步驟a2:獲取CCID指令數據的類型和通訊模式類型,判斷CCID指令數據的類型是否和通訊模式類型相匹配,如果是,則執行步驟a3 ;否則,執行步驟a4 ;
[0091]具體地:
[0092]獲取CCID指令數據的類型并根據通訊模式標識獲取通訊模式的類型,如果CCID指令數據的類型是CCID設置指令數據且通訊模式標識為設置模式標識,則判斷CCID指令數據的類型是和通訊模式類型相匹配,則執行步驟a3 ;如果CCID指令數據的類型是CCID設置指令數據且通訊模式標識為透傳模式標識,則判斷CCID指令數據的類型是和通訊模式類型不相匹配,則執行步驟a4 ;
[0093]如果CCID指令數據的類型是CCID透傳指令數據且通訊模式標識為透傳模式標識,則判斷CCID指令數據的類型是和通訊模式類型相匹配,則執行步驟a3 ;如果CCID指令數據的類型是CCID透傳指令數據且通訊模式標識為設置模式標識,則判斷CCID指令數據的類型是和通訊模式類型不相匹配,則執行步驟a4 ;
[0094]本實施例中,獲取CCID指令數據的類型,具體包括:
[0095]根據CCID協議解析CCID指令數據,獲取CCID指令數據中的第一個字節,根據第一個字節判斷CCID指令數據的類型,如果第一個字節是第一預設指令頭,則判斷CCID指令數據的類型是CCID設置指令數據;如果第一個字節不是第一預設指令頭,則判斷CCID指令數據的類型是CCID透傳指令數據。
[0096]本實施例中,第一預設指令頭可以是0x6B。
[0097]本實施例中,根據通訊模式標識獲取通訊模式類型,具體包括:
[0098]檢測通訊模式標識,當通訊模式標識為設置模式標識時,則通訊模式類型為設置模式;當通訊模式標識為透傳模式標識時,則通訊模式類型為透傳模式。
[0099]本實施例中,步驟a2中當獲取到CCID指令數據的類型是CCID透傳指令數據之后,判斷CCID指令數據的類型是否和通訊模式類型相匹配之前,還包括:
[0100]步驟a2’:判斷自身是否和遠端藍牙設備連接,如果是,則繼續;否則,通過USB模塊向上位機返回錯誤信息,退出USB通訊中斷。
[0101]具體地,檢測第二引腳電平標識是否是連接電平標識,如果