本書系統(tǒng)、全面地講解了LabVIEW的編程技術(shù),主要內(nèi)容包括LabVIEW開發(fā)環(huán)境介紹、數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)、屬性節(jié)點(diǎn)、子VI與內(nèi)存管理、多線程應(yīng)用、程序設(shè)計(jì)模式、動態(tài)調(diào)用、常用控件的編程、文件操作、程序界面構(gòu)建、面向?qū)ο缶幊、LabVIEW與外部組件的通信、LabVIEW與硬件的通信、應(yīng)用程序制作和安裝包的生成。本書的特色是實(shí)例多,作者將多年的編程經(jīng)驗(yàn)精心制作為例題,例題中的程序代碼反映了LabVIEW編程中的重點(diǎn)和難點(diǎn),而且淺顯易懂,可以滿足不同層次讀者的需要。LabVIEW的編程思想和傳統(tǒng)的文本編程語言是有差別的,書中很多程序代碼提供了多種實(shí)現(xiàn)方法,通過這種舉一反三的形式幫助讀者理解LabVIEW的編程思想。
LabVIEW是美國國家儀器公司推出的應(yīng)用程序開發(fā)環(huán)境,配合高效的數(shù)據(jù)采集設(shè)備,可以快速構(gòu)建虛擬測控系統(tǒng)。隨著科技的不斷進(jìn)步,傳統(tǒng)儀器正逐漸向虛擬儀器方向發(fā)展。虛擬儀器具有可編程的特點(diǎn),借助計(jì)算機(jī)和通用的數(shù)據(jù)采集設(shè)備,可以編程實(shí)現(xiàn)或修改儀器的功能,實(shí)現(xiàn)了硬件的可重用性。
LabVIEW是一門高級編程語言,使用LabVIEW不僅可以構(gòu)建虛擬測控系統(tǒng),還可以開發(fā)Windows應(yīng)用程序并能生成程序安裝包。由于LabVIEW的這些優(yōu)勢,它正逐漸得到廣泛應(yīng)用,國內(nèi)外高等學(xué)校的工科專業(yè)一般都開設(shè)相關(guān)課程,學(xué)好LabVIEW對專業(yè)課的學(xué)習(xí)也是很有幫助的。對于LabVIEW的學(xué)習(xí)者,尤其是初學(xué)者,擁有一本容易入門、系統(tǒng)全面的編程教材是非常重要的。作者從事LabVIEW編程多年,在LabVIEW程序開發(fā)方面積累了大量的實(shí)踐經(jīng)驗(yàn),現(xiàn)將這些經(jīng)驗(yàn)編寫成書奉獻(xiàn)給讀者,希望對機(jī)械、電子、通信等相關(guān)專業(yè)學(xué)生的專業(yè)課學(xué)習(xí)有所幫助。
對于LabVIEW的學(xué)習(xí)者,掌握高效的學(xué)習(xí)方法是學(xué)好LabVIEW的重要因素。作為一門編程語言,編程實(shí)踐是極其重要的環(huán)節(jié)。在作者接觸的一些LabVIEW學(xué)習(xí)者中,有很多人說自己的編程水平提高得很慢。這些初學(xué)者都是在閱讀他人的程序,但自己很少動手編寫程序,這是學(xué)習(xí)編程語言的大忌。編程水平是在編程過程中得到提高的,只有多動手編程,才能盡快熟悉LabVIEW的開發(fā)環(huán)境。學(xué)習(xí)LabVIEW時(shí),應(yīng)該多動手編程,思考為什么要這樣編程,有沒有更好的方法實(shí)現(xiàn)這段程序,僅通過閱讀程序是無法提高編程水平的。根據(jù)作者的經(jīng)驗(yàn),對于初學(xué)者而言,大量抄寫已有的程序是快速提高編程水平的好方法。本書中有大量的例題,配套的程序都是作者精心編寫并通過調(diào)試的。初學(xué)者可以按照例題步驟反復(fù)抄寫例題的程序,以達(dá)到熟練掌握這些程序的目的。當(dāng)已經(jīng)熟悉了LabVIEW的編程環(huán)境并可以獨(dú)立完成VI的編寫時(shí),可以嘗試思考為什么要這樣編程,并在理解的基礎(chǔ)上獨(dú)立編寫書中例題。在編程時(shí),可以嘗試用不同的方法實(shí)現(xiàn)一段相同功能的程序,并比較程序運(yùn)行效率的高低。經(jīng)過這種舉一反三的編程,可以更加深入地理解LabVIEW的編程思想。
作者本著交流學(xué)習(xí)的態(tài)度撰寫本書,由于自身水平有限,書中難免有錯(cuò)誤之處,歡迎廣大讀者提出寶貴意見。如果您對書中的程序代碼有更精妙的實(shí)現(xiàn)方法,或者指出本書中的錯(cuò)誤,可以與作者聯(lián)系(songming82@163.com)。
宋銘
宋銘,中國石化集團(tuán)中原油田分公司工程師,主要從事虛擬儀器(LabVIEW)及工程檢測技術(shù)的研究,具有豐富的虛擬儀器設(shè)計(jì)開發(fā)與實(shí)踐經(jīng)驗(yàn)。
第1章 初識LabVIEW
1.1 虛擬儀器
1.2 LabVIEW
1.3 LabVIEW的控件
1.4 LabVIEW的修飾
1.5 LabVIEW編程元素
1.6 選中VI對象
1.7 完整的LabVIEW程序―VI
1.8 LabVIEW的項(xiàng)目
第2章 LabVIEW編程環(huán)境
2.1 前面板窗格
2.2 工具選板
2.3 VI菜單
2.4 工具欄
2.5 常用組合鍵
2.6 VI屬性
2.7 程序代碼調(diào)試
第3章 數(shù)據(jù)類型與運(yùn)算
3.1 數(shù)值類型
3.1.1 數(shù)值類型分類
3.1.2 數(shù)值型存儲
3.1.3 浮點(diǎn)數(shù)誤差
3.2 字符串類型
3.2.1 字符串存儲
3.2.2 字符串函數(shù)
3.3 布爾類型
3.4 數(shù)組
3.5 簇
3.6 變體
3.7 波形數(shù)據(jù)
3.8 枚舉類型
3.9 自定義類型
3.10 常量和變量
3.11 運(yùn)算類型
第4章 程序結(jié)構(gòu)
4.1 循環(huán)結(jié)構(gòu)
4.1.1 While循環(huán)
4.1.2 For循環(huán)
4.1.3 數(shù)據(jù)進(jìn)出循環(huán)的途徑
4.1.4 反饋節(jié)點(diǎn)
4.1.5 For循環(huán)的退出機(jī)制
4.1.6 While循環(huán)的退出機(jī)制
4.1.7 數(shù)據(jù)出循環(huán)的條件
4.1.8 循環(huán)結(jié)構(gòu)與數(shù)組函數(shù)
4.2 條件結(jié)構(gòu)
4.2.1 布爾類型輸入
4.2.2 整型標(biāo)量輸入
4.2.3 字符串類型輸入
4.2.4 枚舉類型
4.2.5 錯(cuò)誤簇
4.3 事件結(jié)構(gòu)
4.3.1 創(chuàng)建事件分支
4.3.2 通知事件
4.3.3 過濾事件
4.3.4 LabVIEW的事件源
4.3.5 多事件分支
4.3.6 事件結(jié)構(gòu)應(yīng)用
4.4 順序結(jié)構(gòu)
4.4.1 平鋪式順序結(jié)構(gòu)
4.4.2 層疊式順序結(jié)構(gòu)
4.4.3 平鋪式順序與層疊式順序的轉(zhuǎn)換
4.5 公式節(jié)點(diǎn)
第5章 屬性節(jié)點(diǎn)和方法
5.1 控件的屬性節(jié)點(diǎn)
5.2 屬性的類層次結(jié)構(gòu)
5.3 LabVIEW的屬性類
5.3.1 通用類
5.3.2 圖形對象類
5.3.3 修飾類
5.3.4 文本類
5.3.5 控件類
5.3.6 字符串類
5.3.7 布爾類
5.3.8 數(shù)值類
5.3.9 數(shù)字類
5.3.10 簇類
5.3.11 VI類
5.3.12 前面板類
5.4 LabVIEW的方法
5.4.1 控件的方法
5.4.2 VI的方法
5.5 屬性和方法的多線程
第6章 子VI與內(nèi)存管理
6.1 子VI的創(chuàng)建
6.1.1 從普通VI創(chuàng)建子VI
6.1.2 從程序框圖創(chuàng)建子VI
6.2 VI的四個(gè)內(nèi)存單元
6.3 多態(tài)VI
6.4 子VI中的程序結(jié)構(gòu)
6.5 子VI的執(zhí)行模式
6.5.1 不可重入VI
6.5.2 可重入VI
6.6 共享副本與數(shù)據(jù)竄改
6.7 子VI加載內(nèi)存的形式
6.8 子VI與屬性節(jié)點(diǎn)
6.9 子VI的生命周期
6.10 LabVIEW的內(nèi)存再分配
6.11 LabVIEW中的緩存重用
6.12 數(shù)據(jù)類型的轉(zhuǎn)換
6.13 合理的編程習(xí)慣
6.14 應(yīng)用程序的內(nèi)存管理
第7章 多線程
7.1 LabVIEW的執(zhí)行系統(tǒng)與多線程機(jī)制
7.2 多線程的執(zhí)行機(jī)制―時(shí)間片
7.3 LabVIEW多線程分類
7.4 多線程通信
7.4.1 局部變量
7.4.2 全局變量
7.4.3 隊(duì)列
7.4.4 LV2型全局變量
7.4.5 共享變量
7.4.6 數(shù)據(jù)傳遞機(jī)制讀/寫速度
7.4.7 LabVIEW變量的深入分析
7.4.8 子VI與主VI的實(shí)時(shí)通信
7.5 多線程同步
7.6 并行循環(huán)的停止機(jī)制
7.7 多線程的優(yōu)勢
7.8 多線程優(yōu)先級
7.9 多線程應(yīng)用
第8章 LabVIEW的設(shè)計(jì)模式
8.1 連續(xù)循環(huán)模式
8.2 事件處理器
8.3 狀態(tài)機(jī)
8.3.1 順序狀態(tài)機(jī)
8.3.2 改進(jìn)型狀態(tài)機(jī)
8.3.3 標(biāo)準(zhǔn)狀態(tài)機(jī)
8.3.4 事件狀態(tài)機(jī)
8.3.5 超時(shí)狀態(tài)機(jī)
8.3.6 自定義事件狀態(tài)機(jī)
8.4 隊(duì)列消息處理器
8.4.1 查詢模式的隊(duì)列消息處理器
8.4.2 事件驅(qū)動的隊(duì)列消息處理器
8.4.3 基于超時(shí)事件的隊(duì)列消息處理器
8.4.4 基于自定義事件的隊(duì)列消息處理器
8.4.5 基于回調(diào)機(jī)制的隊(duì)列消息處理器
8.4.6 多重嵌套的隊(duì)列消息處理器
8.5 頂層程序設(shè)計(jì)模式
8.6 多線程的模塊化
8.7 LabVIEW程序的構(gòu)建策略
8.8 連續(xù)循環(huán)時(shí)的事件響應(yīng)
第9章 動態(tài)調(diào)用技術(shù)
9.1 VI服務(wù)器與引用
9.2 動態(tài)控制VI
9.3 動態(tài)事件
9.4 LabVIEW的回調(diào)機(jī)制
9.5 多線程傳遞事件
第10章 常用控件的編程
10.1 列表框
10.1.1 列表框的屬性
10.1.2 列表框的方法
10.1.3 列表框的應(yīng)用
10.2 多列列表框
10.2.1 多列列表框的屬性
10.2.2 多列列表框的應(yīng)用
10.3 選項(xiàng)卡
10.4 樹形控件
10.5 波形圖表
10.5.1 波形圖表的外觀
10.5.2 波形圖表的數(shù)據(jù)輸入形式
10.5.3 圖形圖表類屬性
10.5.4 標(biāo)尺類屬性
10.5.5 波形圖表類屬性
10.6 波形圖
10.7 XY圖
10.8 XControl控件
第11章 文件I/O操作
11.1 常用的文件類型
11.2 常用的文件操作函數(shù)
11.3 報(bào)表
11.3.1 LabVIEW工具包
11.3.2 自動化函數(shù)
第12章 程序界面構(gòu)建
12.1 菜單
12.1.1 自定義菜單的創(chuàng)建
12.1.2 自定義菜單的響應(yīng)
12.2 快捷菜單
12.2.1 快捷菜單的創(chuàng)建
12.2.2 快捷菜單的響應(yīng)
12.3 工具欄
12.3.1 工具欄的創(chuàng)建
12.3.2 工具欄的響應(yīng)
12.4 對話框
12.5 狀態(tài)欄編程
12.6 界面的構(gòu)建實(shí)例
第13章 面向?qū)ο缶幊?
13.1 面向?qū)ο蟮木幊趟枷?
13.2 面向?qū)ο蟮幕靖拍?
13.3 LabVIEW的類
13.3.1 創(chuàng)建基類
13.3.2 類的繼承
13.4 面向?qū)ο蟮木幊虘?yīng)用
13.5 LabVIEW面向?qū)ο蟮睦追治?
第14章 LabVIEW與外部組件的通信
14.1 DLL
14.1.1 DLL的概念
14.1.2 DLL文件的制作
14.1.3 DLL文件的調(diào)用
14.2 Windows API
14.3 Active X
14.4 多進(jìn)程通信
第15章 接口通信和驅(qū)動程序開發(fā)
15.1 串口通信
15.1.1 串口通信的硬件介紹
15.1.2 基于LabVIEW的串口通信
15.2 USB總線通信
15.2.1 CH372概述
15.2.2 單片機(jī)與CH372的接口電路
15.2.3 單片機(jī)USB通信程序
15.2.4 基于DLL的USB通信
15.2.5 基于VISA的USB通信
15.3 計(jì)算機(jī)聲卡通信
第16章 LabVIEW應(yīng)用程序制作
16.1 修改主程序外觀
16.2 修改路徑
16.3 創(chuàng)建LabVIEW項(xiàng)目
16.4 生成應(yīng)用程序(EXE文件)
16.5 制作程序安裝包