Labview字符串與文件I/O
回到前面板,點(diǎn)擊“路徑”右邊的小圖標(biāo):
打開(kāi)一個(gè)對(duì)話(huà)框,選擇文件的存儲(chǔ)路徑,如圖:
選擇完后,程序即可運(yùn)行,運(yùn)行結(jié)果如圖:打開(kāi)記事本,即可看到寫(xiě)入的文件,如圖:
此程序中利用了For循環(huán)自動(dòng)索引的功能,一次產(chǎn)生了10個(gè)數(shù)據(jù),然后逐一寫(xiě)入文本。正因?yàn)榇耍?ldquo;寫(xiě)入文本文件”是高層文件I/O操作函數(shù),高層文件I/O操作函數(shù)每調(diào)用一次就會(huì)實(shí)現(xiàn)創(chuàng)建或打開(kāi)文件,讀寫(xiě)文件,關(guān)閉文件的整個(gè)過(guò)程。如果需要向文件中連續(xù)寫(xiě)入數(shù)據(jù),這樣的效率是非常低的。如果想要提高效率,可以采用底層文件I/O操作函數(shù)來(lái)實(shí)現(xiàn)寫(xiě)文本文件。
例二:
使用底層文件I/O操作函數(shù)向文本文件寫(xiě)入數(shù)據(jù)。
圖中框起來(lái)的便是底層文件I/O函數(shù)
前面板的構(gòu)建和例一類(lèi)似,下面是程序框圖:
從途中可以看出,程序進(jìn)行循環(huán)后,文件則被打開(kāi),這樣就可以一直向文件中輸入數(shù)據(jù),直到循環(huán)結(jié)束,才關(guān)閉文件,它大大提高了寫(xiě)文件的效率。
運(yùn)行結(jié)果如圖:
從上圖可以看出,每?jī)蓚€(gè)數(shù)字之間正好間隔一個(gè)Tab定界符。
例三:寫(xiě)電子表格文件
“寫(xiě)入電子表格文件”函數(shù)的應(yīng)用與“寫(xiě)入文本文件”函數(shù)的應(yīng)用十分相似。它能直接寫(xiě)入一維或是二維的數(shù)據(jù)。程序框圖如圖:
圖中Generate Waveform.vi也使LabVIEW自帶的一個(gè)VI,它與前面所講的Digital Thermometer.vi在同一個(gè)文件夾里,它是用于模擬產(chǎn)生抽樣信號(hào)的。該函數(shù)默認(rèn)的是將數(shù)據(jù)在表格中按行排列,那么一個(gè)二維數(shù)組的記錄則只有兩行,若在該接口中給其賦值“真”,則數(shù)據(jù)會(huì)按列排列。
運(yùn)行結(jié)果如圖:
打開(kāi)保存的電子表格文件,即可看到數(shù)據(jù)
例四:讀文本文件
該例采用在例一中保存的文件,程序框圖如圖:
說(shuō)明:其中用到了一個(gè)LabVIEW自帶的子VI:Extract Numbers,它位于LabVIEW8.2→examples→general→strings,如圖:
單擊確定后,系統(tǒng)會(huì)彈出下面的對(duì)話(huà)框:
選擇Extract Numbers.vi,它的作用是提取由逗號(hào),分行符號(hào),非數(shù)值字符等分隔開(kāi)的數(shù)據(jù)所組成的ASCII字符串,并將它們轉(zhuǎn)換成數(shù)值數(shù)組,用于將讀取的字符串轉(zhuǎn)換為雙精度數(shù)據(jù)類(lèi)型的一維數(shù)組。運(yùn)行結(jié)果如圖:
例五:另一種讀取文本文件的方法
上面的例子是用一個(gè)函數(shù)完成了,文件的打開(kāi),讀取,關(guān)閉。和寫(xiě)入文本文件時(shí)一樣,我們也可以通過(guò)三個(gè)函數(shù)來(lái)實(shí)現(xiàn)以上的三個(gè)步驟,程序框圖如圖:
其中For循環(huán)默認(rèn)的是自動(dòng)索引,在連線(xiàn)后,需將圖中框起來(lái)的兩個(gè)節(jié)點(diǎn)禁用索引。運(yùn)行結(jié)果如圖:
例六:讀取電子表格文件
本例使用例三所產(chǎn)生的表格文件。
程序框圖如圖:
運(yùn)行結(jié)果如圖:
從結(jié)果中可以看到,因?yàn)槔谏杀砀裎募r(shí)采用的格式為“%.3ft”,所以從該電子表格中讀取數(shù)據(jù)時(shí),中間的一行空白LabVIEW會(huì)自動(dòng)把它們默認(rèn)為0數(shù)組,從而在波形圖表中顯示的時(shí)候會(huì)出現(xiàn)中間的一行紅線(xiàn)。
評(píng)論