本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)傳輸系統(tǒng)、方法、外接設(shè)備和移動(dòng)終端。
背景技術(shù):
隨著移動(dòng)通信技術(shù)的發(fā)展,移動(dòng)終端已經(jīng)成為用戶隨身攜帶,必不可少的電子設(shè)備。在運(yùn)營(yíng)商和各大oem(originalequipmentmanufacturer,原始設(shè)備制造商)廠商的牽頭下,3g(3rdgeneration,第三代移動(dòng)通信技術(shù))、4g(the4thgenerationmobilecommunicationtechnology,第四代移動(dòng)通信技術(shù))、ca(carrieraggregation,應(yīng)用載波聚合技術(shù))以及最新的5g(5th-generation,第五代移動(dòng)通信技術(shù))應(yīng)運(yùn)而生,這些技術(shù)的目的是為了提高用戶的上網(wǎng)帶寬。在此種背景下,一種提高用戶上網(wǎng)帶寬的方式也悄然而生,移動(dòng)終端連接兩個(gè)調(diào)制解調(diào)器,每個(gè)調(diào)制解調(diào)器都有對(duì)應(yīng)的sim(subscriberidentificationmodule)卡,且每個(gè)調(diào)制解調(diào)器都可以獨(dú)立上網(wǎng),然后在上層將用戶訪問(wèn)的網(wǎng)絡(luò)根據(jù)實(shí)際情況進(jìn)行兩個(gè)數(shù)據(jù)網(wǎng)絡(luò)的網(wǎng)速疊加,從而達(dá)到提高上網(wǎng)帶寬的目的。由于運(yùn)營(yíng)商對(duì)傳統(tǒng)用戶上網(wǎng)帶寬的壟斷和限制,終端廠商可以通過(guò)該網(wǎng)速疊加技術(shù)方案加大用戶上網(wǎng)帶寬,有效的整合了移動(dòng)終端中兩張sim卡的上網(wǎng)資源,并實(shí)現(xiàn)了真dsda(dualsimdualactive,雙卡雙通),以及雙卡雙lte(longtermevolution,長(zhǎng)期演進(jìn))待機(jī)。
因此,為了使移動(dòng)終端連接兩個(gè)調(diào)制解調(diào)器,將移動(dòng)終端與含有調(diào)制解調(diào)器的外接設(shè)備的連接。但是在移動(dòng)終端和外接設(shè)備之間進(jìn)行數(shù)據(jù)傳輸過(guò)程中,當(dāng)外接設(shè)備和移動(dòng)終端之間所傳輸?shù)臄?shù)據(jù)包過(guò)大時(shí),會(huì)導(dǎo)致數(shù)據(jù)包傳輸失敗的情況出現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種數(shù)據(jù)傳輸系統(tǒng)、方法、外接設(shè)備和移動(dòng)終端,旨在解決移動(dòng)終端通過(guò)外接設(shè)備實(shí)現(xiàn)雙lte通信過(guò)程中,外接設(shè)備和移動(dòng)終端之間傳輸?shù)臄?shù)據(jù)包過(guò)大,導(dǎo)致數(shù)據(jù)包傳輸失敗的技術(shù)問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種數(shù)據(jù)傳輸系統(tǒng),所述數(shù)據(jù)傳輸系統(tǒng)包括移動(dòng)終端和外接設(shè)備,所述移動(dòng)終端包括內(nèi)嵌有虛擬用戶識(shí)別卡的第一應(yīng)用處理器,以及與實(shí)體用戶識(shí)別卡連接的第一調(diào)制解調(diào)器,所述第一調(diào)制解調(diào)器包括第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,所述第一應(yīng)用處理器包括第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊和與所述第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器連接的第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端;所述外接設(shè)備包括第二應(yīng)用處理器和第二調(diào)制解調(diào)器,所述第二調(diào)制解調(diào)器包括第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,所述第二應(yīng)用處理器包括第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊和與所述第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器連接的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端;
所述第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,用于當(dāng)偵測(cè)到數(shù)據(jù)傳輸指令時(shí),根據(jù)所述數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包;壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包;將所述壓縮數(shù)據(jù)包發(fā)送給所述第二應(yīng)用處理器;
所述第二應(yīng)用處理器,用于通過(guò)預(yù)設(shè)接口將所述壓縮數(shù)據(jù)包發(fā)送給所述第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊;
所述第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊,用于當(dāng)接收到所述第二應(yīng)用處理器發(fā)送的所述壓縮數(shù)據(jù)包時(shí),獲取所述壓縮數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí);若根據(jù)所述類(lèi)別標(biāo)識(shí)確定所述壓縮數(shù)據(jù)包為待處理數(shù)據(jù)包,則解壓縮所述壓縮數(shù)據(jù)包,得到與所述壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包;若根據(jù)所述類(lèi)別標(biāo)識(shí)確定所述壓縮數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,則將所述壓縮數(shù)據(jù)包轉(zhuǎn)發(fā)給所述第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端;
所述第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端,用于將所述壓縮數(shù)據(jù)包發(fā)送給所述第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器;
所述第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,用于在接收到所述壓縮數(shù)據(jù)包時(shí),解壓縮所述壓縮數(shù)據(jù)包,得到與所述壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。
可選地,所述第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器還用于計(jì)算所述待傳輸數(shù)據(jù)包的大??;若所述待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值,則壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包,并為所述壓縮數(shù)據(jù)包添加壓縮標(biāo)識(shí);若所述待傳輸數(shù)據(jù)包的大小小于或者等于所述預(yù)設(shè)閾值,則將所述待傳輸數(shù)據(jù)包發(fā)送給所述第二應(yīng)用處理器;
所述第二應(yīng)用處理器還用于通過(guò)預(yù)設(shè)接口將所述待傳輸數(shù)據(jù)包發(fā)送給所述第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊;
所述第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊還用于根據(jù)是否在所接收的數(shù)據(jù)包中檢測(cè)到壓縮標(biāo)識(shí)判斷所接收的數(shù)據(jù)包是否為壓縮數(shù)據(jù)包。
可選地,所述第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器還用于獲取所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本,計(jì)算所述源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段;在預(yù)設(shè)字典列表中查找所述字符段對(duì)應(yīng)的編碼,其中,所述編碼的長(zhǎng)度小于對(duì)應(yīng)字符段的長(zhǎng)度;將所述編碼替換對(duì)應(yīng)的所述字符段,以得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種數(shù)據(jù)傳輸方法,所述數(shù)據(jù)傳輸方法應(yīng)用于外接設(shè)備,所述第二調(diào)制解調(diào)器包括與所述第二應(yīng)用處理器連接的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,所述數(shù)據(jù)傳輸方法包括:
當(dāng)所述第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器偵測(cè)到數(shù)據(jù)傳輸指令時(shí),根據(jù)所述數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包;
壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包;
將所述壓縮數(shù)據(jù)包發(fā)送給所述第二應(yīng)用處理器,以供所述第二應(yīng)用處理器通過(guò)預(yù)設(shè)接口將所述壓縮數(shù)據(jù)包發(fā)送給移動(dòng)終端。
可選地,所述壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包的步驟之前,還包括:
計(jì)算所述待傳輸數(shù)據(jù)包的大?。?/p>
若所述待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值,則所述壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包的步驟包括;
壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包,并為所述壓縮數(shù)據(jù)包添加壓縮標(biāo)識(shí);
若所述待傳輸數(shù)據(jù)包的大小小于或者等于所述預(yù)設(shè)閾值,則將所述待傳輸數(shù)據(jù)包發(fā)送給所述第二應(yīng)用處理器,以供所述第二應(yīng)用處理器通過(guò)預(yù)設(shè)接口將所述待傳輸數(shù)據(jù)包發(fā)送給移動(dòng)終端。
可選地,所述壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包的步驟包括:
獲取所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本,計(jì)算所述源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段;
在預(yù)設(shè)字典列表中查找所述字符段對(duì)應(yīng)的編碼,其中,所述編碼的長(zhǎng)度小于對(duì)應(yīng)字符段的長(zhǎng)度;
將所述編碼替換對(duì)應(yīng)的所述字符段,以得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
可選地,所述獲取所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本的步驟之后,還包括:
確定所述源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段;
若所述源文本中存在內(nèi)容相同且長(zhǎng)度大于所述預(yù)設(shè)長(zhǎng)度的字符段,則確定前后連續(xù)兩個(gè)字符段之間的距離以及所述字符段的長(zhǎng)度;
確定所述距離對(duì)應(yīng)的距離標(biāo)識(shí)和所述長(zhǎng)度對(duì)應(yīng)的長(zhǎng)度標(biāo)識(shí);
將所述距離標(biāo)識(shí)和所述長(zhǎng)度標(biāo)識(shí)替換連續(xù)兩個(gè)字符段中的后一個(gè)字符段,以得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種數(shù)據(jù)傳輸方法,所述數(shù)據(jù)傳輸方法應(yīng)用于移動(dòng)終端,所述移動(dòng)終端包括內(nèi)嵌有虛擬用戶識(shí)別卡的第一應(yīng)用處理器,以及與實(shí)體用戶識(shí)別卡連接的第一調(diào)制解調(diào)器,所述第一調(diào)制解調(diào)器包括第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,所述第一應(yīng)用處理器包括第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊和與所述第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器連接的第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端,所述數(shù)據(jù)傳輸方法包括:
當(dāng)所述第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊接收到外接設(shè)備第二應(yīng)用處理器發(fā)送的壓縮數(shù)據(jù)包時(shí),獲取所述壓縮數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí);
若根據(jù)所述類(lèi)別標(biāo)識(shí)確定所述壓縮數(shù)據(jù)包為待處理數(shù)據(jù)包,則解壓縮所述壓縮數(shù)據(jù)包,得到與所述壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包;
若根據(jù)所述類(lèi)別標(biāo)識(shí)確定所述壓縮數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,則將所述壓縮數(shù)據(jù)包轉(zhuǎn)發(fā)給所述第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端,以供所述第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端將所述壓縮數(shù)據(jù)包發(fā)送給所述第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,由所述第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器在接收到所述壓縮數(shù)據(jù)包時(shí),解壓縮所述壓縮數(shù)據(jù)包,得到與所述壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種外接設(shè)備,所述外接設(shè)備包括第二應(yīng)用處理器和第二調(diào)制解調(diào)器,所述第二調(diào)制解調(diào)器包括第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,所述第二應(yīng)用處理器包括第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊和與所述第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器連接的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端;所述外接設(shè)備應(yīng)用于如上所述的應(yīng)用于外接設(shè)備的數(shù)據(jù)傳輸方法。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種移動(dòng)終端,所述移動(dòng)終端包括內(nèi)嵌有虛擬用戶識(shí)別卡的第一應(yīng)用處理器,以及與實(shí)體用戶識(shí)別卡連接的第一調(diào)制解調(diào)器,所述第一調(diào)制解調(diào)器包括第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器,所述第一應(yīng)用處理器包括第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊和與所述第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器連接的第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端;所述移動(dòng)終端應(yīng)用于如上所述的應(yīng)用于移動(dòng)終端的數(shù)據(jù)傳輸方法。
本發(fā)明提供一種數(shù)據(jù)傳輸系統(tǒng)、方法、外接設(shè)備和移動(dòng)終端,通過(guò)當(dāng)所述外接設(shè)備的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器獲取到待傳輸數(shù)據(jù)包時(shí),壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包;將所述壓縮數(shù)據(jù)包發(fā)送給與所述第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器連接的第二應(yīng)用處理器,以供所述第二應(yīng)用處理器通過(guò)預(yù)設(shè)接口將所述壓縮數(shù)據(jù)包發(fā)送給移動(dòng)終端。當(dāng)移動(dòng)終端接收到外接設(shè)備發(fā)送的數(shù)據(jù)包時(shí),解壓縮所接收的壓縮數(shù)據(jù)包,以得到外接設(shè)備發(fā)送的完整的待傳輸數(shù)據(jù)包。避免了在外接設(shè)備和移動(dòng)終端進(jìn)行數(shù)據(jù)傳輸過(guò)程中,由于所傳輸?shù)臄?shù)據(jù)包過(guò)大,導(dǎo)致數(shù)據(jù)包傳輸失敗的情況出現(xiàn)。
附圖說(shuō)明
圖1為本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)的示意圖;
圖2為本發(fā)明實(shí)施例中移動(dòng)終端和外接設(shè)備通訊連接的第一種硬件結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例中移動(dòng)終端和外接設(shè)備通訊連接的一種實(shí)體結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例中移動(dòng)終端和外接設(shè)備通訊連接的第二種硬件結(jié)構(gòu)示意圖;
圖5為本發(fā)明中應(yīng)用于外接設(shè)備的數(shù)據(jù)傳輸方法第一實(shí)施例的流程示意圖;
圖6為本發(fā)明中應(yīng)用于外接設(shè)備的數(shù)據(jù)傳輸方法第二實(shí)施例的流程示意圖;
圖7為本發(fā)明實(shí)施例中壓縮所述待傳輸數(shù)據(jù)包,得到所述待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包的一種流程示意圖;
圖8為本發(fā)明中應(yīng)用于移動(dòng)終端的數(shù)據(jù)傳輸方法較佳實(shí)施例的流程示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做說(shuō)明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說(shuō)明,其本身并沒(méi)有特定的意義。因此,"模塊"與"部件"可以混合地使用。
圖1是本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)的示意圖。本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)包括:一個(gè)或多個(gè)移動(dòng)終端(userequipment,ue)100、e-utran(evolvedumtsterrestrialradioaccessnetwork,演進(jìn)的umts陸地?zé)o線接入網(wǎng))(圖中未標(biāo)號(hào))、演進(jìn)分組核心(epc)(圖中未標(biāo)號(hào))、歸屬訂戶服務(wù)器(hss)107、網(wǎng)絡(luò)(例如,因特網(wǎng))(圖中未標(biāo)號(hào))以及電路交換系統(tǒng)(圖中未標(biāo)號(hào))。
e-utran包括演進(jìn)b節(jié)點(diǎn)(enodeb)101和其它enodeb102。enodeb101提供朝向移動(dòng)終端100的用戶面和控制面的協(xié)議終接。enodeb101可經(jīng)由x2接口連接到其他enodeb。enodeb101也可稱(chēng)為基站、基收發(fā)機(jī)站、無(wú)線電基站、無(wú)線電收發(fā)機(jī)、收發(fā)機(jī)功能、基本服務(wù)集、擴(kuò)展服務(wù)集、或其他某個(gè)合適的術(shù)語(yǔ)。enodeb101為移動(dòng)終端100提供去往epc的接入點(diǎn)。
enodeb101通過(guò)s1接口連接到epc。epc包括移動(dòng)管理實(shí)體(eem)104、其他移動(dòng)管理實(shí)體106、服務(wù)網(wǎng)關(guān)103,以及分組數(shù)據(jù)網(wǎng)絡(luò)(pdn)網(wǎng)關(guān)105。移動(dòng)管理實(shí)體104是處理移動(dòng)終端100與epc之間的信令的控制節(jié)點(diǎn)。移動(dòng)管理實(shí)體104提供承載和連接管理。所有用戶ip分組通過(guò)服務(wù)網(wǎng)關(guān)103來(lái)傳遞,服務(wù)網(wǎng)關(guān)103自身連接到pdn網(wǎng)關(guān)105。pdn網(wǎng)關(guān)105提供ueip地址分配以及其他功能。pdn網(wǎng)關(guān)105連接到網(wǎng)絡(luò),例如,因特網(wǎng)。
電路交換系統(tǒng)包括交互解決方案模塊(iws)108、移動(dòng)交換中心(msc)109、基站110和移動(dòng)站111。在一個(gè)方面,電路交換系統(tǒng)可以通過(guò)iws和mme(mobilitymanagemententity,移動(dòng)管理實(shí)體)與eps(evolvedpacketsystem,演進(jìn)的分組系統(tǒng))進(jìn)行通信。
圖2為本發(fā)明實(shí)施例中移動(dòng)終端和外接設(shè)備通訊連接的一種硬件結(jié)構(gòu)示意圖。在本發(fā)明實(shí)施例中,移動(dòng)終端100通過(guò)usb(universalserialbus,通用串行總線)與外接設(shè)備200連接。移動(dòng)終端100包括第一處理芯片001和與第一處理芯片001連接的第一射頻模塊12。其中,第一處理芯片001包括內(nèi)嵌有虛擬用戶識(shí)別卡13的第一應(yīng)用處理器(applicationprocessor)10、與實(shí)體用戶識(shí)別卡14連接的第一調(diào)制解調(diào)器11(modem1)和rpm(resourcepowermanager,資源電源管理器)15。外接設(shè)備200包括第二處理芯片002和與第二處理芯片002連接的第二射頻模塊22。其中,第二處理芯片002包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器(modem2)21。用戶識(shí)別卡為sim卡。
第一應(yīng)用處理器10和第二應(yīng)用處理器20的內(nèi)部框架包括應(yīng)用層、框架層等,可處理復(fù)雜的邏輯操作以及進(jìn)行任務(wù)分配等。第一應(yīng)用處理器10內(nèi)嵌有虛擬用戶識(shí)別卡13,虛擬用戶識(shí)別卡13包括存儲(chǔ)模塊和虛擬片內(nèi)操作系統(tǒng)(vcos,virtualchipoperatingsystem),該存儲(chǔ)模塊可為efs(encryptingfilesystem,加密文件系統(tǒng)),存儲(chǔ)模塊用于存儲(chǔ)虛擬用戶識(shí)別卡13的鑒權(quán)數(shù)據(jù)。
在本發(fā)明實(shí)施例中,應(yīng)用處理器指android操作系統(tǒng),以及基于android操作系統(tǒng)的各種apk(androidpackage,安卓安裝包)。第一應(yīng)用處理器10和第二應(yīng)用處理器20通過(guò)usb實(shí)現(xiàn)連接,為用戶提供交互接口,將用戶輸入的操作指令(例如,用戶通過(guò)用戶界面輸入的有關(guān)啟動(dòng)視頻通話的操作指令)傳輸給第一調(diào)制解調(diào)器11或第二調(diào)制解調(diào)器21,以實(shí)現(xiàn)兩個(gè)處理器之間數(shù)據(jù)的定義與傳遞,例如,進(jìn)行兩個(gè)應(yīng)用處理器的休眠、喚醒、同步的控制、開(kāi)關(guān)機(jī)時(shí)芯片啟動(dòng)順序的控制等。
第一應(yīng)用處理器10通過(guò)usb與第二應(yīng)用處理器20連接,以實(shí)現(xiàn)移動(dòng)終端100與外接設(shè)備200之間的連接。在本發(fā)明實(shí)施例中,usb復(fù)用出三條數(shù)據(jù)通道,分別用于第一應(yīng)用處理器10和第二應(yīng)用處理器20之間用戶數(shù)據(jù)、信令數(shù)據(jù)和sim卡鑒權(quán)數(shù)據(jù)的交互。即第一應(yīng)用處理器10和第二應(yīng)用處理器20通過(guò)usb傳輸用戶數(shù)據(jù)、信令數(shù)據(jù)和sim卡鑒權(quán)數(shù)據(jù)。其中,用戶數(shù)據(jù)包括但不限于上網(wǎng)產(chǎn)生的數(shù)據(jù),圖片和聊天信息數(shù)據(jù);信令數(shù)據(jù)包括但不限于開(kāi)關(guān)機(jī)的控制數(shù)據(jù),開(kāi)關(guān)飛行模式的控制數(shù)據(jù),顯示狀態(tài)信號(hào)的控制數(shù)據(jù);sim卡鑒權(quán)數(shù)據(jù)包括但不限于imsi(internationalmobilesubscriberidentificationnumber,國(guó)際移動(dòng)用戶識(shí)別碼)和ki(keyidentifier,鑒權(quán)密鑰)。
具體地,第一應(yīng)用處理器10和第二應(yīng)用處理器20通過(guò)otg(on-the-go)技術(shù)進(jìn)行數(shù)據(jù)交互。通過(guò)otg技術(shù),移動(dòng)終端100中的第一調(diào)制解調(diào)器11可通過(guò)實(shí)體用戶識(shí)別卡14或虛擬用戶識(shí)別卡13中的sim卡參數(shù)來(lái)接入enodeb101,第二調(diào)制解調(diào)器21可通過(guò)實(shí)體用戶識(shí)別卡14或虛擬用戶識(shí)別卡13的sim卡參數(shù)來(lái)接入enodeb101,sim卡參數(shù)包括但不限于sim卡鑒權(quán)數(shù)據(jù)。
第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21包含各種網(wǎng)絡(luò)交互的網(wǎng)絡(luò)制式的協(xié)議棧,協(xié)議棧包含lte/wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)/gsm(globalsystemformobilecommunication,全球移動(dòng)通信系統(tǒng))/td-scdma(timedivision-synchronouscodedivisionmultipleaccess,同步時(shí)分碼分多址)/cdma(codedivisionmultipleaccess,碼分多址)/edge(enhanceddatarateforgsmevolution,強(qiáng)型數(shù)據(jù)速率gsm演進(jìn)技術(shù))等通訊標(biāo)準(zhǔn)里邊規(guī)定的協(xié)議代碼。移動(dòng)終端100通過(guò)協(xié)議與運(yùn)營(yíng)商網(wǎng)絡(luò)進(jìn)行交互,即進(jìn)行數(shù)據(jù)流量上網(wǎng)、volte(voiceoverlte)打電話或者cs(circuitswitched,電路交換)域打電話。第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21還用于對(duì)sim卡的管控等等。
在本發(fā)明實(shí)施例中,第一射頻模塊12用于將移動(dòng)終端100傳輸?shù)臄?shù)據(jù)處理后傳給enodeb101(基站網(wǎng)絡(luò)),以及用于將enodeb101傳輸?shù)臄?shù)據(jù)處理后傳給移動(dòng)終端100。第二射頻模塊22用于將外接設(shè)備200傳輸?shù)臄?shù)據(jù)處理后傳給enodeb101(基站網(wǎng)絡(luò)),以及用于將enodeb101傳輸?shù)臄?shù)據(jù)處理后傳給外接設(shè)備200。
第一射頻模塊12和第二射頻模塊22所涉及的無(wú)線接入技術(shù)可以包括lte、gsm、gprs(generalpacketradioservice,通用分組無(wú)線服務(wù))、cdma、edge、wlan(wirelesslocalareanetworks,無(wú)線局域網(wǎng))、cdma-2000、td-scdma、wcdma、wifi(wirelessfidelity,無(wú)線保真)等等。
實(shí)體用戶識(shí)別卡14與第一調(diào)制解調(diào)器11連接,虛擬用戶識(shí)別卡13以軟件的形式嵌在第一應(yīng)用處理器10中。實(shí)體用戶識(shí)別卡14和虛擬用戶識(shí)別卡13可存儲(chǔ)與不同或相同的技術(shù)標(biāo)準(zhǔn)相關(guān)聯(lián)的用戶信息,用于提供移動(dòng)通信業(yè)務(wù)(cs語(yǔ)音業(yè)務(wù)、ps數(shù)據(jù)業(yè)務(wù)和ps語(yǔ)音業(yè)務(wù))所需的相關(guān)數(shù)據(jù),并在其內(nèi)部存儲(chǔ)用戶信息、短消息、執(zhí)行鑒權(quán)算法和產(chǎn)生加密密匙等。在特定非限制性實(shí)例中,技術(shù)標(biāo)準(zhǔn)可為2g通信技術(shù),例如,gsm、edge)、3g通信技術(shù)(例如,wcdma、td-scdma)、4g通信技術(shù)(例如,lte),或任何其它移動(dòng)通信技術(shù)(例如,4g等等)。
當(dāng)虛擬用戶識(shí)別卡13需要進(jìn)行網(wǎng)絡(luò)注冊(cè)時(shí),通過(guò)開(kāi)啟的無(wú)線保真(wifi)網(wǎng)絡(luò)發(fā)送包含業(yè)務(wù)菜單數(shù)據(jù)的下載請(qǐng)求至虛擬用戶識(shí)別卡13對(duì)應(yīng)的云端服務(wù)器,以從云端服務(wù)器獲取虛擬用戶識(shí)別卡13的數(shù)據(jù)信息。當(dāng)獲取到虛擬用戶識(shí)別卡13的數(shù)據(jù)信息時(shí),將數(shù)據(jù)信息寫(xiě)入虛擬用戶識(shí)別卡13的存儲(chǔ)模塊中,以實(shí)現(xiàn)虛擬用戶識(shí)別卡13的網(wǎng)絡(luò)注冊(cè)。其中,數(shù)據(jù)信息可以包括:imsi、ki(keyidentifier,鑒權(quán)密鑰)、iccid(integratedcircuitcardidentifier)、pin(個(gè)人標(biāo)識(shí)號(hào),personalidentificationnumber)、puk(pinunlockingkey)。可以理解的是,云端服務(wù)器中存儲(chǔ)了各個(gè)運(yùn)營(yíng)商的卡號(hào)資源。
由于目前的移動(dòng)終端100只有一套射頻模塊,當(dāng)移動(dòng)終端100有兩張用戶識(shí)別卡時(shí),移動(dòng)終端100的兩張用戶識(shí)別卡使用該套射頻是分時(shí)復(fù)用的關(guān)系,并不能同時(shí)占用。例如,在兩張用戶識(shí)別卡全開(kāi)時(shí),其中一張用戶識(shí)別卡只處理gsm通話,而另一張用戶識(shí)別卡處理4g網(wǎng)絡(luò)信息,具體哪張用戶識(shí)別卡執(zhí)行何種網(wǎng)絡(luò),在此不做限定。因此目前的射頻雙卡分時(shí)復(fù)用這種架構(gòu)僅做到了lte+gsm(即一張用戶識(shí)別卡對(duì)應(yīng)的技術(shù)標(biāo)準(zhǔn)為lte,另一張用戶識(shí)別卡對(duì)應(yīng)的技術(shù)標(biāo)準(zhǔn)為gsm)。
可以理解的是,現(xiàn)有的移動(dòng)終端100雖然可以支持雙用戶識(shí)別卡,由于移動(dòng)終端100在注冊(cè)網(wǎng)絡(luò)的情況下,兩張用戶識(shí)別卡支持的是不同技術(shù)標(biāo)準(zhǔn)的網(wǎng)絡(luò),一張支持2g或3g,另一張支持4g,會(huì)使得移動(dòng)終端100使用過(guò)程中,上網(wǎng)流量速度較慢。在本發(fā)明實(shí)施例中,移動(dòng)終端100通過(guò)usb連接外接設(shè)備200,由于外接設(shè)備200包括第二調(diào)制解調(diào)器21和第二射頻模塊22,且第二射頻模塊22支持4g網(wǎng)絡(luò),因此,移動(dòng)終端100可通過(guò)usb與外接設(shè)備200交互,從而使得移動(dòng)終端100具備雙lte功能(此時(shí)虛擬用戶識(shí)別卡13和實(shí)體用戶識(shí)別卡14管理的技術(shù)標(biāo)準(zhǔn)均為lte標(biāo)準(zhǔn),第一射頻模塊12和第二射頻模塊22所涉及的無(wú)線接入技術(shù)為lte)。
在本發(fā)明實(shí)施例中,數(shù)據(jù)傳輸系統(tǒng)包括移動(dòng)終端100和外接設(shè)備200,移動(dòng)終端100通過(guò)外接設(shè)備200具備雙lte功能的實(shí)現(xiàn)過(guò)程可為:①實(shí)體用戶識(shí)別卡14通過(guò)第二調(diào)制解調(diào)器21支持lte,具體過(guò)程為:第一調(diào)制解調(diào)器11將實(shí)體用戶識(shí)別卡14中需要訪問(wèn)lte網(wǎng)絡(luò)的數(shù)據(jù)發(fā)送給第一應(yīng)用處理器10,第一應(yīng)用處理器10將所接收的數(shù)據(jù)通過(guò)usb發(fā)送給外接設(shè)備200的第二應(yīng)用處理器20,第二應(yīng)用處理器20將所接收的數(shù)據(jù)發(fā)送給第二調(diào)制解調(diào)器21,由第二調(diào)制解調(diào)器21轉(zhuǎn)發(fā)給第二射頻模塊22,第二射頻模塊22將所接收的數(shù)據(jù)通過(guò)lte網(wǎng)絡(luò)發(fā)送出去;虛擬用戶識(shí)別卡13通過(guò)第一調(diào)制解調(diào)器11支持lte,以實(shí)現(xiàn)移動(dòng)終端100可支持雙lte。②虛擬用戶識(shí)別卡13通過(guò)第二調(diào)制解調(diào)器21支持lte,具體過(guò)程為:第一應(yīng)用處理器10將虛擬用戶識(shí)別卡13中需要訪問(wèn)lte網(wǎng)絡(luò)的數(shù)據(jù)通過(guò)usb發(fā)送給外接設(shè)備200的第二應(yīng)用處理器20,第二應(yīng)用處理器20將所接收的數(shù)據(jù)發(fā)送給第二調(diào)制解調(diào)器21,由第二調(diào)制解調(diào)器21轉(zhuǎn)發(fā)給第二射頻模塊22,第二射頻模塊22將所接收的數(shù)據(jù)通過(guò)lte網(wǎng)絡(luò)發(fā)送出去;實(shí)體用戶識(shí)別卡14通過(guò)第一調(diào)制解調(diào)器11支持lte,以實(shí)現(xiàn)移動(dòng)終端100可支持雙lte。
當(dāng)移動(dòng)終端100未通過(guò)usb與外接設(shè)備200連接時(shí),實(shí)體用戶識(shí)別卡14所對(duì)應(yīng)的技術(shù)標(biāo)準(zhǔn)為gsm,用于進(jìn)行語(yǔ)音通訊,虛擬用戶識(shí)別卡13通過(guò)第一調(diào)制解調(diào)器11支持lte,用于通過(guò)4g網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)訪問(wèn)。
實(shí)體用戶識(shí)別卡14在與移動(dòng)終端100交互時(shí),移動(dòng)終端100檢測(cè)實(shí)體用戶識(shí)別卡14存在與否的信號(hào)只在開(kāi)機(jī)瞬時(shí)產(chǎn)生,當(dāng)開(kāi)機(jī)檢測(cè)不到實(shí)體用戶識(shí)別卡14存在時(shí),移動(dòng)終端100將提示“插入用戶識(shí)別卡”。移動(dòng)終端100開(kāi)機(jī)之后,移動(dòng)終端100和實(shí)體用戶識(shí)別卡14之間28秒通信一次,完成一些固定的通信檢查(例如,用戶識(shí)別卡是否在位等)。
移動(dòng)終端100的rpm15用于管控各種資源,包括時(shí)鐘資源、總線資源、pmic(powermanagementic,電源管理集成電路,即各個(gè)芯片的電壓)、ddr(內(nèi)存分配),以及管理芯片的休眠喚醒的中斷和應(yīng)用處理器喚醒的截止時(shí)間。移動(dòng)終端100的各個(gè)子系統(tǒng),在需要資源時(shí),向rpm15申請(qǐng)資源,各個(gè)子系統(tǒng)分別包括第一應(yīng)用處理器10,第一調(diào)制解調(diào)器11、pronto(wifi/藍(lán)牙、nfc(nearfieldcommunication,近場(chǎng)通信)等)、lpass(lowpoweraudiosubsystem,低功耗音頻子系統(tǒng)),rpm15用來(lái)決定移動(dòng)終端100系統(tǒng)的休眠狀態(tài),具體是,rpm15基于各個(gè)子系統(tǒng)的投票機(jī)制實(shí)現(xiàn),當(dāng)各個(gè)子系統(tǒng)都投休眠票時(shí),rpm15才可以使移動(dòng)終端100整個(gè)系統(tǒng)進(jìn)行休眠。而當(dāng)移動(dòng)終端100有一個(gè)子或者多個(gè)子系統(tǒng)投反對(duì)休眠的票,移動(dòng)終端100整個(gè)系統(tǒng)都無(wú)法休眠。
在移動(dòng)終端100的整個(gè)系統(tǒng)休眠之后,若是要重新啟動(dòng)運(yùn)行,需要喚醒第一應(yīng)用處理器10以進(jìn)行數(shù)據(jù)的傳輸交互。
在移動(dòng)終端100和外接設(shè)備200通過(guò)usb通訊連接的情況下,喚醒方式可為以下三種:
1、第一應(yīng)用處理器10接收到信令數(shù)據(jù)時(shí),通過(guò)usb發(fā)送握手關(guān)鍵字給第二應(yīng)用處理器20,以喚醒第二應(yīng)用處理器20。
2、第二調(diào)制解調(diào)器21接收到用戶數(shù)據(jù)時(shí),喚醒第二應(yīng)用處理器20,由第二應(yīng)用處理器20通過(guò)usb傳送握手關(guān)鍵字給第一應(yīng)用處理器10,以喚醒第一應(yīng)用處理器10。
3、第二調(diào)制解調(diào)器21周期性查找尋呼請(qǐng)求,以主動(dòng)激活自己。若接收到尋呼請(qǐng)求,第二調(diào)制解調(diào)器21則喚醒第二應(yīng)用處理器20,由第二應(yīng)用處理器20通過(guò)usb發(fā)送握手關(guān)鍵字給第一應(yīng)用處理器10,以喚醒第二應(yīng)用處理器20。
需要說(shuō)明的是,握手關(guān)鍵字可用固定字長(zhǎng)的字符標(biāo)識(shí),是正常數(shù)據(jù)包中不會(huì)出現(xiàn)的字段。如可用0xf9f9f9或者0x9f9f9f表示握手關(guān)鍵字,通過(guò)握手關(guān)鍵字可喚醒處于睡眠狀態(tài)的第一應(yīng)用處理器10或第二應(yīng)用處理器20。
此外,第二調(diào)制解調(diào)器21還可以定期喚醒自己,以在移動(dòng)終端100進(jìn)行位置更新時(shí),跟基站進(jìn)行握手交互,此時(shí)不需要喚醒第一應(yīng)用處理器10。
參照?qǐng)D3,圖3為本發(fā)明移動(dòng)終端100和外接設(shè)備200通訊連接的實(shí)體結(jié)構(gòu)示意圖。移動(dòng)終端100通過(guò)usb與外接設(shè)備200通訊連接,其中,移動(dòng)終端包括但不限于手機(jī)、pc(personalcomputer,個(gè)人電腦)或pad(personaldigitalassistant,個(gè)人數(shù)字助理),外接設(shè)備200包括但不限于無(wú)線上網(wǎng)卡和數(shù)據(jù)卡。需要說(shuō)明的是,移動(dòng)終端100通過(guò)usb與外接設(shè)備200連接位置并不限于圖3所示,可根據(jù)具體需要來(lái)設(shè)置移動(dòng)終端100通過(guò)usb與外接設(shè)備200的連接位置。
參照?qǐng)D4,由圖4可知,第一調(diào)制解調(diào)器11包括uim(useridentitymodule)驅(qū)動(dòng)112、第一sim卡模塊代理113、遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)server114、第一攔截模塊115和第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116(數(shù)據(jù)轉(zhuǎn)發(fā)server1)。第一應(yīng)用處理器10包括第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011(數(shù)據(jù)轉(zhuǎn)發(fā)client1)和第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。第二調(diào)制解調(diào)器21包括modem非接入層部分212、第二sim卡模塊代理213、遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)client214、第二攔截模塊215和第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216(數(shù)據(jù)轉(zhuǎn)發(fā)server2),第二應(yīng)用處理器20包括第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022和第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021(數(shù)據(jù)轉(zhuǎn)發(fā)client2)。
其中,uim驅(qū)動(dòng)112存儲(chǔ)了接入網(wǎng)絡(luò)所必須的數(shù)據(jù),如uimid、鑒權(quán)數(shù)據(jù)aky值、imsi號(hào)等。
遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)server114和遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)client214用于實(shí)現(xiàn)第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21之間sim卡數(shù)據(jù)的傳輸。
第一攔截模塊115用于截取遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)server114中所需傳輸?shù)膕im卡數(shù)據(jù);第二攔截模塊215用于截取遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)client214中所需傳輸?shù)膕im卡數(shù)據(jù)。通過(guò)第一攔截模塊115和第二攔截模塊215實(shí)現(xiàn)遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)server114和遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)client214中sim卡數(shù)據(jù)的交互。
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216和第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021相對(duì)應(yīng),用于實(shí)現(xiàn)第二調(diào)制解調(diào)器21和第二應(yīng)用處理器20之間的數(shù)據(jù)傳輸;第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116和第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011相對(duì)應(yīng),用于實(shí)現(xiàn)第一調(diào)制解調(diào)器11和第一應(yīng)用處理器10之間的數(shù)據(jù)傳輸。
第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012和第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022用于通過(guò)usb實(shí)現(xiàn)第二應(yīng)用處理器20和第一應(yīng)用處理器10之間的數(shù)據(jù)傳輸。
基于上述的lte網(wǎng)絡(luò)架構(gòu)圖、移動(dòng)終端100和外接設(shè)備200通訊連接的硬件結(jié)構(gòu)示意圖、實(shí)體結(jié)構(gòu)示意圖以及現(xiàn)有技術(shù)存在的問(wèn)題,提出本發(fā)明的各個(gè)實(shí)施例。
提出本發(fā)明一種數(shù)據(jù)傳輸系統(tǒng)的第一實(shí)施例。在本實(shí)施例中,數(shù)據(jù)傳輸系統(tǒng)包括移動(dòng)終端100和外接設(shè)備200,移動(dòng)終端100包括內(nèi)嵌有虛擬用戶識(shí)別卡13的第一應(yīng)用處理器10,以及與實(shí)體用戶識(shí)別卡14連接的第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11包括第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116,第一應(yīng)用處理器10包括第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012和與第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116連接的第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011;外接設(shè)備200包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器21,第二調(diào)制解調(diào)器21包括第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216,第二應(yīng)用處理器20包括第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022和與第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216連接的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216,用于當(dāng)偵測(cè)到數(shù)據(jù)傳輸指令時(shí),根據(jù)數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包。
當(dāng)外接設(shè)備200的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216偵測(cè)到數(shù)據(jù)傳輸指令,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216根據(jù)數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包。其中,數(shù)據(jù)傳輸指令可為第二調(diào)制解調(diào)器21接收到enodeb101的數(shù)據(jù)請(qǐng)求時(shí)所觸發(fā)的,或者為需要獲取移動(dòng)終端100中虛擬用戶識(shí)別卡13或?qū)嶓w用戶識(shí)別卡14的數(shù)據(jù)等時(shí)所觸發(fā)的。因此,待傳輸數(shù)據(jù)包可為獲取數(shù)據(jù)的數(shù)據(jù)請(qǐng)求數(shù)據(jù)包,也可為響應(yīng)移動(dòng)終端100數(shù)據(jù)包的響應(yīng)數(shù)據(jù)包等。
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216還用于壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包;將壓縮數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20。
第二應(yīng)用處理器20,用于通過(guò)預(yù)設(shè)接口將壓縮數(shù)據(jù)包發(fā)送給第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。
當(dāng)?shù)诙?yīng)用處理器20的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216得到待傳輸數(shù)據(jù)包時(shí),壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216得到壓縮數(shù)據(jù)包時(shí),將壓縮數(shù)據(jù)包通過(guò)預(yù)設(shè)接口發(fā)送給移動(dòng)終端100,具體地,將壓縮數(shù)據(jù)包發(fā)送給第一應(yīng)用處理器10中的第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。在本實(shí)施例中,預(yù)設(shè)接口為usb,在其它實(shí)施例中,預(yù)設(shè)接口也可為其它可用于數(shù)據(jù)傳輸?shù)慕涌?。需要說(shuō)明的是,外接設(shè)備200壓縮待傳輸數(shù)據(jù)包的壓縮算法和移動(dòng)終端100解壓縮待傳輸數(shù)據(jù)包的解壓縮算法是對(duì)應(yīng)的,由外接設(shè)備200和移動(dòng)終端100事先協(xié)商好的。第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216壓縮待傳輸數(shù)據(jù)包時(shí),可以采用明文壓縮方法,也可采用加密壓縮方法。
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包發(fā)送給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021的具體過(guò)程為:第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)中。此時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021可通過(guò)兩種方法獲取到第二發(fā)送臨時(shí)緩沖區(qū)中的壓縮數(shù)據(jù)包。①:當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)后,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送提示消息給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021,以提示第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021已將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)中。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021接收到該提示消息時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021從與第二發(fā)送臨時(shí)緩沖區(qū)對(duì)應(yīng)的第二接收臨時(shí)緩沖區(qū)中提取該壓縮數(shù)據(jù)包。需要說(shuō)明的是,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送提示消息給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021的通信通道與第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送壓縮數(shù)據(jù)包給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021的通信通道不一樣。如第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216通過(guò)gpio(generalpurposeinputoutput,通用輸入/輸出口)端口將提示消息發(fā)送給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。
②:第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021實(shí)時(shí)監(jiān)測(cè)與第二發(fā)送臨時(shí)緩沖區(qū)對(duì)應(yīng)的第二接收臨時(shí)緩沖區(qū)的狀態(tài)。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021監(jiān)測(cè)到第二接收臨時(shí)緩沖區(qū)中寫(xiě)入壓縮數(shù)據(jù)包時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021第二接收臨時(shí)緩沖區(qū)中提取該壓縮數(shù)據(jù)包。
需要說(shuō)明的是,第二發(fā)送臨時(shí)緩沖區(qū)和第二接收臨時(shí)緩沖區(qū)對(duì)應(yīng)著同一個(gè)物理地址,因此第二接收臨時(shí)緩沖區(qū)和第二發(fā)送臨時(shí)緩沖區(qū)的容量值是同步變化的。當(dāng)?shù)诙l(fā)送臨時(shí)緩沖區(qū)增大時(shí),第二接收臨時(shí)緩沖區(qū)也同步增大;當(dāng)?shù)诙l(fā)送臨時(shí)緩沖區(qū)減小時(shí),第二接收臨時(shí)緩沖區(qū)也同步減小。由于第二發(fā)送臨時(shí)緩沖區(qū)和第二接收臨時(shí)緩沖區(qū)對(duì)應(yīng)著同一個(gè)物理地址,因此,當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216即可在第二接收臨時(shí)緩沖區(qū)中監(jiān)測(cè)到該壓縮數(shù)據(jù)包,提取該壓縮數(shù)據(jù)包。
進(jìn)一步地,當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021從第二接收臨時(shí)緩沖區(qū)中提取到壓縮數(shù)據(jù)包后,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216刪除第二發(fā)送臨時(shí)緩沖區(qū)中緩存的壓縮數(shù)據(jù)包。
進(jìn)一步地,在第二調(diào)制解調(diào)器21和第二應(yīng)用處理器20傳輸數(shù)據(jù)之前,第二應(yīng)用處理器20需要進(jìn)行初始化。第二應(yīng)用處理器20初始化的具體過(guò)程為:當(dāng)?shù)诙?yīng)用處理器20從休眠狀態(tài)進(jìn)入喚醒狀態(tài)時(shí),第二應(yīng)用處理器20的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021向?qū)?yīng)的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送請(qǐng)求消息,以請(qǐng)求第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216為第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021分配一個(gè)用戶標(biāo)識(shí)。需要說(shuō)明的是,在外接設(shè)備200和移動(dòng)終端100中,調(diào)制解調(diào)器的一個(gè)服務(wù)器對(duì)應(yīng)著應(yīng)用處理器的多個(gè)客戶端。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216接收到第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021發(fā)送的請(qǐng)求消息后,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216根據(jù)該請(qǐng)求消息發(fā)送用戶標(biāo)識(shí)給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021成功接收到該用戶標(biāo)識(shí)時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021發(fā)送測(cè)試數(shù)據(jù)包給第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216,其中,該測(cè)試數(shù)據(jù)包中攜帶有用戶標(biāo)識(shí)。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216成功接收到測(cè)試數(shù)據(jù)包時(shí),按照原路返回通知消息給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021成功接收到通知消息時(shí),表明第二應(yīng)用處理器20初始化成功。當(dāng)?shù)诙?yīng)用處理器20初始化成功后,將第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021和第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216中的標(biāo)識(shí)字段的標(biāo)識(shí)設(shè)置為特定標(biāo)識(shí),以表明第二應(yīng)用處理器20初始化成功。
第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012,用于當(dāng)接收到第二應(yīng)用處理器20發(fā)送的壓縮數(shù)據(jù)包時(shí),獲取壓縮數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí);若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待處理數(shù)據(jù)包,則解壓縮壓縮數(shù)據(jù)包,得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包;若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,則將壓縮數(shù)據(jù)包轉(zhuǎn)發(fā)給第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011。
第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011,用于將壓縮數(shù)據(jù)包發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116。
第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116,用于在接收到壓縮數(shù)據(jù)包時(shí),解壓縮壓縮數(shù)據(jù)包,得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。
當(dāng)移動(dòng)終端100第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012接收到外接設(shè)備200第二應(yīng)用處理器20發(fā)送的壓縮數(shù)據(jù)包時(shí),獲取壓縮數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí),根據(jù)類(lèi)別標(biāo)識(shí)判斷壓縮數(shù)據(jù)包的類(lèi)型。若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待處理數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012則按照與外接設(shè)備200壓縮待傳輸數(shù)據(jù)包對(duì)應(yīng)的解壓縮方法解壓縮壓縮數(shù)據(jù)包,以得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包,實(shí)現(xiàn)外接設(shè)備200和移動(dòng)終端100之間的數(shù)據(jù)傳輸。
若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012將所接收的壓縮數(shù)據(jù)包轉(zhuǎn)發(fā)給第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011。第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011在接收到壓縮數(shù)據(jù)包后,將壓縮數(shù)據(jù)包發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116。當(dāng)?shù)谝粩?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116接收到壓縮數(shù)據(jù)包時(shí),解壓縮所接收的壓縮數(shù)據(jù)包,以得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。
若第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012所接收的待傳輸數(shù)據(jù)包(即壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包)為待處理數(shù)據(jù)包,且需要從虛擬用戶識(shí)別卡13中獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012在虛擬用戶識(shí)別卡13中獲取數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包。需要說(shuō)明的是,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012從虛擬用戶識(shí)別卡13中獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包過(guò)程中,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012不會(huì)直接與虛擬用戶識(shí)別卡13中的存儲(chǔ)模塊交互,而是先向虛擬用戶識(shí)別卡13中的虛擬片內(nèi)操作系統(tǒng)發(fā)送數(shù)據(jù)獲取請(qǐng)求,然后虛擬用戶識(shí)別卡13中的虛擬片內(nèi)操作系統(tǒng)基于該數(shù)據(jù)獲取請(qǐng)求在存儲(chǔ)模塊中獲取數(shù)據(jù),然后將獲取的數(shù)據(jù)再傳輸給第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。
需要說(shuō)明的是,類(lèi)別標(biāo)識(shí)用于區(qū)分?jǐn)?shù)據(jù)包的類(lèi)型。在本實(shí)施例中,數(shù)據(jù)包的類(lèi)型包括兩種,一種是不需要發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116的,需要第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012進(jìn)行處理的待處理數(shù)據(jù)包,另一種是需要發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116待轉(zhuǎn)發(fā)數(shù)據(jù)包。類(lèi)別標(biāo)識(shí)可根據(jù)具體需要而設(shè)置,如當(dāng)類(lèi)別標(biāo)識(shí)為00時(shí),表明該數(shù)據(jù)包為待處理數(shù)據(jù)包;當(dāng)類(lèi)別標(biāo)識(shí)為01時(shí),表明該數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包。
需要說(shuō)明的是,第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011中有第一發(fā)送臨時(shí)緩沖區(qū),對(duì)應(yīng)的,第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116中有第一接收臨時(shí)緩沖區(qū)。第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116與第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011之間的數(shù)據(jù)傳輸過(guò)程和第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216與第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021之間的數(shù)據(jù)傳輸過(guò)程相類(lèi)似,在此不再贅述。
進(jìn)一步地,當(dāng)?shù)谝粩?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116接收到待傳輸數(shù)據(jù)包時(shí),將待傳輸數(shù)據(jù)包通過(guò)第一攔截模塊115、遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)server114和第一sim卡模塊代理113發(fā)送給uim驅(qū)動(dòng)112,uim驅(qū)動(dòng)112根據(jù)待傳輸數(shù)據(jù)包從實(shí)體用戶識(shí)別卡14獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)待傳輸數(shù)據(jù)包,得到響應(yīng)數(shù)據(jù)包,并將響應(yīng)數(shù)據(jù)包按原路返回給外接設(shè)備200。uim驅(qū)動(dòng)112根據(jù)待傳輸數(shù)據(jù)包從實(shí)體用戶識(shí)別卡14獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包過(guò)程中,uim驅(qū)動(dòng)112不會(huì)直接與實(shí)體用戶識(shí)別卡14中的文件存儲(chǔ)模塊交互,而是先向?qū)嶓w用戶識(shí)別卡14中的cos(chipoperatingsystem,片內(nèi)操作系統(tǒng))操作系統(tǒng)發(fā)送數(shù)據(jù)獲取請(qǐng)求,然后實(shí)體用戶識(shí)別卡14的cos操作系統(tǒng)基于該數(shù)據(jù)獲取請(qǐng)求在文件存儲(chǔ)模塊中獲取數(shù)據(jù),然后將獲取的數(shù)據(jù)再傳輸給uim驅(qū)動(dòng)112,以實(shí)現(xiàn)待傳輸數(shù)據(jù)包的響應(yīng)。
本實(shí)施例通過(guò)當(dāng)外接設(shè)備200的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包時(shí),壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包;將壓縮數(shù)據(jù)包發(fā)送給與第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216連接的第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將壓縮數(shù)據(jù)包發(fā)送給移動(dòng)終端100。當(dāng)移動(dòng)終端100接收到外接設(shè)備200發(fā)送的數(shù)據(jù)包時(shí),解壓縮所接收的壓縮數(shù)據(jù)包,以得到外接設(shè)備200發(fā)送的完整的待傳輸數(shù)據(jù)包。避免了在外接設(shè)備200和移動(dòng)終端100進(jìn)行數(shù)據(jù)傳輸過(guò)程中,由于所傳輸?shù)臄?shù)據(jù)包過(guò)大,導(dǎo)致數(shù)據(jù)包傳輸失敗的情況出現(xiàn)。
進(jìn)一步地,提出數(shù)據(jù)傳輸系統(tǒng)的第二實(shí)施例。數(shù)據(jù)傳輸系統(tǒng)的第二實(shí)施例與第一實(shí)施例的區(qū)別在于:
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216還用于計(jì)算待傳輸數(shù)據(jù)包的大小;若待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值,則壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包,并為壓縮數(shù)據(jù)包添加壓縮標(biāo)識(shí)。
當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216計(jì)算待傳輸數(shù)據(jù)包的大小,并判斷待傳輸數(shù)據(jù)包的大小是否大于預(yù)設(shè)閾值。若待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216則壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。為了讓移動(dòng)終端100區(qū)分壓縮數(shù)據(jù)包和非壓縮數(shù)據(jù)包,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216為壓縮數(shù)據(jù)包添加一個(gè)壓縮標(biāo)識(shí)。具體地,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在壓縮數(shù)據(jù)包的包頭中添加一個(gè)壓縮標(biāo)識(shí),其中,數(shù)據(jù)包的包頭是大小固定的結(jié)構(gòu)體,在包頭結(jié)構(gòu)體中,有個(gè)結(jié)構(gòu)體成員變量包括了壓縮數(shù)據(jù)包的長(zhǎng)度、以及自定義用于表示壓縮數(shù)據(jù)包的壓縮標(biāo)識(shí)。壓縮標(biāo)識(shí)可根據(jù)具體需要而設(shè)置,如可以設(shè)置為9f9f,或者設(shè)置為f9f9等。
需要說(shuō)明的是,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216和第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021中定義有用于數(shù)據(jù)傳輸?shù)膓mi(qualcommmessageinterface)協(xié)議,在qmi協(xié)議中,定義了標(biāo)識(shí)(flag)字段和數(shù)據(jù)(data)字段,其中,data字段用于緩存數(shù)據(jù)包。在data字段中,設(shè)置了數(shù)據(jù)包大小的預(yù)設(shè)閾值??梢岳斫獾氖?,data字段中數(shù)據(jù)包的預(yù)設(shè)閾值可根據(jù)具體需要而設(shè)置,如可設(shè)置為8個(gè)字節(jié),或者12個(gè)字節(jié)等。
進(jìn)一步地,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216計(jì)算待傳輸數(shù)據(jù)包大小的具體過(guò)程為:解析待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包的包頭,從包頭中獲取待傳輸數(shù)據(jù)包的大小。其中,待傳輸數(shù)據(jù)包為tlv格式,tlv格式是ber(basicencodingrules,基本編碼規(guī)則)編碼的一種,全稱(chēng)為type(類(lèi)型),length(長(zhǎng)度),value(值),t字段表示待傳輸數(shù)據(jù)包的類(lèi)型,l字段表示待傳輸數(shù)據(jù)包的長(zhǎng)度,即數(shù)據(jù)包的大小,v字段用來(lái)存放待傳輸數(shù)據(jù)包的內(nèi)容。
進(jìn)一步地,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在對(duì)壓縮數(shù)據(jù)包進(jìn)行封包操作時(shí)添加壓縮標(biāo)識(shí),封包就是給一段數(shù)據(jù)加上包頭,使數(shù)據(jù)包分為包頭和包體兩部分內(nèi)容。包頭是大小固定的結(jié)構(gòu)體,在包頭結(jié)構(gòu)體中,有個(gè)結(jié)構(gòu)體成員變量包括拆分后子數(shù)據(jù)包的長(zhǎng)度、以及自定義的,用于標(biāo)識(shí)拆分后子數(shù)據(jù)包的標(biāo)識(shí)。
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216還用于若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,則將待傳輸數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20。
第二應(yīng)用處理器20還用于通過(guò)預(yù)設(shè)接口將待傳輸數(shù)據(jù)包發(fā)送給第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。
若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216則不壓縮待傳輸數(shù)據(jù)包,直接將待傳輸數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將待傳輸數(shù)據(jù)包發(fā)送給移動(dòng)終端100的第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。
需要說(shuō)明的是,若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,可為該帶傳輸數(shù)據(jù)包添加一個(gè)與壓縮標(biāo)識(shí)不一樣的標(biāo)識(shí)信息,也可不為待傳輸數(shù)據(jù)包添加標(biāo)識(shí)。因?yàn)閴嚎s數(shù)據(jù)包中已存在壓縮標(biāo)識(shí),即使不為待傳輸數(shù)據(jù)包添加標(biāo)識(shí)信息,移動(dòng)終端100根據(jù)壓縮標(biāo)識(shí)即可區(qū)分出壓縮數(shù)據(jù)包和待傳輸數(shù)據(jù)包。
第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012還用于根據(jù)是否在所接收的數(shù)據(jù)包中檢測(cè)到壓縮標(biāo)識(shí)判斷所接收的數(shù)據(jù)包是否為壓縮數(shù)據(jù)包。
當(dāng)移動(dòng)終端100的第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012接收到第二應(yīng)用處理器20的第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022發(fā)送給的數(shù)據(jù)包時(shí),第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012獲取數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí),并根據(jù)類(lèi)別標(biāo)識(shí)判斷壓縮數(shù)據(jù)包的類(lèi)型。若根據(jù)類(lèi)別標(biāo)識(shí)確定所接收的數(shù)據(jù)包為待處理數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012則檢測(cè)所接收的數(shù)據(jù)包的包頭中是否含有壓縮標(biāo)識(shí)。若所接收的數(shù)據(jù)包包頭中含有壓縮標(biāo)識(shí),第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022則對(duì)所接收的數(shù)據(jù)包進(jìn)行解壓縮操作,以得到與所接收的數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。若所接收的數(shù)據(jù)包包頭中未含有壓縮標(biāo)識(shí),則表明該數(shù)據(jù)包未被壓縮過(guò),第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012根據(jù)所接收的數(shù)據(jù)包執(zhí)行相應(yīng)的操作,如顯示外接設(shè)備200的信號(hào)強(qiáng)度、電量等。
若根據(jù)類(lèi)別標(biāo)識(shí)確定所接收的數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012則將所接收的數(shù)據(jù)包通過(guò)第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116。當(dāng)?shù)谝粩?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116接收到數(shù)據(jù)包時(shí),第一轉(zhuǎn)發(fā)服務(wù)器檢測(cè)所接收的數(shù)據(jù)包的包頭中是否含有壓縮標(biāo)識(shí)。若所接收的數(shù)據(jù)包包頭中含有壓縮標(biāo)識(shí),第一轉(zhuǎn)發(fā)服務(wù)器則對(duì)所接收的數(shù)據(jù)包進(jìn)行解壓縮操作,以得到與所接收的數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。若所接收的數(shù)據(jù)包包頭中未含有壓縮標(biāo)識(shí),則表明該數(shù)據(jù)包未被壓縮過(guò),直接將所接收的數(shù)據(jù)包發(fā)送給uim驅(qū)動(dòng),以實(shí)現(xiàn)第二調(diào)制解調(diào)器21和第一調(diào)制解調(diào)器11之間的數(shù)據(jù)傳輸。
本實(shí)施例通過(guò)先計(jì)算待傳輸數(shù)據(jù)包大小,只有當(dāng)待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值時(shí),才壓縮待傳輸數(shù)據(jù)包,防止當(dāng)待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值時(shí)也對(duì)待傳輸數(shù)據(jù)包進(jìn)行壓縮操作,從而造成系統(tǒng)資源的浪費(fèi),并降低了數(shù)據(jù)傳輸?shù)乃俾省?/p>
進(jìn)一步地,提出數(shù)據(jù)傳輸系統(tǒng)的第三實(shí)施例。數(shù)據(jù)傳輸系統(tǒng)的第三實(shí)施例與第一和/或第二實(shí)施例的區(qū)別在于:
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216還用于獲取待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本,計(jì)算源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段;在預(yù)設(shè)字典列表中查找字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)字符段的長(zhǎng)度;將編碼替換對(duì)應(yīng)的字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包時(shí),解析待傳輸數(shù)據(jù)包,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本,并計(jì)算源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216計(jì)算出出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在預(yù)設(shè)字典列表中查找與該字符段對(duì)應(yīng)的編碼,將所查找到的編碼替換待傳輸數(shù)據(jù)包中對(duì)應(yīng)的字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。其中,字符段對(duì)應(yīng)編碼的長(zhǎng)度小于對(duì)應(yīng)字符段的長(zhǎng)度。預(yù)設(shè)次數(shù)可根據(jù)具體需要而設(shè)置,如可設(shè)置為2次、3次或者5次等。預(yù)設(shè)字典列表為第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216中預(yù)先存儲(chǔ)。可以理解的是,在編碼過(guò)程中,不對(duì)源文本中出現(xiàn)次數(shù)小于或者等于預(yù)設(shè)次數(shù)的字符段進(jìn)行處理。
具體地,在本實(shí)施例中,所涉及的壓縮算法為字典算法。字典算法是把源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的單詞或詞匯組合做成一個(gè)對(duì)應(yīng)的字典列表,并用特殊代碼來(lái)表示這個(gè)單詞或詞匯,例如,若當(dāng)前的字典列表為:00=chinese;01=i。若待傳輸數(shù)據(jù)包中的源文本為:iamachinesepeople,ihaveachinesefriend。則通過(guò)字典算法壓縮待傳輸數(shù)據(jù)包后所得的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:01ama00people,01havea00friend。因此,相對(duì)于待傳輸數(shù)據(jù)包,壓縮數(shù)據(jù)包的長(zhǎng)度顯著縮小,若在專(zhuān)有名詞或者固定組合內(nèi)容較多的待傳輸數(shù)據(jù)包中,壓縮效果十分顯著。移動(dòng)終端100在解壓縮過(guò)程中,執(zhí)行反向還原即可。
進(jìn)一步地,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216還用于確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段;若源文本中存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段,則確定前后連續(xù)兩個(gè)字符段之間的距離以及字符段的長(zhǎng)度;確定距離對(duì)應(yīng)的距離標(biāo)識(shí)和長(zhǎng)度對(duì)應(yīng)的長(zhǎng)度標(biāo)識(shí);將距離標(biāo)識(shí)和長(zhǎng)度標(biāo)識(shí)替換連續(xù)兩個(gè)字符段中的后一個(gè)字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
進(jìn)一步地,當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包的源文本時(shí),確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段。若待傳輸數(shù)據(jù)包的源文本中存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216則確定前后連續(xù)兩個(gè)字符段之間的距離以及對(duì)應(yīng)字符段的長(zhǎng)度,即確定后一個(gè)字符段與前一個(gè)字符段的距離以及這兩個(gè)字符段的長(zhǎng)度,確定該距離對(duì)應(yīng)的距離標(biāo)識(shí)和長(zhǎng)度對(duì)應(yīng)的長(zhǎng)度標(biāo)識(shí),將距離標(biāo)識(shí)和長(zhǎng)度標(biāo)識(shí)替換連續(xù)兩個(gè)字符段中的后一個(gè)字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。其中,預(yù)設(shè)長(zhǎng)度可根據(jù)具體需要而設(shè)置,如可設(shè)置為2個(gè)字節(jié),或者3個(gè)字節(jié)等。
該過(guò)程涉及的算法為lz77(由jacobziv和abrahamlempel于1977年提出,所以命名為lz77)算法。
lz77算法的壓縮原理為:如果數(shù)據(jù)包中有兩塊字符串內(nèi)容相同的話,那么只要知道前一塊字符串內(nèi)容的位置和大小,就可以確定后一塊字符串的內(nèi)容。因此可以用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容。由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,因此數(shù)據(jù)包的大小會(huì)比原始未處理的數(shù)據(jù)包要小,即數(shù)據(jù)包得到了壓縮。
如有一個(gè)數(shù)據(jù)包的內(nèi)容為:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的內(nèi)容,前面已經(jīng)出現(xiàn)過(guò)了,后面用()括起來(lái)的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。使用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容,得到http://jiurl.yeah.net(22,13)nease(23,4)。(22,13)中,22表示后一塊http://jiurl.與前一塊http://jiurl.中任意兩個(gè)相同字符之間的距離,如后一個(gè)h與前一個(gè)h的距離;13為相同內(nèi)容的長(zhǎng)度;(23,4)同理,此處不再贅述。
具體地,在使用lz77算法過(guò)程中,通過(guò)滑動(dòng)窗口尋找匹配的字符串。即在lz77算法中,使用"滑動(dòng)窗口"的方法來(lái)尋找數(shù)據(jù)包中的相同部分的內(nèi)容,在此,將數(shù)據(jù)包中內(nèi)容相同的部分稱(chēng)為匹配串。首先,對(duì)匹配串做一個(gè)說(shuō)明,匹配串是指一個(gè)任意字節(jié)的序列,不僅僅是可以在數(shù)據(jù)包源文本中顯示出來(lái)的那些字節(jié)的序列,還可以是包括標(biāo)點(diǎn)符號(hào)的序列。這里的串強(qiáng)調(diào)的是它在文件中的位置,它的長(zhǎng)度隨著匹配的情況而變化。
具體地:lz77從數(shù)據(jù)包的起點(diǎn)處開(kāi)始,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。在本發(fā)明實(shí)施例中,滑動(dòng)窗口的長(zhǎng)度是固定的,該滑動(dòng)窗口的終止位置在當(dāng)前處理字節(jié)之前,并且緊挨著當(dāng)前處理字節(jié),隨著處理的字節(jié)不斷的向后滑動(dòng),就像在陽(yáng)光下,飛機(jī)的影子滑過(guò)大地一樣。對(duì)于數(shù)據(jù)包中的每個(gè)字節(jié),用當(dāng)前處理字節(jié)開(kāi)始的串,和窗口中的每個(gè)串進(jìn)行匹配,以尋找最長(zhǎng)的匹配串。
窗口中的每個(gè)串指窗口中每個(gè)字節(jié)開(kāi)始的串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就用(之間的距離,匹配長(zhǎng)度)這樣一對(duì)信息,來(lái)替換當(dāng)前串,然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就不做改動(dòng)的輸出當(dāng)前處理字節(jié)。
處理數(shù)據(jù)包中第一個(gè)字節(jié)的時(shí)候,窗口在當(dāng)前處理字節(jié)之前,也就是還沒(méi)有滑到數(shù)據(jù)包上,這時(shí)窗口中沒(méi)有任何內(nèi)容,被處理的字節(jié)就會(huì)不做改動(dòng)的輸出。隨著處理的不斷向后,窗口越來(lái)越多的滑入數(shù)據(jù)包,最后整個(gè)窗口滑入數(shù)據(jù)包,然后整個(gè)窗口在數(shù)據(jù)包上向后滑動(dòng),直到整個(gè)數(shù)據(jù)包結(jié)束。
需要說(shuō)明的是,匹配串的長(zhǎng)度有所限制。在本實(shí)施例中,設(shè)置了最小匹配串和最大匹配串,必須限制通過(guò)滑動(dòng)窗口匹配出來(lái)的字符串大于該最小匹配串并且小于該最大匹配串,才會(huì)進(jìn)行壓縮,若是匹配出來(lái)的字符串小于該最小匹配串,或大于該最大匹配串,則不會(huì)進(jìn)行后續(xù)的壓縮操作。
如數(shù)據(jù)包的源文本為:aaababaaac,當(dāng)前有一個(gè)6個(gè)字符的滑動(dòng)窗口,表示滑動(dòng)窗口中一次性最多包含6個(gè)字符。
編碼的第一步:滑動(dòng)窗口是一個(gè)空窗口,此時(shí)滑動(dòng)窗口還不需要滑動(dòng),將滑動(dòng)窗口與滑動(dòng)窗口外的源文本第一位字符進(jìn)行比對(duì),發(fā)現(xiàn)不存在匹配的字符,此時(shí)將滑動(dòng)窗口往右移動(dòng)一位,也就是將滑動(dòng)窗口從右滑入源文本,那么源文本的首字母進(jìn)入該滑動(dòng)窗口,此時(shí)滑動(dòng)窗口顯示字符a;
編碼的第二步:由于滑動(dòng)窗口內(nèi)部只有字符a,滑動(dòng)窗口外緊接著出現(xiàn)字符a,雖然滑動(dòng)窗口里面和外面存在匹配的字符a,但是為了保證字符編碼的效率,事先設(shè)置最小匹配串,如將最小匹配串設(shè)置為2個(gè)字符,由于此時(shí)只有一個(gè)字符a匹配,不符合要求,那么滑動(dòng)窗口保持不動(dòng),將處理的字符往右移動(dòng)一位,即與滑動(dòng)窗口進(jìn)行比對(duì)的字符就是aa,此時(shí)滑動(dòng)窗口內(nèi)只有一個(gè)字符a,因此,不存在匹配的字符,那么將該滑動(dòng)窗口繼續(xù)向右滑動(dòng),那么文本字符串的第二個(gè)字符也進(jìn)入滑動(dòng)窗口,此時(shí)滑動(dòng)窗口中出現(xiàn)了兩個(gè)一樣的字符a。
編碼的第三步:當(dāng)滑動(dòng)窗口內(nèi)部存在兩個(gè)相同的字符a時(shí),將滑動(dòng)窗口內(nèi)部的兩個(gè)字符a與窗口外的字符進(jìn)行比對(duì),由于滑動(dòng)窗口外緊接著的兩個(gè)字符是ab,不匹配,因此滑動(dòng)窗口繼續(xù)右滑,當(dāng)滑動(dòng)窗口滑動(dòng)出現(xiàn)aaa時(shí),滑動(dòng)窗口外緊接著出現(xiàn)的字符是bab,與滑動(dòng)窗口內(nèi)的字符不匹配,那么滑動(dòng)窗口繼續(xù)向右滑動(dòng),以使得滑動(dòng)窗口內(nèi)部出現(xiàn)aaab,此時(shí),由于滑動(dòng)窗口內(nèi)部的字符ab與滑動(dòng)窗口外部緊接著的字符ab匹配,認(rèn)為找到了相似長(zhǎng)度為2的ab,因此滑動(dòng)窗口外的ab滿足最小匹配串的要求,因此一對(duì)〈長(zhǎng)度,距離〉就被輸出了,長(zhǎng)度(length)是2并且向后距離也是2,所以輸出為<2,2>。
編碼的第四步:當(dāng)后一個(gè)字符串a(chǎn)b用<2,2>輸出之后,該段字符串就相當(dāng)于刪除了,此時(shí)將滑動(dòng)窗口與剩下的源文本進(jìn)行比對(duì),剩下的源文本為aaac,通過(guò)該滑動(dòng)窗口比對(duì)時(shí),在將aaac中的前兩個(gè)aa與滑動(dòng)窗口進(jìn)行比對(duì)時(shí),雖然aa與滑動(dòng)窗口出現(xiàn)相同內(nèi)容和長(zhǎng)度的字符,并且符合最小字符串,但是為了提高壓縮效率,會(huì)繼續(xù)判斷源文本后面是否還有匹配的字符串,若此時(shí)檢測(cè)到出還有一個(gè)字符a,即剛好有字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)的三個(gè)字符a相同,那么確定剩下的字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)aaa的距離以及相同字符串的長(zhǎng)度,此時(shí)由于刪除了原本字符串中的后一個(gè)ab,因此aaa與滑動(dòng)窗口內(nèi)aaa的距離是4,相同的內(nèi)容長(zhǎng)度是3,可輸出<4,3>。
編碼的第五步:輸出<4,3>之后,該源文本中還需要處理的字符只有c,由于該滑動(dòng)窗口中的字符是aaab,不匹配,因此滑動(dòng)窗口向右滑動(dòng)一位,將字符c也滑進(jìn)該滑動(dòng)窗口,那么滑動(dòng)窗口內(nèi)的字符就為aaabc。由于后續(xù)沒(méi)有內(nèi)容需要處理,那么將該滑動(dòng)窗口內(nèi)的所有字符都輸出,最終得到的編碼串為aaab<2,2><4,3>c。
為了在解壓縮時(shí),可以區(qū)分“沒(méi)有匹配的字節(jié)”和“(之間的距離,匹配長(zhǎng)度)對(duì)”,還需要在每個(gè)“沒(méi)有匹配的字節(jié)”或者“(之間的距離,匹配長(zhǎng)度)對(duì)”之前,放上一位,來(lái)指明是“沒(méi)有匹配的字節(jié)”,還是“(之間的距離,匹配長(zhǎng)度)對(duì)”。本發(fā)明實(shí)施例中,可選用0表示“沒(méi)有匹配的字節(jié)”,用1表示“(之間的距離,匹配長(zhǎng)度)對(duì)”。
實(shí)際應(yīng)用中,固定(之間的距離,匹配長(zhǎng)度)對(duì)中的,“之間的距離”和“匹配長(zhǎng)度”所使用的位數(shù)。由于要固定“之間的距離”所使用的位數(shù),所以才使用了固定大小的窗口,比如窗口的大小為32kb,那么用15位(2^15=32k)就可以保存0-32k范圍內(nèi)的任何一個(gè)值。此外,還將限定最大的匹配長(zhǎng)度,這樣一來(lái),“匹配長(zhǎng)度”所使用的位數(shù)也就固定了。
實(shí)際應(yīng)用中,還將設(shè)定一個(gè)最小匹配長(zhǎng)度,只有當(dāng)兩個(gè)串的匹配長(zhǎng)度大于最小匹配長(zhǎng)度時(shí),才認(rèn)為是一個(gè)匹配。為更好理解,舉一個(gè)例子來(lái)說(shuō)明這樣做的原因:比如,“距離”使用15位,“長(zhǎng)度”使用8位,那么“(之間的距離,匹配長(zhǎng)度)對(duì)”將使用23位,也就是差1位3個(gè)字節(jié)。如果匹配長(zhǎng)度小于3個(gè)字節(jié)的話,那么用“(之間的距離,匹配長(zhǎng)度)對(duì)”進(jìn)行替換的話,不但沒(méi)有壓縮,反而會(huì)增大,所以需要一個(gè)最小匹配長(zhǎng)度。
使用lz77算法進(jìn)行壓縮的過(guò)程為:從數(shù)據(jù)包的起點(diǎn)到數(shù)據(jù)包的終點(diǎn),即從數(shù)據(jù)包的開(kāi)始到數(shù)據(jù)包的結(jié)束,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。用當(dāng)前處理字節(jié)開(kāi)始的串,和滑動(dòng)窗口中的每個(gè)串進(jìn)行匹配,尋找最長(zhǎng)的匹配串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),然后輸出(之間的距離,匹配長(zhǎng)度)對(duì),然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)沒(méi)有改動(dòng)的字節(jié),然后不做改動(dòng)的輸出當(dāng)前處理字節(jié),然后繼續(xù)處理當(dāng)前處理字節(jié)的下一個(gè)字節(jié)。
使用lz77算法進(jìn)行解壓縮的過(guò)程為:從數(shù)據(jù)包的起點(diǎn)到數(shù)據(jù)包的終點(diǎn),每次先讀一位標(biāo)志位,通過(guò)這個(gè)標(biāo)志位來(lái)判斷下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),還是一個(gè)沒(méi)有改動(dòng)的字節(jié)。如果是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),就讀出固定位數(shù)的(之間的距離,匹配長(zhǎng)度)對(duì),然后根據(jù)對(duì)中的信息,將匹配串輸出到當(dāng)前位置。如果是一個(gè)沒(méi)有改動(dòng)的字節(jié),就讀出一個(gè)字節(jié),然后輸出這個(gè)字節(jié)。
綜上,可以看出,lz77壓縮時(shí)需要做大量的匹配工作,而解壓縮時(shí)需要做的工作很少,也就是說(shuō)解壓縮相對(duì)于壓縮將快的多,這對(duì)于需要進(jìn)行一次壓縮,多次解壓縮的情況,是一個(gè)效果顯著的優(yōu)點(diǎn)。
進(jìn)一步地,還可采用固定位長(zhǎng)算法(fixedbitlengthpacking)壓縮待傳輸數(shù)據(jù)包,具體過(guò)程為:當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包的源文本時(shí),依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段,再將任兩個(gè)字符段的高四位進(jìn)行刪除,并將任兩個(gè)字符段的低四位進(jìn)行組合,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
如:八個(gè)十六進(jìn)制數(shù):1,2,3,4,5,6,7,8,轉(zhuǎn)換為二進(jìn)制為:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每個(gè)數(shù)只用到了低4位,而高4位沒(méi)有用到(全為0),因此對(duì)低4位進(jìn)行壓縮編碼后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后兩兩補(bǔ)充為8位字節(jié)得到:00010010,001100,010110,011000。因此原來(lái)的八個(gè)十六進(jìn)制數(shù)縮短了一半,得到4個(gè)十六進(jìn)制數(shù):12,34,56,78。
可以理解的是,采用固定位長(zhǎng)算法壓縮待傳輸數(shù)據(jù)包,將需要用到的位數(shù)進(jìn)行了縮小,使得壓縮所得的壓縮數(shù)據(jù)包的容量有所減小,同理,解壓時(shí)執(zhí)行反向拆分添加組合即可。
進(jìn)一步地,還可采用rle(runlengthencoding,游程編碼,又譯行程長(zhǎng)度編碼)算法壓縮待傳輸數(shù)據(jù)包,具體過(guò)程為:當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包的源文本時(shí),確定源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。rle算法是一種變長(zhǎng)的編碼,rle算法根據(jù)文本不同的具體情況會(huì)有不同的壓縮編碼變體與之相適應(yīng),以產(chǎn)生更大的壓縮比率。下面具體介紹各種變體。
變體1:重復(fù)次數(shù)加上對(duì)應(yīng)的字符。如待傳輸數(shù)據(jù)包的源文本為:aaabbbccccdddd,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:3a3b4c4d。通過(guò)變體1算法,即可將待傳輸數(shù)據(jù)包文本字符串進(jìn)行壓縮。
變體2:特殊字符加上重復(fù)次數(shù)和字符。如待傳輸數(shù)據(jù)包的源文本為:aaaaabccccbccc,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:bb5abb4cbb3c;其中,該編碼串的最開(kāi)始說(shuō)明特殊字符為b,然后再添加一個(gè)b,b后面跟著的數(shù)字就表示出重復(fù)的次數(shù)。也就是說(shuō),源文本采用該變體2算法進(jìn)行編碼壓縮時(shí),先在編碼后的編碼串的首字母說(shuō)明特殊字符為b,然后由于后面緊接著出現(xiàn)5個(gè)字符a,需要在這5個(gè)字符a之前添加一個(gè)特殊字符即字符b,因此就是bb5a,在5a之后出現(xiàn)b,且b之后又出現(xiàn)4個(gè)c,因此,需要在4個(gè)c之前再添加一個(gè)特殊字符b,與前面連接起來(lái)就是bb5abb4c,后面采用同樣的方式,即可得到最終的編碼串bb5abb4cbb3c。如待傳輸數(shù)據(jù)包的源文本為:aaaaabccccbccc,若編碼串的最開(kāi)始說(shuō)明特殊字符為d,那么,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:dd5abd4cbd3c。由此可知,壓縮過(guò)程中編碼串的特殊字符可根據(jù)具體需要而設(shè)置。
變體3:把源文本每個(gè)字節(jié)分組成塊,每個(gè)字符最多重復(fù)127次。每個(gè)塊以一個(gè)特殊字節(jié)開(kāi)頭。那個(gè)特殊字節(jié)的第7位如果被置位,那么剩下的7位數(shù)值就是后面的字符的重復(fù)次數(shù);如果第7位沒(méi)有被置位,那么剩下7位就是后面沒(méi)有被壓縮的字符的數(shù)量。如待傳輸數(shù)據(jù)包的源文本為:aaaaabcdefff,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先將源文本分組成三個(gè)塊,分別是aaaaa、bcde和fff,三個(gè)塊對(duì)應(yīng)的特殊字符分別是10000101、00000100和10000011,由于10000101中第7位被置位為1,因此剩下的7位數(shù)值為后面的字符的重復(fù)次數(shù),此時(shí)可知剩下的7位數(shù)值對(duì)應(yīng)的值為5,即可得到85a;同理,由于00000100中的第7位沒(méi)有被置位為1,那么剩下7位是后面沒(méi)有被壓縮的字符的數(shù)量,可知此時(shí)剩下7位對(duì)應(yīng)的值為4,即可得到4bcde;同理可確定83f,此處不在贅述。
需要說(shuō)明的是,以上所列舉出的三種3種rle變體算法僅僅是較佳的幾種變體算法,本領(lǐng)域技術(shù)人員利用本發(fā)明的技術(shù)思想,根據(jù)其具體需求所提出的其它rle變體算法均在本發(fā)明的保護(hù)范圍內(nèi),在此不進(jìn)行一一列舉。
本實(shí)施例通過(guò)壓縮算法壓縮待傳輸數(shù)據(jù)包,實(shí)現(xiàn)外接設(shè)備200和移動(dòng)終端100之間的大數(shù)據(jù)包傳輸問(wèn)題,同時(shí)避免了將待傳輸數(shù)據(jù)包拆分成多個(gè)子數(shù)據(jù)包,在傳輸子數(shù)據(jù)包過(guò)程時(shí),由于某個(gè)子數(shù)據(jù)包丟失,從而導(dǎo)致數(shù)據(jù)傳輸失敗的情況。
需要說(shuō)明的是,本實(shí)施例是以外接設(shè)備200為發(fā)送端,移動(dòng)終端100為接收端為例來(lái)說(shuō)明外接設(shè)備200和移動(dòng)終端100之間的數(shù)據(jù)傳輸過(guò)程。在其它實(shí)施例中,也可以將移動(dòng)終端100作為發(fā)送端,外接設(shè)備200作為接收端來(lái)說(shuō)明外接設(shè)備200和移動(dòng)終端100之間的數(shù)據(jù)傳輸過(guò)程??梢岳斫獾氖?,移動(dòng)終端100作為發(fā)送端,外接設(shè)備200作為接收端與移動(dòng)終端100作為接收端,外接設(shè)備200作為發(fā)送端的數(shù)據(jù)傳輸原理一致,在此不再贅述。
本發(fā)明還提供一種應(yīng)用于外接設(shè)備200的數(shù)據(jù)傳輸方法。
參照?qǐng)D5,圖5為本發(fā)明中應(yīng)用于外接設(shè)備200的數(shù)據(jù)傳輸方法較佳實(shí)施例的流程示意圖。
本實(shí)施例提出一種數(shù)據(jù)傳輸方法,在本實(shí)施例中,提供了數(shù)據(jù)傳輸方法的實(shí)施例,需要說(shuō)明的是,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
數(shù)據(jù)傳輸方法應(yīng)用于通過(guò)預(yù)設(shè)接口與移動(dòng)終端100連接的外接設(shè)備200中,外接設(shè)備200包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器21,第二調(diào)制解調(diào)器21包括第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216,第二應(yīng)用處理器20包括第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022和與第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216連接的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。移動(dòng)終端100包括內(nèi)嵌有虛擬用戶識(shí)別卡13的第一應(yīng)用處理器10,以及與實(shí)體用戶識(shí)別卡14連接的第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11包括第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116,第一應(yīng)用處理器10包括第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012和與第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116連接的第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011。數(shù)據(jù)傳輸方法包括:
步驟s10,當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216偵測(cè)到數(shù)據(jù)傳輸指令時(shí),根據(jù)數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包。
當(dāng)外接設(shè)備200的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216偵測(cè)到數(shù)據(jù)傳輸指令,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216根據(jù)數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包。其中,數(shù)據(jù)傳輸指令可為第二調(diào)制解調(diào)器21接收到enodeb101的數(shù)據(jù)請(qǐng)求時(shí)所觸發(fā)的,或者為需要獲取移動(dòng)終端100中虛擬用戶識(shí)別卡13或?qū)嶓w用戶識(shí)別卡14的數(shù)據(jù)等時(shí)所觸發(fā)的。因此,待傳輸數(shù)據(jù)包可為獲取數(shù)據(jù)的數(shù)據(jù)請(qǐng)求數(shù)據(jù)包,也可為響應(yīng)移動(dòng)終端100數(shù)據(jù)包的響應(yīng)數(shù)據(jù)包等。
步驟s20,壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
步驟s30,將壓縮數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將壓縮數(shù)據(jù)包發(fā)送給移動(dòng)終端100。
當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216得到待傳輸數(shù)據(jù)包時(shí),壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216得到壓縮數(shù)據(jù)包時(shí),將壓縮數(shù)據(jù)包通過(guò)預(yù)設(shè)接口發(fā)送給移動(dòng)終端100,具體地,將壓縮數(shù)據(jù)包發(fā)送給第一應(yīng)用處理器10中的第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。在本實(shí)施例中,預(yù)設(shè)接口為usb,在其它實(shí)施例中,預(yù)設(shè)接口也可為其它可用于數(shù)據(jù)傳輸?shù)慕涌?。需要說(shuō)明的是,外接設(shè)備200壓縮待傳輸數(shù)據(jù)包的壓縮算法和移動(dòng)終端100解壓縮待傳輸數(shù)據(jù)包的解壓縮算法是對(duì)應(yīng)的,由外接設(shè)備200和移動(dòng)終端100事先協(xié)商好的。第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216壓縮待傳輸數(shù)據(jù)包時(shí),可以采用明文壓縮方法,也可采用加密壓縮方法。
第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包發(fā)送給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021的具體過(guò)程為:第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)中。此時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021可通過(guò)兩種方法獲取到第二發(fā)送臨時(shí)緩沖區(qū)中的壓縮數(shù)據(jù)包。①:當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)后,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送提示消息給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021,以提示第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021已將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)中。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021接收到該提示消息時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021從與第二發(fā)送臨時(shí)緩沖區(qū)對(duì)應(yīng)的第二接收臨時(shí)緩沖區(qū)中提取該壓縮數(shù)據(jù)包。需要說(shuō)明的是,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送提示消息給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021的通信通道與第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送壓縮數(shù)據(jù)包給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021的通信通道不一樣。如第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216通過(guò)gpio(generalpurposeinputoutput,通用輸入/輸出口)端口將提示消息發(fā)送給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。
②:第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021實(shí)時(shí)監(jiān)測(cè)與第二發(fā)送臨時(shí)緩沖區(qū)對(duì)應(yīng)的第二接收臨時(shí)緩沖區(qū)的狀態(tài)。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021監(jiān)測(cè)到第二接收臨時(shí)緩沖區(qū)中寫(xiě)入壓縮數(shù)據(jù)包時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021從第二接收臨時(shí)緩沖區(qū)中提取該壓縮數(shù)據(jù)包。
需要說(shuō)明的是,第二發(fā)送臨時(shí)緩沖區(qū)和第二接收臨時(shí)緩沖區(qū)對(duì)應(yīng)著同一個(gè)物理地址,因此第二接收臨時(shí)緩沖區(qū)和第二發(fā)送臨時(shí)緩沖區(qū)的容量值是同步變化的。當(dāng)?shù)诙l(fā)送臨時(shí)緩沖區(qū)的容量值增大時(shí),第二接收臨時(shí)緩沖區(qū)的容量值也同步增大;當(dāng)?shù)诙l(fā)送臨時(shí)緩沖區(qū)容量值減小時(shí),第二接收臨時(shí)緩沖區(qū)的容量值也同步減小。由于第二發(fā)送臨時(shí)緩沖區(qū)和第二接收臨時(shí)緩沖區(qū)對(duì)應(yīng)著同一個(gè)物理地址,因此,當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216將壓縮數(shù)據(jù)包緩存至第二發(fā)送臨時(shí)緩沖區(qū)時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216即可在第二接收臨時(shí)緩沖區(qū)中監(jiān)測(cè)到該壓縮數(shù)據(jù)包,提取該壓縮數(shù)據(jù)包。
進(jìn)一步地,當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021從第二接收臨時(shí)緩沖區(qū)中提取到壓縮數(shù)據(jù)包后,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216刪除第二發(fā)送臨時(shí)緩沖區(qū)中緩存的壓縮數(shù)據(jù)包。
進(jìn)一步地,在第二調(diào)制解調(diào)器21和第二應(yīng)用處理器20傳輸數(shù)據(jù)之前,第二應(yīng)用處理器20需要進(jìn)行初始化。第二應(yīng)用處理器20初始化的具體過(guò)程為:當(dāng)?shù)诙?yīng)用處理器20從休眠狀態(tài)進(jìn)入喚醒狀態(tài)時(shí),第二應(yīng)用處理器20的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021向?qū)?yīng)的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216發(fā)送請(qǐng)求消息,以請(qǐng)求第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216為第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021分配一個(gè)用戶標(biāo)識(shí)。需要說(shuō)明的是,在外接設(shè)備200和移動(dòng)終端100中,調(diào)制解調(diào)器的一個(gè)服務(wù)器對(duì)應(yīng)著應(yīng)用處理器的多個(gè)客戶端。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216接收到第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021發(fā)送的請(qǐng)求消息后,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216根據(jù)該請(qǐng)求消息發(fā)送用戶標(biāo)識(shí)給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021成功接收到該用戶標(biāo)識(shí)時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021發(fā)送測(cè)試數(shù)據(jù)包給第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216,其中,該測(cè)試數(shù)據(jù)包中攜帶有用戶標(biāo)識(shí)。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216成功接收到測(cè)試數(shù)據(jù)包時(shí),按照原路返回通知消息給第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)客戶端021成功接收到通知消息時(shí),表明第二應(yīng)用處理器20初始化成功。當(dāng)?shù)诙?yīng)用處理器20初始化成功后,將第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021和第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216中的標(biāo)識(shí)字段的標(biāo)識(shí)設(shè)置為特定標(biāo)識(shí),以表明第二應(yīng)用處理器20初始化成功。需要說(shuō)明的是,在第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021和第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216中,標(biāo)識(shí)字段中存在多個(gè)標(biāo)志位,不同的標(biāo)志位具有不同的含義,如有的標(biāo)志位用于表示第二應(yīng)用處理器的初始化狀態(tài),有的標(biāo)志位表示壓縮標(biāo)識(shí)。
本實(shí)施例通過(guò)當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216偵測(cè)到數(shù)據(jù)傳輸指令時(shí),根據(jù)數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包;壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包;將壓縮數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將壓縮數(shù)據(jù)包發(fā)送給移動(dòng)終端100。實(shí)現(xiàn)了在外接設(shè)備200和移動(dòng)終端100進(jìn)行數(shù)據(jù)傳輸過(guò)程中,將數(shù)據(jù)包進(jìn)行壓縮,以減小待傳輸數(shù)據(jù)包的大小,避免了在外接設(shè)備200和移動(dòng)終端100進(jìn)行數(shù)據(jù)傳輸過(guò)程中,由于所傳輸?shù)臄?shù)據(jù)包過(guò)大,導(dǎo)致數(shù)據(jù)包傳輸失敗的情況出現(xiàn)。
進(jìn)一步地,提出本發(fā)明應(yīng)用于外接設(shè)備200的數(shù)據(jù)傳輸方法第二實(shí)施例。
應(yīng)用于外接設(shè)備200的數(shù)據(jù)傳輸方法第二實(shí)施例與第一實(shí)施例的區(qū)別在于,參照?qǐng)D6,數(shù)據(jù)傳輸方法包括:
步驟s40,計(jì)算待傳輸數(shù)據(jù)包的大小。
若待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值,則步驟s20包括:
步驟s21,壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包,并為壓縮數(shù)據(jù)包添加壓縮標(biāo)識(shí)。
當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216計(jì)算待傳輸數(shù)據(jù)包的大小,并判斷待傳輸數(shù)據(jù)包的大小是否大于預(yù)設(shè)閾值。若待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216則壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。為了讓移動(dòng)終端100區(qū)分壓縮數(shù)據(jù)包和非壓縮數(shù)據(jù)包,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216為壓縮數(shù)據(jù)包添加一個(gè)壓縮標(biāo)識(shí)。具體地,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在壓縮數(shù)據(jù)包的包頭中添加一個(gè)壓縮標(biāo)識(shí),其中,數(shù)據(jù)包的包頭是大小固定的結(jié)構(gòu)體,在包頭結(jié)構(gòu)體中,有個(gè)結(jié)構(gòu)體成員變量包括了壓縮數(shù)據(jù)包的長(zhǎng)度、以及自定義用于表示壓縮數(shù)據(jù)包的壓縮標(biāo)識(shí)。壓縮標(biāo)識(shí)可根據(jù)具體需要而設(shè)置,如可以設(shè)置為9f9f,或者設(shè)置為f9f9等。
需要說(shuō)明的是,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216和第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021中定義有用于數(shù)據(jù)傳輸?shù)膓mi(qualcommmessageinterface)協(xié)議,在qmi協(xié)議中,定義了標(biāo)識(shí)(flag)字段和數(shù)據(jù)(data)字段,其中,data字段用于緩存數(shù)據(jù)包。在data字段中,設(shè)置了數(shù)據(jù)包大小的預(yù)設(shè)閾值??梢岳斫獾氖?,data字段中數(shù)據(jù)包的預(yù)設(shè)閾值可根據(jù)具體需要而設(shè)置,如可設(shè)置為8個(gè)字節(jié),或者12個(gè)字節(jié)等。
進(jìn)一步地,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216計(jì)算待傳輸數(shù)據(jù)包大小的具體過(guò)程為:解析待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包的包頭,從包頭中獲取待傳輸數(shù)據(jù)包的大小。其中,待傳輸數(shù)據(jù)包為tlv格式,tlv格式是ber(basicencodingrules,基本編碼規(guī)則)編碼的一種,全稱(chēng)為type(類(lèi)型),length(長(zhǎng)度),value(值),t字段表示待傳輸數(shù)據(jù)包的類(lèi)型,l字段表示待傳輸數(shù)據(jù)包的長(zhǎng)度,即數(shù)據(jù)包的大小,v字段用來(lái)存放待傳輸數(shù)據(jù)包的內(nèi)容。
進(jìn)一步地,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在對(duì)壓縮數(shù)據(jù)包進(jìn)行封包操作時(shí)添加壓縮標(biāo)識(shí),封包就是給一段數(shù)據(jù)加上包頭,使數(shù)據(jù)包分為包頭和包體兩部分內(nèi)容。包頭是大小固定的結(jié)構(gòu)體,在包頭結(jié)構(gòu)體中,有個(gè)結(jié)構(gòu)體成員變量包括拆分后子數(shù)據(jù)包的長(zhǎng)度、以及自定義的,用于標(biāo)識(shí)壓縮數(shù)據(jù)包的壓縮標(biāo)識(shí)。
步驟s50,若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,則將待傳輸數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將待傳輸數(shù)據(jù)包發(fā)送給移動(dòng)終端100。
若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216則不壓縮待傳輸數(shù)據(jù)包,直接將待傳輸數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將待傳輸數(shù)據(jù)包發(fā)送給移動(dòng)終端100。
需要說(shuō)明的是,若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,可為該帶傳輸數(shù)據(jù)包添加一個(gè)與壓縮標(biāo)識(shí)不一樣的標(biāo)識(shí)信息,也可不為待傳輸數(shù)據(jù)包添加標(biāo)識(shí)。因?yàn)閴嚎s數(shù)據(jù)包中已存在壓縮標(biāo)識(shí),即使不為待傳輸數(shù)據(jù)包添加標(biāo)識(shí)信息,移動(dòng)終端100根據(jù)壓縮標(biāo)識(shí)即可區(qū)分出壓縮數(shù)據(jù)包和待傳輸數(shù)據(jù)包。
本實(shí)施例通過(guò)先計(jì)算待傳輸數(shù)據(jù)包大小,只有當(dāng)待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值時(shí),才壓縮待傳輸數(shù)據(jù)包,防止當(dāng)待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值時(shí)也對(duì)待傳輸數(shù)據(jù)包進(jìn)行壓縮操作,從而造成系統(tǒng)資源的浪費(fèi),并降低了數(shù)據(jù)傳輸?shù)乃俾省?/p>
進(jìn)一步地,提出本發(fā)明應(yīng)用于外接設(shè)備200的數(shù)據(jù)傳輸方法第三實(shí)施例。
應(yīng)用于外接設(shè)備200的數(shù)據(jù)傳輸方法第三實(shí)施例與第一和/或第二實(shí)施例的區(qū)別在于,參照?qǐng)D7,步驟s20包括:
步驟s21,獲取待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本,計(jì)算源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段。
步驟s22,在預(yù)設(shè)字典列表中查找字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)字符段的長(zhǎng)度。
步驟s23,將編碼替換對(duì)應(yīng)的字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包時(shí),解析待傳輸數(shù)據(jù)包,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本,并計(jì)算源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段。當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216計(jì)算出出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在預(yù)設(shè)字典列表中查找與該字符段對(duì)應(yīng)的編碼,將所查找到的編碼替換待傳輸數(shù)據(jù)包中對(duì)應(yīng)的字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。其中,字符段對(duì)應(yīng)編碼的長(zhǎng)度小于對(duì)應(yīng)字符段的長(zhǎng)度。預(yù)設(shè)次數(shù)可根據(jù)具體需要而設(shè)置,如可設(shè)置為2次、3次或者5次等。預(yù)設(shè)字典列表為第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216中預(yù)先存儲(chǔ)。可以理解的是,在編碼過(guò)程中,不對(duì)源文本中出現(xiàn)次數(shù)小于或者等于預(yù)設(shè)次數(shù)的字符段進(jìn)行處理。
具體地,在本實(shí)施例中,所涉及的壓縮算法為字典算法。字典算法是把源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的單詞或詞匯組合做成一個(gè)對(duì)應(yīng)的字典列表,并用特殊代碼來(lái)表示這個(gè)單詞或詞匯,例如,若當(dāng)前的字典列表為:00=chinese;01=i。若待傳輸數(shù)據(jù)包中的源文本為:iamachinesepeople,ihaveachinesefriend。則通過(guò)字典算法壓縮待傳輸數(shù)據(jù)包后所得的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:01ama00people,01havea00friend。因此,相對(duì)于待傳輸數(shù)據(jù)包,壓縮數(shù)據(jù)包的長(zhǎng)度顯著縮小,若在專(zhuān)有名詞或者固定組合內(nèi)容較多的待傳輸數(shù)據(jù)包中,壓縮效果十分顯著。移動(dòng)終端100在解壓縮過(guò)程中,執(zhí)行反向還原即可。
進(jìn)一步地,獲取待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本的步驟之后,數(shù)據(jù)傳輸方法還包括:
步驟a,確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段。
步驟b,若源文本中存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段,則確定前后連續(xù)兩個(gè)字符段之間的距離以及字符段的長(zhǎng)度。
步驟c,確定距離對(duì)應(yīng)的距離標(biāo)識(shí)和長(zhǎng)度對(duì)應(yīng)的長(zhǎng)度標(biāo)識(shí)。
步驟d,將距離標(biāo)識(shí)和長(zhǎng)度標(biāo)識(shí)替換連續(xù)兩個(gè)字符段中的后一個(gè)字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
進(jìn)一步地,當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包的源文本時(shí),確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段。若待傳輸數(shù)據(jù)包的源文本中存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216則確定前后連續(xù)兩個(gè)字符段之間的距離以及對(duì)應(yīng)字符段的長(zhǎng)度,即確定后一個(gè)字符段與前一個(gè)字符段的距離以及這兩個(gè)字符段的長(zhǎng)度,確定該距離對(duì)應(yīng)的距離標(biāo)識(shí)和長(zhǎng)度對(duì)應(yīng)的長(zhǎng)度標(biāo)識(shí),將距離標(biāo)識(shí)和長(zhǎng)度標(biāo)識(shí)替換連續(xù)兩個(gè)字符段中的后一個(gè)字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。其中,預(yù)設(shè)長(zhǎng)度可根據(jù)具體需要而設(shè)置,如可設(shè)置為2個(gè)字節(jié),或者3個(gè)字節(jié)等。
該過(guò)程涉及的算法為lz77(由jacobziv和abrahamlempel于1977年提出,所以命名為lz77)算法。
lz77算法的壓縮原理為:如果數(shù)據(jù)包中有兩塊字符串內(nèi)容相同的話,那么只要知道前一塊字符串內(nèi)容的位置和大小,就可以確定后一塊字符串的內(nèi)容。因此可以用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容。由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,因此數(shù)據(jù)包的大小會(huì)比原始未處理的數(shù)據(jù)包要小,即數(shù)據(jù)包得到了壓縮。
如有一個(gè)數(shù)據(jù)包的內(nèi)容為:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的內(nèi)容,前面已經(jīng)出現(xiàn)過(guò)了,后面用()括起來(lái)的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。使用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容,得到http://jiurl.yeah.net(22,13)nease(23,4)。(22,13)中,22表示后一塊http://jiurl.與前一塊http://jiurl.中任意兩個(gè)相同字符之間的距離,如后一個(gè)h與前一個(gè)h的距離;13為相同內(nèi)容的長(zhǎng)度;(23,4)同理,此處不再贅述。
具體地,在使用lz77算法過(guò)程中,通過(guò)滑動(dòng)窗口尋找匹配的字符串。即在lz77算法中,使用"滑動(dòng)窗口"的方法來(lái)尋找數(shù)據(jù)包中的相同部分的內(nèi)容,在此,將數(shù)據(jù)包中內(nèi)容相同的部分稱(chēng)為匹配串。首先,對(duì)匹配串做一個(gè)說(shuō)明,匹配串是指一個(gè)任意字節(jié)的序列,不僅僅是可以在數(shù)據(jù)包源文本中顯示出來(lái)的那些字節(jié)的序列,還可以是包括標(biāo)點(diǎn)符號(hào)的序列。這里的串強(qiáng)調(diào)的是它在文件中的位置,它的長(zhǎng)度隨著匹配的情況而變化。
具體地:lz77從數(shù)據(jù)包的起點(diǎn)處開(kāi)始,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。在本發(fā)明實(shí)施例中,滑動(dòng)窗口的長(zhǎng)度是固定的,該滑動(dòng)窗口的終止位置在當(dāng)前處理字節(jié)之前,并且緊挨著當(dāng)前處理字節(jié),隨著處理的字節(jié)不斷的向后滑動(dòng),就像在陽(yáng)光下,飛機(jī)的影子滑過(guò)大地一樣。對(duì)于數(shù)據(jù)包中的每個(gè)字節(jié),用當(dāng)前處理字節(jié)開(kāi)始的串,和窗口中的每個(gè)串進(jìn)行匹配,以尋找最長(zhǎng)的匹配串。
窗口中的每個(gè)串指窗口中每個(gè)字節(jié)開(kāi)始的串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就用(之間的距離,匹配長(zhǎng)度)這樣一對(duì)信息,來(lái)替換當(dāng)前串,然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就不做改動(dòng)的輸出當(dāng)前處理字節(jié)。
處理數(shù)據(jù)包中第一個(gè)字節(jié)的時(shí)候,窗口在當(dāng)前處理字節(jié)之前,也就是還沒(méi)有滑到數(shù)據(jù)包上,這時(shí)窗口中沒(méi)有任何內(nèi)容,被處理的字節(jié)就會(huì)不做改動(dòng)的輸出。隨著處理的不斷向后,窗口越來(lái)越多的滑入數(shù)據(jù)包,最后整個(gè)窗口滑入數(shù)據(jù)包,然后整個(gè)窗口在數(shù)據(jù)包上向后滑動(dòng),直到整個(gè)數(shù)據(jù)包結(jié)束。
需要說(shuō)明的是,匹配串的長(zhǎng)度有所限制。在本實(shí)施例中,設(shè)置了最小匹配串和最大匹配串,必須限制通過(guò)滑動(dòng)窗口匹配出來(lái)的字符串大于該最小匹配串并且小于該最大匹配串,才會(huì)進(jìn)行壓縮,若是匹配出來(lái)的字符串小于該最小匹配串,或大于該最大匹配串,則不會(huì)進(jìn)行后續(xù)的壓縮操作。
如數(shù)據(jù)包的源文本為:aaababaaac,當(dāng)前有一個(gè)6個(gè)字符的滑動(dòng)窗口,表示滑動(dòng)窗口中一次性最多包含6個(gè)字符。
編碼的第一步:滑動(dòng)窗口是一個(gè)空窗口,此時(shí)滑動(dòng)窗口還不需要滑動(dòng),將滑動(dòng)窗口與滑動(dòng)窗口外的源文本第一位字符進(jìn)行比對(duì),發(fā)現(xiàn)不存在匹配的字符,此時(shí)將滑動(dòng)窗口往右移動(dòng)一位,也就是將滑動(dòng)窗口從右滑入源文本,那么源文本的首字母進(jìn)入該滑動(dòng)窗口,此時(shí)滑動(dòng)窗口顯示字符a;
編碼的第二步:由于滑動(dòng)窗口內(nèi)部只有字符a,滑動(dòng)窗口外緊接著出現(xiàn)字符a,雖然滑動(dòng)窗口里面和外面存在匹配的字符a,但是為了保證字符編碼的效率,事先設(shè)置最小匹配串,如將最小匹配串設(shè)置為2個(gè)字符,由于此時(shí)只有一個(gè)字符a匹配,不符合要求,那么滑動(dòng)窗口保持不動(dòng),將處理的字符往右移動(dòng)一位,即與滑動(dòng)窗口進(jìn)行比對(duì)的字符就是aa,此時(shí)滑動(dòng)窗口內(nèi)只有一個(gè)字符a,因此,不存在匹配的字符,那么將該滑動(dòng)窗口繼續(xù)向右滑動(dòng),那么文本字符串的第二個(gè)字符也進(jìn)入滑動(dòng)窗口,此時(shí)滑動(dòng)窗口中出現(xiàn)了兩個(gè)一樣的字符a。
編碼的第三步:當(dāng)滑動(dòng)窗口內(nèi)部存在兩個(gè)相同的字符a時(shí),將滑動(dòng)窗口內(nèi)部的兩個(gè)字符a與窗口外的字符進(jìn)行比對(duì),由于滑動(dòng)窗口外緊接著的兩個(gè)字符是ab,不匹配,因此滑動(dòng)窗口繼續(xù)右滑,當(dāng)滑動(dòng)窗口滑動(dòng)出現(xiàn)aaa時(shí),滑動(dòng)窗口外緊接著出現(xiàn)的字符是bab,與滑動(dòng)窗口內(nèi)的字符不匹配,那么滑動(dòng)窗口繼續(xù)向右滑動(dòng),以使得滑動(dòng)窗口內(nèi)部出現(xiàn)aaab,此時(shí),由于滑動(dòng)窗口內(nèi)部的字符ab與滑動(dòng)窗口外部緊接著的字符ab匹配,認(rèn)為找到了相似長(zhǎng)度為2的ab,因此滑動(dòng)窗口外的ab滿足最小匹配串的要求,因此一對(duì)〈長(zhǎng)度,距離〉就被輸出了,長(zhǎng)度(length)是2并且向后距離也是2,所以輸出為<2,2>。
編碼的第四步:當(dāng)后一個(gè)字符串a(chǎn)b用<2,2>輸出之后,該段字符串就相當(dāng)于刪除了,此時(shí)將滑動(dòng)窗口與剩下的源文本進(jìn)行比對(duì),剩下的源文本為aaac,通過(guò)該滑動(dòng)窗口比對(duì)時(shí),在將aaac中的前兩個(gè)aa與滑動(dòng)窗口進(jìn)行比對(duì)時(shí),雖然aa與滑動(dòng)窗口出現(xiàn)相同內(nèi)容和長(zhǎng)度的字符,并且符合最小字符串,但是為了提高壓縮效率,會(huì)繼續(xù)判斷源文本后面是否還有匹配的字符串,若此時(shí)檢測(cè)到出還有一個(gè)字符a,即剛好有字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)的三個(gè)字符a相同,那么確定剩下的字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)aaa的距離以及相同字符串的長(zhǎng)度,此時(shí)由于刪除了原本字符串中的后一個(gè)ab,因此aaa與滑動(dòng)窗口內(nèi)aaa的距離是4,相同的內(nèi)容長(zhǎng)度是3,可輸出<4,3>。
編碼的第五步:輸出<4,3>之后,該源文本中還需要處理的字符只有c,由于該滑動(dòng)窗口中的字符是aaab,不匹配,因此滑動(dòng)窗口向右滑動(dòng)一位,將字符c也滑進(jìn)該滑動(dòng)窗口,那么滑動(dòng)窗口內(nèi)的字符就為aaabc。由于后續(xù)沒(méi)有內(nèi)容需要處理,那么將該滑動(dòng)窗口內(nèi)的所有字符都輸出,最終得到的編碼串為aaab<2,2><4,3>c。
為了在解壓縮時(shí),可以區(qū)分“沒(méi)有匹配的字節(jié)”和“(之間的距離,匹配長(zhǎng)度)對(duì)”,還需要在每個(gè)“沒(méi)有匹配的字節(jié)”或者“(之間的距離,匹配長(zhǎng)度)對(duì)”之前,放上一位,來(lái)指明是“沒(méi)有匹配的字節(jié)”,還是“(之間的距離,匹配長(zhǎng)度)對(duì)”。本發(fā)明實(shí)施例中,可選用0表示“沒(méi)有匹配的字節(jié)”,用1表示“(之間的距離,匹配長(zhǎng)度)對(duì)”。
實(shí)際應(yīng)用中,固定(之間的距離,匹配長(zhǎng)度)對(duì)中的,“之間的距離”和“匹配長(zhǎng)度”所使用的位數(shù)。由于要固定“之間的距離”所使用的位數(shù),所以才使用了固定大小的窗口,比如窗口的大小為32kb,那么用15位(2^15=32k)就可以保存0-32k范圍內(nèi)的任何一個(gè)值。此外,還將限定最大的匹配長(zhǎng)度,這樣一來(lái),“匹配長(zhǎng)度”所使用的位數(shù)也就固定了。
實(shí)際應(yīng)用中,還將設(shè)定一個(gè)最小匹配長(zhǎng)度,只有當(dāng)兩個(gè)串的匹配長(zhǎng)度大于最小匹配長(zhǎng)度時(shí),才認(rèn)為是一個(gè)匹配。為更好理解,舉一個(gè)例子來(lái)說(shuō)明這樣做的原因:比如,“距離”使用15位,“長(zhǎng)度”使用8位,那么“(之間的距離,匹配長(zhǎng)度)對(duì)”將使用23位,也就是差1位3個(gè)字節(jié)。如果匹配長(zhǎng)度小于3個(gè)字節(jié)的話,那么用“(之間的距離,匹配長(zhǎng)度)對(duì)”進(jìn)行替換的話,不但沒(méi)有壓縮,反而會(huì)增大,所以需要一個(gè)最小匹配長(zhǎng)度。
使用lz77算法進(jìn)行壓縮的過(guò)程為:從數(shù)據(jù)包的起點(diǎn)到數(shù)據(jù)包的終點(diǎn),即從數(shù)據(jù)包的開(kāi)始到數(shù)據(jù)包的結(jié)束,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。用當(dāng)前處理字節(jié)開(kāi)始的串,和滑動(dòng)窗口中的每個(gè)串進(jìn)行匹配,尋找最長(zhǎng)的匹配串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),然后輸出(之間的距離,匹配長(zhǎng)度)對(duì),然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)沒(méi)有改動(dòng)的字節(jié),然后不做改動(dòng)的輸出當(dāng)前處理字節(jié),然后繼續(xù)處理當(dāng)前處理字節(jié)的下一個(gè)字節(jié)。
使用lz77算法進(jìn)行解壓縮的過(guò)程為:從數(shù)據(jù)包的起點(diǎn)到數(shù)據(jù)包的終點(diǎn),每次先讀一位標(biāo)志位,通過(guò)這個(gè)標(biāo)志位來(lái)判斷下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),還是一個(gè)沒(méi)有改動(dòng)的字節(jié)。如果是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),就讀出固定位數(shù)的(之間的距離,匹配長(zhǎng)度)對(duì),然后根據(jù)對(duì)中的信息,將匹配串輸出到當(dāng)前位置。如果是一個(gè)沒(méi)有改動(dòng)的字節(jié),就讀出一個(gè)字節(jié),然后輸出這個(gè)字節(jié)。
綜上,可以看出,lz77壓縮時(shí)需要做大量的匹配工作,而解壓縮時(shí)需要做的工作很少,也就是說(shuō)解壓縮相對(duì)于壓縮將快的多,這對(duì)于需要進(jìn)行一次壓縮,多次解壓縮的情況,是一個(gè)效果顯著的優(yōu)點(diǎn)。
進(jìn)一步地,還可采用固定位長(zhǎng)算法(fixedbitlengthpacking)壓縮待傳輸數(shù)據(jù)包,具體過(guò)程為:當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包的源文本時(shí),依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段,再將任兩個(gè)字符段的高四位進(jìn)行刪除,并將任兩個(gè)字符段的低四位進(jìn)行組合,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
如:八個(gè)十六進(jìn)制數(shù):1,2,3,4,5,6,7,8,轉(zhuǎn)換為二進(jìn)制為:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每個(gè)數(shù)只用到了低4位,而高4位沒(méi)有用到(全為0),因此對(duì)低4位進(jìn)行壓縮編碼后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后兩兩補(bǔ)充為8位字節(jié)得到:00010010,001100,010110,011000。因此原來(lái)的八個(gè)十六進(jìn)制數(shù)縮短了一半,得到4個(gè)十六進(jìn)制數(shù):12,34,56,78。
可以理解的是,采用固定位長(zhǎng)算法壓縮待傳輸數(shù)據(jù)包,將需要用到的位數(shù)進(jìn)行了縮小,使得壓縮所得的壓縮數(shù)據(jù)包的容量有所減小,同理,解壓時(shí)執(zhí)行反向拆分添加組合即可。
進(jìn)一步地,還可采用rle(runlengthencoding,游程編碼,又譯行程長(zhǎng)度編碼)算法壓縮待傳輸數(shù)據(jù)包,具體過(guò)程為:當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216獲取到待傳輸數(shù)據(jù)包的源文本時(shí),確定源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。rle算法是一種變長(zhǎng)的編碼,rle算法根據(jù)文本不同的具體情況會(huì)有不同的壓縮編碼變體與之相適應(yīng),以產(chǎn)生更大的壓縮比率。下面具體介紹各種變體。
變體1:重復(fù)次數(shù)加上對(duì)應(yīng)的字符。如待傳輸數(shù)據(jù)包的源文本為:aaabbbccccdddd,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:3a3b4c4d。通過(guò)變體1算法,即可將待傳輸數(shù)據(jù)包文本字符串進(jìn)行壓縮。
變體2:特殊字符加上重復(fù)次數(shù)和字符。如待傳輸數(shù)據(jù)包的源文本為:aaaaabccccbccc,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:bb5abb4cbb3c;其中,該編碼串的最開(kāi)始說(shuō)明特殊字符為b,然后再添加一個(gè)b,b后面跟著的數(shù)字就表示出重復(fù)的次數(shù)。也就是說(shuō),源文本采用該變體2算法進(jìn)行編碼壓縮時(shí),先在編碼后的編碼串的首字母說(shuō)明特殊字符為b,然后由于后面緊接著出現(xiàn)5個(gè)字符a,需要在這5個(gè)字符a之前添加一個(gè)特殊字符即字符b,因此就是bb5a,在5a之后出現(xiàn)b,且b之后又出現(xiàn)4個(gè)c,因此,需要在4個(gè)c之前再添加一個(gè)特殊字符b,與前面連接起來(lái)就是bb5abb4c,后面采用同樣的方式,即可得到最終的編碼串bb5abb4cbb3c。如待傳輸數(shù)據(jù)包的源文本為:aaaaabccccbccc,若編碼串的最開(kāi)始說(shuō)明特殊字符為d,那么,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:dd5abd4cbd3c。由此可知,壓縮過(guò)程中編碼串的特殊字符可根據(jù)具體需要而設(shè)置。
變體3:把源文本每個(gè)字節(jié)分組成塊,每個(gè)字符最多重復(fù)127次。每個(gè)塊以一個(gè)特殊字節(jié)開(kāi)頭。那個(gè)特殊字節(jié)的第7位如果被置位,那么剩下的7位數(shù)值就是后面的字符的重復(fù)次數(shù);如果第7位沒(méi)有被置位,那么剩下7位就是后面沒(méi)有被壓縮的字符的數(shù)量。如待傳輸數(shù)據(jù)包的源文本為:aaaaabcdefff,編碼后得到的壓縮數(shù)據(jù)包對(duì)應(yīng)的源文本為:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先將源文本分組成三個(gè)塊,分別是aaaaa、bcde和fff,三個(gè)塊對(duì)應(yīng)的特殊字符分別是10000101、00000100和10000011,由于10000101中第7位被置位為1,因此剩下的7位數(shù)值為后面的字符的重復(fù)次數(shù),此時(shí)可知剩下的7位數(shù)值對(duì)應(yīng)的值為5,即可得到85a;同理,由于00000100中的第7位沒(méi)有被置位為1,那么剩下7位是后面沒(méi)有被壓縮的字符的數(shù)量,可知此時(shí)剩下7位對(duì)應(yīng)的值為4,即可得到4bcde;同理可確定83f,此處不在贅述。
需要說(shuō)明的是,以上所列舉出的三種3種rle變體算法僅僅是較佳的幾種變體算法,本領(lǐng)域技術(shù)人員利用本發(fā)明的技術(shù)思想,根據(jù)其具體需求所提出的其它rle變體算法均在本發(fā)明的保護(hù)范圍內(nèi),在此不進(jìn)行一一列舉。
本實(shí)施例通過(guò)壓縮算法壓縮待傳輸數(shù)據(jù)包,實(shí)現(xiàn)外接設(shè)備200和移動(dòng)終端100之間的大數(shù)據(jù)包傳輸問(wèn)題,同時(shí)避免了將待傳輸數(shù)據(jù)包拆分成多個(gè)子數(shù)據(jù)包,在傳輸子數(shù)據(jù)包過(guò)程時(shí),由于某個(gè)子數(shù)據(jù)包丟失,從而導(dǎo)致數(shù)據(jù)傳輸失敗的情況。
需要說(shuō)明的是,本實(shí)施例是以外接設(shè)備200為發(fā)送端,移動(dòng)終端100為接收端為例來(lái)說(shuō)明外接設(shè)備200和移動(dòng)終端100之間的數(shù)據(jù)傳輸過(guò)程。在其它實(shí)施例中,也可以將移動(dòng)終端100作為發(fā)送端,外接設(shè)備200作為接收端來(lái)說(shuō)明外接設(shè)備200和移動(dòng)終端100之間的數(shù)據(jù)傳輸過(guò)程??梢岳斫獾氖牵苿?dòng)終端100作為發(fā)送端,外接設(shè)備200作為接收端與移動(dòng)終端100作為接收端,外接設(shè)備200作為發(fā)送端的數(shù)據(jù)傳輸原理一致,在此不再贅述。
本發(fā)明還提供一種應(yīng)用于移動(dòng)終端100的數(shù)據(jù)傳輸方法。
參照?qǐng)D8,圖8為本發(fā)明應(yīng)用于移動(dòng)終端100的數(shù)據(jù)傳輸方法較佳實(shí)施例的流程示意圖。
在本實(shí)施例中,提供了數(shù)據(jù)傳輸方法的實(shí)施例,需要說(shuō)明的是,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
數(shù)據(jù)傳輸方法應(yīng)用于通過(guò)usb與外接設(shè)備200連接的移動(dòng)終端100中,移動(dòng)終端100包括內(nèi)嵌有虛擬用戶識(shí)別卡13的第一應(yīng)用處理器10,以及與實(shí)體用戶識(shí)別卡14連接的第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11包括第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116,第一應(yīng)用處理器10包括第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012和與第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116連接的第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011。外接設(shè)備200包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器21,第二調(diào)制解調(diào)器21包括第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216,第二應(yīng)用處理器20包括第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022和與第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216連接的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。數(shù)據(jù)傳輸方法包括:
步驟s110,當(dāng)?shù)谝粩?shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012接收到外接設(shè)備200第二應(yīng)用處理器20發(fā)送的壓縮數(shù)據(jù)包時(shí),獲取壓縮數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí)。
步驟s120,若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待處理數(shù)據(jù)包,則解壓縮壓縮數(shù)據(jù)包,得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。
步驟s130,若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,則將壓縮數(shù)據(jù)包轉(zhuǎn)發(fā)給第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011,以供第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011將壓縮數(shù)據(jù)包發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116,由第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116在接收到壓縮數(shù)據(jù)包時(shí),解壓縮壓縮數(shù)據(jù)包,得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。
當(dāng)外接設(shè)備200的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在獲取到待傳輸數(shù)據(jù)包,不考慮待傳輸數(shù)據(jù)包的大小,直接壓縮待傳輸數(shù)據(jù)包,將壓縮所得的壓縮數(shù)據(jù)包發(fā)送給移動(dòng)終端100時(shí),移動(dòng)終端100接收到外接設(shè)備200發(fā)送的壓縮數(shù)據(jù)包的處理過(guò)程如下:
當(dāng)移動(dòng)終端100第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012接收到外接設(shè)備200第二應(yīng)用處理器20發(fā)送的壓縮數(shù)據(jù)包時(shí),獲取壓縮數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí),根據(jù)類(lèi)別標(biāo)識(shí)判斷壓縮數(shù)據(jù)包的類(lèi)型。若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待處理數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012則按照與外接設(shè)備200壓縮待傳輸數(shù)據(jù)包對(duì)應(yīng)的解壓縮方法解壓縮壓縮數(shù)據(jù)包,以得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包,實(shí)現(xiàn)外接設(shè)備200和移動(dòng)終端100之間的數(shù)據(jù)傳輸。
若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012將所接收的壓縮數(shù)據(jù)包轉(zhuǎn)發(fā)給第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011。第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011在接收到壓縮數(shù)據(jù)包后,將壓縮數(shù)據(jù)包發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116。當(dāng)?shù)谝粩?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116接收到壓縮數(shù)據(jù)包時(shí),解壓縮所接收的壓縮數(shù)據(jù)包,以得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包??梢岳斫獾氖?,與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包為外接設(shè)備中的待傳輸數(shù)據(jù)包。
若第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012所接收的待傳輸數(shù)據(jù)包為待處理數(shù)據(jù)包,且需要從虛擬用戶識(shí)別卡13中獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012在虛擬用戶識(shí)別卡13中獲取數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包。需要說(shuō)明的是,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012從虛擬用戶識(shí)別卡13中獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包過(guò)程中,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012不會(huì)直接與虛擬用戶識(shí)別卡13中的存儲(chǔ)模塊交互,而是先向虛擬用戶識(shí)別卡13中的虛擬片內(nèi)操作系統(tǒng)發(fā)送數(shù)據(jù)獲取請(qǐng)求,然后虛擬用戶識(shí)別卡13中的虛擬片內(nèi)操作系統(tǒng)基于該數(shù)據(jù)獲取請(qǐng)求在存儲(chǔ)模塊中獲取數(shù)據(jù),然后將獲取的數(shù)據(jù)再傳輸給第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012。
需要說(shuō)明的是,類(lèi)別標(biāo)識(shí)用于區(qū)分?jǐn)?shù)據(jù)包的類(lèi)型。在本實(shí)施例中,數(shù)據(jù)包的類(lèi)型包括兩種,一種是不需要發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116的,需要第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012進(jìn)行處理的待處理數(shù)據(jù)包,另一種是需要發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116待轉(zhuǎn)發(fā)數(shù)據(jù)包。類(lèi)別標(biāo)識(shí)可根據(jù)具體需要而設(shè)置,如當(dāng)類(lèi)別標(biāo)識(shí)為00時(shí),表明該數(shù)據(jù)包為待處理數(shù)據(jù)包;當(dāng)類(lèi)別標(biāo)識(shí)為01時(shí),表明該數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包。
需要說(shuō)明的是,第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011中有第一發(fā)送臨時(shí)緩沖區(qū),對(duì)應(yīng)的,第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116中有第一接收臨時(shí)緩沖區(qū)。第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116與第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011之間的數(shù)據(jù)傳輸過(guò)程和第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216與第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021之間的數(shù)據(jù)傳輸過(guò)程相類(lèi)似,在此不再贅述。
進(jìn)一步地,當(dāng)?shù)谝粩?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116接收到待傳輸數(shù)據(jù)包時(shí),將待傳輸數(shù)據(jù)包通過(guò)第一攔截模塊115、遠(yuǎn)程sim數(shù)據(jù)訪問(wèn)server114和第一sim卡模塊代理113發(fā)送給uim驅(qū)動(dòng)112,uim驅(qū)動(dòng)112根據(jù)待傳輸數(shù)據(jù)包從實(shí)體用戶識(shí)別卡14獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)待傳輸數(shù)據(jù)包,得到響應(yīng)數(shù)據(jù)包,并將響應(yīng)數(shù)據(jù)包按原路返回給外接設(shè)備200。uim驅(qū)動(dòng)112根據(jù)待傳輸數(shù)據(jù)包從實(shí)體用戶識(shí)別卡14獲取對(duì)應(yīng)的數(shù)據(jù)響應(yīng)該待傳輸數(shù)據(jù)包過(guò)程中,uim驅(qū)動(dòng)112不會(huì)直接與實(shí)體用戶識(shí)別卡14中的文件存儲(chǔ)模塊交互,而是先向?qū)嶓w用戶識(shí)別卡14中的cos(chipoperatingsystem,片內(nèi)操作系統(tǒng))操作系統(tǒng)發(fā)送數(shù)據(jù)獲取請(qǐng)求,然后實(shí)體用戶識(shí)別卡14的cos操作系統(tǒng)基于該數(shù)據(jù)獲取請(qǐng)求在文件存儲(chǔ)模塊中獲取數(shù)據(jù),然后將獲取的數(shù)據(jù)再傳輸給uim驅(qū)動(dòng)112,以實(shí)現(xiàn)待傳輸數(shù)據(jù)包的響應(yīng)。
本實(shí)施例當(dāng)移動(dòng)終端100接收到外接設(shè)備200發(fā)送的數(shù)據(jù)包時(shí),按照與外接設(shè)備200壓縮待傳輸數(shù)據(jù)包對(duì)應(yīng)的解壓縮算法解壓縮所接收的壓縮數(shù)據(jù)包,以得到壓縮數(shù)據(jù)包對(duì)應(yīng)的待傳輸數(shù)據(jù)包,使外接設(shè)備200和移動(dòng)終端100成功傳輸大數(shù)據(jù)包。
進(jìn)一步地,當(dāng)外接設(shè)備200的第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216在獲取到待傳輸數(shù)據(jù)包時(shí),先判斷待傳輸數(shù)據(jù)包的大小是否大于預(yù)設(shè)閾值,只有在待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值時(shí),第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216才壓縮待傳輸數(shù)據(jù),得到壓縮數(shù)據(jù)包,并在壓縮數(shù)據(jù)包的包頭中添加壓縮標(biāo)識(shí),將含有壓縮標(biāo)識(shí)的壓縮數(shù)據(jù)包通過(guò)第二應(yīng)用處理器20發(fā)送給移動(dòng)終端100;若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216則通過(guò)第二應(yīng)用處理器20直接將待傳輸數(shù)據(jù)包發(fā)送給移動(dòng)終端100。此時(shí),移動(dòng)終端100接收到第二應(yīng)用處理器20發(fā)送的數(shù)據(jù)包的處理過(guò)程如下:
當(dāng)移動(dòng)終端100的第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012接收到第二應(yīng)用處理器20的第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022發(fā)送給的數(shù)據(jù)包時(shí),第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012獲取數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí),并根據(jù)類(lèi)別標(biāo)識(shí)判斷所接收數(shù)據(jù)包的類(lèi)型。若根據(jù)類(lèi)別標(biāo)識(shí)確定所接收的數(shù)據(jù)包為待處理數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012則檢測(cè)所接收的數(shù)據(jù)包的包頭中是否含有壓縮標(biāo)識(shí)。若所接收的數(shù)據(jù)包包頭中含有壓縮標(biāo)識(shí),則表明所接收的數(shù)據(jù)包為壓縮數(shù)據(jù)包,第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022對(duì)所接收的數(shù)據(jù)包進(jìn)行解壓縮操作,以得到與所接收的數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。若所接收的數(shù)據(jù)包包頭中未含有壓縮標(biāo)識(shí),則表明該數(shù)據(jù)包未被壓縮過(guò),第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012根據(jù)所接收的數(shù)據(jù)包執(zhí)行相應(yīng)的操作,如顯示外接設(shè)備200的信號(hào)強(qiáng)度、電量等。
若根據(jù)類(lèi)別標(biāo)識(shí)確定所接收的數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012則將所接收的數(shù)據(jù)包通過(guò)第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116。當(dāng)?shù)谝粩?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116接收到數(shù)據(jù)包時(shí),第一轉(zhuǎn)發(fā)服務(wù)器檢測(cè)所接收的數(shù)據(jù)包的包頭中是否含有壓縮標(biāo)識(shí)。若所接收的數(shù)據(jù)包包頭中含有壓縮標(biāo)識(shí),第一轉(zhuǎn)發(fā)服務(wù)器則對(duì)所接收的數(shù)據(jù)包進(jìn)行解壓縮操作,以得到與所接收的數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。若所接收的數(shù)據(jù)包包頭中未含有壓縮標(biāo)識(shí),則表明該數(shù)據(jù)包未被壓縮過(guò),直接將所接收的數(shù)據(jù)包發(fā)送給uim驅(qū)動(dòng),以實(shí)現(xiàn)第二調(diào)制解調(diào)器21和第一調(diào)制解調(diào)器11之間的數(shù)據(jù)傳輸。
本實(shí)施例通過(guò)檢測(cè)數(shù)據(jù)包中是否存在壓縮標(biāo)識(shí)來(lái)判斷是否需要執(zhí)行解壓縮數(shù)據(jù)包的操作,提高了移動(dòng)終端100和外接設(shè)備200之間數(shù)據(jù)傳輸?shù)某晒β剩苊饬艘苿?dòng)終端100對(duì)不需要進(jìn)行解壓縮的數(shù)據(jù)包進(jìn)行解壓縮操作。
進(jìn)一步地,本發(fā)明還提供一種外接設(shè)備200,外接設(shè)備200包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器21,第二調(diào)制解調(diào)器21包括第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216,第二應(yīng)用處理器20包括第二數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊022和與第二數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216連接的第二數(shù)據(jù)轉(zhuǎn)發(fā)客戶端021。外接設(shè)備200應(yīng)用于數(shù)據(jù)傳輸方法,數(shù)據(jù)傳輸方法包括:
當(dāng)?shù)诙?shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器216偵測(cè)到數(shù)據(jù)傳輸指令時(shí),根據(jù)數(shù)據(jù)傳輸指令獲取待傳輸數(shù)據(jù)包;
壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包;
將壓縮數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將壓縮數(shù)據(jù)包發(fā)送給移動(dòng)終端100。
進(jìn)一步地,壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包的步驟之前,還包括:
計(jì)算待傳輸數(shù)據(jù)包的大??;
若待傳輸數(shù)據(jù)包的大小大于預(yù)設(shè)閾值,則壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包的步驟包括;
壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包,并為壓縮數(shù)據(jù)包添加壓縮標(biāo)識(shí);
若待傳輸數(shù)據(jù)包的大小小于或者等于預(yù)設(shè)閾值,則將待傳輸數(shù)據(jù)包發(fā)送給第二應(yīng)用處理器20,以供第二應(yīng)用處理器20通過(guò)預(yù)設(shè)接口將待傳輸數(shù)據(jù)包發(fā)送給移動(dòng)終端100。
進(jìn)一步地,壓縮待傳輸數(shù)據(jù)包,得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包的步驟包括:
獲取待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本,計(jì)算源文本中出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字符段;
在預(yù)設(shè)字典列表中查找字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)字符段的長(zhǎng)度;
將編碼替換對(duì)應(yīng)的字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
進(jìn)一步地,獲取待傳輸數(shù)據(jù)包對(duì)應(yīng)的源文本的步驟之后,還包括:
確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段;
若源文本中存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)長(zhǎng)度的字符段,則確定前后連續(xù)兩個(gè)字符段之間的距離以及字符段的長(zhǎng)度;
確定距離對(duì)應(yīng)的距離標(biāo)識(shí)和長(zhǎng)度對(duì)應(yīng)的長(zhǎng)度標(biāo)識(shí);
將距離標(biāo)識(shí)和長(zhǎng)度標(biāo)識(shí)替換連續(xù)兩個(gè)字符段中的后一個(gè)字符段,以得到待傳輸數(shù)據(jù)包對(duì)應(yīng)的壓縮數(shù)據(jù)包。
本發(fā)明外接設(shè)備200具體實(shí)施方式與上述應(yīng)用于外接設(shè)備200的數(shù)據(jù)傳輸方法各實(shí)施例基本相同,在此不再贅述。
進(jìn)一步地,本發(fā)明還提供一種移動(dòng)終端100,移動(dòng)終端100包括內(nèi)嵌有虛擬用戶識(shí)別卡13的第一應(yīng)用處理器10,以及與實(shí)體用戶識(shí)別卡14連接的第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11包括第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116,第一應(yīng)用處理器10包括第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012和與第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116連接的第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011。移動(dòng)終端100應(yīng)用于數(shù)據(jù)傳輸方法,數(shù)據(jù)傳輸方法包括:
當(dāng)?shù)谝粩?shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012接收到外接設(shè)備200第二應(yīng)用處理器20發(fā)送的壓縮數(shù)據(jù)包時(shí),獲取壓縮數(shù)據(jù)包中的類(lèi)別標(biāo)識(shí);
若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待處理數(shù)據(jù)包,則解壓縮壓縮數(shù)據(jù)包,得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包;
若根據(jù)類(lèi)別標(biāo)識(shí)確定壓縮數(shù)據(jù)包為待轉(zhuǎn)發(fā)數(shù)據(jù)包,則將壓縮數(shù)據(jù)包轉(zhuǎn)發(fā)給第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011,以供第一數(shù)據(jù)轉(zhuǎn)發(fā)客戶端011將壓縮數(shù)據(jù)包發(fā)送給第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116,由第一數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)器116在接收到壓縮數(shù)據(jù)包時(shí),解壓縮壓縮數(shù)據(jù)包,得到與壓縮數(shù)據(jù)包對(duì)應(yīng)的未被壓縮的數(shù)據(jù)包。
進(jìn)一步地,第一數(shù)據(jù)讀寫(xiě)轉(zhuǎn)發(fā)模塊012根據(jù)是否在所接收的數(shù)據(jù)包中檢測(cè)到壓縮標(biāo)識(shí)判斷所接收的數(shù)據(jù)包是否為壓縮數(shù)據(jù)包。
本發(fā)明移動(dòng)終端100具體實(shí)施方式與上述應(yīng)用于移動(dòng)終端100的數(shù)據(jù)傳輸方法各實(shí)施例基本相同,在此不再贅述。
需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒(méi)有明確列出的其它要素,或者是還包括為這種過(guò)程、方法、物品或者系統(tǒng)所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者系統(tǒng)中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。