本發(fā)明涉及控制技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)傳輸方法和裝置。
背景技術(shù):
控制系統(tǒng)中包括多個底層設(shè)備(如傳感器、存儲器等),各設(shè)備之間需要通過數(shù)據(jù)傳輸和通信來共同完成控制任務(wù)。
但是,現(xiàn)有的控制系統(tǒng)需要引入文件系統(tǒng)對設(shè)備進(jìn)行封裝,進(jìn)行數(shù)據(jù)傳輸時,需要調(diào)用文件系統(tǒng)對設(shè)備進(jìn)行讀寫或者直接對設(shè)備進(jìn)行讀寫。前者由于引入了文件系統(tǒng),導(dǎo)致整個控制系統(tǒng)體積過大;而后者對設(shè)備的讀寫不易統(tǒng)一,導(dǎo)致無法針對不同的設(shè)備實(shí)現(xiàn)靈活配置。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的發(fā)明人發(fā)現(xiàn)上述現(xiàn)有技術(shù)中存在的問題,并因此針對所述問題中的至少一個問題提出了一種新的技術(shù)方案。
本發(fā)明的一個目的是提供一種既能保證系統(tǒng)體積較小又能保證系統(tǒng)配置靈活的數(shù)據(jù)傳輸技術(shù)方案。
根據(jù)本發(fā)明的一個實(shí)施例,提供了一種數(shù)據(jù)傳輸方法,包括:系統(tǒng)中的每個設(shè)備都關(guān)聯(lián)一個接口;每個設(shè)備通過相關(guān)聯(lián)的接口與所述系統(tǒng)中的其它設(shè)備進(jìn)行數(shù)據(jù)傳輸和通信,并根據(jù)預(yù)設(shè)的接口協(xié)議判斷所述數(shù)據(jù)傳輸是否結(jié)束,如果所述數(shù)據(jù)傳輸結(jié)束,則通知所述其它設(shè)備數(shù)據(jù)已更新;所述其它設(shè)備通過相關(guān)聯(lián)的接口獲取所述數(shù)據(jù),并根據(jù)預(yù)設(shè)的設(shè)備協(xié)議解析和校驗(yàn)所述數(shù)據(jù),從而得到有效數(shù)據(jù)。
可選地,所述系統(tǒng)中的每個設(shè)備都關(guān)聯(lián)一個接口包括:將接口的讀函數(shù)、寫函數(shù)、緩存中的一項(xiàng)或多項(xiàng)注冊到相關(guān)聯(lián)的設(shè)備。
可選地,如果所述設(shè)備為主動傳輸設(shè)備,則將所述接口的讀函數(shù)和寫函數(shù)注冊到所述設(shè)備;如果所述設(shè)備為被動傳輸設(shè)備,則將所述接口的緩存注冊到所述設(shè)備。
可選地,如果所述設(shè)備為輸出設(shè)備,則將所述接口的讀函數(shù)注冊到所述設(shè)備。
可選地,所述根據(jù)預(yù)設(shè)的接口協(xié)議判斷所述數(shù)據(jù)傳輸是否結(jié)束包括:如果所述設(shè)備為主動傳輸設(shè)備,則通過發(fā)送時鐘脈沖來判斷所述數(shù)據(jù)傳輸是否結(jié)束;如果設(shè)備為被動傳輸設(shè)備,則通過所述接口的總線收發(fā)器獲取傳輸中的數(shù)據(jù)長度從而判斷所述數(shù)據(jù)傳輸是否結(jié)束,或通過總線空閑中斷來判斷所述數(shù)據(jù)傳輸是否結(jié)束。
根據(jù)本發(fā)明的另一個實(shí)施例,提供一種數(shù)據(jù)傳輸裝置,包括:接口,用于與系統(tǒng)中的設(shè)備關(guān)聯(lián),實(shí)現(xiàn)相關(guān)聯(lián)的所述設(shè)備與所述系統(tǒng)中的其他設(shè)備之間的數(shù)據(jù)傳輸;數(shù)據(jù)傳輸判斷單元,用于根據(jù)預(yù)設(shè)的接口協(xié)議判斷所述數(shù)據(jù)傳輸是否結(jié)束;數(shù)據(jù)更新通知單元,用于如果所述數(shù)據(jù)傳輸結(jié)束,則通知所述其它設(shè)備數(shù)據(jù)已更新;數(shù)據(jù)處理單元,用于獲取所述數(shù)據(jù),并根據(jù)預(yù)設(shè)的設(shè)備協(xié)議解析和校驗(yàn)所述數(shù)據(jù),從而得到有效數(shù)據(jù)。
可選地,如果所述設(shè)備為主動傳輸設(shè)備,則所述接口將讀函數(shù)和寫函數(shù)注冊到所述設(shè)備;如果所述設(shè)備為被動傳輸設(shè)備,則所述接口將緩存注冊到所述設(shè)備。
可選地,如果所述設(shè)備為輸出設(shè)備,則所述接口將讀函數(shù)注冊到所述設(shè)備。
可選地,如果所述設(shè)備為主動傳輸設(shè)備,則所述數(shù)據(jù)傳輸判斷單元通過發(fā)送時鐘脈沖來判斷所述數(shù)據(jù)傳輸是否結(jié)束;如果所述設(shè)備為被動傳輸設(shè)備,則所述數(shù)據(jù)傳輸判斷單元通過所述接口的總線收發(fā)器獲取傳輸中的數(shù)據(jù)長度來判斷所述數(shù)據(jù)傳輸是否結(jié)束,或通過總線空閑中斷來判斷所述數(shù)據(jù)傳輸是否結(jié)束。
根據(jù)本發(fā)明的又一個實(shí)施例,提供一種數(shù)據(jù)傳輸裝置,包括:存儲器以及耦接至所述存儲器的處理器,所述處理器被配置為基于存儲在所述存儲器設(shè)備中的指令,執(zhí)行上述任一個實(shí)施例所述的數(shù)據(jù)傳輸方法。
根據(jù)本發(fā)明的再一個實(shí)施例,提供一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,該程序被處理器執(zhí)行時實(shí)現(xiàn)上述任一個實(shí)施例所述的數(shù)據(jù)傳輸方法。
本發(fā)明的一個優(yōu)點(diǎn)在于,在不引入附加管理系統(tǒng)的情況下,將設(shè)備配置為僅負(fù)責(zé)產(chǎn)生和處理數(shù)據(jù),將相關(guān)聯(lián)的接口配置為僅負(fù)責(zé)傳輸數(shù)據(jù)和通信,因此在數(shù)據(jù)傳輸過程中僅需要改變接口的讀寫函數(shù)而無需改變設(shè)備的相關(guān)代碼即可實(shí)現(xiàn)設(shè)備之間的數(shù)據(jù)交互,從而既保證了系統(tǒng)體積較小又保證了系統(tǒng)配置靈活。
附圖說明
構(gòu)成說明書的一部分的附圖描述了本發(fā)明的實(shí)施例,并且連同說明書一起用于解釋本發(fā)明的原理。
參照附圖,根據(jù)下面的詳細(xì)描述,可以更加清楚地理解本發(fā)明,其中:
圖1示出本發(fā)明的數(shù)據(jù)傳輸方法的一個實(shí)施例的流程圖。
圖2示出本發(fā)明的數(shù)據(jù)傳輸方法的一個實(shí)施例的示意圖。
圖3示出本發(fā)明的數(shù)據(jù)傳輸方法的另一個實(shí)施例的流程圖。
圖4示出本發(fā)明的數(shù)據(jù)傳輸裝置的一個實(shí)施例的結(jié)構(gòu)圖。
圖5示出本發(fā)明的數(shù)據(jù)傳輸裝置的另一個實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施方式
現(xiàn)在將參照附圖來詳細(xì)描述本發(fā)明的各種示例性實(shí)施例。應(yīng)注意到:除非另外具體說明,否則在這些實(shí)施例中闡述的部件和步驟的相對布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
同時,應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個部分的尺寸并不是按照實(shí)際的比例關(guān)系繪制的。
以下對至少一個示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制。
對于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為授權(quán)說明書的一部分。
在這里示出和討論的所有示例中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實(shí)施例的其它示例可以具有不同的值。
應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個附圖中被定義,則在隨后的附圖中不需要對其進(jìn)行進(jìn)一步討論。
圖1示出本發(fā)明的數(shù)據(jù)傳輸方法的一個實(shí)施例的流程圖。
如圖1所示,該方法包括,步驟101,系統(tǒng)中的每個設(shè)備都關(guān)聯(lián)一個接口;步驟102,設(shè)備通過相關(guān)聯(lián)的接口與系統(tǒng)中的其它設(shè)備進(jìn)行數(shù)據(jù)傳輸和通信。
例如,控制系統(tǒng)中的底層驅(qū)動框架中包括多個設(shè)備,這些設(shè)備負(fù)責(zé)產(chǎn)生和處理數(shù)據(jù),與它們相關(guān)聯(lián)的接口負(fù)責(zé)向內(nèi)接收數(shù)據(jù)或向外發(fā)送數(shù)據(jù)。
步驟103,根據(jù)預(yù)設(shè)的接口協(xié)議判斷數(shù)據(jù)傳輸是否結(jié)束。如果是,則通知其它設(shè)備數(shù)據(jù)已更新(步驟104);如果否,則繼續(xù)進(jìn)行數(shù)據(jù)傳輸(步驟102)。步驟105,其它設(shè)備通過相關(guān)聯(lián)的接口獲取數(shù)據(jù),并根據(jù)預(yù)設(shè)的設(shè)備協(xié)議解析和校驗(yàn)數(shù)據(jù),從而得到有效數(shù)據(jù)。
例如,在數(shù)據(jù)傳輸時,接口根據(jù)接口協(xié)議判斷數(shù)據(jù)傳輸結(jié)束,則將數(shù)據(jù)打包,并置位數(shù)據(jù)更新標(biāo)志位,從而通知參與數(shù)據(jù)傳輸?shù)脑O(shè)備數(shù)據(jù)已更新;設(shè)備收到數(shù)據(jù)更新的消息,則取回數(shù)據(jù)包并根據(jù)設(shè)備協(xié)議進(jìn)行數(shù)據(jù)解析和校驗(yàn)從而獲得有效數(shù)據(jù),并更新數(shù)據(jù)完成標(biāo)志位,或向應(yīng)用層返回數(shù)據(jù)處理結(jié)果。
在一個實(shí)施例中,如圖2所示,在無人機(jī)控制系統(tǒng)中,應(yīng)用層可以包括導(dǎo)航模塊27(如擴(kuò)展卡爾曼濾波器)和控制模塊28(如比例積微分控制器)。輸入設(shè)備22(如傳感器)、雙向設(shè)備24和輸出設(shè)備26(如控制器)分別通過輸入接口21、雙向接口23和輸出接口25進(jìn)行數(shù)據(jù)傳輸和通信。將輸入設(shè)備22采集的數(shù)據(jù)輸入導(dǎo)航模塊27,根據(jù)導(dǎo)航模塊27的處理結(jié)果和當(dāng)前的飛行模式,控制模塊28產(chǎn)生控制命令并輸出給輸出設(shè)備26。
上述實(shí)施例中,每個設(shè)備關(guān)聯(lián)一個接口,設(shè)備只負(fù)責(zé)產(chǎn)生和處理數(shù)據(jù),接口只負(fù)責(zé)傳輸數(shù)據(jù),因此接口改變時僅需要改變接口的讀寫函數(shù)而不需要改變設(shè)備的相關(guān)代碼,從而既保證了系統(tǒng)體積較小又保證了系統(tǒng)配置靈活。
圖3示出本發(fā)明的數(shù)據(jù)傳輸方法的另一個實(shí)施例的流程圖。
如圖3所示,該方法包括,步驟301,判斷設(shè)備是否為輸出設(shè)備。如果是,則將接口的讀函數(shù)注冊到設(shè)備(步驟302);如果否,則繼續(xù)判斷設(shè)備是否為主動傳輸設(shè)備(步驟303)。如果是主動傳輸設(shè)備,則將接口的讀函數(shù)和寫函數(shù)注冊到設(shè)備(步驟304),并通過發(fā)送時鐘脈沖來判斷數(shù)據(jù)傳輸是否結(jié)束(步驟305);否則,將接口的緩存注冊到設(shè)備(步驟306),并通過接口的總線收發(fā)器獲取傳輸中的數(shù)據(jù)長度,或總線空閑中斷來判斷數(shù)據(jù)傳輸是否結(jié)束(步驟307)。
在一個實(shí)施例中,對主動傳輸設(shè)備的初始化函數(shù)和讀、寫函數(shù)進(jìn)行注冊??梢允褂煤瘮?shù)指針將接口的讀、寫函數(shù)注冊給設(shè)備的讀、寫函數(shù),從而可通過接口進(jìn)行設(shè)備的讀、寫。主動傳輸設(shè)備(如串行外設(shè)接口、兩線式串行總線等)可以分為主、從機(jī),其中,主機(jī)控制數(shù)據(jù)的傳輸,主機(jī)發(fā)送時鐘脈沖,從機(jī)根據(jù)脈沖返回數(shù)據(jù),主動傳輸設(shè)備根據(jù)設(shè)備協(xié)議進(jìn)行數(shù)據(jù)采集,接口根據(jù)接口協(xié)議對外發(fā)送時鐘脈沖并判斷數(shù)據(jù)傳輸是否結(jié)束。
在另一個實(shí)施例中,無人機(jī)控制系統(tǒng)中的被動傳輸設(shè)備相關(guān)聯(lián)的接口可以為uart(universalasynchronousreceiver/transmitter,通用異步收發(fā)傳輸器)接口和can(controllerareanetwork,控制器局域網(wǎng)絡(luò))接口。can接口在can總線收發(fā)器中判斷數(shù)據(jù)接收是否完成;uart接口使用總線空閑中斷判斷數(shù)據(jù)接收是否完成,如果系統(tǒng)的主控芯片外接的從設(shè)備輸出總線在1個字節(jié)時間內(nèi)未進(jìn)行任何數(shù)據(jù)輸出,則判定數(shù)據(jù)接收完成。
在又一個實(shí)施例中,對系統(tǒng)中的輸出設(shè)備和接口的初始化函數(shù)和寫函數(shù)進(jìn)行關(guān)聯(lián),例如采用函數(shù)指針將接口的寫函數(shù)注冊到輸出設(shè)備。
上述實(shí)施例中,設(shè)備根據(jù)設(shè)備協(xié)議產(chǎn)生、處理數(shù)據(jù),并通過注冊讀寫函數(shù)關(guān)聯(lián)相應(yīng)的接口,接口根據(jù)接口協(xié)議傳輸數(shù)據(jù),并判斷傳輸是否結(jié)束,因此在數(shù)據(jù)傳輸過程中僅需要改變接口的讀寫函數(shù)而無需改變設(shè)備的相關(guān)代碼即可實(shí)現(xiàn)設(shè)備之間的數(shù)據(jù)交互,從而既保證了系統(tǒng)體積較小又保證了系統(tǒng)配置靈活。
圖4示出本發(fā)明的數(shù)據(jù)傳輸裝置的一個實(shí)施例的結(jié)構(gòu)圖。
如圖4所示,該裝置包括:接口41、數(shù)據(jù)傳輸判斷單元42、數(shù)據(jù)更新通知單元43和數(shù)據(jù)處理單元44。
接口41與系統(tǒng)中的設(shè)備關(guān)聯(lián),實(shí)現(xiàn)相關(guān)聯(lián)的設(shè)備與系統(tǒng)中的其他設(shè)備之間的數(shù)據(jù)傳輸。對于主動傳輸設(shè)備,接口將讀函數(shù)和寫函數(shù)注冊到設(shè)備;對于被動傳輸設(shè)備,接口將緩存注冊到設(shè);對于輸出設(shè)備,接口將讀函數(shù)注冊到設(shè)備。
數(shù)據(jù)傳輸判斷單元42根據(jù)預(yù)設(shè)的接口協(xié)議判斷數(shù)據(jù)傳輸是否結(jié)束。對于主動傳輸設(shè)備,數(shù)據(jù)傳輸判斷單元42通過發(fā)送時鐘脈沖來判斷數(shù)據(jù)傳輸是否結(jié)束;對于被動傳輸設(shè)備,數(shù)據(jù)傳輸判斷單元42通過接口的總線收發(fā)器獲取傳輸中的數(shù)據(jù)長度來判斷數(shù)據(jù)傳輸是否結(jié)束,或通過總線空閑中斷來判斷數(shù)據(jù)傳輸是否結(jié)束。
如果數(shù)據(jù)傳輸結(jié)束,則數(shù)據(jù)更新通知單元43通知其它設(shè)備數(shù)據(jù)已更新;數(shù)據(jù)處理單元44獲取數(shù)據(jù),并根據(jù)預(yù)設(shè)的設(shè)備協(xié)議解析和校驗(yàn)數(shù)據(jù),從而得到有效數(shù)據(jù)。
在一個實(shí)施例中,應(yīng)用層(如無人機(jī)控制系統(tǒng)中的導(dǎo)航模塊和控制模塊等)通過調(diào)用設(shè)備的讀寫函數(shù)獲取設(shè)備的有效數(shù)據(jù)(如gps采集的經(jīng)緯度,氣壓計采集的高度信息等)。應(yīng)用層可以調(diào)用設(shè)備讀寫函數(shù),設(shè)備則直接返回有效數(shù)據(jù);或者設(shè)備將有效數(shù)據(jù)存在變量中,并將數(shù)據(jù)更新標(biāo)志位置1,應(yīng)用層判斷數(shù)據(jù)更新標(biāo)志位為1時,則使用變量中的有效數(shù)據(jù)并將數(shù)據(jù)更新標(biāo)志位清零。
上述實(shí)施例中,接口與每個設(shè)備關(guān)聯(lián),只負(fù)責(zé)傳輸數(shù)據(jù),同時設(shè)備只負(fù)責(zé)產(chǎn)生和處理數(shù)據(jù),因此接口改變時僅需要改變接口的讀寫函數(shù)而不需要改變設(shè)備的相關(guān)代碼,從而既保證了系統(tǒng)體積較小又保證了系統(tǒng)配置靈活。
圖5示出本發(fā)明的數(shù)據(jù)傳輸裝置的另一個實(shí)施例的結(jié)構(gòu)圖。
如圖5所示,該實(shí)施例的裝置50包括:存儲器51以及耦接至該存儲器51的處理器52,處理器52被配置為基于存儲在存儲器51中的指令,執(zhí)行本發(fā)明中任意一個實(shí)施例中的數(shù)據(jù)傳輸方法。
其中,存儲器51例如可以包括系統(tǒng)存儲器、固定非易失性存儲介質(zhì)等。系統(tǒng)存儲器例如存儲有操作系統(tǒng)、應(yīng)用程序、引導(dǎo)裝載程序(bootloader)、數(shù)據(jù)庫以及其他程序等。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用非瞬時性存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計算機(jī)程序產(chǎn)品的形式。
至此,已經(jīng)詳細(xì)描述了根據(jù)本發(fā)明的數(shù)據(jù)傳輸方法和裝置。為了避免遮蔽本發(fā)明的構(gòu)思,沒有描述本領(lǐng)域所公知的一些細(xì)節(jié)。本領(lǐng)域技術(shù)人員根據(jù)上面的描述,完全可以明白如何實(shí)施這里公開的技術(shù)方案。
可能以許多方式來實(shí)現(xiàn)本發(fā)明的方法和系統(tǒng)。例如,可通過軟件、硬件、固件或者軟件、硬件、固件的任何組合來實(shí)現(xiàn)本發(fā)明的方法和系統(tǒng)。用于所述方法的步驟的上述順序僅是為了進(jìn)行說明,本發(fā)明的方法的步驟不限于以上具體描述的順序,除非以其它方式特別說明。此外,在一些實(shí)施例中,還可將本發(fā)明實(shí)施為記錄在記錄介質(zhì)中的程序,這些程序包括用于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的機(jī)器可讀指令。因而,本發(fā)明還覆蓋存儲用于執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)。
雖然已經(jīng)通過示例對本發(fā)明的一些特定實(shí)施例進(jìn)行了詳細(xì)說明,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解,以上示例僅是為了進(jìn)行說明,而不是為了限制本發(fā)明的范圍。本領(lǐng)域的技術(shù)人員應(yīng)該理解,可在不脫離本發(fā)明的范圍和精神的情況下,對以上實(shí)施例進(jìn)行修改。本發(fā)明的范圍由所附權(quán)利要求來限定。