專利名稱:基于北斗和陀螺儀的安卓系統(tǒng)下組合導(dǎo)航數(shù)據(jù)適配方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于北斗和陀螺儀的Android下組合導(dǎo)航數(shù)據(jù)適配的方法,尤其涉及應(yīng)用于雙CPU架構(gòu)下的陀螺儀和android系統(tǒng)的數(shù)據(jù)適配方法。
背景技術(shù):
在傳統(tǒng)的硬件架構(gòu)上,陀螺儀和Android系統(tǒng)的CPU直接連接,這樣必須等到系統(tǒng)初始化完成才能夠讀取到陀螺儀緩存的數(shù)據(jù),讀取到陀螺儀的數(shù)據(jù)非常慢。傳統(tǒng)陀螺儀和CPU的架構(gòu)模式,使得只有系統(tǒng)在初始化開辟了設(shè)備文件后,才能對陀螺儀的數(shù)據(jù)進(jìn)行存儲(chǔ),上層應(yīng)用才能夠讀取到陀螺儀的數(shù)據(jù);這種架構(gòu)雖然通信過程比較簡單,但是并不能快速的獲取到陀螺儀的數(shù)據(jù)。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中問題,本發(fā)明提供了一種基于北斗和陀螺儀的安卓系統(tǒng)(Android)下組合導(dǎo)航數(shù)據(jù)適配方法,
步驟1:采用雙中央處理器架構(gòu)的智能系統(tǒng),第一處理器上集成陀螺儀模塊;
步驟2 :在第一處理器上采集硬件陀螺儀的數(shù)據(jù),進(jìn)行數(shù)據(jù)封裝;
步驟3 :第一處理器通過串口把數(shù)據(jù)發(fā)送給第二處理器,第二處理器的串口代理接收到陀螺儀的數(shù)據(jù);
步驟4 :在第二處理器串口代理上重新打包數(shù)據(jù),并緩存起來;
步驟5 :建立套接字通信socket服務(wù)端,通過socket服務(wù)端把緩存的數(shù)據(jù)傳遞到socket客戶端;
步驟6 =Socket客戶端統(tǒng)發(fā)送請求標(biāo)識(shí)符,獲取陀螺儀模塊的數(shù)據(jù);
步驟7 =Socket客戶端獲取到陀螺儀的數(shù)據(jù),緩存起來;
步驟8 :解析socket客戶端緩存的數(shù)據(jù)再通過回調(diào)函數(shù)把數(shù)據(jù)傳遞給陀螺儀讀取的文件描述符;
步驟9 :通過陀螺儀自身的讀取文件描述符的方式獲取最后的陀螺儀數(shù)據(jù)。作為本發(fā)明的進(jìn)一步改進(jìn),所述第一處理器硬件架構(gòu)上負(fù)責(zé)底層系統(tǒng)一側(cè)的處理器 MCU。作為本發(fā)明的進(jìn)一步改進(jìn),所述第二處理器為硬件架構(gòu)上負(fù)責(zé)Android系統(tǒng)一側(cè)的處理器X86。作為本發(fā)明的進(jìn)一步改進(jìn),MCU側(cè)的陀螺儀模塊數(shù)據(jù)通過UART串口代理發(fā)送給X86側(cè)的Android系統(tǒng)。作為本發(fā)明的進(jìn)一步改進(jìn),在Android系統(tǒng)對硬件抽象層的代碼適配,Android系統(tǒng)上層通過硬件抽象層獲取到陀螺儀的導(dǎo)航數(shù)據(jù)。本發(fā)明的有益效果是在一種新硬件架構(gòu)下,通過在硬件抽象層的數(shù)據(jù)通信適配來解決陀螺儀數(shù)據(jù)從底層到上層的適配方法,并在其中進(jìn)行通信優(yōu)化;快速的獲取到陀螺 儀的數(shù)據(jù)。
圖1是本發(fā)明陀螺儀數(shù)據(jù)傳遞流程圖結(jié)構(gòu)示意 圖2是本發(fā)明封裝規(guī)則示意 圖3是本發(fā)明解析規(guī)則示意圖。圖中的Cache是指數(shù)據(jù)緩存,是一個(gè)數(shù)據(jù)存儲(chǔ)的空間。App是指上層的應(yīng)用軟件。
具體實(shí)施例方式下面是一種實(shí)現(xiàn)本發(fā)明目的的具體實(shí)施方案。本發(fā)明把MCU側(cè)的陀螺儀模塊數(shù)據(jù)通過UART (Universal AsynchronousReceiver/Transmitter,通用異步收發(fā)器)串口代理發(fā)送給X86側(cè)的Android系統(tǒng),在Android系統(tǒng)需要對硬件抽象層(HAL層)的代碼適配,使得系統(tǒng)上層能夠通過HAL層獲取到陀螺儀的導(dǎo)航數(shù)據(jù)。智能系統(tǒng)采用雙CPU架構(gòu),第一為硬件架構(gòu)上負(fù)責(zé)Android系統(tǒng)一側(cè)的處理器X86,Android側(cè)的CPU負(fù)責(zé)系統(tǒng)運(yùn)行;第二為硬件架構(gòu)上負(fù)責(zé)底層系統(tǒng)一側(cè)的處理器MCU,MCU負(fù)責(zé)底層的處理。MCU上集成陀螺儀模塊。MCU和Android通過串口代理通信,Android獲取到MCU側(cè)陀螺儀的數(shù)據(jù)。如圖1所示,在MCU上采集到硬件陀螺儀的數(shù)據(jù),按照一定的數(shù)據(jù)格式進(jìn)行封裝; MCU通過串口把數(shù)據(jù)發(fā)送給X86,X86串口代理接收到陀螺儀的數(shù)據(jù);
在X86串口代理上按照一定的數(shù)據(jù)格式重新打包數(shù)據(jù),并緩存起來;
建立socket服務(wù)端,通過socket服務(wù)端把緩存的數(shù)據(jù)傳遞到socket客戶端;Socket:是指套接字通信,一種通信機(jī)制;
Socket客戶端統(tǒng)發(fā)送請求標(biāo)識(shí)符,獲取陀螺儀模塊的數(shù)據(jù);
Socket客戶端獲取到陀螺儀的數(shù)據(jù),緩存起來;
解析socket客戶端緩存的數(shù)據(jù)再通過回調(diào)函數(shù)把數(shù)據(jù)傳遞給陀螺儀讀取的文件描述
符;
再通過陀螺儀自身的讀取文件描述符的方式獲取最后的陀螺儀數(shù)據(jù)。數(shù)據(jù)的封裝格式和解析規(guī)則如下
封裝規(guī)則如圖2所示,
Head :幀頭,2個(gè)字節(jié),此處為0xa5a5,
Type :通信類型,I個(gè)字節(jié),范圍0x00 0xff ,
Data Length :數(shù)據(jù)長度,I個(gè)字節(jié),即Data的字節(jié)總數(shù),
Data :實(shí)際傳輸?shù)臄?shù)據(jù),長度不定,
CS :校驗(yàn)值,1個(gè)字節(jié),type、data length、data三個(gè)域所有字節(jié)的異或值,實(shí)際中并沒用到校驗(yàn),
End :幀尾,2個(gè)字節(jié),此處為Oxbeef。解析規(guī)則見附圖3所示。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種基于北斗和陀螺儀的安卓系統(tǒng)下組合導(dǎo)航數(shù)據(jù)適配方法,其特征在于步驟1:采用雙中央處理器架構(gòu)的智能系統(tǒng),第一處理器上集成陀螺儀模塊;步驟2 :在第一處理器上采集硬件陀螺儀的數(shù)據(jù),進(jìn)行數(shù)據(jù)封裝;步驟3 :第一處理器通過串口把數(shù)據(jù)發(fā)送給第二處理器,第二處理器的串口代理接收到陀螺儀的數(shù)據(jù);步驟4 :在第二處理器串口代理上重新打包數(shù)據(jù),并緩存起來;步驟5 :建立套接字通信socket服務(wù)端,通過socket服務(wù)端把緩存的數(shù)據(jù)傳遞到 socket客戶端;步驟6 =Socket客戶端統(tǒng)發(fā)送請求標(biāo)識(shí)符,獲取陀螺儀模塊的數(shù)據(jù);步驟7 =Socket客戶端獲取到陀螺儀的數(shù)據(jù),緩存起來;步驟8 :解析socket客戶端緩存的數(shù)據(jù)再通過回調(diào)函數(shù)把數(shù)據(jù)傳遞給陀螺儀讀取的文件描述符;步驟9 :通過陀螺儀自身的讀取文件描述符的方式獲取最后的陀螺儀數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的基于北斗和陀螺儀的安卓系統(tǒng)下組合導(dǎo)航數(shù)據(jù)適配方法,其特征在于所述第一處理器硬件架構(gòu)上負(fù)責(zé)底層系統(tǒng)一側(cè)的處理器MCU。
3.根據(jù)權(quán)利要求1或2所述的基于北斗和陀螺儀的安卓系統(tǒng)下組合導(dǎo)航數(shù)據(jù)適配方法,其特征在于所述第二處理器為硬件架構(gòu)上負(fù)責(zé)Android系統(tǒng)一側(cè)的處理器X86。
4.根據(jù)權(quán)利要求3所述的基于北斗和陀螺儀的安卓系統(tǒng)下組合導(dǎo)航數(shù)據(jù)適配方法,其特征在于MCU側(cè)的陀螺儀模塊數(shù)據(jù)通過UART串口代理發(fā)送給X86側(cè)的Android系統(tǒng)。
5.根據(jù)權(quán)利要求3所述的基于北斗和陀螺儀的安卓系統(tǒng)下組合導(dǎo)航數(shù)據(jù)適配方法,其特征在于在Android系統(tǒng)對硬件抽象層的代碼適配,Android系統(tǒng)上層通過硬件抽象層獲取到陀螺儀的導(dǎo)航數(shù)據(jù)。
全文摘要
本發(fā)明提供了一種基于北斗和陀螺儀的安卓系統(tǒng)下組合導(dǎo)航數(shù)據(jù)適配方法,把MCU側(cè)的陀螺儀模塊數(shù)據(jù)通過UART串口代理發(fā)送給X86側(cè)的Android系統(tǒng),在Android系統(tǒng)需要對硬件抽象層(HAL層)的代碼適配,使得系統(tǒng)上層能夠通過HAL層獲取到陀螺儀的導(dǎo)航數(shù)據(jù)。本發(fā)明在一種新硬件架構(gòu)下,通過在硬件抽象層的數(shù)據(jù)通信適配來解決陀螺儀數(shù)據(jù)從底層到上層的適配方法,并在其中進(jìn)行通信優(yōu)化;快速的獲取到陀螺儀的數(shù)據(jù)。
文檔編號(hào)G01C21/20GK103017770SQ201210502590
公開日2013年4月3日 申請日期2012年11月30日 優(yōu)先權(quán)日2012年11月30日
發(fā)明者何照丹, 溫維平, 王英東 申請人:深圳市航盛電子股份有限公司