新聞中心

Labview字符串與文件I/O

作者: 時(shí)間:2017-01-06 來源:網(wǎng)絡(luò) 收藏
字符串

字符串是ASCII碼字符的集合,當(dāng)用戶與GPIB和串行設(shè)備的通信,讀寫文本文件以及傳遞文本信息時(shí),字符串都是非常有用的。字符串中的字符有些是可顯示的,有些則是不可顯示的。

本文引用地址:http://butianyuan.cn/article/201701/337002.htm

LabVIEW在功能模板上的字符串子模板中提供了一整套的字符串處理函數(shù),能夠完成各種字符串處理功能。常用的字符串對(duì)象包括字符串輸入控件和字符串顯示控件,它們位于控件→新式→字符串與路徑→字符串輸入控件,字符串顯示控件。如圖:

字符串的顯示方式:

在前面板上放置一個(gè)字符串輸入控件,右擊鼠標(biāo),彈出如圖所示的菜單:

從上圖中可以看出字符串有4種顯示方式

下圖是“www avrvi.com”分別用這4種方式顯示,如圖:

字符串函數(shù)

打開程序框圖中的字符串函數(shù),如圖:

字符串函數(shù)模板除了包含一般的字符處理函數(shù)以外,還包含各種字符常量,以及字符串與數(shù)字量,路徑的相互轉(zhuǎn)換函數(shù)。

其中最后一行包含了各種常量,可以方便的使用。

字符串應(yīng)用舉例:

例一:組合字符串

該例的目的是將一些字符串和數(shù)值轉(zhuǎn)化成一個(gè)新的輸出字符串。

  1. 新建一個(gè)VI,在前面板上放置字符串輸入控件“命令字”和“單位”,符串顯示控件“輸出命令字符”,數(shù)值輸入控件“數(shù)值”和數(shù)值顯示控件“字符串長度”。
  2. 切換到程序框圖,在字符串函數(shù)模板中選擇“格式化寫入字符串”,如圖連線:
  3. 雙擊“格式化寫入字符串”函數(shù),彈出如圖所示對(duì)話框
  4. 對(duì)它進(jìn)行參數(shù)設(shè)定,將分?jǐn)?shù)的長度改為4,如圖:

  5. 同樣在程序框圖中添加“字符串長度”函數(shù)計(jì)算字符串的長度,它用于返回輸出的命令字符串的長度。
  6. 完成連線,如圖:
  7. 運(yùn)行結(jié)果如圖:

例二:字符串子集和數(shù)值的提取

實(shí)際應(yīng)用中很多情況下,必須把字符串轉(zhuǎn)換成數(shù)值,例如需要將從儀器中得到的數(shù)據(jù)字符串轉(zhuǎn)換成數(shù)值。

該例的目的是從一個(gè)輸入的字符串中,提取一個(gè)子字符串,另外掃描字符串,將子字符串轉(zhuǎn)換為數(shù)據(jù)。

  1. 新建一個(gè)VI,按照如圖所示放置輸入和輸出控件。
  2. 切換到程序框圖,從字符串函數(shù)模板中,選擇“部分字符串”函數(shù),在該例中,它的功能是返回從偏移地址開始的指定長度的子字符串。
  3. 選擇“掃描字符串”函數(shù),它用于掃描字符串,并將有效的數(shù)值(0~9,正,負(fù),e和E)轉(zhuǎn)換成數(shù)值。如果連接了一個(gè)格式字符串,它將根據(jù)字符串指定的格式進(jìn)行轉(zhuǎn)換,否則將進(jìn)行默認(rèn)格式的轉(zhuǎn)換,該函數(shù)的初始掃描位置參數(shù)用于設(shè)置初始掃描位置,它與“數(shù)字相對(duì)偏移量”相連。
  4. 完成連線,如圖:
  5. 運(yùn)行結(jié)果如圖:

    注意:LabVIEW的偏移地址是從0開始計(jì)數(shù)的。

文件I/O

文件輸入輸出是程序設(shè)計(jì)中的一個(gè)重要概念,一般來說,文件是存儲(chǔ)在磁盤傷的數(shù)據(jù)的集合。文件輸入與輸出就是要在磁盤文件中保存和讀取信息數(shù)據(jù),以文件形式存儲(chǔ)起來的數(shù)據(jù)具有“永久性”,數(shù)據(jù)文件不僅可以與LabVIEW語言編寫的其他VI交換數(shù)據(jù),而且可以被其他程序共享。

文件輸入與輸出操作主要包括3個(gè)基本的步驟:新建或者打開一個(gè)已有的文件,對(duì)文件進(jìn)行讀寫和關(guān)閉文件。

LabVIEW支持的文件格式主要包含以下3種:

  • ASCII碼文本格式文件
  • 二進(jìn)制格式文件
  • LabVIEW數(shù)據(jù)記錄文件
  1. ASCII碼文本格式文件
  2. 文本文件又稱為ASCII碼文件或字符文件,它的每一個(gè)字節(jié)代表一個(gè)字符,存放的是這個(gè)字符的ASCII碼。文本文件的優(yōu)點(diǎn)是它幾乎在任何應(yīng)用程序中都是可讀的,這種文件最易于進(jìn)行整體互換,用戶可以用其他的軟件來訪問數(shù)據(jù),例如字處理軟件Word或者Excel等,在儀器控制系統(tǒng)中的大部分控制指令也是用文本字符串。當(dāng)然在寫文件之前必須要將所有的數(shù)據(jù)都變成ASCII字符串格式,讀文件之后要將字符串恢復(fù)為原數(shù)據(jù)值。

    文本文件的缺點(diǎn)是占用的磁盤空間較大,比如存儲(chǔ)一個(gè)浮點(diǎn)數(shù)-864.39571,因?yàn)槊總€(gè)字符要占用一個(gè)字節(jié),所以需要10個(gè)字節(jié)空間。文本文件的存取數(shù)據(jù)過程中存在ASCII碼與機(jī)器內(nèi)碼的轉(zhuǎn)換,所以存取數(shù)據(jù)的速度也比較慢。

  3. 二進(jìn)制格式文件
  4. 二進(jìn)制文件是把數(shù)據(jù)按其在內(nèi)存中存儲(chǔ)的形式(機(jī)器內(nèi)碼)原樣輸出到磁盤上,所以它的存取速度最快,格式也最緊湊。二進(jìn)制格式占用的磁盤空間比ASCII碼文本文件要小得多,對(duì)于上訴的浮點(diǎn)數(shù)-864.39571,如果存儲(chǔ)為單精度型,只占用4個(gè)字節(jié),要是存儲(chǔ)為雙精度型,則占用8個(gè)字節(jié)。

    用戶在讀寫二進(jìn)制文件時(shí),必須明確文件使用的時(shí)哪一種數(shù)據(jù)類型,各種類型的二進(jìn)制文件之間是不能通用的。二進(jìn)制格式文件可以隨機(jī)的訪問其中的某一數(shù)據(jù)。而這一點(diǎn)是文本文件無法比擬的,要想在文本文件中訪問某一數(shù)據(jù),則必須把它之前的數(shù)據(jù)全部都讀出來,才可以訪問所需要的數(shù)據(jù)。

  5. 數(shù)據(jù)記錄文件
  6. 數(shù)據(jù)記錄文件也是一種二進(jìn)制格式的文件,只有LabVIEW才可以對(duì)它進(jìn)行讀取和處理。數(shù)據(jù)記錄文件可以看成是數(shù)據(jù)庫文件格式,它將數(shù)據(jù)存儲(chǔ)為一系列相互獨(dú)立的有各自數(shù)據(jù)類型的記錄,就像簇一樣,每一個(gè)記錄可以包含不同類型的數(shù)據(jù),這些數(shù)據(jù)類型是由用戶事先指定的。LabVIEW允許用戶自由讀取數(shù)據(jù)記錄文件,在各個(gè)記錄中索引出不同數(shù)據(jù)類型的數(shù)據(jù),并且每一個(gè)記錄文件都包含由時(shí)間標(biāo)記。

    LabVIEW在程序框圖上的為我們提供了一整套功能強(qiáng)大而且方便靈活的文件輸入/輸出函數(shù),如圖:

    具體每個(gè)控件的作用和功能不在這里向大家詳細(xì)地介紹,下面將通過一系列地例子來說明各種文件的讀取。

例一:

使用“寫文本文件”函數(shù)寫文本文件

1.新建一個(gè)VI,在前面板上放置一個(gè)“波形圖表”,將標(biāo)簽內(nèi)容改為“溫度”,取消顯示曲線圖注和X,Y坐標(biāo)軸標(biāo)簽,同時(shí)放置一個(gè)數(shù)字輸入控件,將標(biāo)簽改為“采樣點(diǎn)數(shù)”。再放入一個(gè)“文件路徑輸入控件”,它位于控件→新式→字符串與路徑→文件路徑輸入控件,如圖:

2.后面板程序如圖:

其中用到了一個(gè)LabVIEW自帶的程序Digital Thermometer.vi,在程序框圖中點(diǎn)擊“選擇VI…”,如圖:

系統(tǒng)會(huì)自動(dòng)打開一個(gè)對(duì)話框,如圖:

在我的計(jì)算機(jī)里,它位于labview8.2→Activity→Digital Thermometer,如圖:

其中在“格式化寫入字符串”函數(shù)上的“%3.fn”是轉(zhuǎn)換后保留三位小數(shù),字符串間以回車間隔。


上一頁 1 2 下一頁

關(guān)鍵詞: Labview字符串文件I

評(píng)論


技術(shù)專區(qū)

關(guān)閉