專利名稱:通道數(shù)據(jù)的寫入方法及該通道數(shù)據(jù)的文件頭的讀取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通道數(shù)據(jù)處理技術(shù),尤其涉及一種通道數(shù)據(jù)的寫入方法及該通道 數(shù)據(jù)的文件頭的讀取方法。
背景技術(shù):
工業(yè)和試驗(yàn)領(lǐng)域使用硬件設(shè)備采集現(xiàn)場物理信號(比如壓力、電壓、電流等),然 后將采集來的數(shù)據(jù)保存在存儲(chǔ)媒介上(通常是計(jì)算機(jī)的磁盤中)。對于現(xiàn)場的數(shù)據(jù)采集信 號來源,我們稱之為通道。目前,市面上存在著相當(dāng)多的采集設(shè)備和產(chǎn)品,這些設(shè)備采集到的通道數(shù)據(jù),保存 格式多種多樣,這些數(shù)據(jù)格式的特點(diǎn)是格式固定、不通用,可擴(kuò)展性不強(qiáng),在一般的通道數(shù) 據(jù)中,通常文件頭位于整個(gè)文件的最前面,然后再接著保存通道的數(shù)據(jù)值。如果要修改文件 頭并增加屬性信息的話,文件頭存儲(chǔ)空間變大,將會(huì)導(dǎo)致文件頭后面的通道數(shù)據(jù)值區(qū)在存 儲(chǔ)媒介上整體后移,在數(shù)據(jù)量比較大的時(shí)候,這會(huì)是一個(gè)非常耗時(shí)的操作過程,效率較低。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種通道數(shù)據(jù)的寫入方法及該通道數(shù)據(jù)的文件頭的讀取 方法,以提高通道數(shù)據(jù)的可擴(kuò)展性,提高修改文件頭并增加屬性信息時(shí)的操作效率。為達(dá)到上述目的,本發(fā)明提供了一方面提供了一種通道數(shù)據(jù)的寫入方法,包括以 下步驟首先將通道數(shù)據(jù)的數(shù)據(jù)部分寫入文件;其次將所述通道數(shù)據(jù)的文件頭部分的屬性區(qū)寫入所述文件,具體如下寫入4個(gè)字節(jié)的標(biāo)志,所述標(biāo)志至少記錄了屬性是否可見、是否只讀;寫入4個(gè)字節(jié)的類型信息,所述類型信息表示屬性的值類型;寫入屬性名稱的長度,為一個(gè)字符串;寫入屬性顯示名稱的長度,為一個(gè)字符串;寫入4個(gè)字節(jié)的屬性備注信息的長度,為一個(gè)字符串;寫入值的長度,所述值的長度可變;寫入所述值的內(nèi)容;最后將所述通道數(shù)據(jù)的文件頭部分的標(biāo)志區(qū)寫入所述文件。本發(fā)明的通道數(shù)據(jù)的寫入方法,所述標(biāo)志區(qū)包括所述屬性區(qū)的起始位置及其在所 述文件中的偏移位置、所述數(shù)據(jù)部分的數(shù)據(jù)類型、文件版本、所述文件的標(biāo)識(shí)頭。另一方面,本發(fā)明還提供了一種通道數(shù)據(jù)的文件頭的讀取方法,包括以下步驟(1)、讀取文件的文件頭的標(biāo)志區(qū);(2)、分析所述標(biāo)志區(qū),獲取所述文件頭的屬性區(qū)的偏移位置;(3)、根據(jù)所述屬性區(qū)的偏移位置讀取屬性區(qū)信息,具體如下(301)、讀取4個(gè)字節(jié)的標(biāo)志信息;
(302)、讀取4個(gè)字節(jié)的類型信息;(303)、讀取4個(gè)字節(jié)的名稱長度,根據(jù)此長度,讀取名稱字符串;(304)、讀取4個(gè)字節(jié)的顯示名稱長度,根據(jù)此長度,讀取顯示名稱字符串;(305)、讀取4個(gè)字節(jié)的備注信息長度,根據(jù)此長度,讀取備注信息;(306)、讀取值的長度,根據(jù)值的長度和屬性類型,讀取屬性值。本發(fā)明的述的通道數(shù)據(jù)的文件頭的讀取方法,當(dāng)所述屬性區(qū)包含多個(gè)屬性時(shí),在 步驟C3)之后,還包括如下步驟(4)、在讀取完一個(gè)屬性后重復(fù)步驟C3)讀取下一個(gè)屬性,直至所述屬性區(qū)的所有 屬性讀取完成。本發(fā)明的通道數(shù)據(jù)的寫入方法將通道數(shù)據(jù)文件的文件頭部分存放于整個(gè)通道數(shù) 據(jù)文件的后面,這樣在修改文件頭部分時(shí),可以先將文件頭部分所有信息讀入內(nèi)存,加入新 信息后,再將內(nèi)存中的文件頭信息寫回到文件中,并且因?yàn)橛捎谕ǖ罃?shù)據(jù)文件的數(shù)據(jù)部分 在整個(gè)文件的前面,所以我們修改文件頭部分時(shí)不需要移動(dòng)數(shù)據(jù)部分,并且,文件頭部分通 常比較小,保存寫磁盤時(shí),耗時(shí)很少,效率較高,從而增加了文件的通用性和擴(kuò)展性。并且從 本發(fā)明的通道數(shù)據(jù)的寫入方法,可以得知最后保存下來的通道數(shù)據(jù)的文件頭部分的屬性區(qū) 內(nèi)屬性為一種自描述的結(jié)構(gòu),當(dāng)在讀取文件頭的時(shí)候,可以先讀取長度,再讀取指定長度的 內(nèi)容。這樣,這幾項(xiàng)的長度就不用預(yù)先固定好,其可以根據(jù)實(shí)際情況保存變長的內(nèi)容,這就 使得每個(gè)屬性的大小不固定,即節(jié)約了空間,又具有靈活性。
圖1為本發(fā)明的通道數(shù)據(jù)的寫入方法流程圖;圖2為本發(fā)明的通道數(shù)據(jù)的文件格式結(jié)構(gòu)示意圖;圖3為本發(fā)明的通道數(shù)據(jù)的文件頭部分的屬性區(qū)的結(jié)構(gòu)示意圖;圖4為本發(fā)明的通道數(shù)據(jù)的文件頭部分的屬性區(qū)中單個(gè)屬性的結(jié)構(gòu)示意圖;圖5為本發(fā)明的通道數(shù)據(jù)的文件頭的讀取方法流程圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式
進(jìn)行詳細(xì)描述參考圖1所示,本發(fā)明的通道數(shù)據(jù)的寫入方法,包括以下步驟步驟1,首先將通道數(shù)據(jù)的數(shù)據(jù)部分寫入文件。步驟2,其次將通道數(shù)據(jù)的文件頭部分的屬性區(qū)寫入文件,其具體細(xì)分如下步驟(201),寫入4個(gè)字節(jié)的標(biāo)志,其中,標(biāo)志記錄了屬性是否可見、是否只讀等信息。(202),寫入4個(gè)字節(jié)的類型信息,該類型信息表示屬性的值類型。003),寫入屬性名稱的長度,寫入之前,先得到屬性名稱字符串的長度(按字節(jié) 算),然后寫入長度信息,這是4個(gè)字節(jié)的整數(shù)。(204),寫入屬性顯示名稱的長度,寫入之前,要先得到屬性顯示名稱字符串的長 度,然后寫入長度信息,這也是4個(gè)字節(jié)的整數(shù)。(205),寫入4個(gè)字節(jié)的屬性備注信息的長度,為一個(gè)字符串。(206),寫入值的長度,如果值是一個(gè)字符串,則長度是可變的。
007),寫入值的內(nèi)容。步驟3,最后將通道數(shù)據(jù)的文件頭部分的標(biāo)志區(qū)寫入文件。從而得到一個(gè)如圖2所示的文件格式的文件,包括三部分第一部分為文件主體 即數(shù)據(jù)部分,第二部分和第三部分為文件頭部分,其中第二部分為文件頭部分的屬性區(qū),而 第三部分為文件頭部分的標(biāo)志區(qū),標(biāo)志區(qū)包括屬性區(qū)的起始位置G字節(jié))及其在文件中的 偏移位置G字節(jié))、數(shù)據(jù)部分的數(shù)據(jù)類型G字節(jié))、文件版本G字節(jié))、文件的標(biāo)識(shí)頭G 字節(jié))。其中,如圖4所示,文件頭部分的屬性區(qū)可以有多個(gè)屬性(比如通道的采集時(shí)間、通 道名稱、通道單位、通道的統(tǒng)計(jì)信息以及其它各種通道屬性值),并且屬性區(qū)內(nèi)的每個(gè)屬性 互不影響,而其中的每個(gè)屬性的結(jié)構(gòu)則如圖3所示,單個(gè)屬性的內(nèi)部信息可以被修改,也可 以添加和刪除屬性,屬性修改后保存時(shí),可以用前述的方法寫入到文件中。寫入文件時(shí),由 于是在整個(gè)文件的數(shù)據(jù)部分后邊寫入,所以不會(huì)影響前面的數(shù)據(jù)部分。參考圖5所示,本發(fā)明的通道數(shù)據(jù)的文件頭的讀取方法,包括以下步驟步驟1,讀取文件的文件頭的標(biāo)志區(qū)。步驟2,分析標(biāo)志區(qū),獲取文件頭的屬性區(qū)的偏移位置。步驟3,根據(jù)屬性區(qū)的偏移位置讀取屬性區(qū)其中一個(gè)屬性,其具體細(xì)分如下步驟(301)、讀取4個(gè)字節(jié)的標(biāo)志信息。(302)、讀取4個(gè)字節(jié)的類型信息。(303)、讀取4個(gè)字節(jié)的名稱長度,根據(jù)此長度,讀取名稱字符串。(304)、讀取4個(gè)字節(jié)的顯示名稱長度,根據(jù)此長度,讀取顯示名稱字符串。(305)、讀取4個(gè)字節(jié)的備注信息長度,根據(jù)此長度,讀取備注信息。(306)、讀取值的長度,根據(jù)值的長度和屬性類型,讀取屬性值。步驟4,在讀取完一個(gè)屬性后重復(fù)步驟3讀取下屬性區(qū)中下一個(gè)屬性,直至屬性區(qū) 的所有屬性讀取完成。由于屬性區(qū)內(nèi)的單個(gè)屬性均是自描述的結(jié)構(gòu),可以看出諸如名稱、顯 示名稱、備注和值等幾項(xiàng),在讀取的時(shí)候,可以先讀取長度,再讀取指定長度的內(nèi)容。其可以 根據(jù)實(shí)際情況保存變長的內(nèi)容,這就使得每個(gè)屬性的大小不固定,即節(jié)約了空間,又具有靈 活性。以上的實(shí)施例僅僅是對本發(fā)明的優(yōu)選實(shí)施方式進(jìn)行描述,并非對本發(fā)明的范圍進(jìn) 行限定,在不脫離本發(fā)明設(shè)計(jì)精神的前提下,本領(lǐng)域普通工程技術(shù)人員對本發(fā)明的技術(shù)方 案作出的各種變形和改進(jìn),均應(yīng)落入本發(fā)明的權(quán)利要求書確定的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種通道數(shù)據(jù)的寫入方法,其特征在于,包括以下步驟 首先將通道數(shù)據(jù)的數(shù)據(jù)部分寫入文件;其次將所述通道數(shù)據(jù)的文件頭部分的屬性區(qū)寫入所述文件,具體如下寫入4個(gè)字節(jié)的標(biāo)志,所述標(biāo)志至少記錄了屬性是否可見、是否只讀;寫入4個(gè)字節(jié)的類型信息,所述類型信息表示屬性的值類型;寫入屬性名稱的長度,為一個(gè)字符串;寫入屬性顯示名稱的長度,為一個(gè)字符串;寫入4個(gè)字節(jié)的屬性備注信息的長度,為一個(gè)字符串;寫入值的長度,所述值的長度可變;寫入所述值的內(nèi)容;最后將所述通道數(shù)據(jù)的文件頭部分的標(biāo)志區(qū)寫入所述文件。
2.根據(jù)權(quán)利要求1所述的通道數(shù)據(jù)的寫入方法,其特征在于,所述標(biāo)志區(qū)包括所述屬 性區(qū)的起始位置及其在所述文件中的偏移位置、所述數(shù)據(jù)部分的數(shù)據(jù)類型、文件版本、所述 文件的標(biāo)識(shí)頭。
3.—種通道數(shù)據(jù)的文件頭的讀取方法,其特征在于,包括以下步驟(1)、讀取文件的文件頭的標(biāo)志區(qū);(2)、分析所述標(biāo)志區(qū),獲取所述文件頭的屬性區(qū)的偏移位置;(3)、根據(jù)所述屬性區(qū)的偏移位置讀取屬性區(qū)信息,具體如下(301)、讀取4個(gè)字節(jié)的標(biāo)志信息;(302)、讀取4個(gè)字節(jié)的類型信息;(303)、讀取4個(gè)字節(jié)的名稱長度,根據(jù)此長度,讀取名稱字符串;(304)、讀取4個(gè)字節(jié)的顯示名稱長度,根據(jù)此長度,讀取顯示名稱字符串;(305)、讀取4個(gè)字節(jié)的備注信息長度,根據(jù)此長度,讀取備注信息;(306)、讀取值的長度,根據(jù)值的長度和屬性類型,讀取屬性值。
4.根據(jù)權(quán)利要求3所述的通道數(shù)據(jù)的文件頭的讀取方法,其特征在于,當(dāng)所述屬性區(qū) 包含多個(gè)屬性時(shí),在步驟C3)之后,還包括如下步驟G)、在讀取完一個(gè)屬性后重復(fù)步驟C3)讀取下一個(gè)屬性,直至所述屬性區(qū)的所有屬性 讀取完成。
全文摘要
本發(fā)明公開了一種通道數(shù)據(jù)的寫入方法及該通道數(shù)據(jù)的文件頭的讀取方法,其中寫入方法包括首先將通道數(shù)據(jù)的數(shù)據(jù)部分寫入文件;其次將通道數(shù)據(jù)的文件頭部分的屬性區(qū)寫入文件;最后將通道數(shù)據(jù)的文件頭部分的標(biāo)志區(qū)寫入文件。由于文件頭部分后置于文件尾部,這樣在修改文件頭部分時(shí),可以先將文件頭部分所有信息讀入內(nèi)存,加入新信息后,再將內(nèi)存中的文件頭信息寫回到文件中,并且因?yàn)橛捎谕ǖ罃?shù)據(jù)文件的數(shù)據(jù)部分在整個(gè)文件的前面,所以我們修改文件頭部分時(shí)不需要移動(dòng)數(shù)據(jù)部分,并且,文件頭部分通常比較小,保存寫磁盤時(shí),耗時(shí)很少,效率較高,從而增加了文件的通用性和擴(kuò)展性。
文檔編號G06F17/30GK102110152SQ20111004050
公開日2011年6月29日 申請日期2011年2月18日 優(yōu)先權(quán)日2011年2月18日
發(fā)明者南福春, 姚問新, 孟剛, 王隆義 申請人:北京瑞風(fēng)協(xié)同科技股份有限公司