第五章lAB VIEW 字符串和文件_第1頁
第五章lAB VIEW 字符串和文件_第2頁
第五章lAB VIEW 字符串和文件_第3頁
第五章lAB VIEW 字符串和文件_第4頁
第五章lAB VIEW 字符串和文件_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第四章 字符串和文件I/O4.1 字符串字符串是ASCII 字符的集合。如同其他語言一樣,LabVIEW 也提供了各種處理字符串的功能,如果想獲得字符串的例子,可查看ExamplesGeneralstrings.llb 。下面扼要介紹一些內(nèi)容。 創(chuàng)建字符串控制對(duì)象和顯示對(duì)象 可以在ControlsString & Table 中看到右邊所顯示字符串控制對(duì)象和顯示對(duì)象。還可以使用操作工具或者標(biāo)簽工具輸入或者改變字符串控制對(duì)象中的文本。用移位工具拖曳字符串控制對(duì)象和顯示對(duì)象的邊角可以增大它們的面積。 練習(xí) 4-1 組合字符串目的:使用一些字符串功能函數(shù)將一個(gè)數(shù)值轉(zhuǎn)換成字符串,并把該字符串和其他一些

2、字符串連接起來組成一個(gè)新的輸出字符串。 前面板打開一個(gè)新的前面板,按照下圖向其中添加對(duì)象。 其中的兩個(gè)字符串控制對(duì)象和數(shù)值控制對(duì)象可以合并成一個(gè)輸出字符串并顯示在字符串顯示器中。數(shù)值顯示器顯示出字符串的長(zhǎng)度。本練習(xí)中輸出字符串是一個(gè)GPIB (IEEE 488命令字符串,它可用來與和串口儀器(RS-232 或者 RS-422進(jìn)行通信。流程圖 Format Into String 函數(shù)(FunctionsString 在本練習(xí)中,它用于對(duì) 數(shù)值和字符串進(jìn)行格式化,使它們成為一個(gè)輸出字符串。用變形工具可以添加三個(gè)加和輸入。 String Length函數(shù)(FunctionsString在本練習(xí)中,

3、它用于返回一個(gè)字符串的字節(jié)數(shù)執(zhí)行該VI。注意,Format Into String 功能函數(shù)將兩個(gè)字符串控制對(duì)象和數(shù)值控制對(duì)象組合成一個(gè)輸出字符串。把該VI保存為Build String.vi,在下一個(gè)練習(xí)中還將用到這個(gè)VI。字符串格式的設(shè)定:選中Format Into String函數(shù),單擊右鍵,在快速菜單中選擇EditFormat String,可分別對(duì)個(gè)輸入的各部分格式做設(shè)定。練習(xí)4-1結(jié)束。練習(xí)4-2字符串子集和數(shù)值的提取目的:創(chuàng)建一個(gè)字符串的子集,其中含有某個(gè)數(shù)值的字符串顯示,再將它轉(zhuǎn)換成數(shù)值。打開ExamplesGeneralstrings.llb中的Parse String.vi

4、。用默認(rèn)輸入值執(zhí)行該VI。注意, DC的字符串子集被用于輸入字符串。還要注意,字符串的數(shù)值部分被提取出來,并轉(zhuǎn)換為數(shù)值。您可以嘗試使用不同的控制數(shù)值(記住數(shù)組式的字符串是從0開始進(jìn)行編號(hào),或者您可以返回到流程圖,查看怎樣從輸入字符串中提取出其中的元素。 String Subset函數(shù)(FunctionsString在本練習(xí)中,它用于返回偏移地址開始的子字符串以及字節(jié)數(shù)。第一個(gè)偏移地址是0。很多情況下,必須把字符串轉(zhuǎn)換成數(shù)值,例如需要將從儀器中得到的數(shù)據(jù)字符串轉(zhuǎn)換成數(shù)值。Scan From String函數(shù)(FunctionsString在這個(gè)例子中,它用于掃描字 符串,并將有效的數(shù)值(0到9,

5、正負(fù),e,E和分號(hào)轉(zhuǎn)換成數(shù)值。如果連接了一個(gè)格式字符串,它將根據(jù)字符串指定的格式進(jìn)行轉(zhuǎn)換,否則將進(jìn)行默認(rèn)格式的轉(zhuǎn)換。該函數(shù)從偏移地址的string處開始掃描。第一個(gè)字符的偏移地址是0。這個(gè)函數(shù)在已知頭長(zhǎng)度(本例中是VOLTS DC時(shí)或者字符串只含有有效字符時(shí)很有用。選擇FileClose,關(guān)閉該VI。注意不要保存它。練習(xí)4-2結(jié)束。4.2文件的輸入/輸出(I/O文件I/O功能函數(shù)是一組功能強(qiáng)大、伸縮性強(qiáng)的文件處理工具。它們不僅可以讀寫數(shù)據(jù),還可以移動(dòng)、重命名文件與目錄。創(chuàng)建電子表格格式的、由可讀的ASCII文本組成的文件,以及為了提高讀寫速度和壓縮率采用二進(jìn)制的格式寫入數(shù)據(jù)。可以采用下面三種文

6、件格式存儲(chǔ)或者獲得數(shù)據(jù):ASCII字節(jié)流如果希望讓其他的軟件(譬如字處理程序或者電子表格程序也可以訪問數(shù)據(jù),就需要將數(shù)據(jù)存儲(chǔ)為ASCII格式。為此,您需要把所有數(shù)據(jù)都轉(zhuǎn)換為ASCII 字符串。數(shù)據(jù)記錄文件這種文件采用的是只有G語言可以訪問的二進(jìn)制格式。數(shù)據(jù)記錄文件類似于數(shù)據(jù)庫文件,因?yàn)樗梢园巡煌臄?shù)據(jù)類型存儲(chǔ)到同一個(gè)文件記錄中。二進(jìn)制字節(jié)流這種文件的格式是最緊湊、最快速地存儲(chǔ)文件的格式。您必須把數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制字符串的格式,還必須清楚地知道在對(duì)文件讀寫數(shù)據(jù)時(shí)采用的是哪種數(shù)據(jù)格式。因?yàn)锳SCII字節(jié)流格式是最常用的數(shù)據(jù)文件格式,所以本節(jié)著重介紹這種格式。如果您想獲得關(guān)于文件I/O的例子,請(qǐng)參考

7、 ExamplesFile。大多數(shù)的文件I/O操作都包括三個(gè)基本的步驟:打開一個(gè)已有的文件或者新建一個(gè)文件;對(duì)文件進(jìn)行讀寫;關(guān)閉文件。LabVIEW在Functions File I/O中提供了很多有用的工具 VI。本節(jié)主要介紹9個(gè)高級(jí)工具VI,這些工具VI可以把錯(cuò)誤檢查和錯(cuò)誤處理等功能與文件I/O功能函數(shù)結(jié)合起來。 以下5個(gè)功能從左到右對(duì)應(yīng)于上面5個(gè)圖標(biāo)。Write To Spreadsheet File VI用于將由單精度數(shù)值組成的一維或者二維數(shù)組轉(zhuǎn)換成文本字符串,再將它寫入一個(gè)新建文件或者已有文件。該VI先打開或者新建文件,之后再關(guān)閉文件。它可以用于創(chuàng)建能夠被大多數(shù)電子表格軟件讀取的文本

8、文件。Read From Spreadsheet File VI用于從某個(gè)文件的特定位置開始讀取指定個(gè)數(shù)的行或者列內(nèi)容,再將數(shù)據(jù)轉(zhuǎn)換成二維、單精度數(shù)組。該VI先打開文件,之后再關(guān)閉文件。它可以用于讀取用文本格式存儲(chǔ)的電子表格文件。Write Characters To File VI用于將一個(gè)字符串寫入一個(gè)新建文件或者已有文件。該VI打開這個(gè)文件、寫入數(shù)據(jù),再關(guān)閉文件。Read Characters From File VI用于從某個(gè)文件的特定位置開始讀取指定個(gè)數(shù)的字符。該VI先打開文件,之后再關(guān)閉文件。Read Lines From File VI用于從某個(gè)文件的特定位置開始讀取指定個(gè)數(shù)的行

9、內(nèi)容。該VI先打開文件,之后再關(guān)閉文件。如果想查看其他的文件I/O 功能函數(shù),請(qǐng)選擇FunctionFile I/O Binary File VIs或者FunctionFile I/OAdvanced File Function s。將數(shù)據(jù)存儲(chǔ)到文件的最常見應(yīng)用之一是設(shè)置文本文件的格式以便在電子表格文件中打開它。大多數(shù)電子表格文件用Tab鍵分割各列,而用EOL(段尾分隔各行,如下圖所示。 用一個(gè)電子表格程序(如 Excel 打開該文件可以看到下面這個(gè)表格。 練習(xí) 4-3 將數(shù)據(jù)寫入電子表格文件目的:修改一個(gè)已有的 VI 以使用文件 I/O 功能函數(shù),以便可以將數(shù)據(jù)以 ASCII 格式保存到一個(gè)

10、新的文件。然后就可以用一個(gè)電子表格程序打開該文件。 前面板打開前面練習(xí)中創(chuàng)建的Graph Waveform Arrays.vi 。當(dāng)調(diào)用這個(gè)VI 時(shí),該VI 將產(chǎn)生兩個(gè)數(shù)據(jù)數(shù)組,并將它們繪制在一個(gè)圖區(qū)中。您需要對(duì)該VI 進(jìn)行修改,從而把兩個(gè)數(shù)組寫入一個(gè)文件,格式是每列含有一個(gè)數(shù)組。Array Waveform Graph流程圖打開Graph Waveform Arrays.vi 的流程圖,按照下圖在流程圖的右下角添加功能函數(shù)。 Write To Spreadsheet File VI (FunctionsFile I/O 用于將二維數(shù)組 轉(zhuǎn)換成電子表格字符串,再將它寫入一個(gè)文件。如果沒有指定路

11、徑名稱,將會(huì)彈出一個(gè)文件對(duì)話框,提示輸入文件名。該VI 將把一維或者二維數(shù)組寫入文件。這個(gè)例子中,因?yàn)橛玫氖嵌S數(shù)組,所以無需連接一維輸入端子。 Boolean 常數(shù) (FunctionsBoolean 用于控制是否在寫入數(shù)據(jù)之前轉(zhuǎn)換成二維數(shù)組。在這個(gè)例子中需要對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。因?yàn)殡娮颖砀裎募拿苛卸己幸粋€(gè)數(shù)據(jù)數(shù)組,所以必須先轉(zhuǎn)換成二維數(shù)組。 返回前面板,執(zhí)行該VI 。數(shù)據(jù)數(shù)組產(chǎn)生以后,會(huì)出現(xiàn)一個(gè)文件對(duì)話框提示輸入新建文件的文件名。輸入文件名,并單擊 OK 。 可以嘗試選擇轉(zhuǎn)換與不轉(zhuǎn)換兩種情況運(yùn)行程序,查看結(jié)果差別。 保存該VI 為Waveform Arrays to File.vi ,并關(guān)

12、閉該VI ?,F(xiàn)在可以用電子表格軟件或者文本編輯器打開或者編輯剛才創(chuàng)建的文件??梢钥吹絻闪斜砀?每列含有100個(gè)元素。在這個(gè)例子中,直到所有數(shù)組都被采集以后,數(shù)據(jù)才可以被轉(zhuǎn)換或者寫入文件。如果需要更大的數(shù)據(jù)緩存和希望在數(shù)據(jù)產(chǎn)生后把它們寫入到硬盤,就需要使用另外一個(gè)文件I/O VI 。練習(xí) 4-3 結(jié)束。練習(xí) 4-4 向文件添加數(shù)據(jù)目的:創(chuàng)建一個(gè) VI ,可以把溫度數(shù)據(jù)以 ASCII 格式添加到某個(gè)文件中。該 VI 使用 For 循環(huán)產(chǎn)生溫度數(shù)據(jù),并將它們存儲(chǔ)到一個(gè)文件中。在每個(gè)循環(huán)期間,您都要把數(shù)據(jù)轉(zhuǎn)換成字符串,添加一個(gè)逗號(hào)作為分隔符,并將字符串添加到文件中。前面板打開一個(gè)新的前面板,并按照下圖

13、放置對(duì)象。 Chart append to file? 前面板中包括一個(gè)數(shù)字式顯示器和一個(gè)波形圖?!皵?shù)據(jù)點(diǎn)個(gè)數(shù)”控制對(duì)象指定了需要采流程圖 l l l l l l l l l l l 打開流程圖,添加 For 循環(huán)并增大它的面積。該 VI 將產(chǎn)生由“數(shù)據(jù)點(diǎn)個(gè)數(shù)”控制對(duì)象 指定的個(gè)數(shù)的溫度數(shù)據(jù)。 在循環(huán)中加一個(gè)移位寄存器, 方法是用鼠標(biāo)右鍵單擊循環(huán)邊界, 在快捷菜單中選擇移位 寄存器。這個(gè)移位寄存器中將含有文件的路徑名。 完成對(duì)象的連線。 Empty Path 常數(shù)(FunctionsFile IOFile Constants)用于初始化移位 寄存器,以保證需要對(duì)文件寫入數(shù)據(jù)時(shí)路徑都是空的。會(huì)出

14、現(xiàn)一個(gè)文件對(duì)話框提 示輸入文件名。 Digital Thermometer VI(FunctionsSelect a VI)返回一個(gè)模擬溫 度測(cè)量值(仿真) 。 Format Into String 函數(shù)(FunctionsString)將溫度數(shù)據(jù)轉(zhuǎn)換成字符 串,并且在數(shù)據(jù)后面增加一個(gè)逗號(hào)。 Write Characters To File VI((FunctionsFile I/O用于向文件寫入 字符串。 Boolean 常數(shù)(FunctionsBoolean)用于將 Write Characters To File VI 的 append to file?輸入為 TRUE, 這樣在循環(huán)執(zhí)行

15、時(shí)新的溫度數(shù)據(jù)就會(huì)加入到選中的文件中。用操作 工具單擊這個(gè)常數(shù)可以將它設(shè)置為 TRUE。 返回前面板,把“數(shù)據(jù)點(diǎn)個(gè)數(shù)”設(shè)置為 20,執(zhí)行該 VI。這時(shí)會(huì)出現(xiàn)一個(gè)文件對(duì)話框, 提示輸入文件名。輸入文件名以后,VI 就會(huì)在每個(gè)溫度數(shù)據(jù)產(chǎn)生時(shí),將它寫入到該文 件中。 把該 VI 保存為 LabVIEWActivity 目錄下的 Write Temperature to File.vi。 使用任意一個(gè)字處理軟件,例如 Write for Windows,Teach Text for Macintosh, 或 者 UNIX 平臺(tái)下的某個(gè)文本編輯器,打開該數(shù)據(jù)文件查看其內(nèi)容。您可以看到文件的內(nèi) 容是 20

16、 個(gè)用逗號(hào)分隔開的數(shù)值(準(zhǔn)確到小數(shù)點(diǎn)后三位) 。 練習(xí) 結(jié)束。 練習(xí) 從文件讀取數(shù)據(jù) 目的:創(chuàng)建一個(gè) VI,可以從上一個(gè)練習(xí)中創(chuàng)建的例子中讀取數(shù)據(jù),并把這些數(shù)據(jù)顯示在一 個(gè)波形圖形中。必須按照數(shù)據(jù)保存的格式來讀取它,因?yàn)樵瓉硎怯米址當(dāng)?shù)據(jù)類型,把數(shù)據(jù) 6 保存為 ASCII 格式,那么就必須用一個(gè)文件 I/O 函數(shù)把數(shù)據(jù)作為字符串讀出。 前面板 打開一個(gè)新的前面板,并按照下圖放置對(duì)象。 87.402344, 86.914062, 86.425781, 85.937500, 85.449219, 85.449219, 84.960937, 84.472656, 83.984375, 83.984

17、375, 83.984375, 83.984375, Graph 100.0 90.0 80.0 70.0 60.0 50.0 0 1 2 3 4 5 6 7 8 9 10 前面板中包括一個(gè)字符串顯示對(duì)象和一個(gè)波形圖。 “從文件讀字符串 “顯示對(duì)象將從上個(gè)練 習(xí)創(chuàng)建的文件中讀出用逗號(hào)分隔開的溫度數(shù)據(jù)。波形圖則用于顯示溫度曲線。 流程圖 l l Read Characters From File VI(FunctionsFile I/O)用于從文件中 讀取數(shù)據(jù),以及輸入字符串中的信息。如果沒有指定路徑名稱,將出現(xiàn)一個(gè) 文件對(duì)話框提示您輸入文件名。在這個(gè)例子中,無需判斷需要讀取的字符的 個(gè)數(shù),因?yàn)?/p>

18、文件的字符數(shù)比默認(rèn)的 512 要少。要從文件中讀取數(shù)據(jù),必須知道數(shù)據(jù)的存 儲(chǔ)方式。如果知道了文件的長(zhǎng)度,就可以使用 Read Characters From File VI 讀取指 定個(gè)數(shù)的字符。 Extract Numbers VI (ExamplesGeneralstrings.llb用于提取由逗 號(hào)、分行符號(hào)、非數(shù)值字符等分隔開的數(shù)據(jù)組成的 ASCII 字符串,并將它 們轉(zhuǎn)換成數(shù)值數(shù)組。 返回前面板,執(zhí)行該 VI。將出現(xiàn)一個(gè)文件對(duì)話框,在其中選擇剛才保存的數(shù)據(jù)文件, 您可以看到圖形中顯示的數(shù)據(jù)與 Write Temperature to File VI 例子中顯示的一樣。 保存該 VI 為 Temperature from File.vi,并關(guān)閉它。 l l 練習(xí) 結(jié)束。 數(shù)據(jù)記錄文件(datalog file) 上面提供的例子說明了處理 ASCII 字符格式存儲(chǔ)的數(shù)據(jù)的文件的簡(jiǎn)單方法。 在需要?jiǎng)?chuàng)建 供其他軟件(如電子表格軟件)訪問的文件時(shí)這種方法很有用。另外一種是稱為數(shù)據(jù)記錄文 7 件(datalog file)的數(shù)據(jù)格式。它與數(shù)據(jù)庫文件有類似之處,文件是由記錄組成的,一個(gè) 文件的所

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論