>[0042]其中,這里的數(shù)據(jù)可以為站場圖數(shù)據(jù)類型和/或作業(yè)單數(shù)據(jù)類型,當(dāng)然,并不限于以上兩種數(shù)據(jù)類型,本發(fā)明對(duì)數(shù)據(jù)的具體類型不做特別的限定。
[0043]另外,這里的大數(shù)據(jù)類型是人為設(shè)定的,這里的大數(shù)據(jù)通常指數(shù)據(jù)容量比較大的數(shù)據(jù),哪些數(shù)據(jù)屬于大數(shù)據(jù)類型是根據(jù)實(shí)際情況人為實(shí)現(xiàn)設(shè)定好的。
[0044]另外,這里的對(duì)數(shù)據(jù)的類型進(jìn)行判斷是指,在接收數(shù)據(jù)時(shí),根據(jù)所接收到的數(shù)據(jù)的第一幀來對(duì)數(shù)據(jù)的類型進(jìn)行判斷。
[0045]步驟sl02:接收數(shù)據(jù),同時(shí)對(duì)數(shù)據(jù)進(jìn)行壓縮,得到壓縮數(shù)據(jù);
[0046]作為優(yōu)選地,對(duì)數(shù)據(jù)進(jìn)行壓縮的算法為Huffman壓縮算法。
[0047]可以理解的是,以上對(duì)數(shù)據(jù)進(jìn)行壓縮的算法為帶緩存的流水式Huffman壓縮算法,該算法采用先進(jìn)行數(shù)據(jù)緩沖然后流水作業(yè)的方式壓縮,即在接收數(shù)據(jù)的同時(shí)對(duì)數(shù)據(jù)進(jìn)行壓縮。該算法可以使壓縮數(shù)據(jù)的過程與接收數(shù)據(jù)的過程同時(shí)進(jìn)行,而不必另外消耗時(shí)間。
[0048]其中,這里的數(shù)據(jù)緩沖可以通過壓縮緩存器來實(shí)現(xiàn)。壓縮緩存器從控制單元的內(nèi)存中讀取數(shù)據(jù),并以緩存隊(duì)列的形式將數(shù)據(jù)存儲(chǔ)于壓縮緩存器中,同時(shí)將數(shù)據(jù)從壓縮緩存器中讀出,然后采用Huffman算法進(jìn)行壓縮。
[0049]當(dāng)然,以上僅為優(yōu)選方案,實(shí)際工作中也可采用其他能夠?qū)崿F(xiàn)相同目的壓縮算法,本發(fā)明對(duì)此并不做限定。并且,是否采用壓縮緩存器來實(shí)現(xiàn)數(shù)據(jù)緩沖,以及采用何種壓縮緩存器本發(fā)明也不做限定,只要能實(shí)現(xiàn)本發(fā)明方法的壓縮緩存器均在本發(fā)明的保護(hù)范圍之內(nèi)。
[0050]步驟sl03:判斷壓縮數(shù)據(jù)的容量是否達(dá)到預(yù)設(shè)壓縮容量閾值,如果是,則按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)壓縮數(shù)據(jù),進(jìn)入步驟sl04 ;否則,進(jìn)入步驟sl04 ;
[0051]進(jìn)一步的,這里的預(yù)設(shè)時(shí)間間隔,可根據(jù)實(shí)際情況自行設(shè)定,本發(fā)明對(duì)此不做限定。
[0052]步驟sl04:判斷數(shù)據(jù)是否全部壓縮完,如果是,則進(jìn)入步驟sl05 ;否則,進(jìn)入步驟sl02 ;
[0053]其中,因?yàn)樵摲椒ㄔ诮邮諗?shù)據(jù)的同時(shí)對(duì)數(shù)據(jù)進(jìn)行壓縮,因此當(dāng)數(shù)據(jù)全部壓縮完時(shí)數(shù)據(jù)同時(shí)也全部接收完成。
[0054]步驟sl05:判斷全部壓縮完的數(shù)據(jù)是否全部發(fā)送完,如果是,進(jìn)入步驟sl06 ;否貝1J,按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)全部壓縮完的數(shù)據(jù),直至所述全部壓縮完的所述數(shù)據(jù)全部發(fā)送完,進(jìn)入步驟sl06 ;
[0055]步驟sl06:結(jié)束對(duì)數(shù)據(jù)的轉(zhuǎn)發(fā)。
[0056]本發(fā)明提供了一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,該方法首先接收數(shù)據(jù),當(dāng)判斷數(shù)據(jù)的類型為大數(shù)據(jù)類型時(shí),同時(shí)對(duì)數(shù)據(jù)進(jìn)行壓縮,當(dāng)壓縮數(shù)據(jù)達(dá)到預(yù)設(shè)壓縮容量閾值時(shí),按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)壓縮數(shù)據(jù),如果數(shù)據(jù)已經(jīng)全部壓縮完,但未全部發(fā)送完,則繼續(xù)按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)壓縮數(shù)據(jù),當(dāng)壓縮數(shù)據(jù)全部發(fā)送完后,結(jié)束數(shù)據(jù)轉(zhuǎn)發(fā),如果數(shù)據(jù)并未全部壓縮完,則繼續(xù)接收數(shù)據(jù)進(jìn)行壓縮;如果壓縮數(shù)據(jù)未達(dá)到預(yù)設(shè)壓縮容量閾值但數(shù)據(jù)已壓縮完,即按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)壓縮數(shù)據(jù),并結(jié)束數(shù)據(jù)轉(zhuǎn)發(fā),否則繼續(xù)接收數(shù)據(jù)進(jìn)行壓縮。
[0057]可見,一方面,該方法在進(jìn)行大數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),對(duì)大數(shù)據(jù)進(jìn)行了壓縮,減小了數(shù)據(jù)容量,因此減小了數(shù)據(jù)的發(fā)送時(shí)間,提高了數(shù)據(jù)的實(shí)時(shí)性,并且由于減小了 CAN總線轉(zhuǎn)發(fā)的數(shù)據(jù)容量,傳輸速度加快,使得占用CAN總線的時(shí)間縮短,并且該方法在接收數(shù)據(jù)的同時(shí)對(duì)數(shù)據(jù)進(jìn)行壓縮,避免了壓縮的過程占用時(shí)間,此時(shí)數(shù)據(jù)接收完成的同時(shí)數(shù)據(jù)也壓縮完成;另一方面,本發(fā)明提供的方法還對(duì)大數(shù)據(jù)進(jìn)行了分塊處理,且相鄰的壓縮數(shù)據(jù)塊之間有一定的時(shí)間間隔,因此其他設(shè)備可以在各個(gè)數(shù)據(jù)塊轉(zhuǎn)發(fā)的間隙進(jìn)行發(fā)送,避免了由于CAN總線被長時(shí)間占用而導(dǎo)致的其他設(shè)備無法通信的問題。
[0058]因此,本發(fā)明不僅解決了接口盒在進(jìn)行大數(shù)據(jù)包轉(zhuǎn)發(fā)時(shí)CAN總線被長時(shí)間占用的問題,還提高了數(shù)據(jù)轉(zhuǎn)發(fā)的實(shí)時(shí)性,減小了數(shù)據(jù)的發(fā)送時(shí)間。
[0059]實(shí)施例二
[0060]參見圖2所示,圖2為本發(fā)明提供的另一種數(shù)據(jù)轉(zhuǎn)發(fā)方法的過程的流程圖。
[0061]步驟s201:接收數(shù)據(jù);
[0062]步驟s202:將數(shù)據(jù)存儲(chǔ)于外部存儲(chǔ)器中;
[0063]步驟s203:對(duì)數(shù)據(jù)的類型進(jìn)行判斷,當(dāng)數(shù)據(jù)的類型為大數(shù)據(jù)類型時(shí),進(jìn)入步驟s204 ;當(dāng)數(shù)據(jù)的類型為小數(shù)據(jù)類型時(shí),轉(zhuǎn)發(fā)數(shù)據(jù),進(jìn)入步驟s208 ;
[0064]步驟s204:接收數(shù)據(jù),同時(shí)對(duì)數(shù)據(jù)進(jìn)行壓縮,得到壓縮數(shù)據(jù);
[0065]步驟s205:判斷壓縮數(shù)據(jù)的容量是否達(dá)到預(yù)設(shè)壓縮容量閾值,如果是,則按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)壓縮數(shù)據(jù),進(jìn)入步驟s206 ;否則,進(jìn)入步驟s206 ;
[0066]步驟s206:判斷數(shù)據(jù)是否全部壓縮完,如果是,則進(jìn)入步驟s207 ;否則,進(jìn)入步驟s204 ;
[0067]步驟s207:判斷全部壓縮完的數(shù)據(jù)是否全部發(fā)送完,如果是,進(jìn)入步驟s208 ;否貝1J,按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)全部壓縮完的數(shù)據(jù),直至所述全部壓縮完的所述數(shù)據(jù)全部發(fā)送完,進(jìn)入步驟s208 ;
[0068]步驟s208:結(jié)束對(duì)數(shù)據(jù)的轉(zhuǎn)發(fā)。
[0069]本實(shí)施例在實(shí)施例一的基礎(chǔ)上對(duì)方法進(jìn)行了增加,當(dāng)數(shù)據(jù)的類型為小數(shù)據(jù)類型時(shí),將接收后的數(shù)據(jù)直接轉(zhuǎn)發(fā),不用進(jìn)行壓縮,小數(shù)據(jù)的容量小,直接轉(zhuǎn)發(fā)也不會(huì)長時(shí)間占用CAN總線,也并不會(huì)造成數(shù)據(jù)實(shí)時(shí)性差。另外,現(xiàn)有技術(shù)中采用控制單元的內(nèi)存存儲(chǔ)緩存數(shù)據(jù)和文件指針等數(shù)據(jù),在接口盒意外斷電的情況下,內(nèi)存會(huì)造成數(shù)據(jù)的丟失,這樣的情況會(huì)導(dǎo)致有些數(shù)據(jù)無法恢復(fù)。而本實(shí)施例中,不僅將數(shù)據(jù)存儲(chǔ)于控制單元的內(nèi)存中,還將數(shù)據(jù)存儲(chǔ)于外部存儲(chǔ)器中,由于外部存儲(chǔ)器具有掉電保護(hù)的功能,因此在接口盒意外斷電的情況下,也可以避免正在運(yùn)行的緩存數(shù)據(jù)、文件指針以及故障數(shù)據(jù)的丟失,接口盒再次啟動(dòng)后,還可以根據(jù)既定的數(shù)據(jù)結(jié)構(gòu)繼續(xù)處理事件,不會(huì)因?yàn)閿嚯姷裙收嫌绊懡涌诤械挠涗洿鎯?chǔ)功能的性能。
[0070]與上述方法實(shí)施例相對(duì)應(yīng)的,本發(fā)明還提供了一種采用上述數(shù)據(jù)轉(zhuǎn)發(fā)方法的接口盒,參見圖3所示,圖3為本發(fā)明提供的一種接口盒的結(jié)構(gòu)示意圖,該接口盒包括接收判斷單元301、壓縮單元302、第一判斷單元303、第二判斷單元304和第三判斷單元305。其中:
[0071]接收判斷單元301,用于接收數(shù)據(jù),并對(duì)數(shù)據(jù)的類型進(jìn)行判斷,當(dāng)數(shù)據(jù)的類型為大數(shù)據(jù)類型時(shí),將數(shù)據(jù)發(fā)送至壓縮單元302 ;
[0072]壓縮單元302,用于接收數(shù)據(jù),同時(shí)對(duì)接收到的數(shù)據(jù)進(jìn)行壓縮,得到壓縮數(shù)據(jù);
[0073]第一判斷單元303,用于判斷壓縮數(shù)據(jù)的容量是否達(dá)到預(yù)設(shè)壓縮容量閾值,如果是,發(fā)送第一信號(hào)控制壓縮單元302按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)壓縮數(shù)據(jù),并發(fā)送第一通知信號(hào)至第二判斷單元304 ;否則,直接發(fā)送第一通知信號(hào)至第二判斷單元304 ;
[0074]第二判斷單元304,用于當(dāng)接收到第一通知信號(hào)時(shí),判斷數(shù)據(jù)是否全部壓縮完,如果是,發(fā)送第二通知信號(hào)至第三判斷單元305,否則發(fā)送第二信號(hào)控制壓縮單元302繼續(xù)壓縮數(shù)據(jù);
[0075]第三判斷單元305,用于當(dāng)接收到第二通知信號(hào)時(shí),判斷全部壓縮完的數(shù)據(jù)是否全部發(fā)送完,如果是,結(jié)束對(duì)數(shù)據(jù)的轉(zhuǎn)發(fā);否則,發(fā)送第三信號(hào)控制壓縮單元302按照預(yù)設(shè)時(shí)間間隔轉(zhuǎn)發(fā)全部壓縮完的數(shù)據(jù),直至全部壓縮完的數(shù)據(jù)全部發(fā)送完,結(jié)束對(duì)數(shù)據(jù)的轉(zhuǎn)發(fā)。
[0076]另外,這里的接收判斷單元301、壓縮單元302、第一判斷單元303、第二判斷單元304和第三判斷單元305均位于控制單元CPU中。
[0077]基于以上所提供的接口盒,優(yōu)選地,該接口盒還包括:
[0078]外部存儲(chǔ)器306,用于存儲(chǔ)所述數(shù)據(jù)。
[0079]其中,這里的外部存儲(chǔ)器306為壓縮緩存器的載體,具有掉電保護(hù)的功能。當(dāng)發(fā)生意外斷電時(shí),由于