歡迎!

歡迎使用 Agilent VEE Pro 幫助。點擊上面的 Contents 或 Index 按鈕可以方便地找到您需要的內容。

現在 Agilent VEE Pro 還提供其他語言版本的幫助。您只需將安裝目錄下的 vee.chm 重命名為 English.chm，再將您想要的本地化版本的幫助文件重命名為 vee.chm 就可以了。比如，將veeJapanese.chm 重名為 vee.chm。

Agilent VEE Pro 8.0 新增功能

在 Agilent VEE Pro 8.0中所修复的錯誤

Microsoft/MS-DOS/Windows/MS Windows/Windows NT/Excel/Word/.NET/Outlook/ActiveX/Visual Basic/Visual C# 是微軟公司在美國和/或其他國家的商標或注冊商標。

PostScript 是Adobe系統公司的商標。

MATLAB 是 MathWorks 公司的注冊商標。

National Instruments/NI/LabVIEW/和 SCXI/是國家半導体公司的注冊商標。

PXI 是PXI系統聯盟的注冊商標。

IVI/and IVIplug&play 是IVI Foundation的注冊商標。

Pentium Intel 公司在美國的注冊商標。

Arial/和 Times New Roman/是Monotype公司在美國的注冊商標。

Copyright (c) 1991-2007 Agilent Technologies, Inc.


AgilentVEE Pro 8.0 新功能

Watch Window

Watch Window 使用戶在調試時，可以查看和修改變量和輸入/輸出端的值，之后程序還能用修改后的值繼續執行。

點擊工具欄上的 [image] 按鈕，或選擇 View [image] Watch Window 可以打開如下的Watch Window對話框。

詳情請參閱 Watch Window

范例

Datatype.vee, Globals.vee, Terminals.vee

Code Completion 和 Code Insight

Code Completion 和 Code Insight 給那些編寫 Formula 對象的用戶帶來了極大的好處因為它可以減少鍵盤輸入和對外部文檔的查閱和記憶。無需离開上下文，就可以完成對所需信息的查找，并將其加入程序中。 你甚至可以讓 Agilent VEE 替你完成輸入。詳情請參閱 Code Completion 和 Code Insight。

Color Syntaxing

1. 注釋被標記為綠色，常量字符串被標記為深紅色，關鍵字為藍色。

2. 公式中的錯誤被標記為紅色波浪線。

3. 括號為灰色的框。

Code Completion 和 Code Insight 支持的對象

支持的對象

Code Completion

  • .NET objects

  • Named VEE Objects

  • COM objects

  • Built-in Constants

  • Built-in Functions

  • Records

Code Insight

  • Member functions of .NET and COM objects

  • Local UserFunctions

  • Imported UserFunctions

  • Built-in Functions

  • Imported Remote Functions

  • Imported Compiled Functions

Programmatic Properties

Programmatic properties 幫助用戶更快地常見更好的GUI。它允許用戶在程序運行時動態地讀取/設置VEE對象, .NET 對象, 和 COM 對象的屬性。請參閱范例程序ProgrammaticPropertyDemo.vee for a quick demo of this powerful new feature.

詳情請參閱 To Change Properties Programmatically 和 To Change Object's Name and Scope。

范例

ProgrammaticPropertyDemo.vee DemoTabIndexChangeDemo.vee

Minimap

Minimap是整個詳細視圖的一個略圖，其中的紅色矩形框為當前程序可視部分。單擊工具欄上的 [image] 按鈕或選擇View [image] Minimap可以打開 Minimap。 下圖為一個 Minimap 的示例。

紅色矩形框顯示的是當前可視部分在整個詳細視圖的相對位置。點擊Minimap上的一個位置，詳細視圖就可以迅速地跳到相應的位置。詳情請參閱 Minimap 。

Home按鈕

Agilent VEE 8.0 在工具欄上新增了一個Home [image] 按鈕，它可以將快速地定位到當前上下文(Main, UserFunctions, 或 UserObjects)的左上角。

新的執行模式和數据類型

從8.0版開始，Agilent VEE支持兩种新的數据類型- Int64 和 Boolean 以及一個新的執行模式（Execution Mode）- VEE 8。

雖然從5.0版開始，就可以把 TRUE 和 FALSE 當作常量來使用，但是那時候，TRUE 和 False都不是真正的 Boolean 常量。它們還是 Int32類型的。從Agilent VEE 8.0開始，這兩個常量就是真正地Boolean型了。

Agilent VEE 8.0 支持的邏輯運算有 AND, OR, NOT, XOR, ==, 和 !=。

此外，Agilent VEE 8.0 也在Compiled Functions中支持 Boolean 類型。用戶可以將 VEE_BOOL 作為返回類型和Complied Function的參數類型來使用。VEE_BOOL被作為Boolean來處理。詳情請參閱 Boolean。

与Boolean有關的新菜單項和內置函數:

  • Data => Constant => Boolean

  • Data => Constant => Boolean Array

  • Data => Alloc Array => Boolean

  • asBoolean(x)

Int64可以表示最高精度的整數。Agilent VEE 提供兩個built-in 數字常量來表示最大和最小的 int64 的值︰MaxInt64 和 MinInt64。常量在不同 Execution Mode 下被解釋為不同的數据類型。詳情請參閱 Int64。

与Int64有關的新菜單項和內置函數:

  • Data => Constant => Int64

  • Data => Constant => Int64 Array

  • Data => Alloc Array => Int64

  • asInt64(x)

統一為VISA型設備

Agilent VEE 8.0 開始采用統一的方法(VISA) 來聲明和使用I/O 設備，舊的不一致的I/O 設備的聲明和使用方法（一些設備使用SICL 方法，一些設備使用VISA 方法）將被逐漸淘汰。雖然我們鼓勵用戶使用新型的設備，但是我們仍會對舊設備提供兼容支持。詳情請參閱here。

在一個圖形對象上通過一個輸入端顯示多條軌跡

這一功能可以讓用戶在事先不知道將要顯示的軌跡的數目時，也能在Agilent VEE 的圖形對象上動態地將這些軌跡( 一組軌跡) 顯示出來。

圖形對象的詳細視圖的屬性中新增了一項被稱為'MatrixInput'的Boolean屬性。當這個MatrixInput屬性設為True時，這個對象就可以接受一個 2D 數組作為輸入數据并同時顯示多條軌跡。這個數据容器從一個輸入端輸入。圖形對象會知道一共有多少條軌跡（最多12條）要顯示并給它們以合适數量的圖例，然后繪制出點（列）。該屬性在程序運行時不能來回切換，所以用戶必須在編寫Agilent VEE 程序時就清楚以后是否要用到這种新功能。h.

詳情請參閱以下范例 2dXyTrace.vee, MatrixInputStripChart.vee.

增強的多事務操作功能

本功能增強了所有基于事務的Agilent VEE 對象（比如 Direct IO) 的操作。現在，用戶不僅可以使用標準的快捷鍵對多個事務同時進行諸如复制、刪除和選擇等許多操作，還可以使用標準的快捷鍵對事務進行上移和下移。

主要新增功能包括︰

* 任意選擇，刪除，复制和粘貼多個事務。

* Undo/Redo Add/ Insert/ Delete/ Cut/ Paste/ Edit/ Move up/ Move down 操作

* 標準 Windows快捷鍵

CTRL+X 將選擇的事務剪切到"cut-and-paste"緩沖區(對象菜單 [image] Cut Trans)。

CTRL+V 將選擇的事務從"cut-and-paste"緩沖區剪貼到當前所指位置(對象菜單 [image] Paste Trans)。

CTRL+C 將選擇的事務复制到"cut-and-paste"緩沖區(對象菜單 [image] Copy Trans)。

Delete 刪除列表中所選事務(對象菜單 [image] Delete Trans)。

Insert 將一個事務插入到所選事務前面 (對象菜單 [image] Insert Trans).

CTRL+Z undo最后一次操作。

CTRL+Y redo最后一次操作。

CTRL+Up 上移所選事務(對象菜單 [image] Move Trans Up)。

CTRL+Down 下移所選事務(對象菜單 [image] Move Trans Down)。

Shift+Up/Down 選擇多個事務。

增強的Record 使用功能

這個新功能為聲明，創建和拆分紀錄變量和常數提供了一個快速便捷的方法。另外，使用新的內置函數 buildRecord()，用戶還可以在運行時指定域名和域值來動態地創建一個記錄。

Agilent VEE 8.0 從以下三個方面增強了記錄的使用性︰

1. 為 Record 類型的 Declare Variable 對象的上下文菜項 Generate 新增了三個子項。用戶可以方便地生成 Record Constant 對象，Build Record 對象，以及 Unbuild Record 對象。

2.為 Record 類型的 Record Constant 對象新增了一個有兩個子項的上下文菜項 Generate 。用戶可以方便地生成 Declare Variable 對象和 Unbuild Record 對象。

3. 新增了一個內置函數︰ buildRecord (fieldNameTextArray, field1, field2, fieldN)

buildRecord()可以用于創建一個記錄，其域名和值在運行前不可知。第一個參數為域名的字符串數組。接下來的參數為各個域的值。這些域的總數須与域名數組的長度相匹配。buildRecord()返回一個有指定域名和域值得標量記錄。以下為兩個范例︰

buildRecord(fieldNameList2Long, field1, field2);

builldRecord(fieldNameList8Long, field1, field2, field3... field8);

詳情請參閱 buildRecord()。

增加了對 NIDAQmx 的支持

Agilent VEE 8.0 增加了對 NI 新的數据采集驅動程序庫 NIDAQmx 的支持。這不僅支持對庫中所有函數的訪問還包括對在線幫助的訪問 。Instruments Manager 可以自動搜索到使用 NIDAQmx 驅動程序的儀器。

面板視圖中的滾動條

當面板視圖不足以放下所有的對象時，滾動條會自動出現。通過改變面板對象的"ScrollbarsEnabled" 屬性可以將這一功能打開或關閉。缺省值是關閉。 詳情請參閱 here 。

更多儀器使用范例

增加了16個新的儀器使用范例，它們都位于 examples\instrumentIO\InstrumentManagerIntegrated目錄下。

此外還更新了許多范例程序。

另請參閱

以前版本的新增功能，在 Agilent VEE Pro 8.0中所修复的錯誤。


安裝Agilent VEE

安裝Agilent VEE和I/O庫

您可以下載或訂購評測版VEE。它是一個全功能版本的產品。在安裝時，系統會提示您輸入一個產品密碼，輸入沒有引號的“eval”。

通過購買產品密碼，您可以全面激活評測版本。一旦在郵件中收到產品密碼，從主菜單Help [image] Product Key中輸入密碼。也可以訂購或下載完整的產品。產品密碼証書与產品一起發給您，或從网上下載時單獨發給您。

VEE在下述操作系統上運行︰Windows 2000 SP4和Windows XP.SP1(如果希望与Windows 98第二版, Windows NT 4.0 with Service Pack 6a或Windows Millenium Edition一起使用VEE Pro，應使用VEE Pro 7.03)

  • 從光盤上安裝VEE。一定要作為有管理權限的用戶登錄。把光盤放在光驅中。應自動開始安裝。如果沒有自動安裝，進入Start菜單，選擇Run，輸入︰

[光驅盤符]:\cdsetup.exe

  • 從WWW下載中安裝VEE。下載VEE自我解壓的可執行文件。下載的自我解壓文件位于選擇的下載目錄中。運行自我解壓可執行文件，解壓VEE安裝文件。文件解壓到您選擇的目錄中。從這個目錄中，運行cdsetup.exe。

為協助您滿足安全需求，系統會提示您是為PC所用用戶安裝程序還是只為一個用戶安裝程序。選擇哪個選項滿足您的安全需求。

如需与I/O庫有關的更多信息，請參閱与其一起得到的安裝資料。(VEE使用I/O庫与儀器通信。)

安裝和分發VEE Pro RunTime (Help [image] Contents和Index [image] Installing和Distributing VEE Pro RunTime)顯示了怎樣安裝和分發RunTime版本的VEE Pro。RunTime版本用來在沒有安裝VEE軟件的PC上運行VEE程序。如需与運行時環境有關的更多信息，請參閱聯机幫助。選擇Help, Contents and Index和Installing and Distributing Agilent VEE Pro RunTime。

另請參閱

配置VEE for Windows


配置Agilent VEE

VEE for Windows使用Windows Registry存儲VEE環境信息。可以在VEE Default Preferences對話框中改變多個VEE窗口屬性(使用File [image] Default Preferences)。這些屬性保存在下面目錄的默認文件VEE.RC中︰

%userprofile%\LocalSettings\Application Data\Agilent\VEE Pro

或

在定義了HOME時，在 %HOME% 中。

顏色和字体設置

通過選擇File Þ Save As，可把顏色和字体与程序一起保存。下圖所示為 Save File 對話框。

對顏色和字体，只有改變的設置保存在VEE.RC默認文件中。

定制圖標位圖

可以把任何圖標化對象顯示的圖標變成位圖或像素圖。VEE提供了許多文件，您也可以創建自己的文件。VEE for Windows支持24位.BMP位圖文件 .GIF87, .GIF89a, .PNG (可移植网絡圖像)和.WMF (Windows圖元文件)。為選擇對象圖標，點擊對象菜單中的Properties特性，然后使用Properties對話框中的Icon欄。

可以使用任何編輯器為對象圖標創建自己的位圖，輸出VEE支持的圖形格式，如MS Windows Paint。應把圖標的大小指定為48x48。圖標越大，在VEE程序區中占用的空間越多；圖標太小，查看起來會很困難。還可以在Paint中使用屏幕捕獲工具，如Print Screen。

為面板視圖選擇一個位圖

可以選擇一個位圖，作為面板視圖的背景。這适用于面板視圖中顯示的UserObjects和VEE程序。面板視圖圖標必須使用VEE支持的格式。還可以使用創建的圖標，如上一段所述。

為選擇一個位圖作為面板視圖的圖標，啟動面板視圖，以便Panel和Detail按鈕出現在標題欄中(在面板中添加一個對象)。點擊對象菜單，然后點擊Properties。使用Properties對話框上的Panel欄，選擇位圖。

另請參閱

改變默認顏色, 改變默認字体


使用VEE范例程序

VEE包括許多范例程序，幫助您了解其怎樣工作。范例程序作為VEE安裝過程的一部分安裝。

范例目錄

默認的范例目錄為︰

C:\Program Files\Agilent\VEE Pro 8.0\examples\

運行范例

可以使用Help菜單加載和運行范例程序，具体如下︰

1 點擊菜單欄上的Help Þ Open Example。出現一個子目錄列表，其中把類似的范例划分在一組中。(也可以使用File Þ Open Þ Examples加載VEE范例。)

2 雙擊所需的子目錄，查看該組中的程序。

3 滾動列表，直到找到所需的范例。

4 點擊范例名稱，然后點擊OK打開程序。系統會提示在工作區中保存任何現有的程序。

5 按工具欄上的Run按鈕，運行程序。


啟動Agilent VEE

可以啟動在同一台PC上運行的多個VEE拷貝。但是，如果兩個VEE拷貝試圖同時存取相同的系統資源(如I/O接口)，那么可能會發生意想不到的結果。

如需与使用VEE Pro RunTime運行程序有關的信息，請參閱防止程序變化和在Windows中創建應用程序圖標。

使用Windows Start按鈕

1. 點擊Start按鈕，然后指向Programs [image] Agilent VEE Pro 8.0。

從Windows桌面啟動

1. 根据Windows Help中的說明，使用Windows資源管理器在桌面上放一個Agilent VEE應用程序快捷方式。.

在默認情況下，VEE安裝在︰

C:\Program Files\Agilent\VEE Pro 8.0\vee.exe

除非您把它安裝在另一個目錄下。

2. 一旦建立了快捷方式，可以雙擊快捷方式圖標，啟動Agilent VEE。

另請參閱

使用命令行選項啟動Agilent VEE


使用命令行選項啟動Agilent VEE

Agilent VEE提供了多种命令行選項，可以使用這些選項啟動VEE和VEE Pro RunTime。例如，可以指定在VEE啟動時加載的一個VEE 程序文件。也可以選擇在VEE Pro RunTime中加載和運行一個程序。

使用命令行選項啟動VEE和VEE Pro RunTime

1. 點擊Windows Start按鈕，然后點擊Run...

2. 輸入vee 或 veerun，然后選擇希望的選項，按Enter。veerun命令在選項后還要求一個程序文件名。

或

1. 打開一個MS-DOS窗口。

2. 輸入 start vee.exe 或 start veerun.exe ，然后選擇希望的選項，按Enter。veerun命令在選項后還要求一個程序文件名。

滾動本文內容，了解提供的選項和范例。

技巧

如果把VEE快捷方式放在桌面上，可以修改快捷方式的屬性，使其包括命令行選項。

滾動本文內容，了解提供的選項和范例。

提供的選項

下表說明了在使用VEE或 VEE Pro RunTime時為每個平台提供的選項。表后面介紹了每個選項。

選項 | Windows
 | VEE | VEE Runtime
-d directory | X | X
-disallowclose |  | X
-enablewarnings |  | X
filename | X | X
-geometry | X | X
-help | X | X
-iconic | X | X
-ioconfig |  | X
-maximize | X | X
-noerrdisp | X |
-nologo | X |
-preconfig |  | X
-r filename | X |
-secure ProgramName | X |
-stderr:filename ProgramName | X | X
-stdout:filename ProgramName | X | X
-veeio path to filename | X | X

選項說明

-d directory

-d選項啟動VEE，使用位于指定目錄下、而不是默認VEE安裝目錄下的相關文件，如儀器驅程。

-disallowclose

防止用戶在運行程序時關閉VEE Pro RunTime窗口。

-enablewarnings

在把程序加載到VEE Pro RunTime中時顯示錯誤和警告對話框。如果沒有這個選項，VEE Pro RunTime會在程序加載過程中抑制所有正常錯誤和警告對話。在禁用錯誤顯示時，加載失敗只會提供一條一般性(用處較差)信息，如︰"File format is invalid"。通過使用
-enablewarnings，可以看到更具体的導致問題的原因。

filename

這對vee命令是可選的，對veerun命令是必選的。vee命令啟動VEE，在VEE工作區中打開filename指定的VEE 程序。veerun命令啟動VEE Pro RunTime，運行filename指定的VEE 程序。對Windows，如果filename包含空格，那么整個文件名(包括路徑)必須包括引號。

-geometry widthXheight+/-xoffset+/-yoffset
或
-geometry +/-xoffset+/-yoffset (使用默認窗口尺寸)

指定使用的初始窗口几何圖形，而不是默認几何圖形。几何圖形值用像素表示。正偏置值相對于屏幕左上角定位窗口左上角。負偏置值相對于屏幕右下角定位窗口右下角。

偏置+0+0是屏幕的左上角。

范例︰ -geometry 640X480+20+20在640像素寬、480像素高的窗口中啟動VEE，即從屏幕左上角向右20個像素，向下20個像素。

-help

顯示VEE命令行選項。(不要与VEE聯机幫助系統混淆，VEE聯机幫助系統從VEE內部啟動。)

-iconic

-iconic選項作為圖標啟動VEE，而不是窗口。雙擊圖標，打開一個窗口。

-ioconfig

這個選項在VEE Pro RunTime窗口中打開Instrument Manager對話框，允許改變I/O配置文件vee.io。這個命令中不要包括程序文件名，否則會被忽略。

如果Instrument Manager對話框沒有落在VEE窗口內部，那么也可以使用-geometry選項，放大VEE或VEERun窗口。

-maximize

這個選項在全屏的放大窗口中啟動VEE。

-noerrdisp

這個選項可以与-r一起使用。如果与-r一起使用，且指定程序由于錯誤而沒有運行，那么VEE會立即退出，而不會顯示錯誤信息。

-nologo

這個選項在VEE開始運行前抑制出現的啟動信息。在Windows上，不會出現啟動信息對話框。

-prefconfig

這個選項在VEE Pro RunTime窗口中打開Default Preferences對話框，允許改變默認配置。這個命令中不要包括程序文件名，否則會被忽略。

如果Default Preferences對話框沒有落在VEE窗口內部，那么也可以使用 -geometry選項，放大VEE或VEERun窗口。

-r filename

-r選項啟動VEE，運行filename指定的VEE 程序。在程序運行結束時，VEE立即退出。但是，如果發生錯誤，在VEE退出前會顯示一條錯誤信息。如果沒有指定文件名，VEE會忽略-r選項。如果filename包含空格，那么必須在整個文件名外面加上引號，包括路徑。一般來說，最好使用veerun命令，而不是-r選項。

-secure ProgramName

使用ProgramName作為源文件創建有安全保護的程序。下述命令在与源文件相同的目錄下創建文件myProg.vxe︰

vee -secure myProg

-stderr:filename ProgramName

創建一個名為filename的標準錯誤日志文件，在加載和運行ProgramName時記錄VEE生成的錯誤信息(如果發生錯誤)。可以在filename中包括一個目錄路徑。

-stdout:filename ProgramName

創建一個名為filename的標準輸出文件，在加載和運行ProgramName時記錄VEE生成的錯誤信息(如果發生錯誤)。可以在filename中包括一個目錄路徑。

-veeio path to filename

VEE允許有多個I/O配置文件(vee.io)。這個選項允許指定在啟動VEE時希望使用的配置文件。

范例: 使用文件名啟動VEE for Windows

為啟動Agilent VEE for Windows，自動打開程序myprog.vee︰

1. 點擊Windows Start按鈕，然后點擊Run...

2. 輸入vee myprog.vee，按Enter。如果文件名中包含空格，應在文件名外面使用引號。

或

1. 打開一個MS-DOS窗口。

2. 輸入start vee myprog.vee，按Enter。如果程序沒有位于當前目錄下，指定一條路徑。如果文件名中包含空格，應在文件名外面使用引號。

范例: 使用-disallowclose啟動VEE RunTime for Windows

為在VEE RunTime中運行程序myprog.vee，防止關閉執行窗口︰

1. 點擊Windows Start按鈕，然后點擊Run...

2. 輸入veerun -disallowclose myprog，按Enter。如果文件名中包含空格，應在文件名外面使用引號。

或

1. 打開一個MS-DOS窗口。

2. 輸入start veerun -disallowclose myprog，按Enter。如果程序沒有位于當前目錄下，指定一條路徑。如果文件名中包含空格，應在文件名外面使用引號。

另請參閱

在Windows創建應用程序圖標, 啟動Agilent VEE


与Agilent VEE交互

本節介紹了怎樣使用VEE圖形編程語言，包括支持的系統列表、鼠標和菜單的工作方式、怎樣獲得幫助及怎樣使用VEE窗口。

支持的系統

下述操作系統支持這一版VEE︰

• Windows 2000 SP4或更高版本和Windows XP SP1或更高版本。

它要求下述額外軟件︰

• Agilent IO Libraries Suite 14.2或更高版本和/或NI Libraries 3.0版。

鼠標和菜單

您可能熟悉計算机鼠標驅動的和菜單驅動的界面︰使用鼠標和鍵盤控制的下拉菜單、工具欄和對話框。VEE使用計算机界面。在使用鼠標操作菜單、圖標、按鈕和對象的指令中，常用技朮如下︰

• “點擊”或“單擊”項目是指把鼠標指針放在希望的項目上，迅速按下和放開鼠標左鍵。

• “雙擊”項目是指把鼠標指針放在希望的項目上，迅速連續按鼠標左鍵兩次。

• “拖動”項目是指把鼠標指針放在希望的項目上，按住鼠標左鍵，把項目移動到相應位置，然后放開鼠標按鈕。

備注

鼠標右鍵使用的頻次較低。我們會建議是否需要點擊鼠標右鍵。如果鼠標有一個中間按鈕，VEE中不使用這個按鈕。

Agilent VEE窗口

在已經安裝和啟動VEE后，您會看到VEE窗口，如下圖所示。

下述項目描述了VEE窗口的各個部分。

屏幕指稱 | 說明
標題欄 | 窗口中最上面一行包含著VEE圖標、窗口名稱及最小化、最大化和關閉按鈕。拖動標題欄，可以移動窗口。點擊VEE圖標，會出現窗口菜單。
菜單欄 | 第二行包含菜單項，每個菜單項提供了VEE命令或對象。
工具欄 | 第三行包含圖標或按鈕，可以直接進入(或“以快捷方式”)最常用的菜單命令。(把鼠標指針放在一個按鈕上，VEE會顯示其功能。)
工作區 | 編程(編輯)窗口中的一個區域，如Main, UserObject怯煲erFunction，在這里放置對象，把對象連在一起。
Program Explorer | VEE窗口左側區域，顯示VEE程序的結構。上角顯示當前程序名稱，如myprog.vee，或顯示Untitled。 Program Explorer允許在多個編程窗口之間移動。為調整Program Explorer大小，在右面邊界上移動正常指針，直到它變成垂直分叉指針，點擊鼠標，移動窗口。
主窗口 | 包含工作區的一個窗口，在這里可以開發和編輯VEE程序。可能還有其它編程/編輯窗口，如UserObject。
狀態欄 | 最底下一行顯示与VEE狀態有關的信息，包括右角上的四個狀態指示符。指示符(從左到右)顯示︰ 執行模式 配置程序的狀態 在已經修改程序時，出現MOD 啟用Web服務器

獲得幫助

VEE為VEE環境提供了聯机幫助系統，并為各個對象和主題提供了聯机幫助。此外，可以在計算机及操作系統自帶的文檔中獲得幫助信息。PC聯机幫助包括下述相關信息︰

• 在菜單欄上選擇命令

• 選擇和解除菜單項

• 使用工具欄

• 了解標題欄和狀態欄

• 點擊鼠標和按鈕

• 使用對話框

• 使用各類窗口

• 使用聯机幫助

在開始時，您可能想從Help [image] Welcome屏幕開始，在這里可以使用VEE多媒体教程。會顯示下面的Welcome屏幕。

VEE聯机幫助是為您的操作系統設計的。點擊Help，出現下面的菜單。幫助中包括目錄和索引、Welcome菜單(教程所在位置)、儀器驅程、网站信息、范例和版本號。

盡管您不必使用VEE文檔完成這一進度自定的培訓，但可以查詢產品文檔，了解与某個功能或概念有關的更詳細的信息。使用Help系統，搜索需要定位的VEE內容。Help系統可以“跳”到相關內容。

選擇Contents and Index，啟動VEE Help。

Help Contents欄包含下述內容。

What’s New in VEE | 定義
How Do I... | 為常用任務提供“怎樣做”信息。
Tell Me About... | 解釋VEE概念。
Guide to Agilent VEE Example Programs | 概括与VEE一起提供的范例程序。
Reference | 為所有函數和對象提供參考信息。
About Agilent VEE Support | 提供与獲得VEE支持有關的信息。
Installing和Distributing Agilent VEE Pro Runtime | 解釋怎樣分發VEE Pro RunTime環境。

備注

獲得選擇的對象和對話框的幫助信息的快捷方式是按鍵盤上的F1。此外，點擊對象菜單中的Help，可以獲得与該對象有關的特定信息。

在開發程序時，如需与使用特定聯机幫助功能有關的更多信息，請參閱使用聯机幫助


處理對象

VEE程序由連接的多個對象組成。為創建程序，從VEE菜單中選擇對象，如Flow, Data和Display。各個對象使用附在對象端的直線連接。(如需与端有關的更多信息，請參閱“了解端和終端")。創建一個程序，其中包括連接的一組對象。

本節介紹了怎樣在程序中選擇和使用對象。

1 啟動VEE。在Windows中點擊Start [image] Programs [image] Agilent VEE Pro。

2 根据本節說明做對象實驗。

在工作區中添加對象

拉出相應菜單，點擊希望的對象，把對象拖到工作區中相應位置，點擊鼠標(外框消失，出現對象)。

1 例如，為在工作區中添加一個Function Generator對象，在菜單欄中選擇Device [image] Virtual Source [image] Function Generator，如下圖所示。工作區中出現對象外框。

備注

Virtual Source右面的箭頭表明一個子菜單。菜單項后面的三個點表明后面有一個或多個對話框。例如，File [image] Save As...采取這种方式。

2 把Function Generator移動到工作區的中心，點擊鼠標，放置對象，出現Function Generator。

在已經把一個對象放在工作區中后，可以拖動標題欄，移動對象，就象移動窗口一樣。

備注

在本聯机幫助中，使用速記符號解釋指令。例如，選擇Function Generator對象精簡為下述格式︰
Device [image] Virtual Source [image] Function Generator

備注

為在屏幕上提供更多的空間，點擊View [image] Program Explorer。這會反選它，把它從屏幕中刪除。在前面顯示了一個對號時，菜單項被“選中”。

改變對象視圖

VEE在“圖標視圖”或“Open View”中顯示對象。

詳細視圖 圖標視圖

圖標視圖節約了工作區中的空間，使程序更加可讀。Open View提供了更詳細的信息，允許編輯對象的屬性和設置。

1 為從Open View切換到圖標視圖，點擊Minimize按鈕 (對象標題欄右端的框)。

2 為返回Open View，雙擊對象圖標視圖(對象上任何地方)。

并不是所有對象都采用相同的結構或部分，但可以在Open View中編輯對象，在圖標視圖中節約空間。

備注

對象菜單還有Minimize和Restore選項。為顯示對象菜單，點擊標題欄左端的對象菜單按鈕，或在對象上任何地方按鼠標右鍵。

選擇對象菜單

每個VEE對象都有一個對象菜單，允許在對象上執行各种操作，如Clone, Size, Move和Minimize。大多數對象的屬性類似，但也有差別，具体取決于對象的功能。

1 為選擇對象菜單，在對象菜單按鈕上單擊鼠標。(所有對象菜單都以相同的方式打開。) 出現的對象菜單如下。(不要雙擊對象菜單按鈕，這是刪除對象的快捷方式。)

2 現在可以點擊其中一個對象菜單選項，執行希望的操作。或者為解除菜單，可以點擊菜單外面的空白區域。

也可以把鼠標指針放在對象實体的任何地方，按鼠標右鍵，選擇對象菜單。這同時适用于Open View和圖標視圖。

移動對象

1 為移動Function Generator對象，點擊對象菜單中的Move，然后點擊按住鼠標左鍵。出現對象外框。

2 按住鼠標鍵，把外框移動到新位置。放開鼠標鍵，對象移動到新位置。

也可以通過下述方式移動對象︰

• 點擊對象Open View的標題區域，把對象拖到新位置。

• 除按鈕、輸入字段、端、終端或四個角(其用來調整對象大小)外，點擊Open View對象的任何部分，把對象拖到新位置。

• 除四個角附近(其用來調整對象大小)外，點擊圖標視圖對象的任何部分，把圖標拖到新位置。

備注

位于狀態欄(在VEE 窗口底部)中的Object Location Information提供了外框左上角相對于工作空間左上角的X和Y位置(用像素表示)。為查看對象的确切位置，在對象上按鼠標左鍵，選中對象，按住鼠標左鍵。狀態欄中會顯示位置。在需要把對象放在确切位置時，使用這些信息。

复制(或克隆)對象

Clone操作創建一個完全重复的對象，包括所作的任何變化，如确定大小或重命名。克隆是复制和粘貼的快捷方式。

1 打開對象菜單，選擇Clone，出現复制的對象的外框。

2 把外框移動到希望的位置，點擊放置對象。出現克隆的對象，原始對象保持不變。在下圖中，Function Generator已經被克隆一次，對象菜單已經選擇命令，再克隆一次。

复制對象

這一操作把一個對象复制到剪切板中，因此可以把它粘貼到VEE或另一個程序中，如MS Paint或MS Word。

點擊一個對象，高亮度顯示這個對象，然后點擊Edit [image] Copy。

或

點擊一個對象，高亮度顯示這個對象，然后按Ctrl-C。

刪除對象

為從工作區中刪除對象，進入希望刪除的對象的對象菜單，點擊Delete。例如，進入Function Generator的對象菜單，點擊Delete。對象從工作區中消失，但它保存在緩沖器中。

打開對象菜單，選擇Delete。

或

選擇對象(點擊它)，按Ctrl-X。

或

把鼠標光標放在對象菜單上，雙擊鼠標。

備注

要注意，很容易會因為雙擊對象菜單按鈕而意外刪除對象。如果意外刪除了對象，可以使汁煣do工具欄按鈕 (或Edit [image] Undo)，恢复對象及對象的所有連接。

粘貼對象

為把复制的對象粘回工作區，采取下述步驟。

在已經克隆、复制或刪除了一個對象后 (使用Ctrl-X )，點擊Edit [image] Paste。出現對象外框。放置對象，點擊釋放。

或

按Ctrl-V。

改變對象大小

把鼠標指針放在對象四個角的任何一個角上，直到看到一個确定大小的箭頭，然后點擊鼠標拖到希望的大小。釋放鼠標調整大小。下圖顯示了使用确定大小的箭頭調整的對象。

或

打開對象菜單，點擊Size。鼠標指針變成“右下角”括弧。把括弧移動到希望的右下角位置，點擊鼠標，調整大小。

改變對象的名稱(標題)

1 打開對象菜單，選擇Properties...。在屏幕左側出現一個Properties窗口。選擇Title屬性，把屬性值變成希望的值。

2 標題區中出現新的標題。如果最小化對象，新的標題出現在圖標中。

或

雙擊對象標題欄，直接進入Properties對話框。

備注

可以使用標準鍵盤和鼠標編輯技朮，節約時間。例如，在Properties對話框Title字段中，如果點擊編輯區域最左邊，那么這里會出現光標。然后可以增加新的文件本，而不必刪除現有標題。

選擇或反選多個對象

1 為選擇一個對象，點擊對象，對象后面出現陰影。例如，在下圖中，選擇了For Count對象。

2 為反選一個對象，把鼠標指針移動到任何打開區域，點擊鼠標，陰影消失。例如，在下圖中，沒有選中Formula對象。

備注

“選擇”一詞也用來表示選擇一個菜單項，但要視上下文而定。

選擇多個對象

如果點擊選擇一個對象，那么將只選擇一個對象。如果再次點擊選擇另一個對象，前一個對象會反選，其陰影消失。如果想選擇多個對象，以一次在所有對象上執行操作，如Delete，采取下述步驟︰

按住Ctrl按鈕，點擊不同的對象。在高亮度顯示選擇的所有對象后，放開Ctrl按鈕。

或

按Ctrl，然后在要選擇的多個對象周圍點擊畫一個矩形。選擇的對象出現陰影。

選擇/反選所有對象

1 為選擇所有對象，點擊Edit [image] Select All。(或按Ctrl-A)

2 為反選所有對象，點擊窗口中打開的區域。

复制多個對象

把光標放在一個對象上，复制選擇的對象。按住Ctrl，同時使用鼠標左鍵，把多個對象(外框)拖到希望的位置。希望的位置出現每個對象的新實例。

或

或使用Edit [image] Copy，把選擇的對象复制到緩沖器中。點擊Paste (在Edit菜單中或在工具欄上)，把對象(外框)移動到希望的位置，按鼠標左鍵。下圖是复制過程中的對象。

備注

在VEE中，剪切或复制的對象還會放在剪貼板上。可以把它們粘貼到支持Windows剪貼板的其它Windows程序中。

編輯對象

有多种方式在VEE中編輯對象。不同的編輯菜單顯示不同的選項。選擇一個編輯菜單或圖標，具体如下︰

點擊VEE菜單欄上的Edit，顯示Edit菜單，選擇希望的操作。Edit菜單的命令對所有VEE相同。

或

點擊VEE工具欄上的一個圖標。VEE工具欄包含常用的編輯命令的圖標，如Cut, Copy和Paste。

或

點擊對象，打開對象的對象菜單，選擇希望的操作。對象菜單包括一個對象特定的編輯操作，如Properties菜單，其沒有位于主Edit菜單中。對象菜單中的命令視對象類型不同而變化。例如，比較一下Device [image] Formula和I/O [image] To [image] File對象中的對象菜單，這兩個菜單包含對象專用的不同選項。

或

把鼠標指針放在空白工作區空間的任何地方，按鼠標右鍵。出現彈出Edit菜單。

備注

不活動的菜單項的陰影与活動項不同(它們“變成灰色”)。例如，Edit菜單中的Cut、Copy和Clone操作的陰影与活動菜單項不同，直到在工作區中高亮度顯示一個對象。

創建對象之間的數据線

1 點擊一個對象的數据輸出端或點擊數据輸出端的外面，然后點擊另一個對象的數据輸入端，如下圖所示(在從一個端移動到另一個端時，指針后面出現一條線。)

2 放開光標，VEE在兩個對象之間划一條線。注意，如果重新确定對象位置，VEE會保持兩個對象之間的線。

如需与端有關的更多信息，請參閱“了解端和終端"。

刪除對象之間的數据線

按Shift-Ctrl，點擊想刪除的線。

或

選擇Edit [image] Delete Line，點擊想刪除的線。

移動整個工作區

(在工作區中至少要有一個圖標。) 把鼠標指針放在工作區背景的任何地方，按住鼠標左鍵，以任何方向移動工作區。

如果程序大于工作區，會出現滾動條，如下圖所示。

備注

如果在端附近點擊鼠標，可能會出現一條直線或“線”。如果發生這种情況，把指針移動到打開的區域，雙擊鼠標。

清除工作區

點擊Edit [image] Select All，然后點擊工具欄上的Cut按鈕。這會把活動窗口中的所有對象剪切到Cut緩沖器中。

或

選擇File [image] New，或點擊工具欄上的New按鈕。VEE詢問是否想保存變化。

或

點擊對象，使其活動，然后點擊工具欄上的Cut按鈕，清除各個對象。

改變默認首選項

Default Preferences對話框在VEE環境中改變默認設置。

點擊工具欄上的Default Preferences按鈕。

或

點擊File [image] Default Preferences，出現Default Preferences對話框。

這個對話框有多個欄，允許選擇要編輯的選項。

欄名稱 | 說明
General | 出現Default Preferences對話框(如上所示)時的默認欄。可以改變顯示的參數值，如Environment和Execution Mode。
Colors | 允許在VEE環境中定制顏色。
Fonts | 允許在VEE環境中定制字体。
Number | 允許改變默認數字格式。
Printing | 允許設置打印机的參數值。
Web Server | 允許啟動內置Web服務器，從遠程Web瀏覽器監測和診斷程序。

如需更多信息，從VEE菜單欄中選擇Help [image] Contents and Index。然后瀏覽How Do I..., Tell Me About...,或Reference。

另請參閱

對象怎樣運行, Agilent VEE程序怎樣工作

Copyright (c) 1991-2006年安捷倫科技公司版權所有


了解端和終端

VEE程序由工作區中的對象及連接對象的線組成。連接VEE對象的線在對象線之間連接。每個對象有多個端。我們以Formula對象為例，可以使用任何對象。 菜單

端類型 | 說明
數据輸入端 | 對象左側的一個端(或多個端)。
數据輸出端 | 對象右側的一個端(或多個端)。
序列輸入端 | 對象頂部的端。
序列輸出端 | 對象底部的端。

連接數据輸入端和輸出端，在對象之間傳送數据。在默認情況下，各端從上到下執行。序列端連接是可選的。如果連接，它們會決定執行順序。

如需更多信息，請參閱“遵守對象內部的事件順序"。

在對象的Open View中，數据輸入端和輸出端表現為輸入終端和輸出終端。(如果對象位于圖標視圖中，雙擊它，切換到Open View。) 終端傳送詳細信息，如終端名稱、傳送的數据類型和值。只有在Open View中，且只有對該對象啟動了Show Terminals選項時(參閱對象菜單中的Properties...)，才能看到終端標記。

例如，下圖包括兩個Formula對象。左面的Formula對象顯示了終端標記A和Result。右面的Formula對象關閉了Show Terminals，因此看不到標記。

啟動Show terminals 關頭Show terminals

為啟動或關閉Show Terminals，從對象菜單中選擇Properties。屏幕左側出現屬性窗口。選擇屬性ShowTerminals，把它設為True。

選擇屬性，把ShowTerminals設為False。再次選擇屬性，把ShowTerminals設為True。

添加一個終端

可以在一個對象中添加多個終端。例如，可以在Formula對象中添加第二個數据輸入終端。

打開對象菜單，選擇Add Terminal [image] Data Input。

或

在啟動Show Terminals時，可以把鼠標指針放在“終端區域”中(Open View對象的左邊距)，按Ctrl+A (同時按Ctrl鍵和A鍵)。

下圖顯示了為添加數据輸入終端而打開的Formula 對象菜單，以及已經添加了第二個終端的另一個Formula對象。新終端標為B。如果數据輸入象儀器驅程一樣固定在特定函數，您會獲得由這些函數組成的菜單。否則，終端命名為A, B, C... 。

編輯終端信息

為獲得与終端有關的信息，雙擊標記區域。例如，雙擊B，出現對話框。

現在可以編輯終端。對話框有三种字段︰

字段類型 | 說明
輸入字段 | 背景為白色的字段，但沒有箭頭。在點擊時，它會變成輸入字段。例如，可以在Name字段中點擊B，重命名終端。
狀態字段 | 背景為灰色的字段，不能編輯。例如，Mode字段不能編輯。
選擇字段 | 背景為白色的字段，同時在右側有一個箭頭。點擊字段或其箭頭，會顯示一個下拉列表。例如，如果點擊Required Type字段中的Any (或箭頭)，可以點擊列表，從列表中選擇另一個數据類型，如下圖所示。

如果為數据輸入終端選擇Any之外的數据類型，那么終端只接受指定數据類型或可以轉換成該類型的數据。在大多數情況下，最好把Required Type和Required Shape字段設為Any。如需更多信息，從VEE菜單欄中選擇Help [image] Contents and Index。然后，瀏覽How Do I..., Tell Me About...,或Reference。

刪除終端

打開對象菜單，選擇Delete Terminal [image] Input...或Delete Terminal [image] Output，選擇要刪除的輸入或輸出，點擊OK。例如，下圖顯示了在選擇Delete Terminal [image] Input...時出現的對話框。

或

把鼠標指針放在終端上，按CTRL-D。

如果确定不想刪除終端，從任務欄中選擇Undo按鈕。

另請參閱

連接多個對象，構成一個程序


查找對象在菜單中的位置

為查找對象在菜單中的位置及顯示与對象有關的信息，選擇Help => Contents and Index，點擊Index一欄，輸入對象名稱，點擊Display。

例如，選擇Help => Contents and Index，點擊Index一欄，輸入Collector。點擊Display，顯示Collector對象的Help主題。


打開范例程序文件

技巧

VEE Help 中的下述內容包含范例程序說明以及把它們加載到新的VEE窗口中的鏈接︰

VEE范例程序指南

Agilent VEE

VEE提供了多個范例程序。這些范例位于下面的子目錄中︰
C:\Program Files\Agilent\VEE Pro 8.0\examples.
例如，在VEE中使用MATLAB Script的范例位于下面的子目錄中︰

C:\Program Files\Agilent\VEE Pro 8.0\examples\MATLAB

通過點擊VEE 工具欄上的Open按鈕，可以打開任何程序文件，包括范例。但是，為方便起見，可以從Help中打開范例程序︰

1. 選擇Help [image] Open Example，出現Open File對話框，但?#30446;標?#26159;范例目錄。

2. 雙擊一個子目錄名稱。

3. 點擊您想打開的范例文件的文件名，然后點擊Open。


打開VEE程序文件

1. 點擊VEE 工具欄上的Open按鈕，出現Open File對話框。

Open File對話框在默認目錄下查找要打開的程序文件︰
C:\Documents and Settings\[your username]\My Documents\VEE Programs.
（在默認狀態下，點擊Save按鈕，在該目錄中保存程序。）

Open按鈕

Save按鈕

2. 點擊想要打開的程序文件的文件名，然后點擊Open。或在File name輸入字段中輸入一個文件名，然后點擊Open。


從庫文件中合并對象和程序

VEE提供了多個庫對象(預建的UserObjects)和完整的庫程序，可以把它們合并到自己的VEE程序中。

1. 選擇File [image] Merge，出現Merge對話框。

在默認情況下，Merge對話框查看下述目錄中的庫對象和程序︰
C:\Program Files\Agilent\VEE Pro 8.0\lib.
通過改變目錄，還可以把任何VEE程序文件合并到工作區中。

2. 點擊希望打開的庫文件名稱，然后點擊Open。對象被合并到工作空間中。可以象任何VEE對象一樣把它連接到程序中。


啟動VEE程序

Agilent VEE為運行程序提供了多种執行模式，即VEE 3, VEE 4, VEE 5, VEE 6和VEE 8。使用Default Preferences設置模式。在默認情況下，使用VEE 8.0編寫的程序在VEE 8執行模式下運行。在默認情況下，使用VEE 7.X或VEE 6.0編寫的程序在VEE 6執行模式下運行。在默認情況下，使用VEE 5.0編寫的程序在VEE 5執行模式下運行。在默認情況下，使用VEE 4.x在VEE 4執行模式下運行，老式程序在VEE 3執行模式下運行。您可以在較新的模式下運行較老的的程序，但它們可能不會以預期方式運行，可能需要修訂。應按需修訂VEE 3模式程序，才能在VEE 4模式中正确運行程序，然后才能在VEE 5或更高模式中運行程序。

為啟動整個VEE程序，包括程序內的所有線程，在VEE工具欄上點擊Run按鈕。

Run按鈕

不管是否有Start對象，工作區內的所有線程都會啟動。

如果希望能夠獨立啟動程序中的單個線程，在線程中添加一個Start對象 (在Flow菜單下)。在點擊Start對象按鈕時，將只啟動包含Start對象的線程。

如果線程采用feedback，那么線程在反饋周期內部必須包含一個Junction對象，以在VEE 4或更高的執行模式下運行。只有在這种情況下，才要求Junction對象。如果運行的程序包括線程和反饋，但沒有Junction對象，那么會報告錯誤。

范例: 兩個線程，每個線程有一個Start對象

如果只想運行頂部線程，點擊其Start按鈕。 線程運行，在 AlphaNumeric對象中顯示"Now is the time"，如上圖所示。但是，底部線程不會運行。

如果點擊底部線程中的Start，線程會運行，但頂部線程不會運行。

如果點擊Run按鈕，程序的兩個線程都將運行。在每個線程中，傳播從Start對象開始。

快捷方式

在鍵盤上按CTRL+G，可以運行VEE程序。

另請參閱

默認首選項


在VEE程序內進行分支

在VEE程序內建立分支

使用Flow 菜單下的If/Then/Else或Conditional [image] 對象，對VEE程序中的執行流程進行分支。

使用If/Then/Else對象建立條件分支

1、在工作區中添加If/Then/Else對象（從Flow菜單）。

2、根据需要修改條件測試表達式。例如，為了測試值是否滿足?#22823;于等于0.5且小于0.6?#30340;條件，使用表達式.5<=A AND A<.6.（當調用UserFunctions并訪問全局變量時，可以在If/Then/Else對象表達式字段中使用VEE支持的任何邏輯或關系數學運算符。）

3、如果新表達式需要，可以添加額外的數据輸入端。在默認的情況下，只有一個輸入端（A）。如果您想比較A、B值的大小（例如，A<=B），則需要添加一個名為B的數据輸入端。

4、把要測試的數据源連接到數据輸入端。

5、最后，連接Then和Else輸出端，根据需要激活程序中的不同對象或分線程。

范例︰使用If/Then/Else

使用表達式.5<=A AND A<.6測試Random Number對象的輸出值。如果這個值位于指定的范圍內，Then輸出端激活頂部的AlphaNumeric對象，如上圖所示，這個對象用來顯示隨机數字。如果這個值不在指定范圍內，Else輸出端激活底部的AlphaNumeric對象，這個對象用來顯示Try Again。這個例子說明了一個簡單的情況，您可以使用Then 和Else終端來激活任意類型的程序線程。這個例子作為manual01.vee保存在manual范例目錄中（Help [image] Open Example）。

使用條件對象

Flow [image] Conditional [image] (If A == B, If A ~= B, If A != B, If A < B, If A > B, If A <= B, and If A >= B)下的對象實際上是預先定義的If/Then/Else對象。每個對象有兩個數据輸入端（A和B），執行預先定義的測試，比較A和B的值。Then 和Else輸出端的作用与If/Then/Else對象中相同。實際上，可以象在If/Then/Else對象中一樣，添加或刪除端，改變表達式。例如，您可以在If A == B對象中添加一個C端，將測試改為A == B OR B <= C。

范例︰增加Else If條件

If/Then/Else和Conditional對象還有另一個功能-- Else If 條件。可以增加一個或多個Else If條件(對象菜單 [image] Add Else/If)。如果前面的條件沒有滿足，那么會測試每個Else If條件。例如，下面的If/Then/Else對象有兩個Else If條件︰

這個對象的工作方式如下︰

1、對表達式0<=A AND A<10求值，如果表達式為?#30495;?#65292;那么在Then端輸出結果。（如果表達式的求值結果為一個非零值，則其為?#30495;?#12290;）

2、否則，對表達式A<20求值，如果表達式為?#30495;?#65292;那么在相應的Else If端輸出結果。

3、如果A<20為?#20551;?#65292;則對表達式A<30求值，如果A<30為?#30495;?#65292;那么在相應的Else If端輸出結果。如果為?#20551;?#65292;那么在Else端輸出結果。

另請參閱

If/Then/Else


循環部分VEE程序

在VEE程序使用循環

可以使用下面列出的其中一個重复對象，循環(重复)部分VEE程序。可以在任何對象的循環中，包括Next和Break對象，其均位于Flow [image] Repeat菜單下。

繼續向下滾動編程范例。

重复對象摘要

For Count

輸出計數，從0開始，重复輸入字段中指定的次數。默認值是10，這會使計數重复10次，從0到9。

For Range

在數据輸出端重复輸出一個值，從From值開始，在每次重复時增加值Step。如果Step為正，那么For Range重复，直到輸出值大于Thru值；如果Step值為負，那么For Range重复，直到輸出值小于Thru值。

For Log Range

与For Range類似，但采用對數標度。初始值輸出是From，但第n個值是From*exp10(n/(/Dec))。如果/Dec為正，那么For Log Range重复，直到 輸出值大于Thru值；如果/Dec為負，那么For Log Range重复，直到輸出值小于Thru值。

For Each

對VEE數組支持，For Each語句處理由任何維數(1-10)、任何維數長度和任何類型組成的任何VEE數組。它將在ExecModes下工作。對COM支持，For Each語句處理可以枚舉或循環的任何COM (ActiveX)對象。這類對象通常具有"Count"屬性和"Item()"方法，表明它是一個集合，但嚴格地說，并不要求這些項目。COM/ActiveX用于ExecModes 5和更高版本中。對.NET支持， For Each語句處理可以枚舉或循環的任何.NET對象，如StringCollection。這類對象通常也有"Count"屬性和 "Item()"方法，表明它是一個集合，但嚴格地說，并不要求這些項目。.NET對象用于ExecModes 6&7和更高版本中。

Until Break

連續激活數据輸出端，直到Break對象在線程范圍內操作。

On Cycle

定期輸出當前時間值(默認周期是1秒)，直到Break對象在線程范圍內操作。

Next

使循環立即開始下一次迭代。

Break

使循環立即結束。

范例: For Count循環

在下面的范例中，For Count對象導致Random Number對象操作10次。For Count對象的序列輸出端表明For Count什么時候完成操作(循環重复完成)。 Collector采集一個數組中的10個隨机值，但只有For Count的序列輸出端激活Collector上的XEQ端時，才會輸出數組。

范例: 每秒獲取一個讀數

在下面的范例中，On Cycle對象每秒執行一次，導致HP 34401A万用表的儀器面板對象每秒輸出一個讀數。這個程序生成模擬的讀數，因為HP 34401A的實地模式是OFF。每個讀數輸出到Logging AlphaNumeric 顯示畫面上，并輸出到 If/Then/Else對象中。If/Then/Else對象導致Break對象操作，在第一個值大于等于7時停止循環。Logging AlphaNumeric顯示畫面到If/Then/Else對象的序列輸出行保証在循環停止前顯示最后讀數。為Time Stamp格式配置的AlphaNumeric對象報告每次獲取讀數的時間。這個范例作為manual02.vee 保存在手冊范例目錄下(Help [image] Open Example)。

范例: 并行循環和嵌套循環

在下面的范例中，程序中包括多個并發運行的并行循環及一個嵌套循環。Thread 1和Thread 2是并行循環。 Subthread 1a嵌套在Thread 1內部。支持多級嵌套。

在使用循環時要避免下面的情況，這些情況會導致傳播矛盾，產生意想不到的結果。在VEE 4或更高版本的執行模式下運行程序會產生錯誤。

1. 不要交叉連接多個并行循環。

2. 不要合并多個循環 (如使用JCT或Math對象)。

另請參閱

Help [image] Open Example...手冊范例目錄下的manual03.vee and manual04.vee 。


停止VEE 程序

一旦已經啟動一個VEE 程序，它將根据傳播規則運行，直到完成，然后停止運行。

在傳播完以前停止VEE程序的方式

在VEE工具欄上點擊Stop按鈕。

Stop按鈕

點擊Pause按鈕會臨時暫停程序。然后點擊Resume按鈕繼續執行程序，或點擊Stop按鈕停止程序。

Pause按鈕

Resume按鈕

使用Stop和Exit Thread對象。可以在您的程序中包括一個Stop或Exit Thread對象，定義什么時候終止程序。例如，可以使用If/Then/Else對象條件分支到Stop或Exit Thread對象。在這些對象運行時，程序會永久停止，就象點擊Stop鍵一樣。

使用Raise Error對象。您可以使用Raise Error 對象，導致發生錯誤，暫停程序。

快捷方式

在鍵盤上按CTRL+P暫停（不是停止）程序。

在鍵盤上按CTRL+G恢复暫停的程序。

備注

在VEE 4或更高執行模式中，如果在Default Preferences中打開Disable Debug Features，那么Pause命令會失效。

另請參閱

默認首選項 Exit Thread Stop 捕獲錯誤


改變默認顏色

可以改變所有程序的默認顏色。

1. 點擊VEE工具欄上的Default Preferences按鈕，然后在對話框中選擇Colors欄。

Default Preferences按鈕

2. 點擊Screen Element字段或其箭頭。下拉菜單顯示屏幕要素選項。

3. 點擊列表中希望改變的屏幕要素。下拉列表消失，該屏幕要素的當前顏色顯示在Color Value字段中。

4. 點擊Color Value按鈕，出現Select Color對話框，顯示提供的顏色調色板。在調色板中用虛框顯示屏幕要素的當前顏色選項。顏色還顯示在Preview區域中。

5. 為選擇新顏色，在調色板中點擊不同的顏色，然后點擊OK，返回Default Preferences對話框。

6. 根据需要為多個屏幕要素選擇顏色，然后保存選擇結果。

7. 選擇希望怎樣保存為屏幕要素選擇的新顏色︰

a. 如果想把選擇的顏色保存為永久的默認顏色，點擊Save。這會在vee.rc文件中保存新的默認顏色。未來的VEE會話將把新顏色作為默認值 (直到再次改變顏色)。

b. 如果想只對當前VEE會話使用選擇的新顏色(直到選擇File [image] New, Open,或Exit)，點擊OK。

c. 如果想使用選擇的新顏色，并把它与VEE程序一起保存，點擊OK，然后進入File [image] Save As?/span>，在Options區域勾選Save colors and fonts。

d. 如果想取消選擇的新顏色，點擊Cancel。

e. 如果想放棄當前設置，返回默認文件vee.rc中的設置，點擊Reset。

另請參閱

默認首選項 使用顏色 怎樣選取顏色


改變對象的顏色

每個對象都有一個可以從對象菜單中進入的Properties Window。可以從這個窗口的Appearance類別中，改變某個對象的顏色。

1. 在對象上點擊鼠標右鍵，打開其對象菜單。從對象菜單中選擇Properties，然后從屬性窗口中選擇Appearance類別。.

可以改變的顏色取決于對象的特定類。一般來說，可以在對象的標題欄和Open View中改變背景和文本。

2. 選擇想改變的屬性。

3. 為選擇新的顏色，點擊列表中的不同顏色。

4. 選擇的新顏色出現在對象中，覆蓋默認顏色。變化只影響選擇的對象，在保存程序時保存。

快捷方式

雙擊對象標題欄，進入Properties窗口。

備注

可以在對象菜單上使用Properties改變Main Window、UserObjects和UserFunctions的Panel View顏色。每個上下文必須存在Panel Views，然后才能改變顏色。在程序運行時，Main Window的面板顏色還應用到Execution Window中。必須打開UserObject和 UserFunction編輯窗口，才能設置函nanel View顏色。如需与創建Panel Views有關的詳細信息，請參閱VEE Help在How Do I ?font style="font-family: 'Courier New';" face="Courier New"> Build an Operator Interface下的幫助內容。

另請參閱

使用顏色 怎樣選取顏色


改變默認字体

可以在工作區中改變屏幕要素的默認字体。

備注

1. 點擊VEE工具欄上的Default Preferences按鈕，然后在對話框中選擇Fonts欄。

Default Preferences按鈕

2. 點擊Screen Element字段或其箭頭。下拉菜單顯示屏幕要素選項。

3. 點擊列表中希望改變的屏幕要素。下拉列表消失，顯示該屏幕要素的字体值。

4. 點擊Font Value按鈕，出現Select Font對話框。

5. 點擊相應的字段或其箭頭，從兩個下拉列表中選擇字体名稱和字號。點擊相應的复選框，還可以選擇Bold和Italic。點擊OK，返回Default Preferences對話框。

字体列表允許選擇系統中安裝的任何字体。

6. 根据需要為多個屏幕要素選擇字体，然后保存選擇結果。

7. 選擇希望怎樣保存字体選擇結果︰

a. 如果想把選擇的新字体保存為永久的默認字体，點擊Save。這會在vee.rc文件中保存新的默認字体。未來的VEE會話將把新字体作為默認值 (直到再次改變字体)。

b. 如果想只對當前VEE會話使用選擇的新字体(直到選擇File [image] New, Open, 或Exit), 點擊OK。

c. 如果想使用選擇的新字体，并把它与VEE程序一起保存，點擊OK，然后進入File [image] Save As?/span>，在Options區域勾選Save colors and fonts。

d. 如果想取消選擇的新字体，點擊Cancel。

e. 如果想放棄當前設置，返回默認文件vee.rc中的設置，點擊Reset。

另請參閱

默認首選項 使用字体


改變對象的字体

每個對象都有一個可以從對象菜單中進入的Properties Window。可以使用這個窗口改變某個對象的字体。

備注

1. 在對象上點擊鼠標右鍵，打開其對象菜單。從對象菜單中選擇Properties，然后選擇希望改變的Font 屬性。

可以改變的字体取決于對象的特定類。一般來說，可以改變Title文本和Object 文本的字体。

2. 點擊希望改變的文本屬性，出現Select Font對話框。

3. 點擊相應的字段或其箭頭，從兩個下拉列表中選擇字体名稱和字號。字体列表允許選擇系統中安裝的任何字体。通過點擊相應的复選框，還可以選擇Bold和Italic。

為使用Default Preferences中設置的默認字体，點擊Default复選框。

點擊OK返回Properties窗口。

選擇的新字体出現在對象中，覆蓋默認字体。變化只影響這個特定的對象，在保存程序時保存。

快捷方式

雙擊對象標題欄，進入Properties窗口。

另請參閱

使用字体


改變對象標題

1. 從對象菜單中選擇Properties，出現Properties Window。

2. 從列表中選擇標題，輸入新標題。

快捷方式

雙擊對象的標題欄，進入Properties窗口。

備注

可以使用Main Window對象菜單上的Properties，改變Execution Window的標題。首先必須存在Panel View for Main。這個標題在Program Explorer中作為程序名稱使用。如需与創建Panel Views有關的詳細信息，請參閱How Do I ?!--[if gte vml 1]> [image] Build an Operator Interface。


重复操作

允許進行重复操作的一個Edit菜單選項。

用途

Undo命令會撤銷操作結果。在Undo操作前，通過使用Redo命令，可以返回狀態。

備注

Redo只能用于Undo支持的操作。對所有其它操作，它會變成灰色。

在撤銷所有操作，然后啟動新操作時，會清除列表重复操作。

如果想了解重复操作堆棧的限制及已知的异常問題，請參閱Undo部分。

位置

從Object Properties菜單中選擇Redo。

從Main菜單中，Edit > Redo或CTRL+Y

從任務欄中

另請參閱

Undo


撤消操作

允許在VEE中執行逆操作的一個Edit菜單選項。并不是所有操作都是可以撤消的。

用途

對于Detail，可以撤消Main, User Objects和User Functions中的下述操作︰

  • 剪切一條線

  • 增加/刪除/修改一個端

  • 在UserObject怯煲erFunction中增加/刪除一個端

  • 對象移動, 對齊

  • 替換一個對象

  • 剪切/粘貼對象

  • 自動滾動

對于Panel，可以撤消Panel, User Objects和User Functions中的下述操作︰

  • 對象對齊

  • 對象刪除

備注

Undo只适用于某些操作。如果這個圖標變成灰色，那么不能進行撤消操作怯煣do不支持該操作。

Undo對位置敏感。例如，可以撤消Formula對象刪除操作。如果輸入一個公式，刪除部分內容，可以撤消這一刪除操作。因此，不僅可以撤消對象操作，還可以撤消對象內部的文本操作。

Undo還有一個非常有用的Tooltip ( [image])，可以查看提供哪個撤消操作。

在撤消所有操作，并采取新的操作時，只能撤消最新的操作。之前的所有操作不能再撤消。

使當前細節視圖和/或面板視圖撤消操作堆棧無效的操作。

從在面板視圖上擁有相應視圖的細節視圖中刪除或剪切對象，會導致面板視圖的撤消操作堆棧無效。

在細節視圖中從選定對象創建UserFunction會導致細節視圖的撤消操作堆棧無效。如果有一個与源細節視圖相關的面板視圖，那么面板視圖會無效。

在細節視圖中從選定對象創建UserObject會導致細節視圖的撤消操作堆棧無效。如果有一個与源細節視圖相關的面板視圖，那么面板視圖會無效。

把UserObject拆成細節視圖會導致目的細節視圖的撤消操作堆棧無效。

把UserFunction轉換成UserObject會導致目標細節視圖(放置UserObject)的撤消操作堆棧無效。如果有一個与UserFunction相關的面板視圖，那么其撤消操作堆棧保持不變。

從UserObject中編制UserFunction會導致源(UOCarrier的位置)細節視圖的撤消堆棧操作無效。如果有一個与UserObject相關的面板視圖，那么其撤消操作堆棧保持不變。

把對象從一個上下文移動到另一個上下文會導致源細節視圖和目的細節視圖的撤消堆棧操作無效。如果有一個与源上下文相關的面板視圖，且其中一個移動的對象位于面板上，那么源面板視圖的撤消操作堆棧也會無效。

在面板驅程上添加導致創建多個輸出的任何輸出，會導致相關上下文的撤消操作堆棧無效。

以任何方式改變輸入端或輸出端(包括添加、刪除或修改名稱、類型或形狀)會導致包含UserObject的UOCarrier的上下文視圖的撤消操作堆棧無效。

已知异常情況

把Declare Variable, ActiveX Control或XYGraph類型的對象放到細節視圖上，然后克隆這個對象，刪除其中一個對象。現在重命名其余對象，以便其名稱与剛剛刪除的對象名稱相同。現在按Undo。注意恢复的對象使用不同的名稱，因為想使用的名稱已經存在。它悄悄地變成了一個為其指配的唯一的新名稱。

如果已經選擇了一個上下文，按Paste，粘貼對象，然后把對象粘貼到不同的上下文中，將不會登記任何撤消操作。拖動-克隆到不同的上下文中也會發生這种情況。

位置

Edit > Undo或CTRL+Z

從任務欄中 -

另請參閱

Redo和Paste


通過搜索文本查找對象

使用Find對話框 (Edit [image] Find)搜索對象。在包含多個對象、UserObjects和 UserFunctions的大型程序中，Find可以更加簡便地定位對象。可以作為搜索標準指定文本和對象屬性，設置選項，限制搜索范圍。還可以從工具欄按鈕上使用Find。

Find button

1. 打開Find對話框(Edit [image] Find或使用工具欄按鈕)，出現對話框。

2. 在Find:編輯字段中，輸入想搜索的文本。

3. 在General欄中，設置希望為文本搜索定義的限制。

4. 在設置搜索標準后，點擊Find，立即開始搜索。

點擊Stop停止正在進行的搜索。顯示已經找到的結果。

5. 在搜索結束時，Find對話框關閉，出現Find Results對話框。 Find Results包含著与搜索標準相匹配的對象列表。如需与查看列表中的對象有關的信息，請參閱查看查找操作結果。

下圖顯示了搜索文本upper的Find對話框設置。General 欄中設置的選項顯示，搜索結果將包括嵌套的UserObject中的所有對象，并顯示文本串中任何地方包含upper的情況。

快捷方式

在鍵盤上按CTRL+F，打開Find對話框。

備注

為限制Search in列出的搜索范圍，在Program Explorer中使用上下文相關菜洙。 在UserObject、函數或文件夾名稱上點擊鼠標右鍵，出現一個上下文相關菜洙，然后點擊Find，出現Find對話框，并包括包含上下文相關名稱的Search in字段。

Find將不會搜索︰

面板或面板上的對象

直線或直線值

端值

另請參閱

瀏覽程序結構

通過搜索屬性查找對象

查看查找操作結果

查找

查找結果


通過搜索屬性查找對象

使用Find對話框 (Edit [image] Find)搜索對象。在包含多個對象、UserObjects和 UserFunctions的大型程序中，Find可以更加簡便地定位對象。可以作為搜索標準指定文本和對象屬性，設置選項，限制搜索范圍。還可以從工具欄按鈕上使用Find。

Find按鈕

1. 打開Find對話框 (Edit [image] Find或使用工具欄按鈕)，出現對話框。

2. 在Find: 編輯字段中，輸入想搜索的文本。如果打算只搜索對象屬性，這一字段可以為空。

3. 在General欄中，設置Search nested UserObjects，控制搜索限制。如果在上一步中輸入了文本，那么設置希望為文本搜索定義的其它限制。

4. 在Advanced欄上，可以設置最多三個屬性及屬性值。這把搜索結果限于包含指定屬性和屬性值的對象。

a. 點擊Property下的按鈕，設置屬性名稱，出現Property Name對話框，其中包含提供的所有對象屬性。

滾動列表，雙擊名稱，選擇一個屬性。按鈕上出現屬性名稱。

b. Value下的按鈕可以相對于選擇的屬性改變模式。選擇屬性值的方法包括︰

從下拉列表中選擇一個值。

從對話框中選擇一個值。

從調色板中選擇一种顏色。

輸入文本或數字值。

c. 在必要時，點擊Reset，返回Property (Object Type)和Value (All Types)的默認值。

5. 在設置搜索標準后，點擊Find，立即開始搜索。

點擊Stop停止正在進行的搜索。顯示已經找到的結果。

6. 在搜索結束時，Find對話框關閉，出現Find Results對話框。 Find Results包含著与搜索標準相匹配的對象列表。如需与查看列表中的對象有關的信息，請參閱查看查找操作結果。

下圖顯示了搜索文本upper的Find對話框設置。Advanced欄顯示搜索結果將只包括具有指定屬性值的對象。注意在搜索中包括屬性值時，Adv狀態指示符(右上角)會高亮度顯示。

快捷方式

在鍵盤上按CTRL+F，打開Find對話框。

備注

為限制Search in列出的搜索范圍，在Program Explorer中使用上下文相關菜單。 在UserObject、函數或文件夾名稱上點擊鼠標右鍵，出現一個上下文相關菜單，然后點擊Find，出現Find對話框，并包括包含上下文相關名稱的Search in字段。

Find將不會搜索︰

面板或面板上的對象

直線或直線值

端值

另請參閱

瀏覽程序結構

通過搜索文本查找對象

查看查找操作結果

查找

查找結果


查看查找操作結果

在使用Find搜索包含特定文本和屬性的對象后，Find Results對話框將顯示所匹配的信息。Find Results提供了一個簡單的方法來查看所找到的對象。這一結果會保留到您進行新的Find操作，允許按需打開或關閉Find Results(Edit [image] Find Results)。

Find Results 按鈕

下圖顯示了一個Find Results范例，它列出了包含文本upper的對象。

使用Find Results對話框

在列表的一行上雙擊鼠標，所列的對象UserObject或 UserFunction將出現在工作區中。打開UserObject和 UserFunction的編輯窗口，高亮度顯示各個對象。

點擊列標題，對列表排序。

當選擇要查看的一個項目時，Keep Visible按鈕的默認設置會保持Find Results打開。當選擇一個項目時，點擊按鈕，切換至Find Results關閉狀態。

Keep Visible按鈕設置成打開Find Results

Keep Visible按鈕設置成關閉Find Results

點擊向左或向右箭頭按鈕，可以查看前面或后面的項目。

Previous 和Next 按鈕

點擊Find按鈕，打開Find對話框，開始新的搜索。這會關閉Find Results，并清除它的內容。

Find 按鈕

 當搜索在Find對話框的Advanced欄中指定屬性值時，Adv的狀態指示器會高亮度顯示。

快捷方式

在鍵盤上按CTRL+R，可以打開Find Results對話框。

備注

Find Results的菜單項和工具欄按鈕會變灰，直到Find完成。

在再次打開Find對話框時，將清除上一次Find操作產生的Find Results內容。

另請參閱

通過搜索屬性查找對象

通過搜索文本查找對象

Find

Find Results


瀏覽程序結構

使用VEE Program Explorer (View [image] Program Explorer)，瀏覽程序的整個結構。Program Explorer可以簡便地獲得信息，導航程序，或改變程序內容。可以使用這個工具欄按鈕迅速打開和關閉Program Explorer。

Program Explorer按鈕

查看程序結構

1. 打開Program Explorer。在VEE工作空間左側打開窗口。

2. 點擊控件(+和-)展開和收縮樹型圖。根据程序內容，Program Explorer會顯示由下述信息組成的完整列表︰

從Main UserObject開始的UserObject 層級

本地UserFunctions。

導入的UserFunction Libraries和相關函數。

導入的Compiled Libraries和相關函數。

導入的Remote UserFunction Libraries和相關函數。

全局變量，包括聲明變量和未聲明變量。

相應上下文下的聲明局部變量。

相應庫下聲明的庫全局變量。

下圖和列表顯示了Program Explorer使用的表示各种上下文和變量的圖標︰

1. 表示整個程序。

2. 表示UserObjects。

3. 表示本地、導入和遠程UserFunction。

4. 表示Compiled Function。

5. 表示聲明的和未聲明的Global Variables和聲明的Library Variables。

6. 表示局部變量。

7. 表示庫名稱、Globals和UserFunctions等類別的容器。

使用上下文菜單

Program Explorer的上下文菜單可以存取程序中的對象和信息。為打開上下文菜單，在列表中一個項目上按鼠標右鍵，然后點擊一個菜單選項。菜單內容根据項目變化。

為查看和存檔程序信息，使用特定上下文菜單提供的下述菜單選項。菜單選項操作會相對于項目在程序結構中的位置發生變化︰

Print打印程序、UserObject或函數(參閱Print Program和Print Objects)。

Document保存程序、UserObject或函數文檔(參閱Save Documentation)。

Calls查找UserFunctions項目調用。

Called By查找調用項目的UserObject或函數。

View 使用變量的當前值打開一個對話框。

為存取程序內容進行改動，使用特定上下文菜單中提供的下述菜單項︰

Open在工作空間中查看項目，這与雙擊項目的結果相同。

Find 打開Find對話框 (參閱Find)，這還會把搜索范圍限制在高亮度顯示的項目邊界上，而不是整個程序。

Generate [image] 允許創建下面一個對象，其中包含一個參考UserFunction標題的表達式。可以把生成的對象放在程序的另一部分中(參閱Call, Formula, If/Then/Else, ShowPanel, HidePanel)。

Cut 打開一個Confirm對話框，允許從程序中刪除項目。

Description 打開項目的Description對話框 (參閱Description)。

Properties 打開項目的Properties Window (參閱Properties (對象))。

References查找使用變量的對象。

快捷方式

為在工作空間中查看UserObject、UserFunction或其它上下文，在Program Explorer雙擊上下文名稱。

為查看變量的當前值，雙擊變量名稱，會出現一個對話框，包括与變量類型、形狀和數据有關的信息。

技巧

使用Default Preferences，設置每次啟動VEE時Program Explorer的默認狀態。如果想總是打開或總是關閉Program Explorer，點擊Program Explorer工具欄按鈕，設置所需的狀態，然后打開Default Preferences對話框，點擊Save。

Program Explorer按鈕

另請參閱

默認首選項


Minimap

關閉或打開Minimap窗口的一個View菜單項。迷你地圖是整個細節視圖的草圖，用紅色矩形框指明看得到的部分。紅色矩形指明看得見的區域在整個細節視圖中的相對位置。

用途

迷你地圖顯示整個細節視圖的草圖，用紅色矩形指明看得見的部分。

通過使用Minimap，可以迅速跳到細節視圖中的某個位置。為到達細節視圖中的某個位置︰

  • 點擊Minimap上的位置

或

  • 把紅色矩形拖到Minimap上的位置。

上下文菜單

Print... -- 打印整個細節視圖的位圖。可以調整Minimap窗口的大小，改變位圖的打印尺寸。

Print Auto Fit ... -- 把整個細節視圖的位圖自動調整成一頁大小，打印位圖。調整后的位圖寬度是頁寬，位圖高度与其寬度成比例。Copy To Clipboard ... -- 把整個細節視圖的位圖复制到剪切板中。

Send By Email ... --- 作為電子郵件附件發送整個細節視圖的位圖。

Save To File ... -- 把整個細節視圖的位圖保存到一個位圖文件中。

備注

只能在細節視圖中使用迷你地圖，它會自動隱藏在Panel面板中，或在運行時隱藏。

范例

快捷方式

在VEE工具欄上按 [image] 按鈕。

位置

View [image] Minimap

另請參閱

導航程序


使用聯机躍助

使用聯机幫助

這下面介紹了怎樣更多地了解VEE。

1 首先，運行位于Help [image] Welcome菜單中的Multimedia Tutorials。多媒体教程演示了VEE的許多主要功能，可以幫助您加快速度。這些教程顯示了構建和運行的VEE程序的屏幕演示，描述了您會看到的內容。這些教程還介紹了有效使用VEE的關鍵概念。

2 一旦熟悉了VEE，可以在對象菜單的Help項中找到更多信息。可以試驗對象，直到了解其工作方式。如果需要了解与對象有關的更多信息，對象菜單提供了最具体的信息。可以先查閱對象菜單。

3 為使用Help內容、索引或搜索功能，在主VEE菜單欄上打開Help。

備注

為了解怎樣打開主Help輔助工具及Help內容列表，請參閱“獲得幫助"。

使用Help輔助工具

聯机幫助提供了与下述內容有關的信息︰

• 所有菜單項，及大多數菜單項的快捷方式

• 儀器驅程信息

• 頻繁執行的任務及許多范例程序

• VEE朮語定義

• 使用幫助輔助工具

• VEE版本

可以瀏覽內容，使用關鍵字索引，使用到相關內容的超級鏈接，甚至進行搜索。VEE中提供了許多Help功能，可以在開發程序中使用這些功能。

備注

VEE還包括開發和調試程序的其它有益功能，如線路探頭。如需更多信息，請參閱“調試Agilent VEE中的程序"。

顯示与對象有關的幫助

為獲得与對象有關的幫助，點擊對象菜單按鈕，選擇Help。

• 選擇Flow [image] Repeat [image] For Count，創建一個For Count對象。點擊對象菜單，選擇Help。出現Help標題，描述For Count。

• 選擇Device [image] Formula，創建一個Formula對象。點擊對象菜單，選擇Help。出現Help標題，描述Formula對象中顯示的特定公式。

• 選擇Device [image] Function & Object Browser。選擇任意選項組合，點擊Help。出現与選中的特定對象有關的Help內容。.

查找對象的菜單位置

為查找對象在菜單中的位置，及顯示与該對象有關的信息，選擇Help [image] Contents and Index，點擊Index欄，輸入對象名稱，點擊Display。

例如，選擇Help [image] Contents and Index，點擊Index欄，輸入Collector。點擊Display，顯示Collector對象的Help內容。

使用Help輔助工具的其它實踐練習

• 查找刪除對象的快捷方式

選擇Help [image] Contents and Index [image] How Do I... Use the Keyboard Shortcuts [image] Editing Programs [image] To Cut an Object or Text。

• 查找單詞“terminal”

選擇Help [image] Contents [image] Reference [image] Glossary [image] Terminal。

• 查找VEE版本號

選擇Help [image] About VEE Pro。

• 找出這一版Agilent VEE中的新功能介紹

選擇Help [image] Contents and Index [image] What’s New in Agilent VEE Pro。


存檔Agilent VEE程序

通過使用File [image] Save Documentation...命令，可以自動生成程序文檔。VEE列出所有對象，包括關鍵設置、默認值和用戶名稱、Description項目及任何“嵌套”。例如，UserObject內部的對象從主VEE環境中進行一級嵌套，這些等級用數字表示。

還可以使用Description編制各個對象的文檔。

使用Description對話框存檔對象,

自動生成文檔


使用Description對話框存檔對象

所有對象在其對象菜單中都有一個Description項，它提供了一個對話框，接受与該特定對象有關的文檔。這個文檔文件還為把文檔与屏幕轉單關聯起來提供了一种方式。在本節中，您將在Description對話框中添加一個項目。

1 打開Random.vee程序。

2 從Description中刪除模板信息，如下圖所示

。

3 注意Description框是丰富文本格式(RTF)框。可以從創建RTF文件的任何程序中檢索文件。RTF格式可以更靈活地表示文本數据。

4 在Main對象菜單中，點擊Description。在對話框中輸入文本︰The Random.vee program generates random numbers。在完成時點擊OK。

備注

用戶看不到Description對話框中的項目，除非用戶通過對象菜單存取這些項目。此外，注意可以在這個對話框中插入一個文件。

另請參閱

自動生成文檔


自動生成文檔

按下述步驟，可以產生一個程序文檔文件:

1 打開 Random.vee. 單擊 File [image] Save Documentation.... 以 txt 為擴展名輸入文件名 （如 Random.txt), 單擊 Save. 該文件默認會被保存在 C:\My Documents\VEE Programs 目錄下。

2 可以用任一文本編輯器打開該文件以查看和打印。下面的圖顯示了 Windows 下用Notepad打開的文件。

第一個圖顯示的是文件開頭部分，它包括該文件的信息，修改日期和系統IO配置。

Source file:"C:\\ My Documents \\ VEE Programs \\ Random.vee

Date documented: Wed Sep 27 10:31:08 2006

VEE revision: 8.0

Execution Mode: VEE 8

Convert Infinity on Binary Read: no

I/O Configuration

My Configuration (C:\vee.io)

文件中間部分︰

M: Main

Device Type : Main

customHelpMenuName :

customHelpMenuDescription:

customHelpMenuHelpLink :

Declared Name : Main

Declared Scope : Local to Context

Context is secured : off

TrigMode : Degrees

PopupPanelTitle : Untitled

PopupMoveable : on

Delete Globals at Prerun : off

M.0: Main/Int32

Device Type : Constant

Output pin 1 : Int32

customHelpMenuName :

customHelpMenuDescription:

customHelpMenuHelpLink :

Declared Name :

Declared Scope : Local to Context

Wait For Input : off

AutoExecute : off

InitializeAtPrerun : off

InitializeAtActivate : off

InitialValue : 0

EnableStepping : off

DetentSize : 1

DataShape : Scalar

ArraySize : 10

ArraySizeFixed : off

ShowArrayIndices : on

EnableEditing : on

Int32 Value : 0

上圖中顯示了VEE 對象及其設置。對象前的數字指明了該對象的位置。例如，Main 中的第1個對象被列為M0. 下圖是上述文件的其他部分。

M.1: Main/Int32

Device Type : Constant

Output pin 1 : Int32

customHelpMenuName :

customHelpMenuDescription:

customHelpMenuHelpLink :

Declared Name :

Declared Scope : Local to Context

Wait For Input : off

AutoExecute : off

InitializeAtPrerun : off

InitializeAtActivate : off

InitialValue : 0

EnableStepping : off

DetentSize : 1

DataShape : Scalar

ArraySize : 10

ArraySizeFixed : off

ShowArrayIndices : on

EnableEditing : on

Int32 Value : 1

M.2: Main/random(low,high)

Device Type : Formula

Input pin 1 : low (Any, Any)

Input pin 2 : high (Any, Any)

Output pin 1 : Result

customHelpMenuName :

customHelpMenuDescription:

customHelpMenuHelpLink :

Declared Name :

Declared Scope : Local to Context

Formula : random(low,high)

M.3: Main/AlphaNumeric

Device Type : AlphaNumeric

Input pin 1 : Data (Any, Any)

customHelpMenuName :

customHelpMenuDescription:

customHelpMenuHelpLink :

Declared Name :

Declared Scope : Local to Context

ClearAtPrerun : on

ClearAtActivate : on

ShowArrayIndices : on

M.4: Main/Note Pad

Device Type : Note Pad

customHelpMenuName :

customHelpMenuDescription:

customHelpMenuHelpLink :

Declared Name :

Declared Scope : Local to Context

Note Contents : {\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Times New Roman;}}\r\n{\\colortbl ;\\red0\\green0\\blue0;}\r\n\\viewkind4\\uc1\\pard\\cf1\\f0\\fs24 This program , Random, generates a real number between 0 and 1, then displays the results.\\par\r\n}\r\n

注釋

執行 Save Documentation 命令后，再執行 File => Print Program 命令 就可以將識別數字加到對象上，這樣你就可以把文本文件和打印輸出對上了。

另請參閱

使用Description對話框存檔對象


合并Agilent VEE程序

利用現有程序最簡便的方式是把過去的程序与當前測試合并。通過合并，然后編輯程序，适合當前需求，可以重用程序。

File [image] Merge...命令把一個程序或已經保存的對象集合的內容添加到工作區中，同時保留工作區中已有的內容。在默認狀態下，File [image] Merge...顯示与VEE一起提供的程序的目錄，其中包括通常需要的程序，如柱狀圖顯示屏及用戶輸入使用的數据輸入小鍵盤(如ID號碼)。

另請參閱︰

實驗9-4︰合并柱狀圖顯示程序

實驗9-1: UserFunction操作，實驗9-2: 創建和合并UserFunction庫，實驗9-3: 導入和刪除庫，在大型程序中查找函數


使用庫對象

VEE包括可以‘‘Merge''到程序中的對象庫。作為VEE安裝過程的一部分，庫對象安裝在下面的目錄中︰

C:\Program Files\Agilent\VEE Pro 8.0\Lib\

大多數庫對象是封裝了各個對象的UserObject。可以為庫創建UserObject，并把它們保存在︰

C:\Program Files\Agilent\VEE Pro 8.0\Lib

Formula對象

另外還提供了可以合并到程序中的Formula對象。每個對象執行有效的轉換功能，如從度轉換成弧度。

這些文件位于下述位置︰

C:\Program Files\Agilent\VEE Pro 8.0\Lib\convert\


使用鍵盤快捷鍵

可以使用鍵盤快捷鍵執行許多VEE任務。注意鍵盤快捷鍵不區分大小寫。

文件控制

清除工作區
打開 VEE 程序
保存VEE程序到文件
保存VEE到新文件
打印或复制VEE窗口
退出VEE

程序編輯

VEE菜單導航
打開Function & Object瀏覽框
選擇對象
打開彈出編輯菜單
打開彈出對象菜單
編輯Formula對象表達式
編輯事務
移動文本光標
終止在輸入域中的編輯
終止在對話框中的編輯
复制或克隆一個對象或文本
剪切一個對象或文本
為一個對象增加一個數据輸入端
為一個隊形增加一個數据輸出端
刪除對象的輸入或輸出端
刪除一條線
刷新VEE窗口

程序導航

查看Main窗口
選擇窗口并滾動工作區
調出Find對話框
調出Find Results對話框
導航操作接口面板 在面板視圖中啟動滾動條

程序調試

運行，暫停，單步或恢复一個VEE程序
查看線上的數据
查看到對象的連接
切換斷電設置
獲得對象或對話框相關幫助


清除工作區

按CTRL+N。系統會提示您把變動保存到當前程序中(工具欄上New按鈕及File [image] New的快捷方式)。


打開VEE程序文件

按CTRL+O。系統將提示您打開一個文件名稱 (工具欄上Open按鈕的快捷方式，File [image] Open)。


運行、暫停、步進或恢复VEE程序

把VEE程序保存到文件中

按CTRL+S，程序將重新保存到當前文件中，或者系統會提示您文件名(工具欄上Save按鈕及File [image] Save的快捷方式)。

備注

保存的文件可能不能向下兼容。檢測到第6版、并保存的第5版文件不再兼容第5版。


把VEE程序保存到新文件中

按CTRL+W，系統會提示一個新文件名，程序將保存在這里 (File [image] Save As的快捷方式)。

備注

保存的文件可能不能向下兼容。檢測到第6版、并保存的第5版文件不再兼容第5版。


打印或复制VEE窗口

為把VEE窗口复制到MS Windows剪貼板上，在VEE作為活動窗口時，按Alt+Print Screen (工具欄上Print Screen按鈕及File [image] Print Screen的快捷方式)。從剪貼板中，可以把VEE窗口粘貼到能夠使用剪貼板的其它Windows程序中。

注意，即使在存在對話框時，仍可以使用這些快捷方式捕獲VEE屏幕。


退出VEE

按CTRL+E退出VEE (File [image] Exit的快捷方式)。


在對象中添加數据輸入端

把指針放在輸入端區域，按CTRL+A，在指針位置插入另一個數据輸入端(對象菜單 [image] Add Terminal [image] Data Input的快捷方式)。如果已經編輯了對象中的一個字段，您可能需要先按鼠標左鍵，然后按CTRL+A。

為使用CTRL+A添加一個端，必須激活Show Terminals對象屬性，指針必須位于對象左側的輸入端區域上。


在對象中添加數据輸出端

把指針放在輸出端區域，按CTRL+A，在指針位置插入另一個數据輸出端(對象菜單 [image] Add Terminal [image] Data Output的快捷方式)。如果已經編輯了對象中的一個字段，您可能需要先按鼠標左鍵，然后按CTRL+A。

為使用CTRL+A添加一個端，必須激活Show Terminals對象屬性，指針必須位于對象右側的輸出端區域上。


取消輸入字段中的一個編輯

按Esc，取消輸入字段中的一個編輯。


取消對話框中的多個編輯

按Esc取消對話框中的所有編輯(相當于點擊Cancel按鈕)。


复制或克隆對象或文本

選擇想复制的對象或文本，然后按CTRL+C。這會把對象或文本放到剪切-复制-剪貼緩沖器中(工具欄上Copy按鈕及Edit [image] Copy的快捷方式)。注︰只能使用CTRL+C、而不能使用工具欄按鈕或菜單選項复制文本。

如果想把复制的對象粘貼到工作區中，使用CTRL+V (工具欄上Paste按鈕及Edit [image] Paste的快捷方式)。然后點擊想要放置對象的位置。將保留連接被复制對象的任何線。注︰只能使用CTRL+V、而不能使用工具欄按鈕或菜單選項复制文本。

如果想克隆選定的對象，按住CTRL的同時，按鼠標左鍵，把克隆的對象拖到新位置。

可以從一個工作區复制對象和文本，然后把其粘貼到另一個工作區中。在Windows中，還可以從VEE的一個實例中复制對象和文本，然后把其粘貼到VEE的另一個實例中。可以把對象和文本复制到能夠使用Clipboard的其它Windows程序中。


剪切對象或文本

選擇想剪切的一個或多個對象或文本，然后按CTRL+X。這會把一個或多個對象或文本放到剪切-复制-粘貼緩沖器中。(工具欄上Cut按鈕及Edit [image] Cut的快捷方式)。注︰只能使用CTRL+C剪切文本，而不能使用工具欄按鈕或菜單選項剪切文本。

可以使用CTRL+V (工具欄上Paste按鈕和Edit [image] Paste的快捷方式)，替換錯誤剪切的對象。然后點擊希望放置對象的位置。將恢复對象及其連接。還可以從主菜單中使用Edit > Undo，撤消剪切操作。注︰只能使用CTRL+C粘貼文本，而不能使用工具欄按鈕或菜單選項粘貼文本。

從一個工作區剪切的對象和文本可以粘貼到另一個工作區中。此外，從VEE的一個實例中剪切的對象可以粘貼到VEE對象的另一個實例中。對象和文本可以粘貼到能夠使用剪切板的其它Windows應用程序中。


刪除一行

按住Shift+CTRL，把指針放在想刪除的行上或附近，按鼠標左鍵(工具欄上Delete Line按鈕和Edit [image] Delete Line的快捷方式)。對這一操作可以使汁煣do。


從對象中刪除端

把指針放到要刪除的端上，按CTRL+D。 (對象菜單 [image] Delete Terminal [image] Input或對象菜單 [image] Delete Terminal [image] Output的快捷方式) 如果在對象中已經編輯了一個字段，可能需要先按鼠標左鍵，然后再按CTRL+D。

為使用CTRL+D刪除端，必須激活Show Terminals對象屬性，指針必須放在要刪除的端上。

可以按CTRL+Z撤消刪除操作。


編輯Formula對象的表達式

下面介紹了在Formula對象中輸入一個表達式時提供的編輯操作。一般來說，如果在RTF文件中進行操作，那么就可以在Formula對象中進行操作。

按Enter，插入回車，把光標移到下一行。在一行的中間進行這一操作會斷行，把光標后的字符插入到下一行上。在任何一行的開頭進行這一操作會在上面插入一個空白行。

在一行的右端按Delete，把下一行与這一行合成一行，當前光標位置不變。

在一行的左端按Backspace，把這一行与上一行合成一行，當前光標位置不變。

向上箭頭和向下箭頭沿著行向上和向下移動光標，光標的水平位置保持不變。在光標位于最后一行時，按向下箭頭會添加新的一行。向右箭頭和向左箭頭會向右和向左移動光標。

從一行的左端，Shift End會高亮度顯示整個行。從一行的右端，Home Shift會高亮度顯示整個行。

上一頁和下一頁功能可以正常使用。

雙擊一個單詞，會高亮度顯示這個單詞。在一行上點擊三下，會高亮度顯示整個行。


編輯事務

當輸入焦點在一個基于事務的對象(比如，Sequencer 或 To File 對象)的編輯框內時，可以使用下述快捷鍵︰

CTRL+X 將選擇的事務剪切到"cut-and-paste"緩沖區(對象菜單 [image] Cut Trans)。

CTRL+V 將選擇的事務從"cut-and-paste"緩沖區剪貼到當前所指位置(對象菜單 [image] Paste Trans)。

CTRL+C 將選擇的事務复制到"cut-and-paste"緩沖區(對象菜單 [image] Copy Trans)。

Delete 刪除列表中所選事務(對象菜單 [image] Delete Trans)。

Insert 將一個事務插入到所選事務前面 (對象菜單 [image] Insert Trans).

CTRL+Z undo最后一次操作。

CTRL+Y redo最后一次操作。

CTRL+Up 上移所選事務(對象菜單 [image] Move Trans Up)。

CTRL+Down 下移所選事務(對象菜單 [image] Move Trans Down)。

Shift+Up/Down 選擇多個事務。

注釋

對于 Move 操作只支持單個事務。

詳細信息請參閱 Help [image] Index and Contents [image] Tell me about... I/O Transactions。


移動文本光標

在字母數字文本輸入區中 (如Note Pad對象中)，使用光標控制箭頭鍵 (向上箭頭, 向下箭頭, 向左箭頭, 向右箭頭)，按箭頭方向移動光標。


導航VEE菜單

通過使用鍵盤菜單加速器，可以導航VEE菜單。每個菜單項有一個帶下划線的字母，可以与Alt鍵一起作為加速器使用。鍵盤加速器的字母不分大小寫。換句話說，即使帶下划線的字母是大寫，仍可以使用小寫作為加速器。讓我們看一個例子。

在Device菜單中，D帶有下划線(但也可以使用d作為加速器)，在Data菜單中，t帶有下划線︰

在PC上，按Alt+d，選擇Device菜單，或按Alt+t，選擇Data菜單。

每個子菜單都有自己的加速器，可以使用它導航，直到菜單樹。例如，選擇Data [image] Continuous [image] Real64 Slider。

在PC上，按Alt+t，然后按Alt+i，然后按Alt+r。


調出Function & Object Browser

按CTRL+H (工具欄上fx按鈕及Device [image] Function & Object Browser的快捷方式)。


調出彈出編輯菜單

把指針移到Main Window工作區空白部分，按鼠標右鍵。(這也适用于UserObject和UserFunction工作區。)


調出彈出對象菜單

把指針移到對象的任何部分上，按鼠標右鍵。


刷新VEE窗口

按CTRL+Q，刷新VEE窗口。


選擇對象

為選擇一個對象，把指針移到對象上，按鼠標左鍵。選中的對象會使用陰影高亮度顯示。

為選擇和反選對象，按住CTRL，把指針移到對象上，按鼠標左鍵。如果目前還沒有選中對象，那么這時會選中對象。如果目前已經選中對象，那么會反選。

有三种方式選擇多個對象。

  • 按住CTRL，在希望選擇的每個對象上按鼠標左鍵。

  • 在按CTRL的同時，點擊并按住鼠標左鍵，然后在希望選擇的多個對象上拖動一個外框。它會在對象選項之間切換。

  • 按CTRL+A，選擇當前工作區中的所有對象(Main Window, UserObject怯煲erFunction)，而不管它們目前是否已經選中 (Edit [image] Select All的快捷方式)。


查看主窗口

按CTRL+M (View [image] Main的快捷方式)。


選擇窗口和滾動工作區

為在VEE工作區打開的一堆窗口中移動︰

按CTRL+Tab或CTRL +F6，從上到下移動通過一堆窗口。

按CTRL+Shift+Tab或CTRL+Shift+F6，從下到上移動通過一堆窗口。

把指針放在Main、UserObject或a UserFunction窗口工作區內部任何地方︰

按Shift+向上箭頭, Shift+向下箭頭, Shift+向左箭頭或Shift+向右箭頭，按箭頭鍵方向滾動工作區。

按Page Down，把工作區向上滾動一屏。

按Page Up，把工作區向下滾動一屏。

按Shift+Page Down，把工作區向左滾動一屏。

按Shift+Page Up，把工作區向右滾動一屏。

按Home，把程序的左上角移動到工作區的左上角。

按Shift+Home，把程序的右下角移動到工作區的右下角。


調出Find對話框

按CTRL+F (工具欄上Find按鈕及Edit [image] Find的快捷方式)。


調出Find Results對話框

按CTRL+R (工具欄上Find Results按鈕和Edit [image] Find Results的快捷方式)。在Find操作成功后可以使用這個命令。


導航操作人員接口面板

如果您或另一名VEE編程人員已經在VEE程序中創建了一個操作人員接口面板，那么可以使用下述鍵導航面板︰

按Tab和Shift+Tab，從操作人員接口面板中的一個字段移到下一個字段。Tab鍵在字段之間把焦點向前移，Shift+Tab把焦點向后移。在輸入字段有焦點時(通過反白指明)，可以編輯輸入字段。在按鈕有焦點時(通過虛框指明)，可以如下所述"按"這個按鈕。

按空格鍵，"按"有焦點的按鈕。

使用相應的字母數字鍵，輸入目前有焦點的輸入字段。按Enter或Return，結束和接受編輯；或按Esc中止編輯。

如果編程人員已經定義，按Enter或Return，在操作人員接口面板中"按"默認按鈕。

How Do I... Build an Operator Interface下的VEE Help中詳細介紹了操作人員接口面板視圖及怎樣使用這些視圖。


在面板視圖中啟動滾動條

在Property窗口中，把ScrollBarsEnabled設置為True，為面板視圖啟動滾動條。在默認情況下，ScrollBarsEnabled為False。細節視圖不能使用ScrollBarsEnabled。

另請參閱

導航程序, Minimap, 導航操作人員界面面板


運行、暫停、步進或恢复VEE程序

按CTRL+G (或F5)運行VEE程序 (工具欄上Run按鈕及Debug [image] Run/Resume的快捷方式)。

按CTRL+P暫停正在運行的VEE程序 (工具欄上Pause按鈕及Debug [image] Pause的快捷方式)。(為停止程序，必須點擊工具欄上的Stop按鈕。)

按F10步進暫停的VEE程序 (工具欄上Step Over按鈕及Debug [image] Step Over的快捷方式)。

按CTRL+T (或F11)步進暫停的VEE程序 (工具欄上Step Into按鈕及Debug [image] Step Into的快捷方式)。

按Shift-F11步進暫停的VEE程序 (工具欄上Step Out按鈕及Debug [image] Step Out的快捷方式)。

按CTRL+G恢复暫停的VEE程序 (工具欄上Resume按鈕及Debug [image] Run/Resume的快捷方式)。


查看線上的數据

把鼠標指針移動到想探測的線上，按鼠標左鍵(Debug [image] Line Probe的快捷方式)，將顯示線上最后數据容器的相關信息。


查看到對象的連接

按下Shift，把指針指向希望探測的對象上，按鼠標左鍵 (Debug [image] Object Probe的快捷方式)。高亮度顯示連接到被探測對象上的所有線和對象。


切換斷點設置

選擇一個或多個對象，然后按CTRL+B (工具欄上Toggle Breakpoint按鈕和Debug [image] Toggle Breakpoint的快捷方式)。

每個選中的對象上的斷點切換到相反的狀態。


獲得對象或對話框相關幫助

在選擇一個對象時，按F1打開該對象的Help主題(對象菜單 [image] Help的快捷方式)。如果選擇了多個對象，那么會為選擇的第一個對象打開Help主題。如果沒有選擇對象，那么將打開主Help Contents窗口。

在打開一個對話框時，如Default Preferences，按F1打開該對話框的Help主題 (點擊Help按鈕的快捷方式)。


改變打印首選項

可以改變VEE在打印程序中使用的默認首選項。

為顯示Default Preferences對話框，選擇File >Default Preferences，然后點擊Printing一欄。

在改變首選項后，選擇希望怎樣保存設置︰

a. 為把設置保存為新的默認值，點擊Save。這會在.veerc文件中保存新的值。這些首選項將作為未來VEE 會話的默認值使用(直到再次改變它們)。

b. 為只對當前VEE會話使用新的首選項(直到選擇File [image] New, Open或Exit)，點擊OK。

c. 為把首選項設回默認值，點擊Reset。

d. 為取消變動，點擊Cancel。

改變打印机調色板

1. Screen Element字段和B&W Printer Darkness字段都提供了下拉列表。為改變Detail View的黑色程度(灰度值)，點擊B&W Printer Darkness (或箭頭)。

2. 現在點擊希望的黑色程度。如果希望Detail View的背景色為白色，點擊0 % (White)。(大多數VEE要素在默認情況下設置為Automatic grayscale。屏幕調色板中的顏色自動轉換成相應的灰色陰影。)

改變打印輸出內容

1. 為改變Print Magnification值，點擊這個字段，編輯其取值。(默認值是75%。可以設置大于或小于100的值，改變打印的圖像的大小。)

2. 選擇其它打印選項，定制報告格式︰

Print Header and Index Page在每頁的頂部打印標題，其中包含文件位置和日期/時戳，有一個索引，列出報告的各個章節及頁碼。

Print Program Explorer 打印Program Explorer的擴展視圖。

Print Cover Page 包括程序的文件名、修訂日期、執行模式、保存文件的格式及VEE修訂版本號。

Print I/O Configuration 打印儀器配置的擴展樹形圖。可以在I/O [image] Instrument Manager?/font>中查看儀器配置。

另請參閱

改變默認字体


設置打印机

VEE支持使用HP LaserJet、HP DeskJet及大多數PostScript?/span>打印机進行VEE打印及繪圖操作。此外，VEE支持大多數兼容HP-GL的繪圖設備。

為改變VEE的打印机配置，采取下述步驟。(在大多數情況下，可以使用默認打印机配置)

1. 選擇File [image] Print Setup，出現Print Setup對話框。

2. 在Print Setup對話框中使用標準Microsoft Windows技朮，選擇希望的打印机配置。

3. 點擊Properties出現更多的打印選項，或點擊OK确認選擇結果。


打印VEE工作空間

可以打印VEE窗口中目前看得到的工作空間內容。

1. 為立即打印工作空間，在工具欄上點擊Print Screen按鈕。

Print Screen按鈕

或

1. 使用File [image] Print Screen，出現Print對話框。

2. 如果打印配置可以接受，點擊OK打印VEE工作空間。也可以改變參數，然后點擊OK。打印工作空間，包括工具欄和狀態欄。

技巧

還可以使用Print Screen對象，以程序化方式打印整個工作空間。

快捷方式

即使在顯示了對話框、但工具欄按鈕和菜單不能使用時，仍可以使用下述快捷方式捕獲VEE屏幕︰

在任何時候，在鍵盤上按Alt+Print Screen，在Microsoft Windows剪切板中捕獲VEE窗口。(如果程序正在運行，它會在瞬間暫停。) 然后可以把圖像粘貼到Microsoft Paint或其它Windows圖形軟件中。.

另請參閱

Print Screen對象


打印VEE程序

可以打印目前在VEE窗口中打開的代表的程序。可以打印整個程序或打印部分程序。

打印整個程序

1. 選擇File [image] Print Program，出現Print Options對話框。這些選項允許控制打印程序的詳細程度。

Print Nested UserObjects 打印程序中包含的所有UserObject中的內容。

Print Object Views 打印包含有用信息的對象的Open View。

根据改變打印首選項中描述的默認首選項設置其余選項。在每次打印程序時，您都有机會改變打印首選項。

2. 點擊OK，出現Print對話框。在需要時改變打印配置。

3. 再次點擊OK，打印代表的程序。

從Program Explorer中打印

可以從Program Explorer打印整個程序或部分程序︰

1. 為查看Program Explorer，在工具欄上點擊the Program Explorer按鈕 (或使用View [image] Program Explorer)。

Show/Hide Program Explorer按鈕

2. 使用鼠標右鍵，點擊希望打印的Program Explorer中的上下文名稱。您可能需要展開Program Explorer的樹形圖，查看提供的所有名稱。

為打印整個程序，點擊程序或頂部的文件名。

為打印程序中的一個上下文，如Main、UserObject怯煲erFunction，點擊某個名稱。

3. 在出現的上下文菜單中，點擊Print，出現 Print Options對話框。上面介紹了其選項。

4. 設置首選選項，然后點擊OK。

5. 出現Print對話框，在需要時改變打印配置。

6. 點擊OK，打印程序。

下圖顯示了Program Explorer，它帶有上下文相關菜單，準備打印UserObject。


在VEE程序中打印對象

可以在VEE程序中打印選擇的對象。

1. 在程序中選擇一個或多個對象。點擊一個對象，選擇這個對象。為選擇多個對象，按住CTRL鍵，點擊多個對象，或按住CTRL鍵，使用鼠標在多個對象周圍畫一個矩形。

2. 選擇File [image] Print Objects，出現Print對話框。在需要時改變打印配置。

3. 點擊OK，打印選擇的對象。

技巧

通過在這些對象中添加Print控制輸入，還可以以程序化方式打印對象。這适合打印圖形XY畫面對象。


把數据發送到打印机

可以把數据直接從VEE程序發送到打印机上。

1. 在程序中添加一個To Printer對象(I/O [image] To [image] Printer)，把數据輸入端連接到希望打印的數据源。

2. 雙擊To Printer圖標，顯示Open View，其中包含輸出數据的I/O處理。

3. 默認輸出處理是WRITE TEXT a EOL。在需要時，改變處理，以某种其它形式輸出數据。

4. 運行程序。在To Printer對象運行時，數据輸出到打印机，打印机使用當前打印配置打印數据。

技巧

To Printer對象通過Windows打印机驅程輸出數据，它會添加一個標題，并改變字体。為從VEE for Windows中直接把ASCII文本輸出到打印机上，使用To File對象，把文件名設為LPT1 (或正在使用的打印机端口)。

另請參閱

編輯文件I/O處理

把數据寫入文件


打印圖表

有一种方式，可以從XY顯示對象中打印圖表，如XY Plot or Waveform (Time)對象。

從XY畫面的對象菜洙中選擇Print命令。


加載儀器驅程

Agilent VEE支持使用儀器驅程和直接I/O控制儀器。儀器驅程包括Panel Driver (通過Panel Driver 和 Component Driver對象控制)、 VXIplug&play Driver (通過Plug&play Driver對象控制)和IVI-COM Driver (通過IVI-COM Driver對象控制)。Direct I/O對象允許使用儀器完成低級處理。

必須先安裝相應的儀器驅程文件，然后才能使用任何儀器驅程對象。對与儀器通信的儀器驅程，還必須安裝Agilent I/O庫。

許多Panel Driver与Agilent VEE一起提供。在安裝Agilent VEE時，可以選擇希望安裝的多組驅程。在默認狀態下，將安裝多個驅程，運行特定的范例程序。如果需要安裝更多的驅程，運行VEE setup.exe程序，選擇需要的驅程選項。

備注

VXIplug&play Driver由提供儀器的制造商提供。安捷倫科技為許多安捷倫儀器提供VXIplug&play Driver。隨著時間推移，還會出現新的儀器驅程文件和更新的儀器驅程文件。為方便用戶，安捷倫以電子方式提供這些文件。文件下載說明請參閱獲得支持和下載儀器驅程。


增加基于USB或基于LAN的儀器

為了為VEE配置基于USB和基于LAN的儀器，必須使用与安捷倫I/O驅程庫提供的安捷倫IO庫套件。VEE要求IO Libraries Suite 14.0或更高版本。

對基于USB的儀器

1. 對USB，打開儀器電源；連接USB電纜。如果要從Instrument Manager中刪除USB儀器，那么必須先拔、再插儀器的USB電纜。

2. 運行Agilent Connection Expert，它會自動感應到USB設備。

3. 在希望時編輯別名。通過提供一個可以管理的名稱，而不是作為標準USB標識符的一長串序列號，別名簡化了命名方案。

4. 運行Find Instruments，根据其別名識別USB設備。

對基于LAN的儀器

1. 運行Agilent Connection Expert

2. Configured Interfaces應包括TCPIP0

3. 高亮度顯示這個列表，選擇"Refresh this LAN interface"。如果LAN設備已經正确連接，那么應自動發現LAN設備。

現在啟動Instrument Manager，選擇Find Instruments。如果TCP/IP地址正确，且儀器聯机，那么它會出現在Instrument List中。


添加儀器配置

一旦Instrument Manager配置中列出儀器，那么可以簡便地使用儀器控制對象。

自動添加儀器

Auto Discovery為添加和配置IEEE-488.2和SCPI儀器提供了一种簡單的方式。在儀器連接到計算机上并通電時，可以使用這种方法。

1. 選擇I/O [image] Instrument Manager?/font>，出現Instrument Manager對話框，Instrument List區域中顯示當前配置。

2. 點擊Settings，出現Auto Discovery Settings對話框。

3. 點擊Detect, identify和configure drivers...單選按鈕，然后點擊OK。

4. 點擊Find Instruments。

Auto Discovery流程在運行時顯示狀態。在Auto Discovery完成時，會更新當前配置，增加一個名為"newInstrument"的儀器項。這個儀器項還顯示儀器的型號和I/O地址。現在可以點擊Save，保存這一配置，也可以選擇編輯新儀器項的部分細節。(大多數人會改變儀器名稱。) 參閱編輯儀器配置。

5. 點擊Save按鈕，關閉對話框，保存新配置。

手動添加儀器

1. 選擇I/O [image] Instrument Manager?/font>，出現Instrument Manager對話框，Instrument List區域中顯示當前配置。

2. 點擊Add... ，出現Instrument Properties對話框。這個對話框允許為新儀器輸入所需的基本配置信息。

3. 使用默認的Name或輸入一個唯一的新名稱。

4. 如果想改變Interface，點擊接口名稱，顯示支持的接口列表。點擊連接到儀器上的接口。

5. 點擊Address字段，設置儀器地址。如需与确定某台儀器使用什么地址有關的信息，請參閱儀器用戶手冊。

6. 如果儀器連接到聯网系統上的遠程主机，那么Gateway主机名應該變化。

7. 可選︰為設置其它設備屬性，點擊Advanced...按鈕。如需与Advanced屬性有關的信息，請參閱編輯儀器配置。(不管是增加新項目還是編輯現有項目，基本和高級"Instrument Properties"對話框的工作方式相同。)

8. 點擊Save按鈕，關閉對話框，保存新配置。

備注

如果添加或去掉系統上使用的接口卡，那么必須運行Agilent Connection Expert，更新I/O_config文件。如需与安裝和配置接口有關的完整信息，請參閱Agilent I/O Libraries Suite的聯机幫助。

VEE 7.0及以上版本支持NI Libraries 3.0及以上版本。

另請參閱

加載儀器驅程

編輯儀器配置

Instrument Manager

儀器用戶手冊


刪除儀器配置

可以從Instrument Manager對話框中刪除儀器。

1. 選擇 I/O [image] Instrument Manager.... 然后點擊選擇希望刪除的儀器配置。

2. 點擊Remove按鈕，從列表中刪除選項。

3. 點擊Save按鈕，退出對話框，保存新配置。

備注

如果要增加或刪除系統中使用的接口卡，那么必須運行Agilent Connection Expert，更新I/O_config文件。如需与安裝和配置接口有關的完整信息，請參閱 Agilent I/O程序庫套件聯机幫助。

另請參閱

編輯儀器配置

Instrument Manager


編輯儀器配置

可以在當前的Instrument List中對任何儀器進行配置。

1. 選擇 I/O [image] Instrument Manager，打開Instrument Manager對話框，當前配置出現在Instrument List區域。

2. 在Instrument List中雙擊要配置的儀器，打開Instrument Properties對話框。下面將描述如何改變各种儀器屬性。

配置儀器的基本屬性

在Instrument Properties對話框中，你可以指定下述屬性︰

Name: 它可以是任何有助于辨別儀器的名稱。建議以字母開頭且不包含空格。

Interface: 連接儀器的接口的類型。

VISA Alias: VISA地址的別名。

VISA Address: 儀器的VISA地址。

Board Number: 接口板的號碼。該號從0開始編碼，缺省為0。

Gateway: 如為本地接口，選擇host。如為LAN-gatewayed接口，輸入遠程网關的主机名(或 IP 地址)。

注意除"Name"外，所有屬性都必須準确反映儀器或接口硬件的物理特性。比如，不能將一個儀器的VISA Address中GPIB總線地址改為另外一個。只能先通過儀器上的開關或按鈕改變它總線地址，然后再把這個新地址輸入VEE Instrument Properties對話框中VISA Address域中。

1. 在Instrument Properties對話框中，單擊要修改的域，輸入(或選擇)一個新值。修改所有要修改的域。

2. 單擊Save按鈕，關閉對話框并保存這個新的配置。

編輯儀器高級屬性

1. 在Instrument Properties對話框中，單擊Advanced... 按鈕，打開Advanced Instrument Properties對話框。根据所選接口類型的不同，該對話框顯示不同的欄。下表列出了各种接口的Advanced Instrument Properties對話框中會出現的欄。

欄 接口 | General Driver | Direct I/O Driver | Plug&play Driver | IVI-COM Driver | Panel Driver | serial Driver | A16 Space Driver | A24/A32 Space Driver
GPIB | Yes | Yes | Yes | Yes | Yes | No | No | No
ASRL | Yes | Yes | No | No | Yes | Yes | No | No
TCP/IP | Yes | Yes | Yes | Yes | Yes | No | No | No
USB | Yes | Yes | Yes | Yes | Yes | No | No | No
NIDAQ | No Advanced Dialog box
VXI | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes
GPIO | Yes | Yes | No | No | Yes | No | No | No

2.單擊各個欄可以修改缺省配置或單擊按鈕修改狀態。應該根据儀器和用于控制儀器的對象（比如，Panel Driver, Plug&play Driver, 或 Direct I/O）來修改設置。 Panel Driver, Plug&play Driver, or Direct I/O.

要使用一個儀器的驅動程序，必須在Panel Driver, IVI-COM 或 Plug&play Driver 欄中制定驅動程序，且該驅動必須已保存在硬盤上。

要參考各种配置的詳細信息，請單擊對話框上的Help按鈕。

3.單擊Save按鈕，關閉對話框并保存這個新的配置。

注釋

對NIDAQ接口，可以在它的Instrument Properties對話框中選擇驅動程序類型。

另請參閱

添加儀器配置，Instrument Manager


嵌入式I/O配置和合并

VEE Pro可以從也包含著嵌入式I/O配置的程序文件中合并和導入程序要素。但是，不能合并或導入嵌入式I/O配置本身。如果合關(導入)的對象要求配置好的儀器，那么必須擴大局部I/O配置，包括這些儀器。

一种方案是在當前I/O配置中添加儀器，与"主"程序一起保存配置。(換句話說，程序文件包含著所有合并的要素，或程序文件執行Import Library) 另一种方案是保証在運行程序的計算机上，全局I/O配置文件(vee.io)中包含所有儀器。

VEE使用下述步驟搜索全局I/O配置文件︰

1. 如果存在名為HOME的環境變量，VEE一直在這里查找I/O配置文件。(如果%HOME%目錄中不存在I/O配置文件，那么將創建一個空白的I/O配置。)

2. 如果沒有定義HOME環境變量，那么VEE會在下述目錄中查找I/O配置文件︰

<%USERPROFILE%>\Local Settings\Application Data\Agilent\VEE Pro

例如，如果JohnDoe登錄并運行VEE程序，那么VEE會查找I/O配置文件︰

C:\Document and Settings\JohnDoe\Local Settings\Application Data\Agilent\VEE Pro\vee.io


Dynamic I/O Automation Server

在以前的VEE版本中，VEE I/O配置文件中的仪器总线地址是静态的(固定的)。在6.0版中，Dynamic I/O Automation Server允许以程序化方式查找和识别仪器。这提供了全新的灵活性。例如，可以查找所有仪器，然后使用Programmable Instrument Properties设置Direct I/O对象。

用途

为从VEE中使用Dynamic I/O Automation Server：

选择Device [image] ActiveX Automation References，出现ActiveX Automation References对话框。然后复选Agilent VEE DynamicIO 1.0 Type Library，点击OK。

选择Device [image] Function & Object Browser，出现Function & Object Browser对话框。选择Type: ActiveX Objects，DYNAMICIOLib显示为Library。

范例

Help [image] Open Example?InstrumentIO目录中提供了VEE范例。

另请参阅

由于这一工具是独立式ActiveX自动服务器，因此也可以从其它应用程序中使用这一工具，如C++和Visual Basic。


使用Direct I/O對象

為增加直接I/O對象，使用Instrument Manager對話框。我們以HP 34401A万用表配置為例。

1. 選擇 I/O [image] Instrument Manager...，出現一個對話框，其中列明已經配置的儀器。

2. 點擊希望在工作區中增加的儀器。在本例中，點擊dmm(hp34401a@(NOT LIVE))。

3. 點擊Properties按鈕，然后在Instrument Properties對話框中，點擊Advanced?/span>按鈕。在General一欄的Advanced Instrument Properties對話框中，把Live Mode設為ON。點擊OK按鈕，返回Instrument Manager。

4. 點擊Direct I/O按鈕，出現直接I/O對象的輪廓線。把輪廓線放在工作區中希望的位置，點擊鼠標按鈕。對象的標題條中包含儀器已配置的名稱。

5. 雙擊處理區，輸入儀器命令。

另請參閱

使用Direct I/O讀取數据

Direct I/O

MultiDevice Direct I/O

實驗3-3: 使用Direct I/O


使用直接I/O讀取數据

這個程序說明了怎樣使用直接I/O對象，從HP 34401A万用表中讀取數据。

1. 在工作區中增加一個為地址722配置的直接I/O對象，如使用直接I/O對象所示。

2. 直接I/O對象使用處理与儀器通信。雙擊對象中"空白的"處理 (高亮度顯示的字段)。這時會出現一個I/O Transaction對話框，變量a會高亮度顯示。在這個位置輸入字符串"MEAS:VOLT:DC?" (包括引號)。點擊OK，創建處理WRITE TEXT "MEAS:VOLT:DC?" EOL。

3. 從對象菜單中選擇Add Trans，增加第二個處理，或雙擊下一個空白處理。把處理對話框操作變成READ，把編碼變成TEXT。點擊OK。

4. 直接I/O對象現在有兩個處理︰

a. WRITE TEXT "MEAS:VOLT:DC?" EOL把命令串"MEAS:VOLT:DC?"寫入地址722上的儀器。對HP 34401A万用表，命令串MEAS:VOLT:DC?意味著"output one dc voltage reading"(輸出一個DC電壓讀數)。

b. READ TEXT x REAL64從地址722的儀器讀取實際格式的文本數据，在X數据輸出端上輸出數据。

5. 為結束程序，在工作區中增加一個AlphaNumeric顯示對象，并如下圖所示進行連接。(如果您已經把HP 34401A万用表連接到地址722上的GPIB，那么可以運行這個程序。)

另請參閱

直接I/O

多設備直接I/O

實驗3-3: 使用直接I/O

Help [image] Contents and Index [image] Tell Me About... I/O Transactions

具体儀器的編程手冊


使用Plug&play Driver對象

使用Instrument Manager對話框，在工作區中添加一個 VXIplug&play Driver對象。

備注

VXIplug&play Driver對象不能与和同一程序中同一儀器通信的任何其它儀器控制對象(Panel Driver, Component Driver或Direct I/O)共用。

1. 選擇I/O [image] Instrument Manager...，出現一個對話框，列出配置的儀器。

2. 點擊想要添加到工作區中的儀器。如果它配有一個VXIplug&play驅程，Plug&play Driver按鈕會激活。

3. 點擊Plug&play Driver按鈕，把To/From VXIplug&play對象放在工作區中。

4. 雙點擊一個空事務(或從對象菜單中選擇Add Trans或Insert Trans)，出現Select a Function Panel對話框。它顯示了划分成邏輯類別的函數面板。不同驅程的類別會有所不同。

點擊[+]和[-]圖標，展開和折疊文件夾和函數結構。

點擊[f(x)]圖標，選擇想要使用的函數面板。

5. 在Select a Function Panel對話框上點擊OK，出現Edit Function Panel對話框。

6. 把Edit Function Panel上的設置編輯成需要的值。使用Help按鈕，可以獲得与特定儀器驅程有關的更多信息。

7. 點擊OK。如果想為儀器設置另一個函數，雙擊To/From VXIplug&play對象中的下一個事務。

另請參閱

To/From VXIplug&play


在VEE中使用NI數据采集

一次只支持一個PXI橋接器，且其PCI總線號碼必須落在0 – 9(含)之間。

VEE中支持五种不同的National Instruments驅動程序庫︰niDMM, niSCOPE, niDAQ, niSWITCH, 和 niFGEN。

Instrument Manager象支持的任何其它儀器一樣配置和發現使用這些庫的儀器。

1 I/O [image] Instrument Manager

2 選擇Add，輸入儀器名稱，使用Interface下拉框，選擇“NIDAQ”。

3 命名儀器，從下拉列表中選擇驅動程序類型。

4 為儀器指配一個地址，設置Live Mode。

• 對SCXI，地址是SCXI{Cage #}::Slot Number

• 對PXI，地址是PXI{Cage #}::Slot Number

• 對傳統NIDAQ，地址是1 - 64

調用這些驅動程序庫中的函數實際上會直接調用在計算机上已經安裝的NI庫，如下圖所示。

為每個庫中的所有函數提供了NI幫助。另外還提供了一些高級安捷倫函數，簡化使用NI函數調用導致的不必要的复雜任務。

SCXI支持

目前，系統一次只支持一個SCXI卡槽，其机箱號碼必須落在1 – 5(含)之間，与NI-MAX設置一致。

對VEE來說，有兩种SCXI模塊。這兩种類型主要取決于SCXI卡槽連接到系統上的方式。在從Instrument Manager中選擇Find Instruments后，SCXI設備會表現為NIDAQ、NI-SWITCH或兩者。

通過NIDAQ模塊，只能使用NIDAQ驅動程序中的SCXI_xxxx處理。使用任何其它處理(如Analog In, Analog Out, Digitial In等)會導致VEE錯誤817。例如，RTSI_Clear處理會導致錯誤，而SCXI_Calibrate則不會導致錯誤。

表現為NI-SWITCH的SCXI模塊采用NI-SWITCH驅動程序。某些SCXI模塊同時表現為NI-DAQ和NI-SWITCH這兩种類型。可以互換使用這些模塊，确定最适合需求的驅動程序。

SCXI Addressing︰在确定SCXI設備地址時，其為SCXICageID::Slot#，如SCXI2::4。

另請參閱

配置儀器，使用面板驅動程序，使用Direct I/O，使用PC插件電路板，IVI-COM和Instrument Manager，使用VXIplug&play驅動程序，在VEE中使用ActiveX Automation


IVI-COM和Instrument Manager

IVI是IVI基金會正在開發的一种新的儀器驅動程序標準。IVI基金會是為促進測試儀器編程規范而建立的一家聯合會。這些規范提供了多种優勢，但主要優勢是可以實現更簡單的儀器互換能力。如需了解IVI基金會相關信息，請訪問︰http://www.ivifoundation.org/。

IVI標準的優勢是儀器互換能力。假設兩個厂商都為自己的DMM提供IVI-COM驅動程序。為滿足IVI標準，基本類驅動程序必須能夠互換。這意味著不管在系統上使用哪個驅動程序，這兩家厂商提供的DMM都將正常運行。您的代碼可以重用，而不需任何干預。

IVI-COM驅動程序方案有四种。在任何情況下，您必須先為將要使用的儀器下載和安裝IVI驅動程序，然后應用下述四种方案中的一种方案︰

1 在儀器互換能力不重要，使用一种設備驅動程序就足夠了時使用這一方案。

啟動Instrument Manager，添加一部儀器。雙擊儀器，進入屬性頁，選擇Advanced。選擇IVI-COM Driver一欄，選擇与儀器相匹配的IVI驅動程序名稱。現在您已經為儀器設置了一個儀器專用驅動程序。儀器專用設備驅動程序擁有制造商提供的功能，使其与同類其它儀器驅動程序區分開來。

這時，可以回到Instrument Manager，選擇儀器，選擇IVI-COM Driver按鈕，創建一個To/From處理對象。

2 在儀器互換能力重要，使用一种設備驅動程序就足夠了時使用這一方案。

啟動Instrument Manager，添加一部儀器。雙擊儀器，進入屬性頁，選擇Advanced。選擇IVI-COM Driver一欄，選擇与儀器相匹配的IVI驅動程序名稱。在標有Instrument Interchangeabililty的框中，复選標有Use Class Compliant Interface的复選框。复選這個框告訴VEE您想讓VEE与只使用符合儀器驅動程序類的接口的儀器通話。這使得儀器能夠与同類其它儀器互換，如DMM或Scope。

3 在儀器互換能力不重要，使用IVI會話名稱很重要時使用這一方案。

啟動Instrument Manager，添加一部儀器。雙擊儀器，進入屬性頁，選擇Advanced。選擇IVI-COM Driver一欄，選擇与儀器相匹配的IVI session名稱。IVI會話名稱將從IVI Config Store中收集儀器的配置信息，因此資源字符串將變成灰色。

如果您還沒有定義會話，進入Instrument Interchangeability框，選擇標有Configure IVI Driver Session的按鈕。不要复選Use Class Compliant Interface复選框。出現的應用用來管理IVI Config Store信息。左上方的圖標找到与您的計算机直接相連的儀器，讀取 IVI Config Store中識別的其它儀器。

一旦已經找到儀器，在希望增加會話的儀器上點擊鼠標右鍵，選擇Add Instrument Session。在運行這個向導前，計算机上必須已經安裝了IVI驅動程序。在向導完成時，可以選擇剛剛創建的會話名。

您將使用具有IVI會話名的儀器專用驅動程序。

4 如果儀器互換能力和使用IVI會話名稱都很重要時使用這一方案。

啟動Instrument Manager，添加一部儀器。雙擊儀器，進入屬性頁，選擇Advanced。選擇IVI-COM Driver一欄，選擇与儀器相匹配的IVI session名稱。

如果您還沒有定義會話，進入Instrument Interchangeability框，選擇標有Configure IVI Driver Session的按鈕。在任何情況下，复選Use Class Compliant Interface复選框。

出現的應用用來管理IVI Config Store信息。左上方的圖標找到与您的計算机直接相連的儀器，讀取 IVI Config Store中識別的其它儀器。

一旦已經找到儀器，在希望增加會話的儀器上點擊鼠標右鍵，選擇Add Instrument Session。在運行這個向導前，計算机上必須已經安裝了IVI驅動程序。在向導完成時，可以選擇剛剛創建的會話名。

您將使用具有IVI會話名的同類驅動程序。

另請參閱

配置儀器，使用面板驅動程序，使用Direct I/O，使用PC插件電路板，在VEE中使用NI Data Acquisition，使用VXIplug&play驅動程序，在VEE中使用ActiveX Automation


使用Panel Driver對象

使用Instrument Manager對話框，在工作區中添加Panel Driver對象。我們以HP 34401A万用表配置為例。

1. 選擇I/O [image] Instrument Manager...，出現一個對話框，在Instrument List區域中列出配置的儀器。

2. 點擊想添加到工作區中的儀器。如果它配置了一個儀器驅程文件，Create I/O Object區域中的Panel Driver按鈕激活。如需范例，點擊dmm(hp34401a@(NOT LIVE))。

3. 點擊Panel Driver按鈕。儀器面板對象上出現外框。把外框放在工作區中所需的位置，按鼠標鍵。

4. 關閉活動模式(默認值)，hp34401a儀器面板生成仿真數据。試著點擊顯示字段中的?，出現仿真讀數。只有Panel Drivers中才能使用活動模式。

關閉活動模式，即使不存在儀器，仍可以運行I/O程序。一旦已經測試了程序，并連接了儀器，可以把活動模式設置為ON。

5. 在默認情況下會顯示Measure Panel，允許選擇Function, Range等等。為改變Function設置，點擊標有DC Volts的Function按鈕。

6. 如果想把函數變成DC Amps，雙擊列表中的DC Amps。如果想變回DC Volts，點擊Function按鈕，其現在標為DC Amps，然后雙擊列表中的DC Volts。

在活動模式關閉時，這些變化都不會影響儀器，即使儀器連接到系統上。但是，如果活動模式打開，HP 34401A万用表連接到GPIB (正确确定地址和配置)，VEE儀器面板對象上的變化將自動改變儀器狀態。

7. Measure Panel只是可以選擇的多個面板之一。點擊對象右上角的Measure Panel按鈕。

8. 雙擊列表中的Status Panel，出現Status Panel。

9. 如果想返回Measure Panel，點擊Status Panel按鈕，雙擊Measure Panel。

儀器面板對象中的各种面板允許控制儀器的几乎所有函數。但是，您需要熟悉特定儀器，以有效使用儀器面板。如需進一步信息，請參閱儀器用戶手冊。如需与儀器面板對象有關的信息，從對象菜單中選擇Help。

另請參閱

使用Panel Driver對象讀取數据


使用Panel Driver對象讀取數据

在這一程序中，您將建立一個簡單的程序，從HP 34401A万用表的儀器面板對象中顯示仿真的電壓讀數。

1. 為HP 34401A添加一個儀器面板對象 (I/O [image] Instrument Manager...)。

2. 從儀器面板的對象菜單中選擇Add Terminal by Component [image] Select Output Component。

3. 點擊HP 34401A顯示畫面，Reading端被添加到輸出上。

4. 在工作區中添加一個AlphaNumeric顯示對象，如下圖所示連接這個對象，運行程序。由于活動模式關閉，因此會仿真數据，Simulated Data標注(及標題欄中的(NOT LIVE))表明了這一點。

5. 為打開活動模式，選擇I/O [image] Instrument Manager...，在列表中選擇dmm (hp34401a @ (NOT LIVE))，然后點擊Properties。出現Instrument Properties對話框，顯示HP 34401A万用表的配置。

6. 如果顯示的地址(默認值為722)与儀器地址不匹配，輸入正确的地址。(如需与某台儀器地址有關的信息，請參閱儀器用戶手冊。)

7. 點擊Advanced?/font>按鈕。點擊Live Mode右面的按鈕。按鈕從OFF切換到ON。然后點擊OK按鈕，返回Instrument Manager對話框。

8. 點擊the Save按鈕。儀器面板現在打開活動模式。

新標題hp34401a (@ 722)表明活動模式打開，儀器面板配置成与GPIB地址722上的HP 34401A万用表通信。當然，程序將超時，除非在連接到計算机的地址722上的确有一台HP 34401A。

這時，如果有一台HP 34401A万用表，那么可以連接万用表，運行程序。否則，使用Advanced Instrument Properties對話框(I/O [image] Instrument Manager..., 點擊Properties, 點擊Advanced?/font>)，返回活動模式關閉狀態。


使用組件驅程對象

通過使用組件驅程對象，可以稍微提高性能。我們使用HP 34401A万用表配置為例。

1. 選擇I/O [image] Instrument Manager...。出現一個對話框，Instrument List區域中列出配置的儀器。

2. 點擊想在工作區中添加的儀器。如果它配置了一個儀器驅程文件，Create I/O Object區域中的Component Driver按鈕會激活。如需范例，點擊dmm(hp34401a@(NOT LIVE))。

3. 點擊Component Driver按鈕，把對象外框放在工作區中。

4. 組件驅程對象作為圖標出現。雙擊圖標，顯示open view。

5. 在組件驅程對象中添加一個Reading端(對象菜單 [image] Add Terminal [image] Data Output)。

另請參閱

手冊范例目錄中的manual22.vee ， Help [image] Open Example...， Component Driver


部分技朮

本節介紹了以交互方式或在程序中使用Panel Driver和Component Driver對象的某些技朮。

交互使用Panel Driver對象

Panel Driver對象打開的視圖提供了一個圖形控制面板，可以使用這個面板，以交互方式構建一個測量狀態。如果把相應的物理儀器連接到計算机上，并打開Live Mode，可以在構建測量狀態時交互控制物理儀器。

為改變各個設置，在圖形控制面板中點擊相應的字段，填寫出現的對話框。為進行測量及查看結果，點擊數字顯示畫面或XY顯示畫面的顯示區。XY顯示畫面會用几秒鐘的時間進行更新。

以程序化方式使用Panel Driver對象

為在程序中添加Panel Driver對象︰

1 點擊I/O [image] Instrument Manager...。出現Instrument Manager對話框。

2 點擊希望的儀器，高亮度顯示它，然后點擊Panel Driver按鈕。

備注

如果儀器還沒有配置Panel Driver文件，那么Panel Driver按鈕將不活動 ("變灰")。參閱配置程序。

3 在出現對象輪廓時，定位指針，點擊一次，把對象放在工作區中。

為在程序中使用Panel Driver對象，通常使用輸入端或輸出端，設置組件值。每個輸入端或輸出端實際上与驅程中的組件對應。有兩种方式添加一個端︰

• 從Panel Driver對象菜單中選擇Add Terminal [image] Data Input或Add Terminal [image] Data Output。出現一個列表框，列出還沒有作為端使用的所有有效驅程組件。雙擊列表中希望作為端添加的組件。

• 選擇Add Terminal by Component [image] Select Input Component或Add Terminal by Component。從Panel Driver對象菜單中選擇 Output Component。在進行這一選擇后，在圖形控制面板中點擊其中一個字段或顯示區域，作為端添加相應的組件。

一般來說，使用上面列明的第一种方法要更加方便，因為您不必猜測希望使用的組件名稱。但是，某些組件在圖形控制面板的任何部分都看不到。必須使用第二种方法存取這些組件。

在程序中使用Component Driver對象

為在程序中添加Component Driver對象︰

1 點擊I/O [image] Instrument Manager...，出現已配置的儀器列表。

2 點擊希望的儀器，高亮度顯示儀器，然后點擊Component Driver按鈕。

備注

如果儀器還沒有配置Panel Driver文件，那么Component Driver按鈕將不活動 ("變灰")。參閱配置程序。

3 在出現對象輪廓時，定位指針，點擊一次，把對象放在工作區中。

在需要重复執行一個儀器控制對象、同時只改變少量組件時，一般使用Component Driver對象。在這些情況下，Component Driver對象要優先于Panel Driver對象，因為Component Driver對象只讀寫指定的組件，執行速度略快。

下面的程序說明了這种情況。這個程序通過掃描fgen提供的輸入頻率，使用dvm測量響應，來測量濾波器的頻響。由于附到For Log Range上的子線程重复執行，因此可以使用組件驅程，改善執行速度。注意，Panel Driver對象仍适用fgen和dvm的初始設置。

上面的程序存儲在examples目錄下的manual15.vee文件中。

獲得Panel Driver幫助

為獲得Panel Driver相關幫助，從Panel Driver或Component Driver對象的對象菜單中選擇Help。然后，從出現的對話框中打開相應的幫助主題。


使用PC插件板卡

VEE為控制PC插件板卡提供了兩种方式︰

1 Data Translation的Visual Programming Interface。(通過Data Translation直接訂購VPI應用程序)

2 PC板卡制造商提供的動態鏈接庫，如ComputerBoards或Meilhaus。(如需与使用動態鏈接庫有關的信息，請參閱“使用動態鏈接庫"。)

Data Translation的Visual Programming Interface (VPI)

Data Translation的VPI与VEE一起使用，為PCI插件創建無縫的數据采集性能。通過利用Data Translation的Open Layers標準的靈活性，可以存取50多种數据采集板卡。

VPI直接与要求低通道數量的基于ISA、PCI和USB的數据采集插件一起使用。VPI在VEE中增加了一個菜單選項和特定的PC插件數据采集圖標。這些圖標驅動著Data Translation硬件功能。

Amplicon

Amplicon在200系列內部提供了各种模擬和數字I/O PC插件板卡，均支持VEE。

軟件接口是Amplicon的AmpDIO驅動程序包的一部分，AmpDIO驅動程序包是一种适用于Windows、擁有多線程DLL的32位API，支持中斷驅動的采集。API包含100多個調用，可以使用VEE專用定義文件及在一個程序中使用最多8個板卡的工具，作為匯編的函數高效靈活地進行編程。

除Amplicon自己的一系列插件板卡外(其中包括串行通信設備)，Amplicon還可以為數据采集、串行通信和GPIB應用提供來自許多其它制造商的板卡。

下圖顯示了VEE運行時軟件(与Amplicon模擬輸出板卡PCI224和PCI234及模擬輸入板卡PCI230和PCI260免費提供)，在PC上同時提供了多個輸入和輸出信號。

ComputerBoards PC插件

ComputerBoards提供了功能強大、兼容VEE的低成本PC插件板卡。(如需支持的PC插件厂商的完整清單，請參閱VEE資料。)

您只需安裝板卡及其I/O庫，使用制造商提供的程序配置板卡。根据說明，把板卡連接到設備上。在VEE中，導入庫，可以準備調用ComputerBoards I/O庫中的測量功能。下圖來自制造商提供的演示程序。

上圖顯示了使用這個100 KHz A/D板卡的演示程序的面板視圖。下圖顯示了VEE調用使這些數据采集函數調用成為可能的ComputerBoards I/O庫。

另請參閱

配置儀器，使用面板驅動程序，使用Direct I/O，在VEE中使用NI Data Acquisition，IVI-COM和Instrument Manager，使用VXIplug&play驅動程序，在VEE中使用ActiveX Automation


輪詢GPIB儀器

GPIB儀器隨時在總線上發送服務請求("SRQ")。Agilent VEE提供了兩個組件，幫助确定哪台設備請求服務及發生的問題。這兩個對象都位于I/O [image] Advanced I/O下。

Interface Event對象報告整個總線的事件。例如，如果Interface Event設置成為hpib7報告SRQ，那么邏輯單元7的接口上的任何設備都可能會導致事件。還可以使用Interface Event對象，檢測串行接口和VXI接口上的事件(如果配置了此類儀器)。

Instrument Event對象從某台狀態返回狀態字節。在GPIB上，使用Instrument Event對象輪詢總線上的各台設備。

范例

下面的程序說明了怎樣使用Interface Event和Instrument Event對象處理GPIB服務請求︰

在這個程序中，Interface Event對象等待hpib7上的事件，即邏輯單元7上的GPIB接口。但是，Interface Event對象沒有指明總線上哪台設備導致了事件。

Interface Event對象的event輸出同時激活這兩個Instrument Event對象，它們單獨輪詢兩台GPIB儀器(HP 34401A和HP 54600A)。每個Instrument Event對象都把操作設置成Any Set，把其掩碼設置成#H10。Any Set導致對象等到事件發生，然后對返回的值与掩碼#H10執行邏輯AND運算，掩碼#H10与狀態字節中的第4位對應 (DAV或"data available")。status輸出端返回結果。

另請參閱

Instrument Event

Interface Event


監測總線消息

Agilent VEE通過一系列消息与儀器通信。在GPIB上，總線消息遵守IEEE-488標準。在正常情況下，這些消息是看不到的。但是，在調試I/O程序時，可能要監測總線上的消息。為此，可以在程序中添加一個Bus I/O Monitor對象，還可以使用這個對象，監測VXI或串行接口消息。

備注

Bus I/O Monitor不顯示從VXIplug&play驅程中完成的任何I/O。

添加Bus I/O Monitor對象

1. 選擇I/O [image] Bus I/O Monitor，出現Select I/O Channel對話框。

2. 選擇其中一個接口，如hpib7，點擊OK。

3. 把對象放在工作區中。

范例

下面的程序顯示了監測總線的Bus I/O Monitor對象︰

每次運行程序時，會記錄總線消息的順序。在程序停止運行時，可以滾動消息。在默認情況下，Bus I/O Monitor對象可以在緩沖器中保存256行信息，但可以改變緩沖器大小。

Bus I/O Monitor對象會降慢程序速度，一般用于診斷目的。許多編程人員使用面板或組件驅程創建程序，控制儀器，然后使用Bus I/O Monitor "捕獲"用來与儀器通信的命令和消息。然后可以使用這些命令和消息，使用Direct I/O与儀器通信，提高I/O性能。

另請參閱

Bus I/O Monitor


輸入數字

可以使用下面的范例中所示的慣例，在任何VEE數字輸入字段中輸入一個數字。連字號(-)作為減號使用，句點(.)作為小數點使用。在需要時，可以在數字輸入字段中包括一個加號(+)。注意，不允許使用逗號(,)作為分隔符。(文本輸入字段支持任何任意字符串。)

輸入普通數字

1001

1020768 (而不是1,020,768)

12.12

-1.223

輸入指數數字

1.23E3 (等于1.23x10^3或1230)

6.0225E23 (等于6.0225x10^23)

6.6256E-27 (等于6.6256x10^-27)

使用ISO縮寫輸入數字

1.23k (等于1.23x10^3或1230)

3.61M (等于3.61x10^6)

2.3n (等于2.3x10^-9)

下表列出了VEE識別的輸入數字使用的ISO縮寫。

縮寫 后綴 倍數

X exa 10^18

P peta 10^15

T tera 10^12

G giga 10^9

M mega 10^6

k或K kilo 10^3

m milli 10^-3

u micro 10^-6

n nano 10^-9

p pico 10^-12

f femto 10^-15

a atto 10^-18

VEE可以把輸入的數字形式變成另一种同等形式，例如︰

+1.23變成1.23 (去掉加號)

6.3E-9變成6.3n

6.0225E23變成602.25E21 (采用標準數字格式)

另請參閱

改變數字格式


改變數字格式

可以改變VEE中顯示數字的所有對象使用的默認的全局數字格式，可以改變顯示數字的各個對象使用的數字格式。

改變全局數字格式

1. 從File菜單中選擇Default Preferences，然后在對話框中選擇Number一欄。

2. 改變相應的字段，選擇希望的數字格式︰

a. Integer 決定著整數使用的基數︰Decimal, Octal, Hexadecimal或Binary。 (點擊字段或箭頭，出現下拉列表。)

b. Real 決定著實數的格式︰Standard, Fixed, Scientific或Engineering。(點擊字段或箭頭，出現下拉列表。)

c. Significant digits決定著有用的位數(極限是18)。輸入希望的數字。

3. 選擇希望怎樣保存變動︰

a. 點擊Save，把變動在vee.rc中另存為新的默認值。

b. 點擊OK，只對這個VEE會話使用變動 (直到選擇File [image] New, Open或Exit)。

改變某些對象的數字格式

可以為下述對象獨立選擇數字格式。選擇的數字格式不考慮全局數字格式，但只适用于特定對象。

菜單Data [image] Continuous上的數字滑尺和旋鈕

菜單Data [image] Constant上的常數

菜單Display上的AlphaNumeric

菜單Display上的Logging AlphaNumeric

菜單Display [image] Indicator上的Fill Bar, Meter, Tank和Thermometer

菜單Display上的XY圖形顯示畫面

1. 從對象的對象菜單中選擇Properties，然后點擊Number Format。

2. 點擊复選框，關閉Global Format，然后點擊數字格式字段(或其箭頭)，出現下拉菜單。

3. 選擇希望對象使用的數字格式，然后點擊OK。


改變UserFunction彈出面板的大小

改变触发模式

在VEE，可以用度、弧度或梯度输入和显示三角值，具体视触发模式而定。

在当前VEE会话期间，将激活新的触发模式。在重启VEE时，触发模式会恢复到默认值(Degrees)。每个上下文(Main, UserObject和UserFunction)都有自己的触发模式设置。

1. 打开Main, UserObject或UserFunction Window的对象菜单，然后选择Properties。

2. 选择Trig Mode，选择(Degrees, Radians或Gradians)。

备注

所有内部计算都使用弧度完成。如果把触发模式设置成Radians，性能会略微加快，因为VEE不需要进行弧度转换。

快捷方式

双击Main, UserObject或UserFunction Window的标题栏，进入Properties对话框。


使用數据常數

VEE提供了多种數据常數。為使用標量數据常數︰

1. 選擇一個數据常數對象 (Data [image] Constant [image])。選項包括Text, UInt8, Int16, Int32, Real32, Real64, Coord, Complex, PComplex, Date/Time和Record。

2. 在常數對象中輸入相應類型的數据。最常用的類型是Text, Int32和Real64常數對象︰

a. 在Text常數中，可以輸入任何文本字符串(最大長度為32,767個字符)。

b. 在Int32常數中，可以輸入任何32位、2的補數整數(范圍是-2147483648 到 +2147483647)。

c. 在Real64常數中，可以輸入任何64位實數(范圍是?.7976931348623157E308)。

在下面的范例中，Text, Int32和Real64常數對象連接到VEE程序線程中。收到數据的對象根据需要自動轉換數据類型。在本例中，整數3轉換成一個實數，加上6.24，得到實數值9.24。

另請參閱

創建數組常數

使用數据滑尺

使用數据選擇對象

使用數据輸入對話框

轉換輸入端上的數据類型


使用數据滑尺和旋鈕

VEE提供了四類數据滑尺和旋鈕對象︰Real64 Slider, Int32 Slider, Real64 Knob和Int32 Knob。這些對象允許通過移動線性滑尺或圓形旋鈕，在程序中輸入一個值。

使用Real64滑尺或Int32滑尺

1. 選擇Data [image] Continuous [image] Real64 Slider或Int32 Slider，把對象放在工作區中。默認情況下，Real64 Slider對象的范圍為0 - 1；Int32 Slider的范圍為0 - 100。

2. 使用下面三种方式之一改變當前值(顯示在頂部字段中)︰

a. 點擊并按住滑尺旋鈕，向上或向下移動。

b. 點擊值旁邊的旋轉字段箭頭。

c. 點擊值，輸入一個新值。

3. 為改變范圍， 點擊上限或下限字段，輸入值。

使用Real64旋鈕或Int32旋鈕

1. 選擇Data [image] Continuous [image] Real64 Knob或Int32 Knob，把對象放在工作區中。默認情況下，Real64 Knob對象的范圍為0 - 1；Int32 Knob的范圍為0 - 100。

2. 使用下面三种方式之一改變當前值(顯示在底部字段中)︰

a. 點擊并按住圓形旋鈕，旋轉旋鈕。

b. 點擊值旁邊的旋轉字段箭頭。

c. 點擊值，輸入一個新值。

3. 為改變范圍，點擊上限或下限字段，輸入值。

另請參閱

Int32 Knob

Int32 Slider

Real64 Knob

Real64 Slider


使用數据選擇對象

VEE提供了6類數据選擇對象︰Radio Buttons, Cyclic Button, List, Drop-Down List, Pop-Up List和Slider List。

使用數据選擇對象

(下面的程序介紹了Radio Buttons對象，這一程序适用于所有6類數据選擇對象。)

1. 選擇Data [image] Selection Control [image] Radio Buttons，把對象放在工作區中。注意，默認的單選按鈕選項是Item 1, Item 2和Item 3。

2. 為改變默認選項，從對象菜單中選擇Edit Enum Values，出現Edit Enum Values對話框。

3. 根据需要編輯值。使用Tab (或向下箭頭)前移字段，使用Shift+Tab (或向上箭頭)上移字段。可以替換每個字段中的文本，或添加字段，用tab經過上一個字段，輸入額外的文本。

4. 在字段編輯完成時，點擊OK。

改變數据選擇對象類型

1. 從對象菜單中選擇Properties，出現Selection Control Properties對話框。

2. 在General一欄上，點擊首選的Format類型，然后點擊OK。

另請參閱

Selection Control


使用數据輸入對話框

Data [image] Dialog Box下有三個內置對話框對象，可以用來提示用戶在程序中輸入數据，其分別是︰Text Input, Int32 Input和Real64 Input。

(下面的程序描述了Real64 Input對話框對象，Int32 Input和Text Input對象的程序与之類似。)

1. 在工作區中添加一個Real64 Input對話框對象(Data [image] Dialog Box [image] Real64 Input)。

在Real64 Input對象運行時，它顯示一個彈出對話框，要求用戶輸入一個實數。可以設置下述參數︰

a. Prompt/Label确定對話框中顯示的消息。

b. Default Value确定對話框中顯示的可選的默認值。

c. Value Constraint确定輸入值必須匹配的范圍或其它測試。

d. Error Message确定在用戶應答未通過Value Constraint測試的數据時顯示的錯誤消息。

2. 把Prompt/Label字段變成Please enter a real value。

3. 運行程序，出現彈出對話框。

4. 在對話框中輸入11，點擊OK，出現錯誤信息。

5. 在錯誤消息框中點擊OK。現在在Real64 Input對話框中輸入一個位于0 - 10范圍內的數字，然后點擊OK。接受數字，在Value端輸出數字。

另請參閱

Dialog Box

關于內置對話框對象


輸入公式

VEE中的基本數學對象是Formula對象︰

當放在工作區中時，對象包含一個預置的表達式，有一個數据輸入端A。注意，表達式中的變量 A 与數据輸入端 A 對應。

使用与變量名稱相同的輸入端上的數据替換表達式中的每個變量。變量名稱和端名稱不分大小寫。在表達式a+1中，變量a与A端對應。

表達式中的變量必須有一個對應的輸入端，否則會發生錯誤。如果使用全局變量，那么不要求對應的端。

使用Formula對象

1. 把Formula對象添加到工作區中(Device [image] Formula)。

2. 點擊Formula對象中的表達式字段，根据需要修改表達式。例如，輸入表達式2*A+abs(B)+sin(C)+6。通過按Enter，可以在多行上輸入一個或多個表達式。

3. 根据要求添加數据輸入端。(把指針放在數据輸入端區域，按Ctrl+A。) 刪除沒有使用的任何數据輸入端。(把指針放在端上，按Ctrl+D。)

4. 把所有數据輸入端連接到相應的數据來源上，把Result數据輸出端連接到顯示對象上，完成程序。

從VEE 8.0開始，Formula中提供了Code Completion和Code Insight。

范例

下面的程序使用Formula對象對表達式求解及顯示結果。注意在多行中的各項之間划分表達式。

另請參閱

創建變量

Formula

處理數据

Code Completion

Code Insight


使用數學運算符和函數

VEE以運算符和函數的形式提供150多种內置數學對象。這些對象實際上是Formula對象，預先配置了描述性標題、表達式和相應的數据輸入端。為訪問運算符和函數，使用Device [image] Function & Object Browser或工具欄按鈕。

Function & Object Browser按鈕

可以使用下述步驟修改數學對象︰

1. 把表達式變成任何有效的VEE表達式。

2. 改變標題，描述新的表達式。

3. 根据要求增加或刪除數据輸入端。

技巧

1. 不要使用多個公式對象"連線"一個表達式。而是應該把數學運算符和函數組合到一個對象的一個表達式中。使用的對象數量越少，VEE程序的運行程度越快。

不要︰

而要︰

2. 在改變表達式時，确認變量名稱有相應的輸入端。

3. 在改變數据輸入端的名稱時(雙擊端，輸入一個新名稱)，确認在表達式中還改變了相應的變量名稱。

4. 在把對象最小化成圖標前，确認改變標題，描述新數學表達式的功能。一直改變對象標題是一個很好的編程作法。

另請參閱

處理數据


在表達式中使用混合數据類型

VEE根据需要自動轉換數据類型，因此可以使用包含混合數据類型的表達式。您只需在數學對象中輸入表達式，把數据源連接到相應的數据輸入端即可。

范例

在下面的程序中，Formula對象在輸入端A收到waveform數据，在輸入端B收到real數据。Formula對象對表達式abs(A)+B求解，把實數值0.75加到波形中256個點每個點的絕對值上。

另請參閱

處理數据


在If/Then/Else對象中使用表達式

VEE可以對數學表達式求解，根据結果确定程序流程分支。基本條件對象是If/Then/Else對象。

可以在If/Then/Else對象中把默認表達式變成任何條件表達式，或使用Flow [image] Conditional下的對象。Conditional對象實際上是預先配置表達式、描述標題和數据輸入端的If/Then/Else對象。

使用If/Then/Else對象

1. 在工作區中添加If/Then/Else對象(Flow [image] If/Then/Else)。

2. 點擊If/Then/Else對象中的表達式字段，根据需要修改表達式。例如，輸入表達式A==B或B>=C。

3. 根据要求添加數据輸入端。(把指針放在數据輸入端區域，按Ctrl+A) 刪除任何沒有使用的數据輸入端。(把指針放在端上，按Ctrl+D)

4. 連接所有數据輸入端，連接其中一個或兩個數据輸出端，完成程序。如果表達式為"true"，那么Then端輸出表達式結果(一般為1)。如果表達式為"false"，那么Else端輸出0。

5. 如果需要，在對象中添加Else If條件。

范例

在下面的程序中，如果表達式A==B或B*C==50為真，Then輸出端會激活UserObject1。如果表達式為假，Else輸出端會激活UserObject2。

另請參閱

在VEE程序內進行分支

Conditional

If/Then/Else

處理數据


在事務中使用表達式

VEE數學表達式可以求解，用于I/O事務對象中，如To File和From File對象。

對To File事務中的表達式求解范例

1. 在工作區中添加一個To File對象(I/O [image] To [image] File)。

2. 雙擊事務WRITE TEXT a EOL，出現I/O Transaction對話框。

3. 點擊默認表達式a，把表達式變成a+sin(b)︰

4. 點擊OK，保存新事務(WRITE TEXT a+sin(b) EOL)。

5. 在對象中添加一個B數据輸入端，連接數据輸入端。

在下面的程序中，To File對象把a (1)的值加到sin(b)的值中(30度的正弦是0.5)，把結果1.5輸出到名為myFile的文件中。

另請參閱

Formula, From File, To File

處理數据


查找第一個空行

查找字符串的长度

1. 使用Function & Object Browser在工作区中添加strLen(str)对象，在工具栏上点击 [image] 。

2. 把字符串数据来源连接到str数据输入端。根据需要连接Result输出。

3. 运行程序。在strLen(str)对象运行时，Result端输出字符串长度。

范例

strLen(str)对象作为Int32数值输出用字节表示的字符串长度。如果str是一个一维字符串数组，strLen(str)会返回一个数组，其中包含数组每个要素的长度：

另请参阅

strLen(str)


獲得子字符串

兩個函數可以獲得子字符串︰

strFromThru(str,from,thru)
strFromLen(str,from,len)

其中︰

str是原始字符串。

from是子字符串開始的位置。

thru是子字符串結束的位置。

len是子字符串的長度。

字符串中的所有字符位置都基于零，也就是說，第一個字符的位置為0。

使用strFromThru(str,from,thru)獲得子字符串

1. 使用Function & Object Browser在工作區中添加strFromThru對象。

在工具欄上點擊 [image] ，然后查看
Type: Built-in Functions
Category: String
Member: strFromThru

2. 把字符串數据來源連接到str輸入端。

3. 指定from值和thru值︰

a. 把數据連接到from和thru輸入端

或

b. 改變表達式，明确指定from和thru。例如，表達式strFromThru(str,0,5)返回字符串str的字符0 - 5 (前6個字符)。記住在進行此類操作時刪除from端和thru端。

范例

下面的程序返回字符串的前6個字符︰

另請參閱

strFromLen (str,from,len)

strFromThru (str,from, thru)


連接字符串

可以在VEE中使用加法(+)和乘法(*)連接多個字符串。

范例

可以連接兩個字符串︰

可以連接一個字符串和一個數字(數字轉換成字符串)︰

可以把一個數字乘以一個字符串，重复連接字符串︰

另請參閱

Accumulator

Concatenator


比較兩個字符串是否相等

下面的程序使用條件對象比較了兩個字符串是否相等。如果兩個字符串完全相同(包括空格)，那么表達式結果(在本例中是a 1)在Then端輸出。否則Else端輸出0。這一比較區分大小寫(Now与now不同)。

另請參閱

Conditional

strPosStr (str1,str2)


把數字轉換成字符串

可以使用To String把數字轉換成字符串。下面的程序說明了怎樣把用秒表示的當前時間轉換成采用時戳格式的字符串︰

1. 在工作區中添加一個To String對象 (I/O [image] To [image] String)。雙擊圖標，顯示Open View對象。

2. 雙擊默認事務WRITE TEXT a EOL，出現I/O Transaction對話框。

3. 點擊DEFAULT FORMAT (或其箭頭)，顯示下拉菜單。選擇TIME STAMP FORMAT，點擊OK。

4. 使用Function & Object Browser添加一個 now()對象。

在工具欄上點擊 [image] ，然后會看到︰
Type: Built-in Functions
Category: Time & Date
Member: now

把now()連接到To String的數据輸入端，把AlphaNumeric顯示畫面連接到To String的數据輸出端。

5. 運行程序。now()對象輸出用秒表示的時間。這個值轉換成時戳格式，并進行顯示。

另請參閱

intToChar(a)

To String

VEE高級技朮︰"使用事務I/O"一章


把字符串轉換成數字

如果字符串包括可以作為數字讀取的數字信息，那么可以使用From String提取數字。

1. 在工作區中添加一個From String對象(I/O [image] From [image] String)。雙擊圖標，顯示Open View對象。默認事務是READ TEXT x REAL64，它作為文本讀取字符串，如果可能，會輸出一個實數。

2. 為查看結果，把Text常數對象連接到數据輸入端，把AlphaNumeric顯示畫面連接到數据輸出端。

3. 在Text常數中輸入字符串Item number: A1222，運行程序。顯示畫面上輸出實數值1222。

另請參閱

charToInt(a)

From String

VEE高級技朮；"使用事務I/O"


創建數組常數

可以使用數据常數對象，如Text, Int32和Real64，創建一維數組。在希望手動設置一維數組中的每個值時，使用這种技朮。

創建9個要素一維文本數組

1. 在工作區中添加一個Text常數對象(Data [image] Constant [image] Text)。

2. 從對象菜單中選擇Properties，出現Text Constant Properties對話框。在默認情況下，Text常數對象配置為Scalar。

3. 為設置數組大小，點擊Configuration下的1D Array，然后點擊Size字段，把它變成9。

4. 為得到固定數量的要素，還要點擊Size Fixed复選框。如果想在最后增加額外的要素，不要選中Size Fixed。

5. 點擊OK。Text常數對象表現為要素0000:到0008:的數組。VEE數組基于零。

6. 為設置每個值，點擊0000:右面，輸入數組的第一個要素。使用Tab (或向下箭頭)前移數組要素，使用Shift+Tab (或向上箭頭)向回向上移動數組要素。為每個要素輸入文本字符串。

9個要素一維文本數組范例

另請參閱

Constant

分配數組

在表達式中構建數組


分配數組

在希望以程序化方式創建數組，并相應設置其值時，可以分配數組。可以創建一維或多維數組。

對正在使用的數据類型，使用Data [image] Allocate Array下的相應對象，這些對象包括文本數組使用的Alloc Text，以及數字數組使用的Alloc UInt8, Alloc Int16, Alloc Int32, Alloc Real32, Alloc Real64, Alloc Coord, Alloc Complex和Alloc PComplex。

技巧

所有VEE數組索引都基于零，也就是說，在任何維度中第一個要素的索引都是0。

分配的數組可以是1維到10維，通常?#22635;充?#37325;复的初始值。

由多個值組成的數組作為一個數据容器在對象之間傳送。

只能使用線性或對數值斜坡初始化一維整數數組和實數數組。

分配數組要求的內存取決于維數、維度大小和數据類型。

下面的規程顯示了怎樣分配各种類型的數組︰

分配一維實數數組

1. 在工作區中添加一個Alloc Real64對象(Data [image] Allocate Array [image] Real64)。

2. 在默認情況下，Alloc Real64對象為一維數組分配取值的線性斜坡。點擊Lin Ramp字段(或其箭頭)，出現下拉菜單。

3. 可以選擇Init Value, Lin Ramp或Log Ramp。點擊Log Ramp選擇取值的對數斜坡。

4. 把XY Trace顯示畫面對象連接到Alloc Real64對象上，運行程序。

分配兩維或更大的實數數組

1. 在工作區中添加一個Alloc Real64對象 (Data [image] Allocate Array [image] Real64)。

2. 在默認情況下，Alloc Real64對象為一維數組分配取值的線性斜坡。點擊Lin Ramp字段(或其箭頭)，出現下拉菜單。

3. 點擊從2到10的維度大小。對象調節成新的設置。

4. 把第一個維度的大小變成4，第二個變成3，依此類推。然后，把一個AlphaNumeric顯示畫面對象連接到Alloc Real64對象的輸出。

5. 運行程序。如果Num Dims設為2，那么調整AlphaNumeric對象大小，顯示整個數組。如果Num Dims大于2，那么AlphaNumeric對象顯示數組大小，因為VEE畫面對象顯示的維度不能超過兩維。

為顯示兩維以上的維度，可以使用To File對象的CONTAINER編碼，把數据直接導出到PV-WAVE中，進行可視數据分析。

分配的數組越大，占用的計算机內存越多。在超過五維時，如果計算机采用建議數量的內存，可能需要聲明較小的參數。如果數組太大，VEE流程可能會耗盡內存，導致錯誤。

另請參閱

在表達式中構建數組

改變數組中的值

創建數組常數

把數据采集到數組中

Allocate Array

To File


改變數組中的值

可以使用賦值運算符，如[2]=b，在已經分配的數組中以程序化方式改變值。通過修改賦值對象的公式和可用的端，可以把新值賦給特定的數組位置，并在程序的其它部分使用輸出。

在一維實數數組中設置新值

1. 在添加數組分配對象后(Data [image] Allocate Array [image])，使用Function & Object Browser在工作區域中添加賦值運算符a[2]=b︰

在工具欄上，點擊 [image] ，然后查看
Type: Operators
Category: Assignment
Member: a[2]=b

2. 把賦值運算符的公式變成a[b]=c，添加一個數据輸入端。

3. 把各個值連接到下述賦值運算符端︰

a. 把Allocate Array對象的Array數据輸出端連接到賦值運算符的數据輸入端。

b. 把一個值連接到b數据輸入端，确定數組位置。Int32數据常數之類的對象可以提供這一輸入值。

c. 把一個值連接到c數据輸入端。這是您希望為數組位置賦的新值。

下面的范例程序顯示了連接情況。賦值運算符接受輸入端a上的數組數据，然后把輸入端c上的實數值賦給輸入端b上确定的位置。輸出端Result包含新值，輸出端a包含修改后的數組。

另請參閱

manual范例目錄中的manual06.vee和manual07.vee
Help [image] Open Example...

分配數組

Set Values

參閱范圍

Manual06.vee和Manual07.vee


從數組中提取值

可以使用Get Values對象從數組中提取值︰

1. 在工作區中添加一個Get Values對象(Data [image] Access Array [image] Get Values)。雙擊圖標，顯示打開視圖對象。

2. 把輸出數組的任何數据源連接到Get Values上的Ary數据輸入端。在Get Values運行時，SubAry端輸出一個依賴Get Values表達式字段中的表達式的子數組。默認表達式Ary會輸出整個原始數組。

其余數据輸出端提供与Ary端上的原始數組有關的信息︰

a. Type輸出數組的數据類型。

b. NumDims輸出數組中的維數。

c. DimSizes輸出一個一維數組，其中列明每個維度的大小(要素數量)。

d. TotSize輸出數組的總大小(要素總數)。

另請參閱

manual08.vee

在表達式中構建數組

在表達式中使用數組或數組要素

Get Values


把數据采集到記錄中

把数据采集到数组中

使用Collector把数据采集到大小未知的数组中。下面的程序构建了一个范例程序，演示了Collector。使用Sliding Collector采集1D数组数据。

1. 在工作区中添加一个Collector对象(Data [image] Collector)。双击图标，显示对象的打开视图。

2. 在工作区中添加For Count, random和AlphaNumeric对象，连接各个端，如下面的程序所示：

3. 运行程序。(调整AlphaNumeric画面，显示整个数组。)

Sliding Collector (Data [image] Sliding Collector)与Collector有两个明显区别：

1. 其输出一直是一维数组。

2. 没有XEQ端，而是把Sliding Collector设置成在指定数量的值之后触发。

另请参阅

在表达式中构建数组

Collector

Sliding Collector

参阅范例

Manual09.vee


在表達式中構建數組

通過在表達式中指定其它數組部分，還可以構建一個數組。但是，在表達式內部，指定的所有子數組必須擁有相同的維數，并在每個維度中包含相同數量的值。

假設B是一個5 x 5矩陣(一個兩維數組)︰

 | 0: | 1: | 2: | 3: | 4:
0: | 0 | 0.2 | 0.4 | 0.6 | 0.8
1: | 1 | 1.2 | 1.4 | 1.6 | 1.8
2: | 2 | 2.2 | 2.4 | 2.6 | 2.8
3: | 3 | 3.2 | 3.4 | 3.6 | 3.8
4: | 4 | 4.2 | 4.4 | 4.6 | 4.8

表達式[B[1,1],B[2,2],B[0,0],B[2,3]]返回下面的一維數組︰

0: 1.2

1: 2.4

2: 0

3: 2.6

還可以在表達式中構建一個數組常數。例如，表達式[1.1,1.3,1.2]創建一個由三個要素組成的一維實數數組︰

0: 1.1

1: 1.3

2: 1.2

另請參閱

從數組中提取值

在表達式中使用數組或數組要素


在表達式中使用數組或數組要素

從數組中提取值解釋了可以在Get Values對象中使用表達式指定一個子數組。本文解釋了還可以在帶有表達式字段的任何VEE對象中，如Formula對象，在表達式中指定一個數組或子數組。

在表達式中，任何數組表示時都使用下述語法︰

在數組名稱后面使用括弧[ ]，括入指定子數組的參數。例如，如果B是一個兩維數組，那么B[0,0]指明其中的第一個要素。

逗號(,)分隔數組維度。每個子數組操作必須為每個數組維度只分配一個指標。

冒號(:)分隔其中一個數組維度內部的一系列要素。

星號(*)是通配符，指定某個數組維度中的所有要素。

注意所有VEE數組索引都基于零，也就是說，在任何維度中，第一個要素的索引都是0。

范例

假設 A is一個一維數組，長10個要素︰

0: 100m

1: 0.2

2: 0.3

3: 0.4

4: 0.5

5: 0.6

6: 0.7

7: 0.8

8: 0.9

9: 1

下面的表達式提取數組A的各個部分︰

A或A[*]返回整個數組A。

A[1]返回一個標量，它是A中的第二個要素(索引1)︰

0.2

A[1:1]返回只有一個要素的一維數組，它是A中的第二個要素︰

0: 0.2

A[0:5]返回一個一維數組，其中包含A的前六個要素(索引0到5)︰

0: 100m

1: 0.2

2: 0.3

3: 0.4

4: 0.5

5: 0.6

A[2:*]返回一個一維數組，其中包含第三個要素直到數組末尾；在本例中，是A的索引2到9。(在子數組中索引重新定義為0到7。)

0: 0.3

1: 0.4

2: 0.5

3: 0.6

4: 0.7

5: 0.8

6: 0.9

7: 1

假設B是一個5x5矩陣(一個兩維數組)︰

 | 0: | 1: | 2: | 3: | 4:
0: | 0 | 0.2 | 0.4 | 0.6 | 0.8
1: | 1 | 1.2 | 1.4 | 1.6 | 1.8
2: | 2 | 2.2 | 2.4 | 2.6 | 2.8
3: | 3 | 3.2 | 3.4 | 3.6 | 3.8
4: | 4 | 4.2 | 4.4 | 4.6 | 4.8

下面的表達式提取數組B的各個部分︰

B或B[*,*]返回整個數組B。

B[*]返回錯誤，因為它只指定了一個維度，而B是一個兩維數組。

B[1,2]從第二行(索引1)、第三個要素(索引2)返回一個標量值︰

1.4

B[1,*]作為一維數組返回整個第二行 (索引1)︰

0: 1

1: 1.2

2: 1.4

3: 1.6

4: 1.8

B[1,1:*]作為一維數組返回整個第二行 (索引1)，第一個要素除外(索引0)︰

0: 1.2

1: 1.4

2: 1.6

3: 1.8

另請參閱

從數組中提取值

在表達式中構建數組


使用數組存儲測試結果

可以以兩种方式存儲數据類型︰

• 標量值 (即洙個數字，如9或(32, @10))

或

• 1-10維的數組。

備注

數据類型中介紹了VEE數据類型概況。

數組索引在VEE中基于零，它使用括號指明數組要素的位置。例如，如果數組A包含要素[4, 5, 6]，那么︰

A[0] = 4, A[1] = 5, A[2] = 6

數組語法如下︰

Formula對象或任何表達式字段都可以使用上面的語法存取數組要素，如在To/From File對象中。

另請參閱

實驗5-1: 為測試結果創建數組

實驗5-2: 從數組中提取值


For/Each對象

For/Each對象用來迭代一個數組。它不能用于記錄。下面的實例是在添加For/Each對象前使用提供的方法迭代一個一維數組。

這是使用For/Each對象時的同一流程，其中只使用三個對象，而上面的流程則要求五個對象。

在數組中添加維度時，老方法變得日益复雜，甚至達到几乎不能管理的地步。相比之下，For/Each對象支持10個維度，可以非常簡便地擴展到VEE數組結構的整個范圍。


數組函數運算

VEE中的大多數基本數學函數如log()、sin()和cos()，都可以作為參數接受數組，并返回一個數組。某些專用函數對執行數組數學運算和處理非常方便。其它函數不能用于數組。數組運算中可以使用的函數包括︰

• ramp()可以用來生成“循環”數。

• concat()連接兩個數組，返回一個一維數組。

• totSize()提供數組中的要素總數。

• signof()檢測取值的符號(如果< 0則為-1, 如果= 0則為0, 如果> 0則為1)。

• abs(x)設置絕對值。

• rotate()旋轉數組中的要素。

• sum()對數組中所有要素求和。

• sort()對數組分類。

• randomize()生成由隨机數字組成的數組。

• min()查找數据集中的最小值。

• max()查找數据集中的最大值。

• clipUpper()限幅低于一定的最大值。

• clipLower()限幅高于一定的最小值。

Formula對象中的一個有用功能是能夠作為數組定義表達式。注意，必須在數組要素之間插入逗號。下面的表達式生成一個數組，其中包含名為B的輸入的兩倍、倒數、平方和自然對數︰

[2*B, 1/B, B*B, log(B)]

下面的實例說明了怎樣使用Formula對象中的表達式處理數組。用戶只需把包含數組的對象連接到Formula對象的輸入端上。

實例

可以利用現有數組，使用指配表達式在選擇的要素上執行數學計算。下面的實例改變了兩維數組的一行值。Formula對象中的表達式在輸入數組A=[1,2,3,4]上執行這一任務，其中第0行包含1和2，第1行包含3和4。

表達式把第二行中的要素乘以4，然后把結果指配給數組A。注意Result端只輸出改變以后的值，A端輸出帶有新值的整個數組。


數組運算技朮

VEE是為數組數學運算優化的。盡管可以使用傳統循環結構執行數組運算，但這一般會降低程序的速度。本節說明了使用Formula和其它對象在數組上執行數學運算的几种方式。

備注

可以調整本節中的范例，使用賦值運算符，避免使用耗時的計算循環。由于這些技朮并不總是非常明顯，因此使用時一定要注意，确保全面存檔程序。

本節說明了VEE的部分數組運算技朮，包括數組運算技朮比較、訪問表達式中的數組、執行數組數學運算及在表達式中使用變量。

數組運算技朮比較

下面兩個圖中的程序段比較了生成數組的技朮，這個數組包含從0到360度每個度的所有正弦值和余弦值。如果嘗試每种技朮，您會發現第一种技朮需要的時間更長。

把這一系列對象中包含的邏輯轉換成數學運算，會得到下圖Formula對象中所示的表達式。這一技朮用更少的時間完成了相同的計算︰

盡管這种技朮的速度要快得多，并不能明顯看出它執行相同的計算。下面解釋了表達式的運算︰

1 ramp()函數生成由0 - 359、共360個值組成的數組。

2 兩個ramp函數生成完全相同的數組，通過sin()和cos()三角函數在每個數組上進行運算。在正常情況下接收和返回標量值的大多數VEE函數都能夠作為參數返回一個數組。

3 盡管Formula對象實際上包含兩個公式，但其輸出轉換成數組格式，因為它們包括在方括號內。

這一技朮可能并不是所有程序的最佳選擇。正弦和余弦運算在ramp()函數生成的整個數組上進行，而不是在生成的每個值上進行。如果程序必須在生成的每個值上進行運算，那么應使用循環結構，而不是在整個數組上執行運算的表達式。

訪問表達式中的數組

可以象標量一樣使用表達式中的數組。按名稱指稱數組。可以在表達式中直接輸入數組常數(如[1,2,3])。VEE要求在數組要素之間插入逗號。

備注

數据索引基于0。索引從零開始，一直到n-1，其中n是特定維度中的要素數量。

可以使用表達式，訪問數組的各個部分。一旦在表達式中指定了子數組，那么可以輸出子數組，或在進一步的表達式中使用子數組。

從每個數組中只能訪問相鄰的子數組。為訪問子數組，必須為數組中的每個維度指定一個參數。使用下面的字符，指定數組參數︰

• 逗號“,”分隔數組的各個維度。每個子數組運算必須為每個數組維度提供一個指標。

• 分號“:”指定其中一個數組維度的要素范圍。

• 星號“*”是一個通配符，指定特定數組維度中的所有要素。

備注

根据子數組中的點數調節波形時間跨度、頻譜頻率跨度和數組映射。例如，如果有一個256點的波形(WF)，要求WF[0:127]，那么您會得到波形的前半部分及是舊跨度一半的時間跨度。

范例︰從數組中返回的值

下面的表達式顯示了返回的值，其中A是一個長10個要素的一維數組(Array 1D)。

• A[1]訪問A中的第二個數組，輸出一個標量。

• A[0:5]返回一個一維子數組，其中包含A的前六個要素。

• A[1:1]返回一個一維子數組，其中包含一個要素，這是A的第二個要素。注意這与第一個范例A[1]之間的差別。

• A[2:*]返回一個一維子數組，其中包含A的第三個到第十個要素。

• A or A[*]返回整個數組A。

• A[1,2]返回錯誤，因為它為一個兩維數組指定參數。

• B是一個5x5矩陣(一個Array 2D)。

• B[*]返回錯誤，因為它只指定了一個參數，B是一個兩維數組。

• B[1,2]從第二行第三個要素返回一個標量值。

• B[1,*]作為Array 1D返回全部第一行。

• B[1,1:*]作為 Array 1D返回全部第一行，但不包括第一個要素。

• B[4,1:4]返回一個Array 1D，其中包含4個要素︰第4行中第二個值到第五個值。

• B[5,5]返回錯誤，因為數組基于零。只能通過B[4,4]訪問數組。

• B[1 1]返回錯誤，因為必須使用逗號分隔維度指示符。

在表達式中構建數組

可以從其它數組或子數組的要素中構建一個數組。表達式中的每個要素必須指明相同的維數，并在每個維度中包含相同的取值數量。

例如，下面的表達式顯示了返回的值，其中A是一個長十10個要素的一維數組(Array 1D)，B是一個5x5矩陣。

• [1,2,3]返回一個由三個要素組成的Real Array 1D，其中包含取值1, 2和3。

• [A[0], A[5:7], A[9]]導致錯誤，因為同時指定了標量和Array 1D要素。

• [A[0:4], B[0,*]]返回一個由10個要素組成的Array 2D (大小為2 x 5)，其中包含A的前五個要素作為第一行，包含B的第一行作為第二行。

• [A[0], A[1], B[2,3], A[5]]返回一個由四個要素組成的Array 1D，其中包含A的第一個和第二個要素、B的第三行和第四列的要素及A的第六個要素。

執行數組數學運算

在數組上執行數學運算使用另一套簡單的規則。在數組上執行基本標量代數運算簡化了在數組中每個要素上執行運算的過程︰

• A*2會把數組中的每個要素乘以2。

• A-4從數組中每個要素中減去4。

• 函數中使用的數組，如sin([1,2,3])，將把正弦函數應用到數組的每個要素中。

相同大小和維度的兩個數組之間的數學運算在數組的相應要素之間執行運算︰

• A*B把數組A的每個要素乘以數組B的對應要素。這不會執行“矩陣乘法”，矩陣乘法是把行乘以列的相對复雜的乘法，并進行加總，得到一個標量。VEE內置了一個矩陣函數來執行這一運算，稱為matMultiply(A,B)。


組合數組

下面的實例說明了怎樣級聯多維數組。在用于Formula對象中時，盡管只能生成一維輸出，但仍可以使用concat(x,y)函數。然而，只有行數或列數固定時(在實踐中通常會滿足這一限制)，才能使用這一函數。這里的Formula對象包含一個表達式，把擁有兩行的一對數組級聯起來︰

concat()函數把兩個數組級聯起來，生成一個一維數組。表達式剝离出每個數組的行，把它們級聯起來，然后把它們向回聯接成一個兩行的兩維數組，其中包含每一行中要素數組合。

另請參閱

分開大型數組


分開大型數組

可以作為16個集合、每個集合128個要素顯示一個由2048個要素組成的數組。盡管問題主要是數据顯示，而不是數据生成，但它可能有助于找到一個解決方案，來分開數組。

下面的程序顯示了怎樣分開數組，以實現顯示目標。

ramp()函數為測試目的簡單地生成一個由2048個要素組成的數組，取值為0 – 2047。For Count對象勾出要生成的16個單獨數組，Formula框則使用從計數中生成的索引選擇相應的子數組︰

A[0:127], A[128:255], A[256:384], ..., A[1920:2047]

當然，這假設數組大小、子數組數量和子數組大小都是固定的。如果任何條件不符，都會發生錯誤。

另請參閱

組合數組


矢量乘以矩陣

下面的范例說明了怎樣乘以矢量

[ X1, X2, X3, X4 ]

乘以矩陣

[[ y11, y12, y13, y14 ],

[ y21, y22, y23, y24 ],

...

[ y51, y52, y53, y54 ]]

結果是

[[ X1*y11, X2*y12, X3*y13, X4*y14 ],

[ X1*y21, X2*y22, X3*y23, X4*y24 ],

...

[ X1*y51, X2*y52, X3*y53, X4*y54 ]]

VEE可以乘以標量，然后再乘以矢量，并可以執行矩陣乘法。標量乘法把矩陣中的每個要素乘以一個標量，得到与原始矩陣大小相同的矩陣。矩陣乘法是MxN矩陣和NxM矩陣之間的運算，得到一個標量。本例要求的運算与上面的情況均不相符。

這里的運算事實上是矩陣每一行的標量乘以矢量的每個要素。考慮一個數据集合，其中包括下述形式的矢量︰

[ 1, 2, 3, 4 ]

矩陣M采取下面的形式︰

[ [1, 2, 3, 4, 5, 6, 7, 8 ],
[10, 20, 30, 40, 50, 60, 70, 80 ],
[100, 200, 300, 400, 500, 600, 700, 800 ],
[1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 ] ]

希望的結果是︰

[ [1, 2, 3, 4, 5, 6, 7, 8 ],
[20, 40, 60, 80, 100, 120, 140, 160 ],
[300, 600, 900, 12K, 15K, 18K, 21K, 24K ],
[4000, 8000, 12K, 16K, 20K, 24K, 28K, 32K ] ]

下面Formula對象中的表達式進行乘法運算。矩陣數組連接到M端，矢量數組連接到V端。測試表明其速度僅比同一數組標量乘法的速度慢大約50%。


在數組中插入要素

下面的范例顯示了把一個或多個數据要素插入現有數組中的一個表達式。輸入是︰

A 是Index Value
B 是New Data
C 是Original Array

在Result中輸出修訂后的數組。

A上的Index Value指明了新數据應該使用的起始索引。如果A小于等于0，那么B上的New Data被級聯到C上Original Array的開頭。

如果A大于等于Original Array的長度，那么New Data被級聯到Original Array的末尾。如果A是其間某個值，那么Original Array被分成Index Value周期的几個段，New Data被接合到Original Array中。

下一個范例与上一個范例類似。它使用數組操作構建一個數据隊列。隊列在本質上是一個固定長度的數組，其中在一端添加新的要素，數字會位移到另一端，直到數字減少和丟失。

ramp()表達式分配由10個要素組成的一個初始空數組，作為一個隊列。On Cycle循環 (周期設為1秒)開始，每秒把隨机數字發送到隊列開頭。Formula: Queue獲得OldData輸入最后9個要素，把它与NewData輸入上的新隨机數字級聯起來。Result上的數組輸出反饋為OldData的下一個集合，發送到下一個程序段。在下一個周期中，一個新的隨机數字被發送到NewData。


把矢量轉換成矩陣

有時可以用處理對象代替數組函數，獲得所需的結果。下面的實例采用From String對象，把矢量(一維數組)轉換成矩陣(兩維數組)。通過From String運行矢量，把喜歡的數組格式指定為下一個程序中所示的輸出。VEE中自動進行Real數据類型和Text數据類型之間的轉換。

例如，我們把由9個要素組成的一維數組轉換成3x3二維數組︰

ramp()函數的矢量輸出是︰

0,1,2,3,4,5,6,7,8

From String處理把它轉換成按行排序的矩陣︰

0,1,2
3,4,5
6,7,8

如果您首選按列排序的矩陣，使用transpose() (轉置矩陣)函數獲得下述結果︰

0,3,6
1,4,7
2,5,8

把矢量轉換成矩陣的另一种方式是使用Formula構建數組語法。大家知道，語法[1,2,3]會使用這三個要素生成一個一維數組。類似的，如果是一個由10個要素組成的一維數組，那么語法[a]會生成一個1x10的兩維數組。如果想得到10x1矩陣，那么也可以使用transpose()。


把完全不同的元素組合到一個數組中

程序顯示了從設備中獲得多個數据集要求的方法，并得到一個數据集，其中包括各個數据集中的最大值︰

這個程序使用Noise Generator模擬輸入數据。它獲得初始數据集，把它放到全局變量sumdata中，然后進入循環，獲得新數据或退出程序。

按Get Data按鈕，從Noise Generator中獲得新波形，然后使用Get Variable對象恢复sumdata中的數据；這兩個波形加總成一個Formula對象，Formula對象處理這些數据，使用Set Variable對象把結果放回sumdata中。

Formula對象在A端上接受新的數組數据，在B端上接受數組sumdata。表達式cliplower(a,b)輸出結果數組，如果A > B，那么取值為A，否則取值為B。如果使用clipUpper，那么將得到最小值。


比較兩個數組

本例比較了由隨机數字組成的兩個數組，确定第一個數組中有多少個數字大于第二個數組中的數字。取值之間的比較一般使用關系運算符(如==, !=和<=)和三元運算符(A < B ? C : D)，但這些方法沒有解決這個問題。盡管其接受任意數据形狀，但它們只返回標量結果。您仍可以通過其它方式執行關系運算，產生數組結果。

randomSeed()函數在隨机數字發生器中填入一個隨時間迅速變化的种籽。這保証數据在不同的程序運行時間變化。兩個randomize()函數每個都生成范圍為0-1的1000個隨机數字組成的數組。最后，Formula對象中的表達式執行加總運算。

sum(clipLower(0,signof(A-B)))

下面介紹了表達式各個部分的工作方式︰

1 A-B提供了一個數組，如果A > B，那么值為正；如果A == B，那么值為零；如果A < B，那么值為負。

2 signof(A-B)把正數轉換成1，負數轉換成-1，0仍為0。

3 clipLower(0,signof(A-B))把所有-1值剝离出數組，它得到一個數組，在A > B時為1，否則為0。

4 sum()累加1，輸出A > B的比較數量。


使用其它表達式

可以對使用其它技朮的數組運算實現傳統的關系運算符︰

• A == B: (1-abs(signof(A-B)))

• A != B: abs(signof(A-B))

• A > B: clipLower(0,signof(A-B))

• A < B: clipLower(0,-signof(A-B))

• A >= B: (1-clipLower(0,-signof(A-B)))

• A <= B: (1-clipLower(0,signof(A-B)))

注意從1中減去由1和0組成的數組怎樣在數組上執行NOT運算。可以使用類似的技朮，比較標量值，而不是其它數組。還可以在得到的1和0數組上執行Boolean運算。

例如，假設A1和A2是這樣兩個數組。執行下面的邏輯運算︰

• NOT A1: 1 - A1

• A1 AND A2: A1 * A2

• A1 OR A2: signof(A1 + A2)

• A1 XOR A2: 1 - abs(signof((A1 + A2) - 1))

可以使用這些計算結果，通過乘法“掩蓋”由原始值組成的數組。去掉与0相匹配的值，保留与1相匹配的值。


選擇有效的技朮

運用以前的技朮會導致采用Formula對象的程序包含大量的維護困難的邏輯運算。盡管其目標是通過用Formula對象代替多個對象來消除或減少循環，但也可以使用UserFunctions。如果用戶很好地理解數組處理技朮，那么可以繞過复雜的正式邏輯運算，實現更直接的解決方案。

下面的實例說明了在數組處理中可以進行的選擇。假設VEE把I/O設備中收到的8位未簽名數据數組轉換成32位簽名整數數据，用戶希望返回實數值。通過在返回數組的每個值中增加256，可以在一個表達式中完成這一運算︰

(A + (clipLower(-1,clipUpper(0,A))) * (-256))

這一表達式執行下述操作︰

1 clipUpper(0,A)把所有正值轉換成0。

2 clipLower(-1,clipUpper(0,A))把所有負值轉換成-1 (記住輸入是整數，而不是實數)。這創建了一個數組，對每個負值為-1，否則為0。

3 clipLower(-1,clipUpper(0,A)) * (-256)把該數組乘以-256，創建一個數組，對每個負值為256，否則為0。然后把這個數組增加到原始數組中，把所有負值偏置到“真實的”正值。

另一個解決方案是使用上面所示的關系運算，但要比這种直接的解決方案复雜得多。

對數組計算來說，一個非常有用的對象是Comparator，它可以提取滿足具体標準的數組要素。假設用戶想确定下述數据流中的操作︰

0 0 0 0 1 1 0 0 1 1 0

下面顯示的解決方案為找到數組要素索引提供了最簡便的方式，其中取值從0轉換成1及從1轉換成0。

盡管程序中包含Comparator，但關鍵是包含下述表達式的Formula對象

A[1:(totSize(A)-1)] - A[0:(totSize(A)-2)]

為查看其工作方式，在數据流中增加數組索引︰

B0:0 1:0 2:0 3:0 4:1 5:1 6:0 7:0 8:1 9:1 10:0

在發生轉換時標記數組索引。上面的表達式從中減去輸入數組，用一個索引間隔開來，得到下面的新數組︰

0:0 1:0 2:0 3:0 4:1 5:1 6:0 7:0 8:1 9:1 10:0

- 0:0 1:0 2:0 3:0 4:1 5:1 6:0 7:0 8:1 9:1 10:0

0:0 1:0 2:0 3:1 4:0 5:-1 6:0 7:1 8:0 9:-1

Comparator檢查Result數組，查看哪些要素等于0。失敗的數組要素是索引，在Failures端上返回為由X-Y坐標組成的數組，提供索引和失敗值。為只檢索索引值，Unbuild Coord對象把X值和Y值分開。然后X索引值加1，消除交錯減法的影響。

減法中包含的數据不僅指明操作的索引，還指明其方向︰1表示正轉換，-1表示負轉換。這一運算基本上是求微分使用的差分方程式法。


創建記錄常數

查看怎樣創建記錄常數的最佳方式是嘗試下面所示的范例。

創建一條記錄

1. 在工作區中添加一個Record常數對象(Data [image] Constant [image] Record)。

2. 注意Record常數不同于任何其它常數對象。它有兩個帶名字的字段(默認值為A和B)，每個字段有一個輸入字段。點擊標有A的按鈕，出現Record Field Attributes對話框。

3. 通過輸入新的名稱代替A，可以改變字段名稱。把字段名稱變成Name，但數据類型仍設為Text，維數仍設為0 (標量)。 點擊OK。

4. 現在點擊標有B的按鈕。把字段名變成Empl_No，然后點擊Real64 (或箭頭)顯示下拉菜單。

5. 點擊Int32選擇整數數据類型，但維數仍設為0。點擊OK。

6. 在Name旁邊的輸入字段中輸入John Doe，在Empl_No旁邊的輸入字段中輸入111222，如下圖所示。把AlphaNumeric顯示對象連接到輸出端，運行程序︰

創建由多條記錄組成的數組

1. 繼續上面的程序，從Record常數的對象菜單中選擇Properties。

2. 現在點擊1D Array前面的收音机按鈕，把Record常數轉換成記錄數組。把Size設置成3，然后點擊OK。該對象會改變格式。

3. First, Prev, Next和Last按鈕允許滾動由記錄組成的數組。為改變數組中的每條記錄︰

a. 點擊Next，滾動到第二條記錄。把名稱變成Sue Smith，把數字變成111223。

b. 點擊Next，滾動到第三條(和最后一條)記錄。把名稱變成Richard Roe，把數字變成111224。

4. 現在運行程序。調整AlphaNumeric顯示畫面，顯示整個記錄數組︰

另請參閱

把數据采集到記錄中

Record Constant


使用 Records

使用記錄存儲混合數据類型

Record數据類型可以在一個數据容器中存儲不同的數据類型。Record可以包括任何VEE數据類型。數据形狀可以是Scalar或Array。可以在一個數据結構中存儲測試名稱、時戳和實數數組。

Record中的各個要素可以存儲為字段，并使用圓點符號存取。例如，Rec.Name會存取稱為Rec的Record內部稱為Name的字段。在記錄數組中，Rec[2].Name表示數組第三條記錄中的Name字段。所有字段從零開始索引。

使用Record數据類型确定測試數据結構有許多好處︰

• 可以在一個容器中創建多個混合數据類型邏輯組，使程序開發和維護更加簡便。例如，可以對存儲測試數据的記錄使用下面的字段︰測試名稱, 返回值, 通過或未通過測試指示, 時戳, 預計額定值, 通過測試的上限, 通過測試的下限, 及測試描述。

• 可以處理一個數据容器，而不是8個不同的數据容器，使程序更加簡單、更加可讀。

• 在VEE中，可以在DataSets存儲和檢索Records。DataSet是為存儲記錄創建的一個專用文件。在從DataSet中檢索記錄時，您不必知道數据類型。VEE為檢索、分類和搜索DataSets中存儲的信息提供了多個對象。

另請參閱

實驗5-4: 使用記錄，創建記錄常數，把數据采集到記錄中，從記錄中提取字段，改變記錄中的字段，以程序化方式構建記錄，存取記錄，了解記錄容器，構建記錄


把數据采集到記錄中

使用Build Record (Data [image] Build Data [image] Record)對象，構建由記錄組成的大型數組。本節使用范例程序，說明怎樣使用這個對象。

范例

1. 打開程序manual10.vee ，運行程序。

Build Record對象從數据輸入端的數据中構建記錄，在其Record 端輸出記錄。程序的工作方式如下︰

輸入A上的Text數組是一個姓名列表。

輸入B上的Int32數組是一個員工編號列表。

為Scalar輸出形狀設置Build Record對象，以便它輸出標量記錄{<Text Array 1D>, <Int32 Array 1D>}，其中由兩個記錄字段組成，每個字段包含一個一維數組。第一個記錄字段是姓名數組，第二個記錄字段是員工編號數組。輸入數組的大小不一定相同。

2. 盡管默認值是Scalar，但仍可以改變輸出形狀︰

a. 點擊Scalar，顯示Array 1D。

b. 運行程序。顯示屏中出現一個記錄數組。

Build Record對象匹配每個姓名和員工編號，在記錄數組中形成單獨的記錄，輸出到Record端。在輸出形狀設為Array 1D，輸入數組的大小必須相同。

另請參閱

Build Record


從記錄中提取多個字段

使用rec.field對象 (Data [image] Access Record [image] Get Field)從一個記錄中提取一個字段，使用UnBuild Record對象 (Data [image] UnBuild Data [image] Record)提取所有字段。本文使用范例程序，說明了怎樣使用這些對象。

Get Field范例

從手冊范例目錄中(Help [image] Open Example...)打開程序manual11.vee ，運行程序。

Build Record對象構建一條由字段A (波形)和字段B (標量)組成的對象。

上面的rec.field對象使用表達式rec.A，提取"記錄rec的字段A" (波形)，其由Waveform對象顯示。

下面的rec.field對象使用表達式rec.B，提取"記錄rec的字段B" (時間)，其使用時戳格式由AlphaNumeric對象顯示。

UnBuild Record范例

從手冊范例目錄中(Help [image] Open Example...)打開程序manual12.vee ，運行程序。

Build Record對象構建一條由字段A (波形)和字段B (標量)組成的對象。

UnBuild Record對象提取字段A和B，然后在各自端上輸出數据。

另請參閱

在表達式中使用記錄

Get Field

SubRecord

UnBuild Record


改變記錄中的字段

從Data [image] Access Record [image] Set Field中使用賦值運算符對象，改變一條記錄或一個記錄數組中的字段。本節使用范例程序說明怎樣使用這個對象。

改變記錄中的字段范例

打開程序manual13.vee ，運行程序。

在標題為Set Name Field的賦值運算符中，表達式為︰Let field Name of record Rec be equal to the value on data input terminal A (令記錄Rec的字段名等于數据輸入端A上的值)。記錄連接到rec數据輸入端。

在標題為Set Empl_no Field的賦值運算符中，表達式為︰Let field Empl_no of record Rec be equal to the value on data input terminal A (令記錄Rec的Empl_no等于數据輸入端A上的值)。

在改變字段時，記錄持續顯示。

改變記錄數組中的字段范例

在下面的程序中，表達式Rec[5].Name = A指明把記錄Rec的Name字段中的數組要素5設置成等于輸入端A上的數据。

另請參閱

Set Field


在表達式中使用記錄

可以使用記錄語法Rec.Field，其中Field是任何VEE表達式記錄中Rec記錄內部的字段名稱。在下面的程序中，表達式(A.High + A.Med)/A.Low把記錄A的字段High和Med相加，然后把結果除以字段Low。

技巧

為避免混淆，為記錄字段提供描述性名稱。

可以把記錄語法与數組語法結合起來，從記錄字段中訪問數組要素。

另請參閱

manual14.vee ，位于手冊范例目錄Help [image] Open Example...下

處理數据


了解記錄容器

有多個VEE對象，允許創建和處理記錄，包括Record, Build Record, UnBuild Record, Merge Record, SubRecord, Set Field和Get Field。所有這些對象都位于Data菜單中。

Record數据類型的容器擁有代表數据的多個命名字段。根据需要，可以在一個記錄中擁有多個命名字段。每個字段可以包含另一個記錄、一個標量或一個數組。

通過為每個字段手動輸入一個值，Record對象允許創建記錄。您只需使用從對象菜單中存取的Properties對話框，把Record對象配置為標量(數組元素= 0)或配置為數組(數組元素=非0)。

下面的Record對象配置為具有四個數組元素的記錄數組。記錄由五個字段組成︰Text字段 (Name, Address和City)和Int32字段(EmplNo和Zip)。Record對象允許使用First, Prev, Next和Last按鈕，從一個數組元素到下一個數組元素逐步通過記錄。可以編輯每個字段。

在程序運行時，整個記錄輸出在Record輸出端。AlphaNumeric畫面顯示包括四個數組元素(0-3)的整個記錄，每個元素由括在括號("{}")內的五個記錄字段組成。

另請參閱

實驗5-4: 使用記錄，創建記錄常數，把數据采集到記錄中，從記錄中提取字段，改變記錄中的字段，以程序化方式構建記錄，存取記錄，了解記錄容器，構建記錄


存取記錄

下面兩個程序實例說明了存取記錄和提取各個字段的方式。

使用Get Field對象，從記錄中提取各個字段。Get Field位于Data [image] Access Record下。例如，在第一個程序中，Get Field對象用來提取整個Name和EmplNo字段︰Get Field對象是一個Formula對象，默認表示式為rec.field。

使用"dot"語法，存取各個字段，如Rec[*].Name和Rec[*].EmplNo。處理數据中介紹了這种語法。

Rec[*].Name表示“從Rec輸入端上的所有記錄數組單元中獲得Name字段”。這個語法可以用于Formula對象的表達式中，或用于在運行時評估的任何其它表達式中。例如，可以在To String對象的事務處理中使用這种語法。

使用語法Rec[1].Name和Rec[1].EmplNo，獲得每個字段的第二個單元 ("element 1")，如下圖所示。

為從記錄中提取多個字段或所有字段，使用UnBuild Record對象，如下圖所示︰

UnBuild Record對象允許為記錄中的每個字段增加輸出，提供Name List和Type List輸出。這些輸出列明了記錄中每個字段的名稱和類型。

程序保存在樣例目錄下的 manual38.vee 文件中。

備注

不能在Record數据類型之間自動轉換數据。例如，為把Record數据發送到Real輸入端中，必須通過Unbuild Record對象從Record中提取字段，或使用Get Field及前面介紹的Rec.A語法。

另請參閱

實驗5-4: 使用記錄，創建記錄常數，把數据采集到記錄中，從記錄中提取字段，改變記錄中的字段，以程序化方式構建記錄，了解記錄容器，構建記錄


以程序化方式構建記錄

Record對象用來創建和編輯簡單的記錄。但是，創建大型記錄會非常麻煩。您可能還希望從現有數据中創建記錄。在這些情況下，可以使用Build Record構建記錄。

在使用Build Record從各個數据組件中構建記錄時，必須定義輸出Record容器的數据形狀。Build Record對象提供了兩种Output Shape選項︰Scalar和Array 1D。在大多數情況下，默認值Scalar是合适的Output Shape選項。

下面的實例顯示了從兩個輸入數組中構建的輸出記錄中Scalar和Array 1D之間的差异︰

在上面的程序中，在選擇Scalar時，輸出記錄是由兩個字段組成的一個標量記錄，每個字段是其中一個輸入數組。而在為相同的輸入數据選擇Array 1D時，輸出記錄是一個記錄數組，其元素數量与兩個輸入數組的元素數量相同。數据逐個元素在輸出記錄中匹配。

如果兩個輸入數組擁有不同數量的元素，那么只允許使用Scalar作為Output Shape。為創建Array 1D輸出記錄，所有輸入數組必須有相同數量的元素，否則會發生錯誤。但是，您可以混合標量和數組輸入數据，如下面的實例所示。

在本例中，如果選擇Array 1D，標量Real值1在輸出記錄數組中重复五次。

另請參閱

實驗5-4: 使用記錄，創建記錄常數，把數据采集到記錄中，從記錄中提取字段，改變記錄中的字段存取記錄，了解記錄容器，構建記錄


使用 DataSets

DataSets可以檢索一條或多條記錄。VEE對象拆包記錄。因此，通過把記錄存儲到DataSets、而不是文件中，您不必記住數据類型。還可以在數据上執行分類和搜索操作，創建自定義的測試數据庫。

可以在記錄中構建VEE數据(包括波形)，以后檢索這些數据。還可以把記錄存儲到一個文件中，稱為DataSet。To DataSet對象和From DataSet對象允許存儲和檢索DataSets中的記錄。它們位于I/O菜單中。

DataSet是保存到一個文件中、以備以后檢索的Record容器集合。To DataSet對象在輸入上收集Record數据，把這些數据寫入命名文件(DataSet)中。參閱下面的實例。

兩個波形(一個正弦波和一個噪聲波)輸出到Build Record對象，Build Record對象構建一條記錄。然后記錄輸出到To DataSet對象，To DataSet對象把數据寫入文件myData中。复選Clear File at PreRun，清除myData中以前存儲的任何數据。

一旦數据已經另存為DataSet，使用From DataSet檢索記錄，然后可以在希望時解除構建記錄。下面的程序說明了這种技朮。

From DataSet對象從myData檢索記錄數据，把數据輸出到Unbuild Record，Unbuild Record把正弦波字段与噪聲數据字段分開。在本例中，正弦波、噪聲波形和兩個波形之和都顯示在單獨的XY Trace對象中。

最后實例的一對程序保存在范例目錄下的文件 manual40.vee 和manual41.vee 中。

定制簡單的測試數据庫

可以搜索和分類DataSet，以獲得測試名稱、時戳、測試參數、測試值、通過或未通過測試指示和測試說明等信息。因此，DataSet記錄可以作為測試數据庫使用。為搜索信息，可以使用From Data Set對象，具体如下︰

• 在搜索操作中使用From Data Set對象中的表達式字段。

• 可以使用函數sort()，使用指定字段對記錄分類。

另請參閱

實驗5-5: 使用Datasets，實驗5-6: 對DataSets使用搜索和分類操作


創建變量

可以創建聲明變量或未聲明變量及局部變量或全局變量。在使用Formula之類的對象中的表達式賦值，或使用Set Variable 對象賦值時，會創建未聲明變量。但是，在賦值前聲明變量有多個優勢，包括范圍優勢、程序執行速度更快、保持變量的數据類型和形狀等等。

創建未聲明局部變量

在表達式中使用對象數据輸入端上的數据時，會創建一個未聲明局部變量。這個變量對于對象來說是局部變量。表達式中的變量名稱必須与輸入端的名稱相匹配。下圖說明了Real64 Constant對象連接到Formula上的實例。Formula表達式中的變量(A, B,和C)通過相應的輸入端獲得數据，對Formula來說是局部的。如果在Formula中添加輸出端(及Result)，它們對Formula也是未聲明局部變量。

創建未聲明全局變量

1. 點擊Data [image] Variable [image] Set Variable，把Set Variable對象放在工作區中。

2. 點擊Name字段，根据需要輸入新的變量名稱。可以使用任何有效變量名稱代替變量的globalA。

3. 把數据對象連接到Set Variable 對象的Data端。將創建變量，并設置成該數据值。這個未聲明全局變量現在可以用于程序中的任何表達式。

創建聲明局部變量或全局變量

1. 确定是否想聲明全局變量或局部變量。如果想聲明局部變量，打開使用變量的上下文(UserObject怯煲erFunction)或庫。

可以在程序中任何地方聲明和使用全局變量。必須在特定上下文或庫中聲明和使用局部變量。

2. 點擊Data [image] Variable [image] Declare Variable，把Declare Variable對象放在工作區中。

3. 點擊Name旁邊的編輯字段，輸入一個變量名稱。這個名稱應該是唯一的，以避免与其它變量沖突。

4. 點擊Scope編輯字段，設置變量的范圍。

Global可以在程序任何地方使用變量，而不管存在Declare Variable對象的上下文。

Local to Context限定變量僅用于存在Declare Variable對象的UserObject怯煲erFunction中(及其內部嵌套的任何UserObject)。
Local to Library限定變量僅用于存在Declare Variable對象的UserFunctions庫(局部或導入)。

5. 點擊Type編輯字段，設置變量的數据類型。在程序執行過程中為這個變量指配的數据必須与聲明數据類型相匹配，否則會發生錯誤。

6. 點擊Num Dims編輯字段，把變量設置為擁有選擇維度的數組。

技巧

必須使用Set Variable或賦值運算符初始化聲明變量，然后才能使用這個變量。

如果全局變量和局部變量使用相同的名稱，那么會發生沖突，在這种情況下局部變量優先。

變量名稱不分大小寫(globalA与GlobalA相同)。

可以使用任何數据類型，如記錄，設置未聲明變量。

為查看程序中的變量列表，點擊工具欄上的View Variables按鈕(或使用View [image] Variables)。在打開程序時會列出聲明變量。在程序運行后，會列出未聲明全局變量。為查看列表中任何變量的最新內容，雙擊變量名稱。Program Explorer也會列出變量名稱。

View Variables按鈕

Program Explorer按鈕

另請參閱

刪除變量

使用變量

使用全局數組

默認首選項(Delete Variables at PreRun)

Set Variable

View Variables


刪除變量

1. 點擊Data [image] Variable [image] Delete Variable，把Delete Variable對象放在工作區中。

2. 選擇是刪除某個變量還是所有變量。

為按名稱刪除某個全局變量，點擊By Name (默認值)，然后點擊文本字段，輸入變量名稱。

為刪除所有變量，點擊All Variables。

技巧

Delete Variable會把聲明變量的數据容器中的值复位成沒有初始化的值；它不刪除變量的名稱。

Delete Variable會刪除未聲明變量的值及其名稱。

變量名稱不分大小寫(globalA等同于GlobalA)。

如果按名稱參考的變量不存在，Delete Variable對象會發生錯誤。

可以作為控制輸入在Delete Variable添加名稱字段。

另請參閱

創建變量

Delete Variable


使用變量

使用Get Variable對象(Data [image] Variable [image] Get Variable)訪問已經初始化的變量，或在表達式中使用變量名稱。這些方法特別适合用于UserObject怯煲erFunction中。如果變量已經聲明為局部變量或全局變量，那么必須在正确的上下文中使用Get Variable對象。

技巧

為避免使用以前運行的程序中過時的數据，在運行程序時，在PreRun時刪除(清除)所有變量的值。為關閉Delete Variables at PreRun，點擊工具欄上的Default Preferences按鈕(File [image] Default Preferences)。

Default Preferences按鈕

如果在PreRun時刪除值，必須把Set Variable對象的序列輸出端連接到使用變量的任何對象的序列輸入端。否則會發生錯誤，因為變量沒有定義的值。

可以在包括表達式的任何對象中使用一個變量。但是，不能在Get Variable對象的名稱字段中包括表達式。

可以在VEE程序的主上下文中定義一個全局變量，然后從UserObject怯煲erFunction的上下文內部訪問變量。這只要求到UserObject或到Call對象的序列輸入連接。

范例程序manual18.vee 說明了在Main和UserObject上下文中怎樣聲明、初始化和使用變量。可以在Manual范例目錄(Help [image] Open Example)下找到這個程序。

另請參閱

關于變量，創建變量，設置初始值，存取變量值，在庫中使用變量

Get Variable，WatchWindow


使用全局數組

可以把變量聲明為全局數組。這可以更簡便地處理數組，因為可以從VEE程序的任何地方訪問數組。下面使用范例程序說明了怎樣使用對象。

范例

1. 從手冊范例目錄中打開程序manual19.vee (Help [image] Open Example...)，運行程序。

兩個Formula對象使用數組語法，訪問全局數組的要素。例如，表達式globalA[3]檢索全局數組globalA中編號為0003的要素(第四個要素)。可以在記錄中使用這种方法。

另請參閱

創建變量


設置初始值

在存取任何變量之前，必須已經設置了初始值，否則VEE會生成錯誤。下面是一個變量實例。

Set Variable必須先設置全局變量，然后Get Variable才能檢索變量。為保証這一點，Set Variable對象的序列輸出端連接到Get Variable對象的序列輸入端。如果還沒有連接，那么Get Variable可能會試圖存取一個不存在的全局變量，會發生錯誤。

備注

如果沒有設置屬性Delete Variables at PreRun，那么可能不會收到錯誤信息，而會收到舊數据。

在創建聲明變量時，它們沒有初始化，必須先設置一個值，然后才能通過Get Variable存取變量或在表達式中使用變量。如果沒有設置，程序會生成錯誤。可以通過Set Variable對象或使用Formula對象設置值。

如果變量是一個數組或一條記錄，在使用Formula對象時，必須設置整個數組或記錄的值，然后才能存取任何要素。下面的實例顯示了從Formula對象中初始化值的兩种不同方式。

另請參閱

關于變量，創建變量，存取變量值，使用變量，在庫中使用變量


存取變量值

一旦命名了變量，用戶可以在希望時在程序中多次存取變量值。可以使用多种方法，檢索變量值。在下面的實例中，使用Get Variable對象檢索全局變量globalA中存儲的值一次，第二次存取可以在Formula對象的表達式中包括名稱globalA，第三次存取可以在To File對象的事務處理中包括名稱globalA︰

備注

可以在Formula對象的任何表達式或運行時評估的任何其它表達式中包括任何全局變量的名稱。

另請參閱

關于變量，創建變量，設置初始值，使用變量，在庫中使用變量


在庫中使用變量

由于只有在導入庫時才加載UserFunction，因此在使用Declare Variable對象時，必須把它們放在其中一個UserFunction中，而不能放在庫的Main窗口中。

當一個變量的范圍為Global (全局變量)時，它只能用于局部程序中，而不能用于調用的任何Remote Function中。

• 在導入一個庫時，將為指定范圍定義導入的UserFunction中說明的所有變量 (通過Declare Variable對象)。例如，如果變量范圍是Global，可以從程序的任何部分存取變量，直到庫被刪除。在庫被刪除時，其UserFunction中說明的所有變量也將被刪除。

另請參閱

關于變量，創建變量，設置初始值，存取變量值，使用變量


Agilent VEE分析功能

VEE支持常見的數學運算和數百种其它函數。此外，VEE還包括MATLAB Script功能。MATLAB Script功能是The MathWorks提供的標準全功能MATLAB的一個子集。它在VEE中提供了額外的數學運算功能，包括信號處理、高級數學運算、數据分析及科學和工程圖表。MATLAB Script功能全面集成VEE，可以在任何VEE程序中包括MATLAB Script對象。

如果VEE和MATLAB都沒有提供用戶需要的數學函數，那么仍有多個選項。可以使用Formula對象創建函數，可以在編譯語言(如C語言)中編寫函數，并鏈接到VEE，還可以從VEE与另一個應用軟件通信。

另請參閱

使用Formula對象創建表達式

使用內置數學對象

在Agilent VEE中使用MATLAB腳本


使用Formula對象創建表達式

可以使用Formula對象，在VEE中編寫數學表達式。表達式中的值是數据輸入端名稱或全局變量。表達式的求解結果將放在數据輸出端。

下圖顯示了一個Formula對象。表達式的輸入字段位于對象的中心。默認的表達式 (2*A+3) 指明了在哪里輸入公式。雙擊字段，可以輸入一個不同的表達式。

備注

可以在一行以上的行中輸入一個Formula表達式。如果Formula表達式中包含Return，那么它被解釋為多行單個表達式。如果Formula中包含用分號(;)分開的語句，那么它們被理解為Formula中的多個表達式。

Formula框是一個Rich Text Format框，可以使用標準編輯命令，在Formula中編輯表達式。例如，可以拖動鼠標，高亮度顯示字符，使用Ctrl-C复制字符，使用Ctrl-V粘貼，使用Ctrl-X刪除，使用End, Insert, Delete, Backspace等等。

備注

從Devices [image] Function & Object Browser Built-in type中創建的所有函數都是已經地相應設置了表達式的Formulas。可以修改這些公式，以把多個函數組合在一起，增加(或刪除)輸入。還可以在Formula對象中進行多行輸入，為輸出端賦值。

使用Formula對象對表達式求解

在下例中，將對表達式2*A^6-B求解，其中A=2和B=1。(注意^號表示指數。)

備注

變量名稱不分大小寫。

1 選擇Device [image] Formula。點擊Formula輸入字段，輸入2*A^6-B。

2 把鼠標指針放在數据輸入區域上(但不是正好位于A輸入上)，按Ctrl-A添加一個輸入端。

備注

在默認情況下它將標為B，但可以進行重命名。

3 選擇Data [image] Constant [image] Int32，從對象菜單中選擇Clone進行复制，把兩個Int32對象連接到Formula輸入A和輸入B上。

4 在A Int32輸入框中輸入2，在B Int32輸入框中輸入1。

5 選擇Display [image] AlphaNumeric，把它連接到Formula的輸出，運行程序。應顯示結果127。

在Formula對象中使用Agilent VEE函數

本例使用Formula對象生成一個余弦波，計算標準偏差和均方根。

1 選擇Function Generator, Formula和AlphaNumeric對象，使用數据端把它們連接起來。

2 打開對象菜單，選擇Clone，复制Formula對象，把它放在第一個對象的下面。把Function Generator數据輸出端連接到第二個Formula對象。

3 复制另一個AlphaNumeric畫面，把它連接到第二個Formula對象。

4 在第一個Formula對象中輸入sdev(A)，在第二個Formula對象中輸入rms(A)。

sdev(A)和rms (A)是來自Device [image] Function & Object Browser對話框的兩個數學函數。注意它們可以稱為函數，也可以稱為獨立對象，其工作方式相同。

5 運行程序。在這些函數放到Formula對象中時，其顯示的答案与作為獨立對象使用時相同。

現在使用一個Formula對象計算標準偏差和均方根。公式可以有多個輸出端，并為它們賦值。

6 雙擊對象菜單，Cut其中一個Formula對象。

7 在其余Formula對象中，把表達式變成︰
B=sdev(A);
C=rms(A)

備注

在Formula對象中包含多個表達式時，必須在表達式末尾放一個分號，以把它与下一個表達式區分開來。例如，在公式B=sdev(A)中，分號表明表達式末尾。

備注

可以在Formula對象中的任何點上輸入斷行。只要沒有分號，公式就會讀為一個表達式。例如，可以輸入一個表達式︰

B=sdev
(A)

還可以在公式中添加空格，改善可讀性。

8 在Formula對象中，添加一個輸出端。重命名輸出端B和C。把輸出端B連接到其中一個Alphanumeric對象上，把輸出端C連接到另一個Alphanumeric對象上。

9 運行程序，其應類似于下圖︰

自己練習

完成下述練習，檢查結果如下︰

1 在Built-in Functions的Generate類別下，使用ramp對象創建一個由數字1 - 2048組成的數組。計算這個數組的偏差，并顯示標準偏差。

2 做上一步中描述的同一練習，在Formula對象中使用ramp()函數，而不是ramp對象。

3 嵌套函數，做上一步中描述的同一練習。只使用兩個對象。

對第二個和第三個練習，必須在Formula對象上刪除輸入端A，避免錯誤信息，因為在對象運行前，必須連接所有數据輸入端，并擁有數据。

另請參閱

Formula

Copyright (c) 1991-2006 安捷倫科技公司版權所有


使用內置數學對象

在VEE Device [image] Function & Object Browser中，可以存取VEE和MATLAB的內置(預先編程的)數學表達式。

存取內置運算符或函數

為存取VEE數學運算符和函數，選擇Device [image] Function & Object Browser。例如，為創建一個公式，返回一個位于指定范圍內的隨机數字，選擇Type: Built-in Functions, Category: Probability & Statistics, 和Functions: random。

注意Function & Object Browser顯示了當前選項的簡要說明。還可以點擊Help按鈕，獲得當前選項的詳細說明，及獲得定義、用途、語法和實例等信息。

為存取MATLAB運算符和函數，選擇Device [image] Function & Object Browser，在Type: 下選擇MATLAB Functions。例如，為把根轉換成多項式，選擇Type: MATLAB Functions, Category: Interpolation & Polynomials, 和Functions: poly。

Function & Object Browser中再次顯示當前選項的簡要說明，點擊Help顯示与當前選項有關的更詳細的說明。“在Agilent VEE中使用MATLAB腳本”更詳細地討論了MATLAB運行時引擎和腳本。

實例: 計算標準偏差

生成一個余弦波，頻率1 kHz，幅度1 V，時間跨度20 ms，用256個點表示。計算標準偏差，顯示余弦波。

1. 選擇Device [image] Virtual Source [image] Function Generator。相應地設置Frequency，變成圖標。

2. 選擇Device [image] Function & Object Browser，然后選擇Built-in Functions, Probability & Statistics, 和sdev。點擊Create Formula。

備注

在工具條上按f x圖標或按Ctrl-I，可以直接進入Function & Object Browser對話框。

3. 打開sdev()對象菜單，查詢Help。

備注

sdev(x)對象定義為x變化量的平方根，x的類型可以是UInt8, Int16, Int32, Real32, Real64, Coord, 或Waveform。函數發生器輸出Waveform數据類型。

4. 把函數發生器連接到sdev(x)上。

5. 選擇Display [image] AlphaNumeric，把它連接到sdev(x)數据輸出端。

6. 運行程序，其外觀應該如下圖所示。


顯示標量值

使AlphaNumeric對象顯示標量值。這個對象自行清除，只顯示每次執行時收到的新數据。

1. 在用工作區中添加一個AlphaNumeric顯示畫面 (Display [image] AlphaNumeric)。

2. 把AlphaNumeric對象的數据輸入端連接到一個標量數据來源上(如Real64常數對象)。

3. 運行程序，顯示數据。

范例

另請參閱

顯示一串對象值

AlphaNumeric


顯示取值數組

使用AlphaNumeric對象顯示一個數組。這個對象自行清除，只顯示每次執行時收到的新數据。

1. 在工作區中添加一個AlphaNumeric顯示畫面(Display [image] AlphaNumeric)。

2. 把AlphaNumeric對象的數据輸入端連接到一個數組數据來源上(如一個Alloc Real64對象)。

3. 運行程序，顯示數据。

4. 調整AlphaNumeric對象，顯示整個數組。

范例

一維數組是由10個要素組成的一個數据容器。

另請參閱

AlphaNumeric


顯示一串對數值

使用Logging AlphaNumeric對象，顯示一串對數值。這個對象會保留其收到的數据的"歷史日志"。

1. 在工作區中添加一個Logging AlphaNumeric顯示畫面 (Display [image] Logging AlphaNumeric)。

2. 把Logging AlphaNumeric對象的數据輸入端連接到重复的數据源上 (如For Count對象)。

3. 運行程序，顯示數据的對數。

范例

Logging AlphaNumeric對象顯示來自For Count對象的10個標量值的對數。

另請參閱

顯示數据的模擬畫面

Logging AlphaNumeric


顯示數据的模擬畫面

使用Indicator對象在模擬指示器上顯示標量數据。這些對象提供了三色范圍指示。

Fill Bar使用色條顯示一個值。

Meter在模擬儀表上顯示一個值。

Tank在坦克圖形中使用色條顯示一個值。

Thermometer在溫度計圖形中使用"水銀"顯示一個值。

下面的程序以Thermometer對象為例。對其它Indicator對象可以采用類似的技朮。

顯示Thermometer上的數据

1. 在工作區中添加一個Thermometer對象 (Display [image] Indicator [image] Thermometer)。

2. 把一個Int32 Slider對象連接到Thermometer的數据輸入端。移動滑尺，選擇一個值，運行程序。在把滑尺設置成允許的范圍內的不同值，運行程序。

在改變滑尺值時，"水銀"面和顏色會變化。值顯示在Thermometer的底部。

3. 試著改變Thermometer標度范圍。點擊下方范圍字段(0)，輸入一個新值。對上方范圍字段(100)進行同一操作。注意溫度計標量變化，以符合新的范圍。

配置Thermometer對象

1. 從Thermometer的對象菜單中點擊Properties，出現Thermometer Properties窗口。

2. 試著改變部分參數︰

a. 可以為Thermometer選擇垂直(默認值)放置或水平放置。還可以打開或關閉數字顯示。

b. 可以為每個范圍(低, 中, 高)選擇一個顏色。點擊一個顏色按鈕，顯示可能的顏色。還可以設置下限值和上限值，确定每個顏色范圍開始的位置。

3. Properties窗口中所作的變化立即生效。

另請參閱

顯示顏色告警

Fill Bar

Meter

Tank

Thermometer


顯示顏色告警

Color Alarm對象顯示用戶自定義顏色指示符和文本串，具体取決于其數据輸入端的值。

使用Color Alarm

1. 在工作區中添加一個Color Alarm對象(Display [image] Indicator [image] Color Alarm)。

2. 把一個Real64 Slider對象連接到Color Alarm的數据輸入端。移動滑尺選擇一個值，運行程序，把滑尺設成允許的范圍內的不同值，運行程序。

在滑尺位置變化時，Color Alarm顯示的顏色和文本也會變化。

配置Color Alarm

1. 從Color Alarm對象的對象菜單中點擊Properties，出現Properties窗口。

2. 試著改變部分參數︰

a. 從對話框的Layout部分，可以為Color Alarm選擇一個圓形(默認值)或矩形布局。還可以打開或關閉數字顯示和"三維"邊框。

b. 從對話框的Limits部分，可以為每個范圍(低, 中, 高)選擇一個顏色。點擊一個顏色按鈕，顯示可能的顏色。可以改變每個范圍的文本，還可以設置下限值和上限值，确定每個顏色范圍開始的位置。

3. Properties窗口中所作的變化立即生效。

另請參閱

顯示數据的模擬畫面

Color Alarm


顯示XY值

XY Trace和X vs Y Plot對象通常最适合圖形顯示。

繪制一串值

1. 在工作區中添加一個XY Trace對象(Display [image] XY Trace)。

2. 把一個數据源連接到XY Trace對象上的數据輸入端。數据可以是連續生成的一串點，也可以是一個波形。Function Generator對象(Device [image] Virtual Source)非常适合這一范例。

3. 運行程序。

范例

在下面的程序中，For Range對象重复37次，生成一串值，0, 10, 20, 依此類推, 直到360。Formula對象計算每個值的正弦，把結果輸出到XY Trace對象，然后繪制得到的曲線。

針對X值繪制一串Y值

1. 在工作區中添加一個X vs Y Plot對象(Display [image] X vs Y Plot)。

2. 把XData和YData1數据輸入端連接到相應的數据源。可以針對X點繪制連續生成的一串Y點，也可以針對一個波形繪制波形圖。但是，不能混合使用不同的數据形狀。

3. 運行程序。

范例

在下面的程序中，For Log Range對象重复14次，生成一串對數的Y數据點。Counter把當前數輸出到XData輸入端，For Log Range對象則把一串對數輸出到YData1輸入端。X vs Y Plot對象顯示得到的曲線。

另請參閱

顯示波形

X vs Y Plot

XY Trace


顯示波形

使用Waveform (Time)顯示對象或XY Trace對象顯示波形數据。使用X vs Y Plot對象相對于另一個波形顯示一個波形。下面的范例說明了怎樣顯示波形。

備注

為改變對象的屬性，如布局、网格類型和標尺，雙擊標題欄或點擊對象菜單上的Properties。為迅速存取軌跡和標度屬性，點擊軌跡和標度標簽。

在XY Trace對象上顯示一個正弦波

1. 在工作區中添加一個XY Trace對象 (Display [image] XY Trace)。

2. 在工作區中添加一個Function Generator對象(Device [image] Virtual Source [image] Function Generator)。把Function Generator的Func 輸出連接到XY Trace對象上的數据輸入端。

3. 改變Function Generator上的設置，輸出一個50 Hz正弦波，如下圖所示。運行程序。

在下面的程序中，XY Trace對象在時域中顯示波形。它針對0 - 20m (20毫秒)的時間標度繪制波形幅度，以与波形的時間跨度相匹配。如果輸入數据是波形，XY Trace對象自動進行這一操作。否則，X軸只是繪制的點數。

在X vs Y Plot對象上相對于另一個波形顯示一個波形

1. 在工作區中添加一個X vs Y Plot對象(Display [image] X vs Y Plot)。

2. 在工作區中添加兩個Function Generator對象。

3. 把其中一個Function Generator的Func 輸出連接到X vs Y Plot對象上的XData輸入端。改變Function Generator上的設置，輸出一個50 Hz正弦波，Phase設為0度。

4. 把另一個Function Generator的Func 輸出連接到X vs Y Plot對象上的YData1輸入端。改變Function Generator上的設置，輸出一個 50 Hz正弦波，Phase設為45度。

5. 運行程序。

在下面的程序中，Function Generator對象生成兩個50 Hz正弦波，這兩個正弦波失相45度。彼此相對繪制這兩個波形的曲線，顯示典型的Lissajous圖。

在Waveform (Time)對象上顯示兩個波形

1. 在工作區中添加一個Waveform (Time)對象(Display [image] Waveform (Time))。

2. 從對象菜單中點擊Add Terminal [image] Data Input...，添加第二個終端。

3. 在工作區中添加兩個Function Generator對象。

4. 把其中一個Function Generator的Func 輸出連接到Waveform對象上的Trace1輸入端。改變Function Generator上的設置，輸出一個 50 Hz正弦波，Phase設為0度。

5. 把另一個Function Generator的Func 輸出連接到Trace2輸入端。改變Function Generator上的設置，輸出一個 50 Hz正弦波，DcOffset設為-0.8，Phase設為 0度。

6. 運行程序。

在下面的程序中，Function Generator對象生成兩個50 Hz正弦波，但第二個正弦波的d.c.偏置為-0.8。Waveform (Time)對象顯示兩個波形，分別為Trace 1和Trace 2。為改變兩個軌跡的線樣式屬性，點擊軌跡標簽，然后在出現的對話框中改變Line Type和Point Type。

備注

還可以從儀器中使用XY Trace, X vs Y Plot和Waveform (Time)對象顯示波形數据。

另請參閱

添加軌跡

改變軌跡的線型和點型

Waveform (Time)

X vs Y Plot

XY Trace


顯示極坐標數据

使用Polar Plot顯示對象，繪制極坐標數据。下面的程序說明了怎樣使用這個對象。

1. 在工作區中添加一個Polar Plot顯示對象 (Display [image] Polar Plot)。

2. 添加一個For Range對象和一個Formula對象。如下面的程序所示連接對象。在Formula對象中輸入所需的三角公式，運行程序。

三角公式1-(sin(360-A)/3)-cos(A)創建"心形"圖。可以輸入所需的任何公式。For Range對象重复，從0度到360度每次把角度步進一度。Polar Plot對象針對角度繪制三角數据圖。

另請參閱

Polar Plot


添加軌跡

可以在任何圖形(XY)顯示畫面對象中添加軌跡。

1. 從顯示畫面對象的對象菜單中選擇Add Terminal [image] Data Input。

2. 新輸入以相應的標記添加到對象中。在某些顯示畫面上，只能看到端，看不到標記。

3. 為查看端的標記，從對象菜單中選擇Properties，在Show Terminals中選擇True。

4. 一旦已經添加了想要的端，把數据來源連接到每個端上。

另請參閱

改變軌跡的顏色

T改變軌跡的線型和點型


以程序化方式在圖表中添加軌跡

XY Trace、X vs Y Plot、Polar Plot、Complex Plane和Strip Chart都可以作為Input Data接受二維數組，一次最多可以顯示12條軌跡。可以以程序化方式在圖形對象中添加多條軌跡。

繪制多條軌跡

下例說明了怎樣在Graph對象中顯示多條軌跡。

1. 創建一個類似下圖的程序。

2. 從XY Trace對象的對象菜單中選擇 Properties，出現Properties窗口。

3. 在Behavior類別下，點擊MatrixInput。注意在默認情況下MatrixInput為假，把它變成True。

4. 在設置MatrixInput后，運行程序。注意XY Trace圖中顯示兩條軌跡。

其它范例︰2dXyTrace.vee, MatrixInputStripChart.vee.

備注

只有在沒有Next Curve Control Pin、且XY Trace有一個單一輸入數据端時，這個MatrixInput屬性才能設置為True。類似的，不能在Matrix-Input圖中添加額外的數据輸入。

Panel View中沒有提供MatrixInput屬性，在運行時不能以程序化方式切換。

可以在運行時在所有軌跡上設置各個屬性(顏色, 點的樣式, 等等)。

另請參閱

添加軌跡, XY Trace, X vs Y Plot, Polar Plot, Complex Plane, Strip Chart


改變軌跡的顏色

可以改變圖形(XY)顯示對象中的軌跡顏色。

1. 直接點擊顯示畫面打開視圖中的軌跡名稱，改變其屬性。

2. 在Edit對話框, 點擊Color旁邊的按鈕。從出現的對話框中，點擊新的顏色，然后點擊 OK。

3. 在改變軌跡顏色后，在Edit對話框中點擊 OK，返回工作區。新的顏色現在激活。

4. 對需要改變顏色的每條軌跡重复上述步驟。

還可以從Properties窗口中編輯這些值。從任何XY顯示畫面的上下文相關菜單中，選擇Properties。在Properties窗口，向下滾動到Design類別。點擊希望的軌跡左面的"+"號，查看和編輯該軌跡的屬性。

另請參閱

改變軌跡的線型和點型


改變軌跡的線型和點型

可以改變圖形(XY)顯示對象中的線型和點型。

1. 在顯示畫面打開視圖中直接點擊軌跡名稱，改變其屬性。

2. 在Edit對話框中，可以同時改變線型和點型︰

a. 為改變線型，點擊Line Type: 右面的按鈕，每次點擊時，線型會變化。持續點擊，直到找到首選的線型。

b. 為改變點型，點擊Point Type: 右面的按鈕，每次點擊時，點型會變化。持續點擊，直到找到首選的點型。

3. 在變動完成后，點擊OK返回工作區。

4. 對需要新線型和點型的每條軌跡重复上述步驟。

還可以從Properties窗口中編輯這些值。從任何XY顯示畫面的上下文相關菜單中， 選擇Properties。在Properties窗口，向下滾動到Design類別。點擊希望的軌跡左面的"+"號，查看和編輯該軌跡的屬性。

另請參閱

改變軌跡的顏色


縮小或放大顯示畫面

可以在任何圖形(XY)顯示對象中縮小或放大顯示畫面。本規程使用范例程序，說明怎樣使用縮放功能。

1. 從手冊范例目錄(Help [image] Open Example...)中加載程序manual23.vee 。運行程序，顯示一條軌跡。

2. 從顯示對象的對象菜單中選擇Zoom [image] In。

3. 把指針移動到想要放大的區域的右上角。然后按鼠標左鍵，拖動外框，定義區域。

4. 放開鼠標鍵。顯示放大后的區域。

5. 點擊Auto Scale，可以返回原始顯示畫面。

6. 現在從顯示對象的對象菜單中選擇Zoom [image] Out 2 X。

7. 注意顯示畫面怎樣縮小到原始大小的兩倍。在任何時候點擊Auto Scale，可以返回原始顯示畫面。.

快捷方式

按鼠標左鍵，在希望縮放的區域上拖動外框，然后放開鼠標鍵。


改變网格類型

可以改變任何圖形(XY)顯示對象的网格類型。

1. 從對象菜單中選擇Properties，出現Properties窗口。

2. 在Grid Type上，選擇希望的网格類型(默認值是Lines)。

3. Properties窗口中所作的變化立即生效。


在顯示畫面中設置標尺

可以在任何圖形(XY)顯示畫面對象中設置標尺，識別波峰和波谷的位置。

1. 從對象菜單中選擇Properties，出現Properties窗口。

2. 在Markers類別下，選擇NumMarkers︰

a. None關閉標尺(默認值)。

b. One打開一個標尺。標尺位置顯示在對象的底部。

c. Two打開兩個標尺。每個標尺位置顯示在對象的底部。

d. Delta打開兩個標尺。每個標尺的位置及兩個位置之差顯示在對象的底部。

此外，如果把MarkerInterpolate變成True，可以把標尺放在顯示的多個數据點之間。(使用線性內插計算標尺位置。)

3. 在設置Markers后，使用鼠標點擊和拖動標尺，可以沿著軌跡移動標尺。

范例

包含標尺的程序作為manual24.vee 保存在Manual范例目錄下(Help [image] Open Example...)。

1. 加載和運行程序，在XY Trace對象上顯示一個波形。

2. 試著移動標尺。注意XY Trace對象底部的位置數据。


獲得和設置標尺屬性

可以以程序化方式，在任何圖形(XY)顯示對象中獲得和設置標尺值。

1. 假設有一個帶標尺的XY顯示畫面，從對象菜單中選擇Properties，出現Properties Window。

2. 在Name字段中輸入一個名稱。這個XYDisplay變成一個Local-to-Context變量，類型為Object，并給出名稱。現在可以在任何Formula或表達式中使用這個名稱指稱這個XY Display，就象任何其它Declared Variable一樣。

3. 得到一個Formula對象 (Device [image] Formula)。

4. 把所需的表達式輸入Formula中，使用句點把對象名稱与標尺屬性分開，如︰myGraph.marker1X

5. 如果在公式中沒有使用，刪除默認的輸入端。

除直接輸入公式外，還可以使用Function & Object Browser。假設有一個命名的XY顯示畫面︰

1. 選擇Device [image] Function & Object Browser。

2. 從最左面的列表中選擇VEE Objects，選擇XYDevice類別。然后，Member (最右面)一欄顯示提供的所有標尺屬性的列表。

3. 選擇一個標尺屬性，點擊Create Formula按鈕。修改自動生成的表達式，把默認名稱"XYDevice"變成XY顯示對象使用的名稱。


自動調整顯示畫面大小

可以使用各种方法調整任何圖形(XY)顯示畫面。在Properties窗口中，點擊Scales，注意在默認狀態下會啟動Automatic Scaling屬性。這會在收到數据后自動調整顯示畫面大小。另外在Properties的Layout類別中，可以把ShowAutoScaleButton變成True。如果關閉Automatic Scaling，那么可以手動調整顯示畫面大小。此外，對象菜單有一條Auto Scale命令。通常情況下，最好啟動Automatic Scaling。

有時您可能會首選以程序化方式啟動和關閉Automatic Scaling。為此，在顯示對象中添加一個控制端，把正确信息發送給這個控制端。

1. 從圖形顯示對象的對象菜單中選擇Add Terminal [image] Control Input。

2. 選擇Scales控制輸入。

3. 添加一個Record Constant對象 (Data [image] Constant [image] Record)。

4. 輸入控制Scales參數的正确字段名和值，把其輸出端連接到Scales控制輸入。VEE幫助的每個顯示畫面主題中提供了与Scales參數有關的信息。

下圖顯示了這樣的一個范例。Record Constant設置X標度的最大值和最小值，關閉Automatic Scaling。在數据發送到顯示畫面前使控制輸入生效非常重要。為保証這一點，Record Constant序列輸出端連接到Function Generator序列輸入端。

另請參閱

Record Constant

XY Trace


自定義測試數据顯示畫面

可以通過各种方式自定義顯示畫面。不僅可以象所有VEE對象一樣標注、移動和确定顯示畫面大小，還可以改變x/y標度，修改軌跡，添加標尺，或放大部分圖形顯示畫面。

下例說明了部分功能。它使用Noise Generator生成波形，然后使用Waveform (Time)畫面顯示波形。下例還描述了怎樣改變X標度，放大波段，使用標尺測量波形上各點之間的距离。這一原則同樣可以适用于所有圖形顯示畫面。

顯示波形

1 選擇Device [image] Virtual Source [image] Noise Generator。

2 選擇Display [image] Waveform (Time)。

3 把Noise Generator的數据輸出連接到Waveform (Time)的數据輸入上，運行程序。

改變X和Y標度

1 雙擊Waveform (Time)標題欄，出現Y Plot Properties對話框，選擇Scales文件夾，為X Maximum選擇20m，輸入1m。

它會提示顯示的時間間隔為20毫秒到1毫秒。

2 雙擊Y軸上的Minimum字段，出現-1，輸入- .5，點擊OK。

放大部分波形

1 打開Waveform (Time)對象菜單，點擊Zoom [image] In。

光標變成小直角。點擊并拖動鼠標，可以在圖上畫一個方塊，圈定想要放大的區域。

2 圈定波形區域，包括多個峰值，放開鼠標鍵。

顯示畫面放大到選定的波形區域。注意x和y標度會自動變化。

在顯示畫面中添加增量標尺

1 移到Noise Generator上的open view。

a 把Num Points設置變成16，再次運行程序。

b 打開Waveform (Time)對象菜單，選擇Properties (或雙擊標題欄)，然后在Markers下面點擊Delta。然后點擊OK。

備注

可以在運行時獲得和設置標尺值。如需更多信息，請參閱Contents and Index [image] How Do I... Display Data下的聯机幫助內容。

您將在波形其中一個數据點上看到兩個白箭頭，一個箭頭向上，一個箭頭向下。另外，注意畫面在底部記錄這些標尺的x和y坐標。為測量兩個峰值之間的x或y距离，點擊并把箭頭拖動到想要測量的峰值。您將看到其中一個標尺移動到新的峰值上，在畫面底部記錄新的坐標。

VEE將在波形數据點之間自動進行插補。打開對象菜單，選擇Properties，然后在Markers下點擊MarkerInterpolate。

改變軌跡的顏色

1 雙擊標題欄，進入Properties，然后雙擊Trace屬性。

可以為這個文件夾中選定的Trace選擇Color、LineStyle、Name和PointStyle屬性。

通過使用Traces或Scales控制輸入，還可以在運行時改變這些值。

2 現在軌跡將用新顏色顯示。可以以与上面練習中的功能類似的方式，自定義其它顯示特點，如GridType。

備注

VEE還在顯示對象菜單中包括Plot，允許您在顯示畫面上繪制測試結果曲線，而不會打印輸出程序的其余部分。

另請參閱

以程序化方式在圖表中添加軌跡


檢查有效數据

清除显示画面

可以使用下述方式，清除任何图形(XY)显示对象上的显示画面：

在显示对象的Properties窗口中，把Behavior类别中的ClearAtPreRun变成True。

从对象菜单中选择Clear Control [image] Display。

在对象中添加一个Clear控制输入端。从对象菜单中，点击Add Terminal [image] Control Input。选择Clear，点击OK。在通过到序列输出端的连接激活Clear端时，会清除显示画面。


把數据寫入文件

使用To File對象把數据寫入文件。

創建數据文件

1、在程序中添加一個To File對象(I/O [image] To [image] File)。

2、將To File對象的數据輸入針腳連接到您想輸出到的文件的數据源上。

3、點擊To File按鈕并在對話框內輸入新的文件名以更改目標文件的名稱。然后點擊OK鍵。

To File對象通過一個寫處理將數据輸入到文件中。如果文件已經不存在，VEE將創建之。

將數据寫入文件

這個過程顯示了如何創建一個簡單的程序將字符串和實數數据寫入文件中。如果您的程序要求不同的選項，那么可以作為指南使用本規程。

1、將To File對象添加到您的程序中(I/O [image] To [image] File)。點擊复選框打開Clear File At PreRun & Open（出現在复選框內的一個复選標志）。

一般來講，您會希望打開Clear File At PreRun & Open，以确保文件內是被清除過的且文件中沒有舊數据。

2、 在<Double-Click to Add Transaction>上雙擊，彈出I/O Transaction對話框。

3、點擊DEFAULT FORMAT字段(或它的箭頭)。出現一個下拉菜單。

4、 點擊STRING FORMAT，然后點擊OK。現在經修改的處理是WRITE TEXT a STR EOL。這項處理將變量a（輸入針腳A上的數据）作為字符串各式的文本數据寫入myFile，后面跟著行尾序列（回車/換行）。

5、在<Double-Click to Add Transaction>上雙擊鼠標，給To File對象(對象單 [image] Add Trans?/span>)增加第二項操作。

6、將變量字段(a 為默認值)改為b。

7、點擊DEFAULT FORMAT字段 (或它的箭頭)。出現下拉菜單。

8、點擊REAL64 FORMAT，然后點擊OK。第二項操作是WRITE TEXT b REAL64 STD EOL。這項操作將變量b作為REAL64 STD格式的文本寫入myFile。

9、將Text常量對象連接到終端a上并將Real64常量對象連接到終端b上。完成的程序應當顯示如下︰

當您運行程序時，兩行數据被寫入到myFile，后面跟著行尾序列（回車/換行）。第一個是字符串String data。第二個是實數3.142。

另請參閱

從文件中讀取數据

編輯文件I/O處理

以程序化方式選擇文件名稱

To DataSet

To File


使用To/From File對象

To File和From File 對象基于I/O處理讀取文件中的數据。它們有以下特點︰

• 在第一個READ或WRITE處理中打開一個數据文件。當程序結束時，VEE會自動關閉任何打開的文件。

• VEE每個文件保持一個讀取指針和一個寫入指針，不管有多少個對象存取文件。讀取指針識別要讀取的下一個數据項目，寫入指針則指明應該在哪里寫入下一個數据項目。

• To/From File對象可以把數据追加到現有文件后，或覆蓋現有文件。如果在To File 對象打開的視圖中复選Clear File at PreRun & Open設置，那么寫入指針會從文件的開頭開始。否則，指針位于現有文件的末尾。每個WRITE處理會把信息追加到寫入指針位置的文件中 。如果執行EXECUTE CLEAR 處理，那么寫入指針會移動到文件的開頭，并刪除內容。

• 讀取指針從文件的開頭開始，根据READ處理通過數据。可以在From File 對象中執行EXECUTE REWIND，把指針移回文件開始頭，而不會影響任何數据。

另請參閱

了解I/O事務

實驗5-3: 使用To/From File對象

實驗2-3: 使用數据文件


從文件中讀取數据

使用From File對象從文件中讀取數据。

這一程序与把數据寫入文件中是配套程序。它顯示了怎樣從該程序創建的文件中讀取字符串和實際數据。如果程序要求的選項与本處介紹的選項不同，那么應以下面的程序為準。

1. 在程序中添加From File對象(I/O [image] From [image] File)。

2. 使用寫入文件中描述的I/O Transaction對話框，把默認處理變成READ TEXT x STR。

3. 再次使用寫入文件中描述的I/O Transaction對話框，添加第二個處理READ TEXT y REAL64。

4. 把AlphaNumeric畫面連接到兩個輸出(X和y)上。

5. 把To File對象的序列輸出端連接到From File對象的序列輸入端。這保証在From File對象試圖從文件中讀取數据前把數据寫入myFile。完成的程序應如下︰

另請參閱

編輯文件I/O處理

以程序化方式選擇文件名稱

把數据寫入文件中

From DataSet

From File


編輯I/O處理

編輯I/O事務

To File對象使用寫入處理与指定的數据文件通信。默認處理是WRITE TEXT a EOL，作為文本把數据寫入輸入A上，后面跟著一個行尾序列(默認值是回車/換行)。From File對象使用類似的處理，從文件中讀取數据。可以使用I/O Transaction對話框，編輯處理。

編輯處理

1. 雙擊To File or From File對象中的處理字段。出現I/O Transaction對話框。

2. 為改變操作，點擊WRITE或READ，選擇操作。

3. 為改變編碼，點擊Text，然后選擇編碼。

一般來說，如果想使用From File把數据檢索回到VEE中，那么使用容器編碼；如果想使用外部程序，如電子表格程序存取數据文件，那么不使用容器編碼。

對話框适應選擇的項目，提供相應的選項。

4. 根据需要改變其它字段項目，配置各种選項，如數据格式和行尾序列，然后點擊OK。

5. 為添加另一個處理，雙擊最后一個處理下面的空白行。

另請參閱

From File

To File

了解I/O處理


存儲和檢索一個波形

最好以數据容器的形式存儲和檢索波形數据，基本程序如下︰

1. 在To File對象中使用一個WRITE CONTAINER處理，把波形數据寫入一個文件中。

2. 在From File對象中使用一個READ CONTAINER處理，從文件中讀回波形數据。

范例

manual范例目錄下的程序manual20.vee 演示了怎樣使用波形數据。程序工作方式如下︰

1. 來自Function Generator的波形數据由To File對象使用WRITE CONTAINER a處理寫入wavedata文件中。

2. From File使用READ CONTAINER x處理從wavedata文件中作為波形容器讀回數据。數据在X端輸出，并通過Waveform（Time）畫面顯示。

3. 序列端連接保証在From File試圖讀取波形前把波形先寫入文件中。

在比較典型的情況下，一個VEE程序可以把波形數据存儲到一個文件中，然后第二個VEE程序可以把數据讀回VEE，分析并顯示數据。

另請參閱

把數据寫入文件中

從文件中讀取數据

編輯文件I/O處理

From File

To File


以程序化方式選擇一個文件名

如果程序使用From File或To File之類的對象讀取或寫入數据，可以設置程序，在運行時請求一個文件名。下面的范例使用File Name Selection對話框對象及To File，說明了其工作方式。

1. 添加一個To File對象 (I/O [image] To [image] File)。

2. 點擊Clear File At PreRun & Open。雙擊<Double-Click to Add Transaction>，點擊OK。

3. 在To File對象中添加一個File Name控制輸入端。(對象菜單 [image] Add Terminal [image] Control Input，點擊OK。)

4. 在工作區中添加一個File Name Selection對象 (Data [image] Dialog Box [image] File Name Selection)，把其File Name輸出連接到To File對象上的File Name控制端。在Cancel輸出中添加一個Stop對象。

5. 把File Name Selection對象的序列輸出端連接到To File對象的序列輸入端，這可以保証只有在選擇一個文件名時，To File對象才會運行。

6. 在File Name Selection對象中，把Select File For字段變成Writing。這可以保証在覆蓋現有文件前向用戶發出警報。

7. 添加一個Text對象，把它連接到To File的a端。

Windows范例

在運行程序時，出現Enter File Name對話框，提示一個文件名。輸入一個新文件名，或點擊現有的文件名。在Windows中，把Save as type項變成All Files (*.*)，因為要保存的文件不是一個程序文件。點擊Save。

另請參閱

File Name Selection

From File

To File


為電子表格程序存儲數据

可以使用VEE文件I/O生成能夠通過電子表格程序讀取的數据文件，如Microsoft Excel 或Lotus 1-2-3 。通常步驟如下︰

1. 确定電子數据表程序要求的數据文件格式，如限定多少行和列？

2. 創建VEE程序，采集數据，然后使用相應的定界符把數据輸出到ASCII文本格式的文件中。在正常情況下，To File對象是完成這一操作的最佳方式。

范例

manual范例目錄下的程序manual21.vee 演示了怎樣采集（或模擬）10V讀數，每個讀數帶有一個時戳，并把數据輸出到一個可以通過Microsoft Excel讀取的文件中。程序工作方式如下︰

1. For Count和Delay對象大約每隔10秒觸發下述事件︰

a. Counter對象進1。

b. Now對象輸出當前時間（精确到1秒范圍內），通過To String對象轉換成時戳格式。

c. dmm (hp 34401a @ (NOT LIVE))儀器面板模擬來自HP 34401A Multimeter的讀數。

2. Build Record對象為每個讀數構建一個記錄（每隔10秒），具体如下︰字段Cnt是計數或測試編號，字段Tm是讀數的當前時間（格式為hh:mm:ss），字段Vlts是儀器面板對象返回的模擬電壓讀數。

3. To File對象把數据寫入文本形式的文件中。在WRITE TEXT a.Cnt，" "，a.Tm，" "，a.Vlts EOL處理中︰

a.Cnt表示“記錄a的字段Cnt” （計數）

" " 插入一個空格（作為一個定界符）

a.Tm表示“記錄a的字段Tm” （時間）

" " 插入另一個空格（作為一個定界符）

a.Vlts表示“記錄a的字段Vlts” （讀數）, 和

EOL 插入行尾序列（回車/換行）。

因此，每個記錄轉換成字符串格式，并采取下述格式輸出（使用空格作為定界符）︰

1 11:29:06 5.687753697513882

在程序完成時，文件myfile由10行數据組成，例如︰

1 11:29:06 5.687753697513882

2 11:29:16 6.437091378803515

3 11:29:26 7.064658105870967

4 11:29:36 7.439572075814199

5 11:29:46 7.465490768920665

6 11:29:56 7.135229243023529

7 11:30:06 6.53525004955898

8 11:30:16 5.795432812581498

9 11:30:26 6.154398687554457

10 11:30:36 6.844467171462198

在每一行中，第一個字段（計數）后面跟著一個空格（定界符），第二個字段（時間）后面跟著另一個空格，第三個字段（讀數）后面跟著行尾序列。

輸出文件將是一個Windows ASCII文件，其能夠直接讀入Microsoft Excel中。從Excel中打開文件，在要求時，告訴Excel文件是采用空格作為定界符的定界文件。

在Excel電子表格中，應出現下述數据︰

通過使用相應的定界符，可以創建通過各种電子表格程序讀取的文件。

可以使用ActiveX Automation和控件或DDE (動態數据交換)自動完成這一過程。在希望從VEE控制其他應用時，ActiveX比DDE功能更強。如需与使用ActiveX和DDE有關的更多信息，請參閱VEE高級技朮。

另請參閱

把數据采集到記錄中

Build Record

To DataSet

To File


在UserObject工作區中添加對象

放在UserObject編輯窗口工作區內部的任何對象都會變成UserObject的一部分。使用任何下述方法︰

從菜單中選擇相應的對象，把對象放在UserObject中。

把對象從Main工作區移動到UserObject。

使用Cut/Copy/Paste把Main工作區中高亮度顯示的對象放到UserObject中。

在Main工作區中克隆對象，把克隆的對象移動到UserObject中。

另請參閱

UserObject


在UserObject中添加輸入端和輸出端

一般來說，可以使用任何其它對象使用的同一技朮，在UserObject中添加輸入端和輸出端。在添加到編輯窗口中時，輸入端和輸出端還出現在UserObject圖標上。

使用對象菜單

從對象菜單中，選擇Add Terminal，然后選擇希望添加的端的類型︰Data Input, Control Input, Data Output,或Error Output。可以使用這种方法，直接在UserObject圖標或相關編輯窗口中添加輸入端和輸出端。

使用鼠標和鍵盤

為添加數据輸入端，把鼠標光標放在數据輸入端區域上，按Ctrl+A。每按一下Ctrl+A，會在光標位置上在UserObject中添加一個數据輸入端。

為添加數据輸出端，把鼠標光標放在數据輸出端區域上，按Ctrl+A。每按一下 Ctrl+A，會在光標位置上在UserObject中添加一個數据輸出端。

備注

為刪除輸入端或輸出端，把鼠標光標放在輸入端或輸出端區域上，按Ctrl+D。

另請參閱

UserObject


在程序中創建UserObject

下面的范例一步步地演示了怎樣創建簡單的UserObject，然后在VEE程序中連接這個UserObject。在理想情況下，在UserObject中一起使用的對象應執行某個特定的任務。

1. 在Main工作區中添加一個UserObject (Device [image] UserObject)，出現UserObject圖標。雙擊圖標，打開UserObject編輯窗口。

2. 在UserObject 工作區中添加多個對象，根据需要連接這些對象的各個端。

3. 添加和連接UserObject的輸入端和輸出端︰

a. 把鼠標光標放在UserObject的輸入端區域，按Ctrl+A。數据輸入端出現在編輯窗口的端區域勾煲erObject的輸入側。

b. 在編輯窗口中，把輸入端的端內部連接到UserObject內部的相應對象上。

c. 把鼠標光標放在 UserObject的輸出端區域，按Ctrl+A。數据輸出端出現在編輯窗口的端區域及 UserObject的輸出側。

d. 在編輯窗口中，把輸出端的端內部連接到 UserObject內部的相應對象上。

e. 在Main Window中，把一個對象連接到UserObject圖標上的輸入端，把數据發送到UserObject。

f. 在Main Window中，把一個對象連接到UserObject圖標上的輸出端，從UserObject發送數据。

4. 把UserObject 標題變成描述名稱，以便能夠在程序中識別UserObject 。在UserObject 編輯窗口中雙擊標題欄。在Properties Window對話框中，輸入一個新標題。

5. 運行程序，測試UserObject。

下例顯示了打開UserObject 編輯窗口的程序。

另請參閱

在UserObject中添加輸入端和輸出端

構建UserObject面板

UserObject


在程序中使用多個對象創建UserObject

在編寫好VEE程序后，您可能決定要把部分程序變成一個UserObject。下面的流程使用范例程序，說明了怎樣把一個程序中的多個對象轉換成一個UserObject。

1. 在手冊范例目錄下打開程序manual13.vee (Help [image] Open Example...)。這一程序改變一條記錄中的多個字段。

2. 選擇多個對象︰Set Name Field和Set Empl_no Field。

為選擇多個對象，按住Ctrl鍵，然后使用鼠標左鍵點擊每個對象。在選中時，會用陰影高亮度顯示這些對象。

3. 在選擇完多個對象時，選擇Edit [image] Create UserObject。在Create UserObject對話框中，把標題變成Change Record Fields，然后點擊OK。

新的UserObject作為圖標視圖顯示在Main Window中，包含到UserObject內部各個對象的所有端連接。另外還會出現UserObject編輯窗口，以便能夠作出改動。

4. 運行程序。

下面的范例顯示了該程序，其中打開了UserObject編輯窗口。

另請參閱

構建UserObject面板

UserObject


Execution Window

提前退出UserObject

在正常情况下，只有在内部的每个对象执行完时，UserObject (或UserFunction)才会执行完，传播输出端上的数据；但是有两个对象会在UserObject内部所有对象操作完成前使传播强制退出UserObject。

Exit UserObject，在激活时会立即从UserObject上下文退出到其外面的上下文(如Main程序)。

Raise Error生成用户自定义错误信息框，另外会导致传播退出UserObject。(UserObject不输出任何数据，除非有一个Error输出端。)

范例

下面使用范例程序说明怎样使用Exit UserObject：

1. 从手册范例目录中(Help [image] Open Example...)打开manual26.vee 。双击Add Random Number对象，打开UserObject编辑窗口，然后排列Main Window和UserObject编辑窗口，以便能够看到所有对象。

2. 为查看传播顺序，使用工具栏按钮启动Show Data Flow和Show Execution Flow。

3. 运行程序。在Add Random Number中，OK和Cancel按钮在程序运行时都会激活，并暂停UserObject中的执行操作。(Cancel按钮就是OK按钮，只不过变了标题而已) 按这两个按钮会导致下述操作：

OK: UserObject中上面的线程完成传播。A+B对象增加两个输入，结果传播到输出端X，然后激活Exit UserObject。在UserObject退出时，X端上的结果输出到AlphaNumeric显示画面上。

Cancel: 下面线程中的Exit UserObject操作。这会导致在没有传播完上面的线程的情况下退出UserObject。不输出任何数据。

另请参阅

Exit UserObject

Raise Error

UserObject


創建和使汁煲erObject庫

可以把一個或多個UserObject保存在一個文件中，以便在其它程序中重新使用。

創建UserObject庫

1. 在工作區中創建一個或多個UserObject。

2. 選擇一個或多個UserObject。

3. 選擇File [image] Save Objects。系統會提示輸入一個文件名保存UserObject。

使汁煲erObject庫

1. 選擇File [image] Merge，系統會提示輸入文件名。

2. 為庫選擇選擇文件名。文件中的UserObject合并到工作區中。把它們放在程序中希望的位置。

另請參閱

在UserObject工作區中添加對象

在UserObject中添加輸入端和輸出端

在程序中創建UserObject

在程序中使用多個對象創建UserObject


保護UserObject安全

在UserObject設計的最后階段，您可能想保存安全版本的程序。然后可以讓別人在程序中添加UserObject，同時防止別人查看其內容或改變UserObject。這對原來的UserObject沒有負面影響。

1. 在UserObject編輯窗口中，從對象菜單中選擇Save Secured Version。

2. 系統將提示您輸入一個文件名，保存安全版本的UserObject。輸入一個描述性的文件名。文件名中將自動增加.vee擴展名。.

3. 點擊Save。

如果想在程序中使用安全版本的UserObject，使用File [image] Merge。系統將提示輸入文件名。

技巧

如果UserObject沒有面板視圖，安全版本將顯示為圖標。圖標可以恢复成open view，但不能查看內部細節 (端除外)。任何人都不能查看或編輯其內容。

如果UserObject有一個面板視圖，那么安全版本將顯示為圖標。圖標可以恢复成open view，但只能看到面板視圖及其端。看不到細節視圖，不能修改面板視圖。


在程序中使用多個對象創建UserFunction

在編寫好VEE程序后，您可能決定要把部分程序變成一個UserFunction。下面的流程使用范例程序，說明了怎樣把一個程序中的多個對象轉換成一個UserFunction。

1. 在手冊范例目錄下打開程序manual13.vee (Help [image] Open Example...)。這一程序改變一條記錄中的多個字段。

2. 選擇多個對象︰Set Name Field和Set Empl_no Field。

為選擇多個對象，按住Ctrl鍵，然后使用鼠標左鍵點擊每個對象。在選中時，會用陰影高亮度顯示這些對象。

3. 在選擇完多個對象時，選擇Edit [image] Create UserFunctio。在Create UserFunction對話框中，把標題變成ChangeRecordFields，然后點擊OK。UserFunction標題中不能包含空格。

程序中發生兩個變化。多個對象被采集到新的UserFunction中，出現在UserFunction編輯窗口中，以便能夠作出改動。Call對象出現在Main Window中。它保留所有端連接。

4. 運行程序，測試UserFunction。

下面的范例顯示了該程序，其中打開了UserFunction編輯窗口，且open view中包括Call對象。

另請參閱

構建UserFunction面板

在程序中調汁煲erFunction

在程序中創建UserFunction

編輯UserFunction

UserFunction


編輯UserFunction

編輯UserFunction之前，必須先打開包含這個 UserFunction 的VEE程序，然后就可以在UserFunction的編輯窗口進行編輯了。

編輯 UserFunction

1. 打開包含要編輯的UserFunction的VEE程序。

2. 選擇 Edit [image] Edit UserFunction打開Edit UserFunction對話框，該對話框會列出程序中包含的所有UserFunction。

3. 選擇要編輯的UserFunction的名字并洙擊 OK 按鈕，打開UserFunction 編輯窗口。

4. 在編輯窗口中編輯。

5. 關閉編輯窗口。對UserFunction所做的任何改變會影響所有對該UserFunction的調用。

快捷鍵

將鼠標指針移動到工作區的空白處，洙擊鼠標右鍵可以打開Edit UserFunction對話框。

從Call對象的上下文菜洙中選擇 Edit UserFunction 可以打開被調用的Edit UserFunction的編輯框.

在Program Explorer中雙擊UserFunction的名字可以打開它的編輯窗口。

另請參閱

在程序中調汁煲erFunction，在程序中創建UserFunction， 在程序中從對象創建UserFunction，UserFunction，從表達式中調汁煲erFunction，創建UserFunction程序庫


在程序中調汁煲erFunction

一旦已經創建了UserFunction，那么可以在VEE程序內部多次調汁煲erFunction。本節使用范例程序說明了怎樣調汁煲erFunctions。

打開manual范例目錄下(Help [image] Open Example...)的manual51.vee程序。這個程序包含著RandomArray UserFunction，調用這個函數三次︰

Call對象調用RandomArray，輸出返回的數組。

Formula對象在表達式1+RandomArray()中調用RandomArray。表達式對返回數組的每個要素加1。

To File對象在WRITE CONTAINER RandomArray()處理中調用RandomArray。這一處理把RandomArray返回的數組作為容器寫入文件myFile中。From File對象讀取數据文件，把結果發送到顯示屏。

技巧

可以在程序內部多次調用RandomArray UserFunction。

每次調汁煲erFunction都是獨立的。(在本例中，每次調用RandomArray會生成一套不同的隨机數字。)

在Call對象中，指定要調用的函數名稱(例如︰RandomArray)。但是，如果從表達式中調汁煲erFunction，那么必須使用表達式語法，如︰RandomArray()。

UserFunction名稱不分大小寫。

UserFunction名稱必須是唯一的。

可以從使用表達式的對象中調汁煲erFunction名稱，如If/Then/Else, To File和Sequencer對象。

另請參閱

在程序中創建UserFunction

在程序中使用多個對象創建UserFunction

編輯UserFunction

UserFunction


從表達式中調汁煲erFunction

從表達式中調用UserFunction

可以從Formula對象中的表達式或在運行時評估的任何表達式中調用UserFunction，如從ToFile對象中。這一程序演示了調用UserFunction的几种方式。

在程序中，Call對象調用UserFunction noiseUF，返回一個增加了噪聲成分的正弦波。第一個Formula對象中的表達式abs(noiseUF(Y))返回由UserFunction返回的絕對值。因此，在正方向上矯正顯示的有噪聲的正弦波。

第二個Formula對象中的表達式abs(noiseUF(Y))-1.5也調用UserFunction，但在波形中增加了一個負的DC偏置。使用序列端，保証正确傳播，因為UserFunction使用全局變量。

這個程序保存在范例目錄下的manual43.vee 文件中。


UserObjects和UserFunctions之間的轉換

為把UserObject轉換成UserFunction，從UserObject的對象菜單中選擇Make UserFunction。UserFunction窗口會代替UserObject窗口，但輸入端和輸出端相同。UserFunction Call對象會代替UserObject對象。

為把UserFunction重新轉換回到UserObject，從UserFunction窗口的對象菜單中選擇Make UserObject。任何UserFunction調用操作保持不變 (必須手動刪除它們)，但UserFunction會自動轉換成UserObject。


定制VEE菜單

可以在VEE開發環境中定制菜單。customMenu.mnu文件解釋了對希望頻繁使用的特定對象和函數怎樣在菜單中添加菜單項。它還解釋了怎樣使用新的內置函數help()，在開發的程序的自定義Help標題中添加鏈接。

customMenu.mnu文件位于lib中的VEE安裝目錄下，可以在ASCII文本編輯器中打開這個文件。

另請參閱

help()


使用函數庫

創建每种用戶自定義函數及在VEE程序中使用這些函數的方法類似。所有這些函數都使用Call對象或從特定表達式中調用，如Sequencer或Formula對象中。可以使用庫中三种用戶自定義函數中的任何一种函數。采取下述步驟，使用函數庫︰

1 導入庫。

使用Device [image] Import Library對象。選擇Library Type (UserFunction, Compiled Function或Remote Function)，填寫相應的字段。本章相關小節中介紹了与這些字段有關的具体信息。

2 調用庫中包含的一個或多個函數。

從Device菜單中使用Call, Formula或Sequencer對象。還可以使用在運行時調用表達式的其它對象，如If/Then/Else或To File。如果想從函數中返回多個值，那么必須使用Call對象。

3 刪除庫。

如果擔心內存管理或程序執行，使用Device [image] Delete Library對象，以程序化方式從內存中釋放庫。否則，在VEE退單時會自動刪除庫。

能夠從表達式中調用UserFunction非常有用，特別是在Sequencer對象的事務中包括此類表達式時。如需相關信息，參閱Help => Contents and Index => How do I => Use Sequencer Objects。

另請參閱

創建UserFunction庫，關于Compiled Functions，關于Remote Functions


創建UserFunction程序庫

除在同一個程序內部創建和使用的局部UserFunctions外，還可以創建在外部存儲、以后再導入到程序中的多個UserFunctions組成的程序庫。

為創建UserFunction程序庫，在VEE空工作區中創建多個UserFunction，然后把它們保存到一個文件中。例如，為創建由兩個UserFunction--myRand1和myRand2組成的程序庫 (在輸入值中增加隨机數字)，可以創建兩個UserFunction，具体如下︰

為創建UserFunction程序庫，使用標識其為程序庫的名稱保存程序。例如，使用擴展名.vlb，而不是.vee。

備注

正常情況下，程序只應包含UserFunction。如果程序中有其它對象(如在Main中)，那么在導入程序庫時會忽略這些對象。如果使用Declare Variable對象，把它們放在其中一個UserFunction中，而不是程序庫的Main窗口中。


導入和調汁煲erFunction

導入和調用UserFunction

為把UserFunction庫導入程序中，使用Import Library對象。下面的程序從文件user_func_lib中導入庫，調用UserFunction myRand1和myRand2。

Import Library對象允許指定庫的類型︰User Function, Compiled Function或Remote Function。如果選擇UserFunction，還可以指定Library Name和File Name。

Library Name字段為程序內部的庫指定一個局部名稱。這使得Delete Library對象可以從程序中刪除庫。在本例中，Import Library把名稱myLib附到從文件user_func_lib導入的庫中。

File Name字段指定從中導入庫的文件，在本例中是user_func_lib。如果點擊File Name字段，可以從由所有庫文件組成的列表中選擇文件。

這個程序非常簡單，因此不需在使用后刪除UserFunction庫。在調用大型庫的大型程序中，在不需要時刪除庫可以降低程序的內存要求。

備注

不能編輯使用Device [image] Import Library導入的UserFunction，但可以查看其內容，設置調試斷點。為查看導入的UserFunction，使用Program Explorer。

可以使用File [image] Merge Library 合并UserFunction庫。一旦庫被合并到程序中，可以使用Edit [image] Edit UserFunction編輯各個UserFunction。


使用Compiled Function

為使用Compiled Function，采取下述步驟︰

1 編寫外部程序。

2 創建DLL和一個定義文件。

3 導入庫，從VEE中調用函數。

4 在完成時從VEE內存中刪除庫。

導入Compiled Function庫及調用函數的方法与UserFunction庫非常類似。Import Library對象把DLL附在VEE流程中，解析定義文件說明。

定義文件定義外部庫和VEE之間傳送的數据類型。(本部分后面討論了這個文件。) 然后可以使用Call對象或從Formula和If/Then/Else之類的對象中調用Compiled Function。


構建 C 函數

下面的C函數接受實數組，對數組中的每個要素加1。修改后的數組返回到Array端上的VEE，數組尺寸返回到Ret Value端上。一旦連接到VEE，這個函數會變成Compiled Function，在VEE程序中可以通過下述方式調用這個函數。

/*

C code from manual49.c file

*/

#include <stdlib.h>

#ifdef WIN32

# define DLLEXPORT __declspec(dllexport)

#else

# define DLLEXPORT

#endif

/* The description will show up on the Program Explorer when you select "Show Description" from the object menu and the Function Selection dialog box in the small window on the bottom of the box.

*/

DLLEXPORT char myFunc_desc[] = "This function adds 1.0 to the array passed in";

DLLEXPORT long myFunc(long arraySize, double *array) {

long i;

for (i = 0; i < arraySize; i++, array++) { *array += 1.0; }

return(arraySize);

}

這一函數文件的定義是︰

/*

definition file for manual49.c

*/

long myFunc(long arraySize, double *array);

(這一定義与C文件中的ANSI C原型定義相同。)

必須包括例行程序依賴的任何標題文件。程序庫應鏈接解析其調用的系統功能所需的任何其它系統程序庫。

程序范例采用ANSI C函數原型。函數原型說明VEE應傳送到函數中的數据類型。

數組已經說明為指針變量。VEE將端中把Call數据上出現的信息地址放到這個變量中。數組尺寸已經說明為長整數。VEE將把數組尺寸值(而不是地址)放到這個變量中。數据輸入端和變量說明的位置非常重要。為數据輸入端(從上到下)提供的數据項目(或其值)的地址從左到右放到函數原型的變量中。

C函數(及相應的Call對象中的一個數据輸入端)中的一個變量用來指明數組尺寸。arraySize變量用來防止把數据寫入數組末尾以后。如果超出數組邊界，那么結果取決于用戶使用的語言。在執行邊界檢查的Pascal語言中，會發生運行時錯誤，停止VEE。在沒有邊界檢查的C語言中，結果會變得不可預測，但可能會出現間歇性數据損壞。

這個范例把指針傳送到數組，因此在使用信息前，必需先解除參考數据。

取值已經傳送arraySize變量，因此沒有顯示為數据輸出端。但是，我們在這里一直使用該函數的返回值，把輸出數組的尺寸返回給VEE。這种技朮适用于用戶需要返回的數組要素少于輸入數組要素的情況。

下面的程序調用C程序范例創建的Compiled Function︰

上面的范例保存在范例目錄下的 manual49.vee 文件中．Ｃ文件保存為manual49.c,定義文件保存為manual49.h,共亨程序庫保存為manual49.sl．


創建動態鏈接庫

VEE通過Call對象和Formula對象存取DLL。

備注

本節介紹了怎樣調用DLL、而不是怎樣編寫DLL。VEE 3.2版及更高版本只能調用32位DLL，不能調用16位DLL。

創建DLL

在編寫VEE程序前創建DLL。創建DLL的方式与任何其它DLL的創建方式相同，但其只支持C類型的一個子集。(參閱創建定義文件。)

說明DLL函數 如果使用Microsoft Visual C++ 2.0版或更高版本，函數定義應該是︰

   __declspec(dllexport) long myFunc (...);

這個定義不需要使用.DEF文件從DLL中導出函數。使用下面的命令行，匯編和鏈接DLL︰

   cl /DWIN32 $file.c /LD

/LD 創建一個DLL。使用/Zi生成調試信息。

MS鏈接程序在默認狀態下鏈接到C多線程運行時程序庫。如果使用GetComputerName()等函數，您需要鏈接Kernel32.lib。匯編/鏈接行類似于︰

cl /DWIN32 file.c /LD /link Kernel32.lib

說明DLL函數 為處理VEE，可以使用Microsoft C++ 2.0版或更高版本，把DLL函數說明為__declspec(dllexport)，而不需要使用.DEF文件。例如，可以創建下面的通用函數︰

__declspec(dllexport) long genericFunc(long a) {return (a*2); }

如果不使用Microsoft Visual C++，那么.DEF文件中包含︰

EXPORTS genericFunc

函數定義類似于︰

long genericFunc(long a);

創建Definition文件 Definition 文件包含由導入的函數原型組成的列表。VEE使用這個文件配置Call對象，确定怎樣把參數傳送到DLL函數。這些原型的格式是︰

<return type> <modifier> <function name> (<type> <paramname>, <type> <paramname>, ...) ;

其中︰

• <return type> 可以是︰int, short, long, float, double, char*, 或空。

• <function name> 可以是后面跟著多個字母數字字符的一個字母字符，最多總計512個字符。

• <modifier> 可以是 _cdecl, _pascal, 或 _stdcall。

• <type> 可以是: int, short, long, float double, int*, char*, short*, long*, float*, double*, char**, 或空。

• <paramname>可以是后面跟著多個字母數字字符的一個字母字符，最多總計512個字符。參數名稱是可選的，但建議使用參數名稱。如果將參照傳遞參數，那么參數名稱前面必須有間接符號 (*)。

例如︰

傳遞4個參數，返回一個長型數︰

long aFunc(double *,long param2,long *param3, char *);

沒有輸入參數，返回一個雙型數︰

double aFunc();

傳遞一個字符串，返回一個長型數︰

long aFunc(char *aString);

傳遞一個字符串數組，返回一個長型數︰

long aFunc(char **aString);

參數限制

從VEE中調用的DLL函數在堆棧上推送最多144個字節。這限制了函數使用的參數數量。只要不超過144字節限制，就可以使用任意參數組合。一個長型數使用4個字節，一個雙型數使用8個字節，一個指針使用4個字節。例如，一個函數可以有36個長型數、或18個雙型數、或20個指針和8個雙型數。

Import Library對象

在使用Call對象或Formula框執行DLL函數前，必須通過Import Library對象把函數導入到VEE環境中。在Import Library對象上，在Library Type下選擇Compiled Function。使用Definition File按鈕輸入正确的定義文件名。最后，使用File Name按鈕選擇正确的文件。Library Name按鈕會為函數集指配一個邏輯名稱，不需改動。

Call對象

在与Call對象使用DLL函數前，必須配置Call對象。最簡便的方式是在Import Library對象菜單上選擇Load Lib，把DLL文件加載到VEE環境中。然后在Call對象菜單中選擇Select Function。

VEE將出現一個對話框，其中包括定義文件中列明的所有函數的列表。在選擇一個函數時，VEE會使用正确的輸入和輸出端及函數名稱自動配置Call對象。

通過修改函數名稱，增加相應的輸入和輸出端，還可以手動配置Call對象︰

1 在有多個參數傳遞到函數時，配置相同數量的輸入端。最上面的輸入端是傳遞到函數的第一個參數。從上面數第二個端是第二個參數，依此類推。

2 配置輸出端，使參考傳遞的參數作為輸出端出現在Call對象上。按值傳遞的參數不能指配為輸出端。最上面的輸出端是函數返回的值。從上面數第二個輸出是參考傳遞的第一個參數，依此類推。

3 在Function Name字段中輸入正确的DLL函數名稱。

例如，對下述定義的DLL函數︰

long foo(double *x, double y, long *z);

對x, y和z需要三個輸入端，另外需要三個輸出端，一個輸出端用于返回值，兩個輸出端用于x和z。Function Name字段將包含foo。如果輸入和輸出端數量与函數中的參數數量不完全匹配，那么VEE會生成錯誤。

如果DLL程序庫已經加載，并在Function Name字段中輸入函數名稱，那么您也可以使用Call對象菜單上的Configure Pinout選項，配置端。

Delete Library對象

如果您的程序非常大，您可能希望在使用完之后刪除程序庫。Delete Library對象与Import Library對象菜單上的Delete Lib選項一樣，從內存中刪除程序庫。


使用动态链接库

在PC上，可以作为VEE程序的一部分，使用从动态链接库(DLL)中汇编的函数。DLL可以是自己编写的汇编的函数(编写DLL的相关文档请与微软联系)，也可以是购买的或从网上下载的DLL。

备注

VEE同时支持"_cdecl"和"_stdcall"调用协议。客户编写的大多数DLL采用_cdec1调用协议。大多数Win32 API调用采用_stdcall。VEE同时支持这两种命名约定，因此您可以使用市面上最流行的DLL及自己的DLL。

把DLL集成到Agilent VEE程序中

本节介绍了怎样把DLL导入VEE程序中。如上所述编写或获得DLL，然后根据下述步骤使用DLL：

1 选择Device [image] Import Library。

Library Type包括三个选项：UserFunction, Compiled Function, 和Remote Function。把Library Type字段变成Compiled Function (默认值是UserFunction)。对Compiled Function，Import Library对象包括一个Definition File使用的字段，具体如下。

下面介绍了各个字段：

备注

通过从对象菜单中选择Load Lib，还可以在开发过程中手动加载一个库。

2 选择Device [image] Call。

在使用Import Library 导入库时，选择Device [image] Call，创建一个Call对象。然后可以从 Call对象菜单中选择Select Function，从出现的列表框中选择希望的函数，调用Compiled Function。例如，下图显示的Call对象使用参数arraySize和array调用myLibrary中名为myFunction的Compiled Function。

VEE为Call对象自动配置函数名称及正确数量的输入端和输出端。第二个、第三个...输出端映射到参考传递到函数的任何参数。如果已经输入了函数名称，通过在对象菜单中选择Configure Pinout，也可以配置对象。

备注

还可以从表达式字段中调用DLL函数，只要已经加载了库。在采用这种方式时，必须把参数放在函数名称后面的圆括号内，函数只发回返回值。参考传递的任何参数只能使用Call对象检索。例如，可以在Formula对象中使用下面的表达式：

2 * yourFunc(a,b)

a 和b是指Formula对象上的两个输入端，yourFunc的返回值将乘以2，放在输出端。

3 (可选) 点击Device [image] Delete Library。

在开发程序时，还可以从对象菜单中选择Delete Lib，以程序化方式删除库。在程序中使用完毕后删除库可以降低加载时间，节约内存。

使用DLL的实例

在本练习中，您将导入一个DLL，从DLL中调用一个函数。使用的DLL是Windows上的VEE产品中自带的DLL。(同一程序是为在所有平台上工作而设计的。)

打开manual49.vee文件，其位置是：

<installation directory>\EXAMPLES\MANUAL\MANUAL49.

仔细查看这一实例。

上述程序的要素包括：

运行程序，注意第一个轨迹在波形所有点上都比第一条轨迹大1。

程序中另一个应注意的要点是使其能够移植到所有VEE平台使用的方法。Windows 98, Windows 2000, Windows NT 4.0和Windows XP采用Microsoft 32位汇编程序。这些DLL都使用*.dll扩展名指明。

称为Shared Library Name的UserObject识别使用的操作系统，然后把正确的库名传送到Import Library对象，如下图所示。

重命名的Formula对象一直使用whichos()函数，识别操作系统。扩展的If/Then/Else对象检查whichos()函数的输出，然后触发相应的文本常数。然后这个文件名扩展名被增加到使用重命令的Formula对象的MANUAL49文件中。(标为共享库的Formula对象上的输入终端也被变为扩展名)

File Name控制端已经被增加到Import Library对象中，因此在UserObject和Import Library之间有一条虚线。

备注

考察在混合环境中共享数据使用的To/From Socket，如把数据发送到数据库中。此外，Battleship和Euchre游戏实例都全面使用套接字在多个VEE流程之间通信。

在公式对象中使用DLL函数

还可以在公式对象中使用DLL函数。在公式对象中，只有返回值用于公式中。不能存取参考传递的参数。例如，上面定义的DLL函数是一个公式：

4.5 + foo(a, b, c) * 10

其中a是公式对象最上面的输入终端，b是第二个输入终端，c是最后一个输入终端。foo调用必须有正确数量的参数，否则VEE会生成错误信息。


導入和調用Compiled Function

可以使用Import Library對象把DLL導入到VEE程序中，然后使用Call對象調用Compiled Function。這個過程与導入UserFunctions庫和調用函數非常類似。

為導入Compiled Function庫，在Library Type字段中選擇Compiled Function。

与UserFunction一樣，Library Name字段附上一個名稱，在程序內部識別庫，File Name字段指明導入庫的文件。對Compiled Function，有第四個字段，指明Definition File的名稱，具体如下。

定義文件定義了在外部例程和VEE之間傳送的數据類型。它包含著函數原型。

在使用Import Library導入庫以后，可以在Call對象中指定函數名稱，調用Compiled Function。例如，Call對象調用名為myFunction的Compiled Function。

從Call對象菜單中或從Function & Object Browser (在Device [image] Function & Object Browser)中使用Select Function選擇希望的函數，或在Call對象中輸入函數名稱。

如果VEE識別函數，那么將為該函數自動配置Call對象的輸入端和輸出端。(由定義文件提供必要的信息。) 通過在對象菜單中選擇Configure Pinout，可以重新配置Call輸入端和輸出端。

VEE為Call對象配置函數要求的輸入端及函數返回值要求的Ret Value輸出端。還有一個輸出端，与其參考傳送的每個輸入相對應。

還可以從Formula對象的表達式中，或從運行時求解的其它表達式中，按名稱調用Compiled Function。例如，通過在Sequencer或ToFile處理的表達式中包括其名稱，可以調用Compiled Function。

但是，只能從表達式內部獲得Compiled Function的返回值(Call對象中的Ret Value)。如果想從函數中獲得其它參數，必須使用Call對象。

另請參閱

定義文件


在大型程序中查找函數

VEE在Edit菜單下提供了Find功能，幫助您在大型程序中定位對象和文本。例如，在Examples\Games目錄下打開Solitaire.vee程序，進入細節視圖，點擊Edit [image] Find...，顯示對話框。

如圖所示，輸入makeamove (Solitaire.vee程序中的一個UserFunction)，點擊Find。VEE自動定位名為makeamove的UserFunction，顯示它是從程序的哪個部分調用的。

可以使用Find定位任何對象或文本，如變量、標題、對象設置等等。雙擊Find Results對話框中的任何一行，可以定位一個對象。

備注

通過把鼠標指針放在Program Explorer中的對象上，點擊鼠標右鍵，也可以使用Find功能。這將把搜索范圍限于特定的UserFunction或UserObject。

另請參閱

實驗9-1: UserFunction操作，實驗9-2: 創建和合并UserFunction庫，實驗9-3: 導入和刪除庫，實驗9-4: 合并柱狀圖顯示程序，合并Agilent VEE程序


什么是面板？

面板視圖（也叫做面板）是程序的用戶界面。一般是在完成程序的功能部分之后會創建面板視圖。詳細視圖（您的開發區域）和面板板視圖是同一個程序在主視窗內出現的兩個視圖，就像同一個硬幣的正反面一樣。一般只將畫面和數据輸入對象复制到面板。只顯示對象本身（而不是線或端）。可以在任一視圖中運行您的程序。

在為您的程序創建完一個面板視圖，程序也可以在VEE 工作區內的一個單獨的執行窗口中運行。執行窗口使用您為面板視圖設定的所有設置運行您的程序。您可以利用Main 窗口屬性Show On Execute來控制執行窗口的使用。執行窗口可以讓您同時觀察程序細節和面板視圖，并且顯示出所完成的程序在VEE RunTime中的運行狀況。當執行窗口為打開狀態時，只有一小部分菜單項是可用的，這樣可以防止程序被修改。無論如何，保護程序安全并在VEE RunTime里運行它，通常是交付給您的用戶一個完成程序的最好方式。下面的三張圖片顯示了一個暫停的程序，分別顯示它的詳細視圖，相應的面板視圖和執行窗口當中。

細節視圖

相應的面板視圖

執行窗口

VEE具有三种面板類型，其創建、修改和使用方法類似︰

Main Panel - 与主上下文有關的面板。如果對象在主工作區內，您可以選擇并把它加入到Main面板。要創建Main面板，請參閱 在面板中添加對象和 從面板中刪除對象。

UserObject Panel - 每個UserObject 可以有自己的面板。這個面板可以在它自己上面使用或者加到其它面板上，包括Main面板。在UserObject 運行時并且Show Panel on Execute屬性為選中狀態，此面板可以始終可見或隨時彈出（像對話框一樣）。創建UserObject面板的詳情請參閱 構建UserObject面板。

UserFunction Panel - 每個UserFunction 可以有自己的面板（就象UserObject）。這個面板可以在UserFunction運行時并且Show Panel on Execute屬性為選中狀態時彈出，或者在通過showPanel()函數調用方法來指定時彈出。創建UserFunction面板的詳情請參閱 構建UserFunction面板。


在面板中添加對象

Main Panel是用戶界面的基礎。不管構建哪類面板，都使用与構建 Main Panel時相同的技朮。

1. 把對象放在Open View中。在大多數情況下，您希望Open View位于面板上；一旦對象位于面板上，那么不能最小化對象或打開對象。

2. 選擇希望添加到面板中的對象。按住CTRL，同時在每個對象上點擊鼠標左鍵，或者按下鼠標鍵，拖動一個選擇框以包括多個對象，可以選擇多個對象。

3. 點擊工具條上的Add to Panel按鈕(或使用Edit [image] Add To Panel)。

Add to Panel按鈕

現在在Main Window中會看到程序的Panel View。按 Main Window標題欄左側的Panel按鈕和Detail按鈕，可以在Panel View和Detail View之間切換。當希望在面板中添加其它對象時，從Detail View開始，采取上述步驟。

備注

盡管在Detail或Panel View中可以确定Main Window大小，但Panel View中沒有滾動條。在添加到面板中時，從Detail View中選擇的對象被放在相對相同的位置，并移動到适應Panel View。如果重新确定窗口大小，您可能需要重新定位Panel View對象。

另請參閱

實驗11-1: 使用菜單

實驗11-3: 創建高沖擊力警報


從面板中刪除多個對象

1. 确保位于Panel View中。

2. 刪除對象。從對象的對象菜單中選擇Delete。

這個對象仍保留在Detail View中，但會從Panel View中刪除。

如果從Detail View中刪除(Cut)對象，會從Panel View中自動刪除這個對象。

備注

如果在Detail View上Cut、然后Paste對象，將刪除任何相關的Panel View對象，必須再次在面板中添加對象。這時應使用Copy和Paste。

備注

在運行程序時，Detail View和Panel View及執行窗口中不允許某些對象菜單操作，如Delete。必須先暫停或停止程序。


改變面板外觀

一般來說，Panel View上的對象外觀与Detail View上的外觀沒有鏈接。例如，如果在Panel View上改變對象的顏色，它不會改變Detail View上的相關對象的顏色(反之亦然)。但是，顯示的數据和其它執行相關信息是鏈接的；如果在一個視圖中改變這些數据和信息，在另一個視圖中也會隨之改變。下次運行程序時，Panel View中的變化會出現在執行窗口中。

在Panel View或Detail View上的對象繼承Default Preferences中設置的默認屬性時(即還沒有改變對象的顏色或字体屬性)，在系統默認值變化時，這些屬性會變化。這些值在Panel和Detail之間仍沒有鏈接。例如，Panel上的對象可以設置成金色，而Detail上的顏色仍保持默認值，反之亦然。

面板和細節視圖之間沒有鏈接的屬性

Show Title Bar (如果對象顯示在打開視圖中)

Layout組屬性︰

Horizontal

Vertical

Show Digital Display

Show Tic Marks

Rectangular

Circular

Show Digital Display

Show 3-D Border

Scaled

Show Caption

Show Traces Legend

Show Scales Legend

Show Scale Labels

Show Scroll Bars

Show Auto Scale Button

Enable Trace/Scale Editing

Grid Type

Markers

Color屬性︰所有顏色

Font屬性︰所有字体

Traces: 除軌跡名稱之外的所有屬性

Scales: 所有屬性

Label Justification屬性

Editing Enabled屬性(在Note Pad對象上)

Format屬性︰

Radio Buttons | Cyclic Button | List | Drop-Down List | Pop-Up List | Slider List

Button | Check Box | Vertical Paddle | Horizontal Paddle | Vertical Rocker | Horizontal Rocker | Vertical Slide | Horizontal Slide

Limits類別屬性︰

High Color

Mid Color

Low Color

Sub-Range Configuration類別屬性︰

Colors

Icon appearance類別一欄屬性︰

Picture文件和顯示模式

Show Title

Layout類別屬性 (只适用于Panel View)︰

Size & Position (X, Y, Width, Height)

Border

所有其它屬性在Panel View和Detail View之間是鏈接的(一個視圖中的變化會同時改變兩個視圖)。


改變對象的邊框外觀

在Panel View中，通過指定邊框選項，可以改變對象的深度外觀。

1. 從對象菜單中選擇Properties。

2. 進入Appearance類別。

3. 選擇Border選項︰None, Flat, Sunken或Raised。

下圖顯示了不同邊框樣式的外觀。

邊框樣式

備注︰在邊框設為None時

在對象的邊框設為None時，且顏色与背景顏色相匹配時，對象的顏色擴展到邊框所在的位置。在移動或确定對象大小時，或如果改變對象的顏色，可以看到邊框的位置。

不管邊框設置如何，對象的大小不變。例如，如果已經确定OK對象的大小，且沒有邊框，然后選擇有一個邊框，那么邊框可能會擋住部分對象文本。在下圖中，兩個對象的大小相同。左面的對象Border設為None，右面的對象Border設為Flat。

邊框寬度范例

Copyright (c) 1991-2007 Agilent Technologies, Inc.


標注區域

如果想在面板上的區域中添加文本，使用Label對象。

1. 從Detail View中，選擇Display [image] Label。

2. 從Label對象的對象菜單中，選擇Properties。

3. 把標題變成所需的標注文本。

4. 選擇Label對象，選擇Edit [image] Add To Panel。把標注放在希望的地方。

在默認狀態下，Label對象顏色捆綁到默認的Panel View顏色(從File [image] Default Preferences中設置)，以便標注背景融合到Panel View中，而不出現明顯的色彩偏差。

可以使用Properties窗口改變標題文本，從Detail或Panel View中改變標注文本，也可以添加一個數据輸入端，在運行時以程序化方式改變標注文本。還可以使用Properties窗口指定Left, Right或Center對齊方式，來改變文本對齊方式。


對準對象

在Panel View中添加對象時，其左上角自動与用戶可以定義的柵格對準，但對象大小不變。在Panel View上移動對象時，其左上角与最近的柵格棘爪對齊。為根据柵格重新确定對象大小，把光標移到對象的右下角，出現拐角縮放光標，點擊光標。如果拐角縮放光標使用困難，那么可以使用對象菜單上的Size。

可以通過几种方式對準對象︰

1. 選擇對象，使用Edit [image] Align或Distribute。

2. 選擇多個對象，在Properties窗口中，可以設置所有對象的大小。


改變网格大小

1. 從Main Window的對象菜單中，選擇Properties。

2. 選擇Panel類別。

3. 設置PanelGridSize，最小的网格是2。

4. 把PaneDrawGrid變成True，查看网格。

在改變网格大小時，面板上的現有對象不會自動与网格對齊。在點擊一個對象時，其左上角与最近的网格定位器對齊。在點擊拐角調整區域時，對象把大小調整到最近的网格定位器。任何Move或Size都會把對象与當前网格大小對齊。

按住Shift鍵，同時點擊移動和确定對象大小，可以在网格之外移動和确定對象的大小。

備注

每個面板都有自己的网格。為改變UserObject怯煲erFunction网格上的网格大小，從對象菜單中選擇Properties，然后采用上述步驟。


匹配對象大小

您可能希望在Panel View中把一個對象的大小与另一個對象的大小匹配起來。

有多种方式進行匹配︰

1. Open View [image] Properties。選擇所有對象。在Properties窗口中，在Layout類下，設置大小值。

2. 選擇所有對象。把光標移到一個對象的右下方，直到出現大小光標(有兩個頭的箭頭)。按住CTRL鍵，同時按下鼠標左鍵。把所有對象大小拖到希望大小。如果大小与預期不符，使汁煣do撤銷操作。


在面板中添加圖片

有兩种方式在Panel View中添加圖形圖像，如位圖。這些方法可以參閱Main Window，還可以与UserObjects和UserFunctions一起使用。

在Panel View背景中直接添加圖像

為使用這种方法，Panel View必須已經存在。創建空白Panel View的快捷方式是點擊Main Window對象菜單上的Create Panel。

1. 從Main Window的對象菜單中，選擇Properties。

2. 轉到Panel類別，這一欄在創建Panel View后出現。

3. 選擇Panel BackgroundPicture，選擇文件。

4. 選擇顯示模式︰Actual, Centered, Scaled, 或Tiled。參閱下面的圖片顯示模式。

5. 點擊OK。

把一個或多個可移動、可确定大小的圖像放在Panel View上

1. 從Detail View中，選擇Display [image] Picture。Main工作區中出現Picture對象。

2. 從Picture的對象菜單中，選擇Properties。

3. 選擇一個Picture文件。

4. 選擇顯示模式︰Actual, Centered, Scaled, 或Tiled。參閱下面的圖片顯示模式。

5. 點擊OK。

6. 選擇Picture對象。

7. 選擇Edit [image] Add To Panel。

技巧

通過在Picture對象中添加一個數据輸入端，可以以程序化方式在Panel View上改變圖像。

目前支持的圖像格式如下︰

位圖 (*.BMP)

GIF87a (*.GIF)

Windows MetaFile (*.WMF)

可移值网絡圖像 (*.PNG)

圖片顯示模式

Actual - 按實際大小顯示圖片。重新确定對象或面板大小，以与圖片大小相一致。

Centered - 按實際大小顯示圖片。圖片在對象或面板上居中 (大小不變)。

Scaled - 圖片縮放到對象或面板的當前大小。在選擇這一選項后，縮放可能需要一段時間。

Tiled - 圖片保持實際大小，但在水平方向和垂直方向重复，直到填充整個對象或面板。

下圖顯示了不同的顯示模式。

具有不同顯示模式的Picture對象

備注

為提高執行速度，VEE高速緩存圖形圖像。如果已經把圖像加載到VEE中，然后改變包含圖像的文件，那么您必需選擇一個不同的圖像文件，然后重新選擇原始圖像文件。一旦完成這一操作，將使用新的圖像。

另請參閱︰實驗11-2: 為面板背景導入位圖


什么是UserObject Panel?

UserObject Panel与Main Window的Panel非常類似。每個UserObject Panel都有自己的上下文，因此都有自己的Trig Mode和Edit菜洙及自己的Panel View。UserObject Panel的顯示方式要比Main Panel靈活。

有三种方式顯示UserObject Panel

Independent Panel: UserObject上的Panel。

在希望把自己的UserObject与別人的UserObject捆綁在一起，以簡化別人使用的程序部分，而又不需構建Main Panel時，可以使用這种方法。

Pop-Up Panel: UserObject上指定Show Panel on Execute的面板。

這种方法通常用于查詢信息、然后消失的自定義對話框。這類面板在VEE窗口中的任何地方彈出。

Main Panel上的Panel: UserObject上的面板，然后添加到Main Panel中。

這种方法用來對功能分組。也可以把面板嵌套在其它面板上。

下圖顯示了不同類型的UserObject Panel。

有三种方式顯示UserObject Panel

Copyright (c) 1991-2007 Agilent Technologies, Inc.


構建UserObject面板

1. 在UserObject的編輯窗口中，按Ctrl，然后在對象上按鼠標左鍵，選擇對象。

備注
放在UserObject面板中的對象必須位于UserObject的Detail View中。不能從UserObject邊界以外或從嵌套的UserObjects中選擇對象。

2. 從UserObject's Edit菜單中，選擇Add To Panel。

現在您已經創建了一個獨立于Main Panel的UserObject Panel View。通過按編輯窗口標題欄左側的Panel按鈕和Detail按鈕，在Panel View和Detail View之間切換。在任何時候想在UserObject面板中添加其它對象時，從Detail View開始，遵守上面的步驟。


構建彈出面板

一旦已經創建了UserObject Panel，可以采取下述步驟，在UserObject執行時彈出面板︰

1. 從UserObject的對象菜單中，選擇Properties。

2. 在Pop-Up Panel類別中，把ShowPanelOnExecute設為True。

3. 點擊OK。

在程序運行勾煲erObject執行時，UserObject Panel彈出，在Main Window的Detail View和Panel View (如有)都可以看到面板。如果Main Window屬性ShowPanelOnExecute啟動，那么UserObject Panel只在Execution Window中彈出。

備注

為改變彈出面板的外觀，在Properties窗口的 Pop-Up Panel類別中，設置ShowPopUpPanelTitle和ShowPopUpPanel Border屬性。

為改變Panel View的背景顏色，在在 Properties窗口的Appearance類別中，設置BackColor屬性。

備注

一般在創建自定義對話框中使用彈出面板。詳情請參閱構建自定義對話框。

如果您需要簡單的對話框，您可能不需要創建彈出面板。可以使用其中一個Dialog Box對象。詳情請參閱關于內置對話框對象。


保持顯示彈出面板

一旦已經創建并運行彈出面板，您可能會注意到它會閃爍，然后瞬間消失。之所以發生這种操作，是因為沒有暫停UserObject執行，因此不能看到或應答彈出面板上的信息。使用下述步驟，添加OK按鈕，保持執行UserObject，直到點擊按鈕。

1. 選擇Flow [image] Confirm (OK)。

2. 把OK對象放在UserObject的Detail View上。

3. 選擇OK對象。

4. 從UserObject的Edit菜單中，選擇Add To Panel。

現在運行程序，彈出UserObject Panel，一直保持，直到按OK鍵。

如需与使用OK和Cancel鍵及創建自定義對話框有關的詳情，請參閱構建自定義對話框。


改變彈出面板大小

Pop-Up Panel大小是UserObject的Panel View大小。采用下述步驟改變大小。

1. 按UserObject標題欄左側的Panel按鈕，把UserObject的編輯窗口放在Panel View中。

2. 把面板調整到希望的大小。

從對象菜單中，選擇Size。也可以把光標定位到對象的邊緣，拖動邊緣來調整大小。

在調整UserObject Panel大小時，將包括標題和邊框的大小。


改變彈出面板的位置

在第一次運行程序時，會在VEE工作區中心顯示一個Pop-Up Panel (彈出面板)。在程序運行時，通過重新定位面板，可以改變Pop-Up Panel的位置。

1. 按Run。

2. 在面板彈出時，把它拖到希望的位置。

每次在程序運行時，面板將彈出到該位置。注意可以把Pop-Up Panel定位到任何位置，柵格不影響位置。如果關閉Main Panel屬性Show on Execute，那么可以把UserObject Pop-Up Panel重新定位到VEE工作空間的任何地方。如果打開Show on Execute，那么Pop-Up Panel只能重新定位在Execution Window邊界內部。

備注

整個Pop-Up Panel的左上角位置保持不變，而不管Pop-Up Panel屬性如何，也不管是否選擇Show Title Bar和Show Border。例如，如果設置了Pop-Up Panel位置，然后關閉Show Title Bar，面板將移動，從而Pop-Up Panel的左上角現在到達Pop-Up Panel標題欄左上角原來所在的位置。


在主面板中添加UserObject面板

一旦已經在UserObject編輯窗口中創建了Panel View，采取下述步驟，把這個面板添加到Main Panel中。

1. 在Main Window的Detail View中，在UserObject圖標上按鼠標右鍵，然后選擇Restore。

UserObject圖標擴展到在UserObject編輯窗口中創建的Panel View中。

2. 選擇UserObject。

3. 從主菜單中選擇Edit [image] Add To Panel。

現在將看到Main Window的Panel View，上面顯示了UserObject Panel。

可以采取上述步驟，把一個UserObject Panel嵌套在其父UserObject Panel上，但有一點除外，即必須使用父UserObject的Edit菜單。

一旦UserObject Panel已經添加到Main Panel中，象任何其它面板上的對象一樣，改變其大小、位置和其它外觀細節，參閱改變面板外觀和相關主題。

備注

在把一個面板嵌套在另一個面板上時(如上所述)，您將制作一個內容拷貝，拷貝連接到原始面板上。但是，拷貝會被鎖定；為改變面板，必須改變原始UserObject Panel。在從嵌套的面板中添加或刪除對象時，或改變原始UserObject Panel時，拷貝也會變化。


在嵌套UserObject面板中添加對象

一旦已經在Main Panel (或在父 UserObject Panel)中添加了UserObject Panel，您仍可以在這個面板中添加對象。但是，必須在原始UserObject Panel中添加這些對象，然后調節相關對象和面板的大小和位置。

1. 按Main Window標題欄左側的Detail按鈕，返回Main Window的Detail View。

2. 進入UserObject的編輯窗口。

如果UserObject處于圖標視圖，雙擊它。

如果UserObject處于恢复視圖，從對象菜單中選擇Edit UserObject。

3. 按標題欄左側的Detail按鈕，把UserObject的編輯窗口置于Detail View。

4. 把任何希望的對象添加到UserObject的Detail View中。

5. 選擇新的對象添加到面板中。從UserObject的Edit菜單中(按鼠標右鍵)，選擇Add To Panel。

6. 在UserObject Panel View重新排列對象，保証美觀。您可能需要調整面板大小。

7. 在Main Window中，點擊Panel View按鈕，查看帶有新對象的UserObject面板。您可能需要調整面板大小，以便能夠看到所有對象。


從嵌套UserObject面板中刪除多個對象

1. 按Main Window標題欄左側的Detail按鈕，返回Main Window的Detail View。

2. 進入UserObject編輯窗口。

如果UserObject位于圖標視圖中，雙擊它。

如果UserObject位于恢复視圖中，從對象菜單中選擇Edit UserObject。

3. 按標題欄左側的Panel按鈕，把UserObject編輯窗口放在函nanel View中。

4. 從對象菜單中選擇Delete，從嵌套UserObject面板中刪除想要刪除的對象。

這些對象仍存在于UserObject的Detail View中。如果想從程序中刪除這些對象，那么應從Detail View中刪除這些對象，這會同時從Panel View中刪除這些對象。

5. 在UserObject Panel View上重新排列對象，以保証美觀。您可能需要調整面板大小。

6. 在Main Window中，點擊Panel View按鈕，查看編輯后的UserObject面板。您可能需要調整面板大小。


從Main Panel中刪除UserObject Panel

1. 在Main Window中，按標題欄左面的Panel按鈕，進入Panel View。

2. 刪除UserObject Panel。從對象菜單中，選擇Delete或雙擊對象菜單按鈕。

UserObject Panel仍然存在，但不再添加到Main Window的Panel View中。


什么是UserFunction Panel?

UserFunction Panel的構建和運行方式与UserObject Panel基本相同。但是，只有在UserFunction正在執行時(Pop-Up Panel)或只有在通過showPanel()以程序化方式顯示UserFunction時，才能看到UserFunction Panel。UserFunction Panel不能添加到Main Panel (或父UserFunction怯煲erObject Panels)。


構建UserFunction面板

如果您有一個UserFunction，希望為它創建一個面板，采取以下步驟。

1. 按CTRL鍵，然后在希望的對象上按鼠標左鍵，在UserFunction編輯窗口中選擇對象。

備注

UserFunction面板上的對象必須位于UserFunction細節視圖中。不能從UserFunction面板范圍外選擇對象。嵌套在UserFuntion內部的UserObject Panels可以添加到UserFunction Panel中。如需了解添加方法，請參閱在Main Panel中添加UserObject Panel。

2. 從UserFunction的Edit菜單中，選擇Add to Panel。

現在您已經創建了UserFunction Panel View。點擊UserFunction左端的按鈕，在Panel View和Detail View之間切換。

3. 在編輯完成時，關閉UserFunction編輯窗口。

在您希望在面板中添加其它對象的任何時候，從UserFunction的Detail View開始，采取上述步驟。

備注

如果已經創建了UserObject Panel，然后在UserFunction中添加UserObject，那么會自動存在UserFunction Panel。如果UserObject Panel已經添加到Main Panel中，它會自動刪除，因為UserFunction Panel不能位于Main Panel上。


構建UserFunction彈出面板

1. 選擇Edit [image] Edit UserFunction。

2. 選擇UserFunction名稱。

3. 從UserFunction的對象菜單中，選擇Properties。

4. 在Pop-Up Panel類別中，把ShowPanelOnExecute复選框變成True。

UserFunction彈出面板的工作方式与UserObject彈出面板的工作方式相同，具体請參閱構建彈出面板。

備注: 構建狀態面板

可以使用showPanel()，以編程方式彈出狀態面板。詳情請參閱構建狀態面板。


改變UserFunction彈出面板的大小

1. 選擇Edit [image] Edit UserFunction。

2. 選擇UserFunction名稱。

3. 把UserFunction切換到Panel View。

4. 把面板大小調整到希望的大小。

從對象菜單中，選擇Size。或把光標定位在對象的邊緣，拖動邊緣調整大小。

在調整UserFunction Panel大小時，將調整整個UserFunction區域的大小，包括標題和邊框。


改變UserFunction彈出面板的位置

其步驟与改變彈出面板的位置中介紹的UserObject Panel步驟相同。


使面板鍵盤可以導航

可能您的用戶首選僅使用鍵盤在Panel View中導航，也有可能他們不能在環境中使用鼠標。對這些用戶，構建一個可以使用鍵盤導航的面板。

一般來說，在使用鍵盤運行程序時，對象首先要獲得焦點，然后可以改變對象的數据值或狀態。

定義

Focus是指明在哪里可以執行操作的朮語。在VEE中，有焦點的對象或字段外面有一個選取框(虛矩形)，對輸入型字段，會顯示一個垂直脫字符號，如果tab到對象，現有文本使用反轉顏色顯示(選擇文本)；如果點擊一個對象，它會獲得焦點，但現有文本的外觀不變。

鍵盤導航要注意以下事項︰

用戶很難告訴Panel View上的面板什么時候已經運行(OK按鈕除外，除非可以選擇，否則這些按鈕會變成灰色)。應告知用戶對象已經運行，或讓用戶指明什么時候完成變化 (如通過按OK按鈕)。

如果沒有鼠標，用戶不能進入對象的對象菜單(這种存取适用于Display對象菜單選項，如Zoom和Auto Scale)。如果必需讓用戶使用這些參數，可以對部分參數添加控制輸入端。

可以指定tab通過Panel View的tab順序。Panel View導航技朮中討論了模式。

不同對象有不同的鍵盤交互規則。必須告訴用戶這些規則；詳情請參閱Panel View選擇技朮。


為對象或面板提供焦點

与焦點有關的部分信息

可以設置每個面板上多個對象的各欄的先后順序。在每個對象上，設置TabIndex和TabStop的Properties。

只有在一個對象有焦點時，才能修改這個對象上的數据。

在彈出面板時，只有彈出面板上的對象獲得焦點，直到面板關閉。

只有具有數据字段、按鈕或選擇區域的對象才能獲得焦點。注意可以tab到每個數据字段、按鈕或選擇區域。

例如，如果在面板上有一個Slider(如下圖所示)，那么第一個Tab為MinValue字段提供焦點。

面板上的Slider

為防止用戶tab通過這些字段及改變字段，為這些字段添加控制輸入端，如MinValue和MaxValue。

一旦程序開始運行，會立即執行Selection Control, Toggle Control和Slider對象，除非已經設置了Wait for Input屬性。這一屬性只允許在獲得焦點、改變或選擇值之后才執行對象。

如果Esc或Enter指配給一個OK按鈕，然后按下這個鍵，那么OK按鈕將得到并保持焦點。

如果一個功能鍵指配給OK按鈕，然后按下這個鍵，那么焦點將保持在按下這個功能鍵前有焦點的對象上。

備注

在包含其它對象的鍵盤驅動的面板上，不要使用VEE的內置Dialog Box對象。在Dialog Box對象停止執行后，任何其它對象都不會獲得焦點，因此不能通過鍵盤導航到其它對象。如需与Dialog Box對象有關的信息，請參閱關于內置對話框對象。


為Enter或Esc鍵指配OK按鈕

在創建面板時，可以把Confirm (OK)按鈕指配到鍵盤上的Enter和Esc鍵。使用程序的任何人都可以按某個鍵盤鍵，而不是Confirm (OK)按鈕。否則，用戶必須使用Tab移動到該按鈕，然后按Space。這一功能特別适合使用彈出面板創建的自定義對話框。如需与構建自定義對話框有關的更多信息，請參閱構建自定義對話框。

如果想把鍵盤鍵指配給Confirm (OK)，采取下述步驟︰

1. 選擇Flow [image] Confirm (OK)。

2. 在面板中添加Confirm (OK)按鈕。

3. 從OK按鈕的對象菜洙中，選擇Properties。

4. 選擇Assign to [Enter] Key和/或Assign to [Esc] Key to True。

備注
Enter鍵只能指配給每個上下文一個OK按鈕，只能把Esc鍵指配給每個上下文一個OK按鈕。如果把任何一個鍵指配給每個上下文一個以上的OK按鈕，那么以前的指配會自動關閉。

5. 變動立即生效。

在程序運行時，指配給Enter的任何OK按鈕都會用粗体顯示其標記，表明它是默認按鈕。

備注
從程序的Panel View (怯煲erObject/UserFunction)中，Enter和Esc鍵只能指配一個Confirm (OK)按鈕。為所Confirm (OK)指配到其它鍵，參閱為功能鍵指配按鈕。


為功能鍵指配按鈕

在創建面板時，可以為功能鍵指配Confirm (OK)按鈕 (鍵盤頂部的F1, F2, F3等)。使用程序的任何人都可以按相當于Confirm (OK)按鈕的某個鍵盤鍵。否則，用戶必須用Tab移到按鈕上，按Space。如果想為Confirm (OK)指配鍵盤功能鍵，采取下述步驟︰

1. 選擇Flow [image] Confirm (OK)。

2. 在面板中添加Confirm (OK)按鈕。

3. 從OK按鈕的對象菜單中，選擇Properties。

4. 選擇Assign to Function Key下拉菜單。

5. 選擇指配給這個OK按鈕的功能鍵(F1 - F12)。某些鍵盤只有8個功能鍵，但VEE允許使用選擇任何選項，支持跨平台開發；如需更多信息，請參閱通用技巧。在Windows中，F10鍵是一個預留鍵，其功能与Alt相同。

備注
可以把某個功能鍵指配給多個OK按鈕。在按這個功能鍵時，目前活動的所有相關按鈕都將運行。

OK按鈕的標題自動變化，以反映功能鍵指配情況。可以改變標題，使其不包括功能鍵信息。

備注
可以使用功能鍵，從Panel View或Detail View中按OK按鈕。在Main Window中打開ShowPanelonExecute屬性時，還可以在執行窗口中指配鍵。


面板視圖導航技朮

在Panel View中導航時，使用Tab鍵前進，使用Shift+Tab后退。

對較早的版本

從VEE8.0版開始，可以以程序化方式(在運行時)在面板上配置對象的Tab順序，而不會影響其設計時間值。如需与以程序化方式改變Tab順序的更多信息，請參閱以程序化方式改變屬性。

從VEE 7.0版開始，可以配置對象在面板上的Tab順序。通過Properties窗口，可以為面板上的每個對象設置TabIndex和TabStop值。可以對新程序完成這一設置，也可以對導入7.0中的7.0以前的程序完成這一設置。

注︰加載到 VEE 7.0及以后版本的7.0以前的程序在默認情況下根据𡤄EE 6.2及以前版本中創建的程序中的Tab順序?#20013;介紹的算法，設置成面板上每個對象的TabIndex屬性。因此，舊程序將在7.0中執行，其行為与以前版本的VEE相同。

可以修改加載到7.0中的程序，為每個面板上的對象明确設置TabIndex值。TabIndex屬性設置為零值(0)的對象是在面板彈出時Tab的第一個對象。注︰同一個面板上的多個對象的TabIndex值可能會相同(在這种情況下，這些對象的z順序決定著Tab順序)。我們不推荐這种方式，但允許使用這种方式。

TabStop用來從Tab順序中刪除對象。某些對象不允許操作人員進行任何輸入，如AlphaNumeric顯示畫面，其TabStop值設為假。如果所需的行為是讓對象出現在面板上，但不允許操作人員使用tab鍵到達該對象，其它對象可能會把這個屬性設為假。

在VEE 7.0及以后版本中編輯程序時，在默認情況下添加到面板的新對象會把TabStop屬性設置成高于面板上現有的最高TabStop值。例如，如果一個面板有三個對象，其TabStops設置為0、1和2，并在該面板上添加另一個對象，那么在默認情況下，新對象的TabStop屬性會設置為3。

在執行面板時，TabIndex為零(或最低值)的對象會獲得最初焦點。然后Tab將繼續到使用下一個TabIndex值的對象，從零直到最大的TabIndex值。

對老版本(6.2及以前版本)，穿越的對象和面板順序如下︰

在按Run后，VEE把面板分成多組對象。第一組由最上面的(最低的y坐標值)對象确定，包含著y坐標接近最上面對象的所有對象。獲得焦點的第一個對象是組中最左面的對象。Tab從左向右移動焦點。

備注
如果最左面的對象設置了Auto Execute，那么其在開始時不獲得焦點，但可以用Tab到達該對象。

對象或面板的y位置由左上角的位置确定。

一旦焦點到達第一組中的最右面，它會從下一組中最左面的對象繼續。

下一組由沒有位于前一組中最上面的對象确定。Tab從這一組中最左面的對象開始，繼續移動到右面。會在整個面板中重复這种順序方式。

下圖是典型的對象分組方式。

VEE 6.2及以前版本中創建的簡單的Tab順序范例

下圖說明了更加复雜的對象分組。一開始，似乎Third Text對象應該包括在第一組中。但第一組由Second Text對象确定，因此Third Text對象太靠下，而沒有落在第一組中。

第三組由Fifth Text對象确定。Fourth對象和Sixth對象在該組中的距离足夠近。

复雜的Tab順序范例

備注

只有在激活時才能使用Tab到達OK按鈕 (文本沒有變成灰色時)。

如果一個對象有多個字段，Tab會通過所有字段，然后到達下一個對象。

如果您處在嵌套在另一個面板上的UserObject Panel中，Tab會通過UserObject中的所有對象，然后繼續到達UserObject Panel外面的下一個對象。

如果您處在Pop-Up Panel (UserObject怯煲erFunction)中，那么只能在Pop-Up Panel內部Tab，直到其執行完畢。

記住，不管對象是否執行，都可以Tab到這些對象 (OK對象除外)。


面板視圖選擇技巧

使用鼠標時，可以洙擊來選擇或修改一個值。使用鍵盤時，可以使用tab鍵將焦點移到某個對象，然后用下面的技巧去選擇或修改一個值。

Radio 按鈕和列表:

和 [image] 進行選擇。

Space 鍵确定當前的選擇。

Cyclic 按鈕:

Space 鍵确定當前的選擇。

Drop-Down 列表:

打開列表。

和 [image] 選擇想要得項。

Space 或 Return 關閉列表。

Esc 取消選擇。

Pop-Up 列表:

Space 打開列表。

和 [image] 選擇想要得項。

Space 或 Return 關閉列表。

Esc 取消選擇。

所有 Toggle Control 對象:

Space 改變值。

所有編輯域 (例如 Constant 對象):

從鍵盤輸入新值。

Tab 和 Enter 到下一個域。

Esc 取消選擇。

Start 和 OK 按鈕:

Space 選擇它們。

有多個域的對象 (比如 Function Generator):

根据各個域的不同類型選用上面的技朮，然后用Tab鍵到下一個域。

注釋

如果你把Esc或Enter指定給了一個OK對象，而且你又在編輯域(比如 Constant 和 Slider 對象)中使用了Esc或Enter, 那么當編輯域中的數据完成輸入后，這個OK按鈕就會被按下。

當為一個Data [image] 對象設置了Wait For Input項，它就會象上面所描述的那樣在你完成選擇或改變了一個值后開始執行。當一個Data [image] 對象設置了Auto Execute項，它就會象上面所描述的那樣在你完成選擇或改變了一個值后開始一個線程。創建一個自修改面板 演示了如何使用Wait for Input。

Data [image] Constant 和 Data [image] Slider 對象的數据必須設置Wait For Input 或 Auto Execute才能工作。用同樣的值替換原值被視為一次修改。


使用顏色

在使用顏色面板時，應考慮顏色對受眾的限制及顏色的特定用途。

顏色基礎知識

老人通常對顏色不敏感，可能需要更亮的顏色。老人分辨藍色的能力較弱。而年輕的用戶可能會發現顏色越亮，越容易讓人疲勞。

8%的男性和0.5%的女性存在某种形式的顏色辨別缺陷。最常見的缺陷是無法分辨紅色和綠色。

對顏色的感覺有各种變化。不同的監視器、不同的環境光線、文化和職業內涵及個人對顏色的偏好都會影響人們查看、分辨和感覺顏色的方式。

注意顏色在不同的文化中有不同的意義；最好使用大面積的中性顏色。

備注︰冗余提示

由于上述原因，顏色只能作為另一种溝通形式。例如，為把Stop与Go按鈕分開，不要只把顏色從Red變成Green；同樣要保証改變說明文字。保証作為冗余提示的方式之一，是先創建一個沒有指定顏色的面板，然后按需添加顏色。

盡量減少使用的顏色數量。如果在一個面板中有超過4种或5种不同的顏色，或在整個用戶界面中有7种不同的顏色，可能會分散和混淆人們的視覺。

顏色會折射出對程序的印象。明亮的顏色可以折射出玩具類的質量。柔和的或微妙的顏色可以給人以完善或專業的印象。

對背景和文本（前景）組合，使用對比度高的顏色，但要避免把對立派系的顏色放在一起（像黃色和藍色）。對比鮮明很好，但邊界可能會相互滲透。下圖顯示了顏色輪上的顏色。

顏色輪

使用普遍接受的顏色編碼，如Green for Go 或Normal Status 和Red for Stop 或Emergency 。這种顏色編碼可能取決于文化或職業標準。

考慮受眾的打印需求。如果用戶用彩色打印机打印彩色屏幕，由于打印机的局限性，打印机的顏色不一定与屏幕上的顏色一致。如果在黑白打印机上打印屏幕，要保証把顏色很好地轉換成黑色和白色。注意在Default Preferences Properties對話框上，Printing tab Screen Element 設置不适用改變默認的顏色。在改變默認顏色時，VEE會在打印輸出中把顏色自動變成灰度。

既然這么麻煩，為什么還使用顏色？

增強外觀。擁有令人悅目的顏色的界面長時間操作和查看起來更容易。

在視覺上把多個對象划分在一組。

幫助導航和識別。

增強可讀性。

顯示類似之處和不同之處。不同的顏色可以把不同的信息組區分開來。

引起注意某個對象或事件。如果顏色不同，那么很容易找到信息。

突出信息編碼。顏色信息可以幫助理解，特別是使用共同的編碼，如黃色為警告，紅色是危險或失敗，藍色是麻煩或冰冷。

使用基本整体顏色方案，類似的函數使用相同的顏色，只在需要時才使用對比鮮明的顏色。


怎樣選取顏色

下面介紹了部分指導準則，幫助您選取能夠增強面板可用性和可讀性的顏色。

一般來說，您想使用沒有顏色的背景，最好使用白色或灰色。但是，背景顏色較淺會提高感覺的閃爍程度 (具体程度取決于系統監視器)。藍色陰影也非常适合作為背景(包括對象和面板)。

如果背景顏色太亮，那么可能不能突出顯示三維對象的邊界。如果背景太暗，那么可能不能突出顯示對象的邊界陰影。

在顯示文本時，選取的顏色應和背景形成強烈對比。例如，如果背景顏色是白色，那么最好使用下述顏色，但其效果對文本最差︰

黑色 - 最好

藍色- 最好

紅色 - 最好

黃色 - 最差(對比度差)

青色 - 最差(對比度差)

如果背景顏色是黑色，那么最好使用下述顏色，但其效果對文本最差︰

黃色- 最好

白色 - 最好

綠色 - 最好

藍色 - 最差

紅色 - 最差(可能會混合到背景中)

洋紅色 - 最差(可能會混合到背景中)

注意，在VEE顯示對象上(如X vs Y)，圖形默認的背景顏色是黑色，您希望為圖形的格線選取好的顏色。也可以改變軌跡線和點類型，區分圖形軌跡。

下圖顯示了可以怎樣使用這些顏色︰

顯示不同的顏色文本

這個程序作為colors.vee 保存在manual范例目錄下。打開這個范例，查看這些顏色在屏幕上的顯示效果。

不管使用什么樣的背景顏色，一定要保証顯示的文本顏色与亮度水平大体相比，對比度好。對象背景和文本的這些指導準則也适用于面板背景和放在上面的對象。

一般來說，藍色陰影最适合作為背景。如果使用藍色作為文本顏色，那么可以使用綠藍色 (如呈綠色的藍色)。


使用字体

字体基礎知識

与在紙面上閱讀文字相比，用戶在計算机屏幕上閱讀文字要增加大約25%的時間，但理解大体相同。因此，在面板中放大量的文字會降低用戶的閱讀速度。

字体分為成比例的字体和不成比例的字体。成比例的字体對不同的字母使用不同的寬度；例如，打印字母w使用的空間要比打印字母i使用的空間大。成比例的字体讀起來一般要更容易。部分常見的成比例字体有︰ Lucida*， Arial* 和 Time New Roman*。

不成比例的字体對所有字母使用相同的寬度，在需要垂直對齊表格中的數据時使用。部分常見的不成比例的字体有（也叫做單空間字体）︰Courier 和Courier New。

VEE中提供的字体取決于系統中安裝的字体。

字號指明字符的高度，而不是寬度。所以，如果您想改變字体類型，但保持相同的字號，您可能必須調整對象大小，以适應文字寬度。

通常來說，一般閱讀使用12號字。您可能想使用更大的字体或粗体，以起到強調作用。雖然字號在紙面上是一個絕對值（如英寸和厘米），但計算机屏幕上的字號則基于邏輯字號，其會根据監視器的分辨率變化。所以不管使用什么字號的字体，都必需保証其在屏幕上是可讀的。下圖顯示了不同的字號。

字號

部分研究表明，用戶在閱讀襯線字体（在頂部有細線和/或在底部有字母主筆划的字体）的速度要比閱讀沒有襯線的字体快。必需确定這是否會影響用戶。下圖顯示了襯線字体和沒有襯線的字体。

襯線字体和沒有襯線的字体

如果文字左對齊，并有一定的右邊距，那么閱讀起來會更快。

每個程序使用的字体類型應不超過三個，字体顏色應不超過四种。統一使用字体，幫助用戶了解哪些文字更重要。一般來說，較大的文字最重要。

統一使用字体類型和字號，可以在屏幕上更簡便地對準和平衡文字。

藍色一般不适合用于文字?#30524;睛對這种顏色最不敏感。

驗証程序用戶對您選擇的字体的反應情況，保証有效性。

* Arial 和 Times New Roman字体是Monotype Corporation 的產品。
Lucida 字体是Bigelow & Holmes公司的產品。


Layout Tips

布局技巧

即使在面板的内容变化时，仍应保持统一的布局。例如，如果在屏幕底部有一个消息区，在侧面有一个显示区，在顶部有一个状态区，那么应保持这种布局；在程序运行时不要来回移动各个单元。

把相关信息划分在一组中。

通过可用的屏幕区平衡信息。

记住留出白空间(没有对象的空白区)，以更简便地使用面板。如果屏幕已满，许多对象与其它对象紧挨着、中间没有空间，那么您的用户很难找到所需的信息。

一直把导航控件放在每个面板上的同一位置。

在相关组中对准和确定对象大小，以便其大小相同。水平或垂直对准对象，以便没有粗糙的边缘，破坏对象识别和扫描。对象之间的间距要保持不变。

使用对话框，表示不频繁的或使用少的功能。用户可以应答及使用这些信息，减少Main Panel上的混乱。


提請注意對象

使用醒目的屬性，提請注意屏幕上的不同區域︰

使用對象大小。人眼自然會注意較大的對象上，同時這還會暗示重要性。如果使用大小來區分信息，那么最多可以使用五种不同的大小。

使用邊框特點區分多個對象。在突出表面使用較淺的顏色，在凹進表面使用較深的顏色。如果想查看不同的邊框樣式，請參閱邊框樣式圖。

使用不同的顏色指明不同的重要程度。在一個面板上最多可以使用四种或五种不同的顏色。在整個用戶界面中最多可以使用七种不同的顏色。如果決定使用更多的顏色，那么應提供圖例，解釋每种顏色的用途或意義。

對精細信息或小型區域，黑色、白色和灰色可讀性最好。

較亮的顏色可以比較暗的顏色更引人注意(如使用藍色、黃色或紅色，而不是藍灰色、金黃色或淺紅色)。用戶可以區分最多五种不同的亮度等級。

較亮的顏色和較暖的顏色(如紅色)似乎更容易引起用戶注意。較暗的顏色和較冷的顏色 (如藍色)則較差。

使用字號。使用的字號至少要相差四號，才能指明相對重要性。

使用字体，如粗体和斜体。斜体文字讀起來較慢，因此在要求快速閱讀的文字不要使用斜体。

閃亮/閃爍可以有效引起注意。在VEE中，吸引注意的某些方式有︰彈出一個面板，改變Picture對象中的位圖，改變Color Alarm對象中的顏色和文字，或使用Dialog Box對象。閃亮或閃爍的項目一次不能超過四個。

吸引注意力的另一种方式是使用聲音。使用Beep對象 (如果硬件支持)。

在整個程序中應統一使用每种屬性。


關于內置對話框對象

在創建自定義對話框前，考慮內置Dialog Box對象 (位于Data菜洙下)是否能滿足自己的需求。它們使用簡便，有許多有用的功能。

Dialog Box對象和Pop-Up Panels (用來構建自定義對話框)之間的區別是︰

Dialog Box對象不必添加到面板中，它們會自動彈出。下圖顯示了一個Message Box對象及其生成的面板。

消息框

Dialog Box對象每個對象只執行一個操作 - 它們要求具体的用戶輸入。如果您需要立即對用戶詢問多個問題或顯示數据，那么可以創建一個自定義對話框。

Dialog Box對象是程式對象。換句話說，在它們彈出時，程序其余部分會停止。這不同于Pop-Up Panel；在Pop-Up Panel彈出時，程序其余部分會繼續執行。

Dialog Box對象不應用在鍵盤驅動的面板上。在執行完成后，沒有任何其它對象得到焦點，因此不能通過鍵盤導航到其它對象。

Dialog Box對象已經有多种內置功能。您不必編寫一個程序，獲得檢查限制或超時等功能。下表列出了Dialog Box對象的內置功能︰

對話框對象功能

_________________________________________________________________________________________________

對話框對象

檢查限制

掩蓋口令

超時

自定義按鈕文本

格式化選項

_________________________________________________________________________________________________

Text Input 獲得文本輸入 | X | X | X | X | X 字段寬度
Int32 Input 獲得整數輸入 | X | X | X | X | X 字段寬度
Real64 Input 獲得實數輸入 | X | X | X | X | X 字段寬度
Message Box 顯示信息 | n.a. | n.a. | X | X | X 多行消息
List Box 允許從列表中選擇一個或多個項目 | n.a. | n.a. | X | X | X 列表高度
File Name Selection 允許選擇文件名 | X[1] | n.a. | n.a. | n.a. | n.a.

_________________________________________________________________________________________________

1 如果覆蓋現有文件，那么會提供警報。不允許打開不存在的文件。

Dialog Box對象有額外的顏色和字体屬性，因此可以簡便地控制彈出面板的外觀。下圖顯示了這些屬性。

Colors和Fonts上的消息框屬性

可以在沒有鼠標的情況下簡便地使用Dialog Box對象。按Enter鍵，按默認的按鈕；或按Esc鍵，按最右面的按鈕(通常是Cancel)。使用Tab和Shift+Tab，把焦點移動到輸入字段或按鈕上。按Space，按一個有焦點的按鈕。如需与焦點有關的更多信息，請參閱使面板鍵盤可以導航。

如需更詳細的信息，請參閱Dialog Box和在超時輸出一個值。


在超時時輸出一個值

在Dialog Box 對象上設置一個Timeout （通過Properties對話框），且過了超時周期時，Timeout 數据輸出端會輸出值1。在過了超時周期時，您通常希望輸出一個值（如Default值）；為此，遵循下述步驟，其中使用Text Input 對話框︰

1. 設置Timeout。

從對象菜單中選擇Properties。選擇Timeout Enabled 复選框。設置Pop-Up Duration。點擊OK。

2. 添加Default Value數据輸入端。

3. 選擇Data [image] Constant [image] Text，輸入默認值。（根据需求選擇相應的Data [image] Constant對象，輸入默認值。）

4. 在Text對象中輸入默認值。

5. 把Text數据輸出端連接到Default Value數据輸入端。

6. 選擇Flow [image] Gate。

7. 把Text 數据輸出端連接到Gate 數据輸入端。

8. 把Timeout數据輸出端連接到Gate序列輸入端。在過了超時周期后，默認值通過Gate 輸出。

下圖顯示了在超時發生時使用JCT 對象輸出輸入值或默認值的程序。這個程序作為 timeout.vee 保存在manual范例目錄下。

在超時時輸出默認值

Copyright (c) 1991-2007 Agilent Technologies, Inc.


構建自定義對話框

如果內置Dialog Box對象沒有滿足需求，可以創建一個自定義對話框。下面的內容解釋了怎樣從Pop-Up Panels中創建自定義對話框。一旦已經創建了對話框，可以根据需要添加控制、顯示或其它對象。如果選擇不根据下面的步驟構建程序，那么打開包含對話框程序的文件(通過Help [image] Open Example)，修改文件，使其适應自己的需求。

為創建Pop-Up Panel，遵守構建UserObject面板中的步驟。可以從UserObject怯煲erFunction中創建Pop-Up Panel。 除另行指明外，這一組內容的說明假設使汁煲erObject。


構建基本對話框

1. 一旦已經構建了彈出面板，根据保持顯示彈出面板中的步驟操作兩次。第一次添加一個OK對象，以便用戶能夠确認選擇，第二次把OK對象添加為Cancel按鈕，以便用戶能夠取消選擇。

2. 把Enter鍵指配給OK按鈕，把Esc鍵指配給Cancel按鈕。

為第一個OK對象選擇Properties，把AssignToEnterButton屬性變成True。

從OK對象的對象菜單中選擇Properties。把Title變成Cancel，把Assign to [Esc]鍵复選框變成True。

現在，OK按鈕被指配給Enter鍵 (在默認情況下)，Cancel按鈕被指配給Esc鍵。

3. 選擇Flow [image] Exit UserObject，把它放在UserObject的Detail View中。

4. 把Cancel按鈕的數据輸出端連接到Exit UserObject的序列輸入端。

5. 選擇Data [image] Constant [image] Text。(這可以是獲得用戶輸入的任何對象。)

6. 把OK按鈕的數据輸出端連接到Text對象的序列輸入端。

7. 在UserObject上創建一個數据輸出端。

8. 把Text對象的數据輸出端連接到UserObject的數据輸出端。

9. 選擇Flow [image] Exit UserObject。

10. 把Text對象的序列輸出端連接到Exit UserObject的序列輸入端。

現在，如果按OK (或Enter)，對話框會輸出值。如果按Cancel (或Esc)，不輸出值。

下圖顯示了使用這些步驟創建的程序。

基本自定義對話框

這個程序作為dialog1.vee 保存在manual范例目錄下。

本范例詳情︰

OK按鈕必須連接到Text對象上，如果沒有連接，Text對象會在UserObject開始運行時運行。因此，默認數据會被傳播到UserObject輸出數据端。OK按鈕防止Text對象操作，直到用戶在輸入Text對象后按OK。

使用OK和Cancel的線程必須連接到Exit UserObject對象上。如果沒有連接，用戶必須按OK和Cancel，才能從UserObject中輸出數据，因為只有在其內部的所有對象操作完時，UserObject才會傳播輸出數据。

為查看演示的執行原理，遵守下述步驟︰

1. 選擇Show Execution Flow工具欄按鈕。

2. 在Detail View中顯示UserObject的編輯窗口。

3. 運行程序。


設置超時

如果想讓對話框在一段時間后消失，可以設置超時。采用下述步驟，在構建基本對話框創建的自定義對話框中添加超時。

1. 選擇Flow [image] Delay，把它放在UserObject的Detail View中。

2. 選擇Flow [image] Exit UserObject。

3. 把Delay對象的序列輸出端連接到Exit UserObject的序列輸入端。

4. 在Delay編輯字段中指定彈出時長(單位為秒)。在超過這個時間時，彈出面板消失。

5. 在UserObject中添加第二個數据輸出端。

6. 把Delay對象的數据輸出端連接到第二個數据輸出端，使其能夠用于Main上下文中。

在超過超時周期時，這個端上輸出一個空容器。

下圖顯示了使用這些步驟創建的程序。

帶有超時設置的對話框

這個程序作為dialog2.vee 保存在manual范例目錄下。

在dialog2.vee超過超時周期時，UserObject沒有輸出任何值。您通常希望在其超時時UserObject會輸出默認值，如下圖所示。

在超過超時周期時，默認值是輸出

這個程序作為dialog3.vee 保存在manual范例目錄下。


檢查有效數据

下圖顯示了在輸出取值前針對某個限制檢查輸入值的程序。如果取值不滿足限制，那么會彈出另一個對話框，通知用戶。

檢查限制的對話框

這一程序作為dialog4.vee 保存在manual范例目錄下。

這一范例的重要事項如下︰

Until Break對象允許在Error Pop-Up Panel執行后重新輸入一個數字，或在Enter a number...對象已經執行一次后重新輸入一個數字。

Error Pop-Up Panel是一個UserObject彈出面板，顯示一條信息，并對Enter或Esc作出響應。它在5秒后超時。


構建自我修改面板

創建一個自我修改面板，以根据以前的用戶選項在面板中為用戶提供多种選擇。

下圖顯示了一個在Drop-Down List中更改選項的程序，它基于在Radio Buttons對象中所作的選擇。彈出面板顯示在圖片的右上方。

自我修改面板

這個程序作為dialog5.vee保存在manual范例目錄中。

這個范例的重要方面包括︰

Select a Product（Radio Buttons）對象在Properties窗口內設置Wait for Input。

Phantom Tests、 Beetle Tests和 Viper Tests是Text型數組，它包含一個測試列表，通過Enum Values控制輸入端輸入Select the test to run和Drop-Down List 對象。

Select the test to run在Properties窗口設置Wait for Input，抑制向Gate發送數据，直到選擇乘積后選擇一個測試編號。


構建狀態面板

為在測試運行時顯示狀態面板，并使用當前測試數据更新面板，可以使汁煲erFunction Panel。使用showPanel對象顯示面板，使用Call對象運行面板。

在使用showPanel時，不能使用Show Panel On Execute (在UserFunction Properties窗口中)。下表概括了showPanel和Show Panel On Execute之間執行方式的區別。

showPanel和Show Panel On Execute之間的區別

_________________________________________________________________________________________________

showPanel

Show Panel On Execute

_____________________________________________________________________________________

面板一直保持到執行hidePanel對象或程序停止運行。 | 面板一直保持到UserFunction執行結束或程序停止運行。
使用Call執行UserFunction，使用showPanel顯示面板。因此，在能夠看到面板的同時，可以多次執行UserFunction。 | 使用Call執行UserFunction及顯示面板。因此，每次調汁煲erFunction時，會自動顯示面板；在UserFunction執行結束后，會自動隱藏面板。
在運行時可以以程序化方式設置顯示的位置。 | 在開發時手動設置顯示的位置。
顯示的面板大小可能与Panel View大小不同。 | 顯示的面板大小与Panel View大小相同。
在看得到時用戶不能移動面板。 | 在看得到時用戶能夠移動面板。

_________________________________________________________________________________________________

另請參閱:

實驗11-5: 創建狀態面板


構建狀態面板

如構建UserFunction面板中所述，通過構建UserFunction Panel，構建一個狀態面板。在打開UserFunction的編輯窗口時，确保在Properties窗口中沒有設置ShowPanelOnExecute复選框。

另請參閱

實驗11-5: 創建狀態面板


顯示狀態面板

使用showPanel對象顯示狀態面板。

1. 選擇Device [image] Function & Object Browser。在Function & Object Browser中，選擇Type: Built-in Functions，然后選擇Member: showPanel。

出現showPanel對象及一個公式，其中包含五個參數及相關的UserFunction名稱、位置和大小端。可以把包含數据的對象連接到輸入端，也可以直接編輯參數，刪除輸入。

2. 在引號之間輸入UserFunction名稱，替換UFname。

3. 為指定位置，輸入x和y坐標，在UserFunction Panel左上角的VEE窗口中指定位置。VEE窗口左上角的坐標是0, 0。showPanel對象上的編輯字段類似于︰ showPanel(MyFunc,300,300)。

如果沒有指定位置，那么面板會顯示在屏幕中心。

4. 為指定顯示的面板大小，必須已經指定了位置。用像素指定面板的width和height。

如果指定的尺寸比現有的UserFunction Panel View小，那么會顯示面板的左上部分。如果指定的尺寸比現有的Panel View大，那么顯示的面板會在右下方增加額外的區域。

如果有背景圖片，它會以指定的大小顯示，并根据顯示模式進行顯示。例如，如果顯示模式是Scaled，那么背景圖像將縮放到showPanel對象中指定的大小。

在指定位置和大小時，showPanel對象上的編輯字段類似于︰showPanel(MyFunc,300,300,100,100)。

每個UserFunction只能顯示一個面板。如果執行第二個showPanel，那么將隱藏第一個面板，并根据第二個 showPanel調用指定的要求顯示面板。

另請參閱

實驗11-5: 創建狀態面板


隱藏狀態面板

在程序執行完畢時，將不再顯示使用showPanel顯示的所有面板。為在程序運行時隱藏面板，采取下述步驟︰

1. 選擇Device [image] Function & Object Browser。在Function & Object Browser中選擇Type: Built-in Functions，然后選擇Member: hidePanel。

2. 在引號中輸入UserFunction名稱，代替UFname。在這個對象運行時，會隱藏命名的面板。


更新狀態面板

showPanel對象只顯示面板，不執行UserFunction。使用Call 對象（位于Device [image] Call中），把新數据發送到狀態面板，更新顯示畫面。還可以從任何表達式中調用UserFunction，如在Formula或Sequencer對象中。

還可以在任何表達式中使用showPanel，如在Formula 或Sequencer對象中。例如，在Sequencer的第一個處理中作為表達式使用showPanel 。在每項測試運行時，會更新狀態面板上的數据。在Sequencer的最后處理中使用hidePanel。

在通過Call 對象發送新數据后，不需要再次調用showPanel；顯示的面板內容會自動更新。


狀態面板范例

下圖顯示了更新信息的一個簡單的狀態面板。在List Box對象中進行選擇后，面板上顯示与該測試有關的數据。

狀態面板

下圖是顯示狀態面板的程序。這個程序作為status.vee保存在manual范例目錄下。

狀態面板范例程序

對這個范例，應注意以下几個重要方面︰

Record常數設置測試結果的記錄。這可以是來自測試函數的對數輸出。

Until Break對象允許多次選擇測試信息。

Get Field對象把List Box复位成最后一次迭代中選擇的值。

在List Box上按Done按鈕時，隱藏狀態面板，Until Break循環完成。

UserFunction包含一個Panel View，在每次調汁煲erFunction時，會更新這個Panel View。

apps范例目錄下的mfgtest.vee程序演示了結合使用狀態面板与Sequencer的更加完整的程序。

另請參閱

實驗11-5: 創建狀態面板


圖片動畫

可以使用showPanel和hidePanel執行動畫。采用下述步驟，創建簡單的動畫程序︰

1. 在Main Window的對象菜單上使用Create Panel，在Main Window中創建一個Panel View。

2. 在Main Window Properties中，把Execution Window Title變成A Simple Animation，一定要啟用ShowPanelonExecute。

從Appearance Properties中，為Main Panel選擇一個背景顏色。

這個顏色很重要，因為您將對動畫文件的背景使用相同的顏色。

3. 為希望制作動畫的圖像創建一個圖形文件。

4. 使用Device [image] UserFunction打開UserFunction編輯窗口。

5. 選擇Display [image] Picture，把對象放在UserFunction窗口中。通過Properties窗口指定圖形文件。

6. 在UserFunction Panel中添加Picture對象，然后從Picture對象菜單中選擇Properties。

7. 關閉Picture邊框和標題欄，把Picture放在UserFunction Panel的左上角。

8. 從UserFunction對象菜單中，選擇Properties。

9. 把Title變成picture。從Pop-Up Panel類中關閉UserFunction Panel的標題欄和邊框。

10. 把Panel View 背景顏色變成Main Panel的背景顏色。

11. 縮小UserFunction Panel尺寸。

12. 選擇Device [image] Function & Object Browser，然后選擇內置函數showPanel，把它放在Main Detail View中。

13. 在引號中輸入UserFunction名稱，用picture代替Ufname。

14. 刪除除位置參數x和y的輸入端。

15. 在編輯字段中使用端名稱，如showPanel(picture,x,y)。

16. 選擇Flow [image] Repeat [image] For Range。

17. 在For Range對象中，填寫x和y坐標的范圍，如From: -20, Thru: 500,和Step: 10。

18. 從Flow菜單中添加Gate和Delay對象。把Delay值設為.05。

19. 把For Range輸出連接到Gate輸入上，把Gate輸出連接到showPanel X和Y輸入上。

20. 把Gate序列輸出連接到Delay序列輸入上。然后把Delay輸出連接到showPanel序列輸入上。

21. 按Panel按鈕，查看Panel View。

22. 運行程序，查看圖片怎樣在Panel View中移動。

下圖顯示了使用這些步驟創建的程序，包括UserFunction Panel。

簡單的動畫

這個程序作為animate.vee 保存在Manual范例目錄下。

賽跑: 簡單的動畫

下圖顯示了在VEE中使用簡單動畫的部分Panel View。

這個程序作為Race.vee保存在Games范例目錄下。Games目錄下的Wheel.vee和Slots.vee 程序演示了更加复雜的動畫。

使用多個圖像

通過在Picture對象中添加一個數据輸入端，在運行時在Picture 中以程序化方式輸入文件名稱，可以使用多個圖像創建動畫。在Picture顯示模式是Scaled時，顯示圖像所需的時間要比選擇Centered or Actual時的時間長。


構建非英語文本的面板

為構建非英語文本的面板，您必需設置環境，顯示非英語字符。VEE有一些項目使用英語，不能在面板上改變這些項目︰

某些對象有英語文本，如Data [image] Selection Control [image] Pop-Up List。在彈出列表時，彈出列表的標題是Make Selection。按鈕是OK和Cancel。

与相關對話框一樣，Panel View中的菜單選項使用英語，如Open, Save和Save As。

對象菜單選項使用英語。

在把環境設置成顯示非英語字符后，可以在VEE中能夠輸入英語文本的任何地方輸入非英語文本。例如，Labels, Constant對象，對象上的標題，Confirm (OK)按鈕和Dialog Box對象(及上面的按鈕)。


防止程序被修改

在把程序提交給別人運行時，您一般不想讓別人修改程序。您只希望他們觀察程序執行，運行任何控件。有兩种基本方式防止意外修改程序︰

File [image] Create RunTime Version - 在使用這個命令時，將把安全版本的當前程序保存到文件filename.vxe中，而不會給當前程序帶來任何負面影響。用戶可以在VEE RunTim環境中直接運行安全版本。必須創建一個Main Panel View，以便在程序執行時用戶能夠看到一個面板。這個選項可以防止任何人存取您的源程序。

警告
沒有任何途徑解除有安全保護(.vxe)的程序；一定要保存沒有安全保護版本的源程序 (.vee)。

veerun filename - 這個命令主要用來運行安全VEE程序。但是，可以使用它運行沒有安全保護的程序。在VEE啟動時，它加載filename中的程序，在VEE RunTime環境中運行程序。一旦程序完成，運行時窗口會關閉。必須創建一個Main Panel View，以便在程序執行時用戶能夠看到一個面板。如果您不想維護兩個文件(一個源文件和一個安全文件)，那么可以使用這個選項。

備注

用來運行程序的VEE RunTime版本必須相同于或新于用來開發程序的VEE版本。


防止改變程序

下面列出了在準備提交程序時使用的部分技巧︰

為防止用戶編輯添加到Panel View的Note Pad對象中的文本，關閉Note Pad的編輯功能。在包含Note Pad對象的Panel View中，編輯Note Pad Propertie；在Appearance類別中，把EditEnabled變成False。

為防止用戶改變對象上的最大值和最小值，如Slider, Meter, Thermometer, Fill Bar和Tank對象，添加MaxValue 和 MinValue控制端。

為防止用戶移動UserObject怯煲erFunction彈出面板，使用這些面板的對象菜單中的Lock Panel Position屬性。此外，還可以使汁煲erFunction Panel，以程序化方式使用showPanel對象顯示面板。showPanel詳情請參閱構建狀態面板。

為防止用戶改變VEE圖形Display對象上的標度，改變Layout。在包含對象的Panel View中，從對象的對象菜單中選擇Properties；在Layout類別中，關閉Enable Trace/Scale Editing。

為防止使用目的系統上的任何VEE默認顏色和字本，与所有默認顏色和字体一起保存程序。

1. 選擇File [image] Save As?/font>。

2. 選擇Save colors and fonts with program复選框。

3. 點擊Save。程序中使用的所有顏色和字体現在被明确保存在程序中。


保護程序安全

警告︰沒有任何方式解除有安全保護的(.vxe)程序，一定要保留源程序 (.vee)

如果決定在分發前創建有安全保護的程序版本，請采取下述步驟︰

1. 選擇File [image] Create RunTime Version。

2. 在Create RunTime Version對話框中，輸入程序名稱。不必輸入文件擴展名，因為會自動添加.vxe。

3. 選擇Save colors and fonts with program，在Default Preferences對話框中選擇的程序文件中保存所有默認顏色和字体。這可以保証不管誰運行您的程序，都會獲得您的所有默認顏色和字体。如果沒有選擇這個選項，那么只有在程序中明确設置的顏色和字体保存在程序文件中。使用您的程序的其它人可以保留自己的默認顏色和字体。如果加載現有程序，那么將根据程序以前保存的方式設置這個選項。

在默認狀態下啟用Save I/O configuration with program。如果不想要嵌入式I/O配置，可以反選這個選項。VEE允許在程序本身中嵌入I/O配置信息。如需与保護I/O配置有關的更多信息，請參閱Instrument Manager。

這一操作對源程序沒有負面影響。有安全保護的程序保存到不同的文件名中。例如，沒有安全保護的程序prog.vee會保存為有安全保護的程序prog.vxe。

可以在VEE RunTime中運行有安全保護的程序，VEE RunTime是僅運行版本的VEE。可以在數量不限的計算机上分發程序和VEE RunTime。

備注

如果用戶必須在程序執行時觀察程序或与程序交互，那么必須以Main Panel View或Pop-Up Panel的形式創建Panel View。如果希望程序在沒有用戶干預的情況下運行，那么不需要Panel Views。但是，某類狀態指示很有裨益。


重新保護程序安全

在把有安全保護的程序分發給用戶，每次在改變原始程序時，必須再次把它保存為具有安全保護的程序，并重新分發程序。參閱保護程序安全。


保護UserObject安全

在把UserObject分發給別人使用時，您可能希望保護UserObject安全，防止別人修改它。他們只能使用圖標視圖怯煲erObject Panel View。如果用戶必須与UserObject交互，一定要創建一個Panel View。

1. 打開UserObject的Edit Window。從對象菜單中，選擇Save Secured Version。

2. 在Save Secured Version對話框中，輸入UserObject文件名，它會自動添加.vee擴展名。

如果已經保存包含UserObject的程序，或者已經通過File [image] Save Objects保存UserObject，您可能不想再次保存UserObject。如果您仍想保存有安全保護的版本，可以使用不同的文件名。

3. 在別人想使用有安全保護的UserObject時，他們需要選擇File [image] Merge，然后選擇有安全保護折UserObject的文件名。他們可以在程序中象任何其它對象一樣，使用有安全保護的UserObject。


包括所有所需文件

創建發布包

在把程序分發到其它系統時，應該在VEE程序中嵌入儀器配置。在大多數情況下，嵌入式I/O配置是最佳選擇。如果程序中沒有嵌入I/O配置，那么可以在目標系統上編輯配置；參閱 配置VEE Pro RunTime 。

在程序(如果使用)中必須包括的文件有︰

數据文件

用于編寫的儀器驅程的*.cid文件

用于目的系統上沒有安裝的儀器驅程的*.cid文件

VXIplug&play 儀器驅程

IVI-COM 驅程

已經創建的圖形文件

調用的DLL或匯編的函數

此外，必須包括.NET Framework再分發包 (dotnetfx.exe)，必須在安裝運行時程序前安裝這個包。如果沒有安裝.NET，那么不能安裝VEE Pro運行時產品。

一旦擁有要求的所有文件，可以把它們复制到其它系統中。如果程序控制儀器，那么還必須安裝安捷倫I/O庫套件第14版或更高版本。

把所有文件放在分發媒体上

可以創建包含与程序一起使用的VEE Pro RunTime的分發媒体。

1. 把所有程序和配套文件复制到一張磁盤上。

2. 把VEE Pro RunTime設置文件從VEE光盤复制到可擦寫光盤或Zip盤。這些文件位于VEE光盤的子目錄runtime下。

3. 把安捷倫I/O庫套件(第14版或更高版本)复制到另一張可擦寫光盤(如果程序控制儀器)。

4. 編制產品文檔。

您負責向最終用戶或客戶解釋怎樣從分發盤中安裝所有文件。對VEE Pro RunTime，runtime子目錄包含安裝產品的setup.exe程序及安裝.NET Framework的dotnetfx.exe文件。

如需与VEE Pro RunTime有關的更多信息，請參閱 關于Agilent VEE Pro RunTime產品 。


創建應用程序圖標

您的用戶可以雙擊程序圖標，方便地運行VEE程序。為設置圖標，在目的系統上采取下述步驟。如需詳細了解程序信息，請參閱 MS Windows文檔和聯机幫助。

可以把程序快捷方式放在桌面上或放在工具欄的Start菜單下。具有安全保護的程序或沒有安全保護的程序步驟類似。但是，在運行沒有安全保護的程序時，一定要在快捷方式中使用veerun命令，以防止存取源代碼。

桌面快捷方式

1. 在Windows Explorer中，在程序文件名稱上點擊鼠標右鍵，然后選擇Create Shortcut。列表中出現文件名Shortcut to filename。

2. 把快捷方式文件名稱拖到桌面上，出現快捷方式圖標。

3. 對沒有安全保護的程序(.vee)，改變快捷方式命令，在Target 命令中包括veerun。具有安全保護的程序(.vxe)自動使用veerun；如果想使用任何veerun選項，您只需改變命令。

a. 在快捷方式圖標上點擊鼠標右鍵，然后選擇Properties，出現Shortcut Properties對話框。

b. 在Shortcut欄，改變Target，使其類似于︰

"C:\Program Files\Agilent\VEE Pro RunTime 8.0\veerun.exe" MyApp.vee

一定要包括引號及所需的任何veerun選項。如需命令行選項列表，參閱使用命令行選項啟動Agilent VEE。

如果Start in路徑正确，在Target中不需指定程序路徑。

c. 點擊OK。

4. 為改變快捷方式圖標的標記，點擊圖標，然后點擊標記。輸入新的標記。雙擊快捷方式，運行程序。

Start菜單快捷方式

1. 在Windows任務欄上，點擊Start [image] Settings [image] Taskbar。

2. 在Taskbar Properties對話框中，在Start Menu Programs欄，點擊Add，出現Create Shortcut對話框。

3. 輸入命令，運行程序。輸入命令時應使用引號。

對沒有安全保護的程序 (.vee)，包括veerun及程序的文件名和各自路徑。具有安全保護的程序(.vxe)自動使用veerun，因此命令中只需包括程序文件名和路徑。沒有安全保護的程序的命令應類似于︰

"C:\Program Files\Agilent\VEE Pro RunTime 8.0\veerun.exe" "C:\Document and Settings\[username]\My Documents\VEE Programs\MyApp.vee"

包括所需的任何veerun選項。對具有安全保護的程序，需要在命令中包括veerun，以使用選項。如需命令行選項列表，請參閱使用命令行選項啟動Agilent VEE。

點擊Next，出現Select Program Folder對話框。

4. 選擇放置快捷方式的文件夾。可以選擇已有文件夾，也可以創建新文件夾。點擊Next，出現Select a Title for the Program對話框。

5. 為程序快捷方式輸入一個可以使用的名稱。這個名稱將出現Start菜單上，點擊Finish。

6. 點擊OK。選擇Start [image] Programs，使用快捷方式。

另請參閱

使用命令行選項啟動Agilent VEE


范例︰Sequencer事務

Sequencer對象在其open view中顯示由序列事務組成的列表。每項事務与其它類型的事務類似。下面的程序說明了Sequencer怎樣使用事務執行表達式和調用函數。

這一程序在后台中有兩個UserFunction沒有顯示︰myRand1，它會在輸入值中加一個從0到1的隨机數字；myRand2，它會在輸入中加一個從0到100的隨机數字。在展開事務時，您會看到這兩個UserFunction調用。如需与創建和使汁煲erFunction有關的進一步信息，參閱Help [image] Contents和Index [image] How Do I... Create Custom Objects and Functions [image] Creating and Using UserFunctions。

在點擊一項事務時，對話框會"展開"事務，以便能夠查看和編輯事務。下面的對話框顯示了第一項事務test1︰

序列事務既可是TEST事務，也可以是EXEC事務。在這一事務中，類型是TEST:，名稱字段是test1，標稱規范是1.25，使用RANGE:規范，范圍是1 <= ... <= 1.5。

只有1到1.5的值才會通過測試。表達式myRand1(A)使用Sequencer的A輸入端上的值作為其輸入參數調汁煲erFunction。

該事務啟用了登錄，因此會自動創建一個名為Test1的局部變量，包含這一測試結果的日志記錄。這個日志記錄還作為Log輸出端的一部分使用。IF PASS條件和IF FAIL條件都設置成THEN CONTINUE。也就是說，不管是否通過測試，在test1完成時，都將執行下一項事務test2。

DESCRIPTION字段是這一測試的注釋區域。

備注

除"存檔"目的外，SPEC NOMINAL值不用于RANGE或LIMIT測試。但是，如果使用基于TOLERANCE或%TOLERANCE值的測試，那么會計算相對于SPEC NOMINAL值的容限。

第二項事務test2也是一項TEST事務。

這第二項測試与第一項測試類似。它使用表達式myRand2(A)調汁煲erFunction myRand2。然后測試得到的值，看它是否位于1 - 51的范圍內，標稱規范為26。不管是否通過測試，Sequencer也會繼續執行下一項事務。

第三項事務是一項EXEC事務︰

与TEST事務不同，EXEC事務不會把函數結果与規范或范圍執行比較。EXEC事務用來執行不要求通過/未通過測試的操作。

例如，EXEC事務可以調用一個例程，在執行TEST事務前設置外部配置，也可以在一系列測試后執行關机程序。(EXEC事務是指定"always pass"測試條件的快捷方式。)

在本例中，名為finish的事務把B的值返回Sequencer對象的Return輸出端。由于沒有執行任何測試，因此EXEC事務沒有發生登錄。

可以使用DESCRIPTION字段，簡單地描述任何事務。

在運行程序時，三項事務按下述順序執行。

登錄的測試結果在Log輸出端上輸出并顯示。結果作為Record數据類型(記錄的記錄)登錄。在這种情況下，test1的值為1.396，通過測試；test2的值為85.05，沒有通過測試。第三項事務在B輸入上返回值，即字符串Done!。

啟用登錄的每項事務創建一條名為事務名稱的日志記錄。在本例中，為前兩項測試啟用了登錄，因此名為Test1和Test2的變量包含著這些事務的日志記錄。

日志記錄中包含的字段在Properties對話框中定義。為進入登錄配置，點擊Sequencer對象菜單中的Properties，然后點擊Logging一欄。在默認情況下，日志記錄包含著Name, Result和Pass字段。

Test1和Test2局部變量名稱可以用于Sequencer內部的任何表達式中，訪問當前或以前執行的事務的結果。例如，Test3可能已經使用Test1.Result作為參數調用一個函數，以傳送第一項測試的結果。也可以使用Test2.Pass作為表達式，如果Test2通過測試，那么其解為1，如果Test2未通過測試，那么其解為0。

還有一個局部變量thisTest，用來訪問登錄記錄。thisTest的值總是与當前執行的事務的登錄記錄相同。您可以編寫事務表達式，然后用于許多事務中，而不必包括每項事務的名稱。

Sequencer上的Log輸出端生成的數据結構是記錄的記錄，如下圖所示。

Log輸出端生成的記錄對啟用登錄的每項事務包含一個字段，在本例中是Test1和Test2。每個字段是指定事務的日志記錄，其中包含字段Name, Result和Pass。

這條記錄的記錄在Log輸出端上提供，可以通過使用記錄"句點"語法用于其它對象。例如，在這种情況下，表達式Log.Test1.Result會返回值1.396，如上圖所示。同樣，Log.Test1.Name會返回test1，Log.Test1.Pass會返回1。

Log輸出端上登錄的數据總是來自每項事務最后一次執行提供的數据。如果想登錄每項事務每次執行的結果，在Sequencer Properties 對話框的Logging一欄上，把Logging Mode設置成Log Each Transaction To:。這個選項會在每項事務結束時調用指定函數(或表達式)。

如果想在發生時把測試結果登錄到文件或打印机上，而不是一直等到Sequencer結束，那么也可以使用這個選項。局部變量thisTest可以作為登錄函數的參數使用，傳送剛剛結束的事務的日志記錄。


范例︰登錄測試結果

下圖顯示了登錄測試結果的范例，其中迭代器導致Sequencer一次次地重复測試及登錄結果。

在本例中，For Count對象導致Sequencer執行其系列測試(前面的范例中的test1和test2)四次。例如，如果一條裝配線上正在測試4個"小器件"，那么每次執行Sequencer會測試一個小器件。

Collector采集Log輸出端中得到的序列記錄，顯示為一個記錄數組。可以使用To File對象，使用WRITE CONTAINER I/O事務把這個數組輸出到一個文件中，也可以使用DataSet。

可以把本例中的Collector輸出視為由記錄的記錄組成的數組，如下圖所示。

每個數組要素(Log[0], Log[1], 等等)代表著定序列器迭代一次，是記錄的記錄。登錄的輸出用于表達式分析。在本例中，Log[*].Test1.Result是來自數組的"核心范例"。事實上，Log[*].Test1.Result會返回由取值組成的數組(范例結果為1.396, 1.353, 1.319和1.016)。

備注

登錄的數組并不是一個三維數組，而是由記錄的記錄組成的數組。這一點非常重要，因為記錄的各個字段可能是不同的數据類型。Name字段可以是Text，而Result字段可以是Waveform，等等。此外，Test2.Result字段可以是Waveform，而Test1.Result字段則可以是Real值。

但是，各個字段在整個數組中的數据類型必須是統一的。例如，字段Test1.Result不能對Log[0]是Real值，對Log[1]是Waveform值。

下面的范例把上面的范例擴展到迭代Sequencer十次，并增加了部分登錄數据分析。Formula對象中的表達式log[*].test1.result返回一個由10個要素組成的Real數組，其中包含test1的結果。然后以min(x), max(x), mean(x)和sdev(x)對象方式統計分析這個數組。

本例保存在范例目錄下的文件manual44.vee Manual44.vee 中。


范例︰登錄測試結果

范例︰登錄到DataSet

可以使用DataSet存儲登錄的測試結果。在下面的程序中，Sequencer對象Log輸出端連接到To DataSet對象上。

在For Count對象完成時，它導致From DataSet對象檢索存儲的DataSet (myDataSet)。From DataSet配置成從myDataSet中檢索所有記錄，但會針對條件Rec.test1.pass AND Rec.test2.pass測試每條記錄。只有在該記錄的test1和test2都通過測試時，才會檢索某條記錄。

在檢索的記錄中(如有)，表達式Rec[*].test1.result會返回所有test1.result記錄字段，然后統計分析這些字段。(如果沒有記錄滿足Rec.test1.pass AND Rec.test2.pass，那么這個程序會發生錯誤。)

本例保存在范例目錄下的文件Manual45.vee 中。


范例︰分箱

下面的范例測量炭質電阻器的電阻值。

以前，炭質電阻器是使用相當不精确的工藝制造的，然后再進行測試、分揀和標記。那時選用的是標準電阻值(如220W, 270W和330W)，以10%的容限交迭，以便能夠使用每個電阻器。如果電阻器值超出220W的10%，那么它會標注為270W電阻器，依此類推。

下圖顯示了一個程序，其中Sequencer調用一個UserFunction，返回一個電阻值。然后Sequencer運行一系列測試，确定電阻器滿足哪個標稱電阻值及容限百分比。也就是說，定序器返回一個結果，确定把電阻器放在哪個箱子中。

使用Sequencer調汁煲erFunction的優勢之一是可以替換不同的UserFunctions。在本例中，我們使汁煲erFunction (simResist)，在開發過程中在預計范圍內返回一個隨机電阻值。可以替換另一個執行Instrument I/O、返回實際電阻值的UserFunction。

解決這個問題最簡單的方法是使用一系列擴展的序列事務，每個事務針對標稱值和容限測試電阻值。

在本例中，第一個序列事務 (test1)使用表達式simResist()調汁煲erFunction simResist。(這個UserFunction不要求輸入)。下面是第一個序列事務。

test1進行測試，查看simResist返回的電阻值是否位于標稱值330W的±2%范圍內。如果是，那么在Return輸出端會返回兩個要素的Real數組[330 2]，To String對象會把這個值轉換成字符串330 Ohm, 2%。如果未通過測試，那么Sequencer會進入下一個測試。

第二項事務test2的工作方式与test1類似，但它不是再次調用simResist，而是FUNCTION字段中包含表達式test1.result。這是第二項序列事務。

備注

啟用登錄的任何事務會使用与測試相同的名稱創建一個"local" Record變量。這條記錄包含為登錄記錄指定的字段。對事務 test1，表達式test1.result會返回test1中調用的函數返回的值。

在本例中使用表達式test1.result的原因有兩個。第一，通過在事務test2到test9中使用test1.result，我們可以保証每項事務都使用相同的函數結果，即使我們以后改變test1，調用一個不同的函數。

最重要的是，在本例中，每次在調汁煲erFunction時，會返回一個新的電阻值。我們想對后續標稱值和容限測試原始電阻值，而不是新值。因此，事務test2到test9都在FUNCTION字段中包括表達式test1.result。這些事務的工作方式与第一個事務類似，如果通過測試，那么會返回相應的數組([330 5], [330 10], [270 2], 等等) 。

如果沒有通過測試，前八項測試會繼續進行下一個測試。但是，如果所有測試都沒有通過，我們需要指示。因此，test9配置成IF FAIL THEN ERROR。Error輸出端導致執行題為Error Condition的字母數字畫面，顯示文本Out of Range。

盡管這种方法很簡單，但其效率并不是很高。您需要創建數量相當多的序列事務，測試多個電阻值，而且在每种情況下都有三個容限。下圖顯示了改進版本的"分箱"范例。

本例保存在范例目錄下的文件Manual46.vee 中。

這一程序的部分要點包括︰

• 這一程序使用兩個Sequencer對象。第一個對象(標為Test Bounds) "重用"第二個對象中的測試(標為Test Value & Tolerance)。

• 程序左上角中的Real64數組包含五個要素，每個要素代表著一個標準電阻值。但是，在本例中可以擴展取值列表。不管數組要素數量是多少，TotSize(x)函數都會返回該數字，以便For Count對象迭代正确的次數。Formula對象中的表達式R[i]負責進行索引。

• 在名為Test Bounds的Sequencer中，第一項事務(test1)使用表達式simResist()調汁煲erFunction simResist，如下圖所示。

返回并測試仿真的電阻測試值，查看是否至少為數組中最低值(150W)的90%。(序列事務中的任何取值字段都可能會包含一個表達式，如min(a)*.9。)

第二項事務 (test2)測試查看取值(test1.result)是否小于等于數組中最高值(330W)的110%。下圖顯示了這一事務。

如果這兩項測試都沒有通過，那么會發生錯誤。

• 如果确實發生錯誤，那么名為Error Condition的UserObject會使用一個Triadic表達式，确認是顯示Out of Range: LOW還是顯示Out of Range: HIGH。UserObject配置為Show Panel on Exec，如果發生任何一個錯誤條件，那么會“彈出”一個畫面顯示錯誤。這會在每運行程序几次發生一次，因為UserFunction simResist返回100–400范圍內的隨机值。(如果想繼續，按彈出對話框中的OK。)

• 第一個Sequencer中的事務 test1是唯一調汁煲erFunction simResist的事務。(test2包括表達式test1.result，而不是simResist) 這一點在本例中必不可少，因為我們想在一個電阻值上運行多項測試。否則，每次調汁煲erFunction時會返回一個新值。但還有一個原因。

由于UserFunction simResist只調用一次，因此可以用調用不同的UserFunction代替它。范例(manual46.vee)中包含第二個UserFunction，稱為measResist，它使用一個Panel Driver調用配置為進行電阻測量的HP 3478A數字電壓表。如果有一台HP 3478A儀表，那么通過GPIB連接儀表，把test1中的FORMULA字段變成表達式measResist()，運行程序。

• 不管是獲得仿真電阻值還是測得電阻值，都會顯示Test Bounds返回值，設置為一個全局變量(globalOhms)。例如，在Sequencer中標為Test Value & Tolerance的三項事務中，每項事務都使用表達式globalOhms調用這個全局變量。下圖顯示了擴展的第一項事務。

如果一項測試通過，那么會輸出相應的實數數組(如[220 2])。To String對象把數据轉換成一個字符串(如220 Ohm, 2%)。根据需要多次執行Sequencer，直到找到Bin Sort結果。

• 由于我們在兩個Sequencer中都沒有使用Log輸出端，因此我們刪除了這個輸出端，以加快執行速度。

• 如果想查看這個程序的流程，試著打開Show Execution Flow和Show Data Flow，多次運行這個程序。

如需使用Sequencer的進一步范例，參閱范例目錄。


了解VEE Execute Program對象

除ActiveX自動化外，還有兩种方式從VEE運行使用其它語言編寫的程序︰

1 使用Execute Program對象退出VEE，運行另一個程序、應用或操作系統命令。這种方法最通用、使用最簡便。

2 在PC上通過動態鏈接庫把其它語言匯編的函數鏈接到VEE上。盡管這執行起來略微困難，但它可以明顯提高性能。如需与動態鏈接庫有關的更多信息，請參閱“使用動態鏈接庫"。

Execute Program對象位于I/O菜單中。注意，Execute Program對象不使用I/O處理与程序通信，因此不用增加數据輸入端和輸出端，把數据傳送到匯編的程序中。

另請參閱

執行程序 使用Execute Program對象 使用系統命令 編寫可以簡便移植的程序


使用Execute Program對象

下圖顯示了PC上的Execute Program對象。

使用Execute Program對象從VEE中運行︰

• 使用其它語言匯編的程序

• *.BAT或*.COM文件

• MS DOS系統命令，如dir

• 帶有識別的擴展名的任何文件或URL。在文件中調用“open”操作。如果“open”操作不存在，那么將對文件調用默認操作。URL實例是︰http://www.agilent.com/find/vee。

Execute Program對象中的字段如下︰

字段名稱 | 說明
Run Style | 确定窗口大小。Normal指明標準窗口，Minimized指明圖標，Maximized指明最大窗口。Working directory是保存与程序有關的任何文件的目錄。
Wait for prog exit | 指明什么時候啟動序列端。 • 在設為Yes時，直到程序執行結束時才啟動序列端。 • 在設為No時，在執行指定程序前啟動序列輸出端。注意在啟動文件怯溞L時，如果文件或网站加載到已經運行的應用程序中，只有應用程序存在時VEE才會等待。
Prog with params | (Program with parameters) 這個字段保存著在DOS提示符下輸入的相同單詞。例如，為在C中運行程序，輸入可執行文件名myprog.exe。(可以省略擴展名.exe。) • 如果程序有多個參數，那么會在可執行文件名后面加一個連字符，如︰ myprog -param1 -param2 • 為運行DOS系統命令，先運行DOS命令解釋程序，并帶有/c選項。例如，對Windows 98，輸入命令command.com /c <系統命令>。 • 對Windows NT 4.0、Windows 2000和Windows XP，輸入命令cmd /c <系統命令 > 這個選項告訴命令解釋程序把/c后面的字符串作為系統命令讀取。

另請參閱

執行程序, 使用系統命令, 編寫可以簡便移植的程序


使用系統命令

為調用使用另一种語言匯編的程序，可以在Execute Program對象中輸入可執行文件及任何參數。

然而，為執行MS DOS系統命令，必須先運行DOS命令解釋程序。參閱實驗: 使用系統命令。

另請參閱

執行程序, 使用Execute Program對象, 編寫可以簡便移植的程序


編寫可以簡便移植的程序

VEE在Function & Object Browser [image] System Information中包括下述系統信息對象。這些對象也可以作為函數使用。

Function & Object Browser中常用的增強程序移植能力的系統信息函數如下︰

函數名稱 | 說明
installDir | 指明VEE安裝目錄。
whichOS | 确定操作系統，發出其中一個下面的字符串︰Windows_98, Windows_2000, Windows_NT, Windows_ XP。 當包含其他語言編寫的程序時，程序可以基于這些結果出現分支。例如，查看examples\manual目錄下的manual49.vee，查看程序使用whichOS()，保証導入正确類型的庫。在PC上，它將導入一個動態鏈接庫。
whiclatform | 确定VEE運行的硬件系統，然后返回一個字符串，指明該平台。
whichVersion | 指明VEE版本，用于程序維護和調試。

另請參閱

執行程序， 使用Execute Program對象， 使用系統命令


在Agilent VEE中包括MATLAB Script對象

在Agilent VEE中使用MATLAB Script對象

在VEE程序中使用MATLAB對象時，它看上去類似于VEE Formula對象。有兩种方式在程序中添加MATLAB Script對象︰

1 選擇Device [image] MATLAB Script，點擊把對象放在程序中，這會創建一個默認的MATLAB Script對象，可以根据自己的目的編輯這個對象。

2 選擇Device [image] Function & Object Browser，選擇Type: MATLAB Functions。選擇一個預先定義的MATLAB函數，點擊Create Formula。點擊把對象放在程序中。下圖顯示了可以添加到VEE程序中的部分預先定義的MATLAB函數。

注意，每個對象的名稱是MATLAB Script<函數名稱>，幫助您把它与其它VEE公式對象區別開來。每個對象已經包括它將執行的函數，以及可能需要的輸入端和輸出端，就象內置VEE公式對象一樣。還可以編輯MATLAB Script對象，就象編輯任何其它VEE對象一樣。

備注

如需与MATLAB函數有關的更多信息，從主VEE窗口中選擇Help [image] MATLAB Script [image] Help Desk。

另請參閱

處理數据類型 在Agilent VEE中使用MATLAB Script。

Copyright (c) 1991-2006年安捷倫科技公司版權所有


處理數据類型

作為MATLAB對象的輸入和輸出，只支持VEE數据類型的一個子集。

VEE自動轉換某些一維數組，因此對同時包含VEE函數和MATLAB函數的程序更加方便。例如，在輸入MATLAB Script對象時，VEE一維文本數組將自動轉換成兩維字符數組，在從MATLAB Script對象輸出時，來自MATLAB Script對象的字符一維數組將自動轉換成Text Scalar。

備注

如需VEE數据類型和MATLAB數据類型之間自動轉換的完整列表和說明，請參閱MATLAB腳本。

還可以使用輸入端數据類型限制，保証來自另一個對象的數据輸入轉換成支持的類型，如下例所示。

1 選擇Data [image] Constant [image] Int32，點擊放置對象。把值變成7。复制對象，把第二個Int32放在第一個Int32下面。把其值變成20。

2 選擇Device [image] MATLAB Script，把該對象放在常數對象的右面。

3 選擇Display Alphanumeric，把它放在MATLAB Script對象的右面。

4 把輸出端從頂部Int32對象連接到MATLAB Script對象的輸入端A。把底部 Int32對象的輸出端連接到MATLAB Script對象的輸入端B。把MATLAB Script對象的輸出端連接到Alphanumeric對象的輸入端。

運行程序，生成一個VEE Runtime Error，表明預計輸入是Real64, Complex, Waveform或Text，但收到的輸入是Int32。

為避免這類錯誤，改變MATLAB Script對象上的輸入端數据類型。

5 雙擊A端，打開Input Terminal Information對話框。點擊Required Type:顯示一個下拉菜單，選擇Real64，點擊OK。雙擊B端，也把它變成Real64。

6 運行程序。現在Int32數据在輸入端自動轉換成Real64，然后傳送到MATLAB。

另請參閱

在Agilent VEE中使用MATLAB Script， MATLAB Script。


使用ActiveX Automation

列出ActiveX Automation類型庫

為查找計算机上安裝的Automation對象，點擊Devices [image] ActiveX Automation References。

備注

如需与ActiveX Control References有關的信息，請參閱Help菜單下Contents and Index中的How do I ... build an Operator Interface。另請參閱 “Active X Automation Server”。

Devices [image] ActiveX Automation References列出了PC上安裝的Type Libraries。作為Automation Server的每個程序和ActiveX Component都可以注冊一個Type Library。VEE顯示PC上提供的庫。這些庫包括与ActiveX客戶端看到的程序或組件功能有關的信息。

類型庫一般由一個類集合組成。某些類可以由編程人員創建。其它類一直由程序或組件創建。類由屬性、方法和事件組成，但這些屬性、方法和事件不一定全部存在。Type Library同時為編程人員和VEE環境提供了使用ActiveX接口利用程序和組件所需的信息。

在ActiveX Automation References框中的Type Library旁邊打勾時，庫對象可以用于VEE程序中。例如，下圖中勾選了Microsoft Excel 9.0。

在Agilent VEE中創建和使用ActiveX程序

VEE對ActiveX程序包括一個稱為Object的數据類型。數据類型指定為Object的VEE對象是指向Automation Server保存的某個東西或某些數据的指針。例如，一個Object可以指向MS Excel內部的一個工作表，或指向該工作表內部的一個單元格。(在技朮上，一個Object是指向MS Excel或Server返回的IDispatch 接口的指針。)

例如，如果選擇Data [image] Variable [image] Declare Variable，把Name設為App，把數据類型設為Object，那么可以使用變量App，直到ActiveX Automation對象，如Excel Automation Server。下圖是數据類型Object的范例︰

使用ActiveX語句執行操作

為与ActiveX Automation服務器通信，如Excel Automation Server，在VEE Formula對象中輸入ActiveX命令。下例顯示了名為Set Up Excel Worksheet的VEE Formula對象。它包含一個命令列表，把Excel工作表設置成顯示測試結果。

上例使用標準Microsoft Visual Basic語法，創建命令或語句。命令和語句執行三种操作︰獲得屬性，設置屬性，調用方法。

• 獲得屬性語句通常指獲得某類數据。語法是<對象>.<屬性>。例如，sheet.application獲得表格對象的應用屬性。

• 設置屬性語句通常指把某個數据類型設成等于某种東西。語法是<對象>.<屬性> = <屬性類型>. 例如，object.property= MaxSize會設置一個屬性。

• 調用方法會調用一個方法。一個方法會請求對象執行一項操作。方法擁有多個參數，允許傳送和返回數据。語法是 <對象>.<方法>(參數)。

備注

數据類型Objects的語法与VEE獲得Record字段rec.field及調汁煲erFunction, myLib.func()的語法類似，因此為變量指配描述名稱非常重要。

使用CreateObject和GetObject

注意，上一節中設置Excel工作表的其中一個語句包含CreateObject()函數調用。CreateObject()和GetObject()是VEE Function & Object Browser中的函數，它們是為把指針返回到VEE中的ActiveX對象專門設計的。

例如，CreateObject("Excel.Sheet")啟動Excel，把一個參考返回其中的工作簿。(Microsoft語句“sheet”會返回一個工作簿。)使用GetObject()獲得正在運行的Excel中已經存在的某個東西或某些數据，或把一個文件加載到正在運行的Excel中。

CreateObject和GetObject位于Device [image] Function & Object Browser, Type: Built-in Functions, Category: ActiveX Automation下。下圖是CreateObject和GetObject范例。

另請參閱

實驗6-1: 把Agilent VEE數据發送到MS Excel

實驗6-2: 根据MS Excel模板創建Agilent VEE

實驗6-3: 使用MS Word編制Agilent VEE報告


EE Excel Library簡介

VEE Excel Library簡介

2005年5月，安捷倫收購了PASS科技公司的Vxl產品。它現在稱為Excel Library，是在Microsoft Excel和VEE之間建立透明鏈接的一個UserFunction庫。過去在Microsoft Excel中使用ActiveX獲得基本功能通常十分困難，而現在則可以簡便地在VEE和Microsoft Excel之間傳送數据，使用Microsoft Excel圖表，格式化Microsoft Excel數据。

VEE Excel Library要求Microsoft Office 2000或更高版本。


初始化VEE Excel庫

在使用 VEE Excel Library 之前，必須用Initialize先導入UserFunction庫。

位置

Excel [image] Initialize Excel Library


設置VEE Excel Library會話默認值

Settings UserObject用來為VEE Excel Library會話定義默認值。UserObject有兩個對象︰Call xlLib.Settings和Record。

Open View參數

Record對象定義設置，Call xlLib.Settings對象調用一個UserFunction實現這些設置。下面列出了Record對象的open view參數︰

  • Visible -- 在VEE Excel Library操作過程中能夠看見Microsoft Excel。在希望把用戶注意力放在VEE程序時，在操作人員界面中把它設置為False。默認值為Visible。Print Preview也可以看到Excel。

  • WindowMode -- 指Microsoft Excel程序窗口。選項包括︰Normal (打開Microsoft Excel窗口，但不最大化), Minimized和Maximized。默認值為Normal。

  • BookWindowMode -- 指選定工作簿的Microsoft Excel工作簿窗口。選項包括︰Normal (打開工作簿窗口，但不最大化), Minimized和Maximized。默認值為Normal。

  • ArrangeWindows -- 如果打開多個工作簿，這會排列其顯示順序。選項包括︰Cascade, Horizontal, Tiled,或Vertical。只有在BookWindowMode設置為Normal時才能使用這個參數。默認值為Cascade。

  • Error Action -- 确定VEE Excel Library怎樣處理錯誤情況。默認值為RaiseError。選項包括︰

  • RaiseError -- VEE Excel Library在程序處理器內部生成錯誤。這是推荐設置。

  • Quit -- VEE Excel Library關閉所有工作簿；如果在發生錯誤前還沒有保存工作簿，那么會丟失新數据。最后，VEE Excel Library會卸載Microsoft Excel會話。

  • OKCancel -- 出現一個對話框，超時周期為30秒。如果選擇OK，那么會忽略錯誤。如果選擇Cancel，那么會生成錯誤。如果過了超時周期，也會生成錯誤。

  • Ignore -- 忽略錯誤。錯誤可能會再次發生，因此最好在用戶能夠干預時使用這一選項。

  • DisplayAlerts -- 默認設置是True。在出現時會顯示Microsoft Excel消息對話框。為減少對話框數量，選擇False。注意︰把DisplayAlerts設置為假可能會導致Microsoft Excel掛起。如果想處理Microsoft Excel重寫提示，參閱'Save Workbook As'對象。

備注

在使用Select Workbook時，這些設置應用到選定的工作簿中。

在這些項目遵循Settings項目時，設置不适用于Open Workbook或New Workbook。只有在Settings遵循Open或New時，才會影響工作簿，而且只影響直接的工作簿。

在創建和調試程序時，應把Settings -> Visible參數設置為True。如果程序失敗或未能正确退出Microsoft Excel會話，那么可能會激活多個Excel會話。這些會話會耗盡相當大的一部分內存，可能會導致Excel操作錯誤。如果發生這种情況，應使用Windows Task Manager刪除不需要的會話。

位置

在VEE主菜單上Excel [image] Settings


退出VEE Excel Library插件

Call xlLib.QuitExcelLibrary對象調用一個UserFunction，關閉所有工作簿，卸載Microsoft Excel會話，退出VEE Excel Library插件。

注意︰在退出Excel Library時，不會自動保存工作簿。應調用Save All Workbooks或Save Workbook As，以免丟失已經修改的Excel工作簿中所作的任何變化。

位置

從VEE主菜單中Excel [image] Quit Excel Library


打開新的工作簿

Open New Workbook菜單選項用來創建一個新的Microsoft Excel工作簿。

用途

Call xlLib.NewWorkbook對象調用一個UserFunction，創建一個新的Excel工作簿。對該Book，工作簿采取默認的名稱，如Book8。為保証工作簿采取相應的工作簿，在xlLib.NewWorkbook對象后面加上一個SaveWorkBookAs對象，或以后在程序中使用SelectWorkbook選擇工作簿，然后使用SaveWorkBookAs。

位置

從Excel的主菜單中 [image] New WorkBook

另請參閱

把工作簿保存成新名稱和新格式, 打開現有的工作簿


打開現有的工作簿

Open a Workbook打開一個Microsoft Excel工作簿文件。

Open View 參數

Open Workbook菜單選項包含一個對象File Name Selection和一個UserObject OpenWorkbook。在OpenWorkBook UserObject內部有一個對象Open Workbook和一個UserFunction調用Call xlLib.OpenWorkbookRW。

File Name Selection對象是Data [image] Dialog [image] File Name Selection上的一個標準對象。如需与這個對象有關的更多信息，請參閱VEE聯机幫助。

Open Workbook 的open view參數是︰

  • ReadOnly -- 這會設置文件是以只讀方式打開還是可以寫入的方式打開。可能的值是True或False。默認值是False。

位置

從Excel的VEE主菜單中 [image] Open Workbook

另請參閱

打開新的工作簿和File Name Selection


保存工作簿

Save Workbook菜單項會以重寫的方式保存工作簿。

用途

Call xlLib.SaveWorkBook UserFunction保存工作簿，它會重寫已有的工作簿文件。

備注: 這并不是'保存所有工作簿'功能，而是只保存活動的工作簿。

如果Settings [image] DisplayAlert設置為False，那么在重寫已有的文件時系統不會提供提示信息。

位置

從VEE主菜單中Excel [image] Save Workbook


把工作簿保存成新名稱、新格式或新位置

這一功能可以使用新名稱、新格式或在新位置保存活動的工作簿。

用途

SaveWorkbookAs UserObject用來使用新名稱、新格式或在新位置保存工作簿。在Select Workbook后，調用Save Workbook As。Save Workbook As只适用于活動的工作簿。

在SaveWorkbookAs的輸入端上，設置一個文本常量或帶有整個路徑和文件名的公式(包括文件擴展名)。這將是新的文件名。

注意︰如果Settings對象中的DisplayAlerts設置為False，那么可能會在Microsoft Excel不彈出警告對話框的情況下覆蓋已有文件。

Open View中提供了兩個對象︰Call xlLib.SaveWorkbookAs和Workbook Type。

Workbook Type記錄有一個Workbook Type按鈕。Workbook Type選項有︰

  • Normal -- Normal用來把文件保存到Microsoft Excel 2000及更高版本中。

  • CSV --逗號分隔值文件。除分隔符是逗號外，這個文件的特點与Text文件相同。

  • MSDOSCSV -- MS-DOS逗號分隔值文件。

  • WINDOWSCSV -- Windows逗號分隔值文件。

  • Text -- 文本文件格式保存活動的工作表的單元格中顯示的文本和值。數据列用制表符分隔，每個數据行用回車結束。包含逗號的單元格用雙引號引起來。所有格式、圖形、對象和其它非文本工作表內容會丟失。將保存每個單元格中的所有行以及數据和所有字符。如果一個單元格有一個公式，但沒有值，那么這個公式會保存為文本。歐元符號會轉換成問號。

  • TextPrinter -- 輸出一個對打印机準備就緒的文本文件。在新的文本文件內，數据的相對位置与電子表格中相同。Text輸出中提到的所有其它規則同樣适用。

  • Excel9795 -- 輸出兼容Excel 97/95格式的電子表格數据。

  • xlHTML -- xlHTML是一個轉換器，可以把Excel電子表格數据變成HTML。

備注

如果企圖SaveAs到相同的文件名，那么會出現一個對話框。如果選擇否，那么會得到VEE運行時錯誤。為避免這种錯誤，總是提供唯一的名稱，或使用I/O菜單下的VEE To File對象。在寫入文件前，使用To File及Execute Delete事務，防止發生錯誤，并防止出現對話框、要求用戶交互。

位置

從Excel的VEE主菜單中 [image] Save Workbook As


選擇工作簿

這個UserObject從當前打開的工作簿中選擇一個Microsoft Excel工作簿。

用途

使用Open Workbook對象或后面跟著Save Workbook As對象的New Workbook，打開一個工作簿。以后在程序中使用SelectWorkbook對象選擇要處理的工作簿。在輸入端，放一個文本常數或一個公式及選中的工作簿的全名。工作簿名稱可以是打開的工作簿的整個路徑名稱或工作簿名稱(包括.xls擴展文件名)或新增的工作簿名稱，如"Book1"。選中的工作簿變成活動的工作簿。

備注

VEE Excel Settings應用到選中的工作簿中。

為進行調試，可能要枚舉工作簿。這一功能列出當前打開的工作簿，它提供了一個很好的途徑，來區分選中的工作簿能否使用。參閱Enumerations [image] Enumerate Workbooks。

位置

從VEE主菜單中Excel [image] Select Workbook


關閉工作簿

Close a Workbook和Close All Workbooks用來關閉打開的一個或所有Microsoft Excel工作簿。

用途

Close Workbook用來關閉當前選中的工作簿，而Close All Workbooks則結束所有打開的工作簿會話。

注意︰在Close Workbooks時，不會自動保存工作簿。應調用Save All Workbooks或Save Workbook As，以免丟失已經修改的Excel工作簿中所作的任何變化。

位置

從VEE主菜單中Excel [image] Close Workbook或Excel [image] Close All Workbooks

另請參閱

把工作簿保存成新名稱、新格式或新位置或保存工作簿


打開一個新工作表

使用New Sheet菜單選項，在選定的工作簿中創建一個新工作表。

用途

創建一個文本常數或一個包括新工作表名稱的公式(在名稱中不要使用* % $ # @ ! .)。把這個文本常數或公式連接到NewWorksheet UserObject的輸入端。還可以發送一個空字符串("")，讓Excel自動命名工作表。

新工作表自動變成活動的工作表，不需進行工作表選擇操作。

備注

NewWorksheet只能用于活動的工作簿。

位置

從VEE主菜單中Excel [image] New Sheet


選擇工作表

使用Select Sheet菜單選項選擇一個工作表。

用途

在輸入端上使用一個文本常數或公式，提供一個工作表名稱。這個工作表變成打開的工作簿中活動的工作表。

位置

從VEE主菜單中Excel [image] Select Sheet


枚舉Microsoft Excel工作簿、工作表和功能

主菜單選項Enumerations有四個選項︰Workbooks, Worksheets, Charts和Names，它用來創建這些項目的列表和計數。

用途

所有enumeration對象的結構相同。它們調用一個UserFunction，這個UserFunction有兩個輸出端。上方的輸出端用來把打開的項目名稱輸出到一維數組中；下面的輸出端用來在上方輸出端上提供數組大小。

在程序開發過程中，在需要确定項目是否提供時，特別适合使用枚舉。例如，确定是否可以選擇一個工作簿，是否存在工作表、圖表或命名范圍。

在使用非英文版Microsoft Excel時，也适合使用枚舉。Microsoft Excel對不同語言的工作表使用不同的名稱。通過Enumerate Worksheets，可以捕獲工作表的名稱。參見examples\ExcelLibrary\BarChart.vee下的范例BarChart.vee ，檢查 "Localize..."用戶對象。

位置

從Excel [image] Enumerations [image] Enumerate Workbooks下的VEE 主菜單中
從Excel [image] Enumerations [image] Enumerate Worksheets下的 VEE 主菜單中
從Excel [image] Enumerations [image] Enumerate Charts下的 VEE 主菜單中
從Excel [image] Enumerations [image] Enumerate Names下的 VEE 主菜單中

另請參閱︰

實驗8-2: 使用工作簿枚舉


格式化文本

Format Text菜單選項用來格式化單元格中的文本、范圍、命名范圍、行或列。

用途

FormatText UserObject有一個輸入端，用來捕獲要格式化的區域。可以為FormatText UserObject提供一個單元格、一行、一列、一個命名的范圍或一個范圍。單元格的地址格式是a9 (不分大小寫)，范圍格式是a9:j22。

FormatText UserObject包含UserFunction xlLib.FormatText和Text Format Settings對象調用。Text Format Settings對象用來管理數据在單元格中的外觀，如字体、黑体、斜体等字体特點、對齊及部分其它特性。如需更多信息，請參閱open view參數。

參閱格式化單元格，了解怎樣格式化單元格背景參數，如背景顏色、格線和數字格式。

Open View參數

Text Format Settings記錄對象的open view參數如下︰

  • FontName -- 在默認情況下，字体是Courier New。您只需在FontName字段中輸入字体名稱，就可以把字体設置為系統支持的任何字体。

  • ForeColor -- 在默認情況下，前景顏色是黑色。可以把前景顏色設置成46种不同顏色中的任何顏色。

  • Bold -- 可以是真或假。默認值為True。

  • Italic -- 可以是真或假。默認值為False。

  • Underlined -- 可以是真或假。默認值為False。

  • Size -- 點的大小范圍為8 - 72點。默認值為14點。

  • HorizontalAlignment -- 可以選擇左對齊、居中、右對齊、調整和大致對齊。默認值為left。使用General格式格式化的數字顯示方式与輸入時相同。但是，如果單元格沒有足夠寬度來顯示整個數字，General格式會對帶小數點的數字進行舍入，對大的數字使用科學符號。

  • VerticalAlignment -- 可以選擇頂部對齊、底部對齊和中間對齊。默認值為bottom。

  • WordWrap -- 把文本值包在單元格內部。文本不會"溢出"到相鄰的空單元格中。Wordwrap只能處理文本值。

  • ShrinkToFit -- 縮小文本字號，以适合單元格。只有在關閉WordWrap且單元格太小、不能放在當前字號的當前值時，才能使用這一選項。

位置

從Excel的VEE主菜單中 [image] Formatting [image] Format Text

另請參閱

格式化單元格和范例FormatTextAllColors.vee


格式化單元格

使用Format Cells菜單選項把單元格格式化要求傳送到Excel。

用途

Format Cells UserObject把單元格格式化傳送到Excel。可以定義要格式化的一個單元格、一列、一行、一個指明范圍或一個單元格范圍。

有一個輸入端，可以為要格式化的一個或多個單元格提供一個值。

UserObject內部是一個xlLib.FormatCells調用和一個稱為Cell Settings的對象。Cell Settings包含編制一個或多個單元格使用的所有格式化選項。

參閱格式化文本，了解怎樣格式化單元格前景參數，如前景顏色、字体和對齊方式。

Open View參數

  • BackColor -- 單元格的背景顏色，可以從46种不同顏色中選擇。默認值為SeaGreen。

  • NumberFormat -- 應用到數字值的格式。可以選擇指數符號, 掩碼(###.0)(其中取值是可選的), 0 (其中相應位置會出現一個數字或零), 百分比, 貨幣, General或Custom。Custom是默認的數字格式。使用General格式格式化的數字顯示方式与輸入方式相同。如果單元格不夠寬不能顯示整個數字，General格式會對帶小數點的數字進行舍入，對大的數字使用科學符號。如果想了解非英文版Microsoft Office的相關問題，請參閱下面的?#22791;注?#12290;

  • CustomNumberFormat -- 已經定義使用的自定義數字格式。

  • BorderEdges -- 有多种方式顯示單元格的邊框。

  • Grid -- Grid采用Excel電子表格單元格布局，每個單元格都有頂部、底部和側面。

  • GridThickThin -- GridThickThin把單元格重新格式化成細邊框，即使該單元格已經使用中等邊框或粗邊框。

  • Outline -- Outline采用Excel電子表格單元格布局，每個單元格都有頂部、底部和側面。

  • LeftRight -- LeftRight設置單元格左側和右側的邊框。

  • TopBottom -- TopBottom設置單元格頂部和底部的邊框。

  • Top -- Top設置單元格頂部的邊框。

  • Bottom -- Bottom設置單元格底部的邊框。

  • Right -- Right設置單元格右側的邊框。

  • Left -- Left設置單元格左側的邊框。

  • BorderThickness -- 邊框粗細有三种︰Thin, Medium和Thick。Thin的單元格邊框比通過Excel的Page Setup菜單選擇Print Grid Lines的邊框顏色要暗。

  • Pattern -- Pattern描述了單元格的背景，其可以以多种不同方式顯示。

  • Solid -- Solid是單元格采用一致的背景。

  • LightDots -- LightDots是帶點的背景，這些點的大小与細邊框相同。

  • MediumDots -- MediumDots是帶點的背景，但這些點的大小与中等邊框相同。點的密度要高于LightDots選項。

  • Checkered -- Checkered是單元格中帶有小方格的背景。這些小方格是与單元格邊框成對角線的許多平行直線相交得到的。

  • Grid -- Grid也是單元格中帶有小方格的背景。這些小方格是与單元格的水平邊框和垂直邊框平行的許多平行直線相交得到的。

  • VerticalBars -- VerticalBars是單元格中帶有豎條的背景，這些豎條与單元格兩側平行。

  • HorizontalBars -- HorizontalBars是單元格中帶有橫條的背景，這些橫條与單元格的頂部和底部平行。

  • CrissCross -- CrissCross是多個小x相連的背景。其看上去与Checkered選項非常類似，但x的密度要厚。

備注

NumberFormat可能不能在某些非英文版Microsoft Office中工作。特別是，俄語Office 2003不能接受"General"之外的任何NumberFormat值。由于某些其它非英文版Office能夠正确運行，如日語、德語、西班牙語和瑞典語，因此似乎這個問題是俄語Microsoft Russian Excel獨有的問題。補救方法是自己在Formula中設置NumberFormat，如使用本地化千和小數點分隔符︰'aRange.NumberFormat = "0,00"'。

位置

從 Excel的 VEE主菜單中 [image] Formatting [image] Format Cells

另請參閱

參閱范例FormatCellsAllColors.vee


自動調整欄

使用Auto Fit Columns根据數字值或短文本描述調整欄寬。輸入端可以接受單元格、單元格范圍或命名范圍。這是為短文本值設計的，而不是為冗長的描述設計的。

位置

從VEE主菜單中Excel [image] Formatting [image] Auto Fit Columns


移動到一個相對單元格地址

從活動的單元格地址移動到相對于起點的一個地址。

用途

Cell Relative有三個輸入端。上面的端是活動的單元格地址。中間的端是把單元格指針上移或下移的距离。下面的端是把單元格指針左移或右移的距离。

在默認情況下，正數把單元格指針向右或向下移動，負數把單元格指針向上或向左移動。

位置

從VEE主菜單中Excel [image] Navigation [image] Cell Relative

另請參閱

移動到一個絕對單元格地址


移動到一個絕對單元格地址

CellAbsolute對象把活動的單元格地址移動到電子表格上某個位置。這個位置并不是相對于任何其它位置，而是在CellAbsolute對象中直接指明。

用途

CellAbsolute有兩個輸入端。上面的端与電子表格的中列相符，下面的端与電子表格中的行相符。這兩個端都預計一個數字值。

有一個輸出端。這個端可以与AlphaNumeric對象一起使用，或把數据推送到一個輸入端，如DataToCells對象的地址端。

位置

從VEE主菜單中Excel [image] Navigation [image] Cell Absolute

另請參閱

移動到一個相對單元格地址


查找第一個空行

FindFirstEmptyRow對象在提供的范圍內查找第一個空行。

用途

有一個輸入端。這個端用來定義搜索空列的范圍。例如， "A1:H60"將搜索第1 - 60行中的第一個空行。

如果在指定范圍內存在一個空行，那么會返回列的編號。否則，FindFirstEmptyRow對象返回-1。

還可以使用在Excel電子表格中已經定義的指明范圍作為輸入參數。只有VEE Execution Mode 6或更高模式才支持這一操作。

位置

從VEE主菜洙中Excel [image] Navigation [image] Find First Empty Row

另請參閱

查找第一個空列


查找第一個空列

FindFirstEmptyColumn對象在提供的范圍內查找第一個空列。

用途

有一個輸入端。這個端用來定義搜索空列的范圍。例如，"A1:H60"將搜索第A - H列中的第一個空列。

如果在指定范圍內存在一個空列，那么會返回列的編號。否則，FindFirstEmptyColumn對象會返回-1。使用Excel [image] Navigation [image] Alpha Column from Numeric Column，轉換FindFirstEmptyColumn返回的數字列地址，創建有效的行/列地址。

還可以使用在Excel電子表格中已經定義的指明范圍作為輸入參數。只有VEE Execution Mode 6或更高模式才支持這一操作。

位置

從VEE主菜單中Excel [image] Navigation [image] Find First Empty Column

另請參閱

查找第一個空行, 從數字列轉換成字母列


Alpha Column from Numeric One

如果有一欄數字輸入，把它轉換成相應的字母Excel欄參考值。

位置

從VEE主菜單中Excel [image] Navigation [image] Alpha Column from Numeric Column

另請參閱

确定單元格行和列的數字值


确定單元格行和列的數字值

返回与Excel樣式的單元格地址輸入對應的行和列的數字值。如果輸入是一個范圍，那么只使用左上方的單元格。

位置

從VEE主菜單中Excel [image] Navigation [image] Numeric Row and Column from Cell。


發送數据設置

Send Data Settings控制數組的方向及處理DataToCells調用的多維數組。

Open View參數

這個UserObject由xlLib.SendDataSettings UserFunction調用和SendDataSettings對象組成。SendDataSettings對象有三個參數。

  • Orientation -- 這是數組數据流動的方向。有兩個選項︰Vertical和Horizontal。例如，一維數組橫向將創建一個數据行，兩維數組縱向將創建兩個數据列。默認值為Vertical。

  • ThreeDArrays -- 這控制著Excel Library和DataToCells怎樣處理三維數組。

  • CreateNewSheets -- 為三維數組創建新的工作表，其中每個Z維度是一個新的工作表。每個工作表包含其中一個兩維數組。

  • CopyStartingSheet -- 复制開始的工作簿格式，把它們應用到從三維數組流程新建的工作表中，包括單元格格式化、圖表等等。

  • UseSingleSheet -- 把所有三維數据放在一個工作表上，每個二維數組用一個空行分開。

  • ZLabel -- 用來標注作為三維數組的一部分表示的每個二維數組。

備注

對所有三維設置，每次打印兩維數組時，其前面會有一行包含第三個維度中的當前要素值。

位置

從VEE主菜單中Excel [image] Send Data [image] Send Data Settings

另請參閱

把數据發送到單元格中


把數据發送到單元格中

Data to Cells用來把數据從VEE傳送到Excel中。

用途

傳送的數据可以是標量或最多三維的數組。不能傳送下面的數据類型︰Complex, PComplex, Spectrum, Coordinate, Waveform, Object和Record。使用Send Data [image] Record to Named Ranges把記錄發送到Excel。盡管DataToCells UserObject不能直接支持上述數据類型，但我們提供了一些范例，來解決這些問題，參閱目錄\Program Files\Agilent\VEE Pro 7.5\Examples\ExcelLibrary\SendingData。

DataToCells有兩個輸入端。上面的輸入端接收要傳送的數据。下面的輸入端接收單元格地址。盡管可以指定一個范圍或命名的范圍，但會忽略這些范圍，而使用左上角的地址，确定數据在工作表中的位置。例如，范圍C4:K22會在C4中開始顯示數据，而忽略范圍的結束地址K22。

由于忽略范圍的結束地址，DataToCells對象對邊界不敏感。如果把10個要素組成的數組發送到Excel范圍B4:B8中，DataToCells會重寫B8之后的五個值。記住，在范圍中，只有第一個值是重要的。第二個值并不是有效邊界。

DataToCells函數根据SendDataSettings對象水平放置數組或垂直放置數組。由于忽略單元格范圍，而只使用范圍的第一個值，因此指定"A1:A11"或"A1:J1"并不會改變數据的行或列的方向。如果想改變行或列的方向，應使用SendDataSettings對象。

處理兩維和三維數組的范例可以參閱目錄Examples\ExcelLibrary\SendingData。

位置

從VEE主菜單中Excel [image] Send Data [image] Data to Cells

另請參閱

發送數据設置和把記錄發送到指明范圍中


把記錄發送到指明范圍中

把VEE記錄發送到Microsoft Excel中的指明范圍中。

用途

Call SendRecord UserFunction有一個輸入端和兩個輸出端。

輸入端用來把VEE記錄發送到Call SendRecord UserFunction中。然后UserFunction把字段值放到VEE Excel Library選中工作簿的相應指明范圍中。例如， 如果VEE字段名叫作reading，那么字段名將放在叫作reading的Microsoft Excel工作簿單元格中。

為創建Microsoft Excel指明范圍，高亮度顯示要使用的單元格組，然后進入Insert [image] Name [image] Define。輸入范圍名稱，選擇Add。還可以使用Define Range對話框右下角的圖標( [image])，在指定洙元格和define range對話框之間切換。

兩個輸出端用來跟蹤丟失的名稱，計算丟失了多少名稱。在与VEE字段不匹配的 Microsoft Excel工作表中定義了多個名稱時，將填寫Missing Names。因此，如果VEE記錄不完整或Microsoft Excel工作表定義不正确，那么在這個端上將有多個值。第二個端Size只提供了Missing Names的數量。

位置

從VEE主菜單中Excel [image] Send Data [image] Record to Named Ranges

另請參閱

把數据發送到單元格中和發送數据設置


創建折線圖

根据VEE輸入的數据在Microsoft Excel中創建一個折線圖。

Fields

CreateLineChart是由xlLib.CreateLineChart(Data,Settings)函數調用和Line Chart Settings記錄對象組成的UserObject。Line Chart Settings有多個不同的字段，下面列出了這些字段。

  • Title -- 圖表的標題，標題在圖表的邊界內居中顯示。

  • TitleFont -- 標題使用的字体。這里可以使用VEE支持的任何字体。在其出現在VEE字体列表中時，只需輸入字体名稱即可。

  • TitleFontSize -- 可以選擇菜單中提供的字號，或選擇Autosize，由 Excel自動選擇一個字號。

  • Type -- 圖表的類型。

  • Line -- 標準折線圖。

  • Line with Markers -- 折線圖，每個數据點上帶有標尺。

  • 3D Line -- 表示三維折線圖。

  • Logarithmic -- 提供數据的對數圖，每個數据點上帶有標尺。一定要保証數据中沒有零值或負值，否則Excel Library會生成553錯誤。如需了解与非英文版Microsoft Office有關的問題，請參閱下面的?#22791;注?/span>。

  • NumericMarkers -- 這會把數据點值放在圖表中的數据點旁邊。

  • FillEffects -- 影響著圖表的背景。None值提供灰色背景，Two Color值提供黑/白混合背景。這個參數不影響對數圖和三維直線圖。

  • Names -- 名稱列表中的每個名稱被應用到圖表中的取值數組中。例如，如果有一個由正弦值組成的數組，一個由余弦值組成的數，一個由方波值組成的數組，那么可以使用名稱參數在圖例中標注這些數組。如果數組數量超過10個，那么在名稱列表中應增加更多的值。

  • XaxisLabel -- 輸入圖表X軸值的標簽。對頻譜和波形，不輸入任何值，VEE Excel Library會創建一個合成X軸標簽，其中包括時間跨度/頻率信息。

  • YaxisLabel -- 為Y軸輸入所需的任何描述。

  • ChartSheet -- 輸入希望圖表出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • DataCell -- 數据塊開始的單元格。

  • DataSheet -- 輸入希望數据出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • PlotBy -- 可以選擇Columns或Rows。這決定著是根据列中的數据還是根据行中的數据創建圖表。還可以在VEE主菜單Excel [image] Send Data [image] Send Data Settings中設置這個字段。

  • Width -- 從標準尺寸中定標圖表的寬度。

  • Height -- 從標準尺寸中定標圖表的高度。

  • MoveRight -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數右移表格。負值會左移圖表。移動遞增單位是像素。

  • MoveDown -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數下移表格。負值會上移圖表。移動遞增單位是像素。

備注

Line Chart設置會忽略ChartSheet設置，總是把圖表放在第一個或最左面的表格中。目前這個問題沒有解決辦法。

ChartSheet和DataSheet值在默認狀態下設為"Sheet1"。這一設置在許多非英文版Microsoft Office中不能工作。例如，在德語版Microsoft Excel中，默認值是"Tabelle1"。如果您首選改變表格名稱，那么應改變這兩個值。如果您希望使用默認名稱，那么有一個簡便地方式本地化這些值。

斷開"Bar Chart Settings"對象和"Call xlLib.CreateBarChart"對象之間的線，從左下方和"Localize..."對象的輸出到"Call xlLib.CreateBarChart"對象的輸入連一條線。這會把ChartSheet和DataSheet的ChartSettingsRecord值變成相應的值，可以用于任何版本Microsoft Office Excel的第一個現有工作表。

Chart Type "Logarithmic"在許多非英文版Microsoft Office中不能工作。為使其工作，先打開Excel，進行Insert [image] Chart，然后在Chart Wizard對話框中，進入第二欄"Custom Types"。注意Logarithmic自定義類型的拼寫方式。例如，在德語版Office中，拼寫方式是"Logarithmisch"。

然后轉到Create Line Chart對象，打開這個對象。在最左面附近，您會看到一個公式和部分說明及類似于:xlApp.ActiveChart.ApplyCustomType(xlBuiltIn, "Logarithmic")的一行文字。根据這一公式的說明操作。

与Microsoft Office版本本地化中的情況一樣，Excel只接受這個Chart Custom Type字符串。但是，Excel不提供這些本地化名稱。因此，Excel Library不能為您完成這一操作。

位置

從 VEE主菜單Excel [image] Create Chart [image] Create Line Chart

另請參閱

創建柱狀圖, 創建餅圖, 創建XY圖, 釋放ActiveX參考


創建XY圖

根据VEE輸入的數据在Microsoft Excel中創建一個XY圖。

字段

CreateXYChart是由xlLib.CreateXYChart(Data,Settings)函數調用和XY Chart Settings記錄對象組成的UserObject。XY Chart Settings有多個不同的字段，下面列出了這些字段。

  • Title -- 圖表的標題，標題在圖表的邊界內居中顯示。

  • TitleFont -- 標題使用的字体。這里可以使用VEE支持的任何字体。在其出現在VEE字体列表中時，只需輸入字体名稱即可。

  • TitleFontSize -- 可以選擇菜單中提供的字號，或選擇Autosize，由Excel自動選擇一個字號。

  • Type -- 圖表的類型。

  • XYScatter -- 標準XY圖。

  • XYScatterLines -- XY圖，用直線連接每個數据點。數据點帶有標尺。

  • XYScatterLinesNoMarkers -- XY圖，用直線連接每個數据點。數据點沒有標尺。

  • XYScatterSmooth -- XY圖，數据點之間使用圓滑的直線連接。數据點帶有標尺。

  • XYScatterSmoothNoMarkers -- XY圖，數据點之間使用圓滑的直線連接。數据點沒有標尺。

  • XGridLines -- 有兩個選項︰Major和Minor。Major指只有少量网格線(如有)。Minor指有許多直線。

  • YGridLines -- 有兩個選項︰Major和Minor。Major指只有少量网格線(如有)。Minor指有許多直線。

  • Names -- 名稱列表中的每個名稱被應用到圖表中的取值數組中。例如，如果有一個由正弦值組成的數組，一個由余弦值組成的數，一個由方波值組成的數組，那么可以使用名稱參數在圖例中標注這些數組。如果數組數量超過10個，那么在名稱列表中應增加更多的值。

  • Scale -- Scale是Linear或Logarithmic。Linear簡單明了。Logarithmic只适用于Y軸。取值為零或負數會導致錯誤。

  • FillEffects -- 影響著圖表的背景。None值提供灰色背景，Two Color值提供黑/白混合背景。這個參數不影響對數圖和三維直線圖。

  • XaxisLabel -- 輸入圖表X軸的標簽。

  • YaxisLabel -- 輸入圖表Y軸的標簽。

  • ChartSheet -- 輸入希望圖表出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • DataCell -- 數据塊開始的單元格。

  • DataSheet -- 輸入希望數据出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • PlotBy -- 可以選擇Columns或Rows。這決定著是根据列中的數据還是根据行中的數据創建圖表。還可以在VEE主菜單Excel [image] Send Data [image] Send Data Settings中設置這個字段。

  • Width -- 從標準尺寸中定標圖表的寬度。

  • Height -- 從標準尺寸中定標圖表的高度。

  • MoveRight -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數右移表格。負值會左移圖表。移動遞增單位是像素。

  • MoveDown -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數下移表格。負值會上移圖表。移動遞增單位是像素。

備注

ChartSheet和DataSheet值在默認狀態下設為"Sheet1"。這一設置在許多非英文版Microsoft Office中不能工作。例如，在德語版Microsoft Excel中，默認值是"Tabelle1"。如果您首選改變表格名稱，那么應改變這兩個值。如果您希望使用默認名稱，那么有一個簡便地方式本地化這些值。

斷開"Bar Chart Settings"對象和"Call xlLib.CreateBarChart"對象之間的線，從左下方和"Localize..."對象的輸出到"Call xlLib.CreateBarChart"對象的輸入連一條線。這會把ChartSheet和DataSheet的ChartSettingsRecord值變成相應的值，可以用于任何版本Microsoft Office Excel的第一個現有工作表。

位置

從 VEE主菜單Excel [image] Create Chart [image] Create XY Chart

另請參閱

創建柱狀圖, 創建折線圖, 創建餅圖


創建柱狀圖

根据VEE輸入的數据在Microsoft Excel中創建一個柱狀圖。

字段

CreateBarChart是由xlLib.CreateBarChart(Data,Settings)函數調用和Bar Chart Settings記錄對象組成的UserObject。Bar Chart Settings有多個不同的字段，下面列出了這些字段。

  • Title -- 圖表的標題，標題在圖表的邊界內居中顯示。

  • TitleFont -- 標題使用的字体。這里可以使用VEE支持的任何字体。在其出現在VEE字体列表中時，只需輸入字体名稱即可。

  • TitleFontSize -- 可以選擇菜單中提供的字號，或選擇Autosize，由Excel自動選擇一個字號。

  • Type -- 圖表的類型。

  • ColumnClustered -- 如果PlotBy是多個行，且多個數据值來自同一行，那么豎條會彼此相鄰顯示。如果PlotBy是多個列，那么數組中的多個要素會作為相鄰豎條顯示。

  • ColumnStacked -- 如果PlotBy是多個行，且多個數据值來自同一行，那么橫條會彼此相鄰顯示。如果PlotBy是多個列，那么每個數組要素會作為豎欄顯示，每個要素有一個彩邊。

  • Stacked100 -- 在PlotBy是多個行時，顯示一個豎條中的數組要素。數組要素加在一起，每個數組要素用其占總量的百分比表示。如果PlotBy是多個列，數組會作為豎欄顯示，每個要素有一個彩邊。

  • 3DColumn -- 在PlotBy是多個行時，使用三維豎條，前面是第一個數組要素，后面顯示后續的數組要素。在PlotBy是多個列時，每個數組要素都有自己的由多個列組成的行。

  • 3DColumnClustered -- 如果PlotBy是多個行，且多個要素來自同一行，那么三維豎條會彼此相鄰顯示。顯示畫面的前面一行是數組要素。如果PlotBy是多個列，那么每個數組會表現為多個列組成的集群，一個數組要素等于一列。

  • 3DColumnStacked -- 如果PlotBy是多個行，且多個數据值來自同一行，那么三維豎條會彼此相鄰顯示。如果PlotBy是多個列，那么每個數組有一個列，每個數組要素有一個彩邊。

  • 3DStacked100 -- 在PlotBy是多個行時，在三維單個豎條中顯示數据。多個要素加在一起，每個要素用其占總量的百分比表示。如果PlotBy是多個列，那么每個數組有一個列，每個數組要素有一個彩邊。

  • BarClustered -- 如果PlotBy是多個行，且多個數据值來自同一行，那么橫條會彼此相鄰顯示。如果PlotBy是多個列，那么數組中的每個要素有一個橫條，且多個橫條集中在一起。

  • BarStacked -- 如果PlotBy是多個行，且多個數据值來自同一行，那么橫條相互堆疊在頂部顯示。如果PlotBy是多個列，那么每個數組有一個橫條，每個數組要素有一個彩邊。

  • BarStacked100 -- 在PlotBy是多個行時，在單個橫條中顯示數据。多個數組要素加在一起，每個數組要素用其占總量的百分比表示。如果PlotBy是多個列，外觀相同。

  • 3DBarClustered -- 如果PlotBy是多個行，且多個數据值來自同一行，那么三維橫條會彼此相鄰顯示。如果PlotBy是多個列，那么數組要素用一個橫條表示，且多個數組集中在一起。

  • 3DBarStacked -- 如果PlotBy是多個行或多個列，且多個數据值來自同一行，那么三維橫條相互堆疊在頂部顯示。如果PlotBy是多個列，那么每個數組用一個橫條表示，數組要素聯合并堆疊在一起。

  • 3DStacked100 -- 在PlotBy是多個行時，在三維單個橫條中顯示數据。多個數組要素加在一起，每個要素用其占總量的百分比表示。如果PlotBy是多個列，那么每個數組用一個橫條表示，數組要素聯合并堆疊在一起。

  • Numeric Markers -- 這會把要素值放在圖表中的標尺旁邊。

  • FillEffects -- 影響著圖表的背景。None值提供灰色背景，Two Color值提供黑/白混合背景。這個參數不影響對數圖和三維直線圖。

  • XaxisLabel -- 輸入圖表X軸的標簽。

  • YaxisLabel -- 輸入圖表Y軸的標簽。

  • ChartSheet -- 輸入希望圖表出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • DataCell -- 數据塊開始的單元格。

  • DataSheet -- 輸入希望數据出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • PlotBy -- 可以選擇Columns或Rows。這決定著是根据列中的數据還是根据行中的數据創建圖表。還可以在VEE主菜單Excel [image] Send Data [image] Send Data Settings中設置這個字段。

  • Width -- 從標準尺寸中定標圖表的寬度。

  • Height -- 從標準尺寸中定標圖表的高度。

  • MoveRight -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數右移表格。負值會左移圖表。移動遞增單位是像素。

  • MoveDown -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數下移表格。負值會上移圖表。移動遞增單位是像素。

備注

ChartSheet和DataSheet值在默認狀態下設為"Sheet1"。這一設置在許多非英文版Microsoft Office中不能工作。例如，在德語版Microsoft Excel中，默認值是"Tabelle1"。如果您首選改變表格名稱，那么應改變這兩個值。如果您希望使用默認名稱，那么有一個簡便地方式本地化這些值。

斷開"Bar Chart Settings"對象和"Call xlLib.CreateBarChart"對象之間的線，從左下方和"Localize..."對象的輸出到"Call xlLib.CreateBarChart"對象的輸入連一條線。這會把ChartSheet和DataSheet的ChartSettingsRecord值變成相應的值，可以用于任何版本Microsoft Office Excel的第一個現有工作表。

位置

從VEE主菜單Excel [image] Create Chart [image] Create Bar Chart

另請參閱

創建折線圖, 創建餅圖, 創建XY圖


創建餅圖

根据VEE輸入的數据在 Microsoft Excel中創建一個餅圖。

字段

CreatePieChart是由xlLib.CreatePieChart(Data,Settings)函數調用和Pie Chart Settings記錄對象組成的 UserObject。Pie Chart Settings有多個不同的字段，下面列出了這些字段。

  • Title -- 圖表的標題，標題在圖表的邊界內居中顯示。

  • TitleFont -- 標題使用的字体。這里可以使用VEE支持的任何字体。在其出現在VEE字体列表中時，只需輸入字体名稱即可。

  • TitleFontSize -- 可以選擇菜單中提供的字號，或選擇Autosize，由 Excel自動選擇一個字號。

  • Type -- 圖表的類型。

  • Pie -- 標準餅圖，不帶裝飾邊。

  • Pie Exploded -- 餅圖，每塊餅從中心'探出'，以便能夠單獨查看這些塊。

  • 3DPie -- 三維餅圖，不帶裝飾邊。

  • 3DPieExploded -- 三維餅圖，每塊餅從中心'探出'，以便能夠單獨查看這些塊。

  • PieOfPie -- 餅圖的餅圖。通常會把最初餅圖中最大的一塊餅再分成第二個餅圖。

  • NumericMarkers -- 每個數据點上的標尺，幫助解釋底層值。

  • None -- 不存在標尺。

  • Label - 每個數組要素用來標記一塊餅。

  • Value -- 每塊餅標上生成這塊餅的值。

  • Percent - 每塊餅標上生成其占整個餅的百分比。

  • LabelAndPercent - 使用每個數組要素及其百分比，標記一塊餅。

  • NumericMarkersMore

  • LegendKey - 在餅圖的每個要素旁邊放在一個描述性標簽。

  • LeaderLines - 在每個餅的要素的標簽變得太擠時，可以選擇引出線。引出線是使用描述標簽連接餅的要素的直線。

  • LegendKeyAndLeaderLines - 自動顯示描述標簽及引出線。

  • None - 不提供圖例信息。

  • FillEffects -- 影響著圖表的背景。None值提供灰色背景，Two Color值提供黑/白混合背景。這個參數不影響對數圖和三維直線圖。

  • ChartSheet -- 輸入希望圖表出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • DataCell -- 數据塊開始的單元格。

  • DataSheet -- 輸入希望數据出現的已有表格的名稱。如需了解對非英文版Microsoft Office本地化這個字符串的相關信息，請參閱下面的?#22791;注?#12290;

  • PlotBy -- 可以選擇Columns或Rows。這決定著是根据列中的數据還是根据行中的數据創建圖表。還可以在 VEE主菜單Excel [image] Send Data [image] Send Data Settings中設置這個字段。

  • Width -- 從標準尺寸中定標圖表的寬度。

  • Height -- 從標準尺寸中定標圖表的高度。

  • MoveRight -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數右移表格。負值會左移圖表。移動遞增單位是像素。

  • MoveDown -- Microsoft Excel總是把圖表放在与工作表相同的位置。可以使用這個參數下移表格。負值會上移圖表。移動遞增單位是像素。

備注

ChartSheet和DataSheet值在默認狀態下設為"Sheet1"。這一設置在許多非英文版Microsoft Office中不能工作。例如，在德語版Microsoft Excel中，默認值是"Tabelle1"。如果您首選改變表格名稱，那么應改變這兩個值。如果您希望使用默認名稱，那么有一個簡便地方式本地化這些值。

斷開"Bar Chart Settings"對象和"Call xlLib.CreateBarChart"對象之間的線，從左下方和"Localize..."對象的輸出到"Call xlLib.CreateBarChart"對象的輸入連一條線。這會把ChartSheet和DataSheet的ChartSettingsRecord值變成相應的值，可以用于任何版本Microsoft Office Excel的第一個現有工作表。

位置

從 VEE主菜單Excel [image] Create Chart [image] Create Pie Chart

另請參閱

創建柱狀圖, 創建折線圖, 創建XY圖


把面板圖像發送到圖片

把VEE圖像導出到Microsoft Excel中。

用途

Panel Image to Picture是一個UserFunction，它有4個輸入端。

  • userFunctionName︰為這個UserFunction創建一個圖片名稱，作為圖像發送到Microsoft Excel。

  • upperLeftCell是Microsoft Excel工作單中圖片的起始點。

  • relativeSizeX和relativeSizeY影響著圖片的高度和寬度。在這兩個端上，取值1會把圖片保持在100%的原始尺寸。取值小于1會縮小圖片，取值大于會提高尺寸。

備注

這個UserFunction調用VEE內置函數SavePanelImage()。BMP文件可能會嚴重失常。建議使用.jpg圖片。

位置

從VEE主菜單中Excel [image] Send Panel Image [image] Panel Image to Picture

另請參閱

設置面板圖像


設置面板圖像

為發送到面板函數建立顏色數量和文件類型。

用途

Image Settings對象有兩個參數。

NumberColors - 默認值是256，這是VEE支持的最高顏色數量。

FileSpecifier - 這是把圖片傳送到Excel使用的臨時文件。指定到文件的絕對路徑。确認提供一個文件名及擴展名。擴展名決定著文件格式。如果Excel Library中的文件擴展名為空，那么使用.jpg格式。

位置

從VEE主菜單中Excel [image] Send Panel Image [image] Image Settings

另請參閱

把面板圖像發送到圖片


從單元格中導入數据

把數据從Excel電子表格導入到VEE。

用途

Get Data有兩個端。輸入端接受一個單元格、一個單元格范圍或指明范圍，用來識別從Excel中導入的單元格。輸出端收到導入的數据。例如，附在這個端上的字母數字對象顯示已經導入的值。

如果單元格中包含一個常數，那么會返回這個值。如果單元格是空的，那么會作為字符串返回公式，其格式与格式欄中顯示的格式相同 (包括等號)。

注意，從ActiveX服務器中獲得數据的行為在VEE Execution Mode 5与Execution Mode 6中是不同的。具体地講，Execution Mode 6中改進了獲得數据數組時的數据類型轉換。Calling in 在Execution Mode 5及在Execution Mode 6中調用DataFromCells可能會產生不同的結果。參閱Agilent VEE 6.0有哪些新特點的?#22686;強功能?#37096;分，相關內容是Variant to VEE Data type Conversion - Improved Array Handling。

位置

從VEE主菜單中Excel [image] Get Data [image] Data from Cells


對單元格公式求解

給出單元格公式的運算結果。

用途

提供一個單元格地址。然后Evaluate Cell Formula會返回該單元格中公式的結果。

位置

從VEE主菜單中Excel [image] Get Data [image] Evaluate Cell Formula


搜索數組

VEE Excel Library包括一個稱為Search Array的輔助功能。對一維數組，Search Array返回一定Search Array值的索引。

對二維數組，Excel Library使用用戶提供的值作為索引值，返回相應的[n,1]要素，如具有下述值的一個兩維數組︰[0,22], [1,24], [2,26]。搜索數組值2會得到24，24是數組中的第二個要素。

位置

從VEE主菜單中Excel [image] Utilities [image] Search Array


使用字符串替換

用一個不同的字符串部分替換一個字符串部分。可以控制字符串替換是否區分大小。

用途

stringReplace不要求打開工作簿。stringReplace UserObject上有四個輸入端︰

  • string - 將改變的字符串。
  • outSubString - 正在刪除的子字符串。
  • inSubString - 替換outSubString的子字符串。
  • caseSensitive - 使用0忽略大小寫。使用1強制在inSubString和outSubString之間進行大小寫比較。如果不匹配，那么不能完成替換。為增強性能，在替換時應盡量使用區分大小寫Case Sensitive，而不是使用不分大小寫Case Insensitive。

位置

從VEE主菜單中Excel [image] Utilities [image] String Replace


建立打印設置

使用這個UserObject準備打印使用的打印机。

Open View參數

PrintSettings UserObject由PrintSettings UserFunction調用和Print Settings對象組成。Print Settings記錄對象包含配置打印机所需的所有open view參數。

  • PrintCopies -- 使用這個字段設置要打印的份數。至少要打印一份。

  • ActivePrinter -- 輸入打印机名稱。如果為空，那么會使用默認打印机或指向Excel上次使用的打印机。例如︰\\servername\printername。

  • PrintFromPage -- 打印作業從這里選擇的頁開始，默認值為1。

  • PrintToPage -- 打印作業在這一頁結束。默認值是32767。

備注

使用非英文版Office的用戶可能會注意到默認紙張大小有問題。Excel 2002試圖解決這個問題，它增加了一個屬性Application.MapPaperSize。在使用Excel Library的VEE程序中，這一屬性是"xlApp.MapPaperSize"。如果這一屬性設為真，Excel 2002及以后版本會試圖在不同國家的標準紙張尺寸之間自動切換。安捷倫測試表明，MapPaperSize屬性在Excel 2002和2003中默認為真，但沒有編制默認值文檔。

位置

從VEE主菜單中Excel [image] Printing [image] Print Settings

另請參閱

打印工作簿和工作表和預覽打印作業


預覽打印作業

把活動的工作表檢索到Excel的打印預覽屏幕中。

備注

如果從打印預覽屏幕中選擇打印，之后在程序中對同一工作表使用Print Worksheet對象，那么這個工作表會打印兩次。

Print Preview可以自動看到Microsoft Excel。

位置

從VEE主菜單中Excel [image] Printing [image] Print Preview

另請參閱

打印工作簿或工作表和建立打印設置


打印工作簿或工作表

打印活動的工作簿或工作表。

用途

Print UserObject包含一個Print記錄對象和一個xlLib.Print UserFunction調用。

Print對象有一個下拉菜單項，可以選擇工作表或工作簿。

位置

從VEE主菜單中Excel [image] Printing [image] Print Workbook or Worksheet

另請參閱

建立打印設置和預覽打印作業


Vxl和Excel Library之間的區別

本文列出了在VEE 7.5的Excel Library中使用Vxl 2.0程序時Vxl 2.0用戶遇到的問題。

不影響當前Vxl程序的變化︰

A. Excel Library UserFunction庫文件ExcelLibrary.vxe拷貝安裝在舊的Vxl 2.0位置~installDir\lib\vxl\vxlLibrary.vxe下。Vxl 2.0程序會正常工作，因為它們會在舊位置下找到新庫。建議升級程序，使用新位置~installDir\lib\ExcelLibrary\ExcelLibrary.exe。

B. 下表中提到了7個重新命名的函數，但舊函數名稱作為經過函數保留下來，在面板上標為?#19981;贊成使用?#12290;也就是說，Vxl 2.0程序的工作方式會保持現狀，但這些函數名稱將來可能會消失。

C. 還保留了Vxl 1.0時代的另一個經過函數Open。這允許所有Vxl 1.0程序的工作方式保持不變。Vxl 1.0中的Open在Vxl 2.0中重新命名為OpenRW，現在在Excel Library中重新命名為OpenWorkbookRW。

D. 菜單上的部分項目已經重新命名。例如，Data From Cells變成Get Data，Initialize Vxl變成Initialize Excel Library。新名稱對Vxl程序沒有任何影響。

E. 菜單用來創建菜單對象的.vee文件已經重新命名，但這應該不會影響程序。例如，Save.vee現在是SaveWorkbook.vee。除非進行下面的#4操作，否則其無關緊要。

F.菜單上的菜單項作了移動。例如，菜單底部的About Vxl已經移到頂部(重新命名為What is this menu?)。

G. Vxl Samples原來安裝在~installDir\examples\Vxl\下，現在安裝在 ~installDir\Examples\ExcelLibrary\下。

H. UserFunction Library中專汁煲erFunctions名稱發生變化。這些UserFunction不從任何菜單中調用，只在庫內部調用。將不會為這些函數名稱變化編制文檔。事實上，所有這些專用函數都已經重新命名，變成以zzInternal開頭，以便明确不應直接調用這些函數。

I. 沒有刪除任何樣例，只刪除了FourInARow.xls游戲，但這并不是一個VEE程序。所有Samples已經重新命名，以去掉前面的單詞Example，其中多個范例進一步重新命名，以使其功能更加明确。

可能會中斷Vxl程序的變化︰

1. 主菜單 Initialize Vxl [image] Import Library [image] Library. vxl被重新命名為xlLib。它用于所有庫調用中，如vxl.Initialize調用現在變成xlLib.Initialize調用。如果只修改程序，以考慮已經存檔的其它中斷變化，那么這一特定重新命名無關緊要，程序會象VEE 7.5中一樣運行。但是，如果想通過從Excel菜單中添加另一個對象來修改程序，那么新對象將不能工作。必須修改從Excel菜單中創建的每個新對象，以使用舊的vxl名稱，或修改程序，以使用新的xlLib名稱。

2. 名為xl的導入的全局變量被重新命名為xlApp。在默認情況下，沒有任何菜單項直接使用這個變量，因此不可能會影響您的程序。但是，某些范例使用這個變量，主菜單項Settings的Notepad項目告訴您怎樣直接使用這個變量(如set xl.DisplayAlerts=False)。如果已經使用這個變量，那么必須把使用方式變成xlApp.DisplayAlerts=False。

3. 如果已經自定義Vxl菜單，那么必須重做這一工作，從VEE 7.5 Excel菜單文件入手，這是因為上面(E)中所作的變化。

4. 如果調用了庫中的任何專汁煲erFunctions，上面(H)中提到的重新命名將中斷程序。

變動表

黃色突出顯示了變化部分。

Vxl菜單項名稱 | Excel菜單項名稱 | Vxl UserFunction名稱 | VEE 7.5 Excel Library UserFunction名稱 | 備注
 | QuickStart / ShortCuts |  |  | 7.5中新增內容
Initialize Vxl | Initialize Excel Library | Initialize | Initialize | 參閱中斷變化(1)
Open Workbook | Open Workbook | OpenRW | OpenWorkbookRW | 重新命名UserFunction
Navigation -> Alpha Column From Numeric Column | Navigation -> Alpha Column From Numeric Column | vxlData2CellsAlpha ColFromNumericCol | AlphaColFrom NumericCol | 重新命名UserFunction
Navigation -> Numeric Row和Column From Range | Navigation -> Numeric Row和Column From Range | vxlData2CellsNumeric RowColFromRange | NumericRowCol FromCell | 重新命名UserFunction
Send Data -> Data To Cells | Send Data -> Data To Cells | Data2Cells | DataToCells | 重新命名UserFunction
Send Panel Image -> Panel Image to Picture | Send Panel Image -> Panel Image to Picture | PanelImage2Picture | PanelImageToPicture | 重新命名UserFunction
Data From Cells -> Evaluate Cell Formula | Get Data -> Evaluate Cell Formula | EvalScalar | EvalCellFormula | 重新命名UserFunction
Quit Vxl | Quit Excel Library | QuitVxl | QuitExcelLibrary | 重新命名UserFunction
Utilities -> Iterate Record | Utilities -> Iterate Record | <none> | <none> | New in 7.5


調試Agilent VEE中的程序

調試Agilent VEE程序

VEE顯示開發過程中及程序運行時的錯誤信息，并可以顯示下面的小心信息、錯誤信息和提示信息︰

• 在運行程序時，VEE可以顯示黃色標題的小心框。

• 在運行程序時，VEE可以顯示紅色標題的錯誤框。

• 如果在創建程序時發生錯誤，如在Int16常量中輸入超出范圍的值33000，VEE會顯示一個深藍色標題條的錯誤信息框。

• VEE還會在狀態條中顯示錯誤和小心相關信息。狀態條位于VEE窗口底部。

另請參閱

查看數据流程和程序執行

控制斷點

洙步執行程序

查看調用堆棧

查看一行中的數据

檢查端

使用字母數字顯示進行調試

找到線的端點

捕獲錯誤

解決錯誤

定位錯誤

查看最新錯誤

遵循對象內部的事件順序

遵循程序中的對象執行順序

在复雜的程序中找到一個對象


查看數据流程和程序執行

可以在運行時在VEE程序的Detail View中查看數据流程和程序執行流程。可以在Main Window勾煲erObject和UserFunction編輯窗口中查看數据流程和程序執行。

查看數据和執行流程

1. 切換到相關上下文的Detail View。

2. 點擊工具欄上的Show Data Flow和Show Execution Flows。

Show Data Flow

Show Execution Flow按鈕

3. 運行程序，查看數据和執行流程︰

沿著線移動的小方標表明數据流動。這些小方標表示數据容器。如果想改變小方標移動速度，請參閱下一個標題。

在運行時通過高亮度顯示每個對象，可以顯示執行流程。在對象執行時，對象外面會有一個淺綠色外框進行高亮度顯示。在對象執行后，高亮度顯示變成深綠色。

改變數据流動速率

1. 從File菜單中選擇Default Preferences。

2. 在General一欄上，在Debug組中，點擊Data Flow Rate箭頭，出現下拉列表。可以在1 (最慢)到10 (最快)范圍內設置速率。

3. 如果想把變化保存為新的默認文件VEE.RC，點擊Save。如果想只對這個VEE會話使用變化，點擊OK (直到選擇File [image] New, Open或Exit)。

技巧

通過一次只打開一個功能，可以獨立顯示數据和執行流程。

不管程序是否運行，都可以打開和關閉這些功能。

确認在不需要時關閉這些調試功能，否則程序會變得相當慢。

Show Data Flow和Show Execution Flow命令位于Debug菜單中。命令旁邊的對勾表明該功能打開。

在VEE 4及更高的執行模式下，如果打開Disable Debug Features默認首選項，那么調試功能會失效。

另請參閱

默認首選項

查看調用堆棧


控制斷點

如果在程序中的一個對象上設置斷點，那么在該對象運行前，程序將暫停。然后可以使用Line Probe查看每條線上的數据容器，可以Step或Resume程序執行。可以使用命令，在選擇的對象上切換斷點設置，控制整個程序的斷點。

切換斷點

1. 選擇想改變斷點設置的對象。如果想選擇多個對象，按住Ctrl鍵，然后用鼠標左鍵點擊多個對象。

2. 點擊工具欄上的Toggle Breakpoint按鈕 (Debug [image] Toggle Breakpoint)。將切換選擇的對象上的斷點設置。如果以前已經設置好斷點，那么將清除斷點，對象的高亮度外框消失。如果以前已經清除斷點，那么將設置斷點，對象顯示高亮度外框。

Toggle Breakpoint按鈕

3. 運行程序。在設置斷點的對象前面，程序會暫停。

4. 如果想繼續，點擊其中一個程序控制按鈕︰

Resume按鈕恢复執行。

Step Into按鈕進入UserObject怯煲erFunction。

Step Over按鈕轉到下一個對象。

Step Out按鈕离開UserObject怯煲erFunction。

Stop按鈕停止運行程序。

激活所有斷點

1. 點擊Debug [image] Activate Breakpoints。

菜單命令中的對號表示在運行程序時將激活設置的所有斷點(默認值)。

清除所有斷點

1. 點擊Debug [image] Clear All Breakpoints。

將清除程序中的所有斷點，對象中的高亮度外框消失。

快捷方式

按CTRL+B切換斷點。

技巧

還可以從對象菜單中使用Properties控制對象的斷點。在Behavior類別上，把 BreakpointEnabled變成True或False，設置或清除對象的斷點。

在VEE 4及更高的執行模式下，如果打開Disable Debug Features默認首選項，那么將禁用調試功能。

另請參閱

查看調用堆棧

Default Preferences


洙步執行程序

可以使用三個Step按鈕及工具欄上的其它程序控制按鈕運行程序，一次一個對象。程序控制按鈕包括︰

Step Into按鈕

Step Over按鈕

Step Out按鈕

Run/Resume按鈕

Pause按鈕

Stop按鈕

程序控制按鈕的交互關系

從停止的程序中，在第一次點擊Step按鈕時，程序會PreRun。點擊Step Into按鈕依次運行每個對象。然后會運行用黃色外框高亮度顯示的對象。

Step Into按鈕

如果運行程序時啟用斷點，程序將PreRun，然后一直執行到該斷點。然后可以從斷點開始使用Step Into按鈕依次運行每個對象。

Step Into按鈕

在逐步通過程序的任何一點上，可以點擊Resume按鈕，繼續運行程序。如果想暫停程序，點擊Pause按鈕。如果停止程序，那么在重啟時程序會直達PreRun。

Resume按鈕

Pause按鈕

逐步通過UserObject怯煲erFunction

The three types of Step按鈕s let you control how the program steps through another context in the program such as a UserObject怯煲erFunction:

Step Into進入上下文，在Detail View中打開編輯窗口，逐步通過其中的對象。

Step Over執行整個上下文，轉到程序中的下一個對象。

Step Out离開逐步通過的上下文，它執行其中所有其余對象，然后轉到程序中的下一個對象。

技巧

在VEE 4及更高的執行模式下，如果打開Disable Debug Features默認首選項，那么會禁用調試功能。

另請參閱

查看調用堆棧

Default Preferences


查看調用堆棧

使用Call Stack對話框(View [image] Call Stack)查看要執行的下一個對象及暫停的程序中調用上下文。在保持打開的同時步進通過程序或使用斷點時，最适合使用Call Stack。可以在程序暫停或停止時，從菜單中或使用工具欄按鈕打開和關閉Call Stack。

Call Stack按鈕

Call Stack對話框在狀態行中顯示要執行的下一個對象，列出UserObjects怯煲erFunctions的當前調用，包括輸入變量。下圖顯示了Call Stack及取樣數据。要執行的下一個對象是Main程序中包含的UserObject Gen Sine Waves內包含的Function Generator。Gen Sine Waves有三個輸入︰Freq1, Freq2和Phase。

与程序控件交互

在Call Stack打開時，只有在程序暫停時它才包含信息。在程序正在運行或停止時，它不提供任何信息。

每次在程序暫停時，Call Stack會自動更新，并与程序執行流程保持同步。

在通過下述方式暫停程序時，Call Stack顯示信息︰

按Pause按鈕

使用Step Into, Step Over和Step Out按鈕

設置斷點

程序執行錯誤

存取Call Stack內容

在程序暫停及Call Stack打開時，會顯示當前上下文，高亮度顯示要執行的下一個對象。

如果想存取當前Call Stack列表中的任何上下文，雙擊上下文名稱，程序將顯示上下文。

另請參閱

查看數据流程和程序執行

控制斷點

逐步通過程序


查看線上的數据

使用Line Probe命令(Debug [image] Line Probe)查看任何VEE數据線上傳送的數据容器。必須暫停或停止程序。

為迅速探測一條線，只需把鼠標指針移到所需的線上。指針改變形狀，出現線的末端，概括數据。點擊這條線，出現Line Value對話框，如下圖所示︰

如果探測一條沒有傳輸數据的線(或已經傳輸序列端"ping"的線)，Line Value對話框會報告Nil (empty) container。


檢查端

為檢查端，在打開的視圖中雙擊端。如果對象被圖標化，把鼠標指針放在端上，VEE會自動彈出端名稱。


使用字母數字顯示進行調試

可以在程序中不同點上增加Alphanumeric或Logging Alphanumeric顯示，跟蹤數据流動。在程序正确運行時，刪除這些顯示。AlphaNumeric顯示一個數据容器(一個Scalar值, 一個Array 1D, 或Array 2D)；Logging AlphaNumeric (Scalar或Array 1D)作為以前的值歷史顯示連續輸入。還可以使用Counter，查看對象運行的次數。


找到線的端點

使用Line Probe命令(Debug [image] Line Probe)追蹤一條線，顯示其端點。必須暫停或停止程序。

為迅速探測一條線，只需把鼠標指針移動到所需的線上。指針形狀改變，線會高亮度顯示，并表明端點，點擊線，查看數据容器。


捕獲錯誤

在正常情況下，所有VEE錯誤都通過Error Message對話框報告。但是，通過在某個對象中添加一個Error輸出端，可以捕獲該對象生成的錯誤。

為在對象中添加Error輸出端，從對象菜單中選擇Add Terminal [image] Error Output。

如果有Error輸出端的對象生成錯誤，那么不會出現正常的VEE Error Message對話框。而是由Error端輸出必須由程序處理的錯誤編號。

可以通過各种方式使用Error輸出端︰

使用Error輸出，激活另一個對象，如Raise Error。

使用If/Then/Else，根据錯誤編號确定操作。

使用errorInfo()，查看最后一次捕獲的錯誤。

范例

打開手冊范例目錄中的程序manual37.vee (Help [image] Open Example...)，其中介紹了捕獲錯誤的部分技朮。

另請參閱

errorInfo()

Error Output (對象菜單)

Raise Error


解決錯誤

如果在運行程序時得到錯誤信息，VEE自動把一個紅色輪廓放在發現錯誤的對象周圍。

您可以校正錯誤，輪廓會消失；您也可以點擊Stop按鈕，這將刪除紅色輪廓，然后修复錯誤。如果點擊Stop，那么通過使用View [image] Last Error，在恢复前可以再次查看錯誤。


使用Go To按鈕定位錯誤

下圖顯示了運行時錯誤消息范例。在這個程序運行時，VEE顯示一個Run Time錯誤，在UserObject AddNoise周圍顯示一個紅色輪廓。在按Go To按鈕時，VEE打開UserObject AddNoise，在 A輸入端連接丟失的A + B對象周圍顯示一個紅色輪廓。在大型程序中，Go To功能可以幫助您迅速定位錯誤來源。


查看最后一次錯誤

VEE錯誤由Error Message對話框報告。在報告錯誤時，可能需要關閉錯誤對話框，以訪問程序中的問題。為再次查看錯誤消息，點擊View [image] Last Error。

使用這條命令不能查看對象Error輸出端上處理的錯誤。

在程序再次運行或加載新的程序時，會清除Last Error緩沖器。


遵循對象內部的事件順序

下圖顯示了對象內部的事件順序。

各端運行如下︰

這一事件順序有几种例外情況︰

• 可以增加錯誤輸出端，捕獲對象內的錯誤。錯誤輸出端要優先于標準對象行為。如果在對象執行時發生錯誤，那么錯誤端會發出一條信息，數据輸出端不會啟動。

• 可以在某些對象中增加控制輸入端，它們可能會導致對象立即執行某些操作。例如，可以使用控制端執行對象子函數，如Waveform (Time) 畫面中的Title或Autoscale。到對象的控制線在VEE程序顯示為虛線。

例如，下圖顯示了為波形畫面設置自定義標題的一條控制線。注意為執行這個操作，對象不要求在控制端有數据。對象不執行，而只執行設置標題等操作。可以點擊Show Data Flow，查看到Title控制輸入的控制線怎樣先傳送數据。


遵循程序中的對象執行順序

在VEE程序運行時，各對象按下述順序執行︰

1 先運行Start對象。

下圖顯示了有兩個線程的VEE程序，線程是在VEE程序中用實線連接的對象集合。Start對象位于Flow [image] Start下，用來運行程序中的各個線程。如果程序包括Start對象，那么它們先執行。

2 然后運行沒有數据輸入端的對象。Data [image] Constant對象通常屬于這類對象。

3 只有滿足了所有連接的輸入時，有輸入端的對象才會運行。(記住連接序列輸入是可選的。)


在复雜程序中查找對象

為找到某個對象，特別是在大型程序中，選擇Edit [image] Find。在彈出對話框中輸入對象或函數名稱，VEE會顯示程序中該對象或函數的所有實例和位置。(更詳細的信息請參閱“ 在大型程序中查找函數" 。)


在程序中添加結構

下面的技巧說明了可以怎樣在VEE程序中添加結構。

1. 分析VEE程序的功能。您是否能識別一起執行某項子任務的一組對象？從這些對象中創建一個UserObject。

2. 是否有子任務多次出現在程序中？如果是，創建一個UserFunction完成這一任務，每次在需要時調汁煲erFunction。

3. 繼續構建程序，使汁煲erObjects和UserFunctions構建層級結構。

4. 如果把一個數据容器傳送到多個對象，考慮使用全局變量傳送該數据。

另請參閱

在程序中創建UserObject

在程序中創建UserFunction

UserObject

UserFunction


存檔程序

通過使用下面的技巧，可以更簡便地使用、調試和維護程序︰

1. 為程序提供一個描述性名稱。在保存程序時，使用表明其功能的文件名。這個名稱還會出現在Program Explorer頂部。如果Main Window有一個面板視圖，那么使用其Properties Window為相關的Execution Window輸入一個標題。這個標題會代替Program Explorer中的文件名，在運行程序時出現在Execution Window的標題欄中。這些名稱与程序存檔功能Save Documentation一起使用。

2. 把對象重命名為對您更有意義的名稱。例如，Repeat 100x可能要優于For Count。(在對象的Properties Window中，改變Title項目。)

3. 把輸入端和輸出端重命名為描述性名稱。例如，如果A端輸入一個流速，您可能希望把名稱變成Flow_Rate。(雙擊這個端，在對話框中改變標題。) 不能改變某些端的標題。

4. 使用對象菜單中的Description，為主要對象和函數添加描述。信息可以包括為什么使用該特定對象，輸入和輸出詳細信息，以及在對象上使用的選項。應使用簡短描述，以減少程序容量。

5. 使用Note Pad顯示對象(Display [image] Note Pad)為自己或別人添加注釋。信息可以包括︰

您的姓名和電話號碼及創建程序的日期。

這個程序的功能。

作出改動的日期及改動內容。

6. 通過添加描述性位圖，定制圖標，如UserObject圖標。

7. 使用打印命令，打印輸出程序的硬拷貝。打印命令位于File菜單、Main Window和UserObject/UserFunction編輯窗口的對象菜單及Program Explorer上(用鼠標右鍵點擊名稱)。

另請參閱

在圖標中添加位圖

在面板中添加圖片

Description

Save Documentation


在圖標中添加位圖

可以在任何圖標化的VEE對象中添加位圖。

添加標準位圖

1. 從對象菜單中選擇Properties。在Icon Appearance類別中，選擇IconPicture。

2. bitmaps目錄中提供的位圖顯示在Picture組中。滾動列表，點擊希望的文件名。例如，如果點擊beep.icn，那么Preview區域中會顯示Beep圖標。

為瀏覽其它目錄，點擊Browse，出現Select File對話框，允許您瀏覽目錄，選擇一個位圖文件。

3. 下圖是帶有Beep位圖的UserObject圖標︰

添加自定義位圖

添加自定義位圖的程序与添加一個標準位圖的程序相同。但是，必須先創建位圖。為創建自定義位圖，使用計算机中的相應位圖編輯器(如Microsoft Paint程序)。支持下述文件格式︰

BMP, ICN或GIF

默認位圖目錄是︰

C:\Program Files\Agilent\VEE Pro 7.5\bitmaps

另請參閱

在面板中添加圖片


概況執行參數

使用Profiler (View [image] Profiler)收集与程序有關的執行信息。Profiler測量与程序運行時每個上下文(Main, UserObject怯煲erFunction)使用的匯編程序時間數量有關的執行參數。在希望修改程序，以最大限度地提高效率，改善執行速度時，這些信息具有重要意義。可以從菜單中或使用工具欄按鈕打開和關閉 Profiler。

Profiler按鈕

Profiler畫面中的數据顯示了執行每個上下文使用的匯編程序時間數量。下圖是一個概況范例，其中包括每個上下文的執行次數以及經過的程序時間中使用的時間百分比和秒數︰

編制程序概況

1. 打開程序。

2. 打開Profiler (View [image] Profiler或使用工具欄按鈕)。

在必要時點擊Options，改變顯示數据及把數据保存到文件中的方式。

3. 點擊Profiler上的Start Profiling按鈕。VEE Window狀態欄中高亮度顯示狀態指示符PROF。可以保持打開Profiler，或關閉Profiler；一旦啟動Profiler，不管是否打開，它都會收集數据。

4. 運行程序。

5. 在Profiler打開時，點擊Refresh按鈕更新顯示畫面。

可以在任何程序狀態中刷新顯示畫面，包括正在運行時、暫停時或停止時。在Profiler運行時會一直收集新數据，但必須刷新顯示畫面才能看到新數据。數据會一直保留，直到點擊Clear，打開另一個程序，或點擊File [image] New。

如果想按欄對顯示的數据分類，點擊一個欄的標記，可以按相反的順序對數据重新分類。

6. 點擊Save，把概況數据寫入文件中。必須先點擊Refresh，然后再點擊Save，才能包括最新數据。保存的文件中包括計算得出的%Time and Time(sec)總量。

7. 點擊Stop Profiling，停止收集數据。

技巧

為在工作空間視圖中調用Main Window、UserObject怯煲erFunction，雙擊Profiler顯示畫面中的上下文名稱。

另請參閱

Profiler


消除程序性能障礙

下面介紹了可以用來改善程序執行速度的通用技朮。

使用VEE的VEE 4或更高執行模式，禁用Default Preferences對話框上的調試功能。這些模式在匯編的執行模式下運行程序。

在UserObjects和UserFunctions上，選擇數据輸入端上要求的具体數据類型和形狀；不要把它們設置成Any。指定這些參數可以幫助程序在VEE 4及更高執行模式下更快地運行。對其它對象，把數据類型和形狀設置為Any。然后VEE只在必要時轉換數据類型，節約執行時間。參閱轉換輸入端上的數据類型。

在不需要時，在顯示畫面上關閉Clear at PreRun和Clear at Activate。

在數据對象上使用Initialize at PreRun和Initialize at Activate，而不是使用控制端設置默認值。

把圖形顯示數据采集到數組中，一次繪制整個數組的曲線，而不是繪制各個標量點的曲線。如果曲線的X值間隔固定，使用XY Trace對象，而不是X vs Y Plot對象。

從面板視圖中運行程序。如果面板視圖包含的對象數量少于細節視圖，那么程序的運行速度要更快。

圖形畫面的設置要盡可能簡單。更新時間更快的設置是禁用Grid Type [image] None和所有Layout功能。只在需要時才使用Auto Scale控制輸入，因為它會降慢程序執行速度。

在指示符上關閉不必要的數字顯示，如Fill Bar, Meter, Tank和Thermometer對象。

如果不需要查看顯示的信息，那么圖標化連續更新畫面的對象(如Timer, Counter, Accumulator, AlphaNumeric和圖形顯示對象)。

如果使用Strip Chart顯示畫面，緩沖器容量設置得要盡可能小。

收集數据，在數据中進行處理，然后作為數組處理數据。

在表達式中使用Complex數据，而不是PComplex。大多數數學運算庫將把PComplex轉換成Complex，計算結果，把Complex轉換回到PComplex。

為顯示PComplex數据，把Trig Mode (在File [image] Default Preferences下)設置成Radians。VEE在內部作為弧度存儲PComplex值。

如果導入函數庫(Device [image] Import Library)，在程序不再需要時刪除函數庫(Device [image] Delete Library)。

對要求快速執行程序段，使用文本編程語言創建匯編函數。

一般來說，需要運行的對象越少，程序運行速度越快。在每個對象中執行盡可能多的函數。

另請參閱

減少程序中的對象數量


減少程序中的對象數量

許多VEE對象可以執行一套功能。通過使用下述技朮，程序可以變得更緊湊、更容易維護、運行速度更快︰

在Formula對象中輸入公式，而不是把多個常數和單函數數學對象連接到Formula上的輸入端。可以把多個函數嵌套在一個Formula對象中。例如，可以輸入表達式(sin(ramp(100, 0, 360)))。

在多种條件下使用一個If/Then/Else對象(例如, A == B OR A<=C AND A>D)，而不是使用多個If/Then/Else或Conditional對象。

如果想輸入一維數据數組，使用一個配置為數組的Constant對象，而不是對每個值使用一個Constant對象、然后再建立數組。

如果想讀取文件中所有"其余"數据，在From File對象中使用ARRAY 1D TO END:(*)事務。這要比在單要素讀取上循環、然后把結果采集到數組中更簡單、更快速。

使用Sequencer控制多個UserFunctions的執行流程。

在使用Sequencer時，只對要求Log記錄的事務啟動記錄功能。如果沒有使用Log輸出端，刪除它，可以略微加快執行速度。

另請參閱

Sequencer


提高I/O性能

一般來說，直接I/O提供的I/O性能最快。為優化VEE程序的I/O性能︰

1. 使用与儀器通信的儀器面板對象(或組件驅程對象)創建程序。測試和調試程序和儀器配置。

2. 在程序中添加一個Bus I/O Monitor對象。運行程序，"捕獲"儀器面板或組件驅程發送到儀器的消息及從儀器收到的消息。

3. 重寫程序，以便使用Direct I/O對象与使用"捕獲的"消息的儀器通信。這將加快最終程序中的I/O性能。對由儀器命令組成的長字符串，考慮把它們存儲在連接到Direct I/O對象的數据輸入的Text對象中。

4. 在要求極快速I/O時，可以創建一個匯編的函數，執行儀器I/O功能。

另請參閱

Bus I/O Monitor

Direct I/O

使用Direct I/O對象

使用Compiled Function


程序化地設置和讀取對象屬性

用戶可以在運行時設置或讀取對象的屬性，且不影響該屬性在設計時的值。

程序化地設置和讀取屬性

在對象的Properties 窗口，Design欄中，填入Declared Name 域。Declared Name的值將隱式地聲明一個對象變量，該變量的范圍為Local to Context。設置Declared Name后，你就可以設置/讀取那個對象的屬性了。例如，你可以改變它的背景色，大小, 位置，標題等等。下表顯示了可被程序化設置和讀取得對象及其屬性。

屬性 | 對象
BackColor, ForeColor, Title, Size, Location, and Visibility | 所有VEE對象
Value | Toggle Controls, Constants, Continuous Controls
EnumValue, EnumValues, EnumIndex | Selection controls
EnableOnPing | Confirm (OK) 對象
EnableEditing | 有"Enable/Disable Editing"控制輸入端的VEE數据對象。
PopupPanelTitle | Main, UserFunctions, 和 UserObjects
Size and Location | Main 或 UserFunctions的 PopupPanel
Tab index | 面板視圖中的VEE對象
BackColor | UserFunction/UserObject 和Main的面板視圖

上表中所有屬性都稱為運行時屬性。不同的VEE對象具有不同的運行時屬性。

NOte

在程序化設置/讀取VEE對象的屬性(除 Title，EnableEditing，EnableOnPing，EnumValue，EnumValues，Value 和EnumIndex屬性外)，該VEE對象必須要先加入面板視圖。

不能為Declare Variable對象設置Declared Name 或改變其Variable Scope.

通常，在設置 VEE 對象的屬性時，你可以使用 Declared Name. property = 屬性值。比如，DeclaredName.BackColor = "Blue"。

雖然你不能設置UserFunction的Declared Name 或改變它的 Variable Scope，但是可以使用Title 而非 Declared Name來設置它的屬性。例如，為一個 UserFunction設置BackColor, 你可以使用Title.BackColor ="Blue"。 注意UserFunction的Title是可以改變的。

范例︰設置X_Y Trace對象的ForeColor

1. 選擇 Device [image] Virtual Source [image] Noise Generator。

2。 選擇 Display [image] Waveform (Time)。設置它的Declared Name 為 waveform1并把它加入面板視圖。

3。 連接 Noise Generator 的數据輸出端和 Waveform (Time) 的數据輸入端，并運行該程序。

4. 選擇 Device [image] Formula。 輸入waveform1.BackColor = "blue".

5. 選擇 Flow [image] Confirm (OK)。把它加入面板視圖。連接Waveform的sequence輸出端和Confirm (OK)對象的sequence輸入端。

6. 運行該程序，Waveform的BackColor變為藍色。

注釋

Confirm (OK) 按鈕的EnableOnPing屬性缺省為True，表示當該按鈕被ping時它會變為有效。如果EnableOnPing 屬性為 False，Confirm 按鈕即使被ping也處于無效不能被按。

在下述范例中，OK1是一個初始值為無效的Confirm按鈕對象。在Formula對象中，OK1的EnableOnPing屬性被設置為TRUE。當OK按鈕被按下后，OK1就會變為有效，因為按下OK按鈕會 ping OK1 按鈕。

如果上例中的OK1按鈕的EnableOnPing被設為False, 那么即使OK按鈕被按下，OK1 按鈕也不會變為有效。

另請參閱

Programmatic Properties，改變對象的Declared Name和Declared Scope

ProgrammaticPropertyDemo.vee, DemoTabIndexChangeDemo.vee


改變對象的Declared Name和Declared Scope

Agilent VEE 8.0為Properties窗口下Design欄增加兩個新項。它們是Declared Name和Declared Scope.

在一個VEE對象的Properties窗口中的Declared Name域中輸入一個名稱會隱式地為那個VEE對象聲明一個變量，這個變量具有Object數据類型，且它的Declared Scope為Local to Context。

必須先設置一個VEE對象的Declared Name，才能在運行時改變它的屬性。

注釋

你可以為除Main, Declared Variable, 和UserFunctions之外的所有VEE對象設置Declared Name。

為VEE對象設置Declared Name后，再次進入那個VEE對象的Properties窗口，就可以改變它的Declared Scope。 Declared Scope的初始值為Local to Context。它也可以為Global。如果在一個UserFunction中，它還可以為Local to Library。這使得改變在其他上下文中聲明的VEE對象稱為可能。

缺省狀態下，.NET和COM就有Declared Name， 所以可以不設置它們的Declared Names就修改它們的Declared Scopes。

范例

下面的例子，在一個UserFunction中定義了一個XY Trace對象，然后在Main中把它的BackColor改為綠色。

1. 在UserFunction中定義一個XY Trace對象，并把Function Generator連接到它的輸入端。

2. 將XY TraceSet的Declared Name設為xy_uf，再把它的Declared Scope改為Global；Declared Scope初始為 Local to Context, 表示不可以從該UserFunction之外訪問它。

3. 在一個Formula對象中把XY Trace的BackColor設置為紅色；然后把這個XY Trace加到面板視圖中。

4. 在Main中，首先調用那個UserFuncion。 在5秒延遲后，把XY Trace的BackColor改為綠色。

5. 運行程序，XY Trace先為紅色然后變為綠色。

另請參閱

Programmatic Properties，程序化地設置和讀取對象屬性


Agilent VEE編程介紹

什么是Agilent VEE?

歡迎使用Agilent VEE Pro。Agilent VEE是為用于電子儀器而優化的一种圖形編程環境。更快地實現更好的測量，最簡單地描述其價值。与使用低級語言相比，使用Agilent VEE可以明顯提高軟件原型速度，同時它提供了數百种強大的函數，幫助您分析測量數据。

Agilent VEE構件

通過把圖形對象放在工作區上，然后使用直線編寫這些對象，來創建Agilent VEE程序。這個圖形視圖就是您的程序。您不必執行任何模糊的、容易出錯的步驟，如預處理、匯編或鏈接，而只需編制"方框圖"，按Run。

VEE用"對象"表示程序中使用的構件。VEE對象執行各种任務，如添加數字，制訂邏輯決策，讀取文件，顯示微波頻譜，控制儀器等等。有兩种通用方式創建VEE對象︰從VEE的 Function & Object Browser中，及從VEE的下拉菜單中。

Function & Object Browser按類別整理了200多种VEE函數，如"Trig," "Matrix,"和"Data Filtering"。它創建一個預先配置了選擇的函數的Formula對象。Function & Object Browser還提供了500多种MATLAB函數。

存取Function & Object Browser的一种簡便方式是按工具欄上的 [image] 按鈕，您只需點擊希望的 Type、Category和Function，然后按Create Formula按鈕，就可以獲得放在工作區上的對象。

另外450多种VEE對象整理在五個下拉菜單中。只需點擊主菜單，然后使用相應的子菜單(如有)，點擊希望的對象，把它放在工作區上即可。下面簡要概括介紹了五個下拉對象菜單︰

Flow 這些對象影響著程序流程。某些對象執行傳統執行控制，如條件分支和循環。其它對象使用延遲和選通等操作改變程序和數据定時。

Device 這是划分在一組中的各种各樣的對象，包括使用的子菜單，如Virtual Sources和ActiveX Controls。它提供了方便的實用度具對象，如計數器、定時器和比較器。這里提供了Import Library和Sequencer對象。(如果在檢查的第一個菜單中沒有找到對象，那么應在Device菜單中查找對象。)

I/O 這些對象与VEE程序外面的軟硬件交互。這個菜單包括与儀器、文件、打印机、其它流程等通信的對象。第一個菜單選項是功能強大的Instrument Manager。

Data 這些對象聲明、生成和存取數据。這個菜單包括圖形輸入對象 (按鈕, 旋鈕, 滑尺等)、每种數据類型的常數、全局變量及方便的函數，如Unbuild Array, Merge Record, Concatenator等等。

Display 這些對象幫助您查看數据。這個菜單包括圖形指示器(儀表, 溫度計等)、字符數字顯示、波形(示波器)顯示、各种X-Y圖、頻譜極坐標圖等等。

如需所有VEE函數和對象的字母列表，選擇這個Help文件的Contents and Index，點擊"Reference"部分。

Agilent VEE編程基礎知識

作為程序構件，VEE對象在工作區中表現為一個矩形框。這些框執行程序操作，框之間使用直線連接。這些直線傳送程序數据。數据從對象左側(輸出端)發出，進入右側的下一個對象(輸入端)。數据一直從左向右流動(如任何給定對象所看到的那樣)。

在所有輸入端收到數据后，對象執行操作。在執行操作后，對象把數据發送到所有輸出端。這個周期持續通過程序圖，直到所有對象完成所有操作。如需更詳細的VEE程序流程介紹，請參閱了解傳播內容。

VEE數据傳播模型中的程序流程与C之類的文本語言中的程序流程不同。傳統語言迫使編程人員在非常低的等級上定義執行程序。下面是一個簡單的范例，它為變量賦值，計算變量和。這一任務的C代碼段如下︰

a = 2;
b = 3;
c = a + b;

C語法要求确定是應該先為"a"賦值還是應該先為"b"賦值。但是，實際上這一細節無關緊要，任何順序都是可以的，只要在"a"和"b"相加前都有數据。對VEE陌生的編程人員有時會覺得在數据流程模型中?#32570;乏控制?#32780;感到不舒服，而資深的VEE編程人員則會提高效率，因為他們不需要控制這些細節。

由于只有在收到所有數据時對象才能完成作業，因此所有輸入端必須被連接到某個數据源上。這要求注意另一個重要的VEE功能︰數据類型/形狀轉換由輸入端自動處理。例如，如果一個對象預計浮點數据，收到整數數据，那么其輸入端會自動把收到的數据轉換成正确的類型。盡管VEE為強制實施類型檢查提供了多种可選的方式，但輸入端的默認行為可以把您從類型檢查和類型轉換細節中解脫出來。這同樣适用于數据形狀。輸入端可以收到一個數組或一個標量值，對象自動采取相應的操作。如需与VEE自動數据轉換有關的更詳細的信息，請參閱在輸入端轉換數据類型。

Agilent VEE和儀器

VEE編程環境有力支持電子儀器和測量任務。對早期原型階段，VEE提供模擬信號源和顯示畫面。可以在沒有任何外部硬件的情況下，實驗程序流程和數据處理。如需更多信息，請參閱虛擬來源和波形顯示內容，然后鏈接到其它模擬的設備上。

在準備實際環境數据時，VEE提供了一個Instrument Manager和一個動態I/O服務器，簡化了發現、配置和管理外部儀器的任務。VEE支持多种儀器驅程，允許選擇最适合首選項和/或儀器特點的驅程。在沒有提供儀器時，只需在Instrument Manager中按一個按鈕，就可以使驅程"脫机"，繼續開發程序。如需更多信息︰

參閱Instrument Manager內容。

在本Help文件的Contents中選擇"How Do I..." [image] "Control Instruments"。

在本Help文件的Contents and Index中選擇"Tell Me About..." [image] "Instrument Control Fundamentals"。

Agilent VEE編程提示

Agilent VEE是一种獨特的編程環境，擁有某些其它程序中可能沒有見過的特點。如果您對Agilent VEE感到陌生，那么大多數獨特的特點會給您一個驚喜。即使如此，許多新的VEE用戶仍會發現下述提示很有裨益︰

工具欄為程序控制提供了方便的按鈕，包括︰
(Run), [image] (Pause), [image] (Stop),和 [image] (Step).

如果意外關閉Main窗口，可以使用 View [image] Main (或Ctrl-M)恢复窗口。

如果任何輸入端沒有連接，那么不能運行任何VEE程序。如果不想連接一個輸入端，刪除它。

如果意外選取錯誤的對象，按Esc鍵取消。在選取的對象沒有打開的工作區接收對象時，也可以采取這种校正措施。按Esc鍵，取消對象，恢复正常鼠標操作。

VEE窗口的底部是一個狀態欄。要養成檢查底部狀態欄，确定狀態信息和有益提示的習慣。

更多地了解Agilent VEE

安捷倫提供了許多資源，可以幫助您更多地了解Agilent VEE，例如︰

聯机教程
VEE提供了對新VEE編程人員極具吸引力的多媒体教程。從Welcome Window中選擇"Tutorials"，可以查看這些內容。在啟動VEE開發環境時，會出現Welcome Window。如果VEE已經運行，可以從VEE主菜單條中選擇Help [image] [image] Welcome，進入Welcome Window。

范例程序
VEE提供了100多种工作程序，作為各种概念的范例。從Welcome Window中選擇"Example Programs"，可以瀏覽這些范例。也可以在這個Help文件的Contents 中，選擇"Guide to Agilent VEE Example Programs"。

聯机幫助內容
這個Help文件為定位信息提供了多种方式。Contents欄提供了字母"Reference"、与概念有關的"Tell Me About..."部分、"How Do I..."任務指南及其它有用部分。Index欄可以簡便地搜索特定內容，Find欄中提供了全文搜索(定位沒有合理地位于Index中的任何單詞)。

培訓班
安捷倫舉辦許多客戶培訓班，包括与VEE有關的培訓班。如需更多信息，請選擇︰
Help [image] Agilent VEE on the Web [image] Education/Training

另請參閱

使用Agilent VEE的優勢


Agilent VEE程序怎樣工作

在測試開發中使用Agilent VEE的優勢

Agilent VEE是為構建測試測量應用及帶有操作人員界面的程序而優化的一种圖形編程語言。本版Agilent VEE產品面向的是需要構建复雜的測試測量系統的工程師群体。

VEE在測試開發中提供了許多優勢︰

• 大幅度提高生產效率。許多客戶報告稱，其程序開發時間縮短了最多80%。

• 在各种應用中使用VEE，包括功能測試、設計檢驗、校準和數据采集与控制。

• 通過儀器I/O靈活地控制GPIB, VXI, 串行, GPIO, PC插件和LAN儀器。使用“面板”驅程, VXIplug&play驅程, 標準接口承載的“直接I/O”或從多個厂商導入的庫。

• 在PC上使用ActiveXAutomation和控件，控制其它應用，如MS Word、Excel和Access，協助編制報告、顯示和分析數据或把測試結果放在數据庫中，以備將來使用。

• 提高吞吐量，輕松構建大型程序，更加靈活地進行儀器管理。VEE有一個匯編程序，适合大型复雜程序的專業開發環境，及先進的儀器管理功能。

• VEE支持Visual Studio .NET匯編程序，這意味著VEE支持真正支持Visual Studio .NET的任何文本語言。

• 可以進一步利用在文本語言中的投資，因為VEE還支持其它文本語言，如C/C++, Visual Basic, Pascal和Fortran。

通過從菜單中選擇對象，把這些對象連接起來，可以創建VEE程序。VEE中的結果類似于一個數据流程圖，比傳統代碼行使用和理解起來更容易。使用VEE沒有繁瑣的編輯-匯編-鏈接-執行周期。

下面兩個圖先比較了使用文本語言(ANSI C)編程的簡單函數及之后使用VEE編程的函數。在這兩种情況下，這個函數都創建一個由10個隨机數字組成的數組，找出最大值，顯示數組和最大值。

采用ANSI C文本語言的程序︰

/* Program to find maximum element in array */

# include <math.h>

main( )

{

double num[10], max;

int i;

for (i=0;i<10;i++){

num[i]=(double) rand( )/pow(2.0,15.0);

printf("%f/n", num[i]);

}

max=num[0];

for (i=0;i<10;i++){

if (num[i]>max) max = num[i];

}

printf("/nmax; %f/n", max);

}

VEE中的程序︰

在VEE中，程序使用稱為對象的程序單元構建。對象是VEE程序的構件。它們執行各种函數，如I/O操作、分析和顯示。如上圖所示，在查看對象及其所有連接時，這稱為細節視圖。細節視圖与文本語言中的源代碼類似。

在VEE中，數据以統一的方式從一個對象移動到下一個對象︰左面是數据輸入，右面是數据輸出，上面和下面是運行序列端。

多個對象連接在一起，構成一個程序。程序遵守從左到右的順序。在上面所示的“隨机”程序中，隨机數字添加到Collector - Create Array對象中10次，創建一個數組。然后程序查找數組中的最大值，顯示Max Value和Array Values。

通過使用VEE及其模塊化編程方法，可以降低創建控制儀器、創建定制數据畫面和開發操作人員界面的程序所需的時間。這种測試開發方法可以較傳統技朮大大改善生產效率。

備注

在上圖中，部分對象詳細顯示，而部分對象只顯示了名稱。詳細顯示的對象在Open View中顯示。Open View允許查看對象細節。為節約空間，提高程序執行速度，可以圖標化對象，或減少這些對象，以便只顯示名稱。

例如，在上圖，標有Random Number的對象顯示為一個圖標。標為Create Array的對象顯示為Open View。Open View更大，更詳細。

在Agilent VEE中創建操作人員界面

在VEE中編程的另一個優勢是只需几分鐘就可以創建操作人員界面。

使用上面的“隨机”程序，選擇操作人員所需的對象，并放到面板視圖中。面板視圖只顯示了操作人員運行程序及查看得到的數据所需的對象。下圖顯示了上面“隨机”程序的面板視圖。

備注

程序及其操作人員界面是同一VEE程序的不同視圖。通過點擊VEE窗口標題欄中的細節視圖按鈕和面板視圖按鈕，可以從一個視圖轉到另一個視圖。在程序中所作的任何編輯或更新(細節視圖)都在操作人員界面(面板視圖)中自動實現。還可以保護操作人員界面，防止有人作出不想要的變動。

如需与創建操作人員界面有關的更多信息，請參閱“創建面板視圖(操作人員界面)"。

在VEE中，可以在几分鐘內執行文本語言中可能要用几天才能完成的某些任務。

• 為程序創建直觀的彩色前端。

• 創建可以与鍵盤或鼠標一起使用或只使用鍵盤輸入的操作人員界面。

• 廣泛的一系列用戶輸入和數据顯示功能可供選擇。

• 使用彈出面板，創建焦點，節約屏幕空間。

• 防止有人篡改程序。

• 使用標記，選擇顏色和字体，增加各种格式的蜂鳴器、寫字板、按鈕和開關。

• 使用自己的或標準的商用ActiveX控件，實現用戶輸入或顯示數据。

与Agilent VEE一起利用已有的測試程序

在支持的所有操作系統上，VEE為鏈接傳統測試程序及商用應用提供了多种机制。例如，可以使用VEE，對C, C++, Visual Basic, Fortran或Pascal中 (或操作系統上任何匯編的語言或解釋的語言)的現有測試排序。也可以使用真正支持Visual Studio .NET的任何語言。

VEE還提供了大量的流程間通信功能，与商用應用共享數据，如數据庫或電子表格。VEE還支持与ActiveX Automation和控件及DLL的標準捆綁關系。

使用Agilent VEE控制儀器

VEE為控制及与儀器通信提供了多种選項。

• 在Windows 2000或Windows XP中使用不同厂商提供的450多种儀器的面板驅程(儀器驅程)，及使用各种厂商提供的兼容VXIplug&play的所有驅程。

• 使用VEE的直接I/O，通過標準接口發送儀器命令串，如GPIB (IEEE - 488), GPIO, RS 232, VXI或基于LAN的儀器，進行遠程測試。

• 控制任何制造商生產的PC板卡，只要電路板提供動態鏈接庫即可。

• 使用直接VXI背板控件，采用嵌入式PC或工作站。

• 簡便的、有條理的儀器管理功能，控制各种儀器類型。

使用Agilent VEE改善測試功能

VEE產品提供了下述功能和優勢︰

• 圖形編程，降低了開發和維護時間。

• 与傳統語言集成，如C, C++, Visual Basic, Pascal和Fortran。

• 方便靈活的操作人員界面功能。

• 支持最流行的測試平台。

• 使用ActiveX Automation和控件。

• 安捷倫科技杰出的支持選項系列。

• 簡便強大的存檔工具。

• 簡便地把測試數据移植到標準電子表格和字處理程序中，編制報告。

• 流程間通信工具，与其它程序鏈接起來，如關系數据庫或統計分析軟件包 (6.0版及更高版本)。

• 調試工具，高效開發和維護大型复雜程序(6.0版及更高版本)。

• 產品中包括強大的測試執行工具(6.0版及更高版本)。

• 使用VEE的Web監測功能，實現遠程測試功能 (6.0版及更高版本)。

• 分發程序運行時不受限制(6.0版及更高版本)。

• 低價站點許可(6.0版及更高版本)。

另請參閱

VEE介紹, 安裝Agilent VEE

Copyright (c) 1991-2006年安捷倫科技公司版權所有


執行模式

執行模式

改變執行模式的影響

相關讀物


Execution Mode

了解執行模式

什么是執行模式?

每個VEE版本都有多個執行模式。(在以前的版本中，它們稱為"兼容能力模式") 這些模式允許較新版本的VEE運行使用較舊版本的VEE創建的程序，其運行方式与舊VEE完全相同。這稱為?#21521;下兼容能力?#65292;通過使用這些執行模式，所有VEE版本都實現了100%向下兼容能力。

例如，VEE 4.0版有兩种執行(兼容能力)模式︰VEE 3.x和VEE 4。這允許VEE 4.0運行使用VEE 3.0 (或以前版本)創建的舊程序，其方式与VEE 3.0中完全相同。如果想在Compiled模式下運行VEE 3程序，您可以切換模式，VEE 4將在Compiler下運行程序。

同樣，VEE 5.0版有三种執行(兼容能力)模式︰VEE 3.x, VEE 4和VEE 5。在VEE 6.0版中，增加了VEE 6執行模式。VEE程序知道創建程序的VEE版本及使用的執行模式。在VEE加載程序時，VEE把自己放到相應的執行模式下，因此程序會以与舊版本VEE完全相同的方式運行。

一旦使用執行模式編寫并保存程序，程序將保留該執行模式，除非用戶改變它。例如，假設您在5.0版中開發和保存了一個程序。這個程序使用Execution Mode VEE 5保存。如果在6.0版中加載并保存程序，程序仍有Execution Mode VEE 5。除非改變執行模式(使用Default Preferences對話框或其它方式)，否則程序的執行模式不變，而不管哪個VEE版本加載程序。

VEE 6執行模式將用于VEE 7中。此外，在以前的VEE版本中，有可能在舊版本中運行在新版VEE中創建的程序，這取決于程序中包含哪些功能。但是，不能在以前的版本中運行使用VEE 7編寫的程序。

為什么應該改變執行模式?

如果在現有程序中增加了新功能，那么應該改變執行模式。例如，假設有一個程序是使用5.0版編寫的(使用相關的Execution Mode VEE 5)。為增加6.0版中提供的新功能(如新的數据類型)，應把執行模式變成VEE 6。如果改變程序，但沒有改變執行模式，那么程序中新增的功能可能不能正确運行。

什么時候應該改變執行模式?

在大多數情況下，只要執行模式沒有變化，使用以前的VEE版本編寫的程序將100%在新版本VEE中運行。但是，只有在使用最新的執行模式時，您可能才能增加新功能。

下表列出了各种版本和執行模式將運行的程序組合。注意，只要執行程序不變，舊程序將在任何版本中運行。只有在切換執行模式時，才會發生潛在問題。

執行模式中創建的程序︰

在VEE中運行 | VEE 4 | VEE 5 | VEE 6&7 | VEE 8
VEE 4版 | 運行 | CNA | CNA | CNA
VEE 5版 | 運行 | 運行 | CNA | CNA
VEE 6版 | 運行 | 運行 | 運行 | 運行
VEE 7版 | 運行 | 運行 | 運行 | 運行
VEE 7.5版 | 運行 | 運行 | 運行 | 運行
VEE 8.0版 | 運行 | 運行 | 運行 | 運行

CNA表示不保証兼容能力。如果沒有包括較高版本中獨有的任何功能，那么在較高版本的VEE中創建的程序可能能夠在以前版本的VEE中加載和運行。利用新增功能的程序將不能在舊版本VEE上正确運行，在某些情況下，程序甚至不能加載到舊版本VEE中。執行模式的重要作用是保証現有程序將在新版本VEE上運行，但不能保証新功能在舊版本VEE上運行。

執行模式切換指導準則

在開發新程序時，應使用最新的執行模式。

通過選擇相應的執行模式(VEE 3用于VEE 3.x程序, VEE 4用于VEE 4.x程序, VEE 5用于VEE 5.x程序)，可以運行任何現有的VEE程序。在加載程序時，會自動為舊程序設置相應的模式。

如果加載設置成VEE 5或更低執行模式的程序，并切換到VEE 6執行模式，舊程序可能會正确運行，也可能不會正确運行。大多數程序將正确運行。參閱下面的?#28431;洞修复?#23454;例，這种漏洞可能會導致程序以不同的方式運行。

例如，假設有一個5.0版程序(Execution Mode VEE 5)，包括一個進行WRITE BINARY BYTE事務的To File。在5.0版(及以前版本)中，可以發送"300"，得到"44"寫入文件中。(從技朮上看，這是一個漏洞，因為"300"不能放到一個字節中。)

在VEE 5執行模式中，仍可以獲得"44"，保留程序的兼容能力。但是，在VEE 6執行模式中，您會得到一條錯誤信息，表明VEE不能把300轉換成UInt8 (超出范圍)。

位置

File [image] Default Preferences [image] Execution Mode

另請參閱

執行模式


改變執行模式的影響

下面的范例演示了在更新程序時速度提高情況。本例的重點是沒有儀器I/O時的程序速度。

1 打開examples\Applications子目錄下的chaos.vee程序。

這個程序演示了人口呈爆炸性增長。可以修改程序，如下圖所示，使用Timer對象檢查結果。這些范例在采用Windows 98操作系統的300MHz Pavillion PC上運行，同時還運行另外兩個大型程序。

程序定時執行，在VEE 3執行模式下打開顯示畫面。

下面的畫面在沒有打開匯編程序的情況被圖標化，以改善速度。這使執行時間縮減了大約1/6。

最后，在使調試功能失效的情況下打開匯編程序。為實現最優性能，在全面調試程序，準備投入使用時，在File [image] Default Preferences中复選Disable Debug Features框。

調試工具啟用多种工具，如Show Execution Flow和Activate Breakpoints。在复選Disable Debug Features時，這可以改善程序的大小(在內存中)及程序的速度。可以看到，程序運行速度提高了大約12倍。這三個圖顯示了通過結合使用優化技朮和匯編程序，可以怎樣實現最佳的速度結果。

在下面的兩個程序中，在涉及迭代標量數學例程的程序區域中使用匯編程序，改善VEE速度。本例計算標量值的平方根。(沒有保存結果) 通過使用匯編程序，其速度比使用VEE 3執行模式提高了大約107倍。

VEE包括執行模式，因為在老版本VEE中允許的許多編程選項在當前版本中都不允許(它們現在會生成錯誤信息)。此外，由于ActiveXAutomation和控件功能的某些進步，過去在VEE 4或VEE 5模式下運行的部分程序只需稍作修改，就可以在VEE 6模式下運行。如需与各執行模式之間的區別有關的詳細信息，請參閱VEE Pro高級技朮手冊。對所有新程序，您應該在VEE 6模式中開始。


執行模式變化: 從VEE 3到VEE 4

使用VEE 4.0以前版本編寫的VEE程序的運行方式与在VEE 3模式下完全相同。為保証這一點，在加載舊程序時，會自動啟動解釋程序。本節介紹了VEE 4.0版、即VEE 4模式下的新功能和增強功能。

匯編程序模式下線的顏色

在匯編程序模式下，VEE根据線上流過的數据類型為連接對象的數据線指配不同的顏色。下面列出了默認的顏色及顏色屬性名稱。可以在從File菜單選擇的Default Preferences對話框中改變其設置。在Screen Element框中選擇想改變的線，點擊Color Value框，打開調色板，點擊首選的顏色。點擊OK，為選擇的線型保留新顏色。

  • 深天藍色: 數字(IInteger或Real類型)

  • 深天藍色: 复數(Complex和PComplex類型)

  • 中橙?色: 字符串(String類型)

  • 中天藍色: 序列輸出(空值, 通常來自序列輸出線)

  • 洋紅色: 高亮度顯示

  • 黑色: 未知類型或類型沒有優化(如Record類型)

如果數据類型是一個數組，那么VEE會顯示較寬的線。為提高速度，應檢查程序，确定帶顏色的線。非黑線越多，程序的運行速度越快。

潛在的兼容能力問題

使用VEE 4.0以前版本編寫的程序自動在VEE 3模式下運行。使用VEE 4.x編寫的程序自動在VEE 4模式下運行。使用VEE 5.x編寫的程序自動在VEE 5模式下運行。但是，可以隨時改變程序的執行模式。

在把現有程序從VEE 3變成VEE 4時，在某些區域可能會出現兼容能力問題。下面介紹了潛在的問題區域。使用老版VEE的相關信息与使用解釋模式或VEE 3模式相同。

分時UserFunction

在VEE 4.0以前的版本中，UserFunction在程序其余部分不進行分時。在匯編模式下，在從不同的線程調用時，UserFunction將進行分時。在不希望并行化時，一定要使用Call對象之間的序列端。

只有在從Call, Formula, If/Then/Else或Sequencer對象調用時(只從Function字段調用時)，UserFunction才進行分時。在從Call或上面列出的其它對象調用時，現在斷點也可以用于UserFunction中。

在從To File、To String或類似對象調用，或通過控制端提供公式時，UserFunction不進行分時，也不能使用斷點。

如果正在執行UserFunction，再次從程序的另一部分調用它，那么將阻塞該調用，直到原始調用返回。

UserObjects

UserObject將一直在以前版本中分時，但在匯編模式下，其只在從不同線程調用時才進行分時。

函數優先次序

從Formula對象調用的函數優先次序已經變成︰

1 內部函數(如sin()和totSize())

2 局部UserFunction

3 導入的UserFunction

4 匯編的函數

5 遠程函數

在VEE 3執行模式下，內部函數的優先次序最低，因此可以使用自己的函數覆蓋內部函數，如totsize()或fft()。

Auto Execute和Start

在使用某些對象的Auto Execute功能時，行為略有變化。在匯編模式下，其行為就象對象直接掛到Start對象、按下Start按鈕一樣。這一變化對大多數程序沒有影響。

OK按鈕和Wait for Input

大多數异步對象如OK對象，或已經啟動Wait for Input的任何對象，將在下面兩個領域中在匯編模式下更好地工作︰

步進︰在以前的版本中，這些對象上的步進通常會結束程序。在匯編程序模式下，步進可以正常工作。

CPU使用︰在以前的版本中，執行這些對象通常會提高CPU使用量。在匯編程序模式下，CPU保持空閑狀態。

沒有數据的Collector

在以前的版本中，如果ping還沒有使用數据ping通的Collector的XEQ端，那么會輸出一個空容器。在匯編程序模式下，如果在匯編時已知數据類型，那么會得到該數据類型的零個要素的數組。否則，會得到Integer類型的零個要素的數組。

這一變化允許類型推論更加一致，從Collector對象下游生成更好的p代碼。注意空totSize()會得到一個1，而零個要素的數組的totSize()會得到一個零。

沒有數据的Sample & Hold

在以前的版本中，如果ping還沒有使用數据ping通Sample & Hold對象的XEQ端，那么會輸出一個空容器。在匯編程序模式下，會產生下面的錯誤(錯誤號937)︰

Sample & Hold was not given any data.

這一變化允許類型推論更加一致，從Sample & Hold對象下游生成更好的p代碼。

Timer對象

在以前的版本中，如果在Time1端之前ping Time2端(底部數据輸入端)，Timer對象會輸出一個沒有定義的結果。在匯編程序模式下，如果執行各端時失序，Timer對象會生成錯誤。

反饋周期

在匯編程序模式下，在反饋周期內部要求一個Junction對象。不再要求Start對象。在檢測到沒有Junction的反饋時，會生成下面的錯誤(錯誤號935)︰

在反饋周期內部要求一個Junction，下面是兩個范例。

VEE 4.0及更高版本不允許無效連接，如對象的數据輸入端連接到數据輸出端，或對大多數對象把序列輸出端連接到數据輸入端。

并行線程

在VEE 3執行模式中，獨立線程將在每個線程之間循環，這意味著將在一個線程中執行一個對象，然后將在其它線程中執行一個對象，依此類推。在匯編程序模式下，這一行為沒有保障。

循環范圍

為提高循環性能，只在第一個迭代開頭、而不是在每次迭代時檢查迭代器的范圍(如For Range對象中的Step字段)。對象的字段在運行時變成灰色，表示不能改變其值。如果在正在運行循環時取值變化，那么將忽略到迭代器的數据輸入。

例如，如果在循環運行時通過數据輸入端改變For Range對象的Step值，那么在VEE 4及更高的執行模式中將忽略它。在以前的版本中，在每次迭代時都會檢查步進值。

UserObjects和Calls With XEQ Pins

在4.0以前的版本中，可能會在滿足所有數据輸入端之前在UserObject或Call對象上的XEQ端運行UserObject怯煲erFunction。其沒有定義連接到未清除的數据輸入的UserObject怯煲erFunction內部的對象行為。在VEE 4及更高的執行模式中，不允許進行這种操作。這些對象上的XEQ端將生成錯誤，在這些對象中不再添加XEQ端。

OK Buttons With XEQ Pins

在4.0以前的版本中，在按OK按鈕或在XEQ端發送數据時，帶有XEQ端的OK對象只執行一次。在VEE 4及更高的執行模式中，每次在XEQ端發送數据時，都會執行OK按鈕。在OK對象中不再添加XEQ端。

帶有EOF端的From File

在4.0以前的版本中，From File對象上的數据輸出端處理方式不同于VEE中的其它數据輸出端。如果From File位于循環中，那么在執行EOF數据輸出端時，輸出端上的數据會保持有效。

在VEE 4及更高的執行模式中，每次在執行循環時，將不檢驗來自From File對象的數据輸出(与所有其它對象上一樣)。因此，在執行EOF端時，數据輸出已經無效，不能傳播。

下面的范例說明了這种情況。在4.0以前的版本中，即使執行另一個循環迭代，輸入到Formula上A中的數据仍保持有效。為在Formula的B中輸入有效數据，將執行EOF端(在底部)，然后執行Formula。

.

在VEE 4及更高的執行模式中，只要下一個循環迭代開始，那么將不會檢驗輸入A的數据。由于Formula在相同的循環迭代上沒有獲得有效輸入，因此它永遠不會執行。

并行聯接

在VEE 4.0以前的版本中，如果有与Junction對象并行連接的沒有限制的對象，那么連接順序會影響執行順序。在VEE 4及更高的執行模式中，連接的順序無關緊要。

循環相交

在VEE 4.0以前的版本中，可以使迭代對象相交。其沒有定義執行順序，但會受到連接順序的影響。在VEE 4及更高的執行模式中，只允許使用通過Junction對象相交的循環。任何其它相交循環會生成錯誤938。VEE不能匯編這部分程序。參閱下面的范例。

通過聯接使循環相交

在VEE 4.0以前的版本中，下面的范例將先執行Integer。在程序遇到Break時，它將停止。在VEE 4及更高的執行模式中，下面的范例在Integer對象后運行For Count對象，因為Break沒有停止程序。

Open View對象變化

在VEE 4.0以前的版本中，可以在程序正在運行或程序暫停時改變open view字段中的數据。這些變化將影響程序行為，結果沒有保障。在VEE 4及更高的執行模式中，在程序正在運行或程序暫停時許多對象不允許進行這類修改(輸入字段變成灰色)。部分范例如下︰

  • Formula和If/Then

  • Collector

  • 所有Transaction對象的事務

  • Get Mappings和Set Mappings

  • Get Values和Set Values

  • 常數的屬性，如設置Scalar或1D Array, Wait for Input或Auto Execute

  • 設置屬性，如Clear at PreRun

  • UserObject和UserFunction Trig Mode

  • Dialog Box屬性

在對象上增刪輸入端或輸出端在運行時會變成灰色(但在暫停時不會)。如果在程序暫停時進行這一操作，那么程序會停止(与VEE 4.0以前的版本中一樣)。

表達式中的數組語法

在程序加載時，將重新解析輸入數組語法、沒有逗號的表達式，如[1 2 3]，并自動修改成使用逗號，如[1,2,3]。這适用于VEE 3和VEE 4模式下的程序。


執行模式變化: 從VEE 4到VEE 5

在VEE 5.0中，VEE 4和VEE 3模式保留了VEE 4.0中設置的兼容能力定義。其只是略有變化，不影響原來的執行模式下(VEE 3或VEE 4)運行的現有程序。如果您計划把程序從舊模式變成新模式，那么了解這些變化非常重要。

關于VEE 5執行模式

VEE 5執行模式是VEE 4模式的超集。VEE 5模式保留了上面介紹的匯編程序功能，引入了影響程序兼容能力的明顯變化。大多數變化可以支持ActiveX Automation和控件。

如果使用本節中介紹的任何功能，即使不使用ActiveX，其它變化可能仍會影響編程技朮。如需与在VEE中使用ActiveX有關的更多信息，請參閱在VEE中使用ActiveX Automation。

把程序變成VEE 5執行模式

舊程序將以相應的舊執行模式自動打開。如果您想把舊程序變成新模式，您必須使用文件菜單下的Default Preferences手動完成這一操作。在把程序變成VEE 5模式時，可能會發生錯誤。會出現一個列表，解釋出現的問題。您需要修复這些錯誤，然后VEE 6.0才能接受切換到VEE 5模式。VEE 6.0不會自動修訂任何程序部分來修复錯誤。

VEE 5執行模式變化

為幫助您了解怎樣修复錯誤，下面介紹了VEE 5模式兼容能力變化。

備注

如果您想把VEE 3.x程序變成VEE 5模式，您應該先确認其在VEE 4模式下工作，然后把它們變成VEE 5模式。如需轉換相關幫助，請參閱“執行模式變化︰從VEE 3到VEE 4" 。

菜單變化

作為VEE 5.0中增加的ActiveX支持的一部分，Device菜單略有變化。已經增加了下面的新菜單項︰

ActiveX Automation References…

ActiveX Control References…

ActiveX Controls

此外，用來打開Select Functions對話框的菜單項Math & Functions現在叫作Function & Object Browser，用來打開Function & Object Browser。仍可以以相同的方式使用它，為程序選擇數學運算符和函數，其擴展功能支持ActiveX。

表達式

下面的變化影響著包含表達式的對象，如Formula︰

  • SET和ByRef是ActiveX automation使用的新關鍵字。這些關鍵字被預留，不能作為端的名稱使用。

  • ActiveX automation支持新的語法，如excel.worksheets(1).cells(1,2) = 2。

  • 在VEE 3和VEE 4模式下，在程序加載時，會重新解析輸入的沒有逗號的數組語法表達式，如[1 2 3，并自動修改成使用逗號，如[1,2,3]。在VEE 5和更高模式下，輸入沒有逗號的數組語法，如[1 2 3]，在Formula丟失焦點時會導致錯誤。

  • 1值會返回一個INT32，1.0會返回一個REAL64。以前這兩個值都會返回一個REAL64。

  • ActiveX automation有兩個新的內置函數︰CreateObject()和GetObject()。

  • ActiveX automation有兩個新的內置常數︰true和false。

變量

下面的變化影響著變量︰

  • 在打開Delete Variables at PreRun時(在Default Preferences中)，如果其參考ActiveX控件，那么不會刪除全局變量。

  • Declare Variable對象有一個新的變量類型，稱為Object，用于ActiveX automation。

  • 輸入端還作為Required Type提供了新的Object變量類型，但其不能強制轉換到另一种類型或從另一种類型強制轉換過來。

全局名字空間

全局名字空間規則已經變化，它通過以下方式影響著為變量、函數和庫提供的名稱︰

  • Local UserFunctions、Library名稱、全局聲明變量和未聲明變量和庫局部聲明變量現在都處在同一個名字空間中，必須擁有唯一的名稱。如果現有程序包含一個以上的名稱實例，那么這會影響現有的程序。例如，不能有名字都是daily_results的UserFunction和聲明全局變量。在把程序切換到VEE 5模式時，這會導致錯誤。

  • 在Library內部，本地UserFunctions和庫局部聲明變量處在同一個名字空間中，必須擁有唯一的名稱。在把程序切換到VEE 5模式時，或者如果把包含名稱沖突的Library導入到VEE 5模式程序中，這會導致錯誤。

  • 在所有模式下，Formula對象都允許使用新的語法，如︰

    lib.func(a,b) = RightHandExpr

    這在所有模式下都會正确解析。但是，它只能在VEE 5和更高模式下正确執行，在VEE 3和VEE 4模式下會導致運行時錯誤。

在VEE查找Formula中使用的變量和函數名稱時，全局名字空間變化還把VEE 5和更高模式下使用的優先順序變成下面的順序︰

1 本地輸入/輸出端。

2 聲明的上下文局部變量。

3 在UserFunction上下文中時聲明的庫局部變量。

4 全局聲明變量和未聲明變量, 局部UserFunctions, Library名稱。這些名稱必須是唯一的。

5 內置函數, 如sin()和totSize()。

6 ActiveX控件和automation常數，這取決于使用Device [image] ActiveX Automation References或ActiveX Control References參考了哪個庫。例如，Excel的自動庫中存在許多常數，如xlMaximized。

7 Imported UserFunctions, Compiled Functions和Remote Functions按隨机順序出現。為保証獲得正确的函數，与myLib.func()中一樣，應包括導入的Library的名稱。

這一新順序怎樣導致舊程序失效的异常范例可能會涉及一個Formula，其中包含表達式sin(90)，并有一個名叫sin的數据輸入端(一個變量)。在VEE 3和VEE 4模式下，VEE忽略輸入端名稱，調用sin()內置函數。

但VEE 5和更高模式采用新的優先順序，查找函數和變量名稱。因此，VEE 7.0查找端名稱，假設它在輸入上有一個ActiveX對象，試著調用對象的默認方法。調用ActiveX對象默認方法的表達式cells(1,1)与sin(90)類似。如需与ActiveX有關的信息，參閱在VEE中使用ActiveX Automation。

READ TEXT事務

在VEE 3和VEE 4模式下，采用TOKEN格式及EXCLUDE CHARS的READ TEXT事務不會使讀指針前移，以便不包括指定字符。下面是VEE 4模式下的范例︰

這是意想不到的結果。預計結果是排除字符"*"隔開的每個短語都會出現在單獨的字母數字顯示畫面中，如上面的VEE 5模式范例中所示。

To/From File和To/From DataSet之間交互

在VEE 3和VEE 4模式下，在EXECUTE REWIND事務中使用To File或 From File對象訪問与To DataSet或From DataSet對象相同的數据文件的程序可能會導致意想不到的交互。更具体地說，如果程序使用From File (對EXECUTE REWIND)從文件中讀取數据，然后使用To DataSet把數据寫回同一個文件，數据寫入可能會不正确。

在使用From DataSet和To File時，可能會發生類似的交互。在VEE 5和更高模式下，解決了這种意想不到的交互，從而數据會正确寫入文件。但是，我們仍不建議在同一個文件上混合使用To/From File操作和To/From DataSet操作。


執行模式變化︰從VEE 5到VEE 6

在VEE 6.0中，VEE 4和VEE 3模式保留了VEE 4.0中設置的兼容能力定義。其只是略有變化，不影響原來的執行模式下(VEE 3或VEE 4)運行的現有程序。如果您計划把程序從舊模式變成新模式，那么了解這些變化非常重要，具体變化如下。

關于VEE 5執行模式

VEE 5執行模式是VEE 4模式的超集。VEE 5模式保留了上面介紹的匯編程序功能，引入了影響程序兼容能力的明顯變化。大多數變化可以支持ActiveX Automation和控件。

如果使用本節中介紹的任何功能，即使不使用ActiveX，其它變化可能仍會影響編程技朮。如需与在VEE中使用ActiveX有關的更多信息，請參閱在VEE中使用ActiveX Automation。

新的數据類型

Int16, Real32, Variant和UInt8是VEE 6.0中新的數据類型。所有新數据類型和新事務，如WRITE TEXT INT16，會出現在所有執行模式中。但是，新事務在舊模式下采取舊的行為方式。

例如，在VEE 5模式下，WRITE BINARY INT16實際上作為WRITE BINARY INT32操作，不會把數据轉換成Int16。在VEE 6模式下，WRITE BINARY INT16則會把數据轉換成Int16。如需了解VEE執行模式怎樣改變程序行為方式，參閱了解傳播。

Variant到VEE數据類型轉換 - 改善了數組處理能力

在從ActiveX Automation Server (如Excel)或ActiveX控件返回數据時，VEE必須把automation數据類型轉換成VEE數据類型。在VEE 5.0中，Variants的數組轉換成VEE Record。在VEE 6.0中(在VEE 6執行模式下)，如果所有要素的數据類型相同，那么由多個Variant組成的數組轉換成一個VEE數組。(對混合數据類型，較VEE 5.0行為沒有變化。)

如果一個數組的所有要素的數据類型相同，那么Variant數据類型与VEE數組數据類型的映射如下。

備注

這一功能只在VEE 6執行模式下提供。

Variant數組數字類型 | VEE 7.0數据類型
VT_UI1 VT_BOOL VT_I2 VT_UI2 VT_I4 VT_UI4 VT_R4 VT_R8 VT_DATE VT_CY VT_BSTR VT_DISPATCH | UInt8 Int16 Int16 Int16 Int32 Int32 Real32 Real64 Real64 Real64 Text Object

但是，新的VEE 6數据類型和ActiveX automation servers之間的兼容能力方面仍有一些空白︰

• Boolean (VT_BOOL), Date (VT_DATE), Currency (VT_CY)和Error (VT_ERROR)之類的數据類型沒有相應的內置VEE數据類型。下面介紹的Set函數和Query函數中支持對ActiveX中的"ByRef"使用這些數据類型。

• 某些特殊的Variant值，如Empty (VT_EMPTY)和NULL (VT_NULL)，沒有同等值，不能唯一地識別這些值。

Set函數

Set函數告訴VEE在ActiveX Automation操作過程中，這些函數返回的容器將特殊對待。Set函數包括︰

asVariantBool()

asVariantCurrency()

asVariantDate()

asVariantError()

asVariantEmpty()

asVariantNull()

Query函數

Query函數用于從自動操作方法和屬性的返回值創建的容器中。Query函數包括︰

isVariantBool()

isVariantCurrency()

isVariantDate()

isVariantError()

isVariantEmpty()

isVariantNull()

更新的函數

VEE 6.0中更新了下述函數︰

whichOS() — 更新了"Windows_98"和"Windows_2000"的返回值。

createObject() — 更新了可選的第二個參數，指定了遠程主計算机的名稱。


執行模式變化: 從VEE 6&7 到VEE 8

在Agilent VEE 8.0中，VEE 6&7、VEE 5、VEE 4和VEE 3執行模式保留其兼容能力定義集。它們略有變化，但不影響在原始執行模式下運行的現有程序。如果您計划把程序從舊模式轉換成新模式，那么有必要知道這些變化。下面介紹了這些變化。

關于VEE 8執行模式

VEE 8執行模式是VEE 6&7模式的超集。主要變化是VEE 8.0引入了兩种數据類型。

新數据類型

Int64和Boolean是Agilent VEE 8.0中新的數据類型。

Int64表示從-9223372036854775808到9223372036854775807的值，有22位數据精度。

Boolean表示一個值，其可以是True或False。

在所有執行模式下，將在事務中添加新的事務格式WRITE TEXT INT64和WRITE TEXT BOOLEAN。在每种執行模式下，輸入數据將轉換成Int64或Boolean。如需了解VEE執行模式改變程序行為的方式，參閱了解傳播。

Integer常數運算

Integer常數運算在VEE 8模式下可能會返回不同的數据類型。

運算 | 數据類型
MaxInt32+1 | Int64
MaxInt32-1 | Int32
MaxInt64+1 | 數据溢出#514錯誤
MaxInt64-1 | Int64
MinInt32-1 | Int64
MinInt32+1 | Int32
MinInt64-1 | 數据溢出#514錯誤
MinInt64+1 | Int64

內置數字常數

True和False是VEE 8執行模式下的Boolean數据類型，它可以用來直接設置.NET或COM屬性。例如，可以在下面的公式中設置TreeView的ShowLine屬性︰

TreeView.ShowLines = true;

MaxInt64和MinInt64提供了最大Int64 Constant或最小Int64 Constant。

在VEE 8模式下，.NET運算構建程序將對Boolean數据類型使用True/False，在VEE 6&7模式下則使用asVariantBool( )。

Variant到Agilent VEE數据類型轉換 - 新增VT_I8

Variant數組成員類型 | Agilent VEE 8.0數据類型
VT_UI1 VT_BOOL VT_I2 VT_UI2 VT_I4 VT_I8 VT_UI4 VT_R4 VT_R8 VT_DATE VT_CY VT_BSTR VT_DISPATCH | UInt8 Boolean (Agilent VEE 8.0中新的數据類型) Int16 Int16 Int32 Int64 (Agilent VEE 8.0中新的數据類型) Int32 Real32 Real64 Real64 Real64 Text Object

兩個新的內置類型轉換函數

asBoolean()

asInt64()

另請參閱

執行模式變化: 從VEE 5到VEE 6&7


相關資料

如需与本手冊中討論的儀器控制內容有關的更詳細的信息，請參閱下述資料。

• 惠普接口總線教程說明(惠普公司, 1987), 部件編號5021-1927。

本文簡要介紹了IEEE 488.1和IEEE 488.2中包含的重要概念。如果您不熟悉IEEE 488.1接口，最好看一下這個文件。

• IEEE標準488.1-1987, IEEE程控儀器標準數字接口 (電气和電子工程師學會, 1987)。

這個標準定義了設計和構建GPIB (IEEE 488.1)接口要求的技朮細節。這個標準包含与協議有關的各种電气規范和信息，超出了大多數編程人員的需求。

• IEEE標準488.2-1987, 与ANSI/IEEE標準488.1-1987一起使用的IEEE標準代碼、格式、協議和常用命令 (電气和電子工程師學會, 1987)。

本文介紹了實現程控儀器標準命令(SCPI)的儀器使用的底層消息格式和數据類型。

• IEEE標準728-1982, 用于ANSI/IEEE Std 488-1978等的IEEE推荐代碼、格式轉換慣例(電气和電子工程師學會, 1983)。

• VMEbus儀器擴展, 包括: "VXI-0, Rev. 1.0: VXIbus規范概述"和"VXI-1, Rev. 1.4: 系統規范," VXIbus協會公司, 1992。

• HP VISA用戶指南(惠普公司, 1998), 部件編號E2090-90035。

本文适合創建自己的VXIplug&play驅程的用戶，提供了与處理和使用VXIplug&play驅程有關的其它信息。


關于匯編程序

關于匯編器

為使用匯編器，并包括ActiveX Automation和控件，應把Execution Mode設置成VEE 6&7 or higher。如果想把VEE 3程序轉換成VEE 8模式，那么應先确認其能夠在VEE 4、VEE 5和VEE 6&7模式下工作，因為每個模式之間會存在一些程序執行差异。

備注

為使用匯編器，不一定要了解本節中的信息。本節介紹了匯編器背后的概念，僅供參考。与匯編器有關的信息适用于VEE 4及更高模式，但略有變化。

匯編器可以用于在VEE 4, VEE 5, VEE 6&7或VEE 8模式下運行的程序。VEE匯編器把VEE程序轉換成p代碼，但沒有机器語言或生成可執行程序。

匯編器允許VEE︰

• 在匯編時預測(而不是在運行時确定)對象執行順序

• 确定某些數据線上流動的數据類型

• 優化代碼生成

• 為任何給定的VEE對象生成和執行最優的p代碼

在按Run按鈕時，VEE程序透明地進行匯編。它全面支持步進和斷點，并支持Show Execution Flow、Show Data Flow和Line Probe。

在以后運行相同的沒有修改的程序時，不要求重新匯編。在修改程序時，只需重新匯編需要重新匯編的上下文(這在很大程度上与增量匯編器類似)。使用匯編器可以為大多數程序帶來好處，但實際結果可能會變化。例如，使用多級嵌套循環的程序的速度提高程度要高于進行大量I/O或屏幕更新的程序(如顯示畫面)。

在匯編模式下，迭代器和公式在執行速度改善程度上最好。使用以前版本的VEE編寫的程序運行方式可能不會与匯編器完全相同。這可能是由于具体編程技朮、使用沒有存檔的負面效應、甚至存檔行為略微變化導致的。


儀器控制基礎知識

VEE支持与儀器通信的多种對象。

下表概括了這些儀器控制對象之間的區別。

VEE對象 | 儀器訪問 | 主要好處 | 支持的接口
Direct I/O | 直接与任何儀器通信。 | 快速I/O。可以控制任何儀器 | GPIB, 串行, GPIO, VXI和LAN
To/From VXIplug&play | 要求儀器制造商提供每個平台專用的VXIplug&play 驅程。要求安裝VISA。 | 快速I/O。驅程可以由多個應用軟件使用 | GPIB, VXI, USB, LAN和串行
IVI-COM Driver | 与安裝了IVI驅程的儀器通信 | 儀器互換能力 | GPIB, VXI, LAN, USB, 串行
NIDAQ Driver | 驅程通過多個不同的接口類型与National Instruments插件通信 | 簡便易用的NI儀器 | NI-DAQmx, NI-DMM, NI-SCOPE, NI-FGEN, NI-SWITCH和傳統 NI-DAQ
Multi-Instrument Direct I/O | 直接与多台儀器通信 | 快速I/O。可以控制任何儀器 | GPIB, 串行, GPIO, VXI和LAN
Panel Driver | 要求VEE提供的Instrument Panel Driverb | 簡便易用 | GPIB和VXI
Component Driver | 要求VEE提供的Instrument Panel Driver | I/O速度比Panel Driver快 | GPIB和VXI
PC Plugin Card Driverc | 要求儀器制造商提供ODAS驅程 | 快速I/O。驅程可以由多個應用軟件使用 | PC插件插槽

b. Panel Driver有時也稱為"VEE驅程"。

c. VEE 8.0中不再提供PC插件支持。

To/From VXIplug&play、Panel Driver、Component Driver、IVI-COM Driver、NIDAQ Drive和Plug&Play Driver對象允許控制儀器，而不用了解儀器編程助記符和語法細節。如果您首選通過發送低級助記符与儀器通信，或者如果沒有為儀器提供驅程，那么可以使用Direct I/O。

備注

可以使用所有這些方法，与VEE程序內部的不同儀器通信。但是，不要与任何其它方法一起使用VXIplug&play驅程，与同一程序中的同一台儀器通信，否則可能會發生意想不到的結果。


Direct I/O介紹

Direct I/O對象在很大程度上允許以与讀寫文件相同的方式讀寫任何儀器數据。您可以全面存取任何儀器的任何程控功能。它不要求儀器驅程文件，但必須詳細了解儀器的編程命令，才能使用Direct I/O。為使用Direct I/O与GPIB、VXI或Serial設備通信，必須安裝I/O庫。

Direct I/O對象還方便地支持學習字符串。學習字符串是某些儀器支持的專用功能，允許從物理儀器的前面板設置測量狀態。一旦配置儀器，可以從Direct I/O對象菜單中選擇Upload，把儀器的整個測量狀態上傳到VEE。通過使用Direct I/O對象，可以從程序內部調用測量狀態。

Direct I/O范例

下圖顯示了從HP 34401A万用表獲得識別字符串的Direct I/O對象設置︰

Direct I/O對象中的第一個處理把文本字符串*IDN?寫入GPIB地址722上的HP 34401A。這導致HP 34401A發送識別字符串，第二個處理讀取這個字符串，輸出到AlphaNumeric對象。

如需与怎樣配置VEE使用Direct I/O有關的信息。請參閱配置Direct I/O對象。如需与怎樣使用Direct I/O對象有關的詳情，請參閱使用Direct I/O對象。

MultiInstrument Direct I/O

MultiInstrument Direct I/O對象允許使用直接I/O處理從一個對象控制多部儀器。這個對象看上去与Direct I/O對象相同，但MultiInstrument Direct I/O對象中的每個處理只能尋址單獨的一部儀器。

這個對象是標準處理對象，可以用于VEE支持的所有接口。由于MultiInstrument Direct I/O對象不一定控制一部儀器，因此標題中沒有列出儀器名稱、地址或實地模式條件。

通過使用MultiInstrument Direct I/O，可以減少程序中儀器專用Direct I/O對象的數量，從而提高性能，這對VXI接口特別重要。在進行儀器控制時，VXI接口的速度要比GPIB快。

下圖顯示了MultiInstrument Direct I/O對象及其I/O Transaction對話框。對象被設置成与HP E1413B、HP E1328和HP 3325通信。

如需与使用MultiInstrument Direct I/O對象的進一步信息，請參閱“使用MultiInstrument Direct I/O對象"。


VXIplug&play介紹

VXIplug&play是允許多個厂商提供兼容硬件和軟件的接口規范。VXIplug&play驅程是用來控制某台儀器的一個函數庫。驅程由硬件厂商編寫，与儀器一起提供。

可以為非VXI儀器編寫VXIplug&play驅程。

VEE 3.2到VEE 6.0支持滿足WIN95/98或WINNT, VXIplug&play規范3.0或更高版本的驅程。VEE 7.0不支持HP-UX或Windows 95。VEE 8.0支持Windows XP或Windows 2000。VEE 8.0不支持Windows 98和Windows NT。

開始

在開始使用VXIplug&play前，必須已經完成下述步驟︰

1 安裝接口(GPIB或VXI)。

2 安裝VISA。如果正在使用安捷倫接口卡，那么使用与VEE一起提供的VISA。詳情請參閱“安裝Agilent I/O庫(VEE for Windows)”。否則，必須安裝与接口卡一起提供的VISA。

3 為每個硬件接口配置VISA。如果正在使用安捷倫接口卡，那么遵循安裝Agilent I/O庫中的說明。否則，必須配置接口制造商指定的VISA。

備注

VISA (虛擬儀器軟件架構)是VXIplug&play驅程用來控制儀器的I/O庫。VXIplug&play要求使用VISA，VISA提供了VXIplug&play驅程使用的VISA函數調用。

需要哪些文件

對每個VXIplug&play驅程，VEE需要下面四個文件︰

• 庫文件

• 函數面板文件

• 頭文件

• 幫助文件

与每個VXIplug&play驅程一起安裝的文件總是包括上述文件。另外還會安裝其它文件。

備注

并不是所有VXIplug&play驅程都支持所有架構(平台)。此外，并不是所有架構都支持某些VISA版本。請与相應的厂商進行核對。

安裝VXIplug&play驅程軟件

遵循儀器制造商在驅程中提供的說明，安裝每個驅程所需的文件集。

文件的位置

VXIplug&play文件位于WINNT\目錄下。這是相對于VISA安裝注冊時存儲的根驅動器和目錄值的位置。根驅動器和目錄的默認值是C:\Program Files\VISA\。

下表說明了VEE需要的VXIplug&play驅程文件︰

文件名a | 位置 | 用途
PREFIX_32.DLL | BIN | 儀器驅程庫
PREFIX.FP | PREFIX | 儀器驅程函數面板文件
PREFIX.H | INCLUDE | 儀器驅程頭文件
PREFIX.HLP | PREFIX | 儀器驅程幫助文件

a a. PREFIX指儀器的名稱，如HPE1410。

朮語摘要

VXIplug&play驅程的處理方式不同于使用VEE其它類型的I/O。下面匯總了不同類型的I/O怎樣結合在一起。

• VEE程序調用VXIplug&play函數。

• 函數(擁有可以通過函數面板設置的參數)是VXIplug&play驅程的一部分。函數通過VISA軟件与儀器通話。

• 儀器通過VISA傳回數据，傳送到函數參數中。

VXIplug&play范例程序

下圖顯示了使用To/From VXIplug&play對象啟動電壓測量，從HP E1410A万用表中獲得讀數的范例程序。

進一步信息

如需与怎樣配置VEE使用VXIplug&play有關的進一步信息，參閱配置VXXIplug_play驅程。如需与怎樣在VEE中使用VXIplug&play有關的進一步信息，參閱運行VEE程序和從Call對象中使用VXIplug&play函數 。


程序兼容能力:

以前的VEE版本一直支持VXIplug&play驅程。VEE 3.2版提供了To/From VXIplug&play對象。使用這一對象的VEE 3.2程序可以兼容以后版本的VEE。

VEE 3.1版只提供了到VXIplug&play驅程的直接Call訪問能力。如果使用Call對象在VEE 3.1版中控制VXIplug&play儀器，那么在進行部分改動，使用32位版本的驅程后，程序可以在以后版本的VEE中工作。

必須安裝32位版本的VXIplug&play驅程，您可能必須改變Import對象，才能使用VXIplug&play驅程文件的新位置。如需与使用Call對象訪問VXIplug&play驅程的更多信息，請參閱從Call對象中使用VXIplug&play函數。

為使用VXIplug&play驅程与儀器通信，必須安裝相應的VXIplug&play驅程文件和VISA I/O庫。如需VISA安裝信息，請參閱VXIplug&play介紹。還必須根据配置VXIplug&play驅程中的說明為儀器配置VEE。

在VEE中与VXIplug&play驅程通信的主要手段是To/From VXIplug&play對象，下一節對此進行了介紹。還可以從VEE Call對象中調用VXIplug&play函數(參閱從Call對象中使用VXIplug&play函數)。后一种方法用來實現与 VEE 3.1版的向下兼容能力。


運行VEE程序

To/From VXIplug&play對象中的各項處理從上向下執行。本節介紹了在To/From VXIplug&play對象執行時發生的情況。

初始化和關閉驅程

在加載或創建程序后第一次運行程序時，會發生延遲，以初始化使用To/From VXIplug&play對象控制的每部儀器。這個初始化把儀器設置成已知的初始狀態。以后每次運行程序時，程序會正常執行，而不會執行初始化操作。

在VEE會話中，程序控制的每部儀器必須初始化一次。VXIplug&play Resource Manager執行"儀器查找"操作，檢驗儀器是否連接到地址上，把儀器設置成已知狀態。其需要的時間數量不确定，可能每部儀器最多10秒。在第一次執行每部儀器的To/From VXIplug&play對象時，會發生這种延遲。

由于初始化每個VEE會話只執行一次，因此每次在程序運行時應執行函數(如清除或复位)，把儀器設置成已知狀態。在加載另一個程序或退出VEE時，VXIplug&play 驅程會自動關閉。

高級初始化信息

本節介紹了VEE實現的VXIplug&play初始化的部分細節。成功地編寫采用VXIplug&play 驅程的VEE程序并不要求了解這些概念。

要求每個VXIplug&play 驅程有一個PREFIX_init()函數和一個PREFIX_close()函數。VEE自動調用這些函數。

init()函數的用途是把儀器設置成已知狀態，獲得一個"會話句柄"。在配置時，第一次在程序中執行時，VEE Name指定的每部儀器分配一個唯一的會話句柄。程序中使用該會話句柄唯一地識別該儀器。

与同一部儀器通信的所有To/From VXIplug&play對象(使用相同的VEE Name)由相同的會話句柄識別。會話句柄顯示在函數面板的Panel一欄左下角的vi字段中。VEE自動負責在各种To/From VXIplug&play對象之間傳送這個會話句柄。

由于init()調用通常是一個冗長的操作，因此只在必要時調用它。在程序中執行第一個To/From VXIplug&play對象時，會調用相應的init()函數。在調用init()時，它還執行標識查詢和/或复位操作，具体取決于您怎樣配置驅程。

close()函數的用途是關閉會話句柄(其數量有限)，使儀器脫机，清除与儀器有關的任何數据，在需要時執行儀器專用操作。VEE在下述情況下調用close()函數︰

• 在選擇New, Open或Exit后。

• 在刪除一個VEE Name (如dvm)的所有To/From VXIplug&play對象后。

• 在改變VXIplug&play Instrument Properties對話框中的Address或init() 參數值時。在本例中，調用close()，以便使用新值再次調用init()。

錯誤和警告檢查

在執行每個處理后，函數把一個狀態值返回VEE，VEE自動檢查這個值。如果這個值表明成功執行函數，那么將執行下一個處理。

錯誤檢查 如果返回的狀態值表明錯誤，VEE會停止程序，報告錯誤。如果有一個錯誤輸出端捕獲錯誤，錯誤輸出端會傳播，而不是停止程序。使用errorInfo()對象，獲得錯誤消息細節。

VEE自動調用PREFIX_error_message()函數，以便從 VXIplug&play 驅程中獲得制造商提供的盡可能多的錯誤信息。這些信息輸出在VEE錯誤信息中，或從errorInfo()輸出。

備注

在發生錯誤后，儀器保持在未知狀態。除非在程序開始時調用特定的复位或清除函數，否則不知道下次啟動程序時儀器的狀態。

警告檢查 如果返回的狀態值是警告，程序會暫停，顯示一個警告對話框。警告對話框包含儀器制造商提供的信息，允許選擇繼續運行程序或停止程序。

不能以程序化方式捕獲警告消息。但是，如果知道驅程提供的常用警告消息，那么可以在VEE程序中處理這些消息。例如，如果得到一條警告消息表明儀器沒有準備讀取數据，那么可以使用Delay對象，或把To/From VXIplug&play對象放在循環中，重試讀取對象。

如果在VEE程序中處理已知的警告條件，您可能想抑制警告消息對話框。為此，從To/From VXIplug&play對象的Properties對話框中，選擇复選框Ignore Cautions Returned。

備注

一般來說，沒有必要、也不鼓勵忽略警告消息(复選Ignore Cautions Returned复選框)，除非您知道怎樣在程序中處理警告條件。

傳送參數

根据VXIplug&play 規范，在請求數据前，必須分配內存，把它傳送到驅程中。某些VXIplug&play函數把數据讀取放到數組中。大多數VXIplug&play函數還有一個參數，指定發送的數組大小，如果數組不夠大，會發生錯誤。在本例中，您可以分配任何大小的數組，告訴函數數組的大小。然后函數將只以指定的大小把數据寫入數組中。

警告

其它VXIplug&play函數假設傳送的數組對數据讀寫足夠大，而不管其實際大小如何。這尤其常用于文本字符串中。如果分配的內存不足，那么這一操作將覆蓋內存，導致一般保護問題或分段違規。由于VXIplug&play DLL直接鏈接到VEE中，因此這种情況會導致VEE崩潰并退出。

備注

為數組或字符串數据輸入分配內存最簡明的方法是使用Auto-Allocate功能。參閱“獲得 VXIplug&play函數面板相關幫助 "。您仍需确定要分配的內存容量，但一旦指定容量，將自動分配內存。

查閱驅程幫助文件，确定數据需要多少內存。從To/From VXIplug&play對象的對象菜單中選擇Instrument Help。這個幫助文件將告訴您數組必須有多大。

如果不使用Auto-Allocate，那么必須創建一個對象，分配內存，把它連接到To/From VXIplug&play對象的數据輸入端︰

• 對數組輸入，使用相應類型的Alloc Array對象，相應地設置大小。

• 對字符串輸入，使用Formula對象。從Formula對象中刪除數据輸入端，輸入表達式，如256*"a"。這會創建一個長256個字符的字符串(加一個零字節)，其中填充a。大多數VXIplug&play函數寫入Text參數的字符數量不會超過256個字符。但是，最好查看要求确定Text輸入的每個函數面板上的幫助文件。

范例程序

下圖顯示了一個簡單的程序，它使用To/From VXIplug&play對象与HP E1410A VXI万用表通信︰

VXIplug&play的限制

在VEE中使用VXIplug&play 驅程有某些限制︰

• 由于Bus I/O Monitor對象只顯示到達和來自VEE的I/O本身，因此它不顯示來自VXIplug&play 驅程的任何I/O。VXIplug&play 驅程是鏈接到VEE的C程序。我們建議在需要時使用硬件總線監視器。

• VEE不支持VXIplug&play 規范不要求的某些可選功能，如回叫。

• VXIplug&play不支持所有I/O [image] Advanced I/O對象(包括Interface Operations, Instrument Event (SPOLL)和Interface Event)。

• VXIplug&play 不支持LIVE MODE/NOT LIVE MODE概念。在運行程序時，程序中使用的所有儀器都必須連接到計算机上。但是，可以在不連接程序中使用的儀器的情況下打開程序。此外，還可以在沒有連接儀器的情況下創建程序。只要安裝VXIplug&play 驅程，就可以使用To/From VXIplug&play對象，指定函數調用。

• 不能使用VXIplug&play 驅程及任何其它VEE儀器控制方法 (Direct I/O, Panel Driver,或Component Driver對象)，与同一程序中同一部儀器通信。但是，可以在同一程序中對一部儀器使用VXIplug&play 驅程，對其它儀器使用其它儀器控制方法。

備注

VXI plug&play 規范在持續更新和增強。VXI plug&play 聯盟在VEE不同修訂版本之間可能會表決規范中的新增功能。由于VXI plug&play 規范沒有指定驅程庫中應包括修訂信息，因此VEE不能檢查驅程的兼容能力。所以必須与儀器制造商核對，以保証驅程滿足當前支持的VXI plug&play 規范。


在Call對象中使用VXIplug&play函數

您可能想在VEE Call對象中使用VXIplug&play，原因如下︰

• 兼容現有的程序︰如果現有的程序使用的VXIplug&play是采用VEE 3.1版創建的，那么您可能想在最大限度地減少修改內容的情況下繼續使用這些程序。但是，如果您計划在長期內維護這些程序，那么最好使用To/From VXIplug&play對象中的標準函數面板訪問重寫這些程序，具体參閱“使用To/From VXIplug&play對象"。

• 訪問舊的驅程︰某些早期版本的非HP VXIplug&play 驅程(1995年及以前)是根据早期版本的VXIplug&play規范編寫的。仍可以通過VEE Call對象訪問這些驅程。

除上述原因外，應該采用“使用To/From VXIplug&play對象"中介紹的方法，使用VXIplug&play驅程。

在VEE中使用動態鏈接庫或共享庫

本節將介紹在安裝了所需的文件之后把VXIplug&play驅程加載到VEE中的步驟。

為在VEE程序中使用VXIplug&play驅程，進行如下操作︰

1 導入庫。

2 運行使用庫的例程。

3 在程序完成時刪除庫。

与這三個步驟相關的三個VEE對象是Import Library、Call和Delete Library。

導入庫

在使用Call對象 (或Formula對象)執行驅程前，必須通過Import Library對象把函數先導入到VEE環境中。

在Import Library對象中，在Library Type下，選擇Compiled Function。使用Definition File按鈕輸入PREFIX.h的路徑和名稱。參閱 驅程文件的位置。

然后使用File Name按鈕選擇PREFIX_32.DLL的路徑和名稱。Library Name按鈕為一套函數指配一個邏輯名稱。建議使用的名稱是PREFIX，其中PREFIX指儀器的名稱，如HP E1410。

在Call對象中使用驅程前，必須先配置Call對象。最簡便的方式是從Import Library對象菜單中選擇Load Lib，把驅程文件加載到VEE環境中。從Device菜單中調出一個Call對象。然后在Call對象菜單上選擇Select Function。VEE將調出一個對話框，其中包括由驅程文件中導入的頭文件內列出的所有函數的列表。

從VEE中調用VXIplug&play驅程

使用Call對象，調用VXIplug&play驅程。

調用順序 VXIplug&play驅程的調用順序非常重要。順序如下︰

1 調用初始化函數。(這一函數返回一個會話句柄。)

2 使用初始化函數返回的句柄，執行驅程調用。

3 調用關閉函數。

初始化函數 初始化函數PREFIX_init有三個輸入端和兩個輸出端。

這三個輸入參數是︰

• Instrument Address

參閱“配置VXIplug&play 驅程"，獲得与VXIplug&play地址有關的信息。

• Identification Verification Flag

如果檢驗標記是1，那么初始化函數檢查儀器的身份。這通過使用"*IDN?"查詢或儀器制造商指定的其它方式檢查制造商ID和型號完成。如果不應檢查，那么把標記設置為0。

• Reset Flag

如果初始化函數把儀器置于預先定義的狀態，那么复位標記應為1。如果不應复位，那么把標記設置為0。

兩個輸出參數是︰

• Return Value

VXIplug&play把VXIplug&play驅程返回的值定義為執行的操作狀態。通過從單獨的Call對象中調用PREFIX_error_query，返回的整數可以轉換成有意義的消息。如果返回值是0，那么init()調用成功。

• Handle for VXIplug&play Functions

如果初始化函數返回的值為0，那么輸出參數中包含一個儀器句柄。儀器句柄是把函數調用与這個初始化關聯起來的一個數字。大多數VXIplug&play函數作為輸入參數要求這個句柄。

每次初始化會在輸出參數vi中返回一個唯一的句柄。可以由不同的名稱調用參數，如session handle，但它總是從init()函數中返回的最后一個參數。在調用close()函數時，句柄返回到系統。

調用VXIplug&play函數 可以使用Call對象調用其它函數。對調用的每個函數，必須為Call對象的instrID輸入端提供PREFIX_init函數的句柄。

使用其它常用的VXIplug&play函數 除PREFIX_init和PREFIX_close函數外，VXIplug&play驅程可以實現其它常用的驅程函數，包括︰PREFIX_reset, PREFIX_self_test, PREFIX_revision_query, PREFIX_error_query和PREFIX_error_message。

作為參數使用數組 VXIplug&play規范規定，調用程序必須為數組或文本參數分配空間。這意味著在作為參數傳送到VXIplug&play函數之前，VEE必須分配數組，如本范例中所示。

使用Close函數 關閉函數PREFIX_close有一個輸入參數，沒有輸出參數。輸入參數是從PREFIX_init中返回的句柄。執行PREFIX_close使儀器脫机，清除与儀器句柄有關的任何數据。還可能有与關閉儀器有關的某些其它驅程特定操作。儀器函數不能再次使用句柄。必須再次調用PREFIX_init例程，以獲得一個新句柄。

刪除庫

在使用完VXIplug&play驅程后，需要為加載的每個驅程調用Delete Library對象。在卸載庫以后，必須使用Import Library對象再次加載庫，然后才能調用使用該庫的任何函數。

簡單的范例

下面是在VEE中使用VXIplug&play驅程的范例程序。這個程序導入庫，初始化設備，關閉設備，刪除庫。(每個程序線程使用Start按鈕單獨啟動)

比較完整的范例

下圖顯示了比較完整的范例程序，它使用VXIplug&play驅程，作為輸出參數分配一個數組。

部分有用提示

追蹤句柄 連續的驅程函數必須使用PREFIX_init返回的句柄。有兩种方式完成這一操作︰

• 連接各個端

通過把PREFIX_init例程數据輸出端連接到每個函數上的vi數据輸入端，可以傳送句柄的值。

• 在全局范圍內追蹤句柄

句柄可以保持為全局變量。PREFIX_init例程的句柄連接到Set Global對象上。使用這個句柄的每個函數從Get Global對象中獲得句柄。

控制流程 驅程需要按特定順序執行操作(初始化, 調用函數, 關閉)。必須寫入VEE程序，保証句柄對要求使用的所有函數有效。


使用To/From VXIplug&play對象

在VEE儀器配置中添加VXIplug&play儀器后，可以在程序中使用VXIplug&play驅程。使用驅程中包含的函數訪問儀器。To/From VXIplug&play對象可以訪問VXIplug&play函數面板。

為獲得To/From VXIplug&play對象︰

選擇I/O [image] Instrument Manager，出現Instrument Manager，顯示當前配置的所有VXIplug&play儀器(及配置的任何其它儀器)。

選擇想要通信的儀器，點擊Plug&play Driver按鈕，出現對象的輪廓。

把To/From VXIplug&play對象的輪廓放在工作區中所需的位置，單擊鼠標，出現下面的對象。

選擇一個函數

從To/From VXIplug&play對象中選擇VXIplug&play函數。

1. 雙擊一項空白事務，或從對象菜單中選擇Add Trans或Insert Trans，出現Select a Function Panel對話框。它顯示了分成多個邏輯類別的函數面板，如Measure或Configure。每個驅程有不同的類別。

• 點擊[+]圖標，查看函數面板的分級結構。

• 點擊[-]圖標，在分級結構中隱藏函數面板。

• 點擊[f(x)]圖標，選擇函數面板。在對話框的下方會看到函數面板的簡短描述。

選擇要展開的項目，按*鍵，完全展開一個樹枝。

一般來說，您只會看到遵守VXIplug&play 3.x版規范及VEE允許的函數面板。

備注

VEE在适當的時間自動調用init()。但是，在列表中可能會有其它初始化函數，如init_all(), init_next()或init_first()。VXIplug&play規范中沒有定義這些函數，VEE不支持這些函數。

不要選擇這些函數。如果必須使用這些函數，需要以不同的方式創建程序，從Call對象中調用VXIplug&play驅程，參閱“從Call對象中使用VXIplug&play函數"。

沒有PREFIX_init()或PREFIX_close()項目。
VEE自動執行這些函數。

2 在Select a Function Panel對話框上點擊OK。

3 出現一個帶標注的對話框，稱為Edit a Function Panel，允許為函數面板指定參數。

編輯函數面板參數

Edit a Function Panel對話框允許設置傳送到選定VXIplug&play驅程的函數的控件和參數。共有兩欄︰Panel和Configuration。

Panel欄。Panel欄允許指定傳送到函數的常數(控件)值。

• Controls - 這個對話框的頂部部分包含著指定常數參數的控件。控件名稱是從函數面板文件中指定的標注。

• vi - 顯示儀器唯一的"虛擬儀器"句柄(也稱為"會話句柄")。根据驅程版本，這個字段的名稱可能會變化，但位置一直在函數面板的左下角。

• Error - 在執行這個函數面板時，如果發生錯誤，那么會顯示一個非零值。根据驅程版本，這個字段的名稱可能會變化，但位置一直在函數面板的右下角。

• Function call - 對話框底部是在對象執行時發送到驅程的C函數和參數。這個命令字符串也作為事務顯示在對象的open view上。

獲得VXIplug&play函數面板相關幫助

在Edit Function Panel對話框中，在Panel欄的背景上按鼠標右鍵，獲得与函數面板有關的幫助。出現包含函數描述的對話框。

在一個控件(而不是標注)上按鼠標右鍵，得到參數說明。

如需完整的VXIplug&play驅程幫助，從To/From VXIplug&play對象的對象菜單中選擇Instrument Help。

Configuration欄

Configuration欄允許指定傳送到函數的變量。這允許以程序化方式設置參數值。

參數值分組顯示。每一組的名稱是VXIplug&play函數面板中指定的參數的標注名稱。Function和reading是標注。每一組可能會包含下面的信息。

• Parameter Type - 這提供了与參數數据類型及參數是Input Only、Input/Output還是Output Only有關的信息。

• Parameter Value - 在選擇Constant時，這個參數作為Panel欄上設置的常數值傳送。在選擇Variable時，這個參數作為變量傳送。可以以程序化方式改變參數值。某些字段一直是變量，如讀數輸出。

Name - 在Parameter Type設置為Variable時，這個字段可以編輯。在默認情況下，變量名稱設置成其標注名稱(或使其成為有效的VEE變量名稱的類似名稱)。可以在VEE中把它變成任何有效的變量名稱。如果變量是一個輸入變量，那么還可以在這個編輯字段中放一個表達式、函數調用或全局變量。

Create Terminal - 在Parameter Type設置成Variable時，這個字段可以編輯。在勾選复選框，且Name目前沒有作為端名稱存在時，按OK會作為輸入端、輸出端或輸入/輸出端創建端(使用Name中指定的名稱)，如對話框中所示。一旦創建后，如果想刪除一個端，那么必須從對象菜單中使用Delete Terminal。

如果Name變化，并勾選Create Terminal，那么會添加一個新的端。

如果Name設置為無效的端名稱，那么Create Terminal會變成灰色。

• Auto-Allocate Input - 這會出現在已經設置成Variable、而不是Constant的Input/Output參數上。下一節提供了更多的信息。

按NOP按鈕，保存這個對話框中顯示的最新設置，使這一事務"不操作"。這与在基于文本的計算机程序中注釋一行代碼的作用相同。

按Help按鈕，獲得与To/From VXIplug&play對象有關的幫助。在編輯完成時，按OK按鈕。

按Instr Help按鈕，獲得驅程開發人員編寫的特定儀器幫助信息。

Auto-Allocate功能(傳送數組和字符串)

某些VXIplug&play函數希望在數組或Text字符串中返回數据。VXIplug&play規范要求應用程序(VEE)為數組或字符串分配內存，因為VXIplug&play函數不能傳回分配的內存。VEE必須分配內存，函數可以寫入該內存。

Auto-Allocate功能允許簡便地告訴VEE分配多少內存。VEE以要求的容量分配相應的數据類型和形狀。

如果到函數的參數是一個要求數組或Text字符串的變量，那么Parameters欄會顯示另一個字段︰Auto-Allocate輸入。例如，在下面的對話框中，讀數可以輸入一個數組。Parameters欄顯示選中了Auto-Allocate輸入︰

在選擇Auto-Allocate輸入時，Size字段激活。默認大小為5000，但也可以輸入任何相應的容量，分配輸入數据。必須确定需要傳送多大的數組或字符串。沒有為這個參數創建一個輸入端，VEE自動為該參數分配內存。

對數組，Size指明了數組中的要素數量。對文本字符串，Size指明了字符數(字節數)。參閱Instrument Help，或在Panel背景或參數上按鼠標右鍵，獲得与函數要求的數組或字符串大小有關的更多信息。

備注

如果使用Auto-Allocate輸入功能，那么不會為函數創建一個數据輸入端。如果數据輸入端已經存在，那么應從To/From VXIplug&play對象中刪除這個數据輸入端。

如果沒有選擇("勾選") Auto-Allocate輸入，那么在默認情況下會為函數同時創建輸入端和輸出端。必須創建一個對象，分配正确的類型、形狀和內存數量，并把它連接到輸入端。如需与怎樣手動分配輸入所需內存的相關信息，請參閱傳送參數。

确保為函數希望返回的所有值分配足夠的內存。如果分配的內存不足，那么這一操作會覆蓋內存，導致General Protection Fault(一般保護問題)或Segmentation Violation(分段違規)。由于VXIplug&play DLL直接鏈接到VEE中，因此這种情況可能會導致VEE崩潰和退出。

獲得VXIplug&play驅程相關幫助

從To/From VXIplug&play對象的對象菜單中，選擇Instrument Help，訪問儀器制造商提供的幫助文件。這一幫助主題包含与使用VXIplug&play驅程有關的信息，包括參數要求的數据類型。

如需每個特定函數有關的幫助，參閱獲得VXIplug&play函數面板相關幫助。


Panel Driver和Component Driver介紹

只有在一個驅程文件支持該儀器時，Panel Driver和Component Driver 對象才能用于某部儀器。VEE安裝程序允許選擇希望安裝的驅程。如需与怎樣為儀器選擇和配置正确的驅程文件有關的進一步信息，請參閱Help [image] Tell Me About ...下的Configuring Instruments。另外，還必須安裝I/O庫。

Panel Driver

Panel Driver在VEE中有兩种用途︰

• 它們允許定義測量狀態，指明所有儀器函數設置。在Panel Driver運行時，相應的物理儀器將自動編程，与Panel Driver中定義的設置相匹配。

• 它們作為交互控制儀器的儀器控制面板使用，适合用于開發和調試程序，還适合用于儀器沒有物理前面板的情況。

如這個圖所示，Panel Driver打開的視圖中包含一個相關物理儀器使用的圖形控制面板。如果物理儀器正确連接到計算机上，您可以點擊圖形控制面板中的字段，控制儀器。還可以點擊數字顯示畫面和XY顯示畫面，進行測量，顯示結果。

即使儀器沒有連接到計算机上，仍可以使用圖形面板定義儀器狀態。事實上，如果想在購買儀器前或在別處使用儀器時開發程序，這种功能是一個優勢。

例如，假設您想對HP 3325B函數發生器編程，提供兩個不同的輸出信號︰

1 一個頻率為20 kHz、幅度為20mV rms的方波。

2 一個頻率為50 kHz、幅度為50mV rms的正弦波。

下圖顯示了提供希望信號的兩個Panel Driver。

Component Driver

在儀器驅程中，每個儀器函數和測得的值稱為組件。組件与驅程內部的變量類似，記錄函數設置或測得值。因此， Component Driver是一個只讀取或寫入指定為輸入端和輸出端的組件的對象。而Panel Driver則自動為多個組件或所有組件自動寫入值。

Component Driver用來幫助改善程序的執行速度。速度是其較Panel Driver提供的唯一優勢。一般來說，在儀器控制對象連接到必須運行多次的迭代器對象上時，對程序執行速度的影響最大。在這种情況下，通常只會改變一個或兩個組件，Component Driver正是為處理這种情況設計的。

Component Driver實現的執行速度提高程度在不同情況之間變化很大。提高程度主要取決于使用的特定驅程文件。沒有一种簡便的方式可以預測确切的執行速度提高程度。

例如，假設您想對HP 3325B函數發生器編程，進行下述操作︰

1 輸出一個初始頻率為10 kHz、幅度由操作人員輸入決定的正弦波。

2 每10 Hz五步，從10 kHz到1 MHz掃描頻率輸出。

在本例中，最好使用Panel Driver執行初始設置，使用Component Driver重复設置輸出頻率。下圖顯示了完成這一操作的程序。

進一步信息

如需与怎樣配置VEE有關的信息，請參閱Help [image] Tell Me About ... 下的Configuring Instruments。如需与怎樣使用Panel Driver和Component Driver 對象有關的進一步信息，請參閱揭秘Panel Driver和Panel Driver操作。

支持基于寄存器的VXI設備

在使用儀器控制對象直接尋址VXI背板上的VXI設備時，必需知道設備是基于消息還是基于寄存器。VEE通過SCPI(程控儀器標準命令)消息与基于消息的設備通信。

VEE還為大多數基于寄存器的惠普和安捷倫設備提供Interpreted SCPI (I-SCPI)支持。I-SCPI驅程允許与基于寄存器的設備通信，盡管其基于消息。這意味著VEE程序可以使用標準SCPI消息与基于寄存器的設備通信，只要該設備有I-SCPI驅程。如果沒有适用于基于寄存器的設備的I-SCPI驅程，VEE必須通過直接存取寄存器來与該設備通信。

I-SCPI驅程使您能夠靈活地使用任何首選的儀器控制對象。可以使用Panel Driver，簡化編程工作；也可以在Direct I/O中使用SCPI命令，加快執行速度。在把VEE編程為使用SCPI消息与基于寄存器的設備通信時，VEE將通知您是否有要求的I-SCPI驅程。在這种情況下，您需要使用Direct I/O或MultiInstrument Direct I/O直接存取設備寄存器。


揭秘Panel Drivers

VEE Panel Driver和Component Driver對象都要求有相應的Panel Driver ("ID")，且儀器配置給該驅程。這些儀器驅程有時稱為"VEE drivers"或"Instrument Drivers"。Panel Driver文件(the.cid file)必須存在，并配置成使用Panel Driver和Component Driver對象。但是，這些文件不用于Direct I/O或VXIplug&play操作。

Panel Driver文件

每個 Panel Driver 描述了某部測試儀器的獨特個性。為使用Panel Driver和Component Driver對象控制任何儀器，要求使用驅程文件。

在安裝VEE時，Panel Driver文件 (.cid文件) 可以選擇性地复制到系統磁盤上。每個驅程文件包含兩种基本信息類型︰

• 儀器功能及用來設置和查詢功能的命令說明。

• Panel Driver對象的打開視圖中可以看到的圖形控制面板的外觀和行為說明。

組件

在內部，Panel Driver和Component Driver對象把每种儀器功能表示為組件。組件名稱与編程語言中的變量名稱類似；組件用來保存儀器功能設置值或測得值。

下圖顯示了HP 3478A電壓表中的部分組件。

組件名稱 | 儀器功能
ARANGE | 自動量程開或關
FUNCTION | 測量功能是電壓、電流或電阻
TRIGGER | 觸發源為內部、外部、快速或單一
READING | 最新的測量值

以交互方式或通過程序存取組件。為以交互方式存取組件，在Panel Driver的打開視圖中點擊一個帶標記的按鈕或顯示畫面。為使用圖形程序存取組件，把它們添加為輸入端或輸出端。下面是一個實例。如需使用組件的詳細程序，請參閱“ 部分技朮" 和“ 在程序中使用Component Driver對象" 。

狀態

儀器狀態是某個驅程中所有組件值的特定集合。把電壓表驅程中的所有組件設置為AC電壓測量的特定值。使用一套不同的組件值，測量DC電流。電壓表有兩种狀態。本例顯示了兩种電壓表狀態。

在VEE中，Panel Driver的每個實例代表一种單獨的測量狀態。(Panel Driver對象通常稱為"狀態驅程"。)程序中通常有一個以上的Panel Driver，其中每個Panel Driver會把同一部物理儀器編程為唯一的測量狀態。

使用儀器名稱創建的每個Panel Driver對象与同一部物理儀器通信。


基于Panel Driver的I/O怎樣工作

在把一個Panel Driver或Component Driver對象放在程序中時，VEE在內存中建立一條狀態記錄。這條狀態記錄專用于某個儀器名稱。“ 名稱的重要性" 中更詳細地討論了名稱。

參考某個名稱的所有基于驅程的對象都共享一條狀態記錄。狀態記錄反映了每個儀器組件的當前值。在使用Panel Driver或Component Driver對象寫入組件時，VEE會同時更新物理儀器和狀態記錄。

如果使用Direct I/O寫入儀器，VEE會把狀態記錄標為無效，因為狀態記錄不再与物理儀器的實際狀態相符。但是，后續使用Panel Driver或Component Driver對象會導致VEE再次調用儀器狀態，進而再次同步物理儀器和狀態記錄。

在Panel Driver對象和Component Driver對象操作時，會出現重要的差异。

另請參閱

Panel Driver 操作


Panel Driver操作

在Panel Driver運行時，它只發送必要的命令，使物理儀器的狀態与圖形控制面板中定義的狀態相匹配。

在必要時，Panel Driver發送命令，复位和更新相應物理儀器中的所有設置。Incremental Mode設置影響著這一行為，具体參閱Advanced Instrument Properties對話框: Panel Driver欄。

如果把Incremental Mode設為ON，VEE比較當前狀態記錄与Panel Driver定義的希望狀態，确定必須改變哪些組件。VEE只發送更新影響的組件要求的命令。

如果把Incremental Mode設為OFF，或如果當前狀態記錄標為無效，VEE會明确發送命令，更新每個組件，以保証希望的狀態与物理儀器狀態之間同步。

在激活序列輸入端時，或在點擊打開視圖中看到的其中一個控制面板按鈕時，Panel Driver運行。

Component Driver操作

在Component Driver運行時，它只寫入作為輸入端出現的組件，只讀取作為輸出端出現的組件。正因如此，Component Driver對象的運行速度一般要比Panel Driver快。Panel Driver可能會寫入多個組件，以實現某個狀態；Component Driver只寫入指定的組件。

組件讀寫順序采用其作為端出現的順序，從上到下。在希望儀器根据另一個組件的值改變一個組件的值時，這种操作順序尤其重要。這种交互稱為耦合。在組件驅程中，可以手動完成這一操作。

多個驅程對象

在使用多個對象時會發生混淆的某些情況包括︰

• 使用相同的儀器名稱

• 使用相同的儀器地址

• 使用相同的驅程文件

名稱的重要性︰Instrument Properties對話框中的Name字段在邏輯上把每個儀器對象映射到物理儀器的地址及其它配置信息。為确定儀器對象的Name，點擊對象菜單中的Show Config。對象標題中的文本不一定与Name相同。

一般來說，只應有一個配置的Name指向某部物理儀器。多個Name指向同一部儀器地址會在使用Panel Driver對象的程序中導致不可預測的結果。VEE的內部儀器狀態記錄按Name排列。具有不同名稱的兩個Panel Driver對象會盲目地寫入同一個地址，使彼此的狀態記錄無效。

在涉及Direct I/O的某些情況下，對同一部物理儀器可能需要一個以上的Name。如果Advanced Instrument Properties對話框中Direct I/O欄的某些設置根据直接I/O操作變化，那么可能會發生這种情況。

例如，您可能想把某些命令發送到示波器上，其在最后字符中确認EOI，同時想發送某些沒有EOI的命令。在這种情況下，您可以為一部儀器配置Name Scope_EOI，為另一部儀器配置Name Scope。Scope和Scope_EOI擁有相同的Address設置，但 END on EOL設置不同。

在從菜單中選擇時，配置的Name作為默認標題出現在儀器對象中。編輯標題不會影響与Name的關系。

Name對保存和打開包含儀器的程序至關重要。在保存程序時，將在程序中保存每個儀器對象的Name。在打開程序時，VEE在當前I/O配置中查看加載的每部儀器的Name。

例如，如果用名稱My_Scope保存包含一個Direct I/O對象的程序，那么在當前I/O配置中必須有一部名為My_Scope的儀器。如果考察的對象是Panel Driver或Component Driver，那么當前I/O配置中的ID Filename (驅程文件)必須与保存的程序中使用的一個文件相匹配。

Name必須完全相匹配，包括空格，但Name不分大小寫。

重用驅程文件

可以有多個不同名稱的對象使用相同的驅程文件(這种情況并不少見)。例如，您可能有一個測試系統，在三個不同的地址上使用三個程控電源，其分別為Supply1、Supply2和Supply3，但都使用hp665x.cid驅程文件。由于Name不同，VEE為每個名稱維護一條單獨的狀態記錄； Supply1的Panel Driver對Supply2或Supply3的相關項目沒有任何影響。


概述

本節概括介紹了怎樣使用Instrument Manager和配置對話框，在VEE中查找和配置儀器。本文給出了部分實例，對許多應用，可以在大多數參數中使用默認值。但是，在這些對話框中配置字段的詳情請參閱屬性對話框細節。

概述

為配置儀器，選擇I/O [image] Instrument Manager或點擊工具條上的Instrument Manager按鈕。

其外觀如下︰

出現下面的Instrument Manager對話框。只有在找到和添加儀器時，對話框中才有儀器。

Instrument Manager顯示四個部分︰

• Auto Discovery按鈕允許查找儀器，并為它們配置驅程。如果點擊Find Instruments按鈕，VEE會自動更新配置的所有GPIB和VXI儀器，顯示連接到計算机上的任何其它GPIB和VXI儀器。如果點擊Settings按鈕，VEE會顯示下一節中介紹的Auto Discovery Settings對話框。

• Instrument List顯示目前配置的儀器。這個配置由I/O配置文件定義 (如需進一步信息，請參閱“ I/O配置文件”)。默認配置是空白 (空)。

• Instrument按鈕允許修改儀器配置。本章后面更詳細地介紹了Instrument按鈕操作。

• Create I/O Object按鈕允許選擇Direct I/O, Plug&play Driver, NI-DAQ Driver, IVI-COM Driver, Panel Driver和Component Driver對象，把它們放在程序中。

另請參閱

Auto Discovery, 儀器列表, 儀器配置, 重命名儀器


Auto Discovery

Auto Discovery區域包含三個按鈕︰Find Instruments, Configure Drivers和Settings。

• Find Instruments按鈕更新任何現有的GPIB和VXI儀器配置，把連接到計算机上的任何沒有配置的GPIB和VXI儀器添加到Instrument List中。Find Instruments還會找到、并把任何Serial和GPIO接口添加到Instrument List中，而不是連接到這些接口上的儀器。

• Configure Drivers按鈕為已經找到的儀器及Instrument List中的儀器配置驅程。

• Settings按鈕允許确定怎樣配置儀器和驅程。

在Instrument List中高亮度顯示My Configuration，點擊Find Instruments，更新所有現有的GPIB和VXI儀器配置，在列表中添加任何沒有配置的GPIB和VXI儀器。對找到并通電的儀器，打開活動模式。(如果沒有找到配置的儀器，活動模式設置不會從開切換到關。)

然后點擊Settings，出現對話框，允許控制怎樣檢測和配置儀器和驅程。這個對話框有兩個部分︰Find Instruments和Instrument Identification。

Find Instruments部分有兩個單選按鈕︰

• Detect only

• Detect, identify, and configure drivers for each instrument.

如果選中"Detect only"，那么在點擊Find Instruments按鈕時VEE會檢測所有活動的總線地址。如果選中"Detect, identify, and configure drivers for all instruments"，那么VEE會檢測所有活動的總線地址，向檢測到的所有儀器發送"*IDN?"，并試著為每台儀器配置驅程。

下面的部分控制著Configure Drivers按鈕。如果選中"Ask before sending "*IDN?" to each instrument?"，那么在配置每個驅程前VEE會停止，詢問是否想繼續操作。如果沒有選中這個框，那么VEE會自動配置每個驅程。


儀器列表

如果Find Instruments找到一台儀器連接到計算机上，Instrument Manager的外觀會類似于下圖。在本例中，Find Instruments找到一個Serial Interface，但沒有顯示可能連接到這個接口上的任何儀器。新發現的儀器被命名為"newInstrument", "newInstrument1", 依此類推。如后面所述，可以為它們指定含義更丰富的名稱。

為使用Instrument Manager，點擊GPIB7 Interface選項。它會高亮度顯示，Properties按鈕變成活動按鈕。點擊GPIB7前面的[-]圖標，"折疊"其下面的選項。下面是折疊后的配置。

為再次"展開"選項，點擊GPIB7前面的[+]圖標。(為展開整個樹，選擇My configuration，按*鍵。) 現在點擊選項newInstrument@722或它前面的"instrument"圖標，高亮度顯示它。窗口應類似于下圖︰


儀器配置

注意，Instrument下面的所有按鈕現在都是活動按鈕，包括Properties。這意味著可以刪除、編輯或手動配置現有儀器的配置，或在列表中增加新的儀器。

另外注意，Create I/O Object下面的一個按鈕現在是活動按鈕。這意味著可以為儀器選擇和放置一個Direct I/O Object。在其它儀器配置中，這時Plug&play Driver、Panel Driver和Component Driver按鈕可能是活動按鈕，具体取決于已經安裝的驅程。

點擊Configure Drivers按鈕，更新儀器配置。出現Identify Instrument對話框，詢問是否想把*IDN? (identification)消息發送給儀器。下圖是這個對話框。

點擊OK。如果打開了連接到GPIB接口上的儀器，那么儀器會應答。在本例中，儀器是HP 34401A，而且已經打開。下圖顯示了這時的Instrument List外觀。

注意已經發生兩個變化︰

1 儀器標識已經變成newInstrument(HP34401a@722)。

2 newInstrument(HP34401a@722)前面的"instrument"圖標已經變化，表明儀器連接到計算机上。

(如果儀器沒有通電，那么標識和圖標不變。)


重命名儀器

在已經确定儀器后，可以在Instrument List中為其提供一個含義更丰富的名稱。為進行這一操作，點擊Properties按鈕。在Properties對話框出現時，點擊Name字段，輸入首選的名稱。下圖顯示了為HP 34401A輸入名稱"dmm"，替換"newInstrument"。

點擊OK完成變動。下圖顯示了包括HP 34401A新名稱的Instrument List。

添加儀器配置

為添加儀器，點擊Add...按鈕，出現Instrument Properties對話框，如下圖所示。

在默認情況下，新的配置會顯示名稱newInstrument。可以輸入一個新名稱，如dmm2。在Interface字段中保持選中GPIB。(如果想改變接口類型，點擊GPIB右面的箭頭，顯示下拉列表。) 然后點擊address字段，把地址變成723。下圖顯示了這些變化后的Instrument Properties對話框。

備注

如果想在對話框中各個字段之間移動，點擊所需的字段，或使用Tab鍵。如果按Enter 或 Return，對話框會退出。

現在點擊Advanced...按鈕，顯示Advanced Instrument Properties對話框。

這個對話框中的General一欄允許指定超時值，打開或關閉活動模式，選擇字節排序，及增加描述。點擊Description字段，輸入hp34401a。

備注

如需与Instrument Properties和Advanced Instrument Properties對話框中各個字段有關的進一步信息，參閱“Properties對話框細節"。

Advanced Instrument Properties對話框中顯示的各個欄和字段取決于選中的接口。

現在選擇Panel Driver一欄，顯示下面的對話框。

點擊ID Filename字段，系統提示選擇一個Instrument Driver文件。

雙擊ag34401a.cid，選中該文件。

現在點擊每個對話框上的OK，返回Instrument Manager，如下圖所示。

這時可以點擊Save按鈕，保存新的配置。


配置Direct I/O對象

下面的范例說明了怎樣配置Direct I/O對象。在本例中，我們在邏輯單元1 (COM1)上為Direct I/O配置一台Serial Instrument。

1 選擇My Configuration

2 點擊Find Instruments

3 在Find Instruments完成時，選擇Serial1，點擊Add...

4 應該看到下面的對話框

Instrument Properties對話框允許選擇新儀器的名稱和地址。把名稱變成Serial1。

點擊Advanced...，出現Advanced Instrument Properties對話框，有兩個相關的欄。

Serial一欄允許指定串行參數，如波特率。如需与各個參數和字段有關的進一步信息，參閱“Properties對話框細節"。對許多應用，可以使用默認值。

如下圖所示，Direct I/O一欄允許為Direct I/O指定大量的參數，包括EOL序列。對大多數應用，可以使用默認值。

備注

Direct I/O一欄顯示的字段選擇取決于已經選中的Interface。此外，對僅VXI，有另外兩欄︰A16 Space和A24/A32 Space。

這些欄允許為Direct I/O對象中的WRITE or READ事務配置VXI設備的寄存器。如需与每一欄顯示的參數和字段有關的進一步信息，參閱“Properties對話框細節"。

在每個對話框上點擊OK (或點擊Cancel不進行變動)，返回Instrument Manager。在本例中，在Serial1接口下已經添加一台新儀器Serial1。為在工作區中添加一個Direct I/O對象，點擊Direct I/O按鈕，放置對象，再點擊，出現下面的畫面。

備注

Direct I/O對象使用基于事務的I/O与儀器通信，而不使用儀器驅程。參閱使用Direct I/O對象。


配置VXIplug&play驅程

配置To/From VXIplug&play對象的程序与配置Panel Driver、Component Driver和Direct I/O對象的程序非常相似。但是，必須先安裝相應的VXIplug&play驅程文件，如VXIplug&play介紹中所述。

備注

如果正在使用Windows操作系統，那么VISA Assistant輔助程序會提供与VXIplug&play驅程有關的有用信息。這些信息可以幫助您确定VXIplug&play 驅程配置要求的有效地址。在Windows Start菜單Program Files [image] Agilent I/O Libraries [image] VISA Assistant中，可以找到VISA Assistant。

例如，我們將為HP 34401數字万用表添加VXIplug&play配置。選擇I/O [image] Instrument Manager，點擊Add....，出現Instrument Properties對話框。把名稱變成vxiDevice，Interface type選擇VXI。

Address字段不用于VXIplug&play驅程。點擊Advanced...，出現Advanced Instrument Properties對話框，然后選擇Plug&play Driver一欄。

然后，從Plug&play Driver Name下拉列表中選擇名為HP34401的驅程。除非以前已經安裝了驅程，否則不能選擇VXIplug&play驅程。

在默認情況下，Address字段顯示VXI0::0::INSTR，它假設儀器的VXI邏輯地址為0。一般來說，您需要提供正确的邏輯地址。例如，如果HP 34401的邏輯地址是24，那么把Address字段變成VXI0::24::INSTR。如需与Plug&play Driver一欄中的字段有關的進一步信息，參閱 “Properties對話框細節”。

備注

只有Plug&play Driver一欄适用于配置VXIplug&play驅程。General, Direct I/O, Panel Driver, A16 Space和A24/A32 Space欄對VXIplug&play配置沒有影響。例如，會忽略General一欄上的Live Mode設置，因為VXIplug&play設備一直視為活動。

在配置儀器后，在每個對話框上點擊OK，返回Instrument Manager，顯示新增的儀器，如下圖所示。

點擊Plug&play Driver按鈕，添加一個To/From VXIplug&play對象。

如需与使用To/From VXIplug&play對象有關的信息，參閱 “使用To/From VXIplug&play對象”。


屬性對話框細節

本節詳細介紹了Instrument Properties 對話框、Advanced Instrument Properties對話框的每一欄及Interface Properties 對話框。

Instrument Properties 對話框

在選擇一部儀器，并在Instrument Manager中點擊Add...按鈕或Properties按鈕時，會出現Instrument Properties 對話框。這個對話框的實例如下︰

下面几節介紹了各個字段。

Name字段

VEE Instrument control對象要求Name字段唯一地識別特定儀器配置。儀器名稱是Instrument Control對象的每個實例及与該名稱對應的所有配置信息之間的符號鏈接。通常情況下，這個字段用來為儀器提供描述性名稱，如Oscilloscope或Power_Supply。

如果您希望以程序化方式獲得/設置其屬性，那么Name必須是有效的VEE變量名稱。名稱必須以字母字符開頭，后面跟著字母數字字符或下划線。

名稱必須是唯一的。例如，不能配置兩部名稱都是Scope的儀器。盡管可以創建指向同一部物理儀器的兩個不同名稱，但如果在同一程序中在Panel Drivers或VXIplug&play驅程內同時使用這兩個名稱，那么會導致問題。

不要混淆儀器名稱与Instrument Control對象中作為標題出現的文字。Instrument Control對象的默認標題是名稱，但可以改變標題，對名稱沒有影響。如果需要确定Instrument Control對象的特定實例的名稱，選擇Instrument Control對象菜單中的Properties (如Direct I/O, MultiInstrument I/O)。

備注

正确使用名稱非常重要。本節只討論了比較常見的情況。如需与VEE使用名稱有關的更詳細信息，請參閱“名稱的重要意義”

Interface字段

Interface字段指明了与儀器通信使用的硬件接口類型︰GPIB, VXI, GPIO, 或Serial。

Address字段

Address字段指明了儀器的地址。對使用GPIO或串行接口的儀器，地址与接口邏輯單元相同。接口邏輯單元是計算机用來識別某個接口的數字。

對采用GPIB接口的儀器，地址采用xxyyzz的形式，其中︰

• xx是1位或2位接口邏輯單元。大多數GPIB接口出厂時默認的邏輯單元是7。

• yy是儀器的2位總線地址。對小于10的總線地址，前面要加零。例如，使用09而不是9。

• zz是儀器的二級地址。使用多個插入模塊的卡槽類儀器一般使用二級地址。二級地址用來通過C型VXI主机中的命令模塊存取設備，及在B型VXI主机中找到設備地址。

備注

二級地址是IEEE 488.1中定義的二級地址。它是儀器硬件接口技朮數据的一部分。儀器硬件設計決定著是否要求二級地址。二級地址与驅程配置無關。

不要把二級地址与Advanced Instrument Properties 對話框中使用的Sub Address字段弄混了。子地址是与驅程有關的特性，用得非常少。

對使用VXI接口的儀器 (連接到嵌入式控制器或直接存取VXI背板的控制器上)，地址采用xxyyy的形式，其中︰

• xx是嵌入式或外部控制器VXI背板接口的1位或2位邏輯單元。

• yyy是VXI設備的邏輯地址。對小于100的邏輯地址，前面要加零。例如，使用008而不是8。

備注

把Address字段設為0具有特殊意義。把Address字段設為0 (對任何接口)表示沒有任何与這一設備描述相匹配的物理儀器連接到計算机上。地址0自動把Live Mode設為OFF。

• GPIB地址實例1 為使用邏輯單元7的GPIB接口卡控制總線地址9上的GPIB儀器，儀器的Address字段設置為709。如需与推荐的邏輯單元有關的信息，請參閱“邏輯單元和I/O地址”。

• GPIB地址實例2 為使用邏輯單元14的GPIB接口卡控制總線地址12上的儀器，Address字段設置為1412。

• VXI地址實例3 為使用邏輯單元16的嵌入式VXI控制器控制邏輯地址28上的VXI儀器，Address字段設置為16028。如需与推荐的邏輯單元有關的信息，請參閱“邏輯單元和I/O地址”。VXI儀器的邏輯地址是1 – 255(含)。

• VXI地址實例4 為通過邏輯單元7的GPIB接口使用HP E1406 GPIB命令模塊尋址邏輯地址24的VXI儀器，Address字段設置為70903。

對HP E1406命令模塊，VXI儀器使用的二級地址等于儀器的邏輯地址除以8。如邏輯地址是24，二級地址是3。因此，完整的地址是70903。

• 串行地址實例 為使用邏輯單元9的COM1串行端口控制儀器，儀器的Address字段設置為9。如需与推荐的邏輯單元有關的信息，請參閱“邏輯單元和I/O地址”。

• GPIO地址實例 為使用邏輯單元13的GPIO接口控制定制儀器，儀器的 Address字段設置為13。如需与推荐的邏輯單元有關的信息，請參閱“邏輯單元和I/O地址”。

Gateway字段

使用Gateway字段，設置遠程流程中使用的LAN网關的名稱。如需進一步信息，請參閱“LAN网關”。

另請參閱

Advanced Instrument Properties 對話框


Advanced Instrument Properties對話框: General欄

下圖是Advanced Instrument Properties(高級儀器屬性)對話框General欄的實例︰

下面詳細介紹了各個字段。

備注

General欄中指明的參數适用于Direct I/O, Panel Driver和Component Driver對象，但不适用于To/From VXIplug&play對象。

Timeout (sec)字段

Timeout字段指明在產生錯誤前VEE將等待多少秒的時間使儀器響應通信請求。默認值為5秒，這适用于大多數應用。

一般來說，不應把這個字段設為0，否則VEE會永遠檢測不到超時。VXI設備寄存器或存儲器存取使用的某些Direct I/O操作不支持超時。

Live Mode字段

Live Mode字段确定VEE是否企圖与指定地址的儀器通信。為与連接到計算机上的儀器通信，必須把Live Mode設為ON。

如果Live Mode對某部儀器設為OFF，可以運行包含Panel Drivers, Component Drivers或Direct I/O對象的程序，否則會讀寫這部儀器。但是，實際上并沒有發生儀器通信。如果在沒有提供儀器時用戶希望開發或調試部分程序，那么特別适合使用這种方式。

Byte Ordering字段

使用這個字段指明讀寫二進制數据的設備使用順序。VEE使用這個字段中的值确定是否需要交換字節。點擊這個字段，可以選擇MSB (先發送最有用的字節)或LSB (先發送最沒有用的字節)。在默認情況下，所有IEEE 488.2標準設備都必須設為MSB順序。具体信息請參閱設備手冊。

Description (可選)字段

Description字段一般用來記錄制造商的產品型號。例如，HP 54504A示波器的Description可以是hp54504a。這個字段是為方便用戶而提供的，VEE不使用這個字段。


Advanced Instrument Properties對話框: Direct I/O欄

下圖是Advanced Instrument Properties(高級儀器屬性)對話框Direct I/O欄的實例(顯示的接口為GPIB接口)︰

下面詳細介紹了各個字段。

備注

在VXI背板上直接處理VXI設備時，如果存在I-SCPI驅程，可以使用SCPI消息控制基于寄存器的設備。如果沒有提供要求的I-SCPI驅程，VEE會通知用戶。

如果沒有提供I-SCPI驅程，那么用戶必須通過直接讀/寫存取設備寄存器或設備存儲器，來控制基于寄存器的設備。詳情請參閱“Advanced Instrument Properties 對話框: A16 Space (僅适用于VXI)欄" 或“Advanced Instrument Properties 對話框: A24/A32 Space (僅适用于VXI)欄" 。

Read Terminator字段

Read Terminator字段指明了終結READ操作的字符。這個字段中的項目必須是帶雙引號的單個字符。雙引號是指ASCII 34十進制字符。VEE把任何ASCII字符識別為Read Terminator，并識別下表所示的換碼符。

應該指明的字符取決于儀器設計。大多數GPIB儀器在把數据發送到計算机上以后會發送換行符。詳情請參閱儀器編程手冊。

Write EOL Sequence字段

EOL Sequence字段指明了在使用EOL ON的WRITE操作結束時發送的字符。這個字段中的項目必須是帶雙引號的零個或更多字符。雙引號是指ASCII 34十進制值。VEE識別EOL Sequence內部的任何ASCII字符，包括上表所示的換碼符。

Write Multi-field As字段

Multi-field As字段指明 WRITE TEXT操作的多字段數据類型的格式化樣式。VEE中的多字段數据類型是Coord, Complex, PComplex和Spectrum。其它數据類型和其它格式不受這一設置影響。

在指定(...) Syntax的多字段格式時，應在每個多字段項目外面加上圓括號。指定Data Only會省略圓括號，但保留分隔逗號。例如，在使用(...) Syntax時，复數 2+2j寫為(2,2)，在使用Data Only語法時寫為2,2。

Write Array Separator字段

Array Separator字段指明WRITE TEXT操作編寫的數組各要素使用的字符串。這個字段中的項目必須是帶有雙引號的單個字符。雙引號是指ASCII 34十進制字符。VEE把任何ASCII字符識別為Array Separator，并識別上表所示的換碼符。

寫入數組的Direct I/O對象中的WRITE TEXT STR操作是一個特例。在這种情況下，將忽略Array Separator字段中的值，使用換行符(ASCII 10十進制)分隔數組的各個要素。這一行為与大多數儀器的需求相一致。

VEE支持多字段數据類型數組。例如，用戶可以創建复數數組。在這种情況下，如果Multi-Field Format設置為(...) Syntax，那么數組表示為︰

(1,1)array_sep(2,2)array_sep ...

其中 array_sep 是Array Separator字段中指定的字符。

Write Array Format字段

Array Format字段決定寫入多維數組的方式。例如，數學家編寫的矩陣如下︰

1 2 3 4 5 6 7 8 9

VEE根据Array Format設置，使用兩种方式之一編寫同一矩陣。在下面的兩個實例中，EOL Sequence設為"\n" (換行)，Array Separator設為" " (空格)。

1 2 3 塊數組格式

4 5 6

7 8 9

1 2 3 4 5 6 7 8 9 線性數組格式

不管采用哪种數組格式，都使用Array Separator字符分隔數組的每個要素。塊數組格式則更進一步，使用EOL Sequence字符分隔數組中的每一行。

在比較常見的情況下(兩維以上的數組)，每次在最右面的下標之外的下標變化時，塊數組格式會輸出一個EOL Sequence字符。例如，如果在這一操作中使用塊數組格式編寫三維數組A[x,y,z]︰

WRITE TEXT A

每次在x或y值變化時，都會輸出EOL Sequence。如果A中每個維度的尺寸是2，那么這些要素的編寫順序是︰

A[0,0,0] A[0,0,1]<EOL Sequence>

A[0,1,0] A[0,1,1]<EOL Sequence>

<EOL Sequence>

A[1,0,0] A[1,0,1]<EOL Sequence>

A[1,1,0] A[1,1,1]<EOL Sequence>

注意在編寫A[0,1,1]之后，x和y同時變化，結果寫了兩個<EOL Sequence>。

Write END (EOI) On EOL字段 (僅适用于GPIB)

END on EOL控制著EOI (End或Identify)的行為。如果END on EOL是YES，在下述情況之一時，在寫入最后一個數据字節時將在總線上确認EOI行︰

1 在EOL ON時執行WRITE操作。

2 作為Direct I/O對象中列明的最后操作執行WRITE操作。

3 在沒有确認EOI的情況執行一個或多個WRITE操作，后面跟著非WRITE操作，如READ。

許多儀器接受EOI或換行作為有效的消息終結符。某些塊傳送可能要求EOI。詳情請參閱儀器編程手冊。

Conformance字段

Conformance指明儀器是否符合IEEE 488.1或IEEE 488.2標準。參閱儀器編程手冊，确定儀器符合的標準，然后相應地設置Conformance字段。

每個標準都為GPIB接口定義了通信協議。但是，IEEE 488.2指明了IEEE 488.1下沒有規定的塊包頭及學習字符串的規則。所有基于消息的VXI儀器都符合IEEE 488.2標準，都是I-SCPI驅程支持的基于寄存器的VXI儀器。

如果把Conformance設為IEEE 488 (表示IEEE 488.1)，可以選擇指明其它設置，處理塊包頭和學習字符串，具体參閱下面的介紹。

Binblock字段

Binblock字段指明WRITE BINBLOCK操作使用的塊數据格式。Binblock可以指定IEEE 728 #A, #T,或#I塊包頭。如果Binblock是None，WRITE BINBLOCK會寫入一個IEEE 488.2 Definite Length Arbitrary Block Response Data塊。

IEEE 728塊包頭采用下述形式︰

#A<Byte_Count><Data>

#T<Byte_Count><Data>

#I<Data><END>

其中︰

<Byte_Count>是16位無符號整數，它指明了<Data>中后面跟著的字節數。

<Data>是任意字節流。

<END>表明确認EOI最后一個數据字節已經傳輸。

State (Learn String)字段

State字段表明儀器是否配置為上傳和下載學習字符串。如果State項目是Not Config'd，用戶希望把儀器配置成用于學習字符串，那么點擊State字段，將出現Upload String字段和Download字段。如果State項目是Not Config'd，把Upload String字段和Download String字段設為空字符串。

Upload String字段

Upload String字段指明在從Direct I/O對象菜單中選擇Upload State時發送到儀器的命令。指定導致儀器輸出學習字符串的命令。詳情請參閱儀器編程手冊。命令必須帶有雙引號。

Download String字段

Download String字段指明Direct I/O對象中WRITE STATE操作導致的在學習字符串前立即發送到儀器的字符串。這個字段用來支持在下載學習字符串時要求命令前綴的儀器。詳情請參閱儀器編程手冊。


Advanced Instrument Properties對話框: Plug&play Driver欄

下圖是Advanced Instrument Properties(高級儀器屬性)對話框Plug&play Driver欄的實例(顯示的接口為GPIB接口)︰

Plug&play Driver欄是Advanced Instrument Properties對話框中唯一与VXIplug&play驅程配置對應的欄。

下面介紹了各個字段。

Plug&play Driver Name字段

這個字段指明VXIplug&play驅程的名稱。在要求這個參數時，必須選擇一個驅程名稱。下拉列表顯示了已經安裝的所有VXIplug&play驅程。如果列表中沒有項目，要么是還沒有安裝任何VXIplug&play驅程，要么環境變量可能設置不正确。

Parameters to init() call字段

Address

輸入識別儀器的地址。地址格式取決于儀器連接到的接口︰

• VXI address string (嵌入式VXI, VXLink, 或MXIbus控制器)。

對帶有嵌入式控制器、VXLink控制器或MXIbus控制器的VXI儀器，地址串采用的形式如下︰

VXI[board]::VXI logical address[::INSTR]

例如，VXI::24::INSTR表示邏輯地址24上的儀器。

board 編號對第一塊電路板是可選的(VXI::24::INSTR等同于VXI0::24::INSTR)。但是，后續的電路板(VXI1, VXI2, 等等)則要求 board 編號。

• GPIB-VXI address string (命令模塊)。

對從連接到命令模塊的GPIB卡控制的VXI儀器，地址串采用的形式如下︰

GPIB-VXI[board]::VXI logical address [::INSTR]

例如，GPIB-VXI::24::INSTR (或GPIB-VXI0::24::INSTR)表示VXI邏輯地址24上的儀器。

• GPIB address string (GPIB儀器)。

對從GPIB卡控制的非VXI儀器，地址串采用的形式如下︰

GPIB[board]::GPIB primary address::[GPIB secondary address][::INSTR]

例如，GPIB::23::INSTR (or GPIB0::23::INSTR)表示主地址23上的GPIB儀器。(很少使用可選的二級地址。)

Perform Identification Query

如果用戶在第一次執行驅程的功能面板時希望驅程查詢儀器標識，選擇這個复選框。一般應選擇這個复選框，只在極少數情況下儀器不支持這一操作。

Perform Reset

如果用戶在第一次執行驅程的功能面板時希望向儀器發送复位，選擇這個复選框。一般應選擇這個复選框，只在極少數情況下儀器不支持這一操作。注意，所有VXI儀器都支持這一操作。

Download Drivers

如果用戶需要新的驅程或需要升級驅程，點擊Advanced Instrument Properties對話框中的URL。


Advanced Instrument Properties對話框: Panel Driver欄

下圖是Advanced Instrument Properties(高級儀器屬性)對話框Panel Driver欄的實例︰

備注

只有在I-SCPI驅程支持時，才能把基于寄存器的VXI設備配置成基于消息。

這一欄用來配置Panel Driver對象和Component Driver對象。下面介紹了各個字段。

ID Filename字段

ID Filename字段指明包含希望的Panel Driver的文件。點擊這個字段，出現Read from what Instrument Driver?對話框，選擇一個文件。根据儀器型號命名文件。

一定要選擇与使用的儀器型號完全對應的名稱，因為有許多類似的文件名稱，如hp3325a.cid和hp3325b.cid。

Sub Address字段

Sub Address字段指明某些驅程用來識別卡槽型儀器中插件模塊的子地址，如數据采集系統和交換机。如果沒有為其中一個插件配置驅程，把這個字段設為"" (NULL字符串)。

備注

由于使用subaddresses的驅程非常少，因此几乎所有情況下都使用默認設置"" (NULL字符串)。

如果為其中一個插件配置驅程，請參閱儀器驅程的聯机幫助，确定是否使用及怎樣使用子地址。

備注

不要弄混Sub Address字段与GPIB儀器的二級地址。子地址是driver配置的一部分，而不是硬件地址的一部分。

Error Checking字段

Error Checking字段确定在設置組件值后VEE是否查詢儀器的錯誤。把這個字段設為ON，除非執行速度不可接受。

Incremental Mode字段

Incremental Mode字段指明Panel Driver對象是否使用遞增狀態調用。

備注

在几乎所有情況下，Incremental Mode的正确設置都是ON。

在Incremental Mode設為ON時，VEE自動使發送到儀器改變狀態的命令數量降到最少。為此，VEE會把物理儀器當前狀態記錄与Panel Driver中指定的新狀態進行對比。

VEE确定哪些組件的設置不同，然后只發送所需的命令，改變与希望的狀態不匹配的組件。在大多數情況下，應把Incremental Mode設為ON，因為這种模式提供了最佳的執行速度。

在Incremental Mode設為OFF時，在相應的Panel Driver操作時，VEE明确設置每個組件的值。這种模式一般只用于VEE的儀器狀態記錄有可能与儀器實際狀態不匹配時。

Incremental Mode設置影響著Panel Driver對象操作，但不影響Component Driver對象操作。在下述情況下，建議把Incremental Mode設為OFF︰

• 在VEE程序控制儀器的同時，允許使用前面板操作儀器

• 在VEE程序控制儀器的同時，通過C程序或外殼命令在VEE環境外部改變儀器設置。

在程序中結合使用Component Drivers, Panel Drivers和Direct I/O對象，并不意味著必需把Incremental Mode設為OFF。


Advanced Instrument Properties對話框: Serial欄

下圖是Advanced Instrument Properties(高級儀器屬性)對話框Serial欄的實例(只适用于串行接口)︰

可以為串行(RS-232)接口設置下述字段︰

• Baud Rate – 默認值為9600 (位/秒)。

• Character Size – 默認值為8 (bits)。允許的值為5, 6, 7, 8, 和None。

• Stop Bits – 默認值為1。允許的值為1和2.

• Parity – 默認值為None。允許的值為None, Odd, Even, Mark,和Space。

• Handshake – 默認值為None。允許的值為None和Xon/Xoff。

• Receive Buffer Size – 默認值為4096 (bytes)。


Advanced Instrument Properties對話框: GPIO欄

下圖是Advanced Instrument Properties(高級儀器屬性)對話框GPIO欄的實例 (只适用于GPIO接口)︰

GPIO欄只有一個字段︰Data Width。Data Width字段指明通過GPIB接口作為一個單位傳輸的并行數据位數。這個字段把接口配置成讀寫寬8位或16位的數据。不需要与這個字段一起設置硬件開關。


dvanced Instrument Properties對話框︰A16 Space (僅适用于VXI)欄

Advanced Instrument Properties對話框︰A16 Space (僅适用于VXI)欄

下圖是Advanced Instrument Properties(高級儀器屬性)對話框A16 Space欄的實例。只有VXI接口才會出現這一欄，它僅用于基于寄存器的直接I/O操作。

下面詳細介紹了各個字段。

Byte Access (D8)字段

Byte Access字段指明了VXI設備是否支持8位A16存儲器存取。這個字段的可能選項有︰

• NONE – 設備不支持字節存取。

• ODD ACCESS – 設備支持字節存取，但只在奇數字節邊界上支持存取(D08(O))。

• ODD/EVEN ACCESS – 設備支持在所有邊界上進行字節存取(D08(EO))。

Word Access (D16)字段

Word Access字段不能編輯。所有VXI設備都必須支持16位存取 (D16)。

LongWord Access (D32)字段

LongWord Access字段指明了VXI設備是否支持32位A16存儲器存取。可能的選項包括︰

• NONE – 設備不支持32位存取。

• D32 ACCESS – 設備支持32位A16存儲器存取。

Add Register字段

在點擊Add Register字段時，它會在對話框中增加一行字段。這些字段允許配置存取設備的A16存儲器。共有四個字段︰

• Name – 寄存器的符號名稱，用來指明使用READ REGISTER或WRITE REGISTER操作的直接I/O對象中的特定寄存器。

• Offset – 配置的寄存器距設備A16存儲器相對基數的字節偏置值。

• Format – 將讀取或寫入配置的寄存器的數据格式。將在Offset字段指明的字節上進行讀取或寫入存取操作。可能的格式如下︰

• BYTE – 讀取或寫入字節。設備必須支持、并能夠使用上面介紹的BYTE字段正确配置8位存取。如果BYTE字段是ODD，那么Offset字段中指明的字節位置必須是奇數。

• WORD16 – 讀取或寫入16位字。16位用2的補數整數表示。所有VXI設備都明确支持這种格式。

• WORD32 – 讀取或寫入32位字。32位用2的補數整數表示。即使LongWord Access字段指定為NONE (使用兩個D16存取來讀取或寫入所有32位)，VEE仍支持這种格式。如果LongWord Access字段指定為D32 ACCESS，那么將存取全部32個位。

• REAL32 – 讀取或寫入32位字。32位用IEEE 754 32位浮點數表示。即使LongWord Access字段指定為NONE (使用兩個D16存取來讀取或寫入所有32位)，VEE仍支持這种格式。如果LongWord Access字段指定為D32 ACCESS，那么將存取全部32個位。

• Mode – 指明寄存器將支持哪种I/O模式，選項如下︰

• READ – 這個寄存器選項將只出現在READ REGISTER操作中。

• WRITE – 這個寄存器選項將只出現在WRITE REGISTER操作中。

• READ/WRITE – 這個寄存器選項將同時出現在READ REGISTER操作和WRITE REGISTER操作中。

Delete Register字段

在點擊Delete Register字段時，會顯示當前配置的寄存器的符號名稱列表。將從對話框中刪除選定的寄存器。

實例

下圖顯示了HP E1411B VXI万用表的寄存器配置下的A16 Space欄。注意在使用Add Register增加其它寄存器時，寄存器列表會滾動。

備注

擴展的(A24/A32 Space)存儲器配置与此類似，但它由存儲器"位置"、而不是"寄存器"構成。

Offset字段配置成每個寄存器距設備的A16空間相對基數的字節偏置。狀態寄存器(圖中Name: = stat)配置4字節偏置，配置模式為READ模式。

圖中沒有顯示控制寄存器。控制寄存器一般在WRITE模式下配置成4字節偏置。盡管兩個不同的寄存器位置可以有相同的模式，但Name字段必須是唯一的。但是，可以在READ/WRITE模式下，在字節位置4上把寄存器命名為statuscontrol。


Advanced Instrument Properties對話框: A24/A32 Space (僅适用于VXI)欄

下圖是Advanced Instrument Properties對話框的A24/A32 Space欄范例。只有VXI接口才會出現這一欄，其只用于基于寄存器的Direct I/O事務。

下面几節介紹了各個字段。

備注

"擴展存儲器"一詞指VXI設備中的A24或A32存儲器。(VXI設備可以實現A24或A32存儲器，但不能同時實現這兩者。)

Byte Access (D8)字段

Byte Access字段指定VXI設備是否支持8位存儲器訪問。這個字段可能的選項包括︰

• NONE - 設備不支持字節訪問。

• ODD ACCESS - 設備支持字節訪問，但只在奇數字節邊界(D08(O))上支持字節訪問。

• ODD/EVEN ACCESS - 設備在所有邊界(D08(EO))上支持字節訪問。

Word Access (D16)字段

Word Access字段不能編輯。對所有存儲器空間，所有VXI設備必須支持16位訪問(D16)。

LongWord Access (D32)字段

LongWord Access字段指定VXI設備是否支持32位存儲器訪問。可能的選項包括︰

• NONE - 設備不支持32位訪問。

• D32 ACCESS - 設備支持32位A16存儲器訪問。

QuadWord Access (D64)字段

QuadWord Access字段指定VXI設備是否支持64位擴展存儲器訪問。可能的選項包括︰

• NONE - 設備不支持64位訪問。

• D64 ACCESS - 設備支持64位存儲器訪問。

Agilent I/O Libraries G.02.02支持對某些VXI I/O儀器的存儲器空間進行64位訪問。這一功能使得VEE程序能夠對支持這一模式的VXI儀器讀/寫64位單位的存儲器。如果已經安裝了G.02.02版，那么可以使用Advanced Instrument Configuration對話框上的A24/A32 Space Tab啟動這种訪問模式。

為啟動這一模式，先啟動QuadWord Access (D64)訪問，選擇格式WORD32*2或REAL64。如果選擇WORD32*2格式，那么將把一個64位值讀入INT32數組的兩個相鄰數字中。

位置︰I/O [image] Instrument Manager [image] (select VXI instrument) [image] Edit Instrument [image] Advanced I/O Config... A24/A32 Space Tab。

Add Location字段

在點擊Add Location字段時，它會在對話框中添加一行字段。這些字段允許配置到設備擴展存儲器的訪問，共有四個字段︰

• Name - 位置的符號名稱，用來指明READ MEMORY或WRITE MEMORY事務的Direct I/O對象中的特定存儲位置。

• Offset - 配置的位置距設備擴展存儲器相對基數的偏置，單位為字節。

• Format - 將讀取或寫入配置的位置的數据格式。將在Offset字段指定的字節上進行讀或寫訪問。可能的格式包括︰

• BYTE - 讀或寫一個字節。設備必須使用上面討論的BYTE字段支持、并正确配置成8位訪問。如果BYTE字段是ODD，那么Offset字段中指定的字節位置必須是一個奇數。

• WORD16 - 讀或寫一個16位字。16位表示為2的補數整數。所有VXI設備都明确支持這种格式。

• WORD32 - 讀或寫一個32位字。32位表示為2的補數整數。即使LongWord Access字段指定為NONE (通過使用兩個D16訪問，讀或寫全部32位)，VEE仍支持這种格式。如果LongWord Access字段指定為D32 ACCESS，可以訪問全部32位。

• REAL32 - 讀或寫一個32位字。32位表示為IEEE 754 32位浮點數字。即使 LongWord Access字段指定為 NONE (通過使用兩個 D16訪問，讀或寫全部 32位)，VEE仍支持這种格式。如果 LongWord Access字段指定為 D32 ACCESS，可以訪問全部 32位。

• WORD32*2 - 作為兩個32位字讀或寫一個64位字(作為兩個Int32)。必須啟動 QuadWord Access。

• REAL64 - 作為REAL64讀或寫一個64位字。必須啟動QuadWord Access。

• Mode - 指定這個位置將支持哪种I/O模式，選項包括︰

• READ - 這個位置將只作為READ MEMORY事務中的選項出現。

• WRITE - 這個位置將只作為WRITE MEMORY事務中的選項出現。

READ/WRITE - 這個位置將同時作為READ MEMORY和WRITE MEMORY事務中的選項出現。

Delete Location字段

在點擊Delete Location字段時，將顯示當前配置的位置的符號名稱列表。將從對話框中刪除選中的位置。


了解I/O事務

VEE使用I/O事務与儀器、文件、字符串、操作系統、接口、其它程序和打印机通信。例如，看一下下面的To File對象。

這個To File對象把數据發送到指定文件 myFile。它可以包括稱為事務的輸入，接受來自程序的數据。例如，這個To File對象包括事務WRITE TEXT和一個EOL。在雙擊事務時，會出現I/O Transaction對話框，配置特定的事務語句。

根据對象，這個對話框有几种不同形式，但所有這些形式都包含某些共同的要素，包括“actions”、“encoding”、“expression list”、“format”和“end-of-line” (EOL)序列。


I/O 事務格式

寫入數据的I/O事務通常采用下述格式︰

<操作> <編碼> <表達式列表> <格式> <EOL>

下面是最常見的操作︰READ, WRITE, EXECUTE, 和WAIT。
操作 | 說明
READ | 使用指定編碼和格式從指定來源讀取數据。
WRITE | 使用指定編碼和格式把數据寫入指定目標。
EXECUTE | 執行特定命令。例如，EXECUTE REWIND把文件讀取或寫入指針重新定位到文件開頭，而不會擦除內容。EXECUTE CLOSE關閉一個打開的文件。
WAIT | 在下一個事務前等待指定秒數。

備注

通過查看菜單中的對象，還可以考察許多I/O Advanced I/O Operations操作。

編碼和格式是指數据打包和發送的方式。例如，TEXT編碼作為ASCII字符發送數据。TEXT編碼可以采用多种方式格式化。例如，為把由字母和數字組成的字符串發送到一個文件中，WRITE TEXT STRING事務將發送ASCII字符表示的整個字符串。WRITE TEXT REAL事務只從同一個字符串中提取Real數字，然后對各個位使用ASCII字符發送。下面簡要介紹了編碼。

編碼 | 說明
TEXT | 以人可讀的、可以簡便編輯或移植到其它應用軟件的形式(ASCII)讀取或寫入所有數据類型。VEE數字數据自動轉換成文本。
BYTE | 把數字數据轉換成二進制整數，發送或接收最無效的字節。
CASE | 把一個枚舉值或一個整數映射到一個字符串，讀取/寫入該字符串。例如，可以使用CASE接受錯誤數字，寫入錯誤信息。
BINARY | 以机器專用的二進制格式事務所有數据類型。
BINBLOCK | 在二進制文件中使用IEEE488.2有限長度塊包頭及所有VEE數据類型。
CONTAINER | 使用VEE專用文本格式及所有數据類型。

在寫入事務中，“表達式列表”是需要求解、生成發送的數据的逗號分隔的表達式列表。表達式可以由數學表達式、數据輸入端名稱、字符串常數、VEE函數或全局變量組成。在讀取事務中，表達式列表應由逗號分隔的輸出端名稱組成，這些名稱指明在讀取時在哪里存儲數据。

“怎樣控制儀器” 中介紹了數据格式及從儀器中讀取數据。大部分格式适用于所有I/O事務。

可以關閉、也可以打開EOL (行尾字符序列)，通過打開大部分I/O [image] To對象的對象菜單，選擇Properties...，可以指定EOL序列，然后選擇Data Format，在Separator Sequence下進行改動。


創建和讀取事務

這里討論的所有I/O對象都包含事務。事務指定了低級輸入或輸出操作，如怎樣讀取或寫入數据。每個事務都表現為I/O對象打開視圖中列明的一行文本。為查看典型事務，點擊I/O [image] To [image] String，創建一個To String對象。

為增加事務，雙擊對象。

下圖是使用To String對象說明事務怎樣運行的簡洙程序。這個程序使用兩個事務，一個事務寫入字串文字，另一個事務寫入固定十進制格式的數字。

對基于事務的對象，一般至少需要進行兩項操作︰

1 增加要求的額外事務。

2 增加輸入端或輸出端或兩者。在增加或編輯事務時，大多數端會根据需要自動增加。

另請參閱

編輯事務, 讀取事務數据 , 事務開發建議


編輯事務

使用鼠標和鍵盤編輯

下表簡要介紹了怎樣使用鼠標編輯事務。

要進行的操作... | 鼠標操作...
在列表末尾增加另一個處理。 | 雙擊對象，或在對象菜單中增加Trans。
把高亮顯示條移到不同的處理上。 | 任何未高亮顯示的處理。
在高亮顯示的處理上方插入一個處理。 | 對象菜單中Insert Trans。
剪切(刪除)高亮顯示的處理，把它保存在處理“剪切和粘貼”緩沖器中。 | 對象菜單中Cut Trans。
把高亮顯示的處理复制到處理“剪切和粘貼”緩沖器中。 | 對象菜單中Copy Trans。
把緩沖器中當前處理粘貼到高亮顯示的處理上方。 | 對象菜單中Paste Trans。
編輯處理。 | 雙擊處理。

下表簡要介紹了怎樣使用鍵盤編輯事務。

要進行的操作... | 按這個鍵...
把高亮顯示條移到下一個處理。 | CTRL+N
把高亮顯示條移到上一個處理。 | CTRL+P
把高亮顯示條移到不同的處理。 | Home,Up/Down Arrow,
在高亮顯示的處理上方插入一個處理。 | Insert line或CTRL+O
剪切(刪除)高亮顯示的處理，把它保存在處理“剪切和粘貼”緩沖器中。 | Delete line或CTRL+K
把緩沖器中當前處理粘貼到高亮顯示的處理上方。 | CTRL+Y
編輯高亮顯示的處理。 | 空格鍵

為編輯事務內部的字段，雙擊事務，把它擴展到I/O Transaction對話框，如下圖所示。

I/O Transaction對話框中所示的字段對不同I/O操作類型不同。為改變字段中的信息，點擊箭頭，從出現的列表中選擇相應信息。沒有箭頭的字段要求輸入文本。點擊OK接受選項，返回I/O對象。

點擊NOP，保存對話框中所示的最新設置，使該事務“不操作”。其效果与在基于文本的計算机程序中注釋一行代碼的效果相同。

根据需要自動增加輸入端和輸出端。也可以使用Object菜單，增加或刪除端。

編輯數据字段

數据字段要求輸入文本。下圖說明了READ事務及數据字段中可以輸入的內容實例。

下圖說明了WRITE事務及數据字段中可以輸入的內容實例。

WRITE事務允許指定一個表達式列表(變量、常數和運算符)，而READ只支持變量列表。數据字段的典型項目如下︰

在接受文本輸入作為使用雙引號定界的字符串的任何字段中，可以包括換碼符，如下表所示。

備注

READ事務允許在數据字段中使用空變量。把數据讀入空變量中會丟棄數据。這适用于刪除不需要的數据。

另請參閱

創建和讀取事務 , 讀取事務數据 , 事務開發建議


糤狠

VEE惠璶笆糤块狠㎝块狠も笆糤狠癸禜い翴阑"Add Terminal"┪ㄏノ龄絃е倍龄CTRL+A

WRITE穨р计沮眖VEE肚癳籔癸禜Τ闽ヘ璶―计沮块狠WRITE穨临眖Ы跑计┪笷Αい糶计沮"abs(globalA)"

READ穨р计沮眖籔癸禜Τ闽ㄓ方肚癳VEE璶―计沮块狠

瞷狠跑计嘿ゲ斗籔穨砏璖い跑计嘿で皌瓜┮ボ

絪胯狠跑计嘿˙艼

1 狠рウ耎甶Terminal Information癸杠よ遏い

2 癸杠よ遏い絪胯Name琿

VEEい跑计ぃだ糶碞琌弧s㎝SSignal㎝signal


讀取事務數据

為把數据讀入變量中，VEE必須知道要讀取的數据要素數量或特定終止條件。READ事務查找指定數量的數据要素或文件末尾(EOF)指示。 這些內容在I/O Transaction對話框的最后一個字段中指定。

讀取指定數量的數据要素的事務

事務對話框最后一個字段中的默認值是SCALAR。這指明了READ事務只讀取一個要素。為改變這种配置，點擊SCALAR字段，從提供的選項列表中選擇。

列表中的選項指明了READ事務的維數。例如，SCALAR表示維度為0，ARRAY 1D表示一維數組，ARRAY 2D表示二維數組，依此類推。

在選擇一個維度時，事務對話框為指定的每個維度顯示一個填充字段。下圖顯示了一個事務對話框，它配置成把一個三維二進制整數數組讀入名為matrix的變量中。SIZE:后面三個字段中的每個字段都包含著相應維度的整數數量。(在本例中，每個維度有兩個要素。)

在指定一個以上的維度時，先填充最右面或“最里面”的維度。在本例中，按下述順序讀取各個要素︰

matrix[0,0,0] read first

matrix[0,0,1]

matrix[0,1,0]

matrix[0,1,1]

matrix[1,0,0]

matrix[1,0,1]

matrix[1,1,0]

matrix[1,1,1] read last

在點擊事務對話框中的OK按鈕時，會出現事務結果及ARRAY: 關鍵字，后面跟著維度大小。例如︰

READ BINARY matrix INT32 ARRAY:2,2,2

如果事務配置成讀取一個標量值，那么會出現下面的事務︰

READ BINARY x INT32

可以在SIZE:字段中使用變量名稱，以程序化方式指定數組維度。例如，下述事務會讀取一個三維矩陣︰

READ BINARY matrix INT32 ARRAY:xsize,ysize,zsize

在本例中，xsize, ysize和zsize可以是以前的事務在同一個對象中設置的輸入端名稱，也可以是輸出端名稱。

讀取到文尾事務

某些VEE對象支持讀取到文件末尾(EOF)的READ事務，可以使用一個事務讀取文件內容。這些事務稱為讀取到文尾事務。下面的VEE對象支持讀取到文尾事務。

• From File

• From String

• To/From DDE

下圖顯示了From File對象的事務對話框，它讀取由二進制整數組成的三維數組，但配置成讀取到文尾︰

標量不支持讀取到文尾事務。為配置成讀取到文尾，必須為至少一維數組配置事務。如果VEE對象支持讀取到文尾，那么事務對話框中會出現SIZE:字段。點擊SIZE:字段可以啟用讀取到文尾，會出現TO END:字段。

如果讀取一維數組到末尾，那么只有在找到EOF時才知道數組中的要素數量。未知的數組長度在事務中用星號(*)表示。

在讀取多維數組到末尾時，除最左面或“外面”的維度外，必須為每個維度提供要素數量。上面的實例顯示了這個維度用(*)代替了事務中的大小。只有在讀取到文尾事務結束時，才知道這個維度的大小。

三維數組只是把多個兩維數組划分在一起。兩維數組的維度是“行”和“列”。把兩維數組堆疊在一起(象卡片一樣)，增加了第三個維度“深度”。

在三維數組的讀取到文尾事務中，指定了“行”數和“列”數，但只有在遇到EOF時，才知道“深度”。多維讀取到文尾事務也是如此。如果數組有n個維度，那么必須指定這些維度的n-1大小。只能有一個(最左面)維度的大小是未知的。

在維度大于ARRAY 1D的讀取到文尾事務中，讀取的要素總數必須能夠被已知維度乘積均勻除盡。例如，如果三維數組的讀取到文尾實例來自于一個共有16個要素的文件，那么事務將讀取四個2x2數組，因為事務指定“行”數和“列”數等于2。因此，在讀取結束時，未知維度"深度"的大小是4。

如果文件實際包含18個要素，那么其中一個2x2數組不完整。它將只包含兩個要素。如果為“行”和“列”維度指定的大小是2，那么這個文件的讀取到文尾會導致錯誤(將不會讀取任何數据)。而如果“行”數等于1，“列”數等于3，那么可以讀取這個文件，這個文件讀取到文尾操作會得到“深度”為6。

如果不知道文件中數据要素的絕對數量，那么可以一直使用ARRAY 1D進行讀取到文尾操作。

備注

讀取到文尾操作适用于返回要素數量未知的外殼命令程序中的Execute Program對象。

另請參閱

創建和讀取事務 , 編輯 事務, 讀取事務數据 , 事務開發建議


事務開發建議

開發所需事務的最佳方式通常是使用試錯方法。I/O事務中的大部分數据是文本(還有某种二進制數据)。編寫為TEXT的數据特別适合試驗，因為人可以讀。盡管使用TEXT并不是最緊湊、最快速的方法，但使用這种方法几乎可以完成一切操作。

可以使用To String對象，準确地模擬寫入文本的其它I/O對象的輸出行為。下面的程序顯示了完成這一操作的其中一种方式。


選擇正确的事務

本節概括了各种I/O 對象及其支持的事務。它還提出了一個程序建議，為特定目的确定正确的對象和事務。事務編碼和格式詳情請參閱I/O 事務格式。

下表概括了VEE中提供的基于事務的對象及其支持的動作。

表1︰

對象 | 說明
To File From File | 把數据寫入文件。 從文件中讀取數据。
To String From String | 把文字寫入VEE容器。 從VEE容器中讀取文字。
To Printer | 把文字寫入VEE文本打印机。
To StdOut To StdError From StdIn | 把數据寫入VEE標準輸出。 把數据寫入VEE標準錯誤。 從VEE標準輸入中讀取數据。
Direct I/O MultiInstrument Direct I/O Interface Operations | 直接与GPIB, VXI, 串行或GPIO儀器通信。 直接与同一對象中的多部GPIB, VXI, 串行或GPIO儀器通信。 在GPIB或VXI接口上發送低級總線命令和數据字節。
To/From DDE | 在Microsoft Windows下運行的程序之間動態交換數据。

表2

動作 | 說明
EXECUTE | 執行低級命令，控制与基于操作的對象有關的文件、儀器或接口。這一動作用來調節文件指針，清除緩沖器，關閉文件和管道，為硬件接口提供低級控制。
WAIT | 在執行下一個操作前等待指定的時間周期。對Direct I/O到GPIB的VXI儀器、基于消息的VXI儀器和的支持I-SCPI、基于寄存器的VXI 儀器，WAIT也可以等待特定的串行輪詢響應。
READ | 從相關對象中讀取數据。
WRITE | 把數据寫入相關對象中。
SEND | 把IEEE 488定義的總線消息(命令和數据)發送到GPIB接口。

選擇正确的對象和事務

1 确定I/O事務的來源或目的及數据傳輸形式。

2 使用上面的表1确定支持來源或目的地的對象類型。

3 使用上面的表2确定正确的事務類型。

4 為确定事務的其余規范，如編碼和格式，請參閱WRITE 事務, READ事務

實例: 選擇對象和事務

例如，假設需要讀取一個文件，其中包含兩欄文本數据。每一行包含一個時戳和實數，中間用白空格分開。每一行末尾是換行符。文件的部分內容如下︰

14:18:00 1.001

14:18:30 -2.002

14:19:00 1.0E-03 . . .

根据前面的選擇對象和事務的程序，可以采取下述步驟解決這個問題︰

1 來源是一個文本文件。數据由24小時的時分秒表示的時戳和科學和小數符號表示的簽名實數組成。

2 從表1中可以看出，讀取文件使用的對象是From File。

3 從表2中可以看出，從文件中讀取數据使用的事務類型是READ。

4 要求的事務是︰

   READ TEXT x TIME

  READ TEXT y REAL

使用To String和From String

通過事務，使用To String創建格式化Text。Text寫入VEE 容器中。

使用From String，從VEE 容器中讀取格式化Text。

如果To String 對象中的所有事務都生成一個字符串，輸出容器是一個Text標量。如果To String中的事務生成一個以上的字符串，那么輸出是Text一維數組。

使用EOL ON的WRITE事務一直終結當前輸出串。這會導致下一個事務開始寫入輸出容器的下一個數組單元。

以EOL OFF結束的WRITE事務將不會終結輸出串，導致下一個WRITE事務輸出的字符追加到當前字符串的末尾。To String的最后事務一直終結當前字符串，而不管該事務的EOL設置如何。

在大多數情況下，To String使用的正确事務類型是WRITE TEXT。TEXT之外的編碼詳情請參閱WRITE 事務, READ事務。

From String可以讀取Text標量或數組，具体視READ TEXT事務的配置而定。READ TEXT在遇到EOL時會終止讀取，或者會消耗EOL，繼續讀取。這取決于格式。格式詳情請參閱WRITE 事務, READ事務。

備注

READ和WRITE兼容能力

一般來說，必須知道怎樣寫入數据，以便正确讀取。這特別适合有問題的數据是某种二進制格式、不能直接檢查确定其格式的情況。必須使用与寫入相同的格式讀取數据。


使用基于事務的對象

本節提供使用基于事務的對象的指導準則，包括執行規則和Object配置。

執行規則

事務I/O對象遵守VEE 程序的所有通用規則。另外，事務本身也有一些自己的規則︰

• 事務在執行時從最上面的事務開始，順序向下進行。

• 列表中的每個事務要完全執行之后，才能開始下一個事務。某個對象中的多個事務不能以重疊方式執行。同樣，一次只有一個事務對象能夠存取某個來源或目的地。

• 存取同一個來源或目的地的基于事務的 I/O 對象可能存在于不同的線程中，也可能存在于同一程序的同一線程中。

對文件相關對象，每個文件只有一個讀取指針和一個寫入指針。存取某個文件的所有對象共享相同的指針。

對象配置

在大多數情況下，任何事務的結果事實上取決于兩個因素︰

• 事務中的規范

• 對象菜單中通過Properties存取的設置

在大多數情況下，您不需要考慮Properties設置，因為通常可以使用默認值。

寫入數据的基于事務的 I/O對象（Direct I/O除外）在Properties對話框中新增了一欄，允許編輯數据格式。得到的對話框允許查看和編輯各种設置。

備注

Direct I/O 對象在對象菜單中包括一個Show Config功能，允許查看（但不能編輯）配置設置。為編輯Direct I/O對象的配置，必須使用I/O Manager。

如下圖所示，雙擊事務I/O 對象的標題欄，出現下面的Properties Window窗口。

Properties Window窗口中有一個Data Format欄，包含著影響WRITE事務寫入特定數据的方式的設置。 End Of Line (EOL)影響著設置EOL ON的任何WRITE。其余Data Format字段只影響WRITE TEXT 事務。

下一節詳細解釋了Data Format一欄中的字段。

End Of Line (EOL)字段

End Of Line (EOL)字段指定使用EOL ON的WRITE 事務最后發送的字符。這個字段的項目必須是帶有雙引號的0個或多個的字符。“雙引號”表示ASCII 34十進制值。VEE識別End Of Line(EOL)內的任何ASCII 字符，包括 換碼符表 中所示的換碼符。

Array Separator字段

Array Separator字段指定用來分隔WRITE TEXT事務寫入的一個數組中各個要素的字符串。這個字段的項目必須使用雙引號。“雙引號”表示ASCII 34十進制值。VEE把任何ASCII 字符識別為Array Separator，并識別 換碼符表 中所示的換碼符。

在Direct I/O 對象中寫入數組的WRITE TEXT STR事務是一個特例。在本例中，Array Separator字段中的值被忽略，換行符(ASCII 10 十進制值)用來分隔數組中的要素。這一行為是与大多數儀器的需求相一致。

Multi-Field Format字段

Multi-Field Format字段指定WRITE TEXT 事務多字段數据類型的格式化樣式。在VEE中，多字段數据類型是Coord, Complex, PComplex和Spectrum 。這一設置不影響其他數据類型和其他格式。

圓括號內每個多字段項目指定(...)Syntax的多字段格式。指定Data Only數据會省略圓括號，但保留分隔逗號。例如，复數2+2j可以使用(...) Syntax寫為(2,2)，或使用Dtaa Only語法寫為2,2。

VEE 支持多字段數据類型的數組。例如，您可以創建一個Complex數据組成的數組。在這种情況下，如果Multi-Field Format設為(...) Syntax，那么數組將寫為︰

(1,1)array_sep(2,2)array_sep ...

其中array_sep是Array Separator字段中指定的字符。

Array Format字段

Array Format字段确定寫入多維數組的方式。例如，數學家對矩陣的寫法如下︰

1 2 3

4 5 6

7 8 9

VEE 用兩种方式之一寫入同樣的矩陣，具体取決于Array Format的設置。在下面這兩個范例中，End Of Line (EOL) 設為"\n" (換行)，Array Separator設為" " (空格)。

1 2 3 碼 組數組格式

4 5 6

7 8 9

1 2 3 4 5 6 7 8 9 線性數組格式

不管是哪种數組格式，都使用Array Separator字符分隔數組中的每個要素。碼組數組格式增加了一步，使用End Of Line (EOL)字符分隔數組中的每一行。

在一般情況下（數組大于二維），每次在最右面的下標之外的下標變化時，碼組數組格式會輸出一個End Of Line (EOL)字符︰

例如，如果在這一事務中使用Block數組格式寫入三維數組A[x,y,z] ︰

WRITE TEXT A

每次在x或y值變化時，會輸出一個End Of Line (EOL)字符。

如果A中每個維度的大小是2，按下述順序寫入要素︰

A[0,0,0] A[0,0,1]<EOL 字符>

A[0,1,0] A[0,1,1]<EOL 字符>

<EOL 字符>

A[1,0,0] A[1,0,1]<EOL 字符>

A[1,1,0] A[1,1,1]<EOL 字符>

在寫入A[0,1,1]之后，x 和 y 同時變化，因此同時寫入兩個<EOL 字符>。


与文件通信

本節提供了与文件通信有關的指導準則，包括使用文件指針和導入數据。

使用文件指針

VEE每個文件保持一個讀取指針和一個寫入指針，而不管有多少個對象存取文件。讀取指針指明要讀取的下一個數字項目的位置。類似的，寫入指針指明應該在哪里寫入下一個項目。下表顯示了對象和源/目的文件。

源或目的 | 對象
數据文件 | To File, From File
標準輸入 | From StdIn
標準輸出 | To StdOut
標準錯誤 | To StdErr

這些指針的位置受到下述因素影響︰

• READ, WRITE或EXECUTE操作

• 在打開的To File視圖中，PreRun & Open設置下的Clear File

存取同一文件的所有對象都擁有相同的讀取指針和寫入指針，即使對象處于不同線程或不同上下文中。

在滿足下述條件之一時，將打開一個文件，以進行讀取和寫入。

• 存取某個文件的第一個對象在PreRun后第一次運行。這是最常見的情況。

• 新的數据到達可選的指明文件名稱的控制輸入端。這种情況發生的比較少。

讀取指針

在From File打開一個文件時，讀取指針位于文件的開頭。后續的READ操作根据要求推進文件指針，以滿足READ。可以在任何時候使用From File對象中的EXECUTE REWIND操作，強制讀取指針到達文件開頭。這一操作不影響文件中的數据。

寫入指針

寫入指針的初始位置取決于打開的To File視圖中PreRun & Open設置下的Clear File。如果在PreRun & Open下啟用Clear File，那么將擦除文件內容，在打開文件時，寫入指針位于文件的開頭。否則，寫入指針位于文件的末尾，并追加數据。

可以在任何時候使用From File對象中的EXECUTE REWIND操作，強制讀取指針到達文件開頭。REWIND會保留文件中已有的任何數据。但是，從新位置開始，新數据將覆蓋舊數据。CLEAR會擦除文件中已有的數据。

備注

To DataSet 和 From DataSet對象也与To File 和 From File對象每個文件共享一個讀取指針和一個寫入指針。但是，建議不要在同一個文件上混合進行To DataSet 和 From DataSet 運算及To File 和 From File 運算。

關閉文件

VEE保証在最后操作執行完成及所有輸出端已經激活時，To File寫入的任何數据都將寫入操作系統。

VEE在PostRun時自動關閉所有文件。在所有活動線程執行完成時，會發生PostRun。

通過同時在To File和From File中使用EXECUTE CLOSE操作，可以以程控方式關閉文件。這提供了一种手段，可以連續讀取或寫入另一個程序可能已經創建的文件。

還可以使用EXECUTE DELETE操作，以程控方式刪除文件，這适合刪除臨時文件。

下面是采用EXECUTE CLOSE的實例。這個程序保存在范例目錄下的 manual48.vee 文件中。

Execute Program執行一條外殼命令(date)，創建并把日期和時間寫入一個文件中(\tmp\dateFile)。在同一線程內部，From File使用READ TEXT x STR操作從文件中讀取數据。EXECUTE CLOSE操作必不可少，因為For Count多次執行子線程。

成功執行Execute Program將覆蓋文件。但是，由于From File只打開文件一次，因此在第二次執行From File時，讀取指針將過時。它不再指向文件，因為Execute Program已經重新建立了文件。程序將發生錯誤。

在讀取文件后，From File必須使用EXECUTE CLOSE操作關閉文件。EXECUTE CLOSE操作在每次執行時強制From File重新打開文件。

在本例中，可以使用NOP顯示錯誤，"注釋" EXECUTE CLOSE操作。錯誤將指明到了文件末尾或沒有找到數据。刪除NOP后，程序會正常運行。

EOF 數据輸出

From File支持獨特的數据輸出端，稱為EOF (end-of-file)。在用戶試圖讀取的位置超出文件末尾時，會激活這個端。在用戶希望讀取未知長度的文件時，可以使用EOF端。

read-to-end特性 還為讀取未知長度的文件提供了一种手段。但是，文件內容將放在一個VEE容器中。如果要讀取一個文件，一次讀取一個要素，且每個要素都裝在自己的容器中，那么可以使用EOF端。

下一個實例說明了EOF的典型用途。讀取的文件包含未知長度的X-Y數据列表。典型的文件內容是︰

1.0

5.5

2.1

8

.

.

.

導入數据

由于VEE為分析和顯示數据提供了一個方便的環境，因此用戶可能想從其它程序把數据導入VEE中。從另一個應用軟件中導入數据的一般程序是︰

1 把數据保存在文本文件中(ASCII文件)。

2 使用文本編輯器檢查數据文件，确定數据格式。

3 使用From File對象及READ TEXT操作，讀取數据文件。

導入 X-Y 值

一個十分常見的問題是讀取包含未知數量的X和Y值的文本文件，并繪制圖表。下面的程序解決了這個問題。

上面的程序保存在范例目錄下的 manual29.vee文件中。

READ TEXT REAL64操作簡便地處理Y值使用的所有不同符號，包括標記、小數點和指數。部分數据文件如下︰

.

.

.

8 8.555555

9 9e0

10 1.05e+01

11 +11.

12 12.5

13 1.3E1

導入波形

其它應用軟件有許多不同的慣例，把波形保存為文本文件。一般來說，文件由描述波形屬性的許多單獨值及一維Y值數組組成。本節介紹了怎樣導入使用其中一個慣例保存的波形。

• 固定格式的文件標題。波形屬性列在文件開頭的固定位置，后面跟著一個一維Y值數組。

• 可變格式文件標題。在文件開頭列明可變數量的屬性，后面跟著一個一維Y值數組。其位置用專門的文本令牌標出。

固定格式的標題

固定標題的部分數据文件如下︰

NAME Noise1

START_TIME 0.0

STOP_TIME 1.0E-03

SAMPLES 32

DATA

.243545

.2345776

.

.

.

由于這是固定格式的標題，因此NAME和SAMPLES等標記不相關。波形屬性一直出現及位于相同的位置。下面的實例說明了讀取上述波形數据文件的程序。

上面的程序保存在范例目錄下的 manual30 .vee文件中。

From File中的操作完成了這里列出的大多數工作。下面介紹了每种操作的工作方式︰

1 第一個操作剝离NAME標記。必須先完成這一操作，然后才能讀取波形名稱中的字符串，或作為單個字符串一起讀取NAME和Noise1。

2 第二個操作讀取波形的字符串名稱。

3 第三個到第五個操作讀取指定的數字數量。VEE讀取并忽略文件中構建數字不需要的任何前面“多余”字符。

4 第六個操作使用上一個操作确定的ARRAY SIZE，讀取一維Y值數組。Samples必須作為這一操作中使用的輸出端出現。

可變格式標題

下面列明了采用可變格式標題的部分數据文件︰

First Line Of File

<MARKER1> 1 2 3

<MARKER2> A B C

<DATA>

1 1.1

2 2.2

3 2.9

.

.

.

在這种情況下，文件中的确切內容和數据位置是未知的。与這一文件有關的唯一已知的情況是XY值列表遵守特殊文本標記<DATA>。

為簡化這一實例，這一程序只查找与<DATA>有關的數据。在您自己的應用中，您可能需要搜索多個標記。

這一程序保存在范例目錄下的 manual31.vee 文件中。

From File #1一次讀取一個令牌(用白空格分隔的字)，搜索<DATA>。一旦找到<DATA>，那么From File將讀取XY對，直到到達文件末尾。

另請參閱

實驗5-3: 使用To/From File對象


与程序通信

本節提供了与程序進行通信的指導準則，包括︰

• 使用Execute Program

• 使用Dynamic Data Exchange (DDE)

下表顯示了程序和相關對象。

程序 | 對象
MS-DOS 命令 | Execute Program
Windows程序¨ | Execute Program To/From DDE
C程序 | Execute Program Import Library Call Function Formula

¨ VEE支持ActiveX自動化，允許控制其它Windows程序。如需与使用這一功能有關的信息，請參閱Help [image] Content和Index [image] Tell me about [image] Active X。

使用Execute Program

可以使用Execute Program對象，執行從操作系統命令行中正常完成的任務。下面是Execute Program對象的實例。

可以使用Execute Program，運行任何可執行文件，包括︰

• 匯編的C程序

• 任何MS-DOS程序 (*.EXE或*.COM文件)

• .BAT文件

• MS-DOS系統命令，如dir

Execute Program 字段

下面几節介紹了在打開的Execute Program視圖中可以看到的字段。

Run Style

如果希望執行的程序在窗口中運行，那么Run Style會指明窗口樣式︰

• 在標準窗口中正常運行程序

• 在最小化為圖標的窗口中最小化運行程序

• 在放大到最大尺寸的窗口中最大化運行程序

Wait for Prog Exit

Wait for prog exit确定VEE什么時候結束Execute Program對象操作及激活任何數据輸出。如果Wait for prog exit設為Yes，VEE將︰

1 執行Execute Program對象中指定的命令。

2 等到流程結束，然后激活Execute Program對象的任何輸出端。

如果Wait for prog exit設為No，VEE將︰

1 執行Execute Program對象中指定的命令。

2 激活Execute Program對象上的任何數据輸出端。

在Wait for prog exit設為No時，Execute Program執行速度更快，其它方面相同。

Prog With Params

Prog with params 指定下面其中一項︰

1 可執行文件和命令行參數的名稱。

2 發送到MS-DOS進行解釋的命令。

如果在AUTOEXEC.BAT文件的PATH變量中包括相應的路徑，那么您不必在Prog with params字段中包括路徑。在Prog with params字段中一般會輸入的內容實例︰

為執行MS-DOS 命令︰

COMMAND.COM /C DIR *.DAT

為運行匯編后的C程序︰

MyProg -optionA -optionB

為在瀏覽器中打開URL︰

http://www.agilent.com/find/vee

為打開文件︰

D:\path\word.doc

工作目錄

工作目錄是指您想執行的程序可以找到所需文件的目錄。例如，如果您想在c:\progs\cprog1目錄下使用makefile運行程序nmake︰

1 在Prog with params:中輸入nmake。

2 在Working directory:中輸入c:\progs\cprog1。

使用Dynamic Data Exchange (DDE)

備注

DDE是一种過時的(但仍然支持的)功能。VEE for Windows支持ActiveX自動化，允許控制其它Windows程序。如需与使用這一功能有關的信息，請參閱Help [image] Content and Index [image] Tell me about [image] Active X。安捷倫強烈推荐采用ActiveX自動化，而不是DDE。

Dynamic Data Exchange (DDE)定義了Windows程序之間通信使用的基于消息的協議。這一通信發生在DDE客戶端和DDE服務器之間。DDE客戶端請求与DDE服務器通話。然后客戶端從服務器程序請求數据和服務。服務器作出響應，發送數据或執行規程。

支持DDE的Windows程序可以作為客戶端、服務器或兩者。VEE只提供了客戶端功能。它使用To/From DDE對象實現DDE功能。

To/From DDE對象采用4种處理︰

READ(REQUEST) -- 從DDE傳送中讀取數据。

WRITE(POKE) -- 把 (pokes) 數据寫入DDE傳送。

EXECUTE -- 把命令發送到与VEE通信的DDE服務器。然后服務器執行命令。

WAIT -- 等待指定數量的時間 (洙位︰秒)。

To/From DDE對象作為功能的一部分發起和終止DDE操作。您不必明确執行發起功能和終止功能。

如下所示，To/From DDE對象有三個主要字段︰Application, Topic和Timeout。

在Application字段中，輸入希望与之通信的Windows程序的DDE程序名稱。一般來說，這是EXE類型的文件名稱。對每個具体程序，參閱手冊，确定其DDE程序名稱。

Topic字段包含數据型程序的特定識別符。例如，字處理程序的標題將作為文件名稱。

Timeout字段允許指定在程序沒有應答時VEE等待的超時周期。默認值是5秒。

最后一個字段包含与其它程序通信的處理。對READ(REQUEST)和WRITE(POKE)處理，還必須在處理中填寫Item名稱。Item名稱是每個數据的專用識別符。例如，電子表格數据項目可以是單元格位置，字處理程序數据項目可以是書簽名稱。

下面的To/From DDE對象与MS Windows Program Manager通信，創建一個程序組，在程序組中增加一個項目，顯示5秒時間，然后刪除程序組。

如果服務器DDE程序目前沒有運行，VEE會試圖啟動該程序。只有程序的可執行文件名稱与程序字段中的名稱相同時，這一操作才會成功。還必須在PATH中定義可執行文件的目錄。VEE將試著在Timeout字面中輸入的時間量內啟動程序。

如果可執行文件的目錄沒有位于PATH內，那么在To/From DDE對象前使用Execute Program對象，運行應用程序，如下︰

下一個實例說明了通過To/From DDE對象使用輸入和輸出端。

DDE 實例

下面提供了与各种Windows應用軟件通信的部分實例。在每個實例中閱讀寫字板，可以獲得与實例有關的重要信息。

Lotus 123 DDE實例︰

Excel DDE實例︰

Reflections DDE實例︰

Word for Windows DDE實例︰

WordPerfect DDE實例︰


在 Direct I/O 和 InterfaceOperations中使用事務

三個VEE對象允許使用I/O事務与儀器通信︰

• Direct I/O 對象允許通過GPIB、VXI、串行和GPIO接口及通過LAN連接与儀器傳送數据。

• MultiInstrument Direct I/O對象允許從一個對象到多部儀器執行直接I/O事務。

• Interface Operations對象允許發送低級GPIB或VXI消息、命令和數据。

對于任何對象來說，消息都通過I/O事務方式“構建”和發送。

備注

只有在I-SCPI驅程支持時，才能把基于寄存器的VXI設備作為基于消息的設備使用。

在使用Direct I/O、MultiInstrument Direct I/O和 Interface Operations對象之前，必須正确配置VEE，以与儀器通信。詳情請參閱Instrument Manager。


使用 Direct I/O 對象

Direct I/O對象允許使用儀器的內置命令直接控制儀器，而不需要VEE儀器驅程 (ID)或VXIplug&play驅程來使用Direct I/O控制儀器。

發送命令

使用WRITE處理，把命令發送到采用Direct I/O的儀器上。把命令發送到GPIB, 基于消息的VXI儀器、I-SCPI支持的基于寄存器的VXI 儀器及串行儀器的最重要的WRITE處理是︰

• WRITE TEXT

• WRITE BINBLOCK

• WRITE STATE

Direct I/O只使用WRITE BINARY和WRITE IOCONTROL處理，把命令發送到GPIO儀器。

Direct I/O使用WRITE REGISTER和WRITE MEMORY處理，把命令發送到基于寄存器的VXI儀器和部分基于消息的VXI儀器。這些處理是与I-SCPI驅程不支持的基于寄存器的VXI儀器通信的唯一方法。

WRITE TEXT 處理

在要求Direct I/O的絕大部分情況下，您只需WRITE TEXT處理就可以設置儀器。大多數GPIB儀器、基于消息的VXI儀器和串行儀器采用人可讀的文本字符串進行命令編程。可以使用WRITE TEXT處理，把這些命令簡便地發送到儀器中。

例如，滿足IEEE 488.2規范的所有儀器都把*RST識別為一條复位命令。用來复位此類儀器的處理是︰

WRITE TEXT "*RST" EOL

儀器通常會在語法中定義非常精确的"標點"。它們可能需要在每條命令后或在一組命令結尾發送特定的字符。此外，GPIB儀器以不同的方式使用信號線End-Or-Identify (EOI)。

如果在這方面怀疑有問題，在Advanced Instrument Properties對話框中，檢查Direct I/O一欄中的END(EOI)on EOL和EOL Sequence字段。參閱Advanced Instrument Properties 對話框: Direct I/O欄 。參閱儀器編程手冊，為儀器确定正确的命令語法。

• Direct I/O允許在儀器要求時使用TEXT之外的WRITE編碼。最常用的TEXT之外的編碼是BINBLOCK和STATE。

WRITE BINBLOCK 處理

BINBLOCK編碼使用IEEE定義的碼組格式把數据寫入儀器中。這些碼組格式一般用來傳送大量的相關數据，如來自示波器和頻譜分析儀的軌跡數据。在接受BINBLOCK數据前，儀器通常要求大量的命令。詳情請參閱儀器編程手冊。

為使用BINBLOCK處理，必須在Advanced Instrument Properties對話框的Direct I/O一欄中正确配置Conformance字段 (及可能配置BINBLOCK)。參閱Advanced Instrument Properties 對話框: Direct I/O欄 。

WRITE STATE 處理

某些GPIB儀器和基于消息的VXI儀器支持學習字符串功能，允許上傳所有儀器設置。然后可以使用WRITE STATE處理下載學習字符串，調用儀器的測量狀態。在希望下載測量狀態，但沒有儀器驅程時，特別适合使用學習字符串。

備注

WRITE STATE處理只适用于 GPIB儀器和基于消息的VXI儀器。

使用學習字符串的典型程序如下︰

1 把儀器配置成希望的測量狀態。這一般使用儀器前面板完成。

2 在為儀器配置的Direct I/O對象的對象菜單中，點擊Upload State。儀器狀態現在与Direct I/O對象的這一特定實例相關。

3 在Direct I/O對象中添加WRITE STATE處理︰

• 在使用時，WRITE STATE一般是Direct I/O對象中的第一個處理。WRITE STATE把上傳的學習字符串寫入儀器中，同時設置所有儀器函數。后續的WRITE處理可以以遞增方式修改儀器設置。

在GPIB儀器和基于消息的VXI儀器中，Upload和WRITE STATE的行為受到Direct I/O一欄中Conformance和State (Learn String)設置的影響。

如果Conformance是IEEE 488.2，VEE使用IEEE 488.2 *LRN?定義自動處理學習字符串。如果Conformance是IEEE 488，Upload String指明查詢狀態使用的命令，Download String指明下載時字符串前面的命令。

基于消息的VXI儀器和I-SCPI支持的基于寄存器的VXI儀器滿足IEEE 488.2規范。

點擊Direct I/O對象菜單中的Upload State，結果有三個︰

• 立即上傳學習字符串。

• 只要存在，學習字符串保留在該特定的Direct I/O對象，直到下一次Upload。學習字符串与程序一起保存。

• 如果复制Direct I/O對象，复制中會包括相關學習字符串。

學習字符串范例

例如，假設您想使用學習字符串對HP 54100A數字示波器編程。示波器的主要情況如下︰

• 示波器滿足IEEE 488規范，不滿足IEEE 488.2規范。

• 用來查詢示波器學習字符串的命令是SETUP?。

• SETUP命令必須位于下載到儀器上的學習字符串的前面。在SETUP的P和下載的學習字符串第一個字符之間要有一個空格。

必須使用Instrument Manager為示波器指定正确的直接I/O配置。下圖顯示了學習字符串的設置。

為從示波器上傳學習字符串，在控制示波器的Direct I/O對象的對象菜單中，點擊Upload。為下載學習字符串，使用下面的處理︰

WRITE STATE

讀取數据

為從使用Direct I/O的儀器中讀取數据，可以使用READ處理。

備注

儀器返回各种格式的數据。一般來說，必須知道希望VEE從儀器中讀取的數据類型及數据數量。儀器類型決定著在處理中必須指定的編碼和格式。讀取的數据數量決定著在處理對話框的SCALAR或ARRAY字段中必須使用的配置。

在GPIB儀器、基于消息的VXI儀器和串行儀器中，Direct I/O使用的最重要的READ處理是︰

• READ TEXT

• READ BINBLOCK

Direct I/O只使用READ BINARY和READ IOSTATUS處理從GPIO儀器中讀取數据。

Direct I/O使用READ REGISTER和READ MEMORY處理從基于寄存器的VXI儀器和某些基于消息的VXI儀器中讀取數据。這些處理是与I-SCPI不支持的基于寄存器的VXI儀器通信的唯一方法。

備注

如果從儀器中讀取數据有困難，試著使用Bus I/O Monitor檢查數据格式。

READ TEXT 處理

因查詢而從儀器中讀取的數据通常是一個數字值，其格式為文本格式。例如，電壓表以指數形式的單個數字返回每個讀數，如-1.234E+00。從電壓表中讀取值的處理是︰

"READ TEXT a REAL"

某些儀器對查詢應答字母信息及數字測量數据。一般來說，這不是什么問題，因為READ TEXT REAL處理會丟掉前面的字母字符，提取數字值。

備注

在從儀器中讀取數字數据時，在必要時會根据儀器I/O數据類型轉換中列出的規則，自動轉換儀器數据的數据類型。


使用MultiInstrument Direct I/O 對象

MultiInstrument Direct I/O 對象 (I/O [image] Advanced I/O [image] MultiInstrument Direct I/O) 允許使用直接I/O 處理從一個對象中控制多部儀器。這個對象是標準的處理對象，可以用于VEE支持的所有接口。

其外觀与Direct I/O 對象相同，但每次MultiInstrument Direct I/O中的每個處理會尋址單獨的儀器。由于MultiInstrument Direct I/O 對象不一定象Direct I/O 對象那樣控制某部儀器，因此其標題沒有列出儀器名稱、地址或是實地模式條件。

通過使用 MultiInstrument Direct I/O，可以減少程序中儀器專用的Direct I/O 對象數量，以優化圖標-圖標的解釋時間。這种性能提高對VXI接口尤為重要，VXI接口的儀器控制速度要比GPIB快。

下圖是MultiInstrument Direct I/O 對象及其配置成与四部儀器通信的I/O Transaction對話框。

Transaction對話框

I/O Transaction對話框与Direct I/O使用的對話框類似，但它額外增加了兩個字段。共同的字段工作方式相同。下面几節介紹了兩個新增的字段。

Instrument字段

Instrument字段包含當前配置的儀器名稱。點擊向下的箭頭，會出現一個配置的儀器列表。可以為每個處理選擇不同的儀器。

Address字段

Address字段指明Instrument字段中列明的設備地址。Address字段有兩种格式︰Default Address和Address:。

Default Address把VEE設置成使用儀器最初配置時輸入的地址。Address:包括一個文本框，允許輸入一個不同的地址。

您可以輸入某個數字值、一個變量名稱或一個表達式。這個項目必須求解為一個有效的地址。在儀器執行時，輸入的Address:值將改變設備地址，其与地址控制端操作類似。下圖顯示了使用Address:的I/O Transaction對話框。

編輯處理

在您使用I/O Transaction對話框編輯處理時，只接受儀器類型允許的處理。例如，如果Instrument字段中顯示的名稱配置為通過VXI背板控制的VXI設備，那么您可以配置REGISTER或MEMORY 存取處理。

如果I/O Transaction對話框是為某類處理配置的，您可以改變Instrument字段名稱，必須對不同儀器保持正确處理。如果處理不正确，I/O Transaction對話框中的項目將變成該儀器類型最后有效的處理。如果把Instrument字段名稱變成非VXI儀器，對VXI設備的REGISTER存取處理將不正确。

對象菜單

MultiInstrument Direct I/O對象菜單与Direct I/O 對象類似。MultiInstrument Direct I/O菜單不包括Show Config…或Upload State菜單選項。這些菜單選項适用于特定的儀器配置。使用Direct I/O對象顯示儀器配置，或上傳物理儀器的設置。

在處理中沒有為任何可能的設備提供實地模式指示符。為控制儀器的實地模式，點擊I/O [image] Instrument Manager..., 然后編輯選擇的工具配置。.


使用 Interface Operations 對象

Interface Operations對象 (I/O [image] Advanced I/O [image] Interface Operations)允許使用低級命令控制GPIB儀器、VXI儀器和串行儀器。Interface Operations支持提供這种低級控制的兩种處理︰EXECUTE和SEND。

EXECUTE處理

EXECUTE處理采用下面的形式︰

EXECUTE Command

其中Command是 EXECUTE命令摘要 (Interface Operations)表中匯總的其中一條總線命令。盡管這個表中列出的命令名稱与Direct I/O中的EXECUTE命令名稱相同，但它們之間有一個重要區別。

• Direct I/O EXECUTE命令會确定一部儀器的地址來接收命令。

• Interface Operations EXECUTE命令可能會影響多部儀器。對GPIB，必須确定這些儀器的地址以收听信息。

EXECUTE命令摘要 (Interface Operations)︰

命令 | 說明
ABORT | 通過确認IFC (Interface Clear)行，清除GPIB接口。為清除和复位VXI接口，使用CLEAR。
CLEAR | 通過發送DCL (Device Clear)，清除所有GPIB設備。對VXI，應复位接口，運行Resource Manager。
TRIGGER | 對GPIB，通過發送GET (Group Execute Trigger)，觸發确定收听信息的所有設備。對VXI，觸發TTL、ECL或外部觸發器。
REMOTE | 對GPIB，确認REN (Remote Enable)行。VXI沒有相對應的部分。
LOCAL | 對GPIB，釋放REN (Remote Enable)行。VXI沒有相對應的部分。
LOCAL LOCKOUT | 對GPIB，發送LLO (Local Lockout)消息。在發送LLO時遠程模式下的任何設備都將鎖定前面板操作。VXI沒有相對應的部分。
LOCK INTERFACE | 在共享資源的多流程系統中，在關鍵段中讓一個流程鎖定資源供自己使用，防止另一個流程試圖使用這些資源。
UNLOCK INTERFACE | 在一個流程已經鎖定共享資源供自己使用的多流程系統中，解鎖資源，允許其它流程存取資源。
PASS CONTROL | 把控制傳送到指定地址的GPIB設備，只要設備能夠成為活動主控方。VXI沒有相對應的部分。

SEND處理

SEND處理采用下面的形式︰

SEND BusCmd

其中BusCmd是 SEND總線命令表中列出的其中一條總線命令。IEEE 488.1中詳細定義了這些消息。BusCmd僅用于GPIB，VXI沒有相對應的部分。

SEND總線命令︰

命令 | 說明
COMMAND | 把ATN設為真，發送指定的數据字節。ATN為真表明數据代表總線命令。
DATA | 把ATN設為假，發送指定的數据字節。ATN為假表明數据代表設備相關信息。
TALK | 在指定一級總線地址(0-30)上尋址發話的設備。
LISTEN | 在指定一級總線地址(0-30)上尋址收听的設備。
SECONDARY | 指定一個二級總線地址，后面跟著TALK或LISTEN命令。卡槽類儀器一般使用二級地址，其中卡槽采用一級地址，每個插入模塊采用二級地址。
UNLISTEN | 強制所有設備停止接听；發送UNL。
UNTALK | 強制所有設備停止發話；發送UNT。
MY LISTEN ADDR | 尋址接听的運行VEE的計算机；發送MLA。
MY TALK ADDR | 尋址發話的運行VEE的計算机；發送MTA。
MESSAGE | 發送多行總線信息。詳情請查詢IEEE 488.1。VEE支持的多行信息是︰ DCL Device Clear SDC Selected Device Clear GET Group Execute Trigger GTL Go To Local LLO Local Lockout SPE Serial Poll Enable SPD Serial Poll Disable TCT Take Control


I/O配置技朮

這節提供了使用VEE配置儀器的信息。

I/O配置文件

每個程序的I/O配置可以嵌入程序文件中(建議)，也可以存儲為單獨的文件。如果存儲為單獨的文件，那么它是VEE.IO文件，這個文件存儲在下面的路徑中︰

%userprofile%\Local Settings\Application Data\Agilent\VEE Pro 8.0

在不包含嵌入式配置的新程序中配置儀器時，新設置將保存在存儲器中，用于其余工作會話和VEE.IO或.veeio文件。

在与程序一起保存I/O配置時，會禁用Instrument Manager中的Save按鈕。為保存配置，可以點擊OK，保存程序。這會与程序一起保存更新后的配置。

不能打開包含儀器控制對象的任何程序，除非I/O配置中包含一台帶有匹配Name的設備。在本討論中，Name是指Instrument Properties對話框Name字段中輸入的內容，而不是對象標題欄中的文本。

如果對象是Panel Driver或Component Driver，那么ID Filename必須与配置相匹配。Name和ID Filename以外的設置不影響打開這些程序的能力，但其它設備可能會影響程序的運行方式。

改變配置文件

一般來說，VEE負責處理VEE.IO文件。但是，有時您可能想在VEE環境外擦除、更新或复制這個文件。

如果想運行別人開發的儀器控制程序，但程序中沒有嵌入I/O配置，那么您需要該程序使用的I/O配置。有三种方式獲得I/O配置︰

1 可以使用Instrument Manager和配置對話框，把所有儀器手動添加到配置中。

2 可以使用這一段開頭給出的路徑，把該程序的VEE.IO文件复制到Agilent目錄下。

如果使用文件复制方式，那么在以后需要時，把原始VEE.IO文件拷貝复制到另一個名稱(如VEEIO.OLD)。

3 可以使用嵌入式配置保存程序。使用Save As選項，确認复選"Save I/O configuration with program"選項。

備注

范例程序与嵌入式I/O配置一起保存，因此I/O配置是自含式的。它們不依賴外部I/O配置文件。

程序I/O配置

可以以程序化方式修改儀器配置。首選的I/O配置編程方式是使用Function and Object Browser中的程序儀器配置。出現瀏覽器窗口，在Type窗口中選擇Instruments。選擇Instruments會激活窗口底部的Create Set Formula按鈕。

點擊Create Set Formula，出現Formula Object對話框。

以前版本的VEE允許通過控制端進行程序配置。這些端已經被淘汰，但對GPIB和串口的傳統SICL式接口，仍支持這些端。控制端可以用于Panel Driver、Component Driver和Direct I/O儀器控制對象，允許為設備地址和超時輸出其它值。設置超時值的控制端還可以用于Interface Operations、Instrument Event和Interface Event對象。

在把新的超時或地址發送到其中一個控制端時，會在全局范圍內為該設備改變新值。這意味著与特定設備通信的所有儀器控制對象都開始使用新的超時或地址值。新值可以不同于Instrument Properties對話框輸入的、放在VEE配置文件中的值。但是，這個新值永遠不會寫入VEE配置文件。

下面的范例說明了帶有一個Address控制端的Direct I/O對象。HP E1413B在開始時配置給地址16032，如標題欄所示。到控制端的輸入是16040 (新地址)。在把新地址發送到控制端時，与HP E1413B通信的任何其它對象都使用16040。

LAN网關

VEE可以訪問LAN网關，控制儀器。LAN网關是一個控制器，允許從遠程流程上訪問其VXI、GPIB、GPIO和Serial接口及這些接口上的儀器。

客戶端-服務器模式最好地表示了其排列方式。在訪問遠程計算机上的LAN网關(服務器)時，VEE流程作為客戶端使用。服務器有一個約定流程，稱為守護程序，它是服務器上運行的SICL流程的一部分。守護程序与VEE客戶端通信，允許訪問其接口及其設備。

客戶端流程調用SICL，以控制SICL支持的接口上的設備。這些接口通過在運行SICL流程的LAN网關上配置。通過使用LAN网關，這些接口可以位于遠程計算机上。

對客戶端來說，接口及其設備以物理方式連接到遠程計算机這一事實是透明的。

配置

為使用LAN网關，必須配置VEE和LAN硬件。

VEE配置︰在設備配置期間為网關訪問配置VEE，如Properties對話框細節所述。下面顯示了Instrument Properties對話框。Gateway字段顯示了默認設置This host︰

通過點擊Gateway字段，可以選擇网關名稱。出現一個列表框，顯示以前配置的所有网關。這個主机一直指向運行VEE的計算机。

如果网關沒有其它選項，那么可以輸入一個网關名稱。名稱必須能夠使用符號主机表或名稱服務器解析成一個IP地址。也可以輸入句點格式的IP地址，如55.55.55.555。

除選擇网關外，其它配置流程相同。Panel Driver和Direct I/O對象配置如下。下面顯示了為遠程計算机上的接口和設備配置的各种I/O設備。

LAN硬件配置︰SICL LAN网關支持要視運行VEE的机器配置、運行网關守護程序的机器及LAN的整体配置而定。在配置LAN時請咨詢系統管理員，确保可以解析名稱和IP地址。

對運行网關守護程序的机器，假設守護程序安裝流程將正确配置本地聯网文件。如果您正在使用E5810A LAN/GPIB Gateway，那么它是自含式文件，已經完成了所有內部配置。

執行行為

在理想情況下，通過网關的I/O操作就象接口和設備直接連接到客戶端計算机上一樣工作。但是，響應時間可能會變化，具体視LAN配置而定，包括連接的主机數量、LAN到LAN网關及當前負荷。有時，電纜斷開或LAN上的計算机故障會終止連接。在配置超時周期時，必須要适應這些事件。

在服務器收到客戶端應用發來的I/O請求時，VEE、也就是服務器會使用在Instrument Properties對話框中輸入的超時值。這稱為SICL超時。如果服務器操作在指定時間內沒有完成，服務器會向客戶端發送一個回复，表明發生超時，然后會發生普通VEE超時錯誤。

在客戶端向服務器發送一個I/O請求時，客戶端啟動一個定時器，等待服務器應答。如果服務器沒有及時應答，那么會發生超時，產生VEE超時錯誤。這稱為LAN超時。

客戶端超時与服務器超時不同，因為服務器的I/O事務時間通常不同于LAN上的傳輸時間。服務器可能會在五秒內(VEE默認超時周期)完成I/O事務，但通過LAN傳回客戶端的實際時間可能要比五秒鐘長。

這兩個超時采用不同的值，可以使用SICL配置文件中的兩個項目調節這兩個值︰

sicl_infinity | 如果Advanced Instrument Properties對話框中輸入的用戶自定義超時(SICL超時)是無窮大(0)，那么服務器使用這個項目。服務器不允許使用無窮大的超時周期。這個值指定事務在服務器內部等待結束的秒數。
lan_timeout_delta | 這個值加上服務器的超時值，确定客戶端的超時周期(LAN超時)。計算得出的LAN超時只會提高必要的程度，以滿足I/O設備需求，而永遠不會下降。這可以避免每次在SICL超時變化時重新調節LAN超時的開銷。

保護關鍵段

在多流程測試系統中，在流程之間共享資源要求一种鎖定机制，保護關鍵段。在其中一個流程需要獨有地訪問共享儀器資源時，需要一個關鍵段。

為防止另一個流程在關鍵段期間訪問儀器，第一個流程會鎖定儀器。在完成任務所需的時間內，鎖定會一直有效。在此期間，第二個流程不能与儀器執行任何交互，包括試圖鎖定儀器供自己使用。

下面的EXECUTE 事務允許保護關鍵段，可以用于Direct I/O, MultiInstrument Direct I/O和Interface Operations事務對象中。事務語法視使用的接口和事務對象變化。對GPIB、Serial和GPIO，將鎖定整個接口。對VXI，鎖定各台設備。

為通過在Direct I/O對象中直接訪問背板來鎖定VXI，使用事務︰

EXECUTE LOCK DEVICE

EXECUTE UNLOCK DEVICE

在MultiInstrument Direct I/O對象中，使用事務︰

EXECUTE vxiScope LOCK DEVICE

EXECUTE vxiScope UNLOCK DEVICE

其中vxiScope是VXI示波器的配置名稱，如HP E1428B。

為在Interface Operations對象中鎖定GPIB, Serial和GPIO接口，使用事務︰

EXECUTE LOCK INTERFACE

EXECUTE UNLOCK INTERFACE

支持的平台(EXECUTE LOCK/UNLOCK)

平台 | 執行的I/O接口
Windows 2000, Windows XP | USB, TCP/IP, VXI (帶有或嵌入VXLink的PC)a

a 不能鎖定VXI設備的寄存器和存儲器訪問(READ/WRITE REGISTER/MEMORY 事務)。如果存儲器使用另一個流程中的前一個鎖定映射到VEE流程空間中，那么只能鎖定試圖直接訪問存儲器的第一個事務執行。之后，沒有任何方式防止多個流程同時訪問一個存儲位置，因為這是共享存儲器。

執行行為

在執行某個版本的EXECUTE LOCK事務時，它試圖獲得設備或接口鎖定。如果預先不存在屬于另一個流程的鎖定，那么事務會全面執行，成功獲得鎖定。如果存在以前的鎖定，那么事務會堵塞，堵塞時間是為設備或接口配置的當前超時周期。

如果另一個流程在超時周期內放棄鎖定，那么事務結束，獲得鎖定。如果過了超時周期，那么會發生錯誤，出現一個錯誤消息框。事務對象上的錯誤端可以捕獲這個錯誤。

在獲得鎖定后，來自Direct I/O、MultiInstrument Direct I/O、Panel Driver、Component Driver和Interface Operations對象的所有后續 I/O都會防止任何其它流程試圖与該設備或接口通信。

在經過關鍵段后，可以執行相應版本的EXECUTE UNLOCK事務。

鎖定只保護越過流程邊界的關鍵段。通過順序執行兩個EXECUTE LOCK事務，一個流程可以創建嵌套鎖定。只要另一個流程以前沒有鎖定，那么兩個事務都將成功。

然后，流程必須執行兩個EXECUTE UNLOCK事務。如果只執行一個EXECUTE UNLOCK事務，那么設備或接口會保持鎖定。如果事務在以前沒有鎖定時試圖解鎖，那么會發生運行時錯誤。

只有在執行VEE程序時才存在鎖定。在VEE程序執行完畢時，將從設備和接口中刪除所有鎖定。這可以防止在程序由于正常結束、運行時錯誤或按Stop按鈕而停止執行，其不執行任何EXECUTE UNLOCK事務時仍鎖定設備或接口。

范例: EXECUTE LOCK/UNLOCK事務 - VXI

下面的范例程序顯示了MultiInstrument Direct I/O對象中的EXECUTE LOCK/UNLOCK DEVICE事務。可以使用Direct I/O對象，而不是MultiInstrument Direct I/O，但這會對每個設備使用一個對象，而不是對每組設備使用一個對象。For Count對象驅動一個線程，其試圖在三台不同設備上獲得鎖定。在用戶對象中完成I/O活動后，會執行一系列解鎖。

每個事務會試圖針對每個設備配置的超時周期分別獲得鎖定。如果三個事務中任何一個事務超時，那么會發生錯誤，錯誤端會捕獲錯誤。如果在成功鎖定后進行的操作產生超時錯誤，那么錯誤端會捕獲錯誤。

在程序能夠重新執行鎖定事務前，必須解鎖所有獲得的鎖定。正因如此，MultiInstrument Direct I/O對象連接到錯誤端。非常重要的一點是，這個對象試圖以与第一個對象獲得鎖定相同的順序解鎖每台設備。

由于在鎖定事務前執行解鎖事務會產生錯誤，因此在解鎖事務的對象中還添加了一個錯誤端。如果事務未能在第一個對象中獲得鎖定，那么后面對象的同一解鎖事務會失敗。


I/O 控制技朮

本節介紹了部分其它儀器I/O控制技朮。

輪詢

VEE支持IEEE 488.1定義的所有串行輪詢操作。所有GPIB儀器和所有VXI 基于消息的儀器都支持串行輪詢操作。根据定義，VXI 基于消息的設備滿足IEEE 488.2規范。如果提供I-SCPI驅程，VXI基于寄存器的設備滿足IEEE 488.2規范。VEE不支持并行輪詢操作。

可以通過兩种方式獲得儀器的串行輪詢響應︰

對象 | 串行輪詢行為
Instrument Event | Instrument Event對象可以輪詢指定儀器一次，輸出一個標量整數，這是使用 NO WAIT選項的串行輪詢響應。Instrument Event對象還使用用戶提供的位掩碼及ALL CLEAR和ANY SET選項，在串行輪詢響應字節內部等待指定的碼型。
Direct I/O | GPIB儀器的Direct I/O對象支持WAIT SPOLL處理。這個處理使用用戶提供的位掩碼和ALL CLEAR或ANY SET選項重复輪詢儀器，直到串行輪詢響應与某個碼型相符。如需与Direct I/O有關的其它信息，請參閱 I/O處理。

在配置成Spoll時，Instrument Event對象具有專用執行屬性，下一節" 服務請求 "中討論了這一點。這一行為允許使用掩碼值和ALL CLEAR或ANY SET選項，在等待某個碼型時繼續執行其它并發線程。

NO WAIT將立即執行，返回GPIB儀器或基于消息的VXI儀器的狀態字節。這兩個對象都從對象菜洙(Add Terminal)中提供了一個Timeout控制輸入，因此可以以程序化方式設置超時周期。下圖顯示了一個范例。

服務請求

為檢測VXI儀器的服務請求(SRQ消息)，使用Instrument Event對象 (I/O [image] Advanced I/O [image] Instrument Event)。為檢測GPIB儀器或RS-232的服務請求，使用Interface Event對象 (I/O [image] Advanced I/O [image] Interface Event)。

Instrument Event和Interface Event對象為中斷類執行提供了專門行為。為查看這一行為，您可能希望在啟用Debug [image] Show Execution Flow的情況下運行程序。

例如，Interface Event在程序中的行為如下︰

1 在Interface Event對象 (為GPIB配置，并指定WAIT選項)運行前，執行會正常繼續，每個線程以同等優先權共享執行。

2 在Interface Event對象運行時，附在Interface Event數据輸出上的線程在Interface Event對象上會暫停執行。沒有附在Interface Event上的其它線程會繼續執行。

3 在指定接口上刪除SRQ時，Interface Event的數据輸出被激活。這時，將閉鎖所有其它線程的執行，直到附在Interface Event數据輸出上的線程執行完畢。

范例: 服務請求。下面的程序顯示了處理服務請求的一种方式。在本例中，dvm 或 scope 可能會負責服務請求。這個程序保存在范例目錄下的 manual16.vee 文件中。

備注

只有在指定儀器連接、配置并通電時，這個程序才會運行。但是，可以使用這個程序作為自己的程序中使用的編程技朮范例，也可以修改程序，与自己的儀器通信。

這個程序使用Instrument Event獲得每個儀器的狀態字節，确定服務請求的發起人。每個狀態字節使用If/Then/Else和bit(x,n)函數測試，确定第6位是否為真。如果設置了第6位，那么相應的儀器負責服務請求。

Until Break對象自動再次啟用整個線程，以處理任何后續的服務請求。Instrument Event對象配置成NO WAIT，表示在不使用掩碼值的情況下返回狀態字節。如果使用的掩碼值是64，Instrument Event對象配置成ANY SET，那么不需要使用If/Then/Else和bit(x,n)函數。

不同的儀器對清除和重新啟用服務請求有不同的要求。在上面的程序中，dvm只要求一個串行輪詢，就可以清除和再次啟用其SRQ功能。但是，scope要求另外一步清除發起的事件寄存器。

可以使用Instrument Event對象，檢測來自基于消息的VXI儀器的服務請求。把請求真事件(RT)寫入VXI控制器的信號寄存器中的儀器收到一條Read STB字串行協議命令，這一請求求解為服務請求。

基于消息的儀器把其狀態字節發回控制器，把請求假事件(RF)寫入VXI控制器的信號寄存器。狀態字節与提供的掩碼值及ANY SET或ALL CLEAR選項一起使用，确定設置哪個位(除了第6位外)。因此，可以使用一個對象Instrument Event檢測來自基于消息的VXI設備的服務請求，确定為什么會發生請求。

這兩個對象都從對象菜單(Add Terminal)中提供了一個Timeout控制輸入，因此可以以程序化方式設置一個超時周期。如需進一步信息，請參閱儀器事件和接口事件。

監測總線活動

可以使用Bus I/O Monitor對象 (I/O [image] Bus I/O Monitor)，記錄在VEE与任何發話方和接听方之間傳送的所有總線消息。Bus I/O Monitor只記錄VEE入局或出局的總線消息。

可以使用Bus I/O Monitor監測支持的任何接口(GPIB, VXI, 串行或GPIO)。每個Bus I/O Monitor對象實例只監測一個硬件接口。

下面的程序顯示了發送的在GPIB地址717上的儀器中寫入*RST的總線消息。

Bus I/O Monitor的顯示區域包含五列︰

• 第1列 – 行號

• 第2列 – 總線命令 (*), 或出局數据 (>), 或入局數据 (<)

• 第3列 – 發送的字節的十六進制值

• 第4列 – 与發送的字節對應的7位ASCII字符

• 第5列 – 總線命令助記符(僅總線命令, 對數据為空白)

在作為圖標執行時，Bus I/O Monitor的速度要遠遠快于作為打開的視圖對象執行的速度。

低級總線控制

可以以下面兩种方式發送低級消息。

如需与Interface Operations和Direct I/O有關的進一步信息，請參閱 在Direct I/O和Interface Operations中使用處理。

儀器下載

某些儀器允許下載宏命令、測量例程或整個測量程序。例如，某些HP儀器支持HP Instrument BASIC，可以編寫在儀器內部執行的完整的HP Instrument BASIC 程序。使用VEE把測量例程下載到儀器中的其中一种方法如下︰

1 使用文本編輯器，如Note Pad，創建和維護測量例程。在普通文本文件中保存測量例程。

2 使用From File讀取文件。

3 使用Direct I/O把文件內容寫入儀器中。

本節介紹了使用這种方法下載的整個范例。如需与Direct I/O有關的進一步信息，請參閱使用Direct I/O對象。

下面的范例程序把一個測量子程序下載到HP 3852A中。這個范例下載子程序 BEEP2，該子程序發出蜂鳴聲兩次，顯示一條消息。這個程序保存在范例目錄下的 manual17.vee 文件中。

備注

只有在指定儀器連接、配置并通電時，這個程序才會運行。但是，可以使用這個程序作為自己的程序中使用的編程技朮范例，也可以修改程序，与自己的儀器通信。這個程序manual17.vee擁有嵌入配置。

下面是下載的文件manual17.dat的內容。manual17.dat文件在范例目錄下提供。

DISP MSG "LOADING BEEP2"

WAIT 1

SUB BEEP2

DISP "BEEP2 CALLED"

BEEP

WAIT .5

BEEP

SUBEND

DISP MSG "BEEP2 LOADED"


邏輯單元和I/O尋址

為存取I/O設備，您需要确定正确的地址，使用Instrument Manager在Instrument Properties對話框的Address字段中輸入地址，如Instrument Manager所述。

本節介紹了VEE I/O尋址方式，包括接口邏輯單元和儀器地址，其支持Direct I/O、Panel Driver和Component Driver I/O操作。這种尋址方案不用于VXIplug&play I/O操作。如需与VEE中VXIplug&play尋址有關的信息，請參閱“配置VXIplug&play驅程”。

備注

VEE支持GPIB接口、RS-232串行接口和GPIO接口。此外，通過使用連接到支持的其中一個GPIB接口上的HP E1406命令模塊，可以存取VXI設備。

VEE還支持使用VXI背板直接存取嵌入式VXI控制器及存取PC中的E1383A和E1483A VXLink接口。

VEE尋址方案采用邏輯單元，可以使用I/O Config實用程序設置邏輯單元，作為安裝和配置VEE包括的I/O庫的一部分。如需了解安裝和配置安捷倫I/O庫及使用I/O Config設置邏輯單元的相關信息，請參閱“安裝安捷倫I/O庫”。建議根据下面的推荐I/O邏輯單元表為接口設置邏輯單元。

推荐I/O邏輯單元表

邏輯單元 | PC (Windows 98, NT)
1 | GPIB (82340或82341)
2 | GPIB (82340或82341)
3 | GPIB (82340或82341)
4 | GPIB (82340或82341)
5 | GPIB (82340或82341)
6 | GPIB (82340或82341)
7 | GPIB (82340或82341)
8 | GPIB (82340或82341)
9 | COM1串行端口
10 | COM2串行端口
11 | COM3串行端口
12 | COM4串行端口
13 | GPIO (HP E2075)
14 | GPIB0 (National GPIB卡)
15 | GPIB1 (National GPIB卡)
16 | VXI (嵌入式,或使用VXLink 的PC)
17 | GPIB2 (National GPIB卡)
18 | GPIB3 (National GPIB卡)

VEE推荐的I/O邏輯單元

推荐在VE中使用下述接口邏輯單元。如需了解安裝和配置I/O庫及使用I/O Config實用程序為接口設置邏輯單元的相關信息，請參閱“安裝安捷倫I/O庫。”

備注

邏輯單元 7是第一張GPIB卡推荐的默認值。每張卡必須有一個唯一的邏輯單元。

PC上的National GPIB卡只支持邏輯單元14, 15, 17和18。

I/O尋址

下面几節介紹了各類設備的尋址方案。

尋址串行端口

通過使用I/O Config為串行端口指配的邏輯單元，支持串行端口。通常情況下，COM1串行端口指配邏輯單元 9。在本例中，使用9作為連接到COM1的設備地址。

尋址GPIO設備

通過使用I/O Config為GPIO接口指配的邏輯單元，支持GPIO設備。通常情況下，GPIO使用邏輯單元13。在本例中，使用13作為GPIO設備的地址。

尋址GPIB接口和設備

GPIB設備使用下述方案尋址︰

SPA[SA]

其中︰

S -- 是GPIB接口的邏輯單元。

PA -- 是GPIB設備的一級地址 (有效范圍是00 - 30)。

SA -- 是可選的二級地址(有效范圍是00 - 31)。

兩個范例如下︰

• 對邏輯單元 7、一級地址01上的GPIB設備，在Instrument Properties對話框的Address字段中輸入701。

• 對邏輯單元 14、一級地址09、二級地址02的GPIB設備，在Instrument Properties對話框的Address字段中輸入140902。

GPIB邏輯單元 通過使用I/O Config為GPIB接口指配的邏輯單元，支持GPIB接口。上面的推荐 I/O邏輯單元表列出了GPIB接口推荐的邏輯單元。如果I/O庫為GPIB接口配置了推荐的邏輯單元(1 - 8)，那么在理論上VEE可以存取最多8張GPIB卡，且可以組合采用支持的卡。

• 對82340或82341，由軟件指配邏輯單元。邏輯單元的指配順序如下︰7, 8, 1, 2, 3, 4, 5,和6。但是，每張卡必須設置唯一的基本地址。(如需了解設置基本地址的相關信息，請參閱用戶手冊。)

National Instruments GPIB驅程配有最多四張GPIB卡，分別標為GPIB0, GPIB1, GPIB2和GPIB3。為存取這些GPIB卡，必須使用I/O Config把邏輯單元14, 15, 17和18指配給GPIB卡。VEE對GPIB卡不支持任何其它邏輯單元。否則，地址与任何其它GPIB卡相同。

尋址GPIB上的VXI設備

為使用HP-IB命令模塊通過GPIB存取VXI設備，可以使用二級地址。如果在VXI卡槽中使用HP E1406命令模塊，那么一級地址由命令模塊上的開關設置(默認值= 09)，二級地址是各個VXI設備的邏輯地址除以8。

例如，假設在C型主机中有一個HP E1406A命令模塊 (地址= 09)，其中HP E1406A連接到邏輯單元 7的GPIB接口上。對邏輯地址設為24的VXI插槽中的HP E1326B万用表，万用表地址是70903。

提供了兩個儀器驅程，幫助您為通過GPIB命令模塊連接的VXI設備提供正确的地址︰

• 使用hpe140x.cid驅程定位C型VXI主机中通過HP E1405或HP E1406 GPIB命令模塊連接的VXI設備。

• 使用hpe1300a.cid驅程定位B型VXI主机中通過HP E1306 GPIB命令模塊連接的VXI設備。(這個驅程學支持HP E1300和HP E1301 B型VXI主机，其中包括內置命令模塊。)

為使用任何一個驅程，使用Instrument Manager為驅程添加一個儀器面板，如聯机幫助︰Help [image] Content和Index [image] Tell me about... Instrument Control Fundamentals中所述。

備注

除VXI開關設備中的模塊外，不要為VXI輸入子地址值。詳情請參閱下一節。

設置地址值/子地址值

大多數GPIB和VXI儀器不使用子地址。不要輸入子地址值，除非存取VXI開關設備或使用子地址的其中一個主机儀器，如HP 3235A開關/測試單元或HP 3488A開關/控制單元。

備注

只有在對支持子地址的設備使用HP Instrument Driver時才使用子地址。如果使用Direct I/O，不要使用子地址︰

兩個范例如下︰

• 為存取HP 3235A開關/測試單元中的模塊，使用Instrument Manager，在Instrument Properties對話框的Address字段中輸入HP 3235A本身的GPIB 地址(如701)，如 Instrument Manager中所述。

在Advanced Instrument Properties對話框 (在Panel Driver一欄中)的Sub Address字段中輸入各個模塊的子地址。如需与Sub Address字段各個項目有關的信息，請參閱HP 3235A儀器驅程的聯机幫助 (Help [image] Instruments)。

• 為存取VXI開關設備中的模塊，在Address字段中輸入開關設備的GPIB地址(如70902)，在Sub Address字段中輸入各個模塊的子地址。如需与Sub Address字段各個項目有關的信息，請參閱VXI開關設備儀器驅程的聯机幫助。

直接尋址VXI背板

VEE可以直接尋址下述系統的VXI背板︰

• HP 623x VXI Pentium控制器

• EPC-7或EPC-8 VXI控制器，但需要安裝EPConnect軟件

• 使用HP E1383A或HP E1483A VXLink (ISA到VXI)接口連接到VXI卡槽上的PC，但需要安裝EPConnect軟件

• HP V743 VXI嵌入式控制器

假設已經使用I/O Config設置了推荐的邏輯單元，VEE通過邏輯單元 16存取VXI背板。VXI設備的地址是邏輯單元 (16)，后面追加上VXI設備的邏輯地址。

例如，假設在VXI主机中安裝了一部HP EPC-7 VXI控制器和一部HP 1411B數字万用表。如果HP 1411B的邏輯地址設為24，那么VXI地址是16024。不用象通過GPIB存取VXI設備那樣把邏輯地址除以8。


儀器I/O數据類型轉換

在儀器I/O事務上，VEE根据下面的規則執行自動數据類型轉換。在VEE 6執行模式中，使用新的數据類型，不進行轉換。但是，在VEE 5及以前的模式中，仍象VEE 5.0版一樣執行下面的轉換，以實現向下兼容能力。例如，READ BINARY Int16在VEE 6模式下將返回Int16，但在VEE 5及以前的執行模式下將返回Int32。

備注

這些數据類型轉換完全是自動的，因此通常不需要關注這些轉換。但是，下面列出了在VEE 5及以前執行模式下發生的情況。

在READ事務上，儀器中的Int16或Byte (UInt8)值轉換成Int32值，保留標記的擴展名。此外，儀器中的Real32值轉換成64位Real數字。

在WRITE事務上，整數或實數值轉換成相應的儀器輸出格式。

如果儀器支持Real32格式，VEE會把64位Real值轉換成Real32值，然后輸出到儀器中。如果Real64值超出Real32值的范圍，那么會發生錯誤。

如果儀器支持Int16格式，那么VEE會把Int32值截短到Int16值，然后輸出到儀器中。實數值先轉換成Int32值，然后再截短和輸出。但是，如果實數值超出Int32的范圍，那么將發生錯誤。

如果儀器支持Byte格式，VEE把Int32值截短到Byte (UInt8)值，然后輸出到儀器中。實數值先轉換成Int32值，然后再截短和輸出。但是，如果實數值超出Int32的范圍，那么將發生錯誤。


了解傳播

傳播是通過VEE程序的通用執行流程。傳播準則定義了VEE對象運行的順序。一般來說，傳播由數据流程确定，即VEE程序內部對象之間的數据流程。

傳播摘要

下面概括介紹了在VEE4或更高的模式中運行程序時VEE遵守的傳播規則︰

數据流程從左到右經過各個對象?/span>序列對象從上到下經過各個對象。

必須連接所有數据和XEQ 輸入端。

沒有數据輸入端或序列輸入端連接的對象先運行。

所有數据輸入端在對象運行之前必須激活（JCT對象除外）。

如果連接了序列輸入端，在對象運行之前必須激活它。

對象只運行一次，除非連接到重复對象（例如，For Count）上，或由XEQ 端強制運行。

控制端立即執行，不會導致對象運行或傳播。

在有Error端的對象生成錯誤時，Error端傳播，而不是數据輸出端。但是，序列輸出端會被激活。（如果沒有Error端，會顯示一條錯誤信息。）

并行子線程可以以任何順序運行。

多個線程可以以任何順序運行。

基本傳播順序

基于傳播規則，在按Run時，VEE程序中在VEE4或更高模式執行的對象按下述基本順序運行︰

1. 沒有數据輸入端的對象及沒有連接序列輸入端的對象先運行。

2. 其它對象按數据流程确定的順序運行。換句話說，只有在所有數据輸入上存在數据時，有數据輸入端的對象才運行，對象怎樣運行中介紹了例外情況。

3. 通過連接序列端，可以改變傳播順，端和傳播中介紹了修改方式。


端和傳播

本節匯總了所有類型的端及其對傳播的影響。

數据端輸入或輸出一個數据容器。

只有在其所有數据輸入端都激活時，一個對象才會運行。(JCT對象除外，這個對象在任何數据輸入端激活時運行。)

在對象運行后，其數据輸入端傳播(如果沒有發生錯誤條件)。

控制端(可選)是影響對象狀態、但對傳播沒有影響的輸入。

常用控制端包括Clear, Reset和Default Value。控制端使用虛線連接，表明對傳播沒有影響。

序列端只用來指明執行順序。

只有在其所有數据輸入端和序列輸入端(如果連接)激活后，一個對象才會運行。

在其所有數据輸入端激活、且數据流量傳播得盡可能遠之后，序列輸出端才會傳播。

最好不使用序列端來實現正确傳播 -- 而是讓數据流量确定執行順序。

存在數据容器時會激活序列輸入端，但會忽略容器中的數据。在激活時，序列輸出端會傳播一個空(零)容器。

錯誤端 (可選)。可以添加一個Error端，捕獲對象生成的錯誤條件。如果發生錯誤條件，Error端會傳播相應的錯誤編號。

如果發生錯誤，Error端會傳播，而不是任何數据輸入端。只有錯誤端和序列輸出端 (如果連接)會傳播。

XEQ端是強迫對象立即運行的端(即使數据輸入端還沒有激活)。只有Collector和Sample & Hold對象使用XEQ端強迫對象立即執行，并傳播其數据。

存在數据容器時會激活XEQ端，但會忽略容器中的數据。

備注

不要使任何數据輸入端或XEQ端未連接，否則在運行程序時會發生錯誤。

可以使數据輸出端、控制端和Error端未連接。更經常的情況是序列端應該保持未連接。


了解序列端

本文概括了序列端在傳播中的作用，重點介紹了其建議用途。

序列端是VEE對象的頂部端和底部端。如果已經連接，那么必須在對象執行前先ping頂部的輸入端。可以簡便地把這個端視為觸發端或觸發抑制端。

底部的輸出端將在對象的數据(或Error)輸出傳播后傳播，傳播會持續到盡可能遠的下游對象。

在大多數程序中， 一般不需要連接這些序列端，某些用戶程序經常會過度使用序列端。過度使用序列端會使匯編人員引起混淆，更重要的是，可能會使試圖了解、修改和維護程序的其它編程人員(或您在不使用程序一年以后)引起混淆。但是，有些情況要求這些連接。

循環

通常連接Loop的頂部序列輸入 (For Count, For Range, 等等)，以保証只在其它事項完成后才開始循環。類似的，Loop的底部序列輸出通常連接到程序中應在循環完成之后才執行的對象上。從下圖中可以簡便地看到這种一般流程︰

到/自文件或DataSet

如果VEE程序寫入一個文件，以后再從該文件中讀取程序，您可能需要序列端，保証只有程序完成寫入后，程序才能從文件中讀取。下面是兩個范例︰

設置和獲得變量

一般需要連接Get Variable (或使用變量的Formula)的序列輸入，以保証Set發生在Get之前。例如︰

傳送數据的控制輸入端

遺憾的是，到VEE對象的許多控制輸入端實際上傳送數据，如ToFile上的"FileName" 輸入或Formula上的"Formula"表達式輸入。在這些情況下，要求一條序列線，保証只有在已經收到進入控制輸入的數据時，才會執行帶有控制輸入的VEE對象。

在彈出面板上使用Confirm/OK按鈕

Confirm按鈕通常作為彈出面板上的"Ok"和"Cancel"按鈕使用，防止執行對象，直到操作人員完成數据輸入。序列排序有時會給新用戶帶來混淆，因為用戶的本能反應是把Ok放在Knob后面(因為操作人員以該順序交互)。有VEE經驗的人員更容易會把Ok按鈕看作"觸發抑制"，可以用來釋放其下面的數据。下面的范例顯示了VEE Confirm按鈕的正常配置。

在Knob之后連接Ok，嘗試這個程序 (打開Show Data Flow和Show Execution Flow)，了解為什么必須先執行Ok。把顯示畫面連接到UserObject的輸出上，查看在每個配置中是否傳播新值或舊值。

多條數据輸出線与控制流程混合

在有些情況下，程序在同一端使用多條線輸出，把數据流程与控制流程混合。這可能會導致很難發現的編程錯誤。在下面的范例中，假設操作人員在Knob上選擇一個值，按Ok。

是Formula和UserObject傳播先發生呢？還是Exit UserObject在Formula前發生呢？還是UserObject 輸出端在Exit UserObject執行前獲得一個值呢? 這是不确定的，是隨机的。這時需要使用序列端。

上一個范例說明了最好連接Exit UserObject 序列端。

過度使用序列端的常見情況

擁有過程語言背景的編程人員有時希望在不需要時連接序列端。下面是部分常見范例，其中VEE編程人員新手連接序列端，但數据流程已經确定程序流程。

在這些簡化圖中，可以簡便地看到不必要的序列連接。但是，某些編程人員一般會在大型程序中增加序列連接，即使流程模式与這些圖基本相同。

上一個控制端范例可能會給某些人帶來混淆。在數据端要求可以接受的程序流程時，其不需要序列線。但是，控制端不象數据端那樣要求程序流程。下面兩個圖類似，但并不一樣。

控制流程模型(藍色虛線)需要序列端的幫助，數据流程模型(藍色實線)則不需要。


線程和子線程的傳播

非常簡單的VEE程序通常只包含一個線程。比較复雜的程序通常會包括影響程序傳播的更多的線程和子線程。

線程 ?通過數据線和序列線(實線)連接的對象構成一個線程。只通常控制線(虛線)連接的對象不視為線程。一個程序可以包含多個線程。例如，下面的程序包含兩個并行線程。這兩個線程相互獨立，因為它們沒有使用數据線或序列線連接。

子線程-- 線程的一個分支稱為子線程。在兩個線程從同一個對象的同一個數据輸出端開始，且它們之間沒有序列線或數据線時，它們是并行子線程。下面的程序顯示了從Real64常數對象的數据輸出端分出的兩個并行子線程︰

并行線程和子線程以相互隨机的順序運行。將運行線程中的一個或多個對象(或所有對象)，然后運行另一個線程中的一個或多個對象。但是，這一規則有兩种例外情況︰

如果一個線程中包含一個Interface Event or Device Event對象，那么在捕獲一個事件時它會接管執行。例如，如果Interface Event檢測到GPIB SRQ消息，那么線程將繼續操作，直到完成，然后才能繼續任何其它線程。其它線程會被保持，允許服務該事件。如需進一步信息，請參閱接口事件和設備事件。

如果一個線程中有一個Start對象，且通過按Start按鈕啟動線程，那么線程會運行，直到完成，然后才能啟動任何其它線程。


對象怎樣運行

VEE對象的運行方式如下︰它在輸入端上接受數据，處理這些數据，然后在輸出端上返回得到的數据。只有在使用上面的數据激活所有數据輸入端時，VEE對象才會運行。(有一個例外︰只要使用數据激活其中一個數据輸入端，JCT對象就會運行。)

讓我們看一下簡單的范例。在下面的程序中，只有在兩個數据輸入端上都有數据時，a+b對象才會運行。因此，兩個Real64常數對象必須先運行(不使用特定順序)。

在a+b對象運行時，它添加數据，使用得到的數据激活其輸出端。只有在其數据輸入端有數据時，AlphaNumeric對象才會運行，因此它最后運行，顯示結果。

可以看到，數据流程決定著上面的程序中對象的運行順序。也就是說，數据流程決定著傳播順序。

除數据端外，序列端可以作為觸發抑制手段使用，控制什么時候運行對象。在希望防止數据輸入端接受任何數据，直到提供了有效數据時，這一功能非常有用。在下面的程序中，Confirm OK對象被添加到上例中︰

Confirm OK對象的序列輸出端連接到a+b對象的序列輸入端。序列輸入端不需要連接。也就是說，如果沒有連接序列輸入端，對象會忽略這個端。但是，如果連接了序列輸入端，那么只有在其激活時對象才會運行。因此，在上例中，只有在按(點擊)OK按鈕時，a+b對象才會運行，然后數据輸入端接收數据。

XEQ端對對象運算的影響相反。在使用數据輸入端上存在的任何數据激活XEQ端時，對象會立即傳播。在一個對象上同時使用XEQ端和序列輸入端時，考慮這一點非常重要。XEQ端必須連接，只有XEQ端激活時對象才會傳播。下面舉出了一個范例︰

For Count對象重复五次，把數据輸出到Collector上的Data輸入端。Collector把五個值采集到一個數組中，在For Count對象的序列輸出端激活時，XEQ端會傳播這個數組。

備注

記住，可以從對象菜單中使用Properties，啟動Show Terminals。在啟動Show Terminals時，數据輸入端和輸出端變成"終端"，顯示其名稱。


部分UserObject概念

UserObject為把執行某個任務的一組對象封裝到一個自定義對象中提供了一种方式，這种封裝允許︰

  • 在構建VEE程序中使用模塊化技朮。您可以通過井井有條的方式解決复雜的問題。UserObjects允許使用從上到下的設計技朮，創建更加靈活、更加可維護的程序。

  • 構建用戶自定義對象，然后可以把這些對象保存在庫中，以備以后重用。

一旦創建和保存了一個 UserObject，那么可以在其他程序中 Merge 它。

UserObject特點

當把UserObject 添加到Main Window中時，它會出現在一個圖標視圖中，并在程序中一直保持這种方式。在雙擊圖標時，UserObject 編輯窗口彈出，顯示工作區，您可以在工作區中添加和連接對象，構建某個程序段。端區域容納數据端和控制端，以便UserObject能夠与程序的其它部分通信。下圖顯示了名為UserObject1 的UserObject的圖標視圖和編輯窗口。

上下文和UserObjects

在VEE程序內部，Main Window和UserObjects代表著不同的上下文 ，就象子程序在C程序或BASIC 程序中代表著不同的上下文一樣。如上圖所示，可以把UserObjects嵌套在VEE程序中，這會導致額外的上下文。在上圖中，有三個上下文。在每個上下文中可以添加更多的對象。

1. Main Window是包含UserObject1 的上下文。

2. UserObject1 是包含UserObject2的上下文。

3. UserObject2是包含其他對象的上下文。

傳播和UserObjects

由于UserObject是一個不同的上下文，這影響著包含多個UserObject的程序的傳播。UserObject傳播規則如下︰

在UserObject 內部的任何對象運行前，UserObject的所有數据輸入端（及連接的序列輸入端）必須激活。

一旦UserObject的數据輸入端被激活，UserObject會運行。UserObject內部的對象根据傳播規則運行。

VEE4.0版本以前編寫的程序可能包含可選的XEQ 端。如果它被激活，那么UserObject會立即開始運行其工作區內部的對象，其中使用UserObject未激活輸入端上可能存在的任何?#26087;?#25968;据。在大多情況下，您不需要對UserObject使用XEQ端。VEE4.0及以后的版本中不能使用XEQ端。如果在VEE4.0或更高執行模式中運行，UserObjects上帶有XEQ端的現有程序將不能匯編。

UserObject數据輸出端只有在UserObject內的所有對象運行完時才會傳播（除非UserObject由于錯誤或由Exit UserObject永久退出）。只有從UserObject內部激活的輸出端才把數据傳送到UserObject外部的對象上。當激活時，每個數据輸出端只傳播一個數据容器。

在VEE4.0版本以前編寫的程序中（在VEE3執行模式下運行），UserObject內部的對象在運行時与不同子線程上的外部對象共享時間，也就是時間分片。UserObject不會阻塞UserObject外部的對象運行 。在VEE4或更高執行模式下運行的程序中，只有在不同線程調用時，UserObject才會進行時間分片。

如需了解与傳播規則有關的更多信息，請參閱了解傳播。

備注

如果在UserObject中有一個Start對象，按Start只運行与Start對象連接到同一線程的對象。將不能從UserObject 輸入端讀取數据，也不會傳播輸出端。因此，在UserObject外部不發生傳播。

UserObject的數据輸出

根据傳播規則，UserObject的每個數据輸出端只在UserObject內部的對象傳播完成時，才把一個數据容器(端收到的最后一個數据容器)傳播到UserObject外部的上下文中。如果忽略這一點，您的程序中可能會發生意想不到的結果。下面的范例說明了這种情況︰

盡管For Count對象把10個數据容器（數字0到9）發送到Count 輸出端，但從UserObject中只傳播一個數据容器（最后一個數字）。但是，可以使用Collector 對象，把For Count對象中的數据采集到一個數組中。Array輸出端也只傳播一個數据容器，但這個容器是由10個值（0到9）組成的一維數組。


控制程序流程

盡管VEE中的傳播規則具有邏輯特點，但程序傳播方式并不是一直非常明顯。VEE編程樣式的部分規則如下︰

• 使用清楚的、以分層方式傳播的程序流程構建程序。如果能夠簡便地可視化流程，那么通常不會有什么問題。

• 如果對象之間的執行順序很重要，但不明确，連接序列輸入端和序列輸出端。盡管應該不必經常使用這些端，但有些情況下必需使用這些端，保証程序要求的執行順序。

• 避免對迭代使用反饋循環。這些構造會導致不可預測的結果。循環旨在把帶數据的容器傳回到線程開頭。如果必須使用反饋，那么在反饋循環中要求JCT (Junction)對象。

• 避免由循環對象輸入并行線程，因為很難區分將執行哪個線程。

• 避免使用Gate對象和Sample & Hold對象。這些對象主要在缺少傳播規則知識時作為補丁程序使用。良好的編程樣式有助于避免對這些對象的需求。

另請參閱

基本程序控制 高級程序控制


基本程序控制

了解基本對象組合怎樣共同控制程序流程非常重要。下面的程序說明了怎樣生成循環使用的簡單計數，這是一种常用的程序控制功能。在程序運行時，For Count對象從0數到9。

可以嵌套For Count對象，創建嵌套循環。在下一個程序中，對外部循環的For Count發送到順序輸入端上的每個計數，內部循環的For Count從0數到9。直到內部For Count完成整個循環時，外部For Count才會發送下一個輸出數量。

在For Count發送最后一個數量時，它從順序輸出端輸出一個脈沖，激活Beep對象。這是此類循環對象的一個重要功能。直到執行了其驅動的線程之后，它們才生成順序輸出脈沖。

連續循環

為生成連續循環，可以使用Until Break對象，如后面的實例所示。Delay對象控制著程序，每秒更新一次。較好的方法是用On Cycle代替Until Break，它可以生成一個容器，支持驅動now()對象的任何延遲設置。可以在Number一欄的Properties對話框中設置AlphaNumeric顯示格式。

連續循環用來重复程序操作，直到滿足某個條件。如果要在任何時候結束循環，那么只要增加OK對象、Break對象和Next對象即可，如下面的程序所示。

這個實例說明了兩個并行線程中控制構造的另一种特性。該程序的目的是連續更新時間，直到用戶按OK強制Break。如果沒有Next對象，Until Break會生成一個容器，然后等到其執行所有下行操作。時間將會更新，程序會一直等待，直到用戶按OK。Next對象強制Until Break連續輸出容器，直到用戶按OK。

在這种情況下，可以使用Stop對象代替Break對象，而不會有任何差异。

為更直接地控制連續循環，可以使用Toggle對象。下面的程序說明了怎樣使用Toggle (采用Button格式)中斷循環。

Toggle輸出連接到Reset控制輸入上。默認初始值是0，在每次循環過程中輸出到If/Then/Else。在Toggle值保持為0的同時，程序流程會一直繼續到Now對象。點擊Toggle的Button，把值撥到1，滿足If/Then/Else中的表達式條件，激活Break對象。

實現程序互動

鑒于以前的循環技朮，下面的程序說明了怎樣為互動程序創建一個通用結構。考慮一個簡單的程序，其中用戶可以選擇兩個操作中的一個操作，或通過點擊相應的Toggle按鈕退出程序︰

其概念是，每個單獨的操作都有自己的并行線程。循環持續檢查If/Then/Else表達式中每個Toggle對象的輸出(初始值為0)。在按一個按鈕時，Toggle的輸出變成1，把相應的Text輸出發送到AlphaNumeric顯示屏上或結束程序。可以根据需要增加多個并行線程，執行I/O和計算。

這种結構的意義在于，必須完成執行線程以后才能執行另一個線程。如果執行線程要用很長的時間才能完成，那么用戶必須等到這個線程完成以后，才能執行另一個線程。


高級程序控制

如果用戶擴展 基本技朮，那么程序可以執行更复雜的控制任務。

實例: 發起程序任務

例如，下面的程序允許用戶選擇多項任務中的一項任務，或允許儀器發出的服務請求(SRQ)發起任務。

在程序運行時，點擊Task 1或Task 2按鈕，獲得相應的顯示輸出。如果在Panel Driver的Status Panel上按Clear Status，那么會得到SRQ!消息輸出，然后返回執行另一項任務。在點擊Quit按鈕時，程序會停止。

Until Break對象驅動著程序內部由三個Toggle按鈕(Task 1, Task 2, Quit) Interface Event對象 (SRQ:GPIB7)控制的四個并行線程。

Task 1和Task 2按鈕定義的兩個線程在Message對話框中顯示文字Doing Task 1和Doing Task 2。Quit按鈕定義的線程會停止程序并清屏。

相關線程涉及SRQ。設置連接到Until Break對象的HP 54501A Panel Driver，其SPoll Enable (在Status Panel上)設為請求服務。在Status Panel上按Clear Status按鈕時，發送服務請求。通過設置模板，處理SRQ的線程使用Interface Event對象等待SRQ，具体設置如下。

在發生SRQ時，Interface Event對象會ping通Instrument Event對象，進行串行輪詢，在示波器上清除SRQ。

由于設置為NO WAIT，這個對象進行串行輪詢，然后ping通Text對象。SRQ!消息發送到Message對話框，聲稱發生了SRQ。Message對話框配置成等待操作人員應答。模板值不相關。

調用功能

下面的程序類似。可以調用用戶定義的三個功能中的一個功能︰A, B或C，發起操作，然后程序繼續執行選擇的功能。

Radio Buttons對象列出了提供的功能。Toggle按鈕允許執行選擇的功能或退出程序。如果選擇執行一個功能，那么功能名稱將輸出為Text Formula對象。AsText是把輸入轉換成Text數据類型的一种內置功能。

文本功能名稱輸出到Call Function對象控制輸入Function Name中，從而調用選擇的功能。在程序運行時，操作人員在Radio Buttons對象中選擇功能名稱，按Execute Function按鈕。

備注

控制輸入對象的傳播沒有影響。asText序列連接到Call Function序列輸入中，抑制Call Function傳播，直到收到Function Name后。

清除條形圖

在相關的程序流程問題中，下述程序生成條形圖，在計算特定數量的點后或在用戶按一個按鈕時，會清除這個條形圖︰

Until Break對象驅動著程序。它通過序列輸入和輸出端控制Quit Toggle, Random Number, Clear Chart Toggle和Counter對象。Random Number (隨机(高, 低)內置功能)對象把值輸送到Strip Chart顯示畫面上。Counter計算每個循環迭代，把數量輸出到If/Then/Else。在用戶按Clear Chart按鈕或Count等于100時，If/Then/Else清除Strip Chart和Counter。

Until Break連續驅動Toggle Control對象，在大多數時間中生成0。點擊Toggle Control，把它撥到1，然后通過反饋連接复位。1是到If/Then/Else的輸入。使用Properties (對象菜單)，隱藏Title Bar，然后增加Reset端，改變Toggle Control對象的外觀。


錯誤處理

錯誤處理是VEE中的一個重要概念。它允許用戶執行一項操作，然后在發生錯誤后重复操作或繼續。下述程序使用對話框表示具有不同結果的操作，演示了這一概念。

這一程序彈出Exclamation Message Box，詢問是Stop、Retry還是Ignore。

• Stop會ping Stop對象，停止程序。

• Retry會ping Next，重复循環，重新顯示同一個Message Box。

• Ignore會ping Break對象，停止Until Break循環。

在Until Break停止時，它會ping Question Message Box，提供更多的程序控制選項。

注意在“I/O”循環后順序執行的N要素被連接到Until Break的序列輸出端；它們沒有連接到任何循環要素上。

要避免作為標準方式使用錯誤處理，特別是在處理中包含复雜數學公式的Transaction對象中。VEE為執行這些公式分配內存，如果在執行過程中發生錯誤，那么不會釋放內存，從而導致內存漏洞加大。


捕獲控制端錯誤

由于控制端立即執行，不會導致對象傳播，因此某些條件可能會導致程序不能正确工作。如果控制端導致錯誤，那么必須使用專門的編程技朮，以程序化方式捕獲錯誤。

在控制端導致對象錯誤的情況下，程序會停止，VEE顯示錯誤對話框。為以程序化方式捕獲和解決錯誤，典型方案是在對象中增加Error輸出。這個解決方案适用于大多數情況，但控制端導致的錯誤除外。由于控制端不影響對象的傳播，因此對象不會傳播錯誤信息。也就是說，由于控制端不會導致對象執行，因此對象不會傳播。不允許傳播任何輸出端，包括Error端，直到其執行。為捕獲控制端導致的錯誤，必須在包含對象的上下文中增加Error輸出。

下面的程序說明了捕獲控制端導致的錯誤的不正确方式。程序在XY Trace畫面中顯示一個波形。XY Trace有一個Scales控制輸入，要求Record數据類型在顯示屏上改變標度。Text和Integer為Scales控制輸入提供Build Record值。XY Trace上的Error輸出預計將捕獲任何錯誤情況，并把它發送到errorInfo() function。

這一程序通過顯示錯誤編號和信息來處理錯誤。它將捕獲XY Trace中生成的任何錯誤，但Scales控制端輸入導致的錯誤除外。

運行程序表明，問題源于其試圖以程序化方式捕獲控制端導致的錯誤。Scales控制端預計Record中至少包含一個值識別改變的標度。允許的值是X, Y, Y1, Y2和Y3。

控制端生成錯誤，因為它從Text中收到錯誤值T。由于這是一個控制端錯誤，因此XY Trace中沒有進一步傳播，Error輸出沒有收到錯誤信息。程序突然停止，VEE顯示下面的錯誤對話框。

如前所述，捕獲控制端錯誤的正确方式是在包含對象的上下文中增加Error輸出。下一個程序顯示了解決方案，其中Build Record和XY Trace被放到UserObject中。注意，它已經刪除了XY Trace畫面的錯誤輸出，在UserObject中增加了Error輸出。此外，UserObject的Error輸出已經連接到errorInfo()。


控制端上的數据傳播

在一個對象的控制端收到數据時，如文件名或默認值，應連接該對象的序列輸入端，否則程序可能會失敗。由于控制端不影響對象的傳播，因此即使在沒有設置控制端值的情況下，在數据輸入收到數据時，對象仍將傳播。

下面的程序顯示了這個排序問題。在dataFile2文件名被發送到File Name控制端前，Alloc Array把數据發送到To File。在To File收到數据時，它立即改變dataFile1中的內容，而不是預計的dataFile2。To File确實在控制端上收到新的文件名，但是太遲了。

為解決這個問題，使用To File的序列輸入抑制對象操作，直到控制端收到數据。下面的程序說明了把File Name的序列輸出連接到To File的序列輸入上可以保証把數据寫入正确的文件中。


構建記錄

在試圖構建由下面三個波形組成的記錄時，Build Record對象從來不會傳播。在Function Generator把輸出發送到DeMultiplexer之后，For Range對象會開始循環，從0數到2。每次計數都會把相應的Addr out從DeMultiplexer發送到各自的Build Record輸入。

備注

在循環內部，當擁有多個輸出的對象(如DeMultiplexer)在每個循環迭代上發送來自一個輸出的數据時，在每個循環開頭將使其它輸出值失效。這可以防止可能舊的、不正确的數据傳播到下一個對象。這也适用于擁有多個輸入的對象，如Build Record。

當一個輸入收到每個循環迭代的數据時，將在每個循環開頭使所有其它輸入的值失效。VEE通過這种方式，防止程序使用以前的值、而不是當前值，以免導致不正确的結果。

Build Record對象從不會由于VEE循環工作方式傳播其Record輸出。在這一程序中，每個For Range迭代將使從上一個迭代放在Build Record輸入上的數据失效。由于Build Record對象在每個循環迭代上只收到一個輸入，因此一次只有一個輸入有效，所以沒有Record輸出。

自己構建這一程序，打開Show Data Flow，查看每次通過循環時DeMultiplexer怎樣只傳播一個數据輸出。

下一個程序通過使用UserObject，使這一解決方案以預期方式工作。這一解決方案正常運行，因為UserObject的輸出端保持數据，直到迭代完成。數据在Build Record輸入上有效，因為UserObject同時發送三個輸出。在這三個輸入都包含有效數据時，Build Record對象會輸出預計結果。

通過用Shift Register代替DeMultiplexer，下面的程序解決了這個問題。DeMultiplexer一次只有一個有效輸出，与此這不同，Shift Register的三個輸出同時有效，因為它們同時發送到Build Record的三個輸入上。不含數据的Shift Register輸出會傳播一個零。

這一特定程序把三個波形的時鐘輸入到Shift Register中，然后ping通Build Record，生成記錄。如果首選數組，而不是記錄輸出，那么可以使用Collector。


到一個Formula的多個輸入

如果在不同的循環周期中發送值，那么把值發送到循環內部一個Formula對象的多個輸入上可能會導致傳播問題。如前面構建Record對象所示，如果任何輸入端包含無效數据，那么Formula將不能運行。在循環內部使用DeMultiplexer對象進一步提高了混亂。下面的程序說明了這一問題。

DeMultiplexer由For Count對象驅動，為每個計數周期輸出一個值(0 - 3)。每個周期只輸出一個值，因此在每個周期后到Formula對象的輸入無效。由于兩個Formula輸入A和B永遠不會同時有效，因此Formula永遠不會執行，沒有Formula輸出。

您可能會确定在下一個循環迭代期間仍可以使用A端的值班，但VEE沒有這种眼光。循環仍可能會為同一個公式計算多個系數。對有一半舊系數、有一半新系數的公式求解，是不符合邏輯的。一般來說，對編程來說，最安全的方式是假設來自以前迭代的數据是“舊的”。正因如此，VEE在每次循環迭代開始時都會使對象的輸入失效。

處理循環

有多种方式處理沒有變化的輸入值在循環迭代后失效的情況。上一節中的范例顯示了一個Shift Register怎樣同時提供多個有效的輸出。實現大多數任務的直接方式涉及使用變量。下面的程序顯示了怎樣使用變量為Formula對象提供有效值。

對于全局變量Nval在這一程序中的使用方式，有兩點需要注意。第一，Nval在程序開始運行時初始化。在這個特定程序中不一定要這樣做，因為VEE先初始化、然后才使用它，但這是一個很好的編程慣例。第二， Nval一直設置一個新的值，然后Formula才使用它。

在對象必須使用變量前，必須一直設置變量，否則程序會發生類似于無效數据的問題。如果變量初始化，那么其值可能會不正确。如果變量沒有初始化，那么程序會導致錯誤，如Variable was not found。


定時事件

根据其在程序中連接的方式，Timer對象可能會顯示奇怪的(可能是差的)結果。下面的程序演示了VEE傳播問題怎樣影響程序中連接對象的方式。

這個程序中的“模塊”是包含著某种VEE對象組合的任意線程。Timer已經被添加到執行Block 2所需的時間中。這個程序可能會運行，也可能會導致錯誤。如果程序運行，Timer可能會產生錯誤結果。有兩個問題影響著Timer啟動定時和結束定時的時間。

第一，Block 1序列輸出同時“ping” Block 2和Timer的Time1輸入。程序沒有指定哪一個先ping，因此可以選擇任何一個。如果它選擇先ping Block 2，那么直到Block 2 ping完時才會ping Time1。這种情況會導致定時結果差，如果在Tim1被ping之前Block 2的輸出ping Timer2，會導致發生錯誤。

即使打開Show Data Flow調試功能幫助識別問題，但數据流量指標可能仍不會全面指明實際傳播。在這种情況下，傳播取決于把Block 1序列輸出的線連接到Tim1和Block 2的順序。

第二個問題与Block 2輸出和Timer的Time2輸入的連接有關。由于它還連接到Block 3和4的輸入上，因此不能保証哪個輸入先運行，這可能會導致定時結果差。

下面顯示了修訂程序保証正确傳播和準确定時的一种方式。在Block 1和Block 2之間插入一個Do對象，把Block 2序列輸出連接到Time2輸入上。Do對象強制實現對象運行順序，如程序中該對象周圍的編號所示。

Block 2上的輸出端以其周圍的編號所示的順序運行。通過把Block 2序列輸出端連接到Time2輸入上，在Block 2及其輸出端驅動的所有模塊完成后，Timer顯示結果。同樣，如果有其它模塊連接到Block 2的序列輸出端，那么插入另一個Do對象，保証正确傳播。


了解數据容器

數据通過VEE程序傳播的過程由數据容器從一個對象移動到另一個對象的過程組成。數据容器是VEE內部數据格式。每個數据容器都有一個數据類型(文本, 實數, 等等)和一個數据形狀(標量, 一維數組, 等等)。

數据容器中可能只有一個值，也可能有由多個值組成的數組。不管是哪种情況，在對象運行時，從某個數据輸出端只會傳播一個數据容器。

在下面的范例程序中，Real64常數對象配置為一個一維數組。Int32常數對象配置為一個標量。

正如您可能預期的那樣，在程序運行時，Real64常數對象會傳播一個作為一維實數數組的數据容器。Int32常數對象輸出一個作為整數標量(值1)的數据容器。那么VEE怎樣相加這兩個容器呢？沒問題，因為VEE提供了自動數据類型轉換功能。VEE會"晉級"整數值1，使其成為一個同等的實數值(1.0)。然后a+b對象在一維實數數組的每個要素中相加實數值1.0，輸出得到的一維實數數組，如下圖所示。

如果您對任何VEE數据行上傳送的特定容器感興趣，可以使用Line Probe查看這些信息。把鼠標指針移動到所需的行上，高亮度顯示這一行，然后按鼠標左鍵，出現Container Information框。例如，從我們的Real64常數對象范例中在數据輸出行上傳送的容器如下圖所示。

一般來說，VEE會自動轉換數据類型，在可能時解析數据形狀。通常不需要擔心怎樣完成這一操作。但是，如果想了解与轉換過程有關的技朮信息，請參閱轉換輸入端上的數据類型和儀器I/O數据類型轉換。

終端信息

終端顯示對象輸入類型和形狀要求，顯示与輸入或輸出容器有關的信息。端則是終端的連接點。如果存在但看不見終端，可以顯示終端︰在對象菜單上點擊Properties，复選General欄上的Show Terminals。

為查看或修改終端的屬性，雙擊終端的信息區域(而不是端)，將出現一個對話框，顯示終端信息。

如果對話框中的所有字段都顯示為灰色，那么不能修改終端。但是，如果部分終端是輸入字段(白色背景)或按鈕，可以改變值。

終端的特點如下︰

Name是終端的名稱，通常可以修改這個字段。在公式表達式中，可以在公式中使用終端名稱。

Mode顯示終端名稱，如Data, Control, Trigger或Error。不能修改這個字段。

Required Type和Required Shape (僅輸入端)指定与對象預期的輸入數据有關的信息。在某些對象上，可以修改Required Type或Shape，但通常不需要這樣做。

Container Information包含對象將處理(根据輸入端上的輸入要求)或已經處理(在輸出端上)的容器有關的信息。這些信息包括數据類型、數据形狀、大小(如果數据是數組)、任何映射和數据本身。


Data Types

数据类型

VEE提供所有VEE操作使用的多个数据类型，也就是说，在VEE对象之间发送的每个VEE数据容器都属于其中一种类型。

备注

如果VEE对象上的输入端指定Any (在许多情况下是默认值)，它将接受任何VEE 数据类型的容器。

复合数据类型 (Waveform, Spectrum, Record, Coord和Object)与特定的数据形状相关。

UInt8是8位2没有符号的互补整数(0 - 255)。

Int16是16位2的互补整数 (-32768到32767)。

Int32是32位2的互补整数 (-2147483648到2147483647)。

Real32是符合IEEE 754标准的32位实数( .40282347E 8)。

Real64是符合IEEE 754标准的64位实数(大约16个有效十进制位或 .7976931348623157E308)。

PComplex是采用(mag, @phase)形式的幅度和相位部分。相位是目前活动的三角单位。例如，在Trig Mode设为Degrees时，30 degrees的PComplex数字4表示为(4, @30)。每个部分都是Real64。

Complex是矩形或笛卡尔复数。每个复数有一个实数部分和一个虚数部分，采用的形式是(real,imag)。每个部分是Real64。例如，复数1 +2i表示为(1,2)。

Waveform是复合数据类型的时域值，其中包含等间隔线性映射点的Real64值和波形总时间跨度。Waveform的数据形状必须是Array 1D (一维数组)。

Spectrum是复合数据类型的频域值，其中包含多个点的PComplex值及最小频率值和最大频率值。Spectrum允许把域数据统一映射为对数或线性。Spectrum的数据形状必须是Array 1D。

Coord是复合数据类型，其中包含至少两个部分，采取的形式是(x, y, ...)。每个部分是Real64。Coord的数据形状必须是Scalar或Array 1D。

Enum是有一个相关整数值的文本字符串。Enum 数据类型由Data [image] Selection Control下的对象传播 (如Radio Buttons对象)。可以使用这些对象的 ordinal输出端，或使用ordinal(x)函数存取这些整数值。Enum的数据形状必须是Scalar。Enum不能作为要求的数据输入类型。

Text是由字母和数字组成的字符串。

Record是由多个字段组成的数据类型。每个字段有一个名称、可以是任何类型(包括Record)的一个容器及一个Scalar或1D Array的数据形状。

Object是在使用VEE的执行模式时为ActiveX Automation Objects and Controls使用的变量预留的数据类型。Object可以作为输入和输出在UserObjects和UserFunctions之间传送，但不能传送到远程UserFunctions及汇编的函数。Object变量包含Dispatch接口名称使用的值(如"Range"或"Application")及Dispatch的指针值(从Automation Object中导出)。Object的数据形状必须是Scalar。

Variant并不是独特的数据类型，它用于表达式中，表明其表示的值可能是许多其它数据类型中的一种。它是当时保持的数据类型。

如需与数据类型和数据类型转换有关的更多信息，请参阅转换输入端上的数据类型和仪器I/O 数据类型转换。

如需与Agilent VEE对ActiveX Automation and Controls的支持情况有关的更多信息，请参阅VEE高级技术手册。

特殊的仪器I/O 数据类型 (VEE 5和较低的执行模式):

VEE作为Int32 数据类型存储和处理所有整数值，作为Real (或Real64) 数据类型存储和处理所有实数。但是，仪器一般支持16位整数或8位字节。此外，部分仪器支持32位实数格式。因此，VEE支持下面三种数据类型，这些数据类型仅用于涉及仪器的I/O事务：

Byte是8位2的互补字节(-128到127)。(字节用于READ BINARY, WRITE BINARY和WRITE BYTE仪器I/O事务。WRITE BYTE事务用来为GPIB仪器提供专门的字符输出。)

Int16是16位2的互补整数 (-32768到32767)。

Real32是符合IEEE 754标准的32位实数 ( .40282347E 8)。


數据類型的線顏色

在VEE 4或更高版本的Execution Modes下，VEE根据流過直線的數据類型為數据線指配不同的顏色。下面是默認的顏色及顏色屬性名稱(可以通過File [image] Default Preferences改變)︰

• 藍色︰數字 (Integer或Real類型)

• 藍色︰复數 (Complex和PComplex類型)

• 橙?色︰字符串 (String類型)

• 灰色︰序列輸出 (零值, 通常來自一條序列輸出)

• 黑色︰未知類型或沒有優化的類型(如Record類型)

備注

如果數据類型是數組，VEE顯示較寬的線。為提高速度，檢查程序中的彩色線。非黑線越多，程序運行速度越快。


Data Shapes

數据形狀

复合數据類型(波形, 頻譜, 記錄, 坐標和對象)与特定的數据形狀相關︰

Waveform和Spectrum數据類型一直是一維數組。

Record和Coord數据類型可以是標量或一維數組。(它們不能是兩維或多維數組)

Object數据類型一直是標量。

所有其它數据類型可以有標量數据形狀或數組數据形狀︰

Scalar是洙個數字，如10或(32, @10)。

Array是由1-10個維度組成的數組。

數組可以映射。(映射是表示數組獨立變量的一套連續值或离散值。)

在許多情況下，VEE對象擁有輸入數据形狀要求為Any的數据端，意味著該對象接受由一個以上的數据形狀組成的容器。


轉換輸入端上的數据類型

在傳統編程語言中，您需要手動轉換不同的數据類型，VEE則自動轉換大多數數据類型。

輸入端上的數据形狀不進行轉換，但在用于數學函數中時，數据類型和形狀可以自動轉換。如需更多信息，請參閱處理數据。

大多數對象在數据輸入端接受任何數据類型，但少數對象要求特定的數据類型或形狀。對這些對象，數据輸入端自動試著把輸入容器轉換成所需的數据類型。

例如，Magnitude Spectrum顯示畫面需要Spectrum數据。如果Function Generator的輸出(波形)連接到Magnitude Spectrum顯示畫面上，那么Magnitude Spectrum的輸入端會自動進行FFT，把時域數据轉換成頻域數据(把波形轉換成頻譜)。

類型轉換可以是晉級，也可以是降級。晉級是從信息較少的數据類型轉換到信息較多的數据類型。例如，從Int32轉換到Real64就是晉級。這种晉級會根据需要自動發生，而很少需要用戶關注。

降級是丟失數据的轉換過程。例如，從Real32轉換到Int32就是降級，因為部分Real32數字丟失。只有在為對象上的輸入指定某個數据類型時，才會發生數据類型降級。一旦已經指定了數据類型，那么在需要并且可能時，將自動發生降級。

例如，如果把Formula對象上的輸入變成Int32，另一個對象為該輸入提供一個Real64數字(如28.2)，那么值將降級為Int32 (28)。

為把Formula輸入上的數据類型從Any變成Int32，只需雙擊輸入端的信息區域(而不是端)，然后點擊Required Type字段即可。在下拉列表中點擊Int32，改變類型。

備注

在VEE 5及以前的執行模式下對儀器I/O事務進行數据類型轉換是一個特例。如需更多信息，請參閱儀器I/O數据類型轉換。

Record數据類型的優先權最高。但是，VEE不會自動晉級到Record數据類型或從Record數据類型降級。為實現Record數据和非Record數据之間的轉換，可以使用Build Record和Unbuild Record。如需更多信息，請參閱VEE高級技朮手冊中的"使用Records和DataSets"。

對象數据類型也不會自動晉級或降級，不能轉換成其它數据類型。 ActiveX automation對象使用Object數据類型。可以使用CreateObject和GetObject函數，創建和使用automation對象。

在不能完成轉換時，VEE會返回錯誤。下表說明了什么時候自動完成轉換("是")，什么時候VEE返回錯誤("否")。

在數据形狀或類型選擇"Any"時，要知道"Any"表示不轉換、不檢查。空值不能轉換成數据類型，但在端設置成Any Shape和Any Type時可以傳送空值，這适用于所有VEE對象。

數据輸入上的空值行為在VEE 7.03及以后版本中已經變化，具体指的是發送到輸入端的空數据，其中數据類型或形狀限制設為"Any"之外的任何其它值。如果輸入端的數据形狀和/或類型設置為Any之外的其它值，其行為在7.03變化，即使要求的輸入端是Int32標量，仍將傳送空值。VEE 7.03及以后版本中已經解決了這個問題，其會發送錯誤信息，表明是否設置了輸入端限制及傳送空值。輸入端將轉換空值，否則會發出錯誤信息。

表格︰輸入端中的類型晉級和(降級)

_________________________________________________________________________________________________

到: | UInt8 Int16 Int32 | Real32 Real64 | Complex | PComplex | Waveform | Spectrum | Coord | Enum | Text
從: |  |  |  |  |  |  |  |  |

_________________________________________________________________________________________________

UInt8 Int16 Int32 | (是)[3] | 是 | 是[1] | 是[1] | 否 | 否 | 是[2] | 否 | 是
Real32 Real64 | (是)[3] | (是)[3] | 是[1] | 是[1] | 否 | 否 | 是[2] | 否 | 是
Complex | 否 | 否[4] | -- | 是 | 否 | 否 | 否 | 否 | 是
PComplex | 否 | 否[4] | 是 | -- | 否 | 否 | 否 | 否 | 是
Waveform | (是)[3] | (是)[8] | 否 | 否 | -- | 是[5] | 是 | 否 | 是
Spectrum | 否 | 否 | (是)[8] | (是)[8] | 是[5] | -- | 否 | 否 | 是
Coord | 否 | 否 | 否 | 否 | 否 | 否 | -- | 否 | 是
Enum | 否[6] | 否 | 否 | 否 | 否 | 否 | 否 | -- | 是
Text | (是)[7] | (是)[7] | (是)[7] | (是)[7] | 否 | 否 | (是)[7] | 否 | --

_________________________________________________________________________________________________

注︰

是 = 晉級

(是) = 降級

-- = 不适用

[1] 整數或實數值晉級到Complex (值, 0)或PComplex (值, @0)。

[2] 獨立部分即n-field Coord的第一個n-1字段，是值的數組索引，除非數組有映射關系。如果數組有映射關系，那么獨立部分從每個維度的映射中導出。相關部分是數組要素。如果容器是一個Scalar (非數組)，那么轉換失敗，生成錯誤信息。

[3] 如果值位于目標類型的額定范圍之外，這些降級會導致錯誤。

[4] 這一降級不會自動完成，但可以使用re(x), im(x), mag(x)和phase(x)對象或Data [image] Build Data/UnBuild Data [image] 對象完成。

[5] FFT或逆FFT自動完成。

[6] 這一降級不會自動完成，但可以使用ordinal(x)對象完成。

[7] 如果文本值不是數字 (如34或42.6)或沒有采用可以接受的數字格式，這一降級會導致錯誤。可以接受的格式如下︰(忽略除每個數字內部的空格以外的空格)︰

降級到整數或實數類型的Text還可能包括︰

前面的符號，如-34。

后綴e或E，后面跟著可選的符號或空格和整數，如42.6E-3。

降級到Complex的Text必須采用下述格式︰ (數字, 數字)。

降級到PComplex的Text必須采用下述格式︰(數字, @數字)。在這一轉換中，相位(第二個部分)視為采用弧度，而不管Trig Mode設置如何。

降級到Coord類型的Text必須采用下述格式︰(數字, 數字, ...)。

[8] 這些降級保留Waveform和Spectrum映射關系。


使用對象和函數轉換數据類型

VEE提供了把數据從一种類型轉換成另一种類型的多個對象和內置函數，它們用來處理VEE在輸入端上不能處理的特殊類型轉換。

通過使用Function & Object Browser，或在接受表達式的任何對象中輸入函數名稱，可以在程序中添加VEE內置的類型轉換功能。在Browser中，選擇Type: Built-in Functions and Category: Type Conversion，得到可用的函數。

  • 例如，函數asText(x)把輸入x轉換成數据類型Text，返回与x相同的數据類型。x可以是任何形狀和任何類型。在表達式asText(3.4)中，結果是Text值"3.4"。

備注

在VEE 5.0以前，在直接輸入到對象中的表達式時，如Formula，Integer會轉換成Real。在VEE 5.0及以后的版本中，在Execution Mode設置成VEE 5 或更高時，表達式中的Integer不再轉換成Real。這种變化不影響輸入端上的數据類型轉換。例如，Formula表達式“2^4”在VEE4及以前的模式中會得到Real64值16.0，但在VEE5及更高模式中會得到Int32值16。

Record數据類型的優先次序最高。但是，VEE不會自動晉級到Record數据類型或從Record數据類型降級。為在Record數据与非Record數据之間實現轉換，應使用對象Build Record和Unbuild Record。

通過使用Using_records中描述的語法，可以在表達式中獲得類似的結果。

Coord數据類型有一些相關的特殊規則︰

• 盡管Int32和Real數据類型的數組可以晉級到Coord，但Coord不能轉換成任何其它數字類型。

• 在沒有映射的數組轉換成Coord時，將從數組索引中創建獨立的Coord值(第一個Coord字段)，相關Coord值(最后一個Coord字段)則包含著要素值。例如，如果數組A轉換成Coord，A包含[1,5,7]，那么它轉換成一個Coord數組，其中包括[(0,1),(1,5),(2,7)]。

• 在映射的數組轉換成Coord時，獨立Coord參數的范圍為映射的低值到Xmin+(Xmax-Xmin/N)*(N-1)值。

Object數据類型也沒有自動晉級或降級功能，它不能轉換成其它數据類型。ActiveX automation對象使用Object數据類型。通過使用函數CreateObject和GetObject，可以創建和使用automation對象。如需与VEE支持ActiveX Automation和控件有關的更多信息，請參閱在VEE中使用ActiveX Automation。

另請參閱

Help => Index and contents => Tell me about... => Active X


處理數据

為處理數据，可以使用Function & Object Browser中提供的數學函數在數据上進行運算。使用Function & Object Browser工具欄按鈕，打開瀏覽器。可以把多個函數組合起來，創建數學表達式。

備注

還可以在運行程序前，使用數字輸入字段處理數据，如Constant對象中的數字輸入字段。某些對象上的數字輸入字段支持使用任意公式。公式會立即求解；得到的值用于字段中。不能在Constants中使用變量。此外，輸入的公式必須求解為一個正确類型的標量，或可以轉換成該對象預計類型的標量值。一般來說，可以在數字輸入字段中使用任何二元運算符、嵌套圓括號、函數調用和預先定義的數字常數PI (3.1416...)。

Function & Object Browser包含一個數學函數集，以各种方式處理數學。每個函數都是在Formula對象中輸入的表達式，并擁有相應的標題、輸入和輸出。可以在每個Formula對象的open view中改變表達式，還可以改變其屬性。Function & Object Browser中列出的所有函數都可以用于支持表達式的其它菜單中的任何對象。支持表達式的其它菜單中的對象是︰

Data [image] Access Array [image] Set Values

Data [image] Access Array [image] Get Values

Data [image] Access Record [image] Get Field

Data [image] Access Record [image] Set Field

Device [image] Sequencer

Flow [image] If/Then/Else

Flow [image] Conditional (所有條件對象)

使用事務的I/O對象

表達式可以包含數据輸入端名稱、數据輸出端(僅适用于I/O事務和Formulas)、變量(全局變量和聲明變量)、用戶自定義函數(匯編的函數, 遠程函數和UserFunctions)及Function & Object Browser中的任何數學表達式。數据輸入端名稱作為變量使用。對USASCII鍵盤使用的表達式內部的輸入變量名稱，VEE不分大小寫。對非USASCII鍵，VEE只對7位ASCII字符不分大小寫。在運行時對表達式求解。


一般概念

如果把一個數組傳送到一個函數中，除另行說明外，函數在數組的每個要素上運行。例如，標量sqrt返回一個標量；sqrt(4)返回2。但是，數組sqrt返回相同大小的數組；sqrt([1,4,9,64])返回數組[1,2,3,8]。

在VEE 5和更高的執行模式下，沒有小數點或"E"指數的表達式字段中的所有數字都視為Int32。在VEE 4和VEE 3模式下，所有數字都視為Real64值，除非使用圓括號指定Complex或PComplex值。因此，2視為Real64或Int32，具体取決于程序的執行模式。(1, @2)是一個PComplex數字，(1, 2)則是一個長方形Complex數字。1.0和1E3總是Real64。

備注

VEE把圓括號中包含的多個值理解為Complex或PComplex值。如果需要在表達式中使用Coord值，那么可以使用coord(x, y)函數。coord函數使用兩個或多個參數。coord(1, 2)返回有兩個字段的Scalar Coord容器。

在Coord數据上運行的所有函數只在每個Coord的相關(最后)字段上運行。例如，abs(coord(-1, -2, -3))返回Coord (-1, -2, 3)。

除函數ordinal(x)外，在每個數學運算前Enum容器總是轉換成Text。它不支持Enum數組。如果想創建Enum數組，其會創建Text數組。

如需与具体數据類型定義有關的信息，請參閱數据類型。

在表達式中使用字符串

表達式內部的字符串必須用雙引號引起來。可以在字符串內部使用下面的脫字序列︰

________________________________________

換碼符

意義

________________________________________

\n | 換行
\t | 橫欄
\v | 豎欄
\b | 退格
\r | 回車
\f | 換頁
\" | 雙引號
\’ | 單引號
\\ | 反斜杠
\ddd | 字符值。d是一個八進制位。

________________________________________

在表達式中使用數組

表達式中的數組使用方式与標量相同，只是提到其名稱。可以把數組常數直接輸入表達式中(如[1,2,3])。函數中使用的數組，如sin([1,2,3])，把sin函數應用到數組的每個要素中。VEE要求在數組要素之間使用逗號。

備注

數組索引基于0。索引開頭為0，直到n-1，其中n是該特定維度中的要素數量。

可以使用表達式存取數組的多個部分。一旦已經在表達式中指定子數組，可以輸出子數組，或在進一步表達式計算中使用子數組。

從每個數組中只能存取相鄰的子數組。為存取子數組，必須為數組中的每個維度指定一個參數。

使用下面的字符指定數組參數︰

逗號","分隔數組維度。每個子數組運算必須為每個數組維度提供一個指標。

冒號":"從其中一個數組維度中指定一個要素范圍。

星號"*"是通配符，從該特定數組維度中指定所有要素。

備注

可以根据子數組中的點數調節Waveform時間跨度、Spectrum頻率跨度和數組映射關系。例如，如果有一個256點的Waveform (WF)，并請求WF[0:127]，您將獲得Waveform的上一半及一半舊波形的時間跨度。

范例

A是長10個要素的Array 1D。

A[1]存取A中的第二個要素，輸出一個標量。

A[0:5]返回一個一維子數組，其中包含A的前6個要素。

A[1:1]返回一個一維子數組，其中包含一個要素，這個要素是A的第二個要素。注意這与第一個范例A[1]之間的區別。

A[2:*]返回一個一維子數組，其中包含A的第一個到第十個要素。

A或A[*]返回整個數組A。

A[1,2]返回錯誤，因為它指定兩維數組的參數。

B是一個5x5矩陣(一個Array 2D)。

B[*]返回錯誤，因為它只指定一個參數，B是一個兩維數組。

B[1,2]從第二行第三個要素返回一個標量值。

B[1,*]作為Array 1D返回所有第一行。

B[1,1:*]作為Array 1D返回所有第一行，第一個要素除外。

B[4,1:4]返回一個Array 1D，其中包含四個要素︰第4行中第二個到第五個值。

B[5,5]返回錯誤，因為數組基于零。只能通過B[4,4]存取數組。

B[1 1]返回錯誤，因為必須用逗號把維度指定符分開。

在表達式中構建數組

可以從其它數組或子數組的要素中構建數組。表達式中的每個要素必須指定相同數量的維度，在每個維度中包含相同數量的值。

范例

A是有10個要素的Array 1D。B是一個5x5矩陣。

[1,2,3]返回3個要素的Real Array 1D，其中包含取值1, 2和3。

[A[0], A[5:7], A[9]]導致錯誤，因為它同時指定標量和Array 1D要素。

[A[0:4], B[0,*]]返回10個要素的Array 2D (大小為2 x 5)，其中第一行是來自A的前五個要素，第二行是來自B的第一行。

[A[0], A[1], B[2,3], A[5]]返回4個要素的Array 1D，其中包含A的第一個要素和第二個要素，來自第三行的要素和B的第四列及A的第六個要素。

在表達式中使用變量

通過使用Declare Variable和Set Variable對象，可以創建和設置變量；通過使用Get Variable對象，可以存取變量。如需進一步信息，請參閱Declare Variable, Set Variable和Get Variable。

此外，通過在數學表達式中包括變量名稱，可以存取變量。可以在Formula對象或具有延遲求解表達式字段的任何對象中，在數學表達式內包括一個變量。這些對象有If/Then/Else, Get Values, Get Field, Set Field及在事務中使用表達式的所有設備，包括To File, From File, From DataSet, From Stdin, To/From Socket, Sequencer和Direct I/O。

為在表達式中包括變量，只需象輸入變量一樣使用變量名稱。例如，假設程序使用Set Variable對象定義變量numFiles。在程序中其它地方，帶有輸入A的Formula對象可以使用表達式numFiles+3*A。

備注

變量名稱不分大小寫。可以使用大寫字母或小寫字母。因此，GLOBALA等同于globalA。

為避免錯誤或意想不到的結果，在表達式中包括多個變量時，要知道有兩個限制︰

1. 局部輸入變量要優先于全局變量。也就是說，在變量名稱重复時，會選擇局部變量，而不是全局變量。例如，如果有Freq輸入(局部變量)的Formula對象中包括表達式Freq*10，同時還有一個全局變量名為Freq，那么將使用局部變量Freq、而不是全局變量對表達式求解。對這种重复，將不會報告錯誤。

2. 根据程序流程，對包含變量的表達式求解的對象可以在定義變量之前執行。例如，假設使用Set Variable對象設置變量globalA，Formula對象中包括表達式globalA*X^2。根据程序流程，Formula對象可以在Set Variable對象執行前執行。在這种情況下，Formula對象不能對表達式求解，因為沒有定義globalA。這時會出現一條錯誤信息。

采取措施保証正确傳播非常重要，應先執行Set Variable。在這种情況下，可以把Set Variable對象的序列輸出端連接到Formula對象的序列輸入端，或連接到包括要求解的表達式變量的任何其它對象的序列輸入端，來保証正确傳播。如果使用Get Variable對象，其序列輸入端也應連接到 Set Variable的序列輸出端。另外，如果使用Declare Variable對象聲明變量，必須使用Set Variable初始化變量。如需進一步信息，請參閱VEE高級技朮中的"變量"一章。

備注

在默認情況下，會复選(啟用)Default Preferences對話框中的Delete Variables at PreRun，因此在運行程序時，會從變量中刪除值。這可以防止變量中包含"舊"數据，導致意想不到的結果。

變量可以是數組。可以使用數組語法存取變量，就象是輸入變量一樣，如GlobAry[2]。如果變量Record，可以使用記錄存取語法，如globRecord.numFiles。

在表達式中使用記錄

可以使用表達式存取一條記錄的一個字段或子字段。使用A.B子字段語法存取記錄A的B字段。如果A是帶有字段 B的記錄，其本身又是帶有字段C的記錄，那么可以以遞歸方式使用A.B語法存取C字段。也就是說，使用表達式A.B.C。如果A沒有B字段，或B沒有C字段，那么會發生錯誤。

表達式中可以使用的A.B.C.D.E.F的遞歸數量沒有限制。注意，字段名稱不分大小寫(大寫字母和小寫字母相同)。可以在子記錄中复制字段名稱，因此可以使用表達式A.a.A。

記錄特別适合作為變量，以便一個變量可以保持多個不同的值。注意，Formula對象可以代替Get Variable。因此，可以在一個對象中完成GlobRec.numFiles存取，而不是同時使用Get Variable和Formula對象拆除記錄。

可以在表達式中結合使用記錄和數組語法，存取記錄數組的字段(如A[1].B)，或存取作為一條記錄的一個字段的數組的一部分(如 A.B[1])。注意A[1].b和A.b[1] (均支持)之間的區別︰

第一個用于帶有字段 b的記錄 1D。A[1].b存取記錄數組A的第二個記錄要素的字段 b。

第二個用于帶有字段 b的標量記錄，這是一個1D數組。A.b[1]存取記錄A的字段b的第二個要素。

為改變記錄中的字段，使用Formula對象中的賦值運算符。例如，假設有一條記錄R帶有字段 A，您想把R.A的值變成sin(R.A)。您只需把表達式變成R.A = sin(R.A)，以后可以在VEE程序中繼續使用記錄R (及字段 A的新值)。


使用賦值運算

Formula對象支持使用表達式，這些表達式使用賦值運算改變部分數組和記錄的值，為局部變量和全局變量賦值。Result輸出端包含變化的數組或記錄部分，而不是整個數組或記錄。例如，在表達式A[2] = 4的Formula中，Result端包含著值為4的數組要素A[2]。它不包含數組A的所有要素。可以在Type: Operators, Category: Assignment的Function & Object Browser中獲得預置賦值的Formula對象。

備注

只有Formula對象才允許使用賦值運算。

允許的語法

Formulas支持用分號分隔的多個表達式。表達式左側支持改變數組和記錄要素及變量值的語法。右側必須与修改的左側完全匹配。對記錄，不能改變設計項目(字段類型、形狀或大小)，只能改變記錄的值。下面的范例說明了數組使用的左側語法︰

A[2]=
A[2, 3, 4:5]=
A[2:4, 4:6, 3:*, *]=

下面的范例說明了記錄使用的左側語法︰

RecA.B=
RecA.B.C.D=
RecA[1].B=
RecA.B[1]=
RecA.B.C.D[1]=
RecA[1].B[2].C[3].D=
RecA.B[2:3].C[3:4]=

允許使用下面的左側語法，直接設置全局變量和局部變量，初始化聲明的局部變量︰

GLOBAL=2
TMP_LOCAL=4

下面的賦值范例說明了右側必須与修改后的左側部分匹配。右側的數据類型必須能夠強制轉換成左側的數据類型，如從整數到實數或從實數到字符串。不能從Complex強制轉換成實數。

ArrayA[2:4] = ArrayB (ArrayB必須是有三個要素的一維數組。)

ArrayA[2, 3, 4:5, 7, 8:9] = ArrayB (ArrayB必須是大小為2 x 2的兩維數組。)

Rec[3:4].field = ArrayB (ArrayB必須是有兩個要素的一維數組。)

Rec[3:4].field[4:5] = ArrayB (ArrayB必須是大小為2 x 2的兩維數組。)

在賦值左側，不允許不明确使用記錄數組。如果Rec是記錄數組，那么表達式Rec.A=2將導致錯誤，請求使用完整的明确語法Rec[*].A=2。如果Rec是標量記錄，B是數組，那么Rec.B=2會發生類似的錯誤；得到的提示將要求使用明确的Rec.B[*]=2。

備注

在VEE 4.0及更高版本中，Set Values和Set Field對象實際上是帶有賦值表達式的Formula對象。這些對象的定義不同于以前版本的VEE。在VEE 3.x及以前版本中編寫的使用Set Values和Set Field對象的現有程序將保留以前的定義。

賦值中的全局變量和局部變量

Formula對象中的賦值可以用表達式改變全局變量和局部變量的值，如A=2或GlobalA[5]=2。由于變量可以是未聲明全局變量、聲明全局變量或局部變量、或直接設置的局部變量，因此Formula對象將使用下面的優先順序查找變量A︰

1. 作為輸入端的局部變量，這會覆蓋輸入端值，包括其類型和形狀。

2. 作為輸出端的局部變量。這個變量創建、并放在輸出端上。

3. 全局變量。變量必須已經存在。完全改變其值，包括其類型和形狀。

根据這些規則，如果Formula包含賦值tmp=2，其中tmp未能滿足上述標準之一，那么會發生錯誤。

為全局數組和記錄賦值要更加注意，因為這些變量可以是未聲明變量或聲明變量。在使用Set Variable之類的對象創建時，或使用Declare Variable聲明時，會存在全局變量。對未聲明全局變量，可以使用賦值表達式改變其類型和形狀；但是，對聲明全局變量，賦值右側必須強制轉換成全局的聲明類型。

非常重要!

在使用Declare Variable對象聲明全局數組或記錄變量時，必須在整体上初始化整個變量，然后才能改變全局變量的一部分。下圖顯示了在Formula中的賦值改變各個部分前聲明和初始化了GlobalAry變量。

端上的數据容器內容

Formula對象輸入端和輸出端影響著賦值改變變量值的方式。Result輸出端上的數据容器包含著賦值表達式左側修改后的部分，包括任何數据類型和形狀變化。在表達式為ArrayA[2:4] = ArrayB[5:6]的Formula中，Result輸出端包含著ArrayA[2:4]，帶有ArrayB[5:6]中的值。在表達式ArrayA[2]=4、其中ArrayA數据類型是Complex中，輸出端的ArrayA[2]值轉換成Complex (4,0)。

可以使用下面的輸出端名稱︰

Result是Formula上默認的輸出端。它是一個預留的名稱，包含著賦值表達式的結果。可以刪除Result，使用其它輸出，然后再在需要時再重新添加Result，但不能重命名輸出端Result。

輸入端名稱。這個值從輸入中复制。如果在賦值中改變，那么輸出上使用新值。變量必須存在、并有一個值，然后才能作為輸入端名稱使用。

賦值表達式創建的局部變量名，如tmp=2創建的tmp。

可以使用Formula上額外的輸出端，從對象中獲得修改后的數組或記錄的各個部分。這可以把變量的修改部分傳出一個端，把整個變量傳出另一個端。為在輸出端獲得整個數組或記錄，可以在賦值表達式中使用全局變量，或在數組或記錄的Formula對象中添加一個輸出端。如果存在沒有賦值的輸出端，那么會發生錯誤。

將忽略數組上的映射，除非修改整個容器。例如，ArrayA[2:4] = ArrayB[2:4]不會修改ArrayA上的映射。但A = ArrayB[2:4]將設置A上的映射，因為它被ArrayB替換。

錯誤恢复

由于Formula可能包含一系列表達式，包括賦值和其它運算，因此其以某些方式處理錯誤。如果賦值或其它運算完成，然后后面的表達式發生錯誤，那么將不會撤消前面的表達式。如Formula中的表達式Global[2]=24; 2/0。Global[2]設置成24，然后除以零，發生錯誤。VEE將不會把Global[2]設置回到以前的值。

備注

如需了解使用賦值運算的相關程序，請參閱Help [image] Contents [image] How Do I ?/font> [image] Work with Data部分，然后查看Working with Arrays (如改變數組中的值)及Working with Variables下的相關內容。

另請參閱

在VEE中使用ActiveX Automation, 在VEE中使用ActiveX控件


使用二元運算符

二元運算符集合有多种額外的條件和指導準則。在Type: Operators的Function & Object Browser的下述類別中可以看到二元運算符︰

Category: Arithmetic

a + b

a - b

a * b

a / b

a ^ b (指數)

a mod b (模數 - 返回除法的余數)

a div b (整除 - 沒有余數)

Category: Comparison

a ~= b

a == b

a != b

a < b

a > b

a <= b

a >= b

Category: Logical

a AND b

a OR b

a XOR b

NOT a (一元運算符，其指導準則与二元運算符相同)

在數組上使用二元運算符時，數組大小、數組形狀和數組映射(如有)必須匹配。對Coords，每個Coord的獨立變量的值必須匹配。

二元運算符的優先次序

這個列表列出了二元運算符的優先次序，優先次序從高到低，同一級別上列出了優先次序相同的運算符。

1. 用來對表達式分組的圓括號( and )

2. ^

3. unary minus -

4. * / MOD DIV

5. + -

6. ~= == != < > <= >=

7. NOT

8. AND

9. OR XOR

數据類型轉換

對二元運算符，輸入值晉級到最高的數据類型，然后執行運算。輸出的數据類型是最高的數据類型。例如，在复數(2, 3)加上字符串"Dog"時，"Dog"+(2,3)，得到字符串"Dog(2, 3)"。

備注

這一規則有一個例外。在把Text字符串乘以Int32時，結果是重复的字符串。例如，"Hello"*3返回HelloHelloHello。在這种情況下不會進行數据類型晉級。

數据類型順序(從最高到最低)是︰

1. Object

2. Record

3. Text (Enum作為Text處理)

4. Spectrum

5. PComplex

6. Complex

7. Coord (不會轉換到任何其它可能的數字類型)

8. Waveform

9. Real64

10. Real32

11. Int64

12. Int32

13. Int16

14. UInt8

15. Boolean

16. Variant

Variant數据類型不"固定"為具体的數据類型，它可以是需要的其它數据類型之一。

Object考慮因素: Object不會自動降級到其它類型。Object本身不支持任何二元運算，但由于大多數Object的默認屬性是String或Integer值，因此可以在Object上進行大多數運算。其區別在于，您要在默認屬性上完成運算。如需与Object及其怎樣在VEE中与ActiveX automation一起使用，參閱在VEE中使用ActiveX Automation和在VEE中使用ActiveX控件。

Record考慮因素: Record在所有數据類型中的優先次序最高，但只能使用特殊對象，如Build Record，才能把其它數据類型轉換成Record數据類型。Record將不會自動降級到其它類型，其它類型也不會自動晉級到Record類型。

二元運算符支持記錄和其它數据類型組合，但在這种情況下它們總是返回一個記錄。在記錄上和非記錄上進行二元運算將把非記錄運算應用到記錄中的每個字段。例如，記錄R有兩個字段︰A是一個標量實數，值為(2.0)；B是一個標量Complex，值為(3,30)。表達式R+2將生成一條記錄R，它有兩個字段︰A是標量實數，值為4；B是標量Complex，值為(5,30)。如果不能在記錄中每個字段上執行運算，那么會發生錯誤。

在記錄和任何其它類型上進行二元運算將返回具有相同"計划"的記錄，因此得到的記錄擁有相同的字段、相同的名稱、類型和形狀。二元運算可能不會改變記錄字段的類型或形狀。例如，記錄R有兩個字段︰A是一個標量實數，B是一個標量Complex。表達式R+(2,3)將導致錯誤。VEE先試著把(2,3)加上R.A，然后對R.B進行同一運算。由于R.A字段是實數，R.A+(2,3)的結果是Complex，因此會發生錯誤。Complex不能降級到實數，存儲回到R.A中。

在使用數組的記錄上進行二元運算會把記錄處理成優先次序高于數組。例如，[1,2,3] + [3,4,5]生成[4,6,8]，因此數組逐項組合在一起。但是記錄的優先次序要高于數組。這意味著，如果R是有兩個字段A和B的記錄，表達式R + [1,2]將試著把數組[1,2]加到R的每個字段中。它將不會把1加到R.A中，把2加到R.B中。

在把數組与記錄數組組合在一起時，情況會變得更加复雜。例如，假設R是記錄1D數組，長為2，有三個字段A, B和C。表達式R + [1,2,3]或表達式R + [1,2]將把整個數組加到R每個要素的每個字段A, B和C中。盡管R是一個數組，但它是記錄這一事實要更加重要。

在兩個記錄上進行二元運算將把逐個字段組合起來，因此兩個記錄的"計划"必須相同。也就是說，每個記錄必須擁有相同數量的字段，每個字段必須有相同的名稱、類型和形狀，且采取相同的順序。

如果想在字段A中加1，在字段B中加2，依此類推，最簡便的方式是使用多個賦值(參閱Assignment)。在Formula對象中，輸入表達式R.A=R.A+1,R.B=R.B+2，然后可以在程序中使用R.A和R.B及其新值。

Coord考慮因素: Coord數据類型有相關的一些特殊規則︰

盡管整數和實數數据類型的數組可以晉級到Coord，但Coord不能轉換成任何其它數字類型。

在沒有映射的數組轉換成Coord時，將從數組索引中創建獨立的Coord值(第一個Coord字段)；相關Coord值(最后的Coord字段)包含著要素值。例如，如果數組A轉換成Coord，且A中包含[1,5,7]，那么它會轉換成包含[(0,1),(1,5),(2,7)]的Coord數組。

在映射的數組轉換成Coord時，獨立Coord參數位于映射的低值到Xmin+(Xmax-Xmin/N)*(N-1)值之間。

Spectrum考慮因素: 如果選擇使用dB標度，必須自己跟蹤標度。盡管dB標度的數据正确顯示(Waveform (Time)顯示畫面上除外)，但許多數學函數，如fft(x)、ifft(x)及涉及PComplex數字的函數在dB標度的數据上不能正确運算。如果需要使用這些運算，應先把dB標度的數据轉換成線性標度，然后再進行運算。

在使用特定的dB單位時，某些數學函數提供了有意義的結果，但只适用于這些單位的限制范圍以內。例如，如果把20加到dBW標度的Spectrum，那么20將加到每個要素的幅度中(其效果与把Spectrum轉換成線性標度，然后再把每個要素乘以100，然后再轉換回到dBW相同)。

Variant考慮因素: 二元(+-*/, 等)求解和函數結果不能是Variant。

在表達式b=a中，b的類型与a相同，即使其是一個Variant。

在表達式b=a+2中，不管a是什么，b永遠不是Variant。

在表達式b=sin(a)中，不管a是什么，b永遠不是Variant。

函數func(2+a)總是發送一個非Variant，而不管a是什么。

如果a是一個Variant，函數func(a)將發送一個Variant。

僅變量名稱a、一元運算符-a或圓括號(a)不會改變a的數据類型。

數据形狀考慮因素

對兩個運算對象(輸入)都是數組的二元運算，數組的大小和形狀必須匹配。運算結果是大小和形狀与輸入數組相同的數組，關系運算符除外(==, <, 等等, 其總是返回標量)。如果數組擁有不同的維數或大小不同，VEE將返回錯誤。例如，[1,2] + [1,2,3]會返回錯誤。

如果在標量和數組上進行運算，那么處理標量的方式就象標量是大小和形狀与數組運算對象相同的常數數組一樣。例如，2 + [1,2,3]作為[2,2,2] + [1,2,3]處理，結果是[3,4,5]。

在n維數組轉換成Coord時，Coord數据形狀是一個Array 1D，在每個Coord要素中有n+1個字段。


顯示測試數据

下表介紹了不同VEE對象的顯示功能。

顯示 | 說明
字母數字 | 顯示文本或數字值。要求SCALAR, ARRAY 1D或ARRAY 2D。
蜂鳴 | 提供听得見的聲音，突出顯示程序中的某個位置。
复平面 | 在實數對虛數据軸上顯示复數, 極坐標复數(PComplex)或坐標數据值。
指示燈 => Meter, Thermometer, Fill Bar, Tank, Color Alarm | 所有這些指示燈都顯示數字及其名稱的圖形表示。它們都有色碼范圍，通常是三個范圍，但儀表有五個范圍。Color Alarm可以仿真LED，在每個范圍的告警中閃爍文本信息。
標簽 | 用來在Panel View中貼上文本標簽的對象。在Panel View中，通過對象菜單中的Properties...，可以簡便地調節顏色和字体。
登錄字母數字 | 在重复登錄時，顯示文本或數字值。要求SCALAR或ARRAY 1D。
寫字板 | 使用文本注釋闡明程序。
圖片 (PC) | 用來把圖像放在Panel View上的對象。支持的格式包括︰*.BMP (位圖), *.GIF (GIF87a和GIF89), *.JPEG, *.PNG和*.WMF (Windows圖元文件)
極坐標圖 | 在為半徑和角度數据提供單獨的信息時，以圖形方式在極坐標上顯示數据。
頻譜 (頻率) | 包含頻域畫面的菜單︰幅度頻譜, 相位頻譜, 幅度對相位(極坐標)和幅度對相位(Smith)。輸入必須是波形, 頻譜或坐標數組。波形輸入通過快速傅立葉變換(fft)自動轉換成頻域信息。
帶狀圖 | 以圖形方式顯示程序運行時連續生成的最新數据歷史。對每個y輸入值，x值遞增指定的步進尺寸。在新數据离開顯示屏右側時，顯示畫面會自動滾動，顯示最新數据。
波形(時間) | 以圖形方式顯示實時域中的波形或頻譜。頻譜使用反向快速傅立葉變換(ifft)自動轉換成時域信息。x軸是輸入波形的取樣單位。
X与Y圖 | 在為X和Y數据提供單獨的數据信息時，以圖形方式顯示取值。
XY軌跡 | 在使用均勻間隔的x值生成y數据時，以圖形方式顯示映射的數組或取值集合。自動生成的x值取決于軌跡數据的數据類型。例如，Real軌跡會生成均勻間隔的Real x值；而Waveform軌跡會在不同時間生成不同的x值。


關于變量

VEE中有兩种變量︰未聲明變量和聲明變量。這兩种變量都可以包含任何數据類型，包括复合數据類型，如波形和記錄。它們也可以是任何數据形狀，包括標量和數組。

關于未聲明變量

未聲明變量使用起來最簡便，但執行速度比較慢，不允許确定范圍(參見下面的關于聲明變量)。未聲明變量包括︰

• 可以在程序中任何地方使用的全局變量。這些變量使用Set Variable對象創建。如果在PreRun屬性下設置Delete Variables，那么在程序運行前將刪除這些變量。必須先創建全局變量，然后才能通過Get Variable對象訪問這些變量或把這些變量用于表示式中，否則程序會發生錯誤。

如果用戶不知道取值將是哪种數据類型或形狀，或者如果取值可能會改變類型或形狀，那么可以使用未說明全局變量。如果用戶希望确定范圍的變量(即局部變量)，那么可以使用聲明變量 (參見關于聲明變量)。

• 只用于 Formula 對象中的臨時變量。通過增加輸出端，用戶可以在Formula中創建臨時變量，如tmp。例如，為在Formula對象的端a和b之間交換輸入值，可以使用臨時變量tmp。表達式的形式將類似于tmp=a, a=b, b=tmp。如需与臨時變量有關的更多信息，請參見指配。

• 作為對象內部的變量使用的端名稱(如在交易或Formula對象中)。

關于聲明變量

聲明變量是在使用之前定義的變量。它們增加了确定范圍的特點，使VEE運行速度更快，因為在運行時之前數据類型和形狀是已知的。但是，如果用戶對聲明變量的設置值不同于說明中設置的數据類型或形狀，那么程序將發生錯誤。

為聲明變量，使用Data Þ Variable Þ Declare Variable對象。在放到上下文中時，它會在任何其它對象執行前聲明變量。在已經說明了變量時，只有在通過Set Variable或Formula對象進行設置時才會有取值。

必須在Declare Variable對象中指明聲明變量的范圍。确定的范圍如下︰

• Global – 這种變量可以用于程序中的任何地方。

• Local to Context – 這种變量只能用于單個UserObject或UserFunction中，或用于Main中。這种變量可以用于Declare Variable對象所在的上下文及嵌套在上下文內部的UserObjects中。這种變量不能用于從上下文調用的UserFunctions中。

• Local to Library – 這种變量只能用于使用Declare Variable對象的UserFunctions程序庫內部。Declare Variable必須位于其中一個UserFunctions中。

不能定義名稱和范圍相同的多個變量，否則會發生錯誤。

關于變量命名

變量可以使用任何有效的變量名稱。第一個字符必須是字母。名稱其余部分可以使用字母、數字和下划線字符。變量名稱不分大小寫(大小寫均可)。不允許使用特殊字符，包括空格。

為提取變量值，必須使用說明或設置變量時指定的名稱。

在Default Preferences中的Execution Mode設為VEE 5模式或更高時，某些名稱必須是唯一的。在Execution Mode設為VEE 4或VEE 3模式時，在命名的變量名稱与另一個變量名稱相同時，會出現優先問題。優先順序(從最高到最低)如下︰

1 輸入端名稱 (如在Formula或交易對象中)

2 臨時變量(如在Formula對象中)

3 Local to Context 聲明變量

4 Local to Library 聲明變量

5 全局聲明變量

6 全局未聲明變量

如果兩個名稱相同的變量位于一個對象中，那么會發生沖突，在這种情況下將使用優先權最高的變量。

另請參見

執行模式，創建變量，使用變量，設置初始值，存取變量值，在庫中使用變量


用戶定義的函數概述

VEE有三种用戶定義的函數。下面概括介紹了每种函數︰

1 UserFunctions

• 為創建UserFunction，可以選擇Device [image] UserFunction，或點擊Edit [image] Create UserFunction，選擇多個對象。

• 為從程序不同位置調用UserFunction，可以使用Call myFunction (Device [image] Call)對象，或在對象內部使用表達式(如從Formula中)。還可以使用UserFunction對象菜單，選擇相應選項，如Generate [image] Call，從UserFunction在Main程序中生成調用對象。

• 為編輯UserFunction，可以點擊Edit [image] Edit UserFunction... ，從出現的列表窗口中選擇相應的UserFunction。

• 為把UserFunction從一個程序傳送到另一個程序，可以在程序開發過程中合并多個UserFunction，或在運行時導入多個UserFunction (Device [image] Import Library)。

2 Complied Function

• 為創建Complied Function，使用匯編語言在VEE外面操作，然后把函數放到程序庫中，如DLL。

• 為把Complied Function鏈接到程序上，可以使用Import Library對象，它在運行時把程序庫鏈接到VEE上。(如需更詳細的討論，請參閱“ 優化Agilent VEE程序 )。

• 為調用Complied Function，可以使用Call myFunction對象，或在VEE對象內部編寫一個表達式。

3 遠程函數

• 遠程函數与UserFunction類似，但它們在网絡上連接的遠程主計算机上運行。

另請參閱

實驗9-1: UserFunction操作，實驗9-2: 創建和合并UserFunction庫，實驗9-3: 導入和刪除庫，實驗9-4: 合并柱狀圖顯示程序，在大型程序中查找函數，合并Agilent VEE程序


關于UserFunctions

UserFunction是為創建用戶自定義函數專門設計的。通過從Device菜單中選擇UserFunction或把現有對象或UserObject轉換成UserFunction，可以創建UserFunction。

可以在程序中使用Call對象(Device Þ Call)或下面确定的其它對象來調用UserFunction。UserFunction可以保存在庫中，并使用Import Library對象導入到程序中。

創建UserFunction和使用UserObject相比，其優點是可以在程序中多次調用同一個UserFunction。因此，用戶只需編輯和維護一個UserFunction，而不是一個UserObject的多個實例。

在VEE 4或更高的Execution Mode下執行時，從Call, Formula, If/Then/Else或Sequencer對象中(僅從Function字段中)調用UserFunction時, 它會進行時間分片。

從To File, To String或類似對象中調用UserFunction時或通過控制端提供Formula對象的公式時,UserFunction不進行時間分片。

UserObjects和UserFunctions之間的差异

VEE之所以同時提供UserObject和UserFunction，是因為這兩者擁有不同的特點，因此可以用于不同的目的。下面介紹了UserObject和UserFunction之間的差异︰

UserObject (位于Device [image] UserObject下)是用戶定義的、在VEE中可以象任何其它對象一樣使用的對象。用戶可以象子程序一樣對UserObject編程，但它一直以圖形方式保留在屏幕上。如果用戶想在程序中其它地方使用它，那么必須對它進行复制，并保存所有拷貝。注意，如果多次复制UserObject，程序會變得比較大，加載起來比較慢。當在一個UserObject中增加某個特性時，如果用戶希望其所有拷貝保持完全相同，那么必需將這一特性添加到其所有拷貝中。

而UserFunction (位于Device [image] UserFunction下)在內存中只有一個子例程拷貝. 只有在用戶希望時，它才以圖形方式在工作空間中顯示其窗口。否則，它會被存儲，以便從Call對象或任何其它表達式字段中調用。程序中調用某一UserFunction的所有例程都將繼承該UserFunction的變化。用戶還可以創建UserFunction庫，以便更多地重用代碼。

另請參閱

UserObjects和UserFunctions之間的轉換，從表達式中調汁煲erFunction，創建UserFunction程序庫，使用函數庫，導入和調汁煲erFunction


Compiled Function概述

可以在VEE程序中使用Compiled Function ，如DLL (動態鏈接庫)。為此，必須獲得Compiled Function或根据下述步驟創建Compiled Function︰

1 在C, C++, Fortran或Pascal中編寫函數，然后匯編這些函數。

2 為函數編寫一個定義文件。

3 創建一個包含Compiled Function的共享庫。

使用Compiled Function的優勢

在VEE程序中使用Compiled Function提供了下述優勢︰

• 加快執行速度

• 利用當前使用其它語言編寫的測試程序

• 使用其它語言開發數据過濾器，并把它們集成到VEE程序中

• 獲得專有例程

備注

增加Compiled Function在開發流程中增加了复雜度。因此，只有在下述情況沒有提供您所需的功能或性能時，才使用Compiled Function︰VEE UserFunction, Execute Program換到操作系統, 或ActiveX Automation調用另一個程序。

使用Compiled Function設計考慮因素

如果您打算在VEE程序中使用Compiled Function，應考慮下述信息︰

• 可以使用操作系統中提供的任何輔助工具，包括數學運算例程、儀器I/O等等。但是，不能從要鏈接的程序內部存取任何VEE內部變量。

• 必須在Compiled Function內提供檢錯功能，因為VEE不能捕獲外部例程中的錯誤。

• 必須解除分配外部例程中分配的任何內存。

• 在把數据傳送到外部例程時，一定要把Call對象輸入端配置成例程要求的數据類型和形狀。

• 系統I/O資源可能會被鎖定，因此外部例程應能夠處理這類事件。

• 如果外部例程接受數組，那么對其將要檢查的數据類型必須有一個有效的指針。此外，例程必須檢查數組的長度。如果例程改變了長度，那么您必需把新的長度傳回VEE程序。

• Compiled Function必須使用return()語句作為最后語句，而不是exit()。如果退出Compiled Function，那么也將退出VEE，因為Compiled Function被鏈接到VEE上。

• 如果覆蓋數組的邊界，那么結果取決于使用的語言。在執行邊界檢查的Pascal中，將發生運行時錯誤，停止VEE。在沒有邊界檢查的C語言中，結果不可預測，但可能會導致間歇性數据損壞或導致VEE崩潰。

使用Compiled Function指導準則

在VEE程序中使用Compiled Function時，遵循下述指導準則︰

• 象調用UserFunction一樣調用和配置Compiled Function。可以使用Select Function從Call對象菜單中選擇希望的函數，也可以輸入名稱。不管是哪种情況，提供的VEE都會識別函數，并自動配置 Call Function對象的輸入端和輸出端。必要的信息由定義文件提供。(如果已經導入庫，VEE將識別它。)

• 在對象菜單中選擇Configure Pinout，重新配置Call輸入端和輸出端。不管是哪种方法，VEE都為Call對象配置函數要求的輸入端及函數据返回值使用的Ret Value輸出端。此外，將有一個輸出端与參考傳遞的每個輸入相對應。

• 按名稱從Formula對象的表達式中或從運行時求解的其它表達式中調用Compiled Function。例如，通過在To File處理中在表達式內包括其名稱，可以調用Compiled Function。

備注

從表達式內部只能獲得Compiled Function的返回值 (Call對象中的Ret Value)。如果想獲得函數中返回的其它參數，那么必須使用Call對象。

• 在Device菜單中使用Delete Library對象，刪除Compiled Function庫。通過使用Import Library, Call和Delete Library對象，在程序完成調用時導入和刪除函數庫，可以縮短程序加載時間，節約內存。

另請參閱

導入和調用Compiled Function，Definition文件， 構建 C 函數，Execute Program對象与Complied Function比較


Definition文件

Call對象或Formula表達式決定著它應根据Definition文件的內容傳送到函數中的數据類型。Definition文件定義了函數返回的數据類型、函數名稱和函數接受的自變量。數据的形式如下︰

<return type> <function name> (<type> <paramname>, <type> <paramname>, ...) ;

其中︰

• <return type>可以是︰byte, int, short, long, int64, float, double, char*, VEE_BOOL,或 void。

• <function name>可以是一個由一個字母字符后面跟著字符數字字符的字符串，最長總共512個字符。

• <type>可以是︰byte, int, short, long, int64, float, double, VEE_BOOL, byte*, int*, char*, short*, long*, int64*, float*, double*, char**, VEE_BOOL*, 或 void.

• <paramname>可以是一個由一個字母字符后面跟著字符數字字符的字符串，最長總共512個字符。參數名稱是可選的，但推荐使用參數名稱。如果參考傳送一個參數，那么參數名稱前必須有間接符號(*)。

有效的返回類型是︰

• 字符串 (char*, 与VEE Text數据類型對應)

• 整數 (byte, short, int, long, int64, VEE_BOOL, 与VEE Uint8, Int16, Int32,Int64, 和 Boolean 數据類型對應)

• 單和雙精度浮點實數(float和double与VEE Real32和Real64數据類型對應)

如果在參數名稱前加上*，為某個參數指定"pass by reference"，那么VEE將把信息地址傳送到函數中。如果沒有*，為某個參數指定"pass by value"，那么VEE將把值(而不是值的地址)复制到函數中。如果外部例程改變數据，以傳回VEE，那么您需要參考傳送數据。必須參考傳送所有數組。

參考傳送到Compiled Function的任何參數都作為Call對象上的輸出端提供。輸出端將是函數返回值的Ret Value，外加參考傳送的每個輸入參數的輸出。

VEE在堆棧上推送144個字節。這允許把最多36個參數參考傳送到Compiled Function。可以按值傳送最多36個長整數參數或18個雙精度浮點參數。

VEE允許在Definition文件中同時使用"enclosed"注釋和"to-end-of-line"注釋。

"Enclosed"(封閉)注釋使用分隔符序列/*comments*/，其中/*和*/分別表示注釋的開頭和結尾。

"To-end-of-line"(行尾)注釋使用分隔字符//，表明運行到當前行尾的注釋開頭。


Execute Program對象与Complied Function比較

在決定是使用Execute Program對象還是使用Complied Function把匯編的語言程序与VEE集成起來時，考慮下述信息。

Execute Program對象

Execute Program對象的特點如下︰

• 使用比較簡便

• 啟動時間比較長

• 地址空間受到保護

• 可以選擇同步執行或异步執行

• 异步事件服務

• 比較安全 (如果調用的程序崩潰，您會得到一條錯誤信息)

• 更适合連續數据采集

Complied Function

Complied Function采用Import Library和Call對象， 其特點如下︰

• 啟動時間短

• 通過傳遞与VEE共享的堆棧和存儲空間實現通信

同步執行

• 不會阻塞或導致信號和异常條件(如GPF信息)

• 要求正文語言匯編程序

• 使用比較复雜。使用風險較多。(出界數組錯誤或覆蓋內存會導致VEE崩潰。)


Sequencer

执行一系列序列事务的对象，每个序列事务可以调用一个UserFunction、Compiled Function或Remote Function。

用途

通过指定一系列序列事务，使用Sequencer控制调用一系列UserFunction、Compiled Function、Remote Function或任何其它VEE函数的顺序。一般来说，Sequencer用来执行一系列测试。

Sequencer包含着序列事务的列表。每个事务对VEE表达式求解，其中可能包含UserFunction、Compiled Function或Remote Function调用。在对VEE表达式求解后，事务比较该表达式返回的值与测试规范。根据是否通过测试，事务会对不同表达式求解，选择要执行的下一个事务。事务可以选择性地把结果记录到Log输出端，或记录在Properties窗口Logging类别上指定的UserFunction、Compiled Function或Remote Function。

在序列完成时，可以使用Sequencer的Return输出端返回结果。在默认情况下，Return输出端的值为零，但Next Operation是Then Return的事务将把Return输出端设置为指定值。

定序器的Log输出端包含一个记录，对已经启动登录的每个事务包含一条登录记录。如需更多信息，参阅 "Logging栏"的"Properties"。

Open View参数

open view显示了要执行的事务列表。

对话框信息

可以改变各个事务的参数。只需双击一个事务，就可以显示该事务的Sequence Transaction对话框。提供的参数如下：

Sequence Mode:

TEST - 执行指定表达式，针对规范测试结果。(如果表达式调用UserFunction、汇编函数或Remote Function，那么将使用相应的UserObject最上面输出端上的结果。)

EXEC - 执行指定表达式，针对规范执行通过/未通过测试。在 EXEC 事务上从来不执行记录。

Transaction Name - 事务唯一的名称，不能与任何UserFunction相同。必须是有效的VEE变量名(必须以字母开头，但可以包括字母和数字)。这一事务或其它事务中的表达式可以参考这个名称，它将包含最新执行的这一事务的登录记录。

Enable Condition Type:

ENABLED - Sequencer无条件地执行这一事务。

DISABLED - Sequencer从不执行这一事务。

ENABLED IF: - 只有在给定表达式不为零时，Sequencer才执行这一事务。

DISABLED IF: - 如果给定表达式不为零，Sequencer不执行这一事务。

SPEC NOMINAL: - 测试结果的标称(预计)值。在计算RANGE或LIMIT规范测试时不使用这个值，但这个值可以包括在登录记录中。

Spec Type - 所有规范测试的完成方式与Comparator对象相同。因此，测试结果可以是一个波形，测试极限可以是另一个波形或Coord类型的数组。规范测试将自动执行必要的插补，确定每个数据点是落在规范内还是落在规范外。此外，所有测试都使用"约等于"算法，检查至少6个有效位是否相等或不相等。如需更多信息，请参阅Comparator对象说明。选项包括：

RANGE: - 指定应用的上下限和比较运算符。

LIMIT: - 指定应用的单个极限和比较运算符。可以用来测试上限或下限或是否完全匹配。HighLimit记录字段将登录极限值。

TOLERANCE: - 指定与Nominal值的加减容限。允许容限值为零。在容限应用到Nominal值以后，HighLimit和LowLimit登录记录字段包含规范范围。

%TOLERANCE: - 指定与Nominal值的加减百分比容限。允许容限值为零。在容限应用到Nominal值以后，HighLimit和LowLimit登录记录字段包含规范范围。

FUNCTION - 指定测试的一个VEE表达式。表达式可能只是UserFunction、Compiled Function或Remote Function调用，也可以是由输入端名称 、UserFunctions、Compiled Functions、Remote Functions、变量和这个Sequencer以前事务中的测试记录组成的更大的表达式。如果这是测试事务，那么可以针对规范测试来自这个字段的单一结果。UserFunction或Remote Function调用结果是相应UserObject最上面的输出端的值，如果不存在输出端则为空。

Logging Mode:

LOGGING ENABLED - 把这个事务的字段添加到Log记录输出端(如有)。如果已经在 Properties窗口的Logging栏中指定了"Log Each Transaction To:"程序，那么在这个事务结束后将立即调用登录程序。

LOGGING DISABLED - 将不为这个事务生成登录记录，将不调用"Log Each Transaction To:"程序。(参阅"Properties"下的"Logging tab"，了解选项和更多信息。)

Pass Operation:

IF PASS - 如果通过规范测试(测试值位于极限范围内)，那么将执行指定的"then"操作。

IF PASS CALL: - 如果通过规范测试(测试值位于极限范围内)，那么将对指定的VEE表达式求解，并执行指定的"then"操作，VEE表达式中可能包括UserFunction、Compiled Function或Remote Function调用。(忽略IF PASS CALL返回的值。)

Fail Operation:

IF FAIL - 如果未通过规范测试(测试值位于极限范围外)，那么将执行指定的 "then"操作。

IF FAIL CALL: - 如果未通过规范测试(测试值位于极限范围外)，那么将对指定VEE表达式求解，并执行指定的"then"操作，VEE表达式中可能包括UserFunction、Compiled Function或Remote Function调用。

Next Operation: (适用于EXEC事务，或适用于TEST事务中的"Pass"或"Fail"操作。)

THEN CONTINUE - 转到Sequencer列表中的下一个事务。(这是默认操作。)

THEN RETURN - 退出执行这个Sequencer中的事务，把指定表达式的值(可以调用一个函数)放在Sequencer的Return输出端上。然后Sequencer对象将启动输出端，程序内部的执行流程将继续正常进行。

THEN GOTO - 转到这个Sequencer中带有指定事务名称的事务。

THEN REPEAT - 再次执行这个事务，一直重复到指定次数。如果在最低重复次数后仍存在Pass/Fail条件，那么继续下一个事务。

THEN ERROR - 使用给定错误号生成错误条件，停止执行Sequencer。可以使用这个Sequencer上的Error输出端或在任何密封的UserObject上捕获错误。

THEN EVALUATE - 对给定表达式求解，这个表达式可能会调用UserFunction、Compiled Function或Remote Function；使用字符串结果确定下一个操作。表达式的有效字符串结果是：

CONTINUE
RETURN <expr>
GOTO <name>
REPEAT <expr>
ERROR <expr>

其中：<expr>是任何有效的VEE表达式，<name>是这个Sequencer中的事务名称。在UserFunction(可能有用户交互)需要确定Sequencer下一步应执行哪项操作时，可以使用这一操作。

DESCRIPTION - 这个事务的"Comment"字段。在这个字段中输入的文本将显示在Sequencer open view中事务缩写文本的末尾。

对象菜单

Edit Trans - 编辑当前高亮度显示的事务。

Add Trans - 在列表末尾添加一个事务。

Insert Trans - 在目前高亮度显示的事务前插入一个事务。

Cut Trans - 剪切(删除)目前高亮度显示的事务，但把它保存在事务"剪切和粘贴"缓冲器中。

Copy Trans - 把目前高亮度显示的事务复制到事务"剪切和粘贴"缓冲器中。

Paste Trans - 粘贴以前"剪切"或"复制"的事务。

Delete Trans - 删除列表中高亮度显示的事务。

Move Trans Up - 上移高亮度显示的事务。

Move Trans Down - 下移高亮度显示的事务。

Print Trans - 打印描述当前高亮度显示的事务的详细对话框。

属性

LogRecordField: 选择将在登录记录中为每个事务生成哪些字段。(Log输出端包含记录的记录 -- 在启用登录时每项事务一条登录记录。在每项事务登录操作中，可能会有下面指定的选定字段。) 名称(没有空格)是登录记录的字段名。选项包括：

 LogName - 识别这个事务的唯一字符串(不是程序名称)。

 LogResult - 对测试程序求解返回的值。

 LogNominal - 标称测试值。

 LogHighLimit - 规范测试中使用的上限。为Tolerance和%Tolerance规范提供实际极限值，而不是偏置。

 LogLowLimit - 规范测试中使用的下限。为Tolerance和%Tolerance规范提供实际极限值，而不是偏置。

 LogPassed - 一个Int32值，"Pass"的值为"1"，"Fail"的值为 "0"。

 LogTimeStamp ? 一个实数值，包含测试结束的周几、日期和时间。

 LogDescription - Transaction中包含描述"comment"字段的Text值。

LoggingControl Category:

LogToOutputOnly - 在启动Logging Enabled的每个事务的Log输出端上的记录中，将存在一条登录记录。如果在一个Sequencer执行过程中，事务执行了一次以上，那么将只在Log输出端的记录上存在该事务最新的登录记录。如果在Sequencer执行过程中没有执行事务，那么该事务的登录记录将对除Name和Description字段及Pass字段以外的每个字段包含"0" (Real64)值，Name和Description字段将包含空字符串，Pass将包含一个Int32值。

LogToFunction - 指定在启动Logging Enabled的每个事务后面将调用的UserFunction、Compiled Function或Remote Function表达式。如果想把当前事务的登录记录传送到UserFunction、Compiled Function或Remote Function，可以使用预留的变量名"ThisTest"。Log输出端将以与"LogToOutputOnly"模式相同的方式继续操作。

备注

可以添加一个ExecTrans数据输入端。ExecTrans数据输入只使用数据输入上的Text标量或1D数组提供的顺序，执行指定名称的事务。高亮度显示条将移动到目前正在执行的事务上。将照常对IF Pass或IF Fail表达式求解，但Then字段的结果对执行的下一个事务没有影响。

所有字段表达式(如ENABLED IF, FUNCTION或规范极限)可能包含输入端名称、UserFunction调用、Compiled Function调用、Remote Function调用、VEE数学函数或以前运行的事务的记录名称。在启动LOGGING ENABLED的测试事务中，预留的变量thisTest将包含已经计算的登录字段的记录。例如，为使用来自test4的测试值(其已经启动登录)，可以在任何表达式中使用名称test4.result。或为了在任何表达式中使用当前名称，可以使用thisTest.name。或Enabled If表达式可以是random()<0.25，导致测试只执行25%的时间。

注意，在"ENABLED IF"表达式中不应使用"thisTest"变量，因为只有在事务确定是否启动时才能正确创建这个变量。因此，在"ENABLED IF"表达式中使用"thisTest"将出现thisTest尚未创建的错误信息，或thisTest可能会存在上一个事务中的"过时"数据。

快捷方式

为迅速插入一个事务，把光标放在事务上。按Insert键在放置光标的事务上插入一个事务。

为迅速删除("杀掉")一个事务，把光标放在该事务上，按Delete键。

为从"kill"缓冲器中粘贴一个事务，按CTRL+V。

为迅速移到下一个事务或上一个事务，分别按Up Arrow key或Down Arrow键。

位置

Device [image] Sequencer

另请参阅

Build Record, Call, Comparator, Formula, Raise Error, UnBuild Record, UserObject, Object Menu和

编辑事务


Sequencer對象

Sequencer對象位于Device菜單中。為有效使用Sequencer對象，應了解几個方面的內容，包括︰

• Instrument I/O Operations (參閱Help [image] Contents and Index [image] Tell me about... Instrument Control Fundamentals)

• Transactions (參閱Help [image] Contents and Index [image] Tell me about... I/O Transactions)

• UserObjects (參閱Help [image] Contents and Index [image] Tell me about... Propagation [image] Propagation in UserObjects)

• Records和 DataSets (參閱Help [image] Contents and Index [image] How Do I... Work with Data [image] Working with Records, 及Working with DataSets)

• UserFunctions (參閱Help [image] Contents and Index [image] How Do I... Create Custom Objects and Functions [image] Creating and Using UserFunctions)

什么是Sequencer對象?

Sequencer對象控制著一系列測試的順序。其完成方式是先執行一項測試，然后把每項測試的結果与規范進行對比，然后使用對比結果确定下一項操作。

Sequencer對象執行一系列預先确定的序列事務。每項事務對VEE表達式求解，其中可能包含UserFunctions, Compiled Functions, Remote Functions或其它VEE函數調用。事務把該表達式返回的值与現有的測試規范進行對比。根据是否通過測試，事務對不同的表達式求解，選擇要執行的下一項事務。在點擊事務出現的Sequence Transaction中，可以指定事務行為。

事務可以把其結果登錄到Log輸出端或登錄到UserFunction、Compiled Function或Remote Function。在發生時可以讀取結果，把結果采集在Log Record中，或同時進行這兩項操作。登錄操作在Logging一欄上的Sequencer Properties對話框中指定。

登錄測試結果

對某些情況，必須注意把Sequencer日志記錄采集到記錄數組中。正如使用記錄中所有解釋的那樣，為構建由記錄組成的數組，某個字段的所有數組要素必須擁有相同的類型、形狀和大小。對記錄的記錄，如Sequencer的Log輸出端生成的記錄的記錄，子記錄的每個字段的類型、形狀和大小必須匹配。

例如，假設要采集多次執行Sequencer的登錄結果，這可以使用Collector構建數組完成，也可以通過把結果發送到DataSet完成。不管是哪种情況，如果某個事務的任何登錄結果在不同的Sequencer執行之間改變類型、形狀或大小，那么會發生錯誤。Collector或To DataSet對象會生成錯誤，因為不能構建記錄數組。

如果沒有在每次執行Sequencer時執行事務，如指定的ENABLED IF條件，那么很容易會發生這种情況。如果事務沒有執行，那么仍會生成日志記錄，但NAME和DESCRIPTION字段是空字符串，所有其它字段包含Real標量值零。

如果在之后執行Sequencer時執行相同的事務，登錄的結果不是Real標量，那么會發生錯誤。(在這种情況下，您可能會考慮使用To File，而不是使用To DataSet，把每條登錄的記錄輸出寫入采用容器格式的文件中。)

如果測試返回不同大小的數組，如失敗的點數組成的數組，也可能會發生錯誤。在這种情況下，您可能想設計測試，添充數組，以便總是返回相同大小的數組。


可以調用的VEE ActiveX Automation Server

在Windows 2000和Windows XP中的VEE上，可以把VEE對象集成到使用標準語言(如MS Visual Basic或C)編寫的其它商用測試系統和專有測試系統中。可以調用的VEE ActiveX自動化服務器封裝VEE UserFunction，以集成到自動化應用中，如MS Excel和MS Visual Basic。可以調用的VEE ActiveX自動化服務器實現了一個獨立于語言的自動化接口。支持調用自動化服務器的任何應用都可以使用這個接口。

備注

VEE可以使用ActiveX自動化和控件，從VEE控制其它應用。可以調用的VEE ActiveX自動化服務器允許其它應用(如MS Visual Basic)控制VEE。

可以調用的VEE ActiveX自動化服務器通過屬性和方法与其客戶端通信。從中調用可以調用的VEE ActiveX自動化服務器的環境，如Visual Basic或C，決定著調用方式。可以調用的VEE ActiveX自動化服務器在調用的環境內部提供了全面的聯机幫助。

備注

可以調用的VEE ActiveX自動化服務器代替VEE 5.0版標配的可以調用的VEE ActiveX控件。

關于可以調用的VEE

在某些情況下，您可能想用另一种語言構建應用程序，同時仍使用VEE UserFunctions。正如Remote Functions允許一個VEE訪問另一個VEE的UserFunction一樣，可以調用的VEE允許從C程序或可以訪問C例程的任何語言中調汁煲erFunction。

以前版本的VEE提供了兩种方式，從其它開發環境中執行VEE代碼︰VEE RPC API和可以調用的VEE ActiveX控件。VEE 6用可以調用的VEE Automation Server代替了可以調用的VEE ActiveX控件，可以簡便地從Visual Basic之類的編程環境中訪問VEE代碼。

備注

為運行UserFunction，必須能夠在服務器系統上訪問VEE，其不能自行執行。UserFunction必須整理到VEE可以加載和執行的庫中。

另請參閱

使用Agilent VEE進行Web監測, 為遠程用戶提供Agilent VEE數据, Web Server對話框, 遠程用戶怎樣存取系統上的Agilent VEE,顯示Agilent VEE Web Server頁面，實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習, 限制存取通過Web查看的程序


使用VEE RPC API

VEE提供了支持VEE RPC API所需的工具︰

  • 一個名為libvapi.lib的C庫位于VEE安裝目錄的lib子目錄下。這個庫鏈接到C程序上。

    這個庫支持兩個應用程序接口(APIs)。其中一個API (VEE RPC)設置和控制C程序和VEE之間的遠程程序調用(RPC)。API中的函數原型    位于veeRPC.h中，執行下述操作︰

  • 加載和卸載VEE服務器。

  • 加載和卸載VEE庫。

  • 列出VEE庫中的UserFunction。

  • 從UserFunction中調用和接收數据。

  • 執行相關狀態和事務管理。

第二個API (VEE DATA)執行C數据類型和VEE數据類型之間的轉換。這個API中的函數原型位于veeData.h中。

備注

在使用Borland匯編程序時，libvapi.lib庫不能鏈接到程序上。

  • VEE Service Manager, veesm.exe与其它VEE可執行程序一起位于VEE安裝目錄下。它使用UserFunction處理目錄VEE運行，允許遠程客戶端作為服務器調用VEE。

    CallableVEE\RPC_API目錄下的范例程序演示了怎樣使用    VEE RPC API，其名字為callVEE.c和callVEE.exe。

關于 VEE RPC API

VEE RPC API 負責處理 C 客戶端程序和 VEE 服務器之間的建立、維護和關閉連接的操作。

VEE RPC API 在操作中使用下列三种句柄之一︰

VRPC_SERVICE; // VEE 服務器句柄。

VRPC_LIBRARY; // VEE UserFunction 庫句柄。

VRPC_FUNCTION; // VEE UserFunction句柄。

另請參閱

啟動和停止服務器，加載和卸載庫, 選擇UserFunctions, 調汁煲erFunctions, 其它函數, VEE RPC API錯誤代碼。


啟動和停止服務器

最基本的API函數有兩個，即啟動和停止VEE服務器。

為加載VEE服務器，使用︰

VRPC_SERVICE vrpcCreateService( char *hostName, char *display, char *geometry, double aTimeoutInSeconds,unsigned long flags );

這一函數在hostName提供的主机上啟動VEE服務器。hostName可以采取文本形式

(例如, mycomputer@lvld.agilent.com)或數字形式(15.11.55.105)。

這一函數返回一個服務器句柄。如果發生錯誤，那么會返回一個NULL (實際上是零)。然后可以使用下一節介紹的veeGetErrorNumber()和veeGetErrorString()函數獲得精确的錯誤信息。

參數 display 使用文本形式的网絡地址(babylon:0.0)指定遠程顯示畫面。

參數 geometry 指定VEE窗口大小和位置。例如，800x500+0+0把一個800x500 VEE窗口放在顯示屏的左下角。

參數 aTimeoutInSeconds 給出啟動服務時等待的秒數。這個值用于會話中以后的所有調用，除非vrpcSetTimeout()改變這個值。

在正常情況下，不使用標記參數。但是，可以把它的值設置為VEERPC_CREATE_NEW，在服務器上啟動新的VEE拷貝，而不是使用已經啟動的VEE拷貝。

為停止VEE服務器，使用︰

VRPC_SERVICE vrpcDeleteService( VRPC_SERVICE aService );

唯一的參數是在最初啟動服務器時獲得的服務器句柄。如果一切正常，那么返回一個NULL指針，否則返回一個非NULL指針。

另請參閱

使用VEE RPC API，加載和卸載庫, 選擇UserFunctions, 調汁煲erFunctions, 其它函數, VEE RPC API錯誤代碼。


加載和卸載庫

一旦啟動了服務器，您需要把庫加載到VEE的遠程拷貝中。這使用下面的語句完成︰

VRPC_LIBRARY vrpcLoadLibrary( VRPC_SERVICE aService, char *LibraryPath );

這個函數接受服務器句柄和LibraryPath指定的UserFunction庫的路徑名作為參數，返回一個庫句柄。如果失敗，您會得到一個NULL。

一旦加載，可以使用下面的語句為庫指定正常執行模式或調試執行模式︰

void vrpcSetExecutionMode( VRPC_LIBRARY aLibrary, unsigned long executionMode );

在這個函數中，您為庫指定一個句柄和一個executionMode標記。執行模式可以設置成VRPC_DEBUG_EXECUTION (通過目標系統上的UserFunction可以指定洙步執行)；其默認的模式是VRPC_NORMAL_EXECUTION。

可以以類似方式使用下述語句卸載庫︰

VRPC_LIBRARY vrpcUnLoadLibrary( VRPC_LIBRARY aLibrary );

唯一的參數是庫句柄。

另請參閱

使用VEE RPC API，啟動和停止服務器，選擇UserFunctions, 調汁煲erFunctions, 其它函數,

VEE RPC API錯誤代碼。


選擇UserFunctions

在連接到服務器上并加載一個庫之后，您需要獲得UserFunction的一個句柄。

使用下述語句獲得一個函數句柄︰

VRPC_FUNCTION vrpcFindFunction( VRPC_LIBRARY aLibrary, char *aFunctionName );

其輸入參數為一個庫句柄和一個作為UserFunction名稱的字符串。返回一個函數句柄，或在發生錯誤時返回一個NULL。

為獲得函數相關信息，使用︰

struct VRPC_FUNC_INFO* vrpcFunctionInfo( VRPC_FUNCTION aFunction );

這會返回一個數据結構，或在發生錯誤時返回一個NULL。數据結構采取下面的形式︰

typedef struct VRPC_FUNC_INFO

{

char *functionName; // Name of function.

long numArguments; // # of input pins on function.

enum veeType *argumentTypes; // List of argument types.

veeShape *argumentShapes; // List of argument shapes.

long numResults; // # of output pins on function.

enum veeType *resultTypes; // List of output types.

veeShape *resultShapes; // List of output shapes.

};

如果得到一個NULL，那么它會占用進程空間中的內存，如果想去掉NULL，可以使用︰

struct VRPC_FUNC_INFO* vrpcFreeFunctionInfo(struct VRPC_FUNC_INFO *funcinfo);

可以使用下面的語句确定庫中有哪些函數︰

char** vrpcGetFunctionNames( VRPC_LIBRARY aLibrary, long *numberOfFunctions );

其輸入參數為庫句柄和庫中的函數數量。它返回一個指針，指向用空字符串結束的字符串數組，直接給出函數名稱。如果發生錯誤，會返回一個NULL指針。字符串數組存在于進程空間中。

另請參閱

使用VEE RPC API，啟動和停止服務器， 加載和卸載庫, 調汁煲erFunctions, 其它函數, VEE RPC API錯誤代碼。


調汁煲erFunctions

使用下面的語句調用和接收一個函數︰

VDC* vrpcCallAndReceive( VRPC_FUNCTION aFunction, VDC *arguments );

這個函數將阻塞直到函數（aFunction）結束或發生超時。其輸入參數為一個函數句柄和一個VEE Data Containers (VDCs)的數組。處理VDC是VEE DATA API的功能，具体可以參閱關于VEE DATA API。

在阻塞模式下調用一個UserFunction，可以使用︰

long vrpcCall( VRPC_FUNCTION aFunction, VDC *arguments );

這個函數不會"阻塞"。它立即返回，而不管其是否工作。如果所有都正常，那么它返回0，否則會返回一個錯誤代碼。

由于大多數UserFunction會在某個時候返回，因此您如想得到一個值，可以使用；

VDC* vrpcReceive( VRPC_FUNCTION aFunction, unsigned long waitMode );

其輸入參數是一個函數句柄和一個waitMode標記。 該標記其可以有下面三個值之一︰

• VRPC_NO_WAITING 調用立即返回，帶有結果或不帶結果。

• VRPC_WAIT_SLEEPING 一直等到數据超時(服務器睡眠)。

• VRPC_WAIT_SPINNING 一直等到數据超時(服務器忙)。

如果函數失敗，那么會返回NULL。

另請參閱

使用VEE RPC API，啟動和停止服務器， 加載和卸載庫, 選擇UserFunctions, 其它函數, VEE RPC API錯誤代碼。


其它函數

這一節列出了VEE RPC API中的其它輔助函數︰

  • 這個函數允許改變超時。指定一個服務器句柄和超時秒數。如果一切正常，那么返回0，否則返回一個錯誤代碼。

long vrpcSetTimeout( VRPC_SERVICE aService, double aTimeoutInSeconds );

  • 這個函數允許設置默認的接收數据的C客戶端行為︰

long vrpcSetBehavior( VRPC_SERVICE aService, unsigned long flags );

其輸入參數為一個服務器句柄和標記，返回0或一個錯誤代碼。標記如下︰

VRPC_WAIT_SLEEPING 一直等待數据直到超時(客戶睡眠)。
VRPC_WAIT_SPINNING 一直等待數据直到超時(客戶端忙)。

還可以在標記VRPC_BUFFER_EXPAND中進行OR運算，指定C客戶端分配和保留更大的緩沖器，以适應服務器返回的不斷提高的數据尺寸。

  • 可以使用下面的語句查詢遠程veesm修訂版本號︰

long vrpcGetServerVersion( VRPC_SERVICE aService );

其接收一個服務器句柄作為參數，返回一個修訂代碼或0 (如果遇到錯誤)。

另請參閱

使用VEE RPC API，啟動和停止服務器， 加載和卸載庫, 選擇UserFunctions, 調汁煲erFunctions,

VEE RPC API錯誤代碼。


VEE RPC API錯誤代碼

在不能建立到VEE服務器的連接時，返回下面的錯誤代碼︰

錯誤代碼 | 含義
850: eUnknownHost | 不能解析主机名稱或IP地址。
851: eNoServiceManager | 在服務器主机上找不到veesm。
861: eServiceManagerTO | 服務管理器超時。
863: eServiceNotFound | 不能找到VEE服務。
864: eServiceNotStarted | 不能啟動VEE服務。
866: eConnectRefused | 拒絕到veesm或inetd的連接。

下面是到VEE服務器的連接建立后(連接已經終止)發生的重大錯誤︰

錯誤代碼 | 含義
852: eHostDown | VEE服務器主机癱瘓。
853: eConnectTimedOut | 連接超時。
855: eConnectBroken | 連接中斷。

下面的錯誤反映了業務內部的非重大狀態︰

錯誤代碼 | 含義
865: eSomeInternalError | 發生非重大內部錯誤。
869: eVeeServiceError | UserFunction內部發生錯誤。
870: eWouldBlock | 對非阻塞RPC返回這個錯誤代碼。
871: eDebugTermination | 用戶在調試會話過程中按了停止。

RPC函數調用返回下面的錯誤︰

錯誤代碼 | 含義
851: eInvalidArgument | 有一個無效的自變量。

另請參閱

使用VEE RPC API，啟動和停止服務器， 加載和卸載庫, 選擇UserFunctions, 調汁煲erFunctions, 其它函數。


關于VEE DATA API

對UserFunction執行Call或Receive要求處理VEE Data Container (VDC)格式的數据，這是VEE進行內部操作要求的數据結構集。從C程序与VEE通信要求能夠在VDC和傳統C數据類型之間轉換。VEE DATA API提供了這种能力(及其它功能)。

另請參閱

數据類型、形狀和映射， 處理標量數据， 處理數組數据， Enum類型， 映射函數， 其它函數。


數据類型、形狀和映射

頭文件 veeData.h 中列出了基礎的VDC類型，具体如下︰

enum veeType

{

VEE_TYPE_ANY=0, // The default without constraints.

VEE_NOT_DEFINED1, // Leave space.

VEE_LONG, // 32-bit signed integer (no 16-bit INTs in VEE).

VEE_NOT_DEFINED2, // Leave space.

VEE_DOUBLE, // IEEE 754 64-bit floating-point number.

VEE_COMPLEX, // Complex number: 2 doubles in rectangular form.

VEE_PCOMPLEX, // Complex number: 2 doubles in polar form.

VEE_STRING, // 8-bit ASCII null-terminated string.

VEE_NIL, // Empty container returned by function call.

VEE_NOT_DEFINED3, // Leave space.

VEE_COORD, // 2 or more doubles give XY or XYZ or ... data.

VEE_ENUM, // An ordered list of strings.

VEE_RECORD, // VEE record-structures data.

VEE_NOT_DEFINED4, // Leave space.

VEE_WAVEFORM, // A 1D array of VEE_DOUBLE with a time mapping.

VEE_SPECTRUM // A 1D array of VEE_PCOMPLEX with a time mapping.

};

為与 VEE 數据類型進行轉換，veeData.h 文件定義了 C 數据類型︰

typedef short int16;

typedef long int32;

typedef __int64 int64;

typedef long VEE_BOOL;

typedef struct {double rval, ival;} veeComplex;

typedef struct {double mag, phase;} veePComplex;

typedef struct {double xval, yval;} vee2DCoord;

typedef struct {double xval, yval, zval;} vee3DCoord;

typedef void veeDataContainer;

typedef veeDataContainer* VDC;

數据類型還可以有指定數量的維度或numDims，其采用下面的方式提供︰

enum veeShape

{

VEE_SHAPE_SCALAR, // A single data element.

VEE_SHAPE_ARRAY1D, // A one-dimensional array.

VEE_SHAPE_ARRAY2D, // A two-dimensional array.

VEE_SHAPE_ARRAY3D, // A three-dimensional array.

VEE_SHAPE_ARRAY, // An array with from 4 to 10 dimensions.

VEE_SHAPE_ANY // Placeholder for undefined shape.

};

數組可以被"映射"。正常情況下，它們不能被映射，但 VEE_WAVEFORM 和 VEE_SPECTRUM 數据類型是有映射的類型，其中數組元素与時間間隔對應。映射關系由下面的語句給出︰

enum veeMapType

{

VEE_MAPPING_NONE, // No mapping.

VEE_MAPPING_LINEAR, // Linear mapping.

VEE_MAPPING_LOG // Log mapping.

};

一般來說，不需要指定映射。

另請參閱

關于VEE DATA API，處理標量數据， 處理數組數据，Enum類型， 映射函數， 其它函數。


處理標量數据

下述函數可以用于從 一個C數据創建 一個 VDC 標量:

VDC vdcCreateBooleanScalar(VEE_BOOL aBool);

VDC vdcCreateLongScalar( int32 aLong );

VDC vdcCreateLongLongScalar(int64 aLong);

VDC vdcCreateDoubleScalar( double aReal );

VDC vdcCreateStringScalar( char *aString );

VDC vdcCreateComplexScalar( double realPart, double imaginaryPart );

VDC vdcCreatePComplexScalar( double magnitude, double phase );

VDC vdcCreate2DCoordScalar( double xval, double yval );

VDC vdcCreate3DCoordScalar( double xval, double yval, double zval );

VDC vdcCreateCoordScalar( int16 aFieldCount, double *values );

所用這些函數返回一個指向 VDC 的指針, 失敗時返回 NULL。 VEE_WAVEFORM 和 VEE_SPECTRUM 不會有標量因為它們總是被定義為一維數組。

可以使用下述例程改變 VDC 中的值︰

int32 vdcSetBoolScalar(VDC aVD, VEE_BOOL aBool);

int32 vdcSetLongScalar( VDC aVD, int32 aLong );

int32 vdcSetLongLongScalar(VDC aVD, int64 aLongLong);

int32 vdcSetDoubleScalar( VDC aVD, double aReal );

int32 vdcSetStringScalar( VDC aVD, char *aStr );

int32 vdcSetComplexScalar( VDC aVD, double realPart, double imaginaryPart );

int32 vdcSetPComplexScalar( VDC aVD, double magnitude, double phase );

int32 vdcSet2DCoordScalar( VDC aVD, double xval, double yval );

int32 vdcSet3DCoordScalar( VDC aVD, double xval, double yval, double zval );

int32 vdcSetCoordScalar( VDC aVD, int16 aFieldCount, double* values );

這些函數返回0或一個錯誤代碼。

當創建了一個 VDC 標量或從一個函數返回了一個 VDC 標量時，可以用下述例程將其轉換成一個 C 數据:

int32 vdcSetBoolScalar(VDC aVD, VEE_BOOL aBool);

int32 vdcGetLongScalarValue( VDC aVD, int32 *aLong );

int32 vdcSetLongLongScalar(VDC aVD, int64 aLongLong);

int32 vdcGetDoubleScalarValue( VDC aVD, double *aReal );

char* vdcGetStringScalarValue( VDC aVD );

int32 vdcGetComplexScalarValue( VDC aVD, veeComplex *aComplex );

int32 vdcGetPComplexScalarValue( VDC aVD, veePComplex *aPComplex );

int32 vdcGet2DCoordScalarValue( VDC aVD, vee2DCoord *aCoord );

int32 vdcGet3DCoordScalarValue( VDC aVD, vee3DCoord *aCoord );

double* vdcGetCoordScalarValue( VDC aVD, int16 *aFieldCount );

通常，這些函數從第一個參數 aVDC 中得到數据， 然后將它放到第二個參數中。這里，第二個參數是一個 C 的變量，它可以是在這里定義的任何一种類型。沒有錯誤時，這些函數返回0，否則返回一個錯誤代碼。

但是其中有兩個例外，一個是 vdcGetStringScalarValue() 函數，它直接返回一個字符串（在出錯時返回NULL串)。 另一個是 vdcGetCoordScalarValue() 函數，它返回一個指針，指向一個 N 維的 Coord 數据數組。 (N作為參數返回).

下述例程可以用于查詢或設置坐標維數︰

int16 vdcNumCoordDims( VDC aVD );

int32 vdcCoordSetNumCoordDims( VDC, int16 );

另請參閱

關于VEE DATA API， 數据類型、形狀和映射，處理數組數据， Enum類型， 映射函數， 其它函數。


處理數組數据

下述函數用于創建具有 VEE 數据類型的 VDC 數組。你提供的數值將被复制到 VDC 中。不使用調用方的內存。 發生錯誤是返回一個空指針。下述函數用于創建 VDC 數組:

  • 這個函數返回一個 VEE_BOOL 類型的 VDC 數組。 這個數組大小由參數 numPts 指定。參數 values 指向的數組的大小必須与參數 numPts 指定的大小相同。參數類型 VEE_BOOL 在 veeData.h 中定義為 long。

VDC vdcCreateBoolean1DArray(int32 numpts, VEE_BOOL *values);

  • 這個函數返回一個 VEE_LONG 類型的 VDC 數組。 這個數組的大小由參數 numPts 指定。參數 values 指向的數組的大小必須与參數 numPts 指定的大小相同。參數類型 int32 在 veeData.h 中定義為 long。

VDC vdcCreateLong1DArray( int32 numPts, int32 *values );

  • 這個函數返回一個 VEE_LONGLONG 類型的 VDC 數組。 這個數組的大小由參數 numPts 指定。參數 values 指向的數組的大小必須与參數 numPts 指定的大小相同。參數類型 int64 在 veeData.h 中定義為 __int64。

VDC vdcCreateLongLong1DArray(int32 numpts, int64 *values);

  • 這個函數返回一個 VEE_STRING 類型的 VDC 數組。 這個數組的大小由參數 numPts 指定。參數 strings 指向一組字符串。該組字符串的數量必須与參數 numPts 指定的數量相同。參數類型 int32 在 veeData.h 中定義為 long。

VDC vdcCreateString1DArray( int32 numPts, char **strings );

  • 這個函數返回一個 VEE_DOUBLE 類型的 VDC 數組。 這個數組的大小由參數 numPts 指定。參數 values 指向一個數組。該數組中double 型數据的數量必須与參數 numPts 指定數量的相同。參數類型 int32 在 veeData.h 中定義為 long。

VDC vdcCreateDouble1DArray( int32 numPts, double *values );

  • 這個函數返回一個 VEE_COMPLEX 類型的 VDC 數組。 這個數組預先已被分配了一段大小由參數 numPts 指定的內存。參數類型 int32 在 veeData.h 中定義為 long。參數 values 指向一個veeComplex類型的結構數組。該結構在 veeData.h 定義為:

typedef struct {double rval, ival;} veeComplex;

VDC vdcCreateComplex1DArray( int32 numPts, veeComplex *values );

  • 這個函數返回一個 VEE_PCOMPLEX 類型的 VDC 數組。 這個數組預先已被分配了一段大小由參數 numPts 指定的內存。參數類型 int32 在 veeData.h 中定義為 long。參數 values 指向一個veePComplex類型的結構數組。該結構在 veeData.h 定義為:

typedef struct {double mag, phase;} veePComplex;

VDC vdcCreatePComplex1DArray( int32 numPts, veePComplex *values );

  • 這個函數返回一個 VEE_COORD 類型的 VDC 數組。 這個數組預先已被分配了一段大小由參數 numPts 指定的內存。參數類型 int32 在 veeData.h 中定義為 long。參數 values 指向一個 vee2DCoord 類型的結構數組。該結構在 veeData.h 定義為:

typedef struct {double xval, yval;} vee2DCoord;

VDC vdcCreate2DCoord1DArray( int32 numPts, vee2DCoord *values );

  • 這個函數返回一個 VEE_COORD 類型的 VDC 數組。 這個數組預先已被分配了一段大小由參數 numPts 指定的內存。參數類型 int32 在 veeData.h 中定義為 long。參數 values 指向一個 vee3DCoord 類型的結構數組。該結構在 veeData.h 定義為:

typedef struct {double xval, yval, zval;} vee3DCoord;

VDC vdcCreate3DCoord1DArray( int32 numPts, vee3DCoord *values );

  • 這個函數返回一個 VEE_COORD 類型的 VDC 數組。 這個數組預先已被分配了一段大小由參數 numPts 指定的內存。參數 aFieldCount 是坐標中域的個數。參數類型 int32 在 veeData.h 中定義為 long。參數 values 指向一個 double 類型的數組。數組的長度等于 numPts 和 aFieldCount 的乘積。

VDC vdcCreateCoord1DArray( int32 numPts, int16 aFieldCount, double *values );

  • 這個函數返回一個 VEE_WAVEFORM 類型的 VDC 數組。 采樣數量等于參數 numPts。波形開始和結束的時間由參數 from 和 thru 來确定。 參數 mapType 是 VMT 類型。該類型在 veeData.h 中定義，用于聲明所使用的映射類型。參數 values 指向一個 double 類型的數組。數組的長度等于 numPts 和 aFieldCount 的乘積。詳細信息請參閱 數据類型、形狀和映射。

    參數 data 指向的一個 doubles 型數組，其大小必須与參數 numPts 指定的相同。參數類型 int32 在    veeData.h 中定義為 long 。

VDC vdcCreateWaveform( int32 numPts, double from, double thru, VMT mapType, double *data );

  • 這個函數返回一個 VEE_SPECTRUM 類型的 VDC 數組。 采樣數量等于參數 numPts。頻譜開始和結束的頻率由參數 from 和 thru 來确定。 參數 mapType 是 VMT 類型。該類型在 veeData.h 中定義，用于聲明所使用的映射類型。詳細信息請參閱 數据類型、形狀和映射。

參數 data 指向的一個 veePComplex 型數組，其大小必須与參數 numPts 指定的相同。結構veePComplex 在veeData.h 中定義為︰

typedef struct {double mag, phase;} veePComplex.

這個結構數組是被复制的。參數類型 int32 在veeData.h 中定義為 long 。

VDC vdcCreateSpectrum( int32 numPts, double from, double thru,
VMT mapType, veePComplex *data);

在下面的函數中，你需指定數組的大小，以及表示一個數組所需的數据（比如 VEE_WAVEFORM 和 VEE_SPECTRUM 類型的映射數据）和數組數据。返回值是一個 VDC (或在出錯時返回 NULL).

你可以用下述的函數將 VDC 轉換為 C 的數組。

  • 這個函數返回一個指向 VEE_BOOL 型數組的指針。參數 aVD 必須是 一個VEE_BOOL 型的數組。通過傳引用的參數 numPts 返回的值是數組的長度。

VEE_BOOL* vdcGetBool1DArray(VDC aVD, int32 *numpts);

  • 這個函數返回一個指向 int32 的數組的指針。參數 aVD 必須是 一個VEE_LONG 型的數組。通過傳引用的參數 numPts 返回的值是數組的長度。

int32* vdcGetLong1DArray( VDC aVD, int32 *numPts );

  • 這個函數返回一個指向 int64 的數組的指針。參數 aVD 必須是 一個VEE_LONGLONG 型的數組。通過傳引用的參數 numPts 返回的值是數組的長度。

int64* vdcGetLongLong1DArray(VDC aVD, int32 *numpts);

  • 這個函數返回一個指向 double 型數組的指針。參數 aVD 必須是 一個VEE_DOUBLE 型的數組。通過傳引用的參數 numPts 返回的值是數組的長度。

double* vdcGetDouble1DArray( VDC aVD, int32 *numPts );

  • 這個函數返回一個指向字符串的數組的指針。參數 aVD 必須是 一個VEE_STRING 型的數組。通過傳引用的參數 numPts 返回的值是字符串的數量。

char** vdcGetString1DArray( VDC aVD, int32 *numPts );

  • 這個函數返回一個指向　veeComplex　結構數組的指針。該結構在　veeData.h　中定義為︰

typedef struct {double rval, ival;} veeComplex;

參數 aVD 必須是 VEE_COMPLEX　型的。通過傳引用的參數 numPts 返回的值是數組的長度。

veeComplex* vdcGetComplex1DArray( VDC aVD,int32 *numPts );

  • 這個函數返回一個指向　veePComplex　結構數組的指針。該結構在　veeData.h　中定義為︰

typedef struct {double mag, phase;} veePComplex;

參數 aVD 必須是 VEE_PCOMPLEX 型的。通過傳引用的參數 numPts 返回的值是數組的長度。

veePComplex* vdcGetPComplex1DArray( VDC aVD, int32 *numPts );

  • 這個函數返回一個指向　vee2DCoord　結構數組的指針。該結構在　veeData.h　中定義為︰

typedef struct {double xval, yval;} vee2DCoord;

參數 aVD 必須是 VEE_COORD 型的。通過傳引用的參數 numPts 返回的值是數組的長度。

vee2DCoord* vdcGet2DCoord1DArray( VDC aVD, int32 *numPts );

  • 這個函數返回一個指向　vee3DCoord　結構數組的指針。該結構在　veeData.h　中定義為︰

typedef struct {double xval, yval, zval;} vee3DCoord;

參數 aVD 必須是 VEE_COORD 型的。通過傳引用的參數 numPts 返回的值是數組的長度。

vee3DCoord* vdcGet3DCoord1DArray( VDC aVD, int32 *numPts );

  • 這個函數返回一個指向 double 型數組的指針。參數 aVD 必須是　VEE_COORD 類型。通過傳引用的參數 numPts 返回的值是數組中坐標元組的數量。通過傳引用的參數 aFieldCount　返回的值是每個坐標遠組中域的數量。返回數組的長度是　numPts 和 aFieldCount　的乘積。

double* vdcGetCoord1DArray( VDC aVD, int32 *numPts, int16 *aFieldCount );

  • 這個函數返回一個指向 double 型數組的指針。參數 aVD 必須是　VEE_WAVEFORM　類型。傳引用的參數 numPts， from, thru 和 mapType　分別返回數組長度，開始時間，結束時間和映射類型。

double* vdcGetWaveform( VDC aVD, int32 *numPts, double *from, double *thru, VMT *mapType );

  • 這個函數返回一個指向　veePComplex　型的結構數組。 該結構在　veeData.h 中定義為︰

typedef struct {double mag, phase;} veePComplex;

參數　aVD　必須是 VEE_WAVEFORM　類型的。傳引用的參數 numPts, from, thru 和 mapType 分別返回, 結構數組的長度，開始頻率，結束頻率和映射類型。

veePComplex* vdcGetSpectrum( VDC aVD, int32 *numPts, double *from, double *thru, VMT *mapType );

上述函數都接受一個 VDC，并通過參數返回一個指向數据數組的指針和數組的大小或一些其他相關信息。

數組創建好后，可以使用下述函數查詢和另請參閱

關于VEE DATA API， 數据類型、形狀和映射，處理數組數据， Enum類型， 映射函數， 其它函數。操作這些數組︰

int32 vdcSetNumDims( VDC, int16 );

int16 vdcGetNumDims( VDC );

int32 vdcSetDimSizes( VDC, int32* );

int32 *vdcGetDimSizes( VDC );

int32 vdcCurNumElements( VDC );

另請參閱

關于VEE DATA API， 數据類型、形狀和映射，處理標量數据， Enum類型， 映射函數， 其它函數。


Enum類型

VEE枚舉類型是順序排列的字符串列表，它可以由下面的例程進行處理︰

• 這個函數用給定的字符串－序號對的數量來創建一個空的VEE_ENUM結構。在發生錯誤時，它返回一個NULL VDC。

VDC vdcCreateEnumScalar( int16 numberOfPairs );

• 這個函數把枚舉對放在規定的VEE ENUM結構中，返回更新后的結果，以及0或一個錯誤代碼。

int32 vdcEnumAddEnumPair( VDC aVD, char* aString, int32 aValue );

• 這個函數刪除由參數 anOrd 給出的序號處的枚舉對。它返回0或返回一個錯誤代碼。

int32 vdcEnumDeleteEnumPairWithOrdinal( VDC aVD, int32 anOrd );

• 這個函數設置其它vdcEnum例程使用的序號。它返回0或返回一個錯誤代碼。

int32 vdcSetEnumScalar( VDC aVD, int32 anOrdinal );

• 這個函數把一個字符串放在VEE_ENUM結構中，由vdcSetEnumScalar()指配序號︰

int32 vdcEnumDeleteEnumPairWithStr(VDC aVD, char* aString );

• 這個函數返回vdcSetEnumScalar()指配的當前序號選擇結果︰

int32 vdcGetEnumOrdinal( VDC aVD );

• 這個函數返回与當前序號有關的字符串，或在發生錯誤時返回一個NULL字符串。

char* vdcGetEnumString( VDC aVD );

另請參閱

數据類型、形狀和映射，處理標量數据， 處理數組數据，映射函數， 其它函數。


映射函數

VEE DATA API允許使用下述函數處理數組的映射關系︰

int32 vdcAtDimPutLowerLimit( VDC aVD, int16 aDim, double aValue );

// 指定下限的映射。

int32 vdcAtDimPutUpperLimit( VDC aVD, int16 aDim, double aValue );

// 指定上限的映射。

int32 vdcAtDimPutRange( VDC aVD, int16 aDim, double lowerLimit, double upperLimit );

// 結合"vdcAtDimPutLowerLimit" & "vdcAtDimPutUpperLimit"。

int32 vdcAtDimPutMapping( VDC aVD, int16 aDim, VMT aMapping);

// 設置上面定義的極限之間的映射。

int32 vdcMakeMappingsSame( VDC VD1, VDC VD2 );

// 以相同方式映射兩個容器。

int32 vdcUnMap( VDC aVD );

// 從容器中刪除映射信息。

另請參閱

數据類型、形狀和映射， 處理標量數据， 處理數組數据，Enum類型，其它函數。


其它函數

其它VEE DATA API函數包括︰

  • 獲得VDC的類型。在發生錯誤時返回VEE_NOTDEFINED1。

enum veeType vdcType( VDC aVD );

  • 复制VDC。在發生錯誤時返回NULL。

VDC vdcCopy( VDC oldVD );

  • 刪除容器，釋放其內存。在發生錯誤時返NULL。

VDC vdcFree( VDC aVD );

  • 得到最后一個錯誤的錯誤編號/消息︰

int16 veeGetErrorNumber( void );

char *veeGetErrorString( void );

  • 把錯誤編號复位為零︰

void veeClearErrorNumber(void)

在使用Borland匯編程序時，libvapi.lib庫不能鏈接到程序中。

另請參閱

數据類型、形狀和映射，處理標量數据， 處理數組數据，Enum類型， 映射函數。


Web技朮概述

其它函數

您可以使用VEE傳播程序中已經收集的數据，監測測試系統，或遠程复核測試結果。

本例描述了怎樣在机構內部創建一個网站(一個企業內部网网站)，作為服務器提供參考數据。本例假設訪問這個网站的用戶擁有瀏覽器。本例使用Microsoft環境(Windows 2000或Windows XP)、MS Office和MS Internet Explorer。通信從儀器到達服務器，然后到達客戶端瀏覽器。

備注

本例使用PC屏幕轉儲圖。

在上圖中，通信如下︰

• 被測設備(DUT)或傳感器或儀器通過网絡I/O層把信息發送到服務器應用。网絡I/O層包括接口和背板(GPIB, RS232, VXI, MXI, USB, LAN, PC插件)及I/O編程層，如驅程, VISA或SICL。

• 服務器應用是生成測量數据的VEE程序。

• HTTP (超文本傳送協議)把信息發送到客戶端瀏覽器。

HTTP是Web使用的TCP/IP通信協議中的一個協議。(TCP/IP表示傳輸控制協議/互聯网協議) 低級TCP/IP協議包括通信的傳輸層、网絡層和物理層。根据定義，每個TCP/IP應用都是客戶端/服務器應用。例如，客戶端瀏覽器(如Internet Explorer)可以請求服務器應用生成的信息。

在Internet Explorer中輸入下面的通用資源定位器(URL)時，它從安捷倫服務器請求信息︰

http://www.agilent.com/find/vee

• http描述了被存取的資源類型，以傳送信息。

• www.agilent.com/find/vee是資源的URL。HTTP使用的超文本格式是一种腳本格式，稱為超文本置標語言(HTML)。HTML為把多個文件鏈接起來提供了一种方式，最初只有編程人員能夠使用這种語言創建网頁。HTML最初只用于文本，但現在包括了聲音、視頻、圖像、交互屏幕、ActiveX控件和Java小程序。

一旦瀏覽器請求服務器信息，它不會自動更新，除非瀏覽器設計成自動更新。此外，瀏覽器不允許任何交互，除非瀏覽器网頁中設計了交互。完成這一操作最簡便的方式是使用腳本語言，如VBScript、JavaScript和Jscript。

腳本語言是瀏覽器支持的一种解釋過的語言。腳本語言可以擴展HTML的限制，提供交互性更強的网頁。由于它們已經被解釋，因此腳本語言必須被嵌入到网頁中，并得到瀏覽器支持。它們不是獨立的程序。下面用圖形方式說明了這一點。

VBScript、JavaScript和JScript都是腳本語言。VBScript基于MS Visual Basic。JavaScript是Sun (Java)共同創建的。JScript基于微軟版本的JavaScript。

腳本語言必須裝在主机應用內部。主机應用一般是一個网絡瀏覽器，如Internet Explorer或Netscape Navigator。在瀏覽器內部，由HTML控制网頁的整体感觀。

微軟的組件對象模型(COM)定義了匯編的軟件組件，稱為ActiveX控件，它們封裝專門設計的函數。一般來說，ActiveX控件用來提供用戶接口功能，是為在客戶端計算机上運行而設計的。ActiveX控件是優化的軟件組件，這些軟件組件過去叫作OLE控件。

另請參閱

可以調用的VEE ActiveX Automation Server, 使用Agilent VEE進行Web監測, 為遠程用戶提供Agilent VEE數据, Web Server對話框, 遠程用戶怎樣存取系統上的Agilent VEE,顯示Agilent VEE Web Server頁面，實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習, 限制存取通過Web查看的程序


使用Agilent VEE進行Web監測

VEE包括一個內置Web服務器，可以通過HTTP与其它程序通信。您可以允許遠程用戶存取裝在您的計算机上的VEE程序和信息。本節介紹了怎樣共享VEE數据及遠程用戶怎樣存取數据。

整体指導準則和技巧

• 在您的系統上運行的VEE程序是遠程用戶將要存取的VEE程序。

• 您的系統必須正在運行VEE。為存取您的系統上的VEE程序，遠程用戶不必安裝VEE。

• 在遠程用戶從网絡瀏覽器向VEE發送請求時，VEE創建一個圖片，在遠程用戶的瀏覽器窗口中進行顯示。這個圖片是VEE程序的“快照”。(它不能編輯。)

• 通過在VEE Web Server主頁中進行選擇或通過在瀏覽器URL中指定命令行選項，遠程用戶可以查看您的VEE程序的不同部分，讓VEE程序定期刷新瀏覽器顯示(以監測程序進度)，顯示錯誤信息。

另請參閱

可以調用的VEE ActiveX Automation Server, 為遠程用戶提供Agilent VEE數据, Web Server對話框, 遠程用戶怎樣存取系統上的Agilent VEE,顯示Agilent VEE Web Server頁面，實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習, 限制存取通過Web查看的程序


為遠程用戶提供Agilent VEE數据

根据下述通用步驟，設置VEE Web服務器，以便遠程用戶能夠存取您的系統上的數据︰

1 您的系統一定要連接到网絡上。

2 為遠程用戶提供他/她將在瀏覽器中輸入、以存取您的系統的URL相關信息(后面將更更詳細地介紹這些信息)。

3 啟動VEE，打開您希望遠程用戶存取的程序，和/或創建您希望遠程用戶存取的任何文件。

4 選擇File [image] Default Preferences [image] Web Server對話框設置(下面更詳細地進行了介紹)，啟動Web Server。

5 讓遠程用戶運行网絡瀏覽器，如Internet Explorer或Netscape。

另請參閱

可以調用的VEE ActiveX Automation Server, 使用Agilent VEE進行Web監測, Web Server對話框, 遠程用戶怎樣存取系統上的Agilent VEE,顯示Agilent VEE Web Server頁面，實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習, 限制存取通過Web查看的程序


Web Server Dialog Box

Web Server對話框

在選擇File [image] Default Preferences [image] Web Server時，會出現下面的Web Server對話框。

Web Server對話框中的各個字段如下︰

字段名稱

說明

Enable Server

在复選時，Enable Server會啟動VEE的內置Web服務器。Web服務器允許遠程用戶使用网絡瀏覽器顯示您的VEE程序，查看、監測和診斷您的系統上的VEE程序。

VEE的Web服務器使用標準HTTP協議。在默認狀態下，Enable Server為OFF (不复選)。您的系統必須連接到网絡上，VEE必須正在運行，遠程用戶必須運行网絡瀏覽器，這樣遠程用戶才能存取VEE Web服務器。

Root Directory

指定遠程用戶可以存取的文件位置。默認值是~installDir/www。對Windows 2000或Windows XP，如果使用默認值安裝VEE Pro8.0，那么這個字段值為︰

C:\Program Files\Agilent\VEE Pro8.0\www.

• 不要把私人文件放在這個目錄或其任何子目錄下，因為使用网絡瀏覽器存取您的系統的任何遠程用戶都可以查看這些文件。

• 在您安裝VEE時，VEE在默認的Web服務器Root Directory中安裝文件index.html。在默認狀態下，這個文件將位于C:\Program Files\Agilent\VEE Pro 8.0\www\index.html。這是默認的VEE Web服務器主頁，在遠程用戶存取您的系統時可以顯示這個主頁。(如果愿意，您可以根据需求編輯這個主頁。)

• 如果您改變Web文件的根目錄，那么把index.html文件移動到新的目錄下，不要改變文件名。

HTTP Port Number

指定VEE Web服務器的端口號碼。默認的端口號碼是80。只有在另一個Web服務器(如VEE的另一個實例)在同一個系統上運行，或如果您希望限制遠程用戶存取您的VEE Web服務器時，才需要改變默認端口號碼。

• 通過指定一個0 – 65535之間的HTTP端口號碼，可以限制誰能夠存取和查看您的系統上的數据。

• 如果您輸入一個不同的端口號碼，查看VEE程序的遠程用戶必須在其瀏覽器中輸入相同的端口號碼。例如，如果把這個字段設置為端口85，那么遠程用戶輸入的URL應該是︰http://hostname:85。(本章后面更詳細地介紹了主机名稱的定義。)

Server Timeout

指定VEE Web服務器將等待VEE處理命令的最長時間。在默認狀態下，這個字段設為60秒。如果VEE程序處理一條命令使用的時間長于指定時間，VEE會向Web服務器發送超時。

Log File

指定在哪里記錄Web服務器處理的所有進入HTTP請求的日志文件。這個文件在PC上的默認位置是C:\windows\TEMP\http.log。如果日志文件還不存在，那么在Default Preferences Web Server對話框中進行改動時，會創建一個日志文件。

Save

取值將是未來VEE Web會話使用的默認值，直到您再次改變這些值。如果想對當前VEE會話只使用指定值，點擊OK。


遠程用戶怎樣存取系統上的Agilent VEE

為從另一個位置存取系統上的VEE文件，遠程用戶需要采取下述通用步驟︰

1 遠程用戶的系統必須連接到网絡上。

2 遠程用戶必須運行网絡瀏覽器，如Netscape或Internet Explorer。

3 遠程用戶必須輸入系統的URL地址。(您為遠程用戶提供地址，下面更詳細地介紹了這一點。)

備注

為存取系統上的VEE程序，遠程用戶不必運行VEE，甚至不必安裝VEE。

遠程用戶連接到网絡上，運行瀏覽器，輸入一個URL。您將根据下述信息告訴遠程用戶要輸入的URL。遠程用戶輸入的URL的格式如下︰

http://hostname {:port}

顯示VEE Web Server主頁，遠程用戶可以在主頁上輸入怎樣查看VEE程序的選項。

http://hostname{:port}{/command}{?parameter}

為遠程用戶指定在VEE程序中查看的視圖或UserFunction。例如，http://hostname/ViewMainDetail顯示主要VEE程序的細節視圖。

http://hostname{:port}{/file}

指定一個已經保存的、您希望遠程用戶查看的文件，如*.jpeg或*.html文件。

備注

大括號{}中的字段是可選的字段。

URL地址中的字段如下︰

遠程用戶存取VEE程序時URL中可以使用的命令和參數如下。

文件名 | 說明
Hostname | (必須) 識別VEE正在運行的系統，格式為<computer_name>.domain.com。 您可以選擇讓遠程用戶在URL中只輸入<hostname>，如http://<hostname>。這條命令打開VEE Web Server主頁index.html，把它顯示給遠程用戶。遠程用戶可以從VEE Web Server主頁菜單中選擇顯示、監測或診斷VEE程序。
Port | (可選) 如果沒有使用默認值80，那么識別Web Server端口號碼。只有在File [image] Default Preferences [image] Web Server中輸入的端口號碼是80以外的號碼時，才指定這個值。 例如︰如果遠程用戶將存取系統上的VEE，且File [image] Default Preferences [image] Web Serveris中的端口號碼設為85，那么應讓遠程用戶輸入http://<hostname>:85。
File | (可選) 識別要打開的相對于瀏覽器根目錄的目錄和/或文件。只有在已經保存了一個遠程用戶要查看的文件時，如*.jpeg或*.html，才能指定一個文件。 為使遠程用戶顯示您的系統中的文件，您必須在VEE的Default Preferences下，在Web Server對話框中把一個目錄指定為Root Directory。
Commands and Parameters | (可選) 指定VEE Web Server支持的一條命令要求的命令或參數。命令和參數使得遠程用戶能夠通過瀏覽器監測和診斷遠程VEE程序。下面列明了各個命令和參數。
Viewing the entire VEE window | ViewVEE 例如︰ http://hostname/ViewVEE
Panel view of main VEE program | ViewMainPanel 例如︰ http://hostname/ViewMainPanel
Detail view of main VEE program | ViewMainDetail 例如︰ http://hostname/ViewMainDetail
VEE execution window during runtime | ViewExecWindow 例如︰ http://hostname/ViewExecWindow
VEE UserFunction in Panel view | http://hostname/ViewPanel? <UserFunction Name> 例如︰如果UserFunction是AddNoise，那么遠程用戶將輸入 http://hostname/ViewPanel? AddNoise
Detail view of a UserFunction | http://hostname/ViewDetail? UserFunctionName 例如︰如果UserFunction是AddNoise，那么遠程用戶將輸入 http://hostname/ViewPanel? AddNoise
Error window of current program | http://hostname/ViewError
Display list of available command URLs. | ViewHelp

另請參閱

可以調用的VEE ActiveX Automation Server, 使用Agilent VEE進行Web監測, 為遠程用戶提供Agilent VEE數据, Web Server對話框, 顯示Agilent VEE Web Server頁面，實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習, 限制存取通過Web查看的程序


顯示Agilent VEE Web Server頁面

在安裝VEE時，它會在www 目錄下創建一個默認的index.html文件。這個文件包含VEE Web Server主頁。遠程用戶可以點擊這個頁面上的選項，顯示VEE程序。默認的VEE Web Server主頁如下。還可以編輯頁面，如在MS Word中，滿足用戶需求。

備注

為在自己的系統上顯示這個菜單，可以把系統指定為localhost。例如，如果運行VEE、運行网絡瀏覽器、輸入http://localhost，瀏覽器將顯示上面顯示的VEE Web Server主頁。這為檢查遠程用戶使用不同命令顯示的內容提供了簡便的方式。

在遠程用戶顯示上面的菜單時，通過在菜單中進行選擇，其可以存取VEE程序的各個部分。例如，用戶可以點擊Main Detail，在Detail視圖中查看Main VEE程序。使用菜單選擇顯示的信息与遠程用戶在网絡瀏覽器中輸入命令http://hostname/ViewMainDetail顯示的信息相同。

另請參閱

可以調用的VEE ActiveX Automation Server, 使用Agilent VEE進行Web監測, 為遠程用戶提供Agilent VEE數据, Web Server對話框, 遠程用戶怎樣存取系統上的Agilent VEE, 實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習, 限制存取通過Web查看的程序


限制存取通過Web查看的程序

在通過Web提供VEE程序時，您可能仍希望限制遠程用戶查看程序的某些部分。如果遠程用戶目前知道連接到您的系統的URL，您希望保証只有某些遠程用戶能夠存取特定程序或Web目錄文件。

為防止遠程用戶在Web上查看VEE程序的某些部分，您可以以三种不同方式保護程序︰

在Default Preferences [image] Web Server文件夾中改變端口號碼，這樣，只有授權的用戶才可以查看程序。

或

創建一個安全的RunTime版VEE程序。這將保証不能查看任何程序代碼。如需更多信息，請參閱“ 保護程序安全 (創建RunTime版本)" 。

或

使用您希望禁用的命令的确切名稱創建一個HTML文件，把它保存在VEE www目錄下。在到達VEE前，瀏覽器會一直存取任何*.html文件。通過這种方式，您可以解釋遠程用戶發出的請求，顯示一個HTML网頁及相應的警告或注釋。

例如，您可能希望防止遠程用戶查看VEE程序的Detail視圖。您可以在程序中創建一個文件，如MS Word，在www目錄中把它另存為ViewMainDetail.html。在這個文件中，您可以放入希望遠程用戶查看的消息。

當遠程用戶在VEE Web Server主頁中選擇Main Detail或使用選項ViewMainDetail輸入一個URL時，瀏覽器不會在細節視圖中顯示主VEE程序。相反，瀏覽器會存取www目錄下的ViewMainDetail.html文件，顯示您已經創建的文件。下面是您將向遠程用戶顯示的內容實例。

備注

确保文件名稱是VEE web命令的文件名，并位于Web Server中指定的Root Directory下。

您還可以對其它目的使用*.html文件，如在VEE程序上放置口令保護，這樣只有擁有口令的用戶才能查看程序。下面是口令保護實例。

另請參閱

可以調用的VEE ActiveX Automation Server, 使用Agilent VEE進行Web監測, 為遠程用戶提供Agilent VEE數据, Web Server對話框, 遠程用戶怎樣存取系統上的Agilent VEE,顯示Agilent VEE Web Server頁面，實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習


MATLAB腳本概述

MATLAB Script是The MathWorks提供的標準全功能MATLAB的一個子集。用戶可以直接存取MATLAB功能核心集，如高級數學運算、數据分析及科學和工程圖表。可以簡便地在任何Agilent VEE中包括MATLAB Script對象。

MATLAB Script包括几百個函數︰

  • 數据分析和可視化

  • 數字計算，包括︰

    • 線性代數運算和矩陣計算

    • 傅立葉和統計分析

    • 差分公式求解

    • 三角法和基礎數學運算

  • 工程和科學圖表，如︰

    • 二維畫面和三維畫面，包括三角化和柵格化數据

    • 可視化標量數据和矢量數据流量

    • 箭帶圖, 帶狀圖, 散點圖, 柱狀圖, 餅圖和節狀圖

信號處理工具箱

MATLAB Script for VEE還包括MATLAB信號處理工具箱的一個子集，它基于堅實的濾波器和頻譜分析技朮基礎。包括的函數有︰

  • 信號和線性系統模型

  • 模擬濾波器設計

  • FIR和IIR數字濾波器設計、分析和實現

  • FFT和DCT等變換

  • 頻譜估算和統計信號處理

  • 參數時序模型

  • 波形生成

關于全功能MATLAB

MATLAB是一种集成式技朮計算環境，它把數字計算、高級圖形和可視化及高級編程語言結合在一起。MATLAB包括几百种函數︰

  • 數据分析和可視化

  • 數字和符號計算

  • 工程和科學圖標

  • 建模、模擬和原型設計

  • 編程、應用開發和GUI設計

MATLAB用于各种應用領域中，包括信號和圖像處理、控制系統設計、財務工程和醫療研究。由于采用開放的結構，MATLAB和配套產品使用簡便，可以探索數据，創建自定義工具，洞察早期信息，獲得競爭優勢。

作為VEE用戶，可以在涉及數据分析、可視化和建模的應用中，利用MATLAB和信號處理工具箱的全部處理能力。通過升級到完整版本的產品，您可以在VEE程序中使用各种新增的MATLAB功能，如創建用戶自定義函數(M-files)、進入MATLAB命令窗口、MATLAB Editor/Debugger及信號處理GUI。

MATLAB其它信息來源

如需与使用MATLAB Script對象有關的完整的詳細信息，請參閱MATLAB Script Help Desk。在VEE中，選擇Help [image] MATLAB Script [image] Help Desk。网絡瀏覽器中將出現MATLAB Help Desk。

如需与MATLAB, MATLAB Toolboxes及The MathWorks其它產品有關的進一步信息，請訪問︰www.mathworks.com或致電508-647-7000。

其它信息來源包括︰

  • 完整的MATLAB文檔: www.mathworks.com/access/helpdesk/help/helpdesk.shtml

  • MATLAB產品信息: www.mathworks.com/products

  • MATLAB技朮協助: www.mathworks.com/support

  • MathWorks商店: www.mathworks.com/store

  • MathWorks主頁: www.mathworks.com

Usenet Newsgroup: comp.soft-sys.matlab 新聞小組為使用MATLAB、對MATLAB及其相關產品有問題或意見的專業人士和學生提供了一個論壇。

另請參閱

在 Agilent VEE中使用MATLAB Script，在Agilent VEE中包括MATLAB Script對象


在Agilent VEE中使用MATLAB Script

VEE包括MATLAB Script對象，可以使用MATLAB的功能。VEE可以把數据傳送到MATLAB Script Engine，接收回數据，使您能夠在VEE程序中包括MATLAB數學函數。

備注

如果您已經安裝MATLAB，VEE將使用已經安裝的MATLAB處理MATLAB Script。但是，如果沒有Signal Processing Toolbox，您將不能從VEE中使用這些函數，除非注冊了与VEE一起提供的MATLAB Script Engine。為注冊MATLAB，把目錄(CD)變成 <VEE_installation_dir>\MATLAB\bin\win32\MATLAB.exe /regserver。如果/regserver失敗，嘗試/REGSERVER。

MATLAB Script對象的部分用途包括︰

• 讓MATLAB在VEE生成的數据上運行。

• 從MATLAB Script對象返回結果，在VEE程序的其它部分使用結果。

• 使用MATLAB的 Signal Processing Toolbox功能，在MATLAB Script對象中執行完善的濾波器設計和實現方案。

• 使用二維或三維圖形可視化數据。

下圖顯示了MATLAB Script對象在VEE程序中的顯示方式。在這個程序執行時，它生成Alphanumeric對象中顯示的數据。

下圖顯示了程序運行時生成的圖形。

在VEE程序中包括多個MATLAB Script對象時，VEE調用MATLAB Script Engine，在MATLAB Script對象中執行操作。信息從VEE傳送到MATLAB，然后再傳回。

• 只允許部分VEE數据對象作為MATLAB腳本輸入。處理數据類型 和 MATLAB腳本更詳細地討論了這一點。


什么是.NET？

Visual Studio .NET是微軟最新的開發平台。与以前的產品（例如Visual Studio 6）不同，.NET滿足了桌面編程人員和网絡開發人員的共同需求。從VEE角度看，.NET的優勢是.NET Framework的自由運行時。.NET Framework与VEE7.0及更高的版本一起分發。它集成了几個新特性。

VEE的.NET Framework的關鍵特點和好處是架構類庫(FCL)。FCL對于VEE編程人員具有特殊價值。Function & Object Browser提供了几百個新屬性和方法。這個新特性使您的代碼能夠派生出許多功能，例如文件和目錄管理；簡洙字符串管理；簡化操作系統環境視圖；网頁操作；存取操作系統進程；讀取注冊表等。


.NET朮語

在复習描述.NET的內容時，最好了解微軟定義的下述朮語。

匯編 – 把組件封裝在匯編程序中。匯編程序是.NET應用中可重用、可以版本化的自述型構件。最簡單的匯編程序是包含部署和版本本所需的全部信息的單個可執行文件。匯編程序是.NET Framework的基礎構件。它采取可執行文件(.exe)或動態鏈接庫(.dll)文件的形式。

基本互通匯編程序(PIA) – 基本互通匯編程序是厂商提供的唯一的匯編程序，其中包含COM實現的類型的類型定義(作為圖元數据)。只能有一個基本互通匯編程序，必須由COM類型庫的發行者簽名。

名字空間 – .NET Framework類型使用句點語法命名方案來暗指層級。這种技朮把相關類型划分到名字空間中，搜索和參考起來更加容易。整個名字(直到最右面的句點)的第一部分是名字空間名稱。名字的最后部分是類型名稱。例如，System.Collections.ArrayList表示ArrayList類型，它屬于System.Collections名字空間。可以使用System.Collections中的類型，操縱對象集合。(嵌套名字空間是這一規則的例外情況。如需更多信息，請參閱MSDN文檔。)

參考 – 為使用匯編程序，必須添加一個參考。

共享成員 – 共享成員是由一個類的所有實例共享的屬性、規程和字段。某些編程語言把這些項目稱為靜態成員。

在擁有的信息是一個類的一部分，但不專用于一個類的某個實例時，可以使用共享字段和屬性。對一個類的每個實例，獨立存在正常字段和屬性。改變与任何一個實例有關的字段或屬性值，不會影響該類中其它實例的字段或屬性值。另一方面，在改變与一個類的一個實例有關的共享字段和屬性值時，會改變与該類所有實例有關的值。通過這种方式，共享字段和屬性的行為類似于只能從一個類型實例中存取的全局變量。

類 – 如果熟悉面向對象的編程，您就知道類定義了一個對象可以執行的操作(方法、事件或屬性)，同時定義了保持對象狀態的值(字段)。盡管類中通常同時包括定義和實現方式，但它可能會有一個或多個成員沒有實現方式。

類的一個實例是一個對象。通過調用其方法，存取其屬性、事件和字段，可以存取一個對象的功能。

實例成員 – 實例成員捆綁到一個類的特定實例上。取值變化影響著相關的對象，但對其它對象沒有影響。


VEE和.NET Framework

在開始回顧.NET Framework如何与VEE交互之前，通過在MSDN索引中查找".NET Framework－getting started";我們來回顧一下.NET Framework。

用途

在Device菜單下有一個叫做.NET Assembly References的菜單選項。顧名思義，References 會引導您使用一個Assembly;打開這個菜單選擇，您會看到類似下面圖片的窗口︰

這里有大量可以選擇的組件。這些組件被加載到VEE的主目錄或.NET Framework所安裝的目錄中。如果您正在使用的組件不在這些目錄中，使用Browse按鈕進行選擇。這里也有一個Importing Namespaces的复選框。Importing a namespace 等同于在C#中使用語句或在Visual Basic中Imports語句。

上圖中選用了最常用的組件mscorlib。繼續操作，選擇這個組件。Mscorlib封裝了對VEE用戶非常有用的許多功能，如文件系統處理、集合管理以及數据類型轉換。另一個經常使用的組件是System，它包含了流程管理、网絡請求和應答以及常用公式等功能。

注意另外一個標著COM的欄。這一欄下列明了計算机中當前注冊的所有COM類型庫。實際上，這一列表与使用ActiveX自動參考對話框時看到的類型庫大体相同。

怎樣知道使用哪個選項呢？如果有以下的情況，您應該使用ActiveX︰

  • 數据庫出現在那里

  • 全功能

  • 且沒有一級內插匯編程序(PIA)。

這避免了增加另一個層，即.NET Interop。如果有以下的情況，您應該使用.NET/COM Interop︰

  • 數据庫沒有在ActiveX下出現

  • 或沒有導入全部功能

  • 或您知道COM庫有一個Primary Interop Assembly (PIA)

例如，Function & Object Browser的ActiveX Objects列表中并能看到所有IVI-COM驅程接口。然而，.NET Interop允許查看所有IVI驅程接口。

當使用.NET匯編程序References菜單選項并且在列表中選擇一個COM類型庫時，VEE將設法將COM類型庫作為一個.NET Assembly 導入。如果存在一個PIA，VEE將使用它，否則VEE將會在程序所在的目錄中創建一個Interop Assembly （或一些Assembly，如果COM類型庫引用了其他類型庫）。當VEE獲取Interop Assembly，它將會在此組件中獲取所有的類型信息。

備注

為了避免由于VEE不得不在一個臨時目錄里向您的VEE程序目錄中复制所有生成的Interop Assembly產生的系統消耗，請首先保存您的VEE程序。這樣，所產生的Interop Assembly會直接保存到您的VEE程序目錄中。

繼續操作，選擇COM欄。VEE搜索注冊表尋找COM類型庫可能要花一些時間。現在選擇Microsoft ActiveX Plugin。

現在提示您輸入名字空間。這一步可以任選，繼續操作并選擇Interop.ActiveXPlugin、System和System.IO。

備注

除非您在.NET Assembly References對話框內不選定复選框，否則每次都會出現Import .NET Namespaces對話框。

從Device菜單中打開Function & Object Browser。從菜單選項中選擇.NET/CLR Objects。注意Assembly窗口現在怎樣反映了您之前所作的兩個選擇。

所有名字空間都被列在Namespace窗口中。所有類型都被列在Type窗口中，每個類型的所有成員都被列在Members窗口中。成員包括構造器、字段、屬性、方法和列舉。

如果在VEE中已經使用了ActiveX，您會發現選擇一個.NET類成員的流程几乎完全相同，只有很小的差异，包括︰

1、COM沒有任何共用（靜態）成員。如果.NET成員是一個靜態成員，幫助區則會顯示STATIC關鍵字。靜態圖標( [image])也會挨著成員圖標出現。您需要在類上而不是在對象事例上調用一個靜態成員。可以使用Function & Object Browser來讓您自己熟悉語法。

2、生成實例對象變量，第一個字母是小寫字母。這提示您正在處理一個實例成員。這也意味著如果還沒有聲明和初始化變量，那么您需要聲明和初始化變量。

3、在成員列表中選擇構造器（構造器和方法共享這個圖標 [image] ），創建一個.NET對象。如上圖所示，可以看見Create Instance按鈕。選擇這個按鈕，生成一個創建新.NET對象的標準模板。可以將下圖中的dateTime輸出端連接到要求這個.NET對象作為輸入的任何公式框的輸入端。

4、.NET中的Enums ( [image])是強行輸入的，因此不必再像處理ActiveX對象那樣，用一個整數常數來代替Enum。您需要鍵入Enum全稱（如果已經輸入則減去名字空間）或使用Create Formula按鈕，保存部分輸入。例如，查看examples\dotnet目錄下的Enum相關范例。

另請參閱

在VEE中導入名字空間, .Net Operation Builder, .NET范例


把名字空間導入VEE Pro中

名字空間确定一种類型，它為靜態成員或枚舉算子創建一個模板，因此不需要類型前綴。

用途

導入名字空間与Visual Basic中使用導入語句或C#中使用語句相同。在這兩种情況下，都不必确定該名字空間中的類型用途。VEE支持兩种名字空間導入方法。

第一种方法是使用.NET Assembly References菜單選項上的复選框，如下圖所示︰

第二种方法是從Devices 菜單中選擇Import .NET Namespaces選項。將列出.NET名字空間的全部列表，為導入一個名字空間，只需選中旁邊的复選框。

如果選擇的assembly沒有名字空間，那么列表將是空的。

如果沒有為一個類導入名字空間，那么VEE的Function & Object Browser的 Create Instance按鈕將自動全面确定該類的靜態成員或枚舉，這會使公式框大得多。

范例

參閱DateTime.vee 和FileInfo.vee


.NET Operation Builder

.NET Operation Builder幫助您選擇VEE程序中使用.NET類型。

用途

如下圖所示，.NET Operation Builder可以簡便地選擇.NET名字空間和Type，然后選擇其中采用的方式、屬性和字段。

為使用.NET Operation Builder，先使用Device [image] .NET Assembly References，選擇希望處理的.NET匯編程序。然后這些匯編程序(在本例中是mscorlib)會顯示在.NET Operation Builder對話框中。選擇希望的名字空間(在本例中是System.IO)。然后，使用.NET Operation Builder向下深入到希望使用的具体類(在本例中是Directory)、枚舉或接口，選擇所需的Type。

找到所需類型的快得多的一种方式是點擊Find工具欄按鈕。這會在對話框右側打開Find a Type窗口。可以簡單地輸入查找的類型名稱或類型名稱的子串，然后按Enter。VEE在列表視圖中顯示結果。然后可以雙擊其中一個結果，在左面的樹圖中直接跳到相應的類型上。

一旦已經選擇了想要處理的Type，VEE工作區上會放一個VEE對象，提示您添加一個操作。如 選擇.NET成員所示，雙擊，系統會提示您從Directory類中選擇一個成員。

另請參閱

選擇.NET成員, 編輯.NET成員, 和使用.NET控件

位置

Devices [image] .NET Operation Builder


選擇.NET操作

一旦選擇了想處理的Type，會出現一個VEE對象。如下一個圖形中所示，把它放在VEE工作區上，雙擊它。系統會提示您從 Directory類中選擇一項操作。

注意在這個對話框頂部有三個圖標。Create圖標縮小列表范圍，只顯示提供的 CreateInstance構造器，用來創建一個選定類型的新實例。Declared Only圖標只顯示這一類型聲明的成員，All圖標顯示這一類型聲明的或從其父類型中繼承來的所有成員。

選擇CreateDirectory成員。

一旦選擇了CreateDirectory成員，必須進行配置。在編輯.NET成員所示的兩個圖形中，可以在配置欄中查看編輯方法。

位置

Devices [image] .NET Operation Builder


編輯.NET成員

一旦已經選擇了一個操作，那么必須編輯操作，為完成任務提供所需的其它信息。

用途

在完成.NET Operation Builder和選擇.NET成員中描述的任務后，必需配置CreateDirectory操作。在下面兩個圖形中，可以看到這一方法使用的配置欄。在Edit Parameters欄中，輸入新目錄的路徑。注意︰\是一個特殊字符，路徑分隔符應使用\\或/，如C:\\Program Files/Agilent。如果按Tab鍵，可以看到VEE將生成的代碼。

在Configure Terminals欄中，配置變量的名稱。還可以指定VEE生成的默認名稱之外的名稱，及指定VEE是否應在對象中添加一個端。一般來說，不需要改變這些設置。

如果已經完成.NET Operation Builder和選擇.NET成員中的所有步驟，可以選擇OK，運行程序，創建目錄，完成。

還可以在.NET操作構建程序中雙擊現有的操作，出現Edit Operation Dialog，可以修改現有的操作。

另請參閱

選擇.NET成員和.NET Operation Builder

位置

Devices [image] .NET Operation Builder


.NET控制主机

為添加到VEE工作區的.NET控件提供主机的VEE對象。

用途

.NET Framework帶有大量的標準控件，您也可以選擇使用第三方控件。為使用標準控件，只需進入Device [image] Windows Forms Controls菜單，從列表中選擇一個控件。

對第三方控件，參閱菜單選項Device [image] Additional .NET Controls。如果已經使用 .NET Assembly References對話框選擇了第三方控件的匯編程序，控件會自動顯示在這個菜單中。

.NET控制主机作為.NET控件的容器使用。在工作區中添加一個控件時，VEE創建容器，因此您可以存取控件，其方式与存取其它VEE對象的方式類似。容器還允許存取控件開發人員在控件中植入的具体屬性。

當控件出現在工作區中時，其標題欄中有一個標題和變量名稱。它沒有允許使用直線連接其它對象的端。必須使用表達式，指明獲取和設置屬性操縱控件的變量名稱及調用方法。您仍可以使用Function & Object Browser (Device Function & Object Browser)，幫助您在Formula對象中生成這些表達式，但新的.NET Operation Builder對象將大大簡化這一任務。您只需從控件上下文菜單中選擇“Generate .NET Operation Builder”，詳情請參閱.NET Operation Builder。變量名稱在本質上聲明為控件的變量名稱。控件的聲明變量名稱与使用Declare Variable對象創建的變量非常類似，但控件的變量已經初始化。聲明是上下文局部聲明，因此在默認狀態下，變量名稱只能用于其所在的上下文中。如需与在全局存取.NET控件有關的信息，請參閱下面的備注。

對象菜單

  • Help - 打開描述容器對象的這個VEE Help主題。

  • Properties - 存取VEE容器對象的屬性，如標題、變量名稱、匯編程序名稱和.NET類型。

  • Control Properties - 存取控件的屬性柵格，其由控件的所有屬性自動填充。每种控件有不同的屬性。控件屬性編輯不可逆。必須刪除和重建控件，才能恢复默認值。某些控件屬性不能串行化(保存)到VEE程序中，對這些屬性，您會獲得警報。

  • Edit Event Handler… - 如果已經為控件創建了任何事件處理程序UserFunction，打開Edit Event Handler對話框。

  • Create Event Handler… - 打開Create Event Handler UserFunction瀏覽器，這個瀏覽器允許創建一個UserFunction，處理控件生成的事件。可以為瀏覽器Member區域中列出的每個事件創建一個事件處理程序。

  • Generate .NET Operation Builder – 為這類控件生成.NET Operation Builder。

屬性(容器對象)

Title - 顯示容器對象的當前標題，允許用戶編輯標題。

Name - 顯示控件的當前局部變量名稱，允許編輯名稱。這會作為上下文局部變量，聲明及初始化控件。

.NET Type – 控件的類型。

Assembly – 包含控件的匯編程序。

備注

VEE必須設置成VEE 6或更高的執行模式，以使.NET支持生效(默認首選項)。.NET控件作為單獨的產品使用，也可以作為大型程序的一部分安裝。

VEE不支持所有.NET控件。如果控件不兼容VEE，那么在程序中添加控件時或在使用控件時會發生錯誤。可能會有某些不太明顯的問題，具体如下︰

  1. 并不是Device [image] Windows Forms Controls菜單中列出的所有控件都适合直接放在VEE工作區上。某些控件本身要包含在其它控件內部。例如，Splitter本身用于容器控件內部，如Panel。在這种情況下，只應把容器控件放在VEE的工作區上，然后使用Formula或.NET Operation Builder把子控件添加到容器控件中。范例請參閱Splitter.vee。

  2. 只有在控件位于Windows Form程序內部時，才能調用某些控制方法，如ProcessDialogKey, ProcessDialogChar, ProcessCmdKey，但VEE程序不是Windows Form程序。控件編寫人員很少需要實現這些方法，但如果他/她實現這些方法，那么VEE程序可能不會提供該控件的所有功能，否則您可能會得到意想不到的行為。

  3. 在通過Control Properties對話框改變控件屬性時，屬性被串行化(保存)到VEE程序中。VEE不會明确控制串行化順序。因此，如果.NET控件擁有高度耦合的屬性，如設置屬性A將改變屬性B，那么在從保存的狀態恢复控件時，您可能不能獲得預計的結果。在本例中，根据是否在A之前保存/加載B，您可能會獲得不同的結果。盡管這种情況并不常見，但如果您想避免与串行化順序的相關性，那么應使用Formula對象或.NET Operation Builder對象編寫表達式，改變控件屬性。通過這种方式，可以明确控制順序。

在VEE工作區中添加控件時，在標題欄中會出現指配的局部變量名稱。通過改變.NET控制主机的Name屬性，可以改變指配的變量名稱。由于控件沒有使用直線連接到程序中其它對象的端，必須在Formula對象或.NET Operation Builder中使用表達式操縱控件，這些表達式通過變量名稱指稱控件。由于變量是上下文局部變量，因此這些表達式必須出現在和控件相同的上下文中。

如果希望變量名稱是全局的，那么使用Declare Variable (Data [image] Variable [image] Declare Variable)聲明新的變量名稱。由于控件的變量名稱已經存在，不能簡單地聲稱其為全局變量；VEE不允許有這樣的沖突。在Declare Variable，輸入變量名稱，設置Scope to Global，設置Type to Object。您不必檢查Specify Object Type；但是，通過指定對象類型細節，VEE將自動檢查類型，保証指定的Assembly和Class只指配給聲明變量。然后可以把控件的局部變量(如progressBar1)設置成等于聲明變量(如g_progressBar1)，如下面的表達式中所示︰

Set g_progressBar1 = progressBar1

另請參閱

.NET Operation Builder

位置

Device [image] .NET Controls


VEE和一級內插匯編程序

您已經從".NET 朮語"主題中了解到PIA是一個單獨的，由賣方提供的匯編程序，它包含使用COM實現的類型的類型定義（如圖元數据）。只能有一個一級內插匯編程序，其必須被COM類型庫的發行商標以一個有力的名稱。VEE是怎樣提供這些PIAs的呢？

當您在 Device > .NET Assembly References選擇COM欄時，VEE將搜索注冊表并且在您的机器上找到所有注冊的COM類型庫。當您選擇了COM類型庫時，如果庫中有一個PIA并且COM 類型庫的PrimaryInteropAssemblyCodeBase鍵已經被注冊，那么PIA位置將顯示在描述區中。注意，只有在PIA使用/codebase選項注冊時，才能注冊PrimaryInteropAssemblyCodeBase。并不是所有的PIA都以這种方式注冊。通常來說，所有Agilent IVI-COM驅程都使用/codebase選項注冊，但許多匯編程序不這樣注冊。也應該注意到的是，當您檢查一個COM類型庫時，所有的VEE都將會查看注冊表，如果只有一個VEE，它將不會加載內插匯編程序。一旦您選擇OK，如果沒有PIA，VEE將會自動生成一個或多個內插匯編程序。

如果您選擇瀏覽并且直接選擇了一個PIA或一個內插匯編程序， VEE實際上仍會加載內插匯編程序，以找出它屬于哪种COM類型庫，以及它是否為一級內插匯編程序，這是查詢/選擇和复選COM欄列表之間的關鍵區別。當加載內插匯編程序后，VEE找到它所屬的COM類型庫，然后在COM欄列表下复選相應的COM類型庫。


Programming .NET

.NET編程

類型轉換

.NET增加了一种新的類型轉換功能，稱為asClrType。 AsClrType把VEE數据類型轉換成.NET/CLR數据類型。有效的.NET/CLR數据類型包括所有基本類型(Boolean, Byte, Sbyte, Int16, Uint16, Int32, Uint32, Int64, Uint64, Char, Double, 和Single), Decimal, Date/Time和String。如果.NET數据類型無效或轉換失敗，那么會出現錯誤信息。

很少需要asClrType，因為在大多數情況下，VEE在VEE數据類型和.NET數据類型之間自動轉換。只有在必須使用.NET中不支持的某個.NET數据類型，或希望象.NET對象一樣使用VEE數据類型時，如為了調用.NET對象方法，才需要使用asClrType。例如，VEE在.NET String和VEE Text數据類型之間轉換，但如果您想使用.NET提供的許多有用的String函數，那么必需先把EE Text轉換成 .NET String對象。

.NET和Win32 API

兩种API的詳細比較請參閱︰http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/win32map.asp

編程實務

安裝新的匯編程序

如果您對匯編程序一詞感到陌生，請复習.NET朮語。公共匯編程序必須安裝在全局匯編高速緩存(GAC)中。計算机上的所有程序會看到(GAC)中安裝的匯編程序。(詳情請參閱MSDN。) 共享匯編程序一旦更新，可以選擇Browse按鈕，瀏覽到匯編程序安裝在GAC之前所在的原始位置，參考共享匯編程序。

大多數匯編程序沒有安裝在GAC中。它們是專用匯編程序。專用匯編程序應使用參考它的VEE程序定位。在第一次使用.NET Assembly References對話框瀏覽和選擇專用匯編程序時，VEE將把它复制到當前VEE程序相同的目錄下(如果它沒有位于這個位置)。這种复制也簡化了VEE程序分發工作，稱為xcopy部署。

更新匯編程序

如果在VEE程序中已經參考共享匯編程序，那么在VEE加載新版共享匯編程序之前，必需進行File/New操作或再次重啟VEE。如果它不是共享匯編程序，而是專用匯編程序，那么在把新版專用匯編程序手動复制到當前VEE程序目錄中之后，必需進行File/New操作或重啟VEE。

調用實例方法

在調用實例方法時，很容易會忘記先聲明和創建.NET對象。為避免這個問題，建議使用Function & Object Browser和Create Instance按鈕，先生成構造器公式模板。

在下圖中，作為System.IO.FileInfo對象在局部聲明及初始化fileInfo。可以把fileInfo輸出端連接到要求這個對象實例的任何后續公式框的輸入端。另外注意，CreateInstance公式框和fileInfo.LastAccessTime公式框都由VEE自動創建。您只需把它們連接起來，提供任何其它參數即可。

調用共享/靜態方法

在調用.NET成員時，如果成員是Shared/Static成員，那么Function & Object Browser描述框中會出現STATIC一詞。靜態方法從.NET類中直接調用，而不是從對象中調用。因此，您不必先創建.NET對象。下圖是導入名字空間的靜態方法范例。

技巧

  • 如果從VEE公式框中調用要求Long/Single/Double.../的.NET方法，其中參數來自輸入端，如'A'，通過雙擊輸入端A，把要求的類型設置成匹配int32/Real32/Real64/etc.，通常可以消除'Method Not Found'异常情況。這要比調用內置asCltType函數或.NET System.Convert.To*函數簡單。

  • 為Instance成員生成的公式模板一直以小寫字母開頭。靜態成員有一個完全合格的名稱(名字空間加類名稱)，除非其名字空間已經導入。

  • 在調用.NET成員時，如果成員是Static成員，那么 Function & Object Browser描述框中會出現STATIC一詞。靜態方法從 .NET類中直接調用，而不是從對象中調用。因此，您不必先創建.NET對象。

  • .NET中的枚舉与COM中的枚舉不同。它們有效地進行類型轉換。.NET中有兩种枚舉，其中一种作為常數枚舉處理，另一种作為位字段處理。只有后一种枚舉才針對位類操作。在VEE中，枚舉類型在Function & Object Browser的描述區中顯示其底層積分值。可以与VEE范例examples\dotnet\FileAttributes.vee中一樣，在后一种枚舉中使用bitOr、bitAnd等等。

  • Function & Object Browser中新增了一個Copy to Clipboard按鈕。可以使用這個按鈕，把公式文本拷貝复制到剪切板中，以后再把它粘貼到公式框中任何地方。這特別适合希望在一個公式框中有多個公式語句的情況。

限制

VEE不支持創建.NET Delegates。

范例

asClrType范例請參閱StringSplit.vee。

調用Instance和Static方法的范例請參閱FileInfo.vee

.NET程序的其它范例請參閱.NET范例。


VEE Pro 數据類型和 .NET 數据類型間的轉換

對所有的VEE 和 .NET的數据類型，比如 Int16, Int32, Real64, 等等，VEE都可以把它們在 VEE 和 .NET 之間自動轉換。有時，你也許希望禁止這樣的自動轉換以便把數据作為一個真正的.NET 對象來處理。這時，你可以使用 asClrType 類型轉換函數把 VEE 數据類型轉換為.NET/CLR 類型。詳情請參閱下表。

用途

VEE 中的.NET 操作通常可以接受一個精度擴展（類型提升）的數据類型作為參數，但不能接受一個精度降低 (類型降級) 數据類型。比如，可以把一個 VEE 的 UInt8 型的數傳給一個要求System.Int16型參數的 .NET 操作，但反之不行。另外，如果 .NET 操作需要一個 ByRef 參數而且需要返回結果，那么數据類型就必須完全匹配。比如，如果 .NET 方法需要一個 ByRef Int32 型的參數，就只能傳 VEE 的 ByRef Int32 型數据。如果不需返回結果，就可以跳過 ByRef 關鍵字而使用通常的參數規則就行了。

下列表格解釋了在 VEE 和 .NET 之間進行類型轉換的函數。

如何使用 asClrType, 請參閱 StringSplit.vee.

表格

表 1 - 在VEE 8.0 中，將.NET 標量數据轉換為 VEE 的數据類型。

.NET 數据類型 | VEE 數据類型 | 注釋
System.Boolean | Int16 | 使用 isVariantBool() 确定 VEE Int16 是否為 System.Boolean 數据類型。
System.Byte | Uint8 |
System.Char | Object | System.Convert.To* 可以用于轉換出一個 VEE 可以自動轉換的 .NET 數据類型。比如， ToInt32()。
System.DateTime | Object | 參閱 examples\dotnet\DateTime.vee.
System.Decimal | Object | 可以用于轉換出一個 VEE 可以自動轉換的 .NET 數据類型。比如，ToInt32(). 如果值不能轉為一個Int32 型的數，會發生代號為 751 的錯誤，表示一個System.OverflowException。System.Decimal 結構本身也提供了一些轉換方法。
System.Double | Real64 |
System.Enum | Object | 參閱 examples\dotnet\FileInfo.vee.
System.Int16 | Int16 |
System.Int32 | Int32 |
System.Int64 | Int64 |
System.SByte | Object | 可以用于轉換出一個 VEE 可以自動轉換的 .NET 數据類型。比如 ToInt16().
System.Single | Real32 |
System.String | Text | VEE 自動地把字符串轉換為文本。如需使用 System.String 類中的功能，可以使用asClrType 把文本轉換為 System.String，如 Set dotNetString = asClrType(veeText, System.String); ModifiedString = dotnetString.Replace( ,_); 另請參閱 examples\dotnet\stringsplit.vee
System.UInt16 | Object | System.Convert.To* 可以用于轉換出一個 VEE 可以自動轉換的 .NET 數据類型，比如， ToInt32()。
System.UInt32 | Object | System.Convert.To* 可以用于轉換出一個 VEE 可以自動轉換的 .NET 數据類型，比如， ToInt32()。如果值不能轉為一個Int32 型的數，會發生代號為 751 的錯誤，表示一個System.OverflowException。
System.UInt64 | Object | System.Convert.To* 可以用于轉換出一個 VEE 可以自動轉換的 .NET 數据類型，比如， ToInt64(). 如果值不能轉為一個Int64 型的數，會發生代號為 751 的錯誤，表示一個System.OverflowException。
System.Object | Object |

表 2 - 在VEE 8.0 中，將 VEE 的數据類型轉換為.NET 標量數据 。

VEE 數据類型 | .NET 數据類型 | 注釋
Boolean | System.Boolean | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Int16 | System.Int16 | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Int32 | System.Int32 | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Int64 | System.Int64 | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Real32 | System.Single | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Real64 | System.Double | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Text | System.String | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
UInt8 | System.Byte | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
<scalar of type *> | System.Boolean | asVariantBool() 可用于任何 VEE 可以被轉換為一個 Int16, (UInt8, Int16, Int32, Real32, Real64, Text)的標量數据類型。也可以使用更為通用的 asClrType, 如 asClrType(veescalar, System.Boolean).
Date/Time | System.DateTime | VEE 中的日期/時間以 Real64 類型存貯。使用 asClrType(veeDateTime, System.DateTime). 請參閱 examples\dotnet\DateTime.vee.
Object | System.Object | 如果VEE由一個指向 .NET 對象的指針。

表 3 - 在VEE 7.5 中，將.NET 標量數据轉換為 VEE 的數据類型。

.NET 數据類型 | VEE 數据類型 | 注釋
System.Boolean Array | In16 Array | 使用 isVariantBool() 确定 一個數組是否為 System.Boolean 數据類型。
System.Byte Array | UInt8 Array |
System.Char Array | Object | VEE 對象有一個指向 System.Array .NET 對象的指針。 可以使用公式 CreateInstance(mscorlib,System.String,charArray).ToString() 把一個數組轉換為一個VEE 可以被轉換的 .NET 數据類型。
System.DateTime Array | Object | The VEE object holds a pointer to a System.Array .NET object.
System.Decimal Array | Object | VEE 對象有一個指向 System.Array .NET 對象的指針。 System.Convert.To* 可以用于將每一個數組成員轉換成 VEE 可以自動轉換的 .NET 數据類型，如 ToInt32()。如果值不能轉為一個Int32 型的數，會發生代號為 751 的錯誤，表示一個System.OverflowException。System.Decimal 結構本身也提供了一些轉換方法。
Double Array | Real64 Array |
System.Enum Array | Object | VEE 對象有一個指向 System.Array .NET 對象的指針。
System.Int16 Array | Int16 Array |
System.Int32 Array | Int32 Array |
System.Int64 Array | Object | VEE 對象有一個指向 System.Array .NET 對象的指針。 System.Convert.To* 可以用于將每一個數組成員轉換成 VEE 可以自動轉換的 .NET 數据類型，如 ToInt32()。如果值不能轉為一個Int32 型的數，會發生代號為 751 的錯誤，表示一個System.OverflowException。System.Decimal 結構本身也提供了一些轉換方法。.
System.SByte Array | Object | VEE 對象有一個指向 System.Array .NET 對象的指針。 System.Convert.To* 可以用于將每一個數組成員轉換成 VEE 可以自動轉換的 .NET 數据類型，如 ToInt16().
System.Single Array | Real32 Array |
System.String Array | Text Array | VEE 自動地把字符串轉換為文本。如需使用 System.String 類中的功能，可以使用asClrType 把文本轉換為 System.String 數組。
System.UInt16 Array | Object | VEE 對象有一個指向 System.Array .NET 對象的指針。 System.Convert.To* 可以用于將每一個數組成員轉換成 VEE 可以自動轉換的 .NET 數据類型，如 ToInt32()。
SystemUInt32 Array | Object | System.Convert.To* 可以用于將每一個數組成員轉換成 VEE 可以自動轉換的 .NET 數据類型，如 ToInt32()。如果值不能轉為一個Int32 型的數，會發生代號為 751 的錯誤，表示一個System.OverflowException
System.UInt64 Array | Object | System.Convert.To* 可以用于將每一個數組成員轉換成 VEE 可以自動轉換的 .NET 數据類型，如 ToInt32()。如果值不能轉為一個Int32 型的數，會發生代號為 751 的錯誤，表示一個System.OverflowException
System.Object Array | Object | VEE 對象有一個指向 System.Array .NET 對象的指針。

表 4 - 在VEE 7.5 中，將 VEE 的數据類型轉換為.NET 標量數据 。

VEE 數据類型 | .NET 數据類型 | 注釋
Int16 Array | System.Int16 Array | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Int32 Array | System.Int32 Array | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Real32 Array | System.Single Array | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Real64 Array | System.Double Array | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
Text Array | System.String Array | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
UInt8 Array | System.Byte Array | 使用 asClrType 轉換為其它 .NET/CLR 類型。請參閱 asClrType 文檔。
< type *> Array | System.Boolean Array | asVariantBool() 可用于任何 VEE 中可以被轉換為一個 Int16, (UInt8, Int16, Int32, Real32, Real64, Text)的數据類型。也可以使用更為通用的 asClrType, 如 asClrType(veeArray, System.Boolean)。
Date/Time Array | System.DateTime Array | VEE 中的日期/時間以 Real64 類型存貯。使用 asClrType(veeDateTime, System.DateTime). 請參閱 examples\dotnet\DateTime.vee.
ref, out, ByRef | 由上面的映射表指明的標量或數組類型。 | 請使用 VEE 的關鍵字 ByRef，否則會導致一個 .NET 操作异常，但是傳入的參數不會改變。 這也許不是 .NET 類的設計者所期望的。

注釋

只有當一個 .NET 方法的參數被顯式地聲明為“Ref” or “Out”（在 C#） or “ByRef”（Visual Basic.NET）時，VEE才能產生關鍵字“ByRef”。每當指定關鍵字“ByRef”后，VEE都會分配額外的內存以接收來自服務器的返回數据。當下列條件滿足時，就會出現問題。

1. 參數類型為 VEE 所支持的一种數組類型 - 文本數組，UInt8 數組, Int16 數組, Int32 數組, Real 32 數組, Real 64 數組。

2. .NET 服務器沒有顯式地把參數聲明為“Ref” or “Out”（C#） or “ByRef”（Visual Basic.NET）。

3. .NET 服務器确實改變了方法中參數的值。

如果上述條件全部滿足，VEE 用戶就得手動地把關鍵字“ByRef”添加到參數前以便從 .NET 服務器獲得改變后的值。


.NET和IVI驅程

什么是IVI? IVI是IVI基金會開發的一种新型儀器驅程標準。IVI基金會是為推廣測試儀器編程規范而成立的團体。這些規范提供了多种好處，但主要好處是簡化了儀器互換能力。如需了解IVI基金會的情況，請訪問︰ http://www.ivifoundation.org/。

為什么要使用IVI-COM驅程? 假設兩家厂商都為一個DMM提供IVI-COM驅程。為滿足IVI標準，基本驅程必須能夠互換。這意味著不管系統上使用哪种驅程，來自任一厂商的DMM都將運行。您的代碼不需任何干預即可重用。

用途

怎樣在VEE中使用IVI-COM驅程? 安裝IVI-COM驅程。如果想為儀器找到驅程，請訪問网址︰ http://www.agilent.com/find/adn。如果您是ADN成員，從菜單中選擇Downloads > Drivers by Driver Type > IVI-COM Drivers and Components。在安裝IVI=COM驅程前，一定要下載和安裝IVI-COM共享組件。此外，在共享組件安裝程序上，一定要選擇標有"Install PIA's"的按鈕。如果您不是ADN成員，那么可以使用安捷倫驅程、評測軟件、文檔和白皮書网上資源。為簽約這一免費服務，請添寫新用戶注冊表。

一旦在系統上注冊了IVI-COM驅程，那么它們可以象任何其它COM組件一樣使用，与大多數COM組件一樣，將出現在Device > .NET References in VEE的COM欄上。

還可以通過 Instrument Manager存取這些驅程，其方式是︰選擇接口，然后選擇Advanced Properties，最后編輯IVI-COM Driver欄。然后可以選擇儀器，點擊IVI驅程按鈕，創建To/From transaction框。

VEE和.NET怎樣使用IVI-COM驅程? 通過.NET的互通技朮。通過互通技朮，IVI-COM驅程可以用于VEE。如果沒有為選擇的COM DLL提供基本互通匯編程序，那么VEE會試圖生成一個Interop Assembly (如果COM .dll參考其它類型庫，那么會生成一個以上的Interop Assembly)。然后，VEE會在Function Object Browser的 .NET Object Assembly References列表中添加Assembly Reference。這時，可以象任何其它COM類型庫一樣調用IVI-COM驅程。

范例

安捷倫建議使用Device > .NET Assembly References COM欄，而不是ActiveX。它將為使用IVI驅程提供更多的所需類型。對這些范例，寫字板很有幫助，應全面利用寫字板。在~installdir\examples\ivi-com中還有許多其它范例。

IVIAgilentSA.vee 和EPM_Averages_IVI_COM.vee

另請參閱

什么是IVI?, .NET和COM, To/From IVI-COM, To/From IVI-COM - Advanced,和COM對象 - 問題診斷


VEE和.NET安全

VEE7.0及其更高版本基于.NET Framework 和CLR 。在進行网絡安裝時存在一個需要考慮的安全問題。如果在网絡驅動器上安裝VEE，

1、打開一個命令提示符。轉到系統驅動器（通常為C盤）。

2、將目錄改成\[winnt or windows]\Microsoft.NET\Framework\v1.1.4322

Caspol 驜achine 𨩅ddgroup 𨯗ll_Code?䮐rl File://[VEEInstallDir]/* FullTrust

3、在提示符下運行下面的命令︰

Caspol 驜achine 𨩅ddgroup 𨯗ll_Code?䮐rl File://[VEEInstallDir]/* FullTrust

VEEInstallDir是VEE在网絡驅動器上的安裝路徑。（Caspol帶有.NET Framework并与VEE一起安裝。）也可以運行.NET Framework Configuration Wizard來達到同樣的效果。在運行上面任一工具時，您必須具有管理權限。

除此之外，如果您的VEE程序引用.NET匯編程序，VEE通常需要在一個可存取的位置生成并且/或者保存組件。例如，如果打開一個來自電子郵件或网絡的包含.NET參考的VEE程序時，沒有先在本地保存，系統會發出警告。


選擇ActiveX控件

在VEE中使用ActiveX控件前，需要通知VEE想使用哪個ActiveX控件。點擊Device [image] ActiveX Control References...，出現的ActiveX Control References對話框會列出Windows Registry注冊的可用控件類型庫。下圖顯示了選中多個控件的對話框。

顯示的列表可能會不同，具体取決于已經安裝的應用程序。在高亮度顯示庫名稱時，其位置會出現在對話框狀態區域中。

在查找想要使用的控件時，點擊复選框by the control name (或雙擊名稱)，會出現一個對號。然后點擊OK，把它們加載到內存中，以供VEE使用，并搜索對象類、調度接口和導出的事件。可以選擇多個控件，但由于選中的庫會占用內存，因此只應選擇打算使用的控件。

如果知道控件存在一個控件類型庫，但沒有出現在列表中，那么在安裝期間可能沒有注冊類型庫。按Browse按鈕，查找列表中缺失的類型庫。在定位和打開類型庫文件時，VEE會試圖注冊類型庫，并把它添加到列表中。


在VEE中添加控件

在VEE程序中添加控件与添加任何其它對象類似。在選擇ActiveX控件后，可以在程序中添加這些控件。點擊Device [image] ActiveX Controls，看到一個級聯菜單，列出選中的控件。范例如下圖所示。

備注

在這個圖及上圖中，在ActiveX Control References對話框中選擇了五個控件，但Device [image] ActiveX Controls級聯菜單中出現了六個控件。某些選項會導致在出現的菜單中添加一個以上的ActiveX控件，這是正常現象。

選擇一個控件，把得到的對象放在VEE工作空間的細節視圖中。可以把控件放在任何上下文中，包括Main、UserObject怯煲erFunction。通過從對象菜單中選擇Cut，或雙擊對象的上下文菜單按鈕，可以刪除控件。參閱下圖。

ActiveX控件主机中的差异

ActiveX控件不同于任何其它VEE對象。与所有其它VEE對象不同，ActiveX控件既沒有輸入端和輸出端，也沒有任何序列輸入端和輸出端。控件不是面向數据流程的。

為使您能夠以訪問其它對象的類似方式訪問控件，VEE在程序中創建了一個專用容器，這個容器是控件的主机。這個容器還可以訪問開發人員在控件中內置的具体屬性。不管功能組合如何，我們都把它們稱為ActiveX控件。

對象菜單中的部分差异如下。Properties和Control Properties菜單項可以訪問兩個不同的屬性集。主机容器的屬性与控件屬性分開。如果想查看与VEE對象相關的典型屬性，在本例中是主机容器，點擊Properties。如果想查看和改變控件開發人員提供的ActiveX控件的屬性，點擊Control Properties。

如果開發人員提供了聯机幫助，控件Properties對話框上的Help按鈕可以打開聯机幫助。對象菜單的Help項打開主机容器的VEE Online Help內容。Create Event Handler...和Edit Event Handler...提供了處理Automation對象事件中ActiveX automation對象介紹的相同功能。


在VEE中使用ActiveX控件

在VEE工作區中添加控件時，控件會在標題欄中出現指配的局部變量名稱。雙擊控件的標題欄，出現ActiveX Control Properties對話框，可以改變指配的變量。在General欄下，改變Name:旁邊的值。

由于控件沒有用線連接到程序中其它對象的端，因此必須使用通過變量名稱指稱控件的Formula對象中的表達式處理控件。這些表達式必須出現在与控件相同的上下文中，因為控件變量名稱的作用范圍是"local to context"。

使用指配的局部變量

如果在程序中添加Calendar控件，其指配局部變量名稱Calendar。標題欄中包含Calendar。為与控件交互，添加上下文与Calendar控件相同的Formula對象。下面的范例演示了在稱為Calendar的VEE局部變量參考的ActiveX控件上設置屬性，獲得屬性，及調用方法︰

Calendar.Day = 24;

Month = Calendar.Month;

Calendar.AboutBox()

為控件聲明全局變量

如果希望變量名稱是全局的，那么使用Declare Variable (Data [image] Variable [image] Declare Variable)聲明新的變量名稱。這与聲明Automation對象變量中描述的變量聲明類似。由于控件的變量名稱已經存在，如Calendar，不能把它聲明為全局變量，因為VEE不允許出現這种沖突。常用的命名慣例是調整局部變量名稱(如在g_localName中)，得到g_calendar。

在Declare Variable中，輸入新的變量名稱，把Scope設置成Global，把Type:設置成Object。不需要复選Specify Object Type，指定特定的Library和Class。但是，如果進行這种操作，VEE將自動檢查類型，保証只為聲明變量指配Library和Class。

在聲明全局變量后，使用Formula表達式，把控件的局部變量名稱(如Calendar)設置成等于聲明變量名稱(如g_calendar)。非常重要的一點是使用SET關鍵字，如下面的表達式中所示︰

SET g_calendar = Calendar


處理ActiveX控件

設置和獲得屬性、調用方法及處理ActiveX控件事件使用的机制与處理Automation對象和處理Automation對象事件中為ActiveX automation對象描述的机制相同。

盡管VEE在主机對象中包含ActiveX控件，從而可以訪問ActiveX控件，但在程序運行時控件行為略有差別。基本上，一次只能在一個地方查看控件，包括細節視圖和面板視圖。

例如，假設在程序的細節視圖中添加一個控件，程序會動態顯示一個面板，在這個面板上會使用Show Panel on Execute或 showPanel()出現控件。控件在細節視圖中會隱去，直到面板關閉。在面板關閉時，控件會重新出現在細節視圖中。


在VEE中使用ActiveX Automation

ActiveX automation允許使用VEE作為自動化控制器，控制其它Windows應用程序，如Microsoft Word, Excel, Access和Crystal Reports。可以執行各种操作，如把數据發送到應用程序中生成報告，從應用程序中讀回數据。對支持自動化功能的應用程序，這會替代Dynamic Data Exchange (DDE)。

各個厂商提供了ActiveX控件。它們通過ActiveX automation屬性、方法和事件提供域專用服務，擴展了VEE的功能。大多數ActiveX控件還提供了一個用戶界面，允許處理控件，如"滑尺"，把值輸入程序中，就象使用VEE Slider對象一樣。

VEE不支持所有ActiveX控件。如果控件不兼容VEE，那么在程序中添加控件，或在使用控件時，可能會發生錯誤。這里列出了已經知道不能正确工作的控件。

備注

為實現ActiveX支持，必須在Default Preferences對話框中在General欄下把VEE設置成VEE 5或更高的Execution Mode。VEE 8是新程序的默認模式。VEE窗口底部的狀態欄顯示了當前模式。如果要在使用VEE3.x, 4.x或5.x版開發的程序中添加ActiveX功能，在添加新功能前，确認程序在VEE 5或更高的Execution Mode下運行。如需更多信息，參閱Help菜單下Contents and Index中的Tell me about.. Execution Modes。

我們提供了多個范例，演示了怎樣使用ActiveX automation和ActiveX控件。其位于VEE安裝目錄下的\examples\ActiveXAutomation and \ActiveXControls。為打開和運行這些范例，使用Help [image] Open Example...。


在VEE中使用Automation對象

在安裝Windows應用程序時，極有可能已經安裝了ActiveX類型庫，允許應用程序作為automation服務器使用。類型庫描述ActiveX對象的功能，在系統上存在時可以使用這些類型庫。由于下述原因，可能會首選使用特定的類型庫︰

• 在定義對象類型時令VEE在為ActiveX對象聲明的變量上進行類型檢查(參閱聲明Automation對象變量)。

• 捕捉automation對象生成的事件(參閱處理Automation對象事件)。

• 查看ActiveX Object Browser中的信息(參閱使用ActiveX Object Browser)。

為選擇想在程序中參考的類型庫，點擊Device [image] ActiveX Automation References…，出現ActiveX Automation References對話框，列出Windows Registry注冊的所有類型庫。下圖顯示了對話框，其中選擇使用Microsoft Access庫。

顯示的列表可能會不同，具体取決于已經安裝的應用程序。在高亮度顯示庫名稱時，其位置會出現在對話框狀態區域中。在查找想要使用的automation服務器時，點擊复選框by the library name (或雙擊名稱)，會出現一個對號。然后點擊OK。

這會加載選擇的類型庫，搜索對象類、調度接口和導出的事件。可以選擇多個庫，但由于選中的庫會占用內存，因此只應選擇打算使用的庫。

如果知道automation服務器存在一個類型庫文件，但沒有出現在列表中，那么在安裝相關應用程序時可能沒有注冊類型庫。按Browse按鈕，查找列表中缺失的類型庫。在定位和打開類型庫文件時，VEE會試圖注冊類型庫，并把它添加到列表中。


聲明Automation對象變量

可以使用新的Object數据類型為ActiveX automation對象聲明一個變量(Data [image] Variable [image] Declare Variable)。聲明變量參考活在另一個程序中的對象。例如，它可能會指向Access中的一個ComboBox。如下圖所示，在把變量Type設為Object，把Sub Type設為COM時，對話框會展開，列出庫名稱、類和啟動的事件。

通過點擊Edit按鈕，進入Specify Object Type對話框，設置庫和類名稱，啟動為類提供的事件，可以進一步指定對象變量的類型。

如果正在使用Access Object Library，可以聲明一個變量結合物，然后把對象類型指定為Library: Access和Class: ComboBox，如下圖所示。在本例中，ComboBox類包含多個事件。為使用這些事件，點擊Enable Events。如果沒有為類提供事件，那么复選框會變成灰色。

在指定對象類型后，點擊OK，對話框消失，返回Declare Variable，顯示信息。

如果啟動事件，那么可以為希望捕獲的每個事件創建一個事件處理器UserFunction。如需与使用事件有關的信息，參閱處理Automation對象事件。

与任何VEE變量一樣，聲明變量是可選的，這樣做不會在程序中創建automation對象。但是，如果為automation對象聲明變量，并指定對象類型細節，那么VEE會自動進行類型檢查，以保証只為聲明變量指配指定Library和Class類型。


在程序中創建Automation對象

為從VEE控制服務器應用，需要在程序中創建一個Automation對象。CreateObject函數允許進行這种操作。為把函數放在程序中，點擊工具欄上的fx按鈕，出現Function & Object Browser，然后選擇︰

Type: Built-in Functions
Category: ActiveX Automation
Member: CreateObject

點擊Create Formula，把Formula對象放在程序中。Formula包含下面的表達式。

CreateObject(ProgID)

需要修改這個表達式，以執行所需的操作。

備注

ProgID是人可以讀的字符串，确定希望創建的Automation對象。如果想确定automation對象的ProgID，參閱厂商提供的文檔。

在大多數情況下，需要在服務器應用的新實例中創建一個新的automation對象實例。例如，下面的VEE表達式啟動Excel的一個新實例(即使Excel已經在運行)，為捆綁到Excel變量的新"Workbook"對象返回一個參考。

SET excel = CreateObj

ect("Excel.Sheet")


使用分布式組件對象模型(DCOM)

DCOM允許Automation客戶端(VEE)遠程控制Automation服務器(Excel, Access, 等等)。可以在一台計算机上運行VEE，控制在另一台計算机上運行的Automation服務器，如Excel。第二台計算机不需要安裝VEE，只需安裝VEE控制的應用程序。

為此，CreateObject函數獲取可選的第二個參數，指定安裝對象的遠程主計算机(服務器)的名稱。(這一功能要求在客戶端和服務器上同時安裝DCOM，并要求已經使用dcomcnfg.exe配置相應的安全設置) 通過使用這個額外的參數，CreateObject()的定義類似于︰

CreateObject ("ProgID", ["hostName"])

其中hostName的類型必須是Text。可以作為有效UNC或DNS域名指定hostName。下面是有效的hostName規范︰

Set obj = CreateObject ("ProgID", "server")=9-

Set obj = CreateObject ("ProgID", "\\\\server")

Set obj = CreateObject ("ProgID", "server.domain.com")

Set obj = CreateObject ("ProgID", "135.5.33.19")

VEE不能程控實例化遠程計算机上的對象使用的安全設置，這可以通過dcomcnfg.exe程序靜態完成。


獲得現有的Automation對象

如果已經創建了一個automation對象，通過使用GetObject函數，可以得到一個活動的對象或從文件中加載現有的對象。為把函數放在程序中，點擊工具欄上的fx按鈕，出現Function & Object Browser，然后選擇︰

Type: Built-in Functions

Category: ActiveX Automation

Member: GetObject

點擊Create Formula，把Formula對象放在程序中。Formula包含表達式︰

GetObject("fileName", "ProgID")

需要修改這個表達式，以執行所需的操作。

下面的表達式得到一個活動的對象，返回一個當前運行Excel程序的Application對象參考。如果Excel沒有運行，那么這一調用將失敗。

SET excel = GetObject("","Excel.Application")

下面的表達式從文件中加載一個現有的對象。ProgID參數是可選參數︰

SET excel = GetObject("d:/tmp/TestData.xls","Excel.Sheet")

或

SET excel = GetObject("d:/tmp/TestData.xls")

它們返回一個与當前運行的Excel應用中d:\tmp\TestData.xls相關的工作表對象參考。如果Excel還沒有運行，那么會啟動Excel，然后加載對象。如果省略ProgID，那么VEE會使用組件對象模型(COM)庫，确定文件与哪個應用相關。


處理Automation對象

在創建automation對象后，可以處理對象，控制服務器應用。處理automation對象涉及三個基本操作︰獲得屬性，設置屬性，調用方法。本節使用前面初始化的名為cell、sheet和excel的對象變量，演示了這些基本操作。同時，本節介紹了VEE關鍵字SET和ByRef。

獲得和設置屬性

本節中的表達式提供了獲得和設置對象屬性的范例。下面的表達式獲得一個屬性，其中value屬性返回單元格的內容︰

contents = cell.value

在下面的表達式中，value屬性返回單元格的內容︰

contents = sheet.cells(1,1).value

下面的表達式進行的獲得屬性操作与上一個表達式相同，由于默認屬性(參閱下面的介紹)，它暗示了.value屬性︰

contents = sheet.cells(1,1)

有時您需要得到右面的內容、值和默認屬性(默認情況)，有時您需要一個指針指向右側的對象，而不是其值。為得到對象指針，需要使用SET，告訴VEE不要獲得默認值。下面的表達式設置對象參考，其中單元格變量設置成參考單元格"集合"之外的單元格︰

SET cell = sheet.cells(1,1)

本例与第二個范例之間的區別是，SET指定左面需要右面的對象本身，而不是其默認屬性。

下面的表達式是設置對象屬性的范例。由于默認屬性，下面三個表達式完全相同︰

cell.value = "Test Data2:"

sheet.cells(1,1).value = "Test Data2"

sheet.cells(1,1) = "Test Data2"

關于默認首選項

大多數automation對象支持默認屬性或方法的概念。在處理上面的范例中所示的automation對象時，可以使用這一概念。在單元格中，其默認屬性是value。因此，上面獲得屬性的第一個范例可以使用這一概念，暗示.value屬性，其輸入內容為︰

contents = cell

這意味著表達式

contents = sheet.cells(1,1)

不僅從單元格集合中返回一個單元格，而且還會對表達式中該單元格上的默認屬性(.value)求解︰

contents = sheet.cells(1,1).value

為從單元格集合中獲得單元格本身，必須在表達式中使用關鍵字SET，如︰

SET cell = sheet.cells(1,1)

這會把單元格設置成指向Excel中該單元格的一個指針。把它与下面的表達式進行對比︰

contents = sheet.cells(1,1)

(如上所述) 其中contents獲得Excel中該單元格的內容。此外，Set Property暗示了.value屬性，以便下面兩個表達式執行完全相同的函數︰

cell.value = "Test Data”

cell = "Test Data"

調用方法

調用方法与獲得屬性類似，但方法有圓括號類()函數，可以獲得參數。屬性一般用來獲得或設置對象的屬性值。方法一般用來執行操作。

下面的表達式是在對象上調用方法的范例。

result = excel.CheckSpelling("aardvark")

在默認情況下，根据值傳送參數。例如，cells(1,1)實際上會調用一個方法，傳送兩個參數(1和1)。根据值傳送參數只會把參數值傳送到Excel，然后發回一個返回值。參數值保持不變。

某些automation方法擁有根据參考傳送的參數。automation服務器會改變參數值，新的參數值會傳回到VEE。例如，ActiveX儀器控件可能會包含下面的表達式調用的automation方法︰

passed = Scanner.GetReading (ByRef Reading)

其中，如果getReading工作，那么方法對passed的返回值為true，否則為false，任何其它值在ByRef參數Reading中返回。應該在傳送到函數前初始化變量Reading，并在包含表達式的Formula對象上有一個輸出端，以便能夠使用任何返回的值。

VEE中支持ByRef關鍵字，Function & Object Browser在信息區域中顯示使用ByRef傳送的參數。ByRef不支持所有數据類型。參閱表格“在VEE 5執行模式下從VEE數据類型轉換成Automation Scalar數据類型”。

使用枚舉

類型庫可以提供枚舉，這些枚舉出現在VEE的Function & Object Browser的Class區域中。枚舉使得使用對象方法和屬性變得更加容易。例如，Excel中的Window對象有一個WindowState屬性。WindowState屬性的類型是XlWindowState枚舉。這一枚舉有三個值︰

xlMaximized (-4137)

xlMinimized (-4140)

xlNormal (-4143)

VEE支持枚舉，在使用對象方法和屬性時允許使用下面的表達式︰

Window.WindowState = xlMinimzed

使用ActiveX Object Browser

ActiveX Object Browser是在按工具欄上的fx時打開的Function & Object Browser的一部分。在選擇Type: ActiveX Objects時，瀏覽器配置會變化。瀏覽器允許瀏覽ActiveX對象提供的屬性、方法和事件。只有在選擇automation或控件類型庫時(Device [image] ActiveX Automation References或ActiveX Control References)，這里才會出現ActiveX信息。帶有Access類型庫 ActiveX信息的Function & Object Browser如下。

在選擇一個Library名稱時，Class區域顯示可用的調度接口(dispinterfaces)和枚舉。對選中的dispinterface，可用的屬性、方法和事件出現在Member區域中。對枚舉，會列出常數。上圖顯示了為Access庫提供的部分功能。選中的ComboBox dispinterface包含Member區域中列出的屬性、方法和多個事件。下圖顯示了瀏覽器的Classes區域和Members區域各項之間的關系，包括標識圖標︰

如果automation對象提供了幫助信息，那么瀏覽器的信息區域(就在按鈕的上方)會顯示与屬性、方法、事件或常數有關的幫助字符串。這种語法在參數列表中包含對象的類型信息。帶方括號[ ]的參數是可選的參數。某些應用程序可能沒有提供這些簡便的幫助字符串。

為ActiveX對象的屬性、方法參數和返回值提供類型信息。如果沒有指定參數類型，那么默認類型是VT_VARIANT。在大多數情況下，VEE自動處理VT_VARIANT類型轉換。參閱這個表格及下面的說明，了解与Automation數据類型和VEE數据類型轉換有關的更多信息。

對屬性，瀏覽器顯示与屬性有關的類型信息，比如是只讀屬性還是只寫屬性，以及是不是默認屬性。可以創建一個Formula對象，執行獲得或設置該屬性的操作。下面是瀏覽器在屬性的信息區域中顯示的內容范例︰

DEFAULT PROPERTY Name as Text

對方法，瀏覽器顯示与參數列表中每個參數和返回值有關的類型信息。方法也可以是默認成員，以便瀏覽器也顯示這些信息。可以為配置成調用該方法的方法創建一個Formula對象。下面是瀏覽器在方法的信息區域中顯示的內容范例︰

METHOD Void SetData(vValue, vFormat)

對事件，瀏覽器顯示与方法相同的類型信息。但是，与事件有關的事件處理器通常由客戶端應用調用。在由automation控制Access的情況下，Access調用事件處理器UserFunction。在使用ActiveX控件的情況下，ActiveX控件調用事件處理器UserFunction。

由于程序或VEE不調用這些向回調用事件處理器，因此Create Formula按鈕會變成灰色。只能查看与事件有關的信息。Function & Object Browser不允許創建事件處理器UserFunctions，因為事件必須与某個ActiveX automation變量或一個ActiveX控件捆綁起來。

為創建事件處理器，進入相應Declare Variable或ActiveX控件的對象菜單。下面是瀏覽器在事件的信息區域中顯示的內容范例︰

EVENT Void Click()

對枚舉中的常數，瀏覽器顯示常數值。下面是瀏覽器在常數信息區域中顯示的內容范例︰

CONSTANT tvwRootLines = 1

對小于0及大于1024的常數值，VEE還顯示常數的十六進制值。這些信息顯示為︰

CONSTANT xlNormal = -4143 (#HFFFFEFD1)

如果對象提供幫助信息，那么點擊Help按鈕會打開与選中的ActiveX對象成員有關的幫助文件和主題。如果沒有提供此類信息，那么會出現一個對話框，指明沒有為選中的成員提供幫助信息。這些幫助信息由應用程序厂商提供，不屬于VEE聯机幫助。


數据類型兼容

ActiveX automation 提供對某些數据類型的支持。下面將詳細描述在VEE數据類型和ActiveX automation數据類型之間的轉換。類型轉換是自動進行的。

Table 1 給出了VEE 8執行模式所支持的數据類型轉換及其相應的VEE數据類型。

Table 1 VEE 8執行模式下從Automation Scalar 數据類型到VEE數据類型的轉換

轉換自 Automation 數据類型 | 轉換為 VEE 數据類型 | 注釋
VT_EMPTY | Text | 返回一個空字符("")。使用 isVariantEmpty() 判斷一個variant是否為VT_EMPTY類型。
VT_NULL | Text | 返回一個空字符("")。使用 isVariantNULL() 判斷一個variant是否為VT_NULL類型。
VT_UI1 | UInt8 |
VT_I2 | Int16 |
VT_I4 | Int32 |
VT_I8 | Int64 |
VT_R4 | Real32 |
VT_R8 | Real64 |
VT_CY | Real64 | 將一個整數部分為8字節的定點整數且有4位小數的數轉換為一個VEE的Real64類型的數。使用isVariantCurrency()判斷一個variant是否為VT_CY類型。
VT_DATE | Real64 | 將從12/30/1899開始的天數轉換為VEE的日期/時間表示形式，即從 Jan 1, 0001起的秒數。
VT_BSTR | Text |
VT_DISPATCH | Object |
VT_ERROR | Int32 | 返回一個Int32類型的scode值。 使用 isVariantError() 判斷一個variant是否為VT_ERROR類型。
VT_BOOL | Boolean |
VT_VARIANT | * | 只在對ByRef有效(VT_VARIANT | BYREF) variant指向另一個variant。 VEE將基于嵌入的variant類型創建一個容器。
VT_UNKNOWN | Object |

Table 2 給出了VEE 6&7執行模式所支持的數据類型轉換及其相應的VEE數据類型。

Table 2 VEE 6&7執行模式下從Automation Scalar 數据類型到VEE數据類型的轉換

轉換自 Automation 數据類型 | 轉換為 VEE 數据類型 | 注釋
VT_EMPTY | Text | 返回一個空字符("")。使用 isVariantEmpty() 判斷一個variant是否為VT_EMPTY類型。
VT_NULL | Text | 返回一個空字符("")。使用 isVariantNULL() 判斷一個variant是否為VT_NULL類型。
VT_UI1 | UInt8 |
VT_I2 | Int16 |
VT_I4 | Int32 |
VT_I8 | Int64 |
VT_R4 | Real32 |
VT_R8 | Real64 |
VT_CY | Real64 | 將一個整數部分為8字節的定點整數且有4位小數的數轉換為一個VEE的Real64類型的數。使用isVariantCurrency()判斷一個variant是否為VT_CY類型。
VT_DATE | Real64 | 將從12/30/1899開始的天數轉換為VEE的日期/時間表示形式，即從 Jan 1, 0001起的秒數。
VT_BSTR | Text |
VT_DISPATCH | Object |
VT_ERROR | Int32 | 返回一個Int32類型的scode值。 使用 isVariantError() 判斷一個variant是否為VT_ERROR類型。
VT_BOOL | Int16 | 使用isvariantBool()來确定一個variant是否為VT_BOOL類型。
VT_VARIANT | * | 只在對ByRef有效(VT_VARIANT | BYREF) variant指向另一個variant。 VEE將基于嵌入的variant類型創建一個容器。
VT_UNKNOWN | Object |

Table 3 給出了VEE 5執行模式所支持的數据類型轉換及其相應的VEE數据類型。

Table 3 VEE 5執行模式下從Automation Scalar 數据類型到VEE數据類型的轉換

轉換自 Automation 數据類型 | 轉換為 VEE 數据類型 | 注釋
VT_EMPTY | Text (empty string) |
VT_NULL | Text (empty string) |
VT_UI1 | <generates error> | 無符號字符
VT_I2 | Int32 |
VT_I4 | Int32 |
VT_I8 | Int64 |
VT_R4 | Real64 |
VT_R8 | Real64 |
VT_CY | Real64 | 將一個整數部分為8字節的定點整數且有4位小數的數轉換為一個VEE的Real64類型的數。使用
VT_DATE | Real64 | 將從12/30/1899開始的天數轉換為VEE的日期/時間表示形式，即從 Jan 1, 0001起的秒數。
VT_BSTR | Text |
VT_DISPATCH | Object |
VT_ERROR | <generates error> |
VT_BOOL | Int32 |
VT_VARIANT | * | 只在對ByRef有效(VT_VARIANT | BYREF) variant指向另一個variant。 VEE將基于嵌入的variant類型創建一個容器。
VT_UNKNOWN | Object |

Table 3 和 Table 4 VEE 7和8執行模式所支持的數据類型轉換及其相應的ActiveX automation數据類型。与上述一個反向轉換的表不同，下面的轉換不是一對一的映射。大部分 ActiveX automation 服務器對象都能將數据轉換為所要得類型。

比如，如果你的目標屬性為一個長整數，比如一點的X坐標，你就不僅可以傳遞一個完全匹配的具有Int32類型的數，你還可以傳遞一個實數甚至一個字符串只要它是由數字組成就行了。 然而，對一個總被當作VARIANT傳遞的數組來說， 可以接受的數据類型和數組形狀將取決于目標 COM 對象。

Table 3 VEE 8執行模式下從VEE數据類型到Automation Scalar 數据類型的轉換

轉換自 VEE 數据類型 | 轉換為 Automation 數据類型 | 注釋
Uint8 | VT_UI1 |
Int16 | VT_I2 |
Int32 | VT_I4 |
Int64 | VT_I8 |
Real32 | VT_R4 |
Real64 | VT_R8 |
Text | VT_BSTR |
Boolean | VT_BOOL | asVariantBool() 可以用于任何可被轉為 Int16, (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。
<scalar of type *> | VT_CY | asVariantCurrency() 可以用于任何可被轉為 Real64 (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。
<scalar of type *> | VT_DATE | asVariantDate() 可以用于任何可被轉為 Real64 (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。
<scalar of type *> | VT_ERROR | asVariantError() 可以用于任何可被轉為 Int32 (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。 Value of Int32 is 該錯誤將被指定一個Int32類型的scode(錯誤碼)。
Variant | <scalar of variant type *> | 當前的VEE容器的類型被轉換為合适的 variant 類型。例如，如果Variant容器 有一個 VEE Int32, VEE酒會創建一個VT_I4類型的 variant。
Object | VT_DISPATCH | 如果VEE有一個指向IDispatch對象的指針。
Object | VT_UNKNOWN | 如果 VEE 有一個 IUnknown 指針而不是一個 IDispatch指針。

Table 4 VEE 6&7執行模式下從VEE數据類型到Automation Scalar 數据類型的轉換

轉換自 VEE 數据類型 | 轉換為 Automation 數据類型 | 注釋
Uint8 | VT_UI1 |
Int16 | VT_I2 |
Int32 | VT_I4 |
Int64 | VT_I8 |
Real32 | VT_R4 |
Real64 | VT_R8 |
Text | VT_BSTR |
<scalar of type *> | VT_BOOL | asVariantBool() 可以用于任何可被轉為 Int16, (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。
<scalar of type *> | VT_CY | asVariantCurrency() 可以用于任何可被轉為 Real64 (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。
<scalar of type *> | VT_DATE | asVariantDate() 可以用于任何可被轉為 Real64 (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型
<scalar of type *> | VT_ERROR | asVariantError() 可以用于任何可被轉為 Int32 (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。 Value of Int32 is 該錯誤將被指定一個Int32類型的scode(錯誤碼)。
Variant | <scalar of variant type *> | 當前的VEE容器的類型被轉換為合适的 variant 類型。例如，如果Variant容器 有一個 VEE Int32, VEE酒會創建一個VT_I4類型的 variant。
Object | VT_DISPATCH | 如果VEE有一個指向IDispatch對象的指針。
Object | VT_UNKNOWN | 如果 VEE 有一個 IUnknown 指針而不是一個 IDispatch指針。

Table 5 是VEE 5執行模式所支持的數据類型轉換及其相應的ActiveX automation數据類型。

Table 5 VEE 5執行模式下從VEE數据類型到Automation Scalar 數据類型的轉換

轉換自 VEE 數据類型 | 轉換為 Automation 數据類型 | 注釋
Int32 | VT_I4 |
Int64 | VT_I8 |
Real64 | VT_R8 |
Text | VT_BSTR |
Object | VT_DISPATCH | 如果VEE有一個指向IDispatch對象的指針
Object | VT_UNKNOWN | 如果 VEE 有一個 IUnknown 指針而不是一個 IDispatch指針。

Table 6 顯示了在VEE 8 執行模式下，從Automation的數組數据類型到VEE數据類型的轉換。

Table 6 VEE 8 執行模式下，從Automation的數組數据類型到VEE數据類型的轉換

轉換自 Automation 數据類型 | 轉換為 VEE 數据類型 | 注釋
VT_UI1 | UInt8 Array |
VT_I2 | Int16 Array |
VT_I4 | Int32 Array |
VT_I8 | Int64 Array |
VT_R4 | Real32 Array |
VT_R8 | Real64 Array |
VT_BSTR | Text Array |
VT_BOOL | Boolean Array | 使用isVariantBool()來确定一個variant是否為VT_BOOL類型。
VT_CY | Real64 Array | 將一個整數部分為8字節的定點整數且有4位小數的數轉換為一個VEE的Real64類型的數。使用isVariantCurrency()判斷一個variant是否為VT_CY類型。
VT_DATE | Real64 Array | 將從12/30/1899開始的天數轉換為VEE的日期/時間表示形式，即從 Jan 1, 0001起的秒數。 使用isVariantDate()判斷一個variant是否為VT_DATE類型。
VT_ERROR | Int32 Array | 返回一個Int32類型的scode值。 使用 isVariantError() 判斷一個variant是否為VT_ERROR類型。
VT_VARIANT | <array of homogeneous type OR a record> | 如果數組元素都是同樣的基本數据類型，VEE就會根据創建一個其數据類型由 Table 1中的標量映射關系所決定的數組。VEE的 record用于創建包含混合數据類型的數組。
VT_DISPATCH | N/A | 不支持對象數組。.
VT_UNKNOWN | N/A | 不支持對象數組。

Table 7顯示了在VEE 6&7 執行模式下，從Automation的數組數据類型到VEE數据類型的轉換。

Table 7 VEE 6&7 執行模式下，從Automation的數組數据類型到VEE數据類型的轉換

轉換自 Automation 數据類型 | 轉換為 VEE 數据類型 | 注釋
VT_UI1 | UInt8 Array |
VT_I2 | Int16 Array |
VT_I4 | Int32 Array |
VT_I8 | Int64 Array |
VT_R4 | Real32 Array |
VT_R8 | Real64 Array |
VT_BSTR | Text Array |
VT_BOOL | Int16 Array | 使用isVariantBool()來确定一個variant是否為VT_BOOL類型。
VT_CY | Real64 Array | sVariantCurrency() 可以用于任何可被轉為 Real64 (UInt8, Int16, Int32, Real32, Real64, Text)的標量VEE數据類型。
VT_DATE | Real64 Array | 將從12/30/1899開始的天數轉換為VEE的日期/時間表示形式，即從 Jan 1, 0001起的秒數。 使用isVariantDate()判斷一個variant是否為VT_DATE類型。
VT_ERROR | Int32 Array | 返回一個Int32類型的scode值。 使用 isVariantError() 判斷一個variant是否為VT_ERROR類型。
VT_VARIANT | <array of homogeneous type OR a record> | 如果數組元素都是同樣的基本數据類型，VEE就會根据創建一個其數据類型由 Table 1中的標量映射關系所決定的數組。VEE的 record用于創建包含混合數据類型的數組。.
VT_DISPATCH | N/A | 不支持對象數組。
VT_UNKNOWN | N/A | 不支持對象數組。

Table 8 顯示了在VEE 5 執行模式下，從Automation的數組數据類型到VEE數据類型的轉換。

Table 8 VEE 5 執行模式下，從Automation的數組數据類型到VEE數据類型的轉換

轉換自 Automation 數据類型 | 轉換為 VEE 數据類型 | 注釋
VT_UI1 | Int32 Array |
VT_I2 | Int32 Array |
VT_I4 | Int32 Array |
VT_I8 | Int64 Array |
VT_R4 | Real64 Array |
VT_R8 | Real64 Array |
VT_BSTR | Text Array |
VT_BOOL | Int32 Array |
VT_CY | Real64 Array | 將一個整數部分為8字節的定點整數且有4位小數的數轉換為一個VEE的Real64類型的數。
VT_DATE | Real64 Array | 將從12/30/1899開始的天數轉換為VEE的日期/時間表示形式，即從 Jan 1, 0001起的秒數。
VT_ERROR | <generates error> |
VT_VARIANT | Record | 如果數組元素都是同樣的基本數据類型，VEE就會根据創建一個其數据類型由 Table 1中的標量映射關系所決定的數組。VEE的 record用于創建包含混合數据類型的數組。.
VT_DISPATCH | N/A | 不支持對象數組。
VT_UNKNOWN | N/A | 不支持對象數組。

Table 9 描述的是 Automation 數据類型修改器.

Table 9 Automation 數据類型修改器

Automation Type Modifiers | VEE 類型 | 注釋:
VT_BYREF | 由上面的映射表來确定標量和數組的類型。 | 比如︰ VT_BYREF | VT_BSTR 會產生一個 VEE 字符容器。當為一個VT_VARIANT的標量時，variant 指向另一個 variant。VEE根据嵌入的 variant的類型創建一個容器。

另請參閱

Using ActiveX Automation in VEE, Making Automation Objects Available in VEE, Declaring Automation Object Variables, Creating an Automation Object in a Program, Using Distributed Component Object Model (DCOM), Getting an Existing Automation Object, Manipulating Automation Objects, Deleting Automation Objects, Handling Automation Object Events


刪除Automation對象

在VEE釋放其參考時，Automation對象負責自行刪除。當VEE不再保留automation對象的參考時，它會告訴該對象已經釋放參考，然后對象會自行刪除，除非其它ActiveX automation控制器應用仍在使用對象。在下述情況下，VEE釋放到automation對象的參考︰

• Delete Variable對象在automation對象的變量名稱上執行。但是，VEE也可以有其它指針指向這些Automation對象。如需更多信息，參閱Delete Variable。

• 在Default Preferences中啟動Delete Variables at Prerun，然后重啟程序。

• VEE退出，或使用命令File [image] New或File [image] Open。


處理Automation對象事件

Automation對象可以生成事件。作為automation控制器，VEE允許通過UserFunction捕捉事件。如果已經聲明某個類型的變量，并且已經啟動其事件，那么可以為生成事件的automation對象生成事務處理器UserFunction。對于對象可以生成的每個事件，可以創建一個事務處理器UserFunction。

在為對象聲明變量，并啟動其事件時(如有)，可以創建一個事件處理器UserFunction。

1 在聲明變量并指定其類型后，包括啟動事件，打開Declare Variable對象菜單。

在對象菜單中，點擊Create Event Handler…，出現Create Event Handler UserFunction瀏覽器。參閱下圖。

Member區域列出了Class區域中列出的調度接口可以使用的所有事件。

2 點擊事件名稱，選中這個事件。

在選中一個事件時，瀏覽器信息區域顯示事件細節，狀態區域顯示VEE將創建的UserFunction標題。按Help按鈕，獲得与使用事件有關的信息。并不是所有事件都有聯机幫助，因為庫厂商負責提供聯机文件。事件的聯机幫助并不是VEE聯机幫助的一部分。

3 點擊Create Handler，出現新的UserFunction窗口。如果再次打開這個對話框，創建另一個事件處理器，您會注意到圖標會改變現有處理器事件旁邊的顏色。

除了任何要求的輸入或輸出外，每個新的事件處理器UserFunction都是空的。必須對其編程，相應地處理事件。為編輯現有事件，在Declare Variable對象菜單中，點擊Edit Event Handler...。

事件捆綁到聲明變量的名稱。UserFunction標題把變量名稱与事件名稱組合在一起。例如，如果聲明一個名為combo的變量，并指定其類型為Access.ComboBox，那么可以創建下述名稱的事件處理器UserFunction︰

combo_AfterUpdate

combo_Change

combo_DblClick

combo_KeyDown

事件是向回調用函數。必須編程生成的UserFunctions (向回調用函數)，相應地處理每個事件。如果automation對象生成事件，那么它會調用相關UserFunction，處理事件。在啟動事件時，Automation對象有時會預計VEE提供一個返回值。在這种情況下，必須把UserFunction編程為返回一個值。

在對象預計一個返回值時，它會一直等到VEE提供這個返回值。應編寫一個迅速工作的事件處理器UserFunction，因為VEE和automation服務器(如Access）都會一直等到事件處理器UserFunction返回。

由于automation服務器一直等到事件處理器UserFunction返回，因此UserFunction會在非時間分片模式下執行。也就是說，UserFunction會一直運行，直到結束，而在其余VEE程序中不會進行時間分片。由于不是時間分片，因此斷點在事件處理器UserFunction中不能工作。此外，錯誤不會停止VEE。錯誤會轉換成注意信息，VEE會繼續執行。


盡可能在數組上執行數學運算

在數組上執行數學運算可以大大改善程序性能。例如，假設一項測試必須找到進行的多項測量的平方根。其傳統編程方式是進行一次測量，循環計算平方根。相反，在VEE中，可以把所有測量存儲在一個數組中，通過一個步驟計算數組的平方根。

有兩個程序。第一個程序迭代1024次，每次迭代計算平方根。

第二個程序創建一個由1024個要素組成的數組，計算這個數組的平方根 (得到一個由平方根組成的數組)。

盡管這兩個程序的結果相同 [image] ，但第二個程序的執行速度約比第一個程序快6倍。(本例使用300 MHz Pavilion PC。)

這兩個程序執行速度的差异源于一個對象執行要求的時間。在對象執行時有固定數量的開銷。因此，通過使用數組而不是標量值來減少對象執行的次數，程序運行速度會加快。

在進行定時，以保証兩個程序中定時器先觸發時，最好使用Do對象。斜坡函數會生成一個由1024個要素組成、從0開始、到1023結束的數組。

備注

為保証提高執行速度，一定要在VEE中使用最新的執行模式。為此，點擊File [image] Default Preferences (或使用工具條上的按鈕)。在Execution Mode下選擇VEE6，點擊Save。在VEE窗口底部的狀態條中，應看到列出了VEE6。

另請參閱

盡可能在數組上執行數學運算

盡可能使對象變成圖標

減少程序中的對象數量

優化Agilent VEE程序的其它方式

提高程序速度的關鍵


盡可能把對象變成圖標

VEE必須在屏幕上保持的信息越多，程序運行所需的時間越長。為優化程序，更新內容的對象可以使用圖標視圖，如Counter，而不是使用打開的視圖。在For Count和Counter對象使用圖標視圖時，下面的實例的工作速度約提高了46倍。

另請參閱

盡可能在數組上執行數學運算

減少程序中的對象數量

優化Agilent VEE程序的其它方式

提高程序速度的關鍵


減少程序中的對象數量

隨著經驗增多，您傾向于在VEE程序中使用更少的對象。有另外兩种技朮可以減少對象數量，從而優化程序︰

1 在Formula對象中使用一個公式，而不是使用多個單獨的數學對象。例如，把公式((a + b) * c)/d代入一個Formula對象中，而不是使用多個不同的對象進行加、乘和除。此外，在公式中使用常數，而不是使用連接到輸入上的常數對象。(使用Set Variable設置常數。)

2 把函數調用嵌入到其它函數參數列表中。例如，在第一個程序中， 隨机化函數使用斜坡函數生成的數組。在第二個程序中，調用斜坡函數嵌入在調用隨机化函數中，使程序執行速度略有提高。

另請參閱

盡可能在數組上執行數學運算

盡可能把對象變成圖標

優化Agilent VEE程序的其它方式

提高程序速度的關鍵


優化Agilent VEE程序的其它方式

在相應情況下可以在程序中使用其它優化技朮︰

• 在VEE 4或更高版本的Execution Mode下運行程序，确保正在使用VEE匯編程序。如需更多信息，請參閱“Agilent VEE執行模式”。

• 從面板視圖中、而不是從詳細視圖中運行程序。VEE在屏幕上保持的對象數量會較少。

• 使用全局變量、而不是傳送值(特別是大型數組或記錄)進出UserObjects和UserFunctions。說明所有全局變量。也允許使用局部變量。參閱Data [image] Variable [image] Declare Variable。

• 采集圖形顯示數据，一次性繪制整個數組圖，而不是繪制各個標量點圖。如果圖中的X值間隔均勻，那么使用XY Trace顯示，而不是X vs. Y圖。

• 使用一個擁有多個條件的If/Then/Else對象，而不是使用多個If/Then/Else對象。

• 盡可能簡單地設置圖形顯示。可以加快更新時間的設置是Grid Type [image] None，在Properties對話框中不進行任何复選。只在必要的地方使用AutoScale控制端，在不需要時，關閉Automatic AutoScaling (在Scales文件夾中)。

• 在從文件中讀取數据時，使用ARRAY 1D TO END: (*)處理，而不是一次在一個要素上執行READ處理及使用EOF端。

• 使用Sequencer，控制執行多個UserFunctions的流量，而不是執行單獨的Call對象。

• 在使用Sequencer時，只對要求Log記錄的處理啟動登錄。

• 在使用Strip Charts和Logging AlphaNumeric顯示時，在Properties中把Buffer Size設置成應用使用的最小值。

• 使用三元組運算符 (condition ? expression1 : expression2)，而不是If/Then/Else對象与多個Gate和一個Junction。

• 在使用位圖時，把它們設成Actual或Centered，而不是Scaled，因為Scaled需要的時間要長一些。

• 在使用Fill Bar或Thermometer等指示符時，關閉Show Digital Display。

• 在使用Color Alarms時，如果在不同顏色之間迅速切換，那么關閉Show 3D Border。

除上述技朮外，把其它語言匯編的函數与VEE程序連接起來，可以提高執行速度。下一節介紹了在PC上使用匯編的函數(作為DLL)。

另請參閱

匯編的函數, 使用DLL

盡可能在數組上執行數學運算

盡可能把對象變成圖標

減少程序中的對象數量

提高程序速度的關鍵


提高程序速度的關鍵

本節提供了部分指導準則，幫助您改善VEE程序的性能。

備注

如果您的程序是在VEE 6.0以前的VEE版本上開發的，那么請參閱“使用VEE執行模式” ，了解怎樣轉換程序、以使用匯編程序。

下面的說明將幫助您從匯編程序中獲得最大的速度優勢(在File [image] Default Preferences下Execution Mode設為VEE 4, VEE 5或VEE 6時)︰

• 使用Profiler

可以使用Profiler (位于View [image] Profiler下)，确定哪類例程所用的時間超過預計時間。為運行Profiler︰

1 點擊Start Profiling，然后運行程序。

2 在程序運行結束后，點擊Refresh查看結果。

3 點擊Stop Profiling停止Profiler。點擊Clear清除當前顯示的結果。

• 查看線顏色

在VEE可以在執行前确定數据類型時，線帶有顏色。有顏色的線(非黑色)越多，程序運行速度越快。

• 增加端限制

由于可以從多個地方調用UserFunction，因此在程序運行前VEE不能确定輸入數据類型。為加快UserFunction，應盡可能在數据輸入端上增加端限制。

• 使用聲明變量

如果使用全局變量，那么應盡可能使用Declare Variable (位于Data菜單中)，聲明變量的類型和形狀，以便VEE能夠在執行前推斷其類型。這种技朮還允許設置變量范圍。

• 去掉Autoscale控制輸入

一种常用的編程方式是在圖形顯示屏上執行Autoscale控制輸入，其頻次高于必要的頻次。如果您可以等待執行Autoscale，直到顯示屏完成更新之后，而不是等到匯制了每個點的圖形以后，那么程序的執行速度將更快。通過使用Automatic Scaling屬性 (參閱Scales欄)，可以去掉Autoscale控制輸入，進一步改善執行速度。

• 發送一整套數据

在圖形顯示屏上，在啟動Automatic Scaling屬性時(參閱Scales欄)，如果一整套數据被發送到顯示屏上，那么程序的執行速度會更快。然后顯示屏會自動重新定標一次。如果程序一次把一個數据點發送到顯示屏上，顯示屏可能會在每個數据點之后自動重新定標，這會降低程序執行速度。在這种情況下，使用Collector對象創建一個數組，然后把這個數組發送到顯示屏上。

• 僅執行顯示一次

如果顯示屏將顯示循環的最終輸出，但不跟蹤為每次循環迭代生成的數据(如AlphaNumeric對象，而不是Logging AlphaNumeric)，那么不要在循環中每次執行它。把迭代器的序列輸出端連接到顯示屏的序列輸入端，這樣顯示屏只會執行最后一次。

• 關閉調試功能

一旦知道程序正确運行，那么應在關閉調試功能的情況下運行程序。使用File [image] Default Preferences，在 Debug組中選擇Disable Debug Features。

也可以使用-r選項或運行VEE RunTime。由于在這些模式下不生成調試指令，因此程序運行速度要快得多。但是，您將不能執行任何調試操作，如暫停、步進、Breakpoints、Line Probe、Show Data Flow和Show Execution Flow。

另請參閱

盡可能在數組上執行數學運算

盡可能把對象變成圖標

減少程序中的對象數量

優化Agilent VEE程序的其它方式


故障排除技巧

本節介紹了儀器控制故障排除、常見的情況和可能的恢复措施。下表介紹了儀器控制調試。

問題

解決辦法/原因

儀器根本沒有反應。

必須滿足下面的條件︰

  • 儀器必須通電，并通過正常工作的電纜連接到接口上。必須安裝相應的I/O庫。

  • 對To/From VXIplug&play對象︰必須已經為儀器安裝和配置相應的VXIplug&play驅程文件。此外，必須在Advanced Instrument Properties對話框中為每部儀器指定正确的VXIplug&play地址字符串。每部儀器的地址必須是唯一的。

  • 對Direct I/O、Panel Driver和Component Driver對象︰接口邏輯單元和儀器地址必須与Instrument Properties對話框Address字段中的設置相匹配。每部儀器的地址必須是唯一的。此外，Advanced Instrument Properties對話框中的Live Mode字段必須設置為ON。

  • 您或您的系統管理員必須正确配置VEE，以便与儀器一起使用。在正常情況下，這會在VEE安裝過程中完成。參閱安裝指南。

不能确定儀器地址。

對GPIO和串行接口，儀器地址与接口邏輯單元相同。GPIB儀器地址通過硬件開關或前面板命令設置。詳情請參閱儀器的編程手冊。VXI設備由板卡外面的開關設置(為接觸開關，通常必須從卡槽中拔下板卡)。如需与地址配置有關的進一步信息，請參閱Help => Contects and Index => Tell Me About .. => Configuring Instruments。

不能确定接口邏輯 單元。

接口邏輯單元必須配置与Agilent I/O庫一起提供的I/O Config輔助工具。如需進一步信息，請參閱“安裝Agilent I/O庫”。推荐的邏輯單元設置請參閱表格 推荐的I/O邏輯單元。

下表介紹了VEE一般問題排除方法。

問題 | 可能原因 | 建議解決方法
在VEE 6 Execution Mode中運行VEE 6.0以前的版本創建的程序時，程序沒有按預期方式運行。 |  | 參閱Help => Contects and Index => Tell Me About .. => Execution Mode，了解可能的解決辦法。
UserObject沒有按預期方式運行。 | 可能越過了异步數据的上下文邊界(如連接到UserObject內部一個對象上的XEQ端)。 | 可能的解決辦法1: 把任何异步相關性移到UserObject外面。 可能的解決辦法2: 打開Show Execution Flow或Show Data Flow，查看程序中的操作順序。
希望改變對象的功能。 |  | 使用包括相應功能的對象菜單，其允許添加一個控制輸入端，編輯屬性。
從UserObject內部的循環中只獲得一個輸出值。 | UserObject只激活其輸出一次。 | 從UserObject中去循環部分。
循環只運行一次。 | 循環子線程連接到序列輸出端，而不是數据輸出端。 | 從數据輸出端啟動循環子線程。
For Count沒有運行。 | For Count的值為0或負數。 | 改變值。如果需要負值，把輸出變成負數或使用For Range。
For Range或For Log Range沒有運行。 | 步長大小的符號錯誤。如果From小于Thru，那么Step必須是正數。如果Thru小于From，那么Step必須是負數。 | 改變Step。
VEE似乎中止 -- 指針變成沙漏。 | 可能原因1: VEE正在重新引導直線，因為您已經設置啟動Auto Line Routing，且已經移動對象。 可能原因2: VEE正在打印屏幕或程序。 可能原因3: 您剛剛Cut一個大的對象或大量的對象。VEE正在把對象保存到Paste緩沖器中。 | 等待。如果指針在几分鐘內沒有變回交叉線，那么輸入CTRL+C (或啟動VEE 6.0的終端窗口中的intr設置)，關閉VEE窗口，或停止VEE流程。
不能打開程序，剪切對象或刪除線(該功能變成灰色)。 | 程序仍在運行。 | 按Stop停止程序，然后再試一次。
不能粘貼Paste (該功能變成灰色)。 | Paste緩沖器為空。 | 再次Cut, Copy或Clone一個或多個對象。
不能Cut, Create UserObject或Add to Panel(該功能變成灰色)。 | 沒有選中任何對象。 | 選擇對象，再試一次。
UserObject只輸出生成的最后一個數据要素。 | UserObjects不會在輸出端緩沖器中積累數据。緩沖器只保留收到的最新數据要素。 | 使用Collector把生成的所有數据采集到一個數組中。把這些數据發送到輸出端。
不能退出直線繪制模式。 |  | 雙擊或按Esc，結束直線繪制模式。
在打開程序時得到一個Parse Error對象。 |  | 用新對象替換Parse Error對象。
字符沒有正确出現。 | 使用的是非USASCII鍵盤。 | 恢复信息請參閱配置VEE。
VEE外面的顏色變化(盡管位于VEE中，但VEE顏色是正常顏色)。 | 您使用了所有顏色地圖平面。 | 恢复信息請參閱配置VEE。


Agilent VEE Profiler

Profiler是VEE專業開發環境中的一种功能。通過顯示程序中UserFunctions或 UserObjects的執行速度，Profiler可以幫助您優化程序。

可以使用Profiler識別程序中速度低的點，運用這里介紹的技朮，提高程序速度。下面顯示了examples\Applications\mfgtest.vee程序。

為打開Profiler，選擇View [image] Profiler，然后運行程序。可以在屏幕的下半部分看到Profiler。Profiler列出了与執行每個UserObject和每個UserFunction所需的時間有關的對比信息。

另請參閱

确定執行參數輪廓

Profiler


ActiveX控件

VEE不支持所有ActiveX控件。如果控件不兼容VEE，那么在程序中添加控件時或在使用控件時，可能會發生錯誤。

在發布VEE 8.0時，我們已經知道下述ActiveX控件不能与VEE很好地共同使用，應避免使用這些控件︰

Microsoft Forms Object Library

Microsoft ADO Data Control 6.0

Adobe PDF 7.0 Viewer


在事務對象中發生內存泄漏

在某些情況下，在VEE程序中使用事務對象時會發生存儲器泄漏，如Direct I/O和From File之類的事務對象。

只有在事務對象包含兩個READ事務，且這兩個事務都參考同一個輸出端，但使用不同的數据類型時，才會存在存儲器泄漏情況。下面的成對事務給出了一個實例︰

READ TEXT x STR
READ TEXT x REAL

可以使用下面一种解決辦法，防止存儲器泄漏︰

如果不需要來自第一個事務的x值，那么可以參考稱為null的特殊符號。在第一個READ事務中包括單詞null，而不是使用數据輸出端名稱。對象讀取數据，丟棄數据，然后執行下一個READ事務。事務對象將包含︰

READ TEXT null STR
READ TEXT x REAL

添加第二個輸出端，适應這兩個數据，讓每個事務參考一個不同的數据輸出端。這些事務可能會表現為︰

READ TEXT x STR
READ TEXT y REAL


在表達式錯誤時發生內存泄漏

在某些非常少見的情況下，在Formula對象中或在接受數學表達式的事務對象中使用數學表達式時，可能會發生存儲器泄漏。

在Formula對象使用Error端，且Error端在預計程序執行過程中啟動時，程序可能會發生存儲器泄漏。例如，表達式在執行除以零的運算而導致Error端啟動就屬于這种情況。

接受數學表達式、并使用Error端的事務對象中也存在類似的情況。To File對象可能包含著事務︰

WRITE TEXT a/b EOL

由于事務對象中對數學表達式求解的方式与Formula對象相同，因此存儲器泄漏的可能性也相同。


Error 758

沒有對.NET操作作好準備。

症狀

在安裝人員未能安裝要求的所有組件時，您可能會收到Error 758。兩种最常見的症狀是︰

1. 在選擇Device->.NET Assembly References對話框或Device->Windows Forms Control時，您可能會收到下面的錯誤對話框︰

2. 在選擇I/O->Instrument Manager，點擊儀器的IVI-COM Driver按鈕時，可能會收到下面的注意對話框︰

原因

上面兩种症狀都是由于.NET Global Assembly Cache中沒有安裝共享IVI的組件使用的 Primary Interop Assemblies (PIAs)導致的。

解決辦法

您需要找到.NET Framework 1.1安裝目錄所在的位置。它通常位于<WindowsDir>\Microsoft.NET\Framework\v1.1.4322下。您還需要找到IVI安裝目錄所在的位置。默認目錄應該是<Program Files>\IVI。

打開一個Command Prompt，把目錄變成.NET Framework 1.1安裝目錄，然后運行IVI安裝的批處理文件。例如，如果.NET Framework 1.1安裝在c:\windows\Microsoft.NET\Framework\v1.1.4322，且IVI安裝目錄是c:\program files\IVI，那么命令行應該類似于︰

cd \Windows\Microsoft.NET\Framework\v1.1.4322

𡤧:\Program Files\ivi\bin\Primary Interop Assemblies\IviPiaRegistration.bat? 𡤧:\Program Files\IVI\bin\Primary Interop Assemblies?/p>

如果成功運行上面的批處理文件，您應看到在命令提示符窗口中會顯示類似𨯗ssembly successfully added to the cache?#30340;行。重啟VEE。


Programmatic Properties

下表列出了可以程序化地訪問的VEE對象的屬性。

屬性 | 對象
BackColor, ForeColor, Title, Size, Location, and Visibility | 所由VEE對象
Value | Toggle Controls, Constants, Continuous Controls
EnumValue, EnumValues, EnumIndex | Selection controls
EnableOnPing | Confirm (OK) Objects
EnableEditing | 帶有"Enable/Disable Editing"控制輸入端的VEE數据對象
PopupPanelTitle | Main, UserFunctions, 和 UserObjects
Size and Location | Main 或 UserFunctions的面板視圖
Tab index | 面板視圖中的VEE對象
BackColor | UserFunction/UserObject 和Main的面板視圖

注釋

屬性名稱不分大小寫。只有 運行時屬性 可以程序化地設置和讀取，設計時屬性 不會隨之改變。Property 窗口中的一組數据稱為設計時屬性。

在程序停止時，VEE會使用設計時屬性在工作區域中顯示一個對象。比如，你在property窗口中將一個Label的backcolor設置為紅色，然后又在一個formula對象中將其設為為綠色。那么，即使該Label的backcolor被程序化地設為綠色，它的設計時屬性熱仍然為紅色。所以，在程序執行前和執行后，Label的backcolor都為紅。Label的backcolor只有在運行時才為綠色。這也同樣适用于 XY trace, X vs Y Plot, Strip Chart, 和其他顯示對象的Marker。Marker會在程序結束后回到缺省位置。

Secured UserFunction 或 Imported UserFunction中的對象, 甚至 Main的屬性都可以程序化地設置和讀取。

有關Marker的更多說明

要程序化地設置一個圖形(XY)顯示對象的marker的屬性，需要一個Formula對象來設置marker的新值。

如要將marker移想要軌跡上的某個點，必須确保 Formula 對象在XY顯示對象運行后才運行。如果 Formula 對象先運行，marker就會因為當時圖形顯示對象上沒有軌跡而只移到所指定的點上，而不是軌跡上的一個點。 而且，marker會一直停在那個點上即使在XY圖形顯示對象運行過后。

位置

Device [image] Function & Object Browser [image] VEE Objects

另請參閱

程序化地設置和讀取對象屬性，改變對象的Declared Name和Declared Scope


用戶編制的 VEE 程序

這里的程序來自世界各地的VEE用戶，Agilent Technologies不對這些程序提供任何形式的擔保。如果你也想將你的程序發布在這里，請聯系我們vrf-examples@agilent.com。請為你的程序添加适當的注釋，以便其他用戶參閱。另外，請注明您是否愿意將您的姓名和/或電子郵件地址公布在這里。

ExcelAsDatabase.vee 將 Excel 當作一個用于查找的 '數据庫'

Excel 工作簿的表單中包含五個域 (列)︰ ID, Code, Project, Date 和 Comment。

Query 工作簿使用 Excel 的 DGET 函數在表中查找數据。 查找的值從 VEE 中輸入，查詢結果被讀回 VEE 中。
InstrumentAssistant.vee Instrument Assistant 范例程序

這個范例可以查找連接到所有已配置的 GPIB 和 VXI 接口上的全部儀器。它還可以用于和某些儀器（只支持GPIB儀器）通信。可以發送標準的 IEEE488.1/488.2命令和用戶定義的命令。包括一個保存所有已發送命令的緩沖區。 可以使用 ASCII 或 binary block 格式從儀器讀數据。

這個范例程序使用了VEE 的下列功能︰
* 動態 I/O Automation 服務器
* 可編程儀器屬性
* 与文件同時保存的 I/O 配置

SQLServerUsingADO.vee VEE-Database 訪問

這個范例解釋了VEE 如何能用 Microsoft ADO (rev 2.1) Automation Server 來与 SQL Server 7.0 數据庫集成。SQL Server 7.0 必須如 Server 域中指定的那樣在遠程服務器或本机上可用。如果 VEE 和 SQL Server在一台机器上運行，指定本地為服務器。

這個程序默認使用 SQL 的 pubs 范例數据庫并且︰

  • 通過讀取 Catalog Schema 列出所有 SQL 服務器上的數据庫
  • 通過讀取 Tables Schema 找到數据庫中所有的表
  • 允許執行 SQL 查詢
  • 允許查看表格
  • 從 SQL Server 上捕獲 ADO 錯誤
MakeSelections.vee 生成一個多選彈出對象

這個范例程序包含一個 Multiple Selection 對象，它允許用戶從一個輸入列表中選擇一個或多個選項。VEE 的標準選擇對象只允許選擇單個選項。

VEE_Window_mods.vee 這個程序演示如何改變 VEE 窗口的屬性。它演示了︰
  1. API 函數的導入 (Function ImportLib)
  2. 運行時，從一個字符串數組中創建全局常量 (Function CreateGlobals)
  3. 查找當前 VEE 應用程序 Windows 句柄和改變窗口屬性的方法︰
    1. 位于最上面
    2. 允許改變大小
    3. 顯示系統菜單
    4. 允許/不允許最小化
    5. 允許/不允許最大化
    6. 將整個VEE 程序隱藏一段指定的時間。

由 GeorgNied eMail:info@gn-software.de 提供

Change character in string.vee 這個函數將字符串中的一個字符改為另一個字符。

由 Juan Carlos Mart Castillejos 提供

nidaq.vee 調用l NI-DAQ 庫入口點

這個文件已經被修改以便可以和 Agilent VEE Import Library 對象一起支持 NIDAQ32.DLL.

這個版本是在 NI-DAQ 6.6 上修改的。

這個程序最好用于 VEE 7.0 和之前的版本，因為 VEE 7.5 之后的版本已經在 Instrument Manager 中添加了与 NIDAQ 相關的功能。

下面与儀器相關的程序都由 Tom Silchia 提供
856xTDFB.vee 從 HP/Agilent 8560E-Series 頻譜分析儀獲得軌跡數据，TDF B (B-Format):

返回為二進制形式。該格式以二進制形式傳輸數据。這种格式提供最快的數据傳輸卻只需最少的內存存儲數据。每個數据點都以兩個 8 位的字節傳輸二進制數。先傳最高字節，再傳最低字節。 二進制數可以很容易地轉換為測量數据。如果速度和內存是關鍵因素，就可以考慮使用 B-format 而非 P-format。与 A-block 和 I-block 格式不同，B-format 不傳送頭，直接傳送數据，end-or-identify (EOI)信息与最后一個字節一起傳送。

856xTDFI.vee 從 HP/Agilent 8560E-Series 頻譜分析儀獲得軌跡數据，TDF I (I-block format):

返回為 Indefinite Block-Data Field 形式。与 A-block 格式非常相似，I-block 格式以二進制形式傳輸數据，Indefinite Block-Data Field 的大小未知。每個數据點都以兩個 8 位的字節傳輸二進制數。先傳最高字節，再傳最低字節。I-block 格式會在傳輸軌跡數据前添加頭，它由 ASCII 字符 "#", 和 "I"組成。

856xTDFM.vee 從 HP/Agilent 8560E-Series 頻譜分析儀獲得軌跡數据， TDF M (M-format):

返回（輸出）為十進制形式。(M)格式以 ASCII 整數形式傳輸軌跡數据， 這也是頻譜分析儀采用的內部格式。顯示的每個幅度值都會落在601個垂直點中的一個上。第601個點為參考值。比如，比如信號峰值等于 -10 dBm 或低于參考值一格。它等于540個測量單位。 (參考點為600測量單位， 往下一格為60測量單位，所以為 540 測量單位。) 有10個點超出了范圍。測量單位為 0 到 610。一個換行符(ASCII 碼 10)緊跟在數据輸出之后，然后為 end-or-identify (EOI)信息。M-format 比 P-format 快，但是大部分應用需要計算机把數据轉換為參數單位。另外，M-format 以 ASCII 字符形勢傳輸數据，數据很容易直接查看。

856xTDFP.vee 從 HP/Agilent 8560E-Series 頻譜分析儀獲得軌跡數据

TDF P: 返回參數單位的十進制數。實數或 "P" 格式允許以ASCII 十進制形式接收和發送數据，且以參數單位計數。這是儀器打開且儀器預設被打開時的默認格式。根据使用的幅度單位(AUNITS)不同，數字單位可以為 dBm, dBmV, dBmV, volts, 或 7.0 watts。線性軌跡信息的默認值為 volts， 對數軌跡信息的默認值為 dBm 7.0 一個換行符(ASCII 碼 10)緊跟在數据輸出之后，然后為 end-or-identify (EOI)信息。注意當使用 P-format 時，請根据所用的 AUNITS 命令來确定軌跡數据的幅度單位。如果程序后面還要使用數据，那么實數更有優勢。然而，P-format 的數据傳輸會比較慢。且需要更多的存儲內存(二進制為大約 1200 字節，實數為大約 4800 字節。)有時，与二進制格式相比，P-format 會需要多達四倍的控制器內存。

859xTDFBB.vee 從 HP/Agilent 8590E-Series 頻譜分析儀獲得軌跡數据

TDF B 允許二進制格式。使用這种格式，標記和軌跡數据都可以以字節形式傳輸。在所有的軌跡數据形式中，TDF B 傳輸數据最快。MDS命令的設置會決定軌跡數据是以單字節或雙字節傳送。注意︰ 本范例把 MDS B (Measurement Data Size) 當作字節。 每個數据點傳送一個字節(8-bits)。當傳送軌跡數据時，MDS B 比 MDS W 快，因為只傳送 401 個字節。由于 MDS B 將兩個字節組合為一個，會丟失一些分辨率。

859xTDFBW.vee 從 HP/Agilent 8590E-Series 頻譜分析儀獲得軌跡數据

TDF B 允許二進制格式。使用這种格式，標記和軌跡數据都可以以字節形式傳輸。在所有的軌跡數据形式中，TDF B 傳輸數据最快。MDS命令的設置會決定軌跡數据是以單字節或雙字節傳送。注意︰ 本范例把 MDS W (Measurement Data Size) 當作字（WORD）。 每個數据點傳送兩個字節(8-bits)。MDS W 傳輸軌跡時不會有丟失分辨率。

859xTDFI.vee 從 HP/Agilent 8590E-Series 頻譜分析儀獲得軌跡數据

TDF I 是 I-block 數据格式。這种格式要求軌跡數据必須以 “#,” 和 “I.”開頭。MDS命令的設置會決定軌跡數据是以單個或兩個g-bit字節傳送。 与使用 A-block 格式不同，當將軌跡數据發送回頻譜分析儀時，無需提供數据字節數。

859xTDFM.vee 從 HP/Agilent 8590E-Series 頻譜分析儀獲得軌跡數据

TDF M 是一种測量數据格式。它以測量單位來傳送數据。測量數据的范圍為 -32768 到 7.0 + 32767。

859xTDFA.vee 從 HP/Agilent 8590E-Series 頻譜分析儀獲得軌跡數据

A-block 格式与二進制格式類似，它們都在每個數据點發送兩個字節 (這也是測量數据的內部表示)。 A-block 格式會在軌跡數据的 401 點傳送一個四字節的頭。其中包括 ASCII 字符 “f’, “A”, 和一個兩字節的數，它表示軌跡數据的長度。之后為數据字節。

8510C_pass_thru.vee

提供了一個使用 8510 Pass Thru 功能的方法。

8510_hpgl_Acq.vee | 從8510网絡分析儀中獲取 HPGL 圖形的程序范例。
856xPlot2File.vee 從 8560E-Series 頻譜分析儀中獲取 HPGL 繪圖儀數据并寫入到一個文件。

只要獲得了數据，就可以用任何HPGL閱讀器打開 temp.plt 文件。注意新版本的 Microsoft Office 產品在默認狀態下部包括 HPGL 閱讀器。訪問 Microsoft 的网站，查詢 hpgl 32 bit 下載，可以把 HPGL 文件導入到 Microsoft Word 和/或 Microsoft Excel。

871xLearn_String.vee 從儀器獲得 871x learn string 或向儀器發送871x learn string。

該程序可以在 8711C, 8712C, 8713C, 8714C 和整個871xET/ES 向量网絡分析儀系列儀器上運行。該程序包括為一個 main, 兩個 user objects,及一個 user function。user object "getLearnString" 獲取 learnstring 并將其保存到一個文本文件'C:\learnData.txt"中。 它的注釋詳細介紹了它操作和執行。user object "sendLearnStringOut" 查詢從文件'C:\learnData.txt"中查詢 learn string 數据，然后把它寫入分析儀以便獲得 learnString 狀態。它的注釋詳細介紹了它操作和執行。User function "err_check"提供了一個确認程序執行中沒有出錯的辦法。OK 按鈕允許用戶配置分析儀，獲取learnstring, 复位分析儀 (回到預設值) 和發回獲取的 learnstring, 确認操作無誤。

8753_freq_data.vee 從 8753/8720 系列网絡分析儀中獲取軌跡頻率點數据

使用 OUTPLIML 命令獲取激勵和標記數据。注意 LIMIT 測試 FUNCTION 沒有打開! 該命令提供一种獲取頻率點的手段。

8753_marker.vee 用多种方法從 8753/8720 系列 VNAs 中讀取標記數据

注意標記數据和數据的有效性是分析儀 DISPLAY FORMAT 的一個函數。第一個值是讀回的標記的值。第二個值可能是也可能不是一個有效的 DISPLAY FORMAT 的函數。第三個值是 STIMULUS (頻率或時間)。詳細信息請參閱 8753/8720 程序員指南的 Marker Data 部分。

4395A_Extract_State.vee 從 4395A 組合分析儀中獲取狀態

該程序已經用 4395A 組合分析儀進行了測試。該程序會對 INTERNAL MEMORY 分類并分析類型狀態(由 "*.STA" 指定的文件類型)的所有保存文件。一旦文件類型建立好了，Agilent VEE 應用程序就會提取所有的 *.STA 文件到外部控制器。*.STA 文件是二進制文件，它可以被發送回 4395A (通過 PC 和 VEE, 或通過 3.5" 軟盤)。

4396b_ascii_out.vee 從 395A, 4396A, 或 4396B 組合分析儀中獲取格式化的數字軌跡

該程序以"FORM4"(ascii)數据傳送器形式向儀器查詢 FORMATTED 的數字軌跡。數据軌跡數組的大小由查詢的點的數量(即 "no_poin")來動態确定，之后，它被傳給一個 real_32 數組變量。該程序還概括了 Agilent VEE 的一些其他功能，比如查詢 START 頻率個軌跡，STOP 頻率和點的 NUMBER， 然后把它們傳送到 linRamp 函數 (Agilent VEE 內置函數) 以便自動創建每個數据值得頻率點。另一個功能是創建一個 X-Y 圖表以顯示從分析儀獲取的頻率/幅度數据。 最后，使用 Agilent VEE 很容易取得數据值得最大和最小值。

4194a_gain_delay.vee | 從 Agilent 4194A 阻抗分析儀中獲取 GAIN 和 GROUP 延遲數据
4294A_ascii_out.vee 使用 Agilent 4194A 阻抗分析儀的范例

總結一些獲取 FORMATTED 顯示軌跡數据和 REAL 及 IMAGINARY數据的阻抗，相位，并行電容，并行電導的方法。

8753_Limit_test.vee | 一种報告 8753/8720A系列向量网絡分析儀的有限線性失敗的方法。
8753ES_registerRecall.vee | 一种從 8753/8720A系列向量网絡分析儀地內部內存中重調儀器狀態的過程。
8753ES_NumGroup_OPC.vee | 演示了如何使用 *OPC? 和 NUMG (或 number of groups)使8753/8720A系列向量网絡分析儀在 averaging 被激活時可以整合和同步掃頻結束。
8753ES_NumGroup_SPOLL.vee | 演示了如何使用 SPOLL 和 NUMG (或 number of groups)使8753/8720A系列向量网絡分析儀在 averaging 被激活時可以整合和同步掃頻結束。
8753Graphics.vee | 寫 HPGL 文本到 8753/8720 系列网絡分析儀的顯示。
8753LearnStr.vee | 從 8753 和 8720 系列向量网絡分析儀讀取二進制 learn string 和向 8753 和 8720 系列向量网絡分析儀 寫二進制 learn string。
8757_PassThru.vee | 用于 8757 標量网絡分析儀及其它兼容的信號源。該程序提供了一种使用 PassThru 方式与連接到"8757 System Interconnect" GPIB 總線分析儀的信號源進行通信方法。這是一個從8757標量分析儀直接控制源的專用 GPIB。
8757_E8257C_ScpiPassThru | 用于 8757 標量网絡分析儀及其它兼容的信號源。該程序提供了一种使用 PassThru 方式与連接到"8757 System Interconnect" GPIB 總線分析儀的信號源進行通信方法。這是一個從8757標量分析儀直接控制源的專用 GPIB。
4284A_BIN_ASCII.vee | 演示了如何從 4284A 阻抗分析儀獲取 ASCII 或 BINARY 數据。
4263B_BIN_ASCII.vee | 該程序用于 4263B LCR 表。演示了如何從 LCR 表 獲取 ASCII 或 BINARY 數据。
e5100a.vee | 該程序用于 E5100A 低頻网絡分析儀。演示了如何使用內置 E5100As 波形分析來獲得Channel 1 (增益) 和 Channel 2 (相位)的統計數据。
E5100A_Resp_Cal_Array.vee | 該程序用于 E5100A 低頻网絡分析儀。演示如何通過反映校準數組(即一個 FORM4 - ASCII 傳輸) 獲取一個傳輸。獲取的數組保存在控制PC上的一個文件中。
8753_form2.vee | 該程序用于 8753 和 8720 系列向量网絡分析儀。該程序演示了如何通過 SRQ 掩模來同步掃頻完成，及如何以 FORM 2 - REAL 32 的二進制塊傳輸形式獲取軌跡數据。
8753_form3.vee | 用于8753 和 8720 系列向量网絡分析儀的 VEE 范例程序。該程序演示了如何通過 SRQ 掩模來同步掃頻完成，及如何以 FORM 3 - REAL 64 的二進制塊傳輸形式獲取軌跡數据。
8753_form3_COMPLEX.vee | 用于8753 和 8720 系列向量网絡分析儀的 VEE 范例程序。該程序演示了如何通過 SRQ 掩模來同步掃頻完成，及如何以 FORM 3 - REAL 64 的二進制塊傳輸形式獲取軌跡數据，及如何把數組讀到一個定義為 COMPLEX 數組的變量中。
8753_form4.vee | 用于8753 和 8720 系列向量网絡分析儀的 VEE 范例程序。該程序演示了如何通過 SRQ 掩模來同步掃頻完成，及如何以 FORM 4 - ASCII數据數組形式獲取軌跡數据。
8753_hpgl_Acq.vee | 從8753 和 8720 系列网絡分析儀中獲取 HPGL 圖形的程序范例。
EPM_Sensor_Status.vee | 用于EPM E-Series RF 平均感應功率計。該程序使用 "STATUS:DEVICE:CONDITION？" 位相應來确定哪個通道連接了傳感器，及連接到的是前面板還是后面板。
EPM_Averages_SPOLL.vee | 用于EPM E-Series RF 平均感應功率計。該程序使用手動濾波模式，用戶可以設置鋁箔長度（均值）。該程序還使用了SPOLL 來确定測試數据何時到達。
EPM_LoUpLimit_Test.vee | 用于EPM E-Series RF 平均感應功率計。該程序使用 "STAT:OPER:LLF:SUMM:COND?" (下限失敗報告) 和 "STAT:OPER:ULF:SUMM:COND?" (上限失敗報告) 狀態查詢。
EPM_LoadCalTable.vee | 用于EPM E-Series RF 平均感應功率計。 該程序演示了如何對內部傳感器校準表進行分類，選擇一個表，和以用戶定義的頻率把用戶校準系數寫入所選擇的校準表。
EPM_Meas_SPOLL.vee | 用于EPM E-Series RF 平均感應功率計。該程序使用 MEASURE 命令，它允許功率計控制儀器的設置。該程序還使用了 SPOLL 來确定測試數据何時到達。
ENA_StateRdWrt.vee | 用于 ENA (E5070/E5071) 系列网絡分析儀。演示了如何進行內存分類，以二進制塊的形式讀取狀態文件到PC，然后從PC重調該二進制文件并把它寫回 ENA 內存。

ENA_Average_SPOLL.vee

用于 ENA (E5070/E5071) 系列网絡分析儀。該程序提供了一种檢測 ENA 系列的网絡分析儀的 AVERAGE COMPLETE CONDITION 的方法。 E5071A 已測試。
ENA_Fast_SPOLL | 用于 ENA (E5070/E5071) 系列网絡分析儀。通過該程序可以幫助理解网絡分析儀上各种帶寬的函數的典型的軌跡掃描速度和數据采集及傳輸速度。


連接多個對象，構成一個程序

本節介紹了VEE程序。在實驗1-1中，將創建一個VEE程序，打印VEE屏幕，并把程序保存到一個文件中。

實驗1-1 顯示波形程序

VEE程序由可執行對象圖中連接起來的VEE對象組成。下述程序顯示了一個波形。

(如果VEE正在運行，點擊工具欄上的New按鈕，或使用File [image] New，清除工作空間。否則啟動VEE并繼續。)

1 編制程序文檔。選擇Display [image] Note Pad，把它放在工作區的頂部和中心。點擊編輯區，出現一個光標。刪除可能有的任何模板信息，然后輸入︰

Display Waveform generates a cosine waveform and sends it to a real time display.

您可能必須根据屏幕确定Note Pad大小。為确定對象大小，打開對象菜單，選擇Size，把确定大小的箭頭光標移到對象的角上，拖動鼠標。還可以點擊和拖動對象的任何角。)

2 添加Function Generator對象。選擇Device [image] Virtual Source [image] Function Generator，把外框放在工作區左側，點擊放下對象。點擊Frequency字段，輸入100，把頻率編輯成100。

3 添加Waveform (Time)對象。選擇Display [image] Waveform (Time)，把對象放在工作區右側，如下圖所示。

在上圖中，Function Generator對象上的Func標記指明數据輸出端，Waveform(Time)對象上的Trace1標記指明數据輸入端。在VEE程序中，可以連接多個對象中的數据端，這會決定程序流程。

4 把Function Generator上的數据輸出端 (右側Func旁邊)連接到Waveform (Time) 畫面(左側Trace1旁邊)上的數据輸入端，完成程序。為進行連接，把光標移到其中一個端上。

在其位于允許連接的端的附近時，光標形狀變化。按鼠標左鍵，把鼠標光標移到其它端，再次點擊。在兩個端之間自動畫一條線，程序完成。

拖動其標題欄，試著移動其中一個對象。(不要拖動一個端或終端，否則會出現一條線) 線自動引到兩個對象之間的邏輯路徑上。

如果多條線很亂，使用Edit [image] Clean Up Lines，在程序中重新引導這些線。

運行程序

5 繼續同一練習，點擊工具欄上的Run按鈕，運行程序，或使用Debug [image] Run。程序在Waveform (Time)畫面中顯示一個100 Hz余弦波，如下圖所示。(您的對象可能有不同的頻率，這對范例并不重要。)

除工具欄上的Run按鈕外，還可以使用工具欄上的Stop、Pause和Step按鈕控制程序。如果暫停了正在運行的程序，使用Resume按鈕 (与Run按鈕相同)可以恢复運行。可以使用工具欄上的Step Into按鈕，一次對一個對象運行一個程序。

在根据說明運行程序時，點擊工具欄上的Run按鈕，或按Ctrl+G。其它鍵盤快捷方式如下︰

命令 | 擊鍵組合
Pause | Ctrl+P
Resume | Ctrl+G
Step Into | Ctrl+T

改變對象屬性

您已經看到通過選擇其對象菜單 [image] Properties，怎樣改變對象的部分屬性。還可以在Open View中直接改變對象比較常用的屬性。您可能已經注意到，Function Generator對象有兩种字段。右側帶箭頭的字段是選擇字段。

6 繼續使用這個范例，點擊Function字段中的Cosine (或箭頭)，出現選項下拉列表。點擊Sine選擇Sine函數，注意Function字段已經從Cosine變成Sine。

對話框中的部分字段沒有箭頭，這些是輸入字段，在點擊時它們變成輸入字段。點擊一個字段，會出現一個光標。可以使用標準鍵盤和鼠標編輯技朮，移動光標，輸入希望的值。

7 點擊值100右面的Frequency字段，同時按住鼠標按鈕，把鼠標向右移動，高亮度顯示最后的0。

8 按Delete刪除最后的0，把Frequency值變成10。運行程序，程序應類似于下圖。

顯示的波形現在是10 Hz正弦波。您可能想改變一些對象參數，具体如下︰

• 在Function Generator對象中點擊Deg (或箭頭)，把相位單位變成Rad。然后點擊Phase值字段，輸入值PI。運行程序，注意顯示的波形中的相位位移。然后，把Phase值變回0，把單位變回Deg。

• Waveform (Time)對象的y軸極限預設為-1到1。點擊y軸名稱Mag，打開一個對話框，可以改變設置。點擊Maximum和Minimum字段，把極限變成2和-2。在新的極限范圍內顯示波形。為改變x軸標度的類似參數，點擊Time。

打印屏幕

9 繼續使用這個范例，為打印屏幕，選擇File [image] Print Screen，出現一個Print對話框。

在點擊OK時，VEE 在對話框指明的默認打印机上打印屏幕。可以選擇另一個打印机，改變打印范圍，輸入打印份數。點擊Properties按鈕，可以出現更多的選擇。不同的打印驅程可能會使用不同的對話框。如需与使用Windows對話框有關的進一步信息，請參閱Microsoft Windows Help。

還可以點擊工具欄上的Print Screen按鈕，直接打印屏幕。

保存程序

可以隨時保存程序。(可以保存工作區中的任何內容，而不管它是不是一個完整的程序)。

10 繼續使用這個范例，選擇File [image] Save As...，出現對話框。

出現標題為Save File的對話框。

11 在默認情況下，VEE for Windows在My Document目錄的VEE Programs子目錄下保存文件。為保存當前程序，在File name字段中輸入名稱simple-program，點擊Save。如果沒有輸入擴展名，VEE會在文件名中自動添加擴展名.vee。

備注

可以使用Windows 2000和Windows XP支持的長文件名。

在Save File對話框中，可以改變不同的字段，具体如下︰

文件保存選項 | 說明
Save in | 可以打開下拉菜單，改變目錄或驅動器。雙擊一個文件夾，打開它。
File name | 輸入選擇的文件名。
Save as type | 在正常情況下，VEE程序在保存時會使用擴展名.vee，但如果愿意，可以改變文件類型。如果輸入沒有擴展名的文件名，那么會自動添加.vee。
Save colors and fonts with program | (可選) 如果您已經使用Default Preferences菜單改變程序的顏色和字体，希望加載程序的其它人獲得您選擇的顏色和字体(而不是他們的默認顏色和字体)，點擊复選這一項。 在复選時，VEE會作為程序的一部分保存您在默認配置中所作的變動。
Save I/O configuration with program | (可選) 如果您已經在Instrument Manager中配置儀器，希望加載程序的其它人獲得您配置的儀器，而不是他們的默認儀器，建議复選這一項。 在复選時，VEE會作為程序的一部分保存I/O配置。

備注

為把程序重新保存到同一文件名，隨時點擊Save按鈕或按Ctrl+S (File [image] Save)。在開發程序時，最好經常保存文件。為把已經編輯的程序另存為不同的文件名，按Ctrl+W或File [image] Save As。

退出Agilent VEE

選擇File [image] Exit關閉VEE程序窗口。另一個快捷方式是按Ctrl-E退出VEE，或點擊標題欄右端的x按鈕。

您可能不需要使用下述技朮，但如果VEE停止對鼠標或鍵盤作出響應，可以使用下述說明︰

操作系統 | 方法
在Windows 2000和Windows XP中 | 按Ctrl-Alt-Delete，點擊Task Manager按鈕。在Applications列表中選擇VEE，點擊End Task。

重啟Agilent VEE和運行程序

1 點擊Start [image] Programs [image] Agilent VEE Pro。

2 選擇File [image] Open，出現Open File對話框。

格式与Save File對話框相同。注意用戶程序的默認目錄是VEE_USER目錄，除非在安裝過程中指定了某個其它目錄。VEE在Main窗口中打開程序。

3 點擊Run按鈕。它類似于一個小箭頭，位于Debug菜單下面的工具欄上，如下圖所示。

Run按鈕

備注

命令vee.exe -r filemame啟動VEE，自動運行filename指定的程序。例如，可以在Windows桌面上創建一個圖標，設置其Properties [image] Shortcut，運行某個VEE程序。然后操作人員雙擊桌面上的圖標，啟動VEE，自動運行程序。如需更多信息，請參閱与命令和提示路徑有關的Windows Help信息。

管理工作空間中的多個窗口

到目前為止，我們的討論重點主要是Main窗口中的工作區。但是，大型VEE程序可能會在Main窗口內部包含多個窗口。例如，一個程序可能包含定義的多個對象，如UserObjects和UserFunctions。(可以把UserObjects和UserFunctions視為主程序的子例程或子程序。實驗2-1: 創建UserObject中更詳細地討論了UserObjects和UserFunctions)。在這里提到這些，是為了說明VEE可以怎樣幫助您管理擁有多個窗口的程序。

下圖顯示了一個有四個窗口的程序。每個窗口有一個圖標(它提供了多個菜單命令)、一個標題和三個按鈕︰最小化、最大化和關閉。最大化窗口會使窗口占据VEE工作空間提供的所有區域。最小化窗口會沿著VEE工作空間底部出現其圖標。關閉窗口會從工作空間中刪除窗口。VEE高亮度顯示工作窗口的標題欄。

在上圖中，Program Explorer列出程序的層級。這一內置模塊化結構可以簡便地存取程序的所有部分。

如果沒有顯示Program Explorer，點擊View [image] Program Explorer。默認值是出現Program Explorer。如果去掉對號，在File [image] Default Preferences中點擊Save按鈕，下次在啟動VEE時不會出現Program Explorer。

為在任何時候調出Main窗口，點擊它，或在Program Explorer中雙擊其圖標。

備注

如果在VEE中關閉Main窗口，通過選擇in VEE, 可以View [image] Main，可以再次顯示Main窗口。


Agilent VEE程序怎樣工作

實驗1-2: 查看數据流程和傳播

實驗1-3: 添加Noise Generator

實驗1-4: 添加幅度輸入和Real64滑尺

實驗1-2: 查看數据流程和傳播

在VEE中，通過程序執行的一般流程稱為傳播。通過程序傳播并不是由對象在程序中的地理位置決定的，而是由對象的連接方式決定的。傳播主要取決于數据流程，數据流程則取決于對象的數据輸入端和輸出端的連接方式。

備注

在其它編程語言中，如C、BASIC或Pascal，程序語句的執行順序取決于序列和選擇規則集。一般來說，語句按其在程序中出現的順序執行，除非某些語句導致執行分支到另一個語句或代碼線程。

VEE程序中的數据流動規則如下︰

• 數据從左到右流過對象。這意味著在擁有數据端的所有對象上，左面的數据端是輸入，右面的數据端是輸出。

• 必須連接對象中的所有數据輸入端，否則在程序運行時會發生錯誤。

• 只有在其所有數据輸入端已經收到新數据時，一個對象才會執行。

• 只有在所有連接的相應數据輸出端已經被激活后，一個對象才執行完畢。

在VEE中，可以使用序列輸入端和輸出端，改變執行順序。但是，在正常情況下，除特例外，并不需要使用序列端。一般來說，最好避免使用序列端。如果可能，應允許數据流程控制程序執行。

為查看數据流程怎樣工作，點擊工具欄上的Open按鈕，打開程序simple-program.vee。( “實驗1-1 顯示波形程序"中介紹了程序 simple-program.vee) 現在運行程序，其應類似于下圖，但參數可以有不同的值。

備注

VEE中包括許多實驗練習和編程范例使用的VEE程序，其位置是Help [image] Open Example... Manual [image] UsersGuide。

Function Generator對象的數据輸出端連接到Waveform (Time)對象的數据輸入端。在運行程序時，只有在它從Function Generator對象收到數据時，Waveform (Time)對象才會執行。這是數据流程的簡單實例。

實驗1-3: 添加Noise Generator

在simple-program.vee中添加一個Noise Generator對象，添加一個“有噪聲的正弦波”如下。

1 刪除原始程序中連接Function Generator和Waveform (Time)對象的線。點擊工具欄上的Delete Line按鈕，然后點擊線。也可以按住Shift+Ctrl，點擊線。

2 把Function Generator最小化成圖標。

3 添加Noise Generator對象 (Device [image] Virtual Source [image] Noise Generator)。

4 使用Device [image] Function & Object Browser添加A+B對象。

下圖顯示了Function & Object Browser。對Type，選擇Operators。對Category，選擇Arithmetic。對Operators，選擇+。點擊Create Formula，把對象放在Function Generator和Waveform (Time)對象之間的工作區上。最小化A+B對象。

1 連接輸入端和輸出端。

2 運行程序。

注意只有在Function Generator和Noise Generator對象執行時，A+B對象才會執行。但是，是Function Generator先執行還是Noise Generator先執行無關緊要，因為結果是一樣的。

一旦兩個A+B 輸入數据端都收到數据，那么A+B對象會執行，把兩個信號相加，把結果輸出到Waveform (Time)對象。

備注

VEE程序中的數据流程決定著其執行。

為查看執行順序，打開Debug命令Show Execution Flow和Show Data Flow，或分別點擊工具欄上的按鈕。再次運行程序。在執行時，每個對象高亮度顯示，一個小的方標尺沿著線移動，顯示數据流程。

備注

通過點擊工具欄按鈕或Debug菜單中的命令，可以同時啟用或洙獨啟用Show Execution Flow和Show Data Flow。在正常情況下，應關閉這些命令，因為它們會降低程序執行速度。

實驗1-4: 添加幅度輸入和Real64滑尺

在simple-program.vee中添加一個幅度輸入和一個Real64滑尺。

1 把鼠標指針放在Noise Generator左側的“端區域”中，點擊對象菜單或按Ctrl+A。出現一個對話框，允許添加輸入。

2 點擊OK，選擇Amplitude—出現一個Amplitude輸入端。

現在Noise Generator對象有一個幅度輸入端，可以作為實數輸入這個數据。VEE提供了一個對象，使其非常簡便，稱為Real64 Slider，它位于數据菜單中。(也可以使用Real64 Constant對象或Real64 Knob。)

3 添加一個Real64 Slider對象 (Data [image] Continuous [image] Real64 Slider)，把其數据輸出端連接到Amplitude端，如下圖所示。運行程序。

在Real64 Slider對象上拖動滑動控制，試著改變噪聲的幅度。只有在運行程序時，噪聲幅度才會變化。顯示的波形的噪聲成分取決于Real64 Slider 輸出值。

數据流程再次決定執行順序。只有在Real64 Slider執行時才能執行Noise Generator。只有在Function Generator和the Noise Generator都執行時才能執行A+B對象，但哪個先執行無關緊要。最后，只有在A+B對象已經執行后，才會執行Waveform (Time)對象。

備注

可以使用鼠標在線上盤旋，顯示輸出的值。例如，在從Real64 Slider對象到Noise Generator的線上盤旋鼠標，會顯示一個值0.401。注意，線上的值(0.401)与Real64 Slider上顯示的值一致，如下圖所示。(注意對象以圖標化視圖顯示。)

4 把程序重新程序為simple-program.vee，將在以后的實驗中添加某些其它功能。

Copyright (c) 1991-2006年安捷倫科技公司版權所有


通用技巧

在Main VEE程序內部，可以創建對象邏輯分組，稱為UserObjects。通過把一個對象邏輯組放在UserObject窗口中，可以創建一個UserObject。在UserObject窗口內部，可以連接輸入和輸出，其方式以与主程序相同。UserObject本身象任何其它對象一樣，使用輸入和輸出連接到主程序中的其它對象。

開發UserObject的概念是創建一個唯一的上下文，在主程序內部實現有用的目標。除保留主要工作區中的空格外，通過提供結構，可以使程序更容易理解。

VEE程序可以包含嵌套在Main程序中的許多UserObject。每個UserObject有一個裝在Main窗口中的圖標視圖。為把主程序中的UserObject圖標視圖与相關的UserObject窗口關聯起來，在編輯窗口中命名UserObject，這還將在相關圖標窗口中命名這些UserObject。例如，如果把一個UserObject命名為AddNoise，那么其在Main程序中的圖標視圖勾煲erObject上的標題欄都會出現AddNoise。下述練習教給您怎樣創建UserObject。

實驗2_1: 創建UserObject

實驗2_2: 為用戶輸入創建對話框

實驗2_3: 使用數据文件

實驗2_4: 創建面板視圖

實驗2_5: 數据數學運算處理

實驗2_6: 生成隨机數字

實驗2_7: 設置和獲得全局變量


實驗2-1: 創建UserObject

有多种方式可以在VEE程序中創建UserObject︰

• 從菜單欄中選擇Device [image] UserObject，在Main窗口中出現一個空的UserObject圖標，在里面添加對象。如果雙擊UserObject圖標，那么它會在Open View中顯示如下︰

• 在程序內選擇多個對象，然后從這些對象里創建一個UserObject，其方式是選擇對象，點擊Edit [image] Create UserObject。

一旦已經創建了UserObject，它會成為主程序的一部分。UserObject窗口可以在Open View中顯示為圖標，也可以在屏幕底部最小化。

• 點擊關閉按鈕關閉窗口，UserObject在主窗口中顯示為圖標。

• 點擊最大化按鈕，最大化窗口，UserObject窗口將占据VEE工作空間中提供的整個區域。

• 點擊最小化按鈕，最小化窗口。最小化的UserObject沿著VEE工作空間底部顯示。

備注

UserObject的圖標視圖一直位于Main窗口中，可以把其各端連接到Main窗口的其它對象上。

備注

在開始前，要保証View中的Program Explorer已經反選，以便在Main中提供更多的屏幕空間。

現在，為程序創建一個UserObject。

1 打開在“實驗1-4: 添加幅度輸入和Real64滑尺"中創建的程序 (simple-program.vee )。程序應出現在主要工作區中。

2 從程序中刪除Real64 Slider。(在本練習中不使用) 點擊打開Real64 Slider Object Menu，選擇Delete，或雙擊Real64 Slider Object Menu按鈕。

備注

如果現在再次運行程序，其中已經刪除Real64 Slider對象，輸入端仍位于Noise Generator上，那么您將獲得一條VEE錯誤信息，表明Noise Generator上的輸入端Amplitude沒有連接。記住，為運行VEE程序，必須連接所有輸入端。

3 在Noise Generator對象中，點擊Object Menu按鈕，或在對象上按鼠標右鍵，打開對象菜單。選擇Delete Terminal [image] Input，在高亮度顯示Amplitude的Choose an input to delete對話框，點擊OK。

4 擇File [image] Save As...，輸入新的名稱usrobj-program1.vee，重命名程序。

5 然后，最小化Noise Generator對象，重新排列各個對象，如下圖所示。

6 使用快捷方式Ctrl+按鼠標左鍵，選擇Noise Generator和A+B對象。點擊Edit [image] Create UserObject。出現一個標為Create UserObject的對話框。(在希望時通過輸入新名稱，可以重命名對象。現在點擊OK，創建UserObject。)

UserObject將在UserObject編輯窗口中包含Noise Generator和A+B對象，并在Main窗口中自動創建UserObject，并帶有相應的輸入端和輸入端及連接。

在鍵盤上按Home按鈕，把圖標定位到UserObject的左上角。

備注

在執行Create UserObject前重新排列對象位置非常方便。如果沒有采集一個區域中要包括的對象，那么UserObject會自行調整，包括選擇的所有對象。然后可以重新排列和調整UserObject的工作區，把UserObject移動到工作區中的相應地方。但是，如果提前以邏輯方式放置對象，那么清除起來要更加容易。

備注

可以使用Edit [image] Clean Up Lines，清除程序內部引導的線。這條命令与上下文有關。為清除UserObject的線，它必須位于活動窗口中。點擊UserObject窗口，然后使用Edit [image] Clean Up Lines。

在編輯窗口中創建UserObject，然后使汁煲erObject的圖標視圖，可以節約屏幕空間。

7 為幫助您跟蹤UserObject，把標題從UserObject變成AddNoise。雙擊標題欄，在屬性對話框中輸入新標題。下圖顯示了可以怎樣更簡便地使用程序。

如果想迅速進入任何對象的Properties對話框，只需雙擊其標題欄。

8 點擊Run按鈕，顯示有噪聲的余弦波。

注意AddNoise被最小化，以圖標的形式出現在工作空間底部。為最小化AddNoise，點擊標題欄中的最小化按鈕，其下面有一條下划線(_)。

有效UserObjects的關鍵是保証它們為程序內部的邏輯用途服務。這种獨特的對象并不是節約空間的裝置，而是為實現程序結構化提供了一條途徑。UserObjects可以幫助您在VEE程序中使用“從上到下”的設計。VEE還包括一個對象，稱為UserFunction，這是一個可以重用的代碼模塊。如需与UserObjects和UserFunctions有關的更多信息，請參閱︰

如需与UserObjects有關的更多信息，請從VEE菜單欄中選擇Help [image] Contents and Index，然后瀏覽How Do I..., Tell Me About...或Reference。

下一節將繼續使用本例。但是，如果您想現在退出，可以把程序保存為usrobj-program3.vee。


實驗2-2: 為用戶輸入創建對話框

如果還沒有打開，現在打開程序usrobj-program3.vee。

在Data [image] Dialog Box子菜單中，有六個對話框選項︰Text Input, Int32 Input和Real64 Input, 以及Message Box, List Box和File Name Selection框。在文本輸入、整數輸入和實數輸入情況下，對話框幫助您配置提示或標記、默認名稱、取值限制和錯誤信息。一旦包括其中一個對話框，那么在程序運行時會出現一個彈出輸入框。

1 選擇Data [image] Dialog Box [image] Int32 Input，把它放在Function Generator的左面。把Prompt/Label字段變成Enter Frequency:。(記住點擊拖動字段，先高亮度顯示字段) 把Default Value變成100。

也可以雙擊一個輸入字段，高亮度顯示一個項目。

2 把Value Constraints低端變成1，高端變成193。改變錯誤信息，反映這些新值。最后，圖標化Int32 Input對象。

3 打開Function Generator的Object Menu，選擇Add Terminal [image] Data Input。在Select input to add對話框中，選擇Frequency，點擊OK。

4 把Int32 Input對象的頂部輸出端連接到Function Generator上的輸入端。注意，現在只能通過輸入端改變Frequency，不能再編輯Frequency輸入字段。程序應類似于下圖。

5 運行程序。出現Int32 Input輸入框，并帶有說明Enter Frequency:。試著在輸入框中以不同的頻率運行程序。點擊拖動彈出框，控制其顯示的位置。

如果輸入的頻率大于193，那么會顯示錯誤信息框。注意，您會獲得配置的錯誤信息。

在下一節中將繼續本例。但是，如果您現在想退出，可以把程序保存為usrobj1-program4.vee。

備注

本手冊中許多實驗練習和編程范例使用的VEE程序都包括在VEE中的Help [image] 打開Example... Manual [image] UsersGuide下。


實驗2-3: 使用數据文件

通過在程序中包括To File和From File對象，可以從VEE 把數据寫入數据文件，把文件中的數据讀入VEE。例如，在已經構建的程序的細節視圖中添加一個To File對象。

如果程序還沒有打開，現在打開程序usrobj-program4.vee。

1 選擇I/O [image] To [image] File，把它放在Main工作區中。

2 把默認文件名myFile變成wavedata。

如果在Clear File At PreRun & Open左面沒有對號，那么點擊小的輸入框。To File會默認把數据追加到現有文件中。但在本例中，您想每次運行程序時清除文件。現在To File對象應類似于下圖。

3 雙擊標有Double-Click to Add Transaction的區域，寫入數据。出現上面的對話框。點擊TEXT字段(或其箭頭)，顯示由數据類型組成的下拉列表，點擊CONTAINER。點擊OK。注意在I/O Transaction對話框中點擊OK時，會在To File對象中自動添加一個輸入端。

查看To File對象菜單中的Help，查看除WRITE CONTAINER之外的其它處理選項。 I/O處理參考 和“存儲和檢索測試結果中更詳細地討論了處理。

4 把AddNoise UserObject的數据輸出端連接到To File的數据輸入端。現在程序應類似于下圖。

備注

可以把一個數据輸出端連接到多個數据輸入端。

5 再次點擊工具欄上的Run按鈕，測試程序。現在程序顯示AddNoise UserObject輸出的有噪聲的余弦波，把波形數据容器寫入文件wavedata中。

雙擊To File對象，出現Open View，然后雙擊輸入端，考察其內容。應看到一個由256點組成的數組。

在程序中添加一個From File對象，讀回數据。

6 選擇I/O [image] From [image] File，把它放在Main工作區中。在READ CONTAINER x中添加讀取處理，把文件名變成wavedata (To File的規程相同)。然后，刪除AddNoise和Waveform (Time)對象之間的線，連接各個對象，如下圖所示。To File和From File之間的序列線保証在讀取數据前把數据寫入文件中。

7 運行程序。其應類似于上圖。把程序保存為usrobj-program.vee.。


實驗2-4: 創建面板視圖(操作人員界面)

在開發程序后，您可能想創建一個操作人員界面。為此，創建一個程序面板視圖。本練習使用在“實驗 1-2: 查看數据流程和傳播"中創建的程序simple-program.vee。

1 打開程序simple-program.vee。程序應類似于下圖。

2 選擇希望出現在面板視圖中的對象，它將作為操作人員界面。按住Ctrl，同時點擊希望選擇的所有對象。(一定不要選錯對象) 在本例中，選擇Real64 Slider和Waveform (Time)對象。每個對象現在有一個陰影，表明其被選中。

3 點擊工具欄上的Add to Panel按鈕，在面板中添加選中的對象(或使用Edit [image] Add To Panel)。出現一個面板視圖，顯示在面板中添加的兩個對象。

可以在面板視圖中調整對象大小、并把對象移動到相應的位置，創建一個与下圖類似的面板。

4 在左上方的Main窗口標題欄中按To Detail按鈕，進入細節視圖。點擊To Panel按鈕，返回面板視圖。

細節視圖是編輯程序使用的正常窗口。可以在面板視圖中獨立于細節視圖移動、調整或刪除對象。細節視圖用來開發程序，面板視圖用來提供操作人員界面。

5 把程序保存為simple-program_with_panel.vee。

可以練習對面板視圖進行某些改動，具体如下︰

• 為改變面板上的顏色，從面板視圖的Main窗口對象菜單中選擇Properties。選擇BackColor屬性，選擇希望的顏色。

• 為改變任何對象上的顏色或字体，雙擊標題欄，出現Properties窗口。然后點擊希望改變的Colors或Fonts屬性。

• 為在Panel視圖中為對象提供突起的外觀，打開該對象的Properties窗口，在Border屬性下選擇Raised。

• 為改變Panel視圖的名稱，打開主Properties窗口，把Title屬性變成希望的名稱。在程序執行時，還將顯示輸入的名稱。


實驗2-5: 數据數學運算處理

VEE支持廣泛的內置數學功能和數据類型，及MATLAB的所有數据和信號處理能力。如需更詳細的信息，請參閱處理數据。

使用數据類型

VEE支持多种數据類型，包括文本、整數和實數，同時包括多种复數和坐標數字。在以前的范例中，您已經看到A+B對象怎樣把兩個波形加在一起。數學運算符如加法(+)，可以用于多种數据類型，甚至可以作為混合數据類型使用。

例如，為創建下述程序，清除Main窗口，把下述對象放在Main窗口中，連接這些對象，如下圖所示，注意下述信息。

1 選擇File [image] New，清除工作區。

2 選擇Data [image] Constant [image] Real64，添加一個Real64 Constant對象。

3 選擇Data [image] Constant [image] Complex，添加一個Complex Constant對象。

4 添加A+B對象。選擇Device [image] Function & Object Browser，出現Function & Object Browser。然后選擇Type: Operators; Category: Arithmetic; Operators: +。點擊Create Formula創建對象。

5 選擇Display [image] AlphaNumeric，添加一個AlphaNumeric對象。連接各個對象，如下圖所示。在Real64 Constant對象的數据輸入字段中輸入值1.53，在Complex對象的數据輸入字段中輸入复數值(2,1)。運行程序，應獲得下述結果。

VEE根据需要自動轉換數据，然后在A+B對象中執行加法運算。實數值1.53被轉換成复數值(1.53,0)，然后添加到复數值(2,1)中。結果(3.53,1) (一個复數)顯示在AlphaNumeric對象中。

備注

在正常情況下，VEE自動處理所有數据類型轉換。如需更多信息，請從VEE工具欄中選擇Help [image] Contents and Index。然后，瀏覽How Do I..., Tell Me About..., 或Reference。

使用數据形狀

VEE支持各种數据形狀，如標量和數組。与大多數編程語言不同，VEE對象可以在整個數組上運行，而不是只在一個要素上運行。

下面的程序創建了由10個要素組成的一維數組，計算10個值的中值，然后顯示中值。

1 選擇 File [image] New，清除工作區。

2 選擇Flow [image] Repeat [image] For Range，添加一個For Range對象。

3 選擇Data [image] Sliding Collector，添加一個Sliding Collector對象。

4 添加一個median(x)對象。選擇 Device [image] Function & Object Browser。然后選擇Type: Built-in Functions; Category: Probability & Statistics; Functions: median，點擊Create Formula。

點擊工具欄上的fx 按鈕，可以顯示Function & Object Browser。

5 選擇Display [image] AlphaNumeric，添加一個AlphaNumeric對象。連接各個對象，如下圖所示。

. 運行程序。如果還沒有改變對象上的任何輸入，應看到上面顯示的結果。

使用Formula對象

VEE提供了聯机幫助Reference部分存檔的數學運算符和函數。選擇Help [image] Contents and Index。然后選擇Reference，根据需要瀏覽各個項目。

通過Device [image] Function & Object Browser (或工具欄上的 fx)，使用預先定義的運算符和函數對象。點擊三個列表中的項目︰Type:, Category:和Functions:，從Function & Object Browser中選擇對象。點擊Create Formula創建對象。

除使用預先定義的運算符和函數外，可以在Formula對象內創建任何有效的VEE數學表達式，該對象位于Device菜單下。在本節中，您將使用Formula對象創建一個程序。先清除Main窗口，采取下述步驟。

1 在Main窗口中添加Function Generator對象，修改它，生成100 Hz正弦波。選擇Device [image] Virtual Source [image] Function Generator。

2 選擇Device [image] Formula，把Formula對象添加到Main窗口中。通過把鼠標指針放在輸入端區域，點擊Ctrl+A，在對象中添加第二個輸入(B)。

3 在輸入字段中輸入數學表達式abs(A)+B。

4 選擇Data [image] Constant [image] Real64，在Main窗口中添加一個Real64 Constant對象。輸入值0.5。

5 選擇Display [image] Waveform (Time)，把y軸標度設為-2到2。把Automatic Scaling設為Off。為獲得這些參數的對話框，點擊Mag。

6 如下圖所示連接對象，運行程序。

在運行程序時，Formula對象會獲得波形輸入A和實數值B，把B加到A的絕對值中。事實上，表達式abs(A)+B “矯正了”正弦波，增加一個“dc偏置”。可以使用A+B和abs(x)對象得到相同的效果，但在Formula對象中讀取表達式要更容易。(這還會節約空間。)

試著雙擊Formula對象的輸入端和輸出端。注意輸入B的實際標量添加到輸入A上的波形數据的每個要素中(一維數組)，得到的波形在Result端輸出。

備注

為增強VEE廣泛的數學運算功能，集成MATLAB Script另外提供了几百個數學函數。在Function & Object Browser中瀏覽這些函數。如需与使用MATLAB函數有關的更多信息，請參閱“在Agilent VEE中使用MATLAB Script"。


實驗2-6: 生成隨机數字

1 編制程序文檔︰

a 選擇Display [image] Note Pad，把它放在工作區頂部中心。點擊編輯區域，出現一個光標，去掉可能存在的任何模板。然后輸入︰

This program, Random, generates a real number between 0 and 1, then displays the results.

2 選擇Device [image] Function & Object Browser。選擇Type [image] Built-in function, Category [image] All, 和Functions [image] random。點擊Create Formula。把對象放到工作區中，點擊鼠標放置對象。

3 點擊Data [image] Constant [image] Int32，把它放在隨机對象的左面。打開Int32對象菜單，點擊Clone，把它放在其它Int32對象的下面。雙擊0出現光標，然后輸入1。把常數對象0連接到隨机對象的低輸入端，把常數1連接到高輸入端。

4 選擇Display [image] AlphaNumeric，把它放在隨机對象的右面。打開對象菜單，選擇Help，更好地了解對象。

5 把隨机對象輸出端連接到AlphaNumeric輸入端，出現數据線，連接兩個對象。

備注

在移動鼠標指針，把線附在目標端附近時，會有一個框高亮度顯示端。然后再次點擊鼠標，完成連接。

備注

如果由于某個原因您想在完成鏈接前終止連接操作的線，雙擊鼠標，線會消失。

6 在工具欄上點擊Run按鈕，您會看到一個隨机數字，如下圖所示。

7 選擇File [image] Save As...，輸入Random.VEE，點擊OK。在將來打開時，這個名稱將出現在標題欄VEE旁邊。


實驗2-7: 設置和獲得全局變量

通過這個程序，您可以更多地實踐構建VEE程序的基本技巧，同時它還介紹了全局變量。可以使用Set Variable對象創建一個變量，以后在程序中使用Get Variable對象檢索這個變量。可以使用任何VEE數据類型。本例使用Real64類型的數字。(如需与VEE數据類型有關的更多信息，請參閱數据類型)

1 選擇Display [image] Note Pad，把它放在工作區的頂部中心。點擊編輯區域的左上角，出現一個光標，去掉可能存在的任何模板，然后輸入下述信息︰

Set and Get a Global Variable prompts the user to enter a real number. The variable, num, is set to this real number. Then num is recalled and displayed.

2 選擇Data [image] Constant [image] Real64，把它放在工作區的左側。打開對象菜單，檢查Help項。

3 打開Real64對象菜單，選擇Properties。把標題變成提示Enter a Real Number:，然后點擊OK。

備注

本練習在輸入對話框中使用其中一個Constant對象，只是把其標題變成提示。這是獲得用戶輸入的一种常用技朮。可以使用Data [image] Dialog Box [image] Real64 Input。也可以雙擊標題欄，出現Constant Properties對話框。

4 選擇Data [image] Variable [image] Set Variable，把它放到Real64對象的右面。雙擊globalA，高亮度顯示，然后輸入num。注意對象的名稱變成Set num。

這表示用戶將在Real64對象中輸入一個實數。在用戶點擊Run按鈕時，數字將設為全局變量num。

5 把Real對象的數据輸出端連接到Set num對象的數据輸入端。

6 選擇Data [image] Variable [image] Get Variable，把它放到Set num對象的下面。把變量名稱變成num。注意對象名稱變成Get num。

7 把Set num序列輸出端連接到Get num序列輸入端。

備注

在使用前，必須設置全局變量。因此，在這种情況下，必需使用序列端，保証在使用 Get num檢索前已經設置了變量num。

8 選擇Display [image] AlphaNumeric，把它放到Get num對象的右面。

9 把Get num數据輸出端連接到AlphaNumeric數据輸入端。

10 輸入一個實數，在工具欄上點擊run按鈕。程序應類似于下圖。

11 選擇File [image] Save As... ，把程序命名為global.vee。


實驗3-1: 配置儀器

通過VEE，可以在不存在儀器時開發程序。在本練習中，您將配置一部用于面板驅動程序的示波器。然后，再把物理儀器添加到配置中。

在儀器不存在時配置儀器

1 選擇I/O [image] Instrument Manager.... 點擊和拖動標題條，把對話框移動到左上方工作區。

備注

如果您已經連接和加電任何儀器，VEE會查找儀器，并自動為其查找驅動程序。如需与自動查找和配置儀器有關的更多信息，請參閱主VEE屏幕中的Help [image] Welcome [image] Tutorials。

在默認狀態下，沒有配置任何儀器，本例假設在Instrument Manager列表中沒有出現任何儀器。

2 在Instrument Manager 對話框中，一定要高亮度顯示My Configuration，在Instrument下點擊Add...，出現Instrument Properties對話框。

Instrument Properties 對話框中的項目如下︰

項目 | 說明
Name | 儀器在程序中的名稱。根据下述語法準則選擇一個名稱︰ • 儀器名稱必須以字母字符開頭，后面跟著字母數字字符或下划線字符。 • 在儀器中名稱中不能使用嵌入式空格。
Interface | 接口類型，可以選擇GPIB, Serial, GPIO, USB, LAN, 或VXI。
Address | 接口的邏輯單元 (GPIB通常是7)外加儀器的本地總線地址(0 – 31的數字)。如果地址保持在0，表示您在沒有儀器的情況下開發程序。 在改變Direct I/O對象上的I/O設備地址時，變化實際應用到從這里起下游中參考同一設備的所有其余對象。
Gateway | 指明儀器是在本地控制還是遠程控制。使用默認項目This host在本地控制儀器，或輸入Gateway進行遠程控制。(如需更多信息，請參閱I/O配置技朮)

3 把名稱變成scope，所有其它字段保持默認值，點擊Advanced...。出現Advanced Instrument Properties 對話框。

General文件夾中的項目如下︰

項目 | 說明
Timeout | 在獲得錯誤信息前I/O處理結果允許的最長秒數。
Live Mode | 指明是否与儀器進行實地通信。把這個字段設為OFF，除非儀器存在。VEE的默認設置是ON。
Byte Ordering | 指明設備讀寫二進制數据使用的順序。這個字段在先讀寫Most Significant Byte (MSB)或先讀寫Least Significant Byte之間撥碼轉換。所有IEEE488.2標準設備必須默認采用MSB順序。
Description | 在這里輸入任何描述。例如，如果希望描述的是標題欄上的儀器號碼，那么輸入號碼。

4 把Live Mode撥到OFF，然后點擊Panel Driver文件夾，出現對話框。

5 點擊ID Filename右面的字段，獲得一個列表框，標題為Read from what Instrument Driver?。這個列表中包括VEE修訂版在指定目錄中加載的所有面板驅動程序文件。

備注

為完成本例，您必需從VEE光盤安裝面板驅動程序。*.cid文件表示匯編的儀器驅動程序文件。

6 向下滾動列表，高亮度顯示hp54504a.cid，然后點擊Open。上圖顯示已經選擇了這部儀器。還可以雙擊高亮度顯示的文件，選擇文件。

Panel Driver文件夾中的其它項目如下︰

Panel Driver 項目 | 說明
Sub Address | 這個字段留為空。只有非VXI卡槽儀器才使用它識別插入模塊。
Error Checking | 保持默認設置ON。可以關閉Error Checking，以提高吞吐量，但這將不會校驗I/O錯誤。
Incremental Mode | 保持默認設置ON。也可以關閉Incremental Mode，每次在改變設置時，它將發送儀器狀態的整個儀器命令串。

7 點擊OK，返回Instrument Properties對話框。點擊OK。

提供的儀器列表現在應包括名為scope的儀器配置，使用驅動程序文件hp54504a.cid。儀器沒有指定總線地址，因為它目前不存在。您可以在這种模式下開發程序，以后在準備把儀器連接到計算机上時再增加一個地址。

在輸入一個字段后，按Tab鍵，移動到下一個字段，按Shift-Tab，移動到前一個字段。按Enter与點擊OK的結果相同。VEE關閉對話框。

8 點擊Save，關閉Instrument Manager對話框。(還可以在Create I/O Object下點擊Panel Driver，立即把它放在程序中，VEE將自動保存配置。)

現在您已經在儀器列表中增加了名為scope的HP 54504A示波器。盡管實際儀器不存在，但您在編程時可以使用這個驅動程序。

選擇一部在程序中使用的儀器

1 選擇I/O [image] Instrument Manager....

2 高亮度顯示選項scope(@(NOT LIVE))，然后在Create I/O Object下點擊Panel Driver。

備注

在Instrument Manager中，根据配置的儀器類型，通常可以在Create I/O Object下創建不同的對象類型。例如，如果在本練習中已經選擇了Direct I/O、而不是 Panel Driver，您會獲得一個名為scope(@(NOT LIVE))的Direct I/O對象。VEE還提供一個Component Driver，它使用Panel Driver提供的函數子集。(如需更多信息，請參閱I/O配置技朮。)

3 放置示波器面板輪廓，點擊放置輪廓。顯示畫面類似于下圖。

現在您可以象任何其它VEE對象一樣在程序中使用面板驅動程序。

在配置中增加物理儀器

1 選擇I/O [image] Instrument Manager....，高亮度顯示示波器。在Instrument...下點擊Properties。

2 雙擊Address字段，高亮度顯示當前項目和類型709。709中的7是邏輯單元。(如果GPIB (HP-IB)邏輯單元不是7，用實際邏輯單元號碼代替7。) 709中的9是示波器的默認地址。

3 點擊Advanced:，把Live Mode撥到ON，然后點擊OK。點擊OK，關閉Instrument Properties對話框。

4 點擊Save，保存變化。

另請參閱

使用面板驅動程序，使用Direct I/O，使用PC插件電路板，在VEE中使用NI Data Acquisition，IVI-COM和Instrument Manager，使用VXIplug&play驅動程序，在VEE中使用ActiveX Automation


實驗3-2: 使用面板驅動程序

這些練習以HP 3325B函數發生器為例。其原理与使用任何VEE面板驅程的原理相同。通過使用面板驅程、而不是直接進行儀器編程，可以節約開發和修改程序所需的時間。儀器設置變化通過菜單選擇或編輯對話框中的字段完成。如果儀器已經連接，且Live Mode是ON，那么所作的變化將登記在儀器上。

為在程序中使用面板驅程，按需添加輸入和/或輸出，把面板驅程連接到其它對象上。可以在一個程序中使用同一驅程的多個實例，把儀器設置成不同的狀態。在VEE中，可以圖標化面板驅程，節約空間，或使用打開的視圖，顯示儀器設置。還可以在程序運行時改變設置。

改變面板驅程上的設置

1 選擇I/O [image] Instrument Manager.... 選擇My Configuration，然后在Instrument下點擊Add...，出現Instrument Properties對話框，編輯下述信息︰

設置 | 說明
Name | 編輯成fgen，按Tab鍵兩次，移動到Address字段。
Address | 變成713或希望在總線上使用的地址。

2 點擊Advanced。在General文件夾中，把Live Mode撥到OFF。

3 點擊Panel Driver文件夾，把ID Filename: 設為hp3325b.cid。點擊OK兩次，返回Instrument Manager。

4 在Create I/O對象下，點擊Panel Driver。把對象放在工作空間左側。(不管采用什么儀器，只要已經配置儀器，并添加到列表中，那么這個流程相同。)

備注

您正在沒有連接儀器的情況下進行編程。如果連接了儀器，那么可以把配置編輯成适當的地址。

5 在Function字段中點擊Sine，獲得一個彈出菜單，然后選擇Triangle。

6 點擊Frequency右面的字段。

7 在出現的Continuous component FREQUENCY對話框中輸入100，點擊OK。注意Frequency設置現在已經變化。

可以使用相同的方法，改變任何驅程上的儀器設置。如果儀器配置了一個地址，且Live Mode為ON，那么儀器會体現驅程面板中所作的每個變化。

移動到同一驅動程序上的其它面板

大多數驅動程序擁有一個以上的面板，簡化用戶界面。為移動到不同的面板，點擊對象中的Main Panel，獲得一個面板菜單。

1 在Panel Driver對象中，點擊Main Panel，在Discrete Component MENU中選擇Sweep。

.

2 點擊OK，顯示Sweep Panel。還可以查看其它面板，看提供了哪些項目。

3 點擊OK返回Main Panel。

在面板驅動程序中添加輸入和/或輸出

除直接与面板交互外，通過在驅動程序中添加數据輸入和/或輸出，還可以在程序中控制設置或從儀器中讀取數据。

1 把鼠標指針放在函數發生器儀器面板的數据輸入區域上，按CTRL-A，添加一個數据輸入端。出現儀器組件列表框。

2 從出現的菜單選擇希望的組件。

備注

還可以打開對象菜單，選擇Add Terminal by Component [image] Select Input Component。然后選擇驅動程序上希望的組件字段。

使用同一流程，把鼠標指針放在數据輸出區域上，添加一個數据輸出。

刪除數据輸入或輸出端

把鼠標指針放在端上，按CTRL-D。

備注

還可以打開對象菜單，從對象菜單中選擇Delete Terminal [image] Input...，從出現的菜單中選擇相應的輸入。

自主決定

在HP 3325B函數發生器或提供的任何其它函數發生器上設置狀態。把Function設置變成Square wave。添加Amplitude和Frequency組件。創建幅度和頻率輸入對話框，修改標題，提示操作人員。輸入不同的幅度和頻率值，運行程序，查看在操作人員輸入后設置是否已經變化。(如果已經連接了儀器，那么在Live Mode為ON時設置會變化。)

另請參閱

配 置儀器，使用Direct I/O，使用PC插件電路板，在VEE中使用NI Data Acquisition，IVI-COM和Instrument Manager，使用VXIplug&play驅動程序，在VEE中使用ActiveX Automation


實驗3-3: 使用Direct I/O

如果某部儀器沒有驅動程序，或者如果您想提高吞吐量，那么可以使用Direct I/O對象。

使用Direct I/O

在本練習中，您將使用Direct I/O配置HP 3325B函數發生器.

1 選擇I/O [image] Instrument Manager....

2 高亮度顯示fgen(@(NOT LIVE))項目，選擇Instrument [image] Properties。

3 點擊Advanced，選擇Direct I/O文件夾。查看提供的選項，然后點擊OK返回Instrument Properties，然后再點擊OK返回Instrument Manager。

備注

本例使用GPIB接口 (IEEE488)。如果想配置Serial、GPIO或VXI儀器，請參閱I/O配置技朮。

4 為把對象放在屏幕上，一定要保証仍高亮度顯示fgen(@(NOT LIVE))，然后點擊Create I/O Object [image] Direct I/O。

為在程序中使用Direct I/O對象，必須配置I/O處理。下一節介紹了編寫文本命令、讀取數据和上傳/下載儀器狀態。

把一條文本命令發送到儀器上

為把一條文本命令發送到儀器上，輸入相應的字符串。大多數GPIB儀器對發送到儀器的命令使用字母數字字符串。例如，為把一條命令發送到HP3325B函數發生器，把幅度設為5 V，應輸入命令字符串"AM 5 VO"。

本練習使用上一節中配置的HP 3325B函數發生器。在必要時，返回“使用Direct I/O"，配置儀器，然后再繼續。

1 在fgen(@(NOT LIVE))對象中，雙擊處理條，出現下面的I/O Transaction對話框。

WRITE旁邊朝下的箭頭顯示了處理菜單︰READ, WRITE, EXECUTE和WAIT。為把數据寫入儀器中，使用默認選項。打開對象菜單，對每种操作，可以查詢Help。

2 使用默認選項WRITE, TEXT, DEFAULT FORMAT和EOL ON。點擊標為a的輸入字段，輸入"AM 5 VO" (包括引號)，點擊OK。

應該看到下面顯示的處理WRITE TEXT "AM 5 VO" EOL。引號中的文本是程序運行時將被發送到HP3325B的命令。

在大多數情況下，把文本命令發送到儀器的流程是相同的。但是，有的儀器會指定每條命令結束時或一組命令結束時發送的字符。您必需從儀器文檔中獲得這些信息，然后在Direct I/O Configuration對話框中包括這些信息。

把表達式列表發送到儀器上

在某些情況下，您可能想把表達式列表發送到儀器上。例如，您可能想循環通過函數發生器中的大量頻率。為使用Direct I/O Transaction完成這一操作，將對表達式列表中的頻率使用一個變量，把該變量的數据輸入添加到Direct I/O對象中。下述步驟說明了怎樣把表達式列表發送到儀器上。

1 把HP3325B的第二個Direct I/O對象放在Main窗口中。雙擊處理區域，出現I/O Transaction對話框。

除命令字符串外，可以使用所有默認值。在這种情況下，使用格式"FR", <frequency>, "HZ"。這是一個表達式列表，每個表達式用逗號分開。頻率用變量A表示，這是到Direct I/O對象的數据輸入。

2 點擊命令字符串的輸入字段，輸入"FR",A,"HZ"。(例如，如果A為100，VEE將發送字符串"FR100HZ"。) 點擊OK。注意VEE自動添加標為A的數据輸入端。

3 選擇Flow [image] Repeat [image] For Range，把它放在Direct I/O對象左面。

4 把For Range數据輸出端連接到Direct I/O數据輸入端。

5 把For Range中的字段編輯成︰From 10, Thru 1.8M, 和Step 50k。

For Range現在將發出10 – 1,800,000 、步進為50,000的數字。在Direct I/O對象收到數字時，命令字符串會導致函數發生器輸出頻率。Direct I/O應設置如下。

6 (可選) 把HP3325B連接到計算机上(如有)，編輯這個Direct I/O對象的配置，使其包括儀器的地址。運行程序，將看到儀器生成這些頻率。

從儀器中讀取數据

儀器以許多不同格式把數据發送到計算机上。為從儀器中讀取數据，必須知道希望讀取的數据類型、及是作為單個值(標量)還是作為數組返回數据。還必須知道儀器是作為文本(ASCII)還是二進制返回數据。

可以在儀器文檔中找到這些信息，也可以使用I/O菜單中的VEE Bus I/O Monitor，檢查返回的數据。這些信息決定怎樣配置I/O處理。

在本例中，HP3478A万用表被連接到上個練習中描述的HP3325B函數發生器上。在發生器發出某個頻率時，万用表觸發讀數，把結果發回VEE。下面的步驟介紹了怎樣配置万用表處理。

備注

本例描述了READ TEXT處理。READ的其它選項包括BINARY, BINBLOCK, 和CONTAINER，使用Direct I/O對象和READ處理中對此進行了詳細介紹。

1 選擇I/O [image] Instrument Manager...，點擊Add...，把名稱變成dvm，點擊Advanced...，把Live Mode: 設為OFF。假設您還沒有連接HP3478A，點擊OK返回Instrument Manager。(如果有HP3478A，那么修改地址，儀器將跟蹤命令。)

2 高亮度顯示dvm(@(NOT LIVE))，在Create I/O對象下點擊Direct I/O。

3 雙擊<Double-Click to Add Transaction>條，出現I/O Transaction對話框。

4 高亮度顯示輸入字段，輸入"T5"，然后點擊OK。這將把"T"命令寫入儀器中。T5是到万用表的單個觸發命令。

5 打開對象菜單，點擊Add Trans...，添加另一個處理條，或使用<Double-Click to Add Transaction>，添加處理，出現I/O Transaction對話框。

6 點擊WRITE旁邊朝下的箭頭，得到一個下拉菜單，然后選擇READ。在選擇READ時，I/O Transaction框中出現新的按鈕。

7 檢查ExpressionList輸入字段，檢驗其中包含一個x。按Tab移動到下一個字段。儀器返回的數据被發送到數据輸出端。在這种情況下，將從儀器中讀取數据，并把數据放在名為x的數据輸出中。

備注

名稱不分大小寫。

8 REAL64 FORMAT采用默認值。万用表作為實數返回一個讀數。

9 保持DEFAULT NUM CHARS不變。

默認的字符數是20。如果想改變數字，點擊DEFAULT NUM CHARS，撥到MAX NUM CHARS，把數字20變成希望的數字。

10 保持SCALAR不變，點擊OK。

您將看到處理在條上顯示為READ TEXT X REAL64。注意VEE自動添加一個名為x的數据輸出。

備注

如果儀器返回一個取值數組，在I/O Transaction對話框中點擊SCALAR菜單，得到不同維度的菜單，如下圖所示。一旦已經選擇了數組維度，那么還需要指明數組的長度。

11 在右面添加Display [image] AlphaNumeric，把其輸入連接到標為x的Direct I/O輸出上。

兩個Direct I/O處理如下︰

配置處理的流程類似，而不管READ TEXT處理采取什么數据格式。可以考察提供的其它格式。如需更詳細的信息，請參閱使用Direct I/O對象 和 READ處理。

為創建完整的測試程序，這個万用表對象和函數發生器對象可以与VEE數据和顯示對象相結合。可以簡便地在VEE中創建全功能測試程序。

上傳和下載儀器狀態

某些儀器提供了“學習字符串”功能。學習字符串体現了構成儀器狀態的所有函數設置。Direct I/O將上傳這個學習字符串，并与該特定Direct I/O對象一起保存，以后可以在程序中把它下載到儀器上。為上傳儀器狀態，采取的步驟如下︰

1 把儀器手動設置成希望的狀態。

2 打開Direct I/O對象菜單，點擊Upload State。

現在，這個狀態与Direct I/O對象的這個特定實例相關。

3 雙擊處理區域，打開I/O Transaction對話框。

4 點擊TEXT，選擇STATE (LEARN STRING)，然后點擊OK，關閉I/O Transaction對話框。在執行這個WRITE處理時，以前捕獲的狀態被發送到儀器上。

上傳和下載由Direct I/O Configuration對話框中的設置控制。如果Conformance是IEEE 488.2，那么VEE將使用488.2 *LRN?定義自動處理學習字符串。如果Conformance是IEEE 488，那么Upload String將指明查詢狀態使用的命令，Download String將指明下載時狀態字符串之前的命令。下圖顯示了一個實例。

Conformance可以支持IEEE 488或IEEE 488.2。本例使用HP 54100A數字化示波器，其符合IEEE 488標準，要求"SETUP?"查詢學習字符串，在下載時要求在學習字符串前面有"SETUP"。在選擇Configured for State (Learn String)時，會出現另兩個字段，分別標為Upload String和Download String。輸入字段中已經輸入了正确的字符串。

另請參閱

配 置儀器，使用面板驅動程序，使用PC插件電路板，在VEE中使用NI Data Acquisition，IVI-COM和Instrument Manager，使用VXIplug&play驅動程序，在VEE中使用ActiveX Automation

使用Direct I/O對象，Direct I/O，I/O配置技朮


實驗3-4: 使用VXIplug&play驅動程序

VXIplug&play驅動程序是由各個儀器厂商發布的，并得到了這些厂商的支持。這些驅動程序基于C語言，是為實現最大性能和簡便易用性而設計的。

Agilent VEE全面兼容VXIplug&play。安捷倫科技提供的所有VXIplug&play驅動程序都作為單獨產品發售，也可以在网址http://www.agilent.com/find/inst_drivers及安捷倫開發人員网絡(ADN) http://www.agilent.com/find/adn 中下載。VEE同時提供這些驅動程序及所有安捷倫科技面板驅動程序。為獲得其它儀器的VXIplug&play驅動程序，請与儀器厂商聯系。

配置VXIplug&play 驅動程序

本例介紹了怎樣配置hpe1412驅動程序。

1 選擇I/O [image] Instrument Manager...。

2 高亮度顯示My configuration，然后在Instrument下點擊Add...，出現Instrument Properties對話框。輸入一個名稱，如Instrument，點擊Advanced...，出現Advanced Instrument Properties對話框。

3 在Advanced Instrument Properties對話框中，把Live Mode: 撥到OFF，選擇Plug&play Driver文件夾。點擊Plug&play Driver Name:字段，顯示下拉菜單，其中列明計算机上安裝的所有驅動程序。本例使用hpe1412驅動程序，如下圖所示。

選擇hpe1412驅動程序，點擊OK返回Instrument Properties對話框，再點擊OK返回Instrument Manager。應該有一個Instrument(@(NOT LIVE))項目。

4 高亮度顯示Instrument(@(NOT LIVE))，在Create I/O Object下，選擇Plug&play Driver。點擊放置對象。

備注

在VEE中，VXIplug&play驅動程序与Direct I/O對象類似。

為使用儀器進行測量，必需配置I/O處理，在VXIplug&play驅動程序中使用C函數。驅動程序為您提供了面板，可以選擇要使用的正确函數。

5 雙擊標為<Double-Click to Add Function>的處理條，顯示 Select a Function Panel。下圖顯示了函數面板中的函數層級。注意對話框中顯示了選定項目的Help。

備注

VEE自動初始化儀器。您不必象其它語言那樣使用init函數。

6 點擊Configure Present Settings [image] Measurement Type [image] Measurement Type Setup，顯示Edit Function Panel。在func下，點擊顯示下拉列表。選擇默認的DC Voltage。

7 點擊OK。To/From Instrument對象現在包含一個hpe1412_configure項目(instruHandle,hpe1412_CONF_VOLT_DC)。

8 在To/From Instrument對象中，雙擊添加一個函數，在Measure下選擇Take Measurement。點擊Configuration文件夾，顯示對話框。

9 點擊OK。To/From Instrument對象中列出第二個函數調用。

另請參閱

配置儀器，使用面板驅動程序 ，使用Direct I/O，使用PC插件電路板，在VEE中使用NI Data Acquisition，IVI-COM和Instrument Manager，在VEE中使用ActiveX Automation


實驗5-1: 為測試結果創建數組

創建數組最簡便的方式是使用Collector對象。

本練習使用For Count對象，模擬來自儀器的四個讀數。讀數被放到一個數組中，并打印結果。不管數据類型或數組長度如何，其原理是相同的，因為Collector將接受任何數据類型，并根据發送的要素數量，自動創建數組長度。

1 選擇Flow [image] Repeat [image] For Count, Data [image] Collector, 和 Display [image] AlphaNumeric。

對象名稱 | 說明
關于For Count對象 | For Count輸出從0開始的遞增整數值，具体取決于在輸入字段中指明的迭代數量。雙擊高亮度顯示默認數字10，然后輸入4。For Count將輸出0, 1, 2, 和 3。
關于Collector 對象 | Collector通過數据輸入端接收數据值。在完成數据采集時，“ping” XEQ端，告訴Collector構建并輸出數組。可以使用For Count序列輸出端，ping Collector XEQ端。Collector顯示一個按鈕，在1 Dim Array 和 n+1 Dim Array之間撥碼轉換。 雙擊Collector，看到打開的視圖，在對象菜單中閱讀Help，了解對象。

2 在Collector中點擊n+1 Dim，把選項變成1 Dim Array。

3 把For Count數据輸出端連接到Collector上的數据輸入端。

4 把For Count序列輸出端連接到Collector上的XEQ輸入端。

XEQ端是多個不同對象上存在的專用觸發端，決定著什么時候執行對象。在本例中，您希望對象在收集了數組的所有數据之后啟動。

5 把Collector數据輸出端連接到AlphaNumeric數据輸入端。

6 點擊拖動對象的任何一個角，放大AlphaNumeric以适應數組。(先選擇AlphaNumeric，通過“點擊放大”對象輪廓，還可以放大AlphaNumeric。)

7 運行程序，其外觀如下。

另請參閱

使用數組存儲測試結果


實驗5-2: 從數組中提取值

為從數組中提取值，可以在表達式中使用括號，也可以使用Access Array [image] Get Values對象。下面的實例使用Formula對象中的表達式。在本練習中，將在程序中增加多個對象。

1 把鼠標指針放在線上，按Shift-Ctrl，然后點擊鼠標左鍵，選擇Collector和AlphaNumeric之間的數据線。然后把Collector變成圖標。

2 選擇Device [image] Formula，复制它。把AlphaNumeric向右移，把兩個Formula對象放在Collector的右面。

3 把Collector數据輸出連接到Formula對象的數据輸入上。在上面的Formula輸入字段中輸入A[2]，在下面的Formula輸入字段中輸入A[1:3]。

4 A[2]將作為標量提取數組的第三個要素；A[1:3]將返回由三個要素構成的子數組，其中保持A的第二個、第三個和第四個要素(表示A輸入端上的數組)。

5 复制AlphaNumeric，把畫面連接到每個Formula對象上。

6 運行程序，其外觀應該如下。

另請參閱

使用數組存儲測試結果


實驗5-3: 使用To/From File對象

本實驗練習介紹了在文件中獲得測試數据的流程。在本練習中，將存儲和檢索三個常見的測試結果項目︰測試名稱、時戳和Real值的一維數組。這一流程同樣适用于所有VEE數据類型。

把文本字符串發送到文件中

1 選擇I/O [image] To [image] File，項目設置如下︰

操作 | 說明
filename | 使用默認文件myFile。點擊To File輸入字段，在主目錄中獲得一個文件列表框，可以改變默認文件。
Clear File At PreRun & Open | 复選這個框。在默認情況下，VEE會把新數据追加到現有文件末尾。复選這個框會在寫入新數据前清除文件。

2 雙擊處理區域，顯示I/O Transaction對話框。(在必要時參閱I/O處理。)

WRITE TEXT an EOL是默認處理。它使用TEXT編碼和指定的行尾序列，在a端寫入數据。VEE不分大小寫。數据輸入端或數据輸出端名稱可以使用小寫字母串，也可以使用大寫字母串。

項目設置如下︰

項目 | 說明
a (表達式字段) | 高亮度顯示表達式列表字段，其中包含默認值a。輸入"Test1"，然后點擊OK。 (需要使用引號指明是Text字符串。如果輸入沒有引號的Test1，那么VEE會把它理解為端名或全局變量名)
WRITE | 使用默認值WRITE。
TEXT | 使用默認值TEXT。編碼TEXT將使用ASCII字符發送數据。
DEFAULT FORMAT | 使用DEFAULT FORMAT。DEFAULT FORMAT 將選擇相應的VEE格式，如STRING。
EOL ON | 使用默認值。默認的EOL序列是新行\n的換碼符。

3 點擊OK，返回To File對象。現在處理欄應包含語句WRITE TEXT "Test1" EOL。這個處理把字符串Test1發送到指定文件。

把時戳發送到文件中

Device [image] Function & Object Browser [image] Time & Date類中的函數now()提供用Real64 Scalar表示的當前時間。Real的值是從公元0001年1月1日0時起經過的秒數。

因此，now()返回一個約為63G的值。VEE之所以提供這种格式，是因為它在數學運算中處理起來更容易，并節約了存儲空間。如果想以更加可讀的格式存儲時戳，使用To File對象中的TIME STAMP FORMAT。采取下述步驟，把時戳發送到文件。

1 在同一個To File對象中，雙擊處理區，顯示I/O Transaction框。

2 雙擊表達式列表輸入字段，高亮度顯示a，輸入now()。now()函數以Real格式發送來自計算机時鐘的當前時間。

3 把Real格式變成Time Stamp Format。點擊DEFAULT FORMAT旁邊的箭頭，顯示下拉菜洙，選擇TIME STAMP FORMAT。 I/O Transaction對話框現在顯示額外的項目。項目設置如下︰

時戳 | 說明
Date & Time | 在下拉菜單中選擇Time。
HH:MM:SS | 點擊并切換到HH:MM (從時分秒格式切換到時分格式)。
24 HOUR | 點擊切換到12 HOUR (從24小時格式切換到上午和下午格式)。

現在I/O Transaction對話框應類似于下圖。

4 點擊OK，返回To File框。現在第二個處理欄應包含語句WRITE TEXT now() TIME:HM:H12 EOL。

把Real數組發送到文件中

使用For Count和Collector對象創建一個由4個要素組成的一維數組，并把它應用到myFile。

1 選擇Flow [image] Repeat [image] For Count。把For Count中的默認值變成4。

2 選擇Data [image] Collector。雙擊Collector，切換到Open view。把For Count的數据輸出連接到Collector的數据輸入 (頂部輸入端)。把For Count序列輸出端連接到Collector上的XEQ端 (頂部輸入端)。圖標化Collector。

3 Collector現在創建數組 [0, 1, 2, 3]，可以把這個數組發送到數据文件中。

4 使用同一個To File對象，雙擊處理區。在I/O Transaction對話框中，打開DEFAULT FORMAT菜單，選擇REAL64 FORMAT。

5 I/O Transaction對話框為REAL64 FORMAT選項顯示其它按鈕。可以保留所有默認選擇，但您可能想考察這些選項，以便未來參考使用。

6 點擊OK關閉I/O Transaction框。現在，To File對象中的處理欄應包含語句WRITE TEXT a REAL64 STD EOL。注意VEE還自動添加一個輸入端a。

7 把Collector的輸出連接到To File的輸入a。現在程序應類似于下圖。(另外還顯示了配置的I/O Transaction框。)

使用From File對象檢索數据

為使用From File對象檢索數据，必須知道怎樣存儲數据。

備注

還可以使用To DataSet或From DataSet存儲和檢索數据，它不要求知道文件中的數据類型。“使用DataSets存儲和檢索記錄"中介紹了數据集。

在本例中，測試名稱以String Format存儲，后面跟著一個Time Stamp Format的時戳及由Real64數字組成的數組。將在From File中創建三個處理，把數据讀回VEE。

1 選擇I/O [image] From [image] File，把它放在To File對象下面。

2 把To File對象的序列輸出端連接到From File對象的序列輸入端。

這一順序連接保証了To File對象已經把數据發送到myFile中，然后From File才開始提取數据。

3 在From File對象中，保留默認數据文件myFile。雙擊處理欄，出現I/O Transaction對話框。點擊REAL64 FORMAT，把它變成STRING FORMAT，如下圖所示。

4 所有其它默認值都正确，因此點擊OK，關閉I/O Transaction框。現在，From File對象中的處理欄應包含語句READ TEXT x STR。

現在添加另兩個處理，讀回時戳和實數數組。

5 在同一個From File對象中，在第一個處理欄下面雙擊鼠標，出現I/O Transaction對話框。雙擊表達式列表輸入字段，高亮度顯示x，輸入y，讓第二個處理把數据讀回y端。(如果這個端仍保留為“x”，那么第二個處理會覆蓋第一個處理放到“x”中的數据，而不是追加數据) 把REAL64 FORMAT變成STRING FORMAT，然后點擊OK。

備注

為作為文本字符串讀回時戳，使用STRING FORMAT。TIME STAMP FORMAT把時戳數据轉換回到Real數字。

6 在同一個From File對象中，在第二個處理欄下面雙擊鼠標，出現I/O Transaction對話框。項目設置如下︰

項目 | 說明
(表達式字段) | 把x編輯成z，以便把Real數組讀回Z輸出端。
SCALAR | 把SCALAR變成ARRAY 1D。
SIZE: | 現在I/O Transaction框增加一個SIZE按鈕。在本例中，數組有4個要素。用4替換10，點擊OK。

備注

如果不知道數組大小，可以把SIZE切換到TO END。這會在VEE不知道确切大小的情況下，讀取到文件末尾的數据。例如，可以使用這种功能，作為一個字符串數組讀取一個文件的整個內容，檢查文件內容。

現在，From File對象中的處理欄應包含語句READ TEXT y STR和READ TEXT z REAL64 ARRAY:4。注意，VEE自動為x, y和z添加數据輸出端。還可以在對象菜單 [image] Add Terminal, Delete Terminal下或使用快捷方式Ctrl-A和Ctrl-D，手動添加或刪除輸入端和輸出端。

7 選擇Display [image] AlphaNumeric，复制兩次，得到三個顯示畫面。把AlphaNumeric對象連接到From File的三個數据輸出端。點擊拖動對象的任何角，放大數組顯示畫面。

在從菜單中第一次選擇時，還可以點擊拖動對象外框，确定AlphaNumeric畫面大小。

8 運行程序，程序應類似于下圖︰

注意第一個Alphanumeric顯示了標題，第二個顯示了測試時間，第三個列出了數組中的數字。

另請參閱

了解I/O事務, I/O事務格式


實驗5-4: 使用記錄

本練習介紹了怎樣使用Record數据類型。您將了解怎樣構建記錄，怎樣檢索該記錄中的特定字段，怎樣設置選擇的字段，怎樣使用一個步驟解除構建整個記錄。本練習還以不同的方式使用時戳函數now()。

構建記錄

使用三個字段構建記錄︰測試名稱存儲為String，時戳存儲為Real Scalar，模擬的測試結果存儲為由4個要素組成的Array of Reals。在下面的練習中檢索這些字段時，您將看到可以把時戳轉換成許多不同的顯示格式。

選擇Data [image] Constant [image] Text，在輸入字段中輸入Test1，創建測試名稱。重命名對象 Text Constant。圖標化Text Constant。

9 選擇Device [image] Function & Object Browser。在Type下點擊Built-in Functions，在Category下點擊Time & Date，在Functions下進行選擇，點擊Create Formula。把對象放在Text Constant下面。

10 選擇Data [image] Constant [image] Real64，把它放在now()下面。

11 在Real64對象菜單中點擊Properties...，選擇1D Array，可以把這個Scalar Real64轉化成Array 1D。

12 雙擊Real64標題條，打開Constant Properties對話框。在Configuration下選擇1D Array，把Size變成4，然后點擊OK。

在要素0000旁邊雙擊鼠標，高亮度顯示第一項，在這個數組中輸入四個值，然后在每一項之間使用Tab鍵，輸入值2.2, 3.3, 4.4, 5.5。圖標化Real64。

13 選擇Data [image] Build Data [image] Record，把它放在另三個對象的右面。添加第三個數据輸入端，從而可以輸入三個字段。在端上雙擊鼠標，打開每個端，把三個輸入端重命名為testname, time, 和data。

Build Record對象上的Output Shape在Scalar和Array之間撥碼轉換。在絕大部分情況下，Scalar默認值是正确的選擇。

14 把Text Constant對象連接到testname端上，把now()對象連接到time端上，把Real64對象連接到Build Record對象上的data端上。

15 運行程序。雙擊Record數据輸出端，檢查記錄。程序應該如下。

可以看到三個字段及其值。如果點擊Real64: Array 1D按鈕，列表框會顯示實數值。注意時戳已經存儲為Real64 Scalar。在下面的練習中，您將把它轉換成更加可讀的形式。點擊OK關閉Output Terminal Information對話框。把程序另存為records.vee。

從記錄中獲得字段

使用Get Field 對象，從記錄中提取三個字段中的每個字段，然后顯示每個字段的值。

1 打開records.vee 程序。

2 選擇Data [image] Access Record [image] Get Field。出現標題為rec.field的對象。

不管字段數量和類型如何，標為rec的數据輸入都將獲取任何記錄。Rec.field是輸入字段中的默認選項，但可以對其進行編輯，檢索任何字段。Rec是指數据輸入端上同一名稱的記錄。(記住VEE不分大小寫。)

備注

Get Field對象是配置了輸入和表達式的一個Formula，其類似于Function & Object Browser中的公式。

3 复制rec.field兩次，把對象放在Build Record的右面。

4 把Build Record數据輸出連接到所有三個rec.field對象上。

5 由于三個字段存儲為testname, time, 和data，因此您必須編輯rec.field對象，以獲得相應的字段。

6 把三個rec.field對象表達式字段編輯成rec.testname, rec.time, 和rec.data。

7 選擇Display [image] AlphaNumeric，复制它兩次。把三個顯示畫面連接到三個rec.field對象上。重新确定第三個顯示畫面的大小，以适應實際數組，其大約比其它對象長三倍。

8 打開第二個AlphaNumeric顯示對象菜單，選擇Properties，然后選擇Number文件夾。點擊Global Format左面，去掉對勾。

設置顯示格式。打開Real部分的Standard菜單。選擇Time Stamp，點擊OK。

9 點擊HH:MM:SS，撥到HH:MM。點擊24 HOUR，撥到12 HOUR。

10 運行程序，把它另存為getfield.vee。程序應該如下。

注意第二個畫面列出了周几、日期和用小時和分鐘表示的時間以及a.m.或p.m.指示。

在記錄中設置字段

本練習說明了怎樣改變記錄特定字段中的數据。

備注

您可以在不同測試中使用相同的Record。

1 打開getfield.vee程序。

2 選擇對象，按Ctrl-X，在Build Record后刪除所有對象。

1 選擇Data [image] Access Record [image] Set Field，把它放在Build Record右面。把Build Record的輸出連接到Set Field的rec輸入上。標題是rec.field = b。

Set Field的工作方式是把賦值符號(=)右面的表達式分配到左側。因此，它修改指定的字段rec，包含來自右側的值。記錄其余部分不變。把進入記錄連接到rec，把進入的新值連接到b。修改后的記錄將放在標有rec的數据輸出端上。

備注

Set Field對象是配置有輸入和表達式的一個Formula，其類似于Function & Object Browser中的公式。

2 把表達式編輯成rec.data[*]=b，改變數据字段中四要素數組的值。(必需使用數組[*]符號，因為要改變這個記錄字段中的整個數組。) 您將把數組的新值放在輸入端b上。

3 選擇Data [image] Constant [image] Real64，把它放在Build Record對象下面。打開對象菜單，選擇Properties。在Configuration下選擇1D Array，然后把Size編輯成4，點擊OK。

如果數組中包含新的記錄字段值，它必須与當前數組的長度相同。

高亮度顯示第一項，使用Tab鍵移動到后面的項目中，把值1, 2, 3, 4輸入到Real64中。(在最后一項后面不要按Tab鍵。) 把它連接到標為b的Set Field (標題為rec.field=b)輸入上。

現在使用Get Field對象，從記錄中執行字段 rec.data，顯示結果。

4 選擇Data [image] Access Record [image] Get Field，把對象放在Set Field (rec.field=b)對象下。從rec.field到rec.data編輯Get Field 對象表達式。把rec.field = b的數据輸出連接到rec.field的數据輸入上。

備注

您還可以在表達式字段中使用Formula對象及A.data。

5 選擇AlphaNumeric顯示畫面，确定其大小以适應數組，把它連接到rec.field輸出端。

6 運行程序，把它另存為setfield.vee. 程序應該如下。

如本例中所示，可以修改任何Record字段。還可以修改部分字段。例如，試著把rec.field = b中的表達式變成rec.data[1]=20，然后刪除rec.field = b輸入b。再次運行程序，應看到數組︰2.2, 20, 4.4, 5.5。

通過一步解除構建記錄

為提取所有記錄字段，獲得字段名稱和類型列表，使用UnBuild Record對象。

1 打開setfield.vee程序。在Build Record后刪除所有對象。

2 選擇Data [image] UnBuild Data [image] Record，把它放在Build Record下，切換打開的視圖，把Build Record的輸出連接到UnBuild Record的輸入上。在UnBuild Record中添加另一個數据輸出端，把A、B和C輸出重命名為字段名稱︰testname, time, 和data。

3 選擇AlphaNumeric顯示畫面，复制它四次。把五個顯示畫面連接到UnBuild Record上的五個輸出端上。必須放大Name List, Type List和data的顯示畫面，以适應數組。此外，重新配置time顯示畫面，用日/月/年表示時間，用12小時格式表示小時和分鐘。

4 運行程序，把它另存為unbuild.vee。程序應該如下。

注意，Name List端在記錄中給出三個字段的名稱︰testname, time, 和data，就象Type List把testname識別為Text，把time和data識別為Real64類型一樣。

另請參閱

使用記錄存儲混合數据類型


實驗5-5: 使用DataSets

DataSet是文件中存儲的Records數組。本練習說明了怎樣獲得進出DataSet的數据。

在DataSet中存儲和檢索記錄

本練習創建由10條Records組成的一個數組，每條記錄包含三個字段︰一個測試名稱，一個Real64 Scalar，一個Reals數組。它把Records數組存儲在一個DataSet中，檢索和顯示記錄。

1 選擇Flow [image] Start。選擇Flow [image] Repeat [image] For Count，把對象放在Start下。選擇Device [image] Formula，把對象放在For Count的右面。把Start連接到For Count的序列輸入端；把For Count數据輸出端連接到Formula數据輸入端。

2 雙擊Formula表達式字段，高亮度顯示默認的表達式，然后輸入“test“ + a。

在點擊Start時，For Count對象向Formula的A端順序輸出整數0-9。在Formula對象中，整數添加到單詞“test”后面，作為Text Scalars輸出︰test0, test1, test2,...,test9。這些值將填充10條Records中的第一個字段。

3 選擇Data [image] Build Data [image] Record，把對象放在Formula右面。添加一個數据輸入端。把Formula的數据輸出連接到Build Record的A輸入。

4 從工具條中選擇Function & Object Browser圖標。

a 選擇Built-in Functions, Probability & Statistics, 和random，創建random (low, high)對象。把對象放在Formula對象下方。

b 刪除輸入端，把輸入參數從low變成0，從high變成1。

c 重命名對象 Random Number，把其數据輸出連接到Build Record的B端。

5 把Formula序列輸出端連接到 Random Number的序列輸入端。連接序列端保証每次程序迭代會把一個新的隨机數字放在特定記錄的B字段中。

6 選擇Data [image] Constant [image] Real64。把Real64對象放到Formula對象的下面。

a 打開對象菜單，點擊Properties。在標題中輸入Real Array，在Configuration下點擊1D Array，把Size變成3。點擊OK。

b 雙擊和輸入數字1, 2和3，高亮度顯示數組中的每一項。

c 把Real Array數据輸出連接到Build Record的C端。

7 選擇I/O [image] To [image] DataSet，把對象放在Build Record下。把Build Record的數据輸出連接到其數据輸入上。保持默認文件名myfile，复選Clear File At PreRun。

8 運行程序，應把由10條記錄組成的數組放到名為myFile的DataSet中，如下圖所示。

現在檢索記錄數組，使用From DataSet對象和Record Constant對象顯示數組。

9 選擇I/O [image] From [image] DataSet，把對象放在For Count下面。保持默認文件名myFile。點擊Get Records字段，從One撥到All。最后，在底部的表達式字段中保持默認值1。

通過這些設置，VEE查看myFile中的DataSet，查找滿足表達式字段指標的所有記錄。如果把Get Records設為One，VEE將輸出滿足表達式字段指標的第一條記錄。1表示TRUE條件，表明所有記錄都滿足指標，因此文件中的整個記錄數組將放在標為Rec的輸出端。其它練習中介紹了表達式字段的其它使用方式。如需更多信息，請在對象菜單中查詢Help。

把For Count序列輸出端連接到From Data Set對象的序列輸入。這保証了把數据發送到myFile的程序部分會在從文件中讀取數据前執行。可以打開Show Data Flow，顯示事件順序。

10 選擇Data [image] Constant [image] Record，把對象放在To Data Set下方。打開對象菜單，選擇Add Terminal [image] Control Input。從出現的列表框中點擊Default Value，然后點擊OK。重新确定Record對象尺寸，放大對象，以便在運行程序時能夠查看結果。

收到的記錄將成為默認值。在本例中，Record將從From Data Set對象收到一個記錄數組，它將自己格式化，顯示該記錄數組。

11 把From Data Set輸出端Rec連接到Record上的Default Value端。如果想查看這個端，打開對象菜單，選擇Properties，然后選擇Show Terminals，然后選擇OK。在From Data Set和Record之間出現一條虛線。

備注

兩個對象之間的虛線表示控制線。

12 運行程序，把它另存為dataset1.vee。程序應該如下。

備注

From Data Set對象必須包括至少一條滿足指標的記錄，否則VEE會發出錯誤信息。為避免錯誤，在對象中添加一個EOF (文件末尾)輸出端，如果沒有記錄滿足指標，那么會激活這個輸出端。然后可以在出現EOF時在程序中添加操作。

另請參閱

使用DataSets


實驗5-6: 對DataSets使用搜索和分類操作

在本練習中，您將學習怎樣在DataSet中搜索信息，為搜索操作創建一個操作人員界面，編程進行分類操作。

對DataSets執行搜索操作

1 打開dataset1.vee程序。

2 雙擊From Data Set對象底部的表達式字段，高亮度顯示當前表達式1。輸入Rec.B>=0.5。對象現在將輸出字段 B (在我們的代碼中是隨机數字)大于等于0.5的所有記錄。

3 添加一個EOF端，在沒有記錄滿足表達式字段中的指標時會啟動這個EOF端。把光標放在From Data Set對象的數据輸出區域上，按Ctrl-A。EOF 輸出端被添加到From Data Set對象上。

備注

為添加EOF端，還可以打開對象菜單，點擊Add Terminal [image] Data Output....。

4 運行程序，把它另存為dataset2.vee。

為搜索操作創建操作人員界面

本練習為操作人員從測試結果數据庫中提取數据添加一個菜單。操作人員界面具有安全保護，避免意外修改程序。

程序規范如下︰

• 提供一個測試菜單，允許操作人員從test0 到 test9選擇其希望獲得所有相關測試數据的某項測試。

• 使用標記的字段和值顯示指定的測試結果。操作人員應能夠与顯示畫面交互，獲得更詳細的信息。

• 包括清楚的操作說明。

使用下述步驟創建程序。

1 打開dataset2.vee程序。

添加一個控制輸入，允許在From Data Set對象中以程序化方式輸入表達式。

2 打開From Data Set對象菜單，選擇Add Terminal... Control Input...。從出現的菜單中選擇Formula，出現一個Formula 輸入端。點擊Get records字段，從All撥到One，一次存取一條測試記錄。

您希望用戶選擇某個測試名稱。測試名稱位于所有記錄的字段 A中。添加表達式︰

Rec.A==<測試名稱，外面加引號>

Rec.A 輸出記錄，其中字段 A与操作人員選擇的測試名稱相匹配。例如，如果操作人員選擇test6，表達式應為Rec.A=="test6"。對象提取測試記錄，然后可以顯示測試記錄。

創建一個菜單，允許操作人員點擊希望的選項旁邊的按鈕。

3 選擇Data [image] Selection Control [image] Radio Buttons，把對象放在For Count的左面。

a 打開對象菜單，選擇Edit Enum Values...。高亮度顯示0000: Item 1，輸入test0。按Tab鍵，移動到0001: Item2，輸入test1。在第三個項目(test2)后按Tab鍵時，會自動出現另一個項目。繼續輸入值，直到到達test9。點擊OK，應顯示從test0到test9的全部10個項目。

b 在對象菜單中點擊Properties選項，把對象名稱從Radio Buttons變成Test Menu，在Execution下選擇Auto Execute，選擇Open View [image] Show Terminals，點擊OK。

4 在操作人員進行菜單選擇時，程序現在可以執行，刪除Start對象。在Start對象上按鼠標右鍵，選擇Cut。

5 只有在進行菜單選擇時程序才應執行，把 Test Menu數据輸出端Enum連接到For Count 序列輸入端。程序應如下。

6 Test Menu的輸出進入Formula對象，然后把正确的公式發送到From Data Set對象。

選擇Device [image] Formula，把對象放在Test Menu下方。(在練習過程中增加項目時，您可能想重新排列和/或重新确定對象大小。) 在新的Formula對象中，輸入下述表達式︰

"Rec.A==" + "\"" + A + "\""

要素 | 說明
“Rec.A==” | "Rec.A=="把Text數据類型發送到From Data Formula表達式輸入。(引號表示文本字符串。)
A | VEE查看DataSet文件中所有記錄的第一個字段A，選擇等于選定測試名稱的第一個記錄。
“\”” | 引號的換碼符是\”。然后換碼符被放到引號中，表明文本字符串。 test name作為Enum數据類型來自Test Menu。要求使用引號，把正确的公式放到From DataSet對象中。

例如，如果選擇test6，那么最終的公式將是Rec.A=="test6"。然后From Data Set對象輸出其找到的第一個記錄，其"A"字段等于"test6"。

7 把Test Menu Enum數据輸出端連接到Formula對象的數据輸入端。圖標化Formula對象。

8 把Formula數据輸出端連接到標為Formula的From Data Set對象的控制輸入端。

9 為保証不會重用來自Formula的舊數据，刪除For Count和From Data Set之間的順序線。把For Count序列輸出端連接到Formula 序列輸入端。

10 把Formula序列輸出端連接到From Data Set 序列輸入端，保証使用Formula中的正确數据。

11 創建一個對話框，為操作人員顯示說明。選擇Display [image] Note Pad。把標題變成Test Results Database Instructions。刪除可能存在的任何模板信息。點擊Note Pad 輸入區，輸入︰Select the test results you want from the Test Menu。

12 重新命名Record Constant對象 Test Results。

13 程序應如下。 多次運行程序，檢驗其正确運行。由于Test Menu對象已經啟動AutoExecute，進行菜單選擇，運行程序。

然后創建操作人員界面。

14 按Ctrl，點擊下述對象: Test Menu, Test Results Database Instructions,和Test Results。

選擇的所有對象會顯示一個陰影。檢驗沒有選擇其它對象。

然后選擇Edit [image] Add to Panel，作為面板視圖出現操作人員界面。然后可以移動和确定對象大小。下圖顯示了一种布局。

備注

如果Add to Panel選項變成灰色，它表示在工作區中沒有選擇任何對象。

15 在Test Menu中進行選擇，多次運行程序。把程序另存為database.vee。

注意通過點擊Record Constant對象 (名為Test Results)中的字段名稱或值，可以獲得任何給定記錄更詳細的信息。

備注

為防止有人改變操作人員界面和程序，選擇File [image] Create RunTime Version...。輸入程序名稱，VEE將自動添加*.vxe擴展名，把它与沒有安全保護的版本隔開。

在記錄字段上執行分類操作

本練習使用上一個練習中創建的dataset2.vee程序。dataset2.vee程序在From DataSet對象中設置一個條件，如Rec.B>=0.5，然后VEE提取滿足要求的所有記錄。得到的記錄數組顯示在Record Constant對象中。

在本練習中, 我們修改dataset2.vee，對得到的記錄分類，确定哪些測試因超出最大余量而失敗。我們根据第二個字段按降序分類。

1 打開dataset2.vee程序。

2 選擇Device [image] Formula，把From Data Set數据輸出端Rec連接到Formula對象數据輸入端。雙擊Formula表達式字段，高亮度顯示默認公式，然后輸入sort(a, 1, “B”)。

Sort對象位于Function & Object Browser, Array Category函數中。可以在對象菜單 Help項下看到与其功能有關的詳細信息。sort()函數從Formula對象中調用。

第一個參數對Formula對象 A端上的數据分類，這是一個記錄數組。第二個參數指明分類方向︰任何非零的數字表示升序，零表示降序。默認方向是升序。在Record數据類型中，第三個參數指明要分類的字段名稱。因此，這會對記錄數組中的B字段按升序分類。

3 選擇Display [image] AlphaNumeric，把它連接到Formula對象的數据輸出端。

4 多次運行程序。程序應類似于下圖。注意程序根据字段B按升序對DataSet文件返回的所有記錄分類。

另請參閱

使用DataSets


實驗6-1: 把Agilent VEE數据發送到MS Excel

在這個實驗中，您將為MS Excel生成虛擬測試數据。(范例采用MS Office 2003和MS Excel 11.0 Object Library，同時還應使用MS Office 2000和MS Excel 9.0 Object Library。) 在參考正确的Automation Type Library后，您將聲明某些對象類型的全局變量，把這些變量放在一個稱為globals的UserFunction中。全局變量簡化了程序，更容易理解。

1 參考Automation Library。點擊Device [image] ActiveX Automation References...，選擇Microsoft Excel 11.0 Object Library，點擊OK。

2 創建一個存儲全局變量的UserFunction。點擊Device [image] UserFunction，把它重命名為globals。(如需与UserFunction有關的更多信息，參閱Help Contents and Index Tell me about

3 點擊Data [image] Variable [image] Declare Variable，把它放在globals內部左面。把Name變成sheet。把Type變成Object。其它項目出現在對話框中。在本練習中，不需要指定Object Type和Class。(本章另一個范例中指定了Type和Class。)

4 克隆這個對象三次，把其它對象重命名如下︰app, range和window。調整大小并把globals UserFunction移動到Main下面，其外觀應類似于下圖︰

5 完成各個項目与上圖的比較后，把四個對象圖標化。

注意，通過使用globals UserFunction中的datatype Object，可以指定Object Type和Class。指定Object Type和Class的原因有兩個︰進行更具体的類型檢查，捕捉事件。

進行更具体的類型檢查︰例如，如果指定一個Object app的類型為Excel.Application，那么只有Excel.Application類型的Object才能指配給app。指配Excel.worksheet或Word.bookmark類型的Object會導致錯誤。

捕捉事件︰還可以使用VEE UserFunction，捕捉應用中可能發生的各种事件，如在MS Excel工作表中按鼠標右鍵。對任何此類事件，可以指定一個VEE UserFunction處理事件，把信息傳回MS Excel。

這些事件适用于ActiveX控件，您需要一种方式，使控件向回与VEE通信。如需更多信息，參閱處理Automation對象事件。

6 打開UserFunction globals對象菜單，點擊Generate [image] Call，生成一個正确配置的Call globals對象。把這個對象放在Main窗口的左面，圖標化globals UserFunction窗口。

7 點擊Device [image] Formula，把它放在Main窗口的上方中心。把它重命名為Set up Excel Worksheet。把globals序列輸出端連接到Formula序列輸入端。從Set Up Excel Worksheet中刪除輸入端A (打開對象菜單，選擇Delete Terminal [image] Input。)

8 在Set up Excel Worksheet內部，輸入下面所示的直線。注意与ANSI C中一樣，分號作為行分隔符使用。

命令 | 說明
set sheet = | 關鍵字set用來把賦值運算符(在本例中是等號)右面的內容指配或設置成表達式左面的變量。例如，set app設置應用sheet.application，其已經定義為一個Excel工作表。
CreateObject (“Excel.Sheet”). | 創建Automation Server一個新的實例 (在本例中是MS Excel)，創建一個空白表(Excel中新建工作表的朮語)。每個Automation Server都有自己的朮語，但采用的語法相同。例如，為在MS Word中創建一份報告，應輸入CreateObject(“Word.Document”)，運行Word，創建一個空白文件。 如果使用set keyword，那么右面對象指針本身會指配給左面變量。如果沒有使用set，那么右面的默認屬性(通常是名稱)會指配給左面。如需更多信息，參閱處理Automation對象。
worksheets(1); | 在Excel運行內部新建的工作簿之后，可以使用CreateObject("Excel.Sheet")，确定工作簿中的第一個工作表。在語句中添加worksheets(1)，整個語句變成︰ set sheet = CreateObject("Excel.Sheet").worksheets(1); 這會把工作表設置成報表的Sheet 1。(如果想查看范例，打開MS Excel，選擇File => New，創建一個新的工作簿。您將注意到其中有多個工作表，分別標為Sheet1, Sheet2, 依此類推。您希望使用Sheet1。)
set app = sheet.application; | 請求Excel為整個應用提供一個指針，而不是只為工作表本身提供一個指針，其方式是詢問工作表的屬性Application，把它設置成變量app。
app.visible = true; | 把應用的可視屬性設為真，以在屏幕上顯示Excel(以便能夠使用它)。
set window = app.windows(1); | 參考這個窗口。
window.caption = “Test System Results”; | 把第一個窗口的圖示內容變成“Test System Results”。

備注

如需与Application Server庫有關的更多信息，參閱与ActiveX Automation和MS Visual Basic有關的各類書籍。您可能會在网上發現与訂購此類書籍有關的信息，如Office 2003或Office 97 Visual Basic編程人員指南。這些書籍也可以幫助您了解VEE，因為VEE的語法与MS Visual Basic非常類似。

9 創建一個Formula對象 (在Device [image] Formula下面)。克隆Formula對象，創建第二個Formula對象。創建一個For Range對象 (在Flow [image] Repeat [image] For Range下面)。重命名這些對象，連接對象，配置如下。(一定要刪除Formula對象Fill in Title上的輸入端。)

下面介紹了Formula對象和For Range對象中的指令︰

公式 | 說明
sheet.cells(1,1) = “DC Volts” | 參閱Excel工作表中的第一行和第一列。文字DC Volts將放在這里。這會把單元格(1,1)的默認屬性(這是取值)設置為"DC Volts"。
sheet.cells(A+1,1) = random(1,100) | 這個語句是sheet.cells(A+1,1).value=random(1,100)的速記方式。 第A+1行和第1列的工作表單元格通過在輸入端A值上加1，得到行號，同時仍保留在第1列中。返回的1和100之間的值指配給工作表中指定單元格。
from 1 thru 20, step 1 (For Range對象) | 由于For Range對象輸出1 - 20之間的整數，因此Fill in Cells會把隨机數字放到指定單元格中。

10 創建一個Formula對象和AlphaNumeric對象，重命名、配置和連接這些對象如下。

Formula對象中的項目如下︰

項目 | 說明
set range = sheet.range(“A2:A21"); | 把VEE變量范圍設置成參考Excel工作表上的范圍A2 到 A21。(A指工作表中的第一列。)
range.NumberFormat = “##,#00.00"; | 使用磅值符號(#)為每個單元格指配格式，在必要時可以使用較大的數字。
app.worksheetFunction.average(range); | 調用Excel方法average()，返回指定范圍值的平均值，其顯示在Results Average中。

11 把程序另存為results_average.vee。運行程序，MS Excel將啟動一個類似于下面的工作表︰

另請參閱

實驗6-2: 根据MS Excel模板創建Agilent VEE

實驗6-3: 使用MS Word編制Agilent VEE報告


實驗6-2︰在MS Excel模板中創建Agilent VEE

1 打開results_average.vee。

2 把For Range對象變成循環10次。

3 在Fill in Cells中添加輸入B，把內部的語句變成︰sheet.cells(A+1,1) = B[A-1]。

4 點擊Device [image] Formula，把它重命名為Array of Test Data，輸入嵌入式函數randomize(ramp(20), 4.5, 5.5)，創建一個由20個數組組成的、取值在4.5 - 5.5之間的隨机數組。刪除輸入端，把數据輸出端連接到Fill in Cells的輸入B。

5 把屏幕底部Formula框中的范圍從A21變成A11。語句現在應該變成︰
set range = sheet.range(“A2:A11");

6 把程序另存為report_template.vee，運行程序。把它与Excel工作表進行對比，整個程序應該如下圖所示。

可以作為模板重用這一程序，顯示MS Excel中的測試結果。您只需把測試數据放到數組中，修改模板其余部分，使用适當的格式填寫相應的單元格即可。

如果想查找MS Excel library中的其它方法和屬性，查看Function & Object Browser，在Type下選擇ActiveX Objects，在Library下選擇Excel。可以選擇一個Class或Member，按Help，獲得Automation Server作者(在本例中是微軟)提供的Help信息。如需与這些庫有關的更完整的信息，請參閱微軟文檔。

自己操作

生成一個波形，去掉Time Span，得到一個數組。使用工作表為MS Excel創建一個VEE對象，把它設置成Object變量。使應用看得見。然后在一個步驟內、而不是一次一個單元格，把256點數組放到工作表范圍"A1:A256"中。

使汁煣build Waveform對象。使用[a]構建數組語法，從1D數組中創建一個2D數組。然后調用函數transpose()，使其變成一個256 x 1數組，而不是1 x 256數組，以便Excel在一個步驟中接受這個數組，如下圖所示。

使用MS Excel擴展功能

下圖說明了更精細的在MS Excel中顯示測試結果的程序范例。您會看到，了解MS Excel庫中更多的調用功能可以怎樣擴展模板，在MS Excel中顯示VEE數据。

各個項目如下表所示︰

項目 | 說明
MS Excel Window Size | 注意右上角工作區中的下拉列表。可以選擇其中一個選項︰xlMaximized, xlMinimized, xlNormal，在出現時選擇Excel內部的工作表窗口大小。每個窗口的大小与一個數字相關，VEE會計算這個數字，把它放在wndState變量中。然后這個值指配給Excel庫中的windowState屬性。
Memory Tracking | (點擊Formula對象和Meter對象上Properties框中的Show Terminals)。注意Excel庫中的memoryTotal和memoryUsed屬性指配給VEE變量memTotal和memUsed。然后使用這些值，計算配置VEE儀表的范圍，然后顯示MS Excel使用的內存。
Number Format | 注意可以非常簡便地在數字格式中增加美元符號。
sheet.SaveAs (filename) | 從Excel庫中調用SaveAs()方法，自動保存工作表。注意，File Name Selection框(從Data Þ Dialog Box菜單中)用來顯示從VEE中彈出的Save As對話框。然后選中的文件名作為Excel SaveAs()方法調用中的參數使用。
Press to Kill Excel | 一直使用Confirm (OK)按鈕表明什么時候想關閉Excel。
Close Excel | 調用quit()方法，告訴MS Excel退出。

另請參閱

實驗6-1: 把Agilent VEE數据發送到MS Excel

實驗6-3: 使用MS Word編制Agilent VEE報告


實驗6-3︰使用MS Word編制Agilent VEE報告

先采取下述步驟，把五個變量聲明為類型Object。

1 點擊Device [image] ActiveX Automation References...，選擇Microsoft Word 9.0 Object Library。

2 點擊Data [image] Variable [image] Declare Variable。

a 把Type字段變成Object，克隆它四次。

b 把五個對象變量命名為App, Doc, Wnd, Sel和Bmp。

c 在所有這些變量上，選中Specify Object Type。在Library內部聲明特定Class的優勢如下︰VEE可以進行類型檢查，确定程序錯誤，可以捕獲來自Automation Server的事件。

d 然后點擊Edit...按鈕，在每种情況下都選擇Word for Library。選擇下面的Class︰

App將使用Application

Sel將使用Selection

Wnd將使用Window

Doc將使用Document

Bmp將使用Shape

e 在類允許時選擇Enable Events。圖標化這五個圖標。下面是這些變量的open view。

3 創建一個稱為Graph的UserFunction，它使用Function Generator虛擬信號源，向Waveform (Time)顯示屏發送一個正弦波。只創建顯示屏的面板視圖，然后在Main窗口中生成一個Call Graph對象。(記住，UserFunction對象菜單包括一個簡便的調用生成方式。)

現在使用Wave顯示屏創建一個Panel位圖文件，這個位圖文件用于MS Word編制的報告中。

4 點擊Device [image] Formula，為位圖創建一個文件名，把它重命名為Image Filename。在Formula輸入字段中輸入installDir() + "\\panel.bmp"。(使用換碼序列\\指定ASCII字符\) 刪除輸入端A。

例如，如果安裝在c:\Program Files\Agilent\下，那么您可以在Result輸出端生成下面的文本字符串︰
C:\Program Files\Agilent\VEE Pro 8.0\panel.bmp.

5 創建另一個Formula對象，輸入savePanelImage("Graph", FileName, 256)。把輸入端重命名為FileName。

6 這會把panel.bmp文件中的UserFunction Graph屏幕轉儲圖保存在安裝目錄中，顏色為每個像素256色。

7 創建另一個Formula對象，輸入語句︰
Set App = CreateObject("Word.Application")
這會啟動MS Word，指配對象變量app，參考應用的這一實例。刪除輸入端A。連接Call Graph, ImageFileName和savePanelImage，如下圖所示︰

8 點擊Device [image] Formula，輸入下圖所示的語句。下面介紹了這些語句。把輸入端A重命名為FileName。連接數据輸入端和序列輸入端，如下圖所示。

在上圖中，注意可以与對象的句點符號一起嵌套屬性和方法調用。參閱ActiveX文檔，找到目標應用中的适當屬性。可以使用這里介紹的屬性和方法，開始生成測試和測量報告。Formula對象中的項目包括︰

項目

說明

App.Visible = 1;

在屏幕上可以看到MS Word。

Set Doc = App.Documents.
Add();

在MS Word中添加一個Document，把這個文件指配給Object變量Doc。

注︰在Excel范例中，使用CreateObject(Excel.Sheet)啟動一個空白工作表。在本例中，啟動Word，方法Add()在Word中添加一個空白的Document。可以以任何一种方式創建任何一种應用。

Doc.Activate();

激活上面的Document。

Set Wnd = App.Active Window;

獲得活動窗口中的文件，把它指配給Object變量Wnd。

Set Sel = App.Selection;

把焦點(選擇)放到文件中，把它指配給Object變量Sel。這允許插入文本。

Wnd.View.Type = 3;

指定顯示文件的窗口類型。3表示正常窗口大小。1將圖標化窗口。

注︰這里使用3，而不是常數wdPageView，因為Office 2003 Type Library中沒有這個常數。

Sel.TypeText(*** Test Results ***),
Sel.TypeParagraph();

把標題*** Test Results ***放在文件中，發出回車/換行。

Set Bmp = Doc.Shapes.
AddPicture(FileName);

把panel.bmp位圖放在文件中，把Shapes Class中的這個調用指配給Object變量Bmp。

Sel.TypeParagraph();

Sel.InsertDateTime
(M/d/yy h:mm:ss
am/pm, 0);

在文件中放入時戳。

9 添加另外三個Formula對象和一個If/Then/Else對象，配置和連接這些對象，如下圖所示︰

新增對象的項目如下︰

對象 | 說明
App.ActivePrinter | 請求字符串中的默認打印机，包括其端口。
strLen(str) != 0 | 确認ActivePrinter已經确定配置好的打印机位置(如果輸入上的字符串不為空，那么...)，然后在Then端輸出一個1 (=TRUE)，它會ping包含PrintOut調用的Formula對象。
DocPrintOut(0) | 打印文件。
App.Quit(0) | 關閉MS Word程序。

10 運行程序。其外觀應類似于下圖 (如果屏幕轉儲中的顏色看起來有些奇怪，那么應圖標化任何打開的程序，這樣PC可以使用整個調色板。)

如需与使用ActiveX Automation控制MS Excel和MS Word有關的更多信息，請參閱微軟文檔。記住，還可以控制支持ActiveX Automation(有時稱為Automation)或OLE Automation的其它Server應用。

如需与使用ActiveX控件有關的更多信息，請參閱“使用操作人員界面"。如需与從MS Visual Basic程序中使用ActiveX控制VEE的更多信息，請參閱可以調用的VEE Active X Automation Server。

另請參閱

實驗6-1: 把Agilent VEE數据發送到MS Excel

實驗6-2: 根据MS Excel模板創建Agilent VEE


實驗8-1︰處理工作簿

1 打開一個新的VEE項目。

2 選擇Excel [image] Initialize Excel Library。導入并準備使用VEE Excel Library函數。

3 選擇Excel [image] New Workbook。建立并打開一個新的Microsoft Excel工作簿。在建立新的工作簿時，它會自動變成活動工作簿。什么是“活動工作簿”呢？即作為所有操作焦點的工作簿。

4 選擇Excel [image] Save Workbook As。

5 添加一個文本常量，把它寫入SaveWorkbookAs對象的數据輸入端。在文本常數中輸入C:\MyWorkbook.xls。在處理新工作簿時，強烈建議采用這一步。這個保存操作也适用于活動工作簿。

備注

活動工作簿或工作表是指最后一次打開的工作簿或工作表，或使用Select Workbook或Select Worksheet對象專門選中的工作簿或工作表。

6 選擇Excel [image] Close All Workbooks。不管是否已經保存，都關閉所有工作簿。

7 選擇Excel [image] Quit Excel。關閉Microsoft Excel會話，退出VEE Excel Library。

從序列輸出到序列輸入用線把這些對象連接起來，程序外觀應類似于下圖︰

備注

文本常數中的文件名包括文件擴展名。VEE Excel Library會逐字處理文件名。必須提供完整的文件名，在需要時還可以提供完全合格的路徑。

在繼續本練習前，關閉VEE程序，創建一個新程序。

8 選擇Excel [image] Initialize Excel Library。導入并準備使用VEE Excel Library功能。

9 選擇Excel [image] Open Workbook。下圖說明了Open Workbook對象。最后打開的工作簿自動變成活動工作簿。

10 選擇Excel [image] Select Workbook。在選中一個工作簿時，它變成活動工作簿。將在活動工作簿上進行后續操作。注意Select Workbook對象要求輸入工作簿的名稱，如下圖所示。必須從當前打開的工作簿中選擇一個工作簿，否則VEE Excel Library會生成錯誤。

備注

如果選中一個工作簿，以后又打開或創建一個新的工作簿，活動工作簿會變成最新打開的或創建的工作簿。

11 選擇Excel [image] Save Workbook。保存只對活動工作簿有效。

12 選擇Excel [image] Quit Excel。關閉Microsoft Excel會話，退出VEE Excel Library。已經跳過Close All Workbooks一步。盡管這种退出方式不太美觀，但仍是可以接受的。

13 把本練習另存為SelectWorkbook.vee。


實驗8-2︰使用工作簿枚舉

1 本練習假設您在C驅動器的根目錄下保存了一個電子表格MyWorkbook.xls。

2 從實驗8-1中使用的SelectWorkbook.vee程序開始，剪切Select Workbook和Call vxLib.SaveWorkbook之間的線。在這兩個對象之間創建部分空間。

3 在Select Workbook對象后面添加一個New Workbook對象，用線把Select Workbook的序列輸入与序列輸出連接起來。

4 選擇Excel [image] Enumerations [image] Enumerate Workbooks。把這些對象放在New Workbook對象和Save Workbook對象之間。

5 用線連接其序列端。

6 運行程序，應看到下述結果。


實驗8-3︰格式化單元格

在下面的練習中，您將格式化Excel工作表中一系列單元格的邊框和背景顏色。

1 打開一個新的VEE項目。

2 通過在單元格A1到A4中添加值，編制MyWorkbook.xls文件。保存并關閉工作簿。退出Excel。

3 在VEE程序中添加一個Initialize Excel Library。

4 在VEE程序中添加一個Open Workbook對象。

5 在程序中添加一個Excel [image] Formatting [image] Format Cells對象，用線把Open Workbook對象的序列輸入連接到序列輸出上。

6 打開Format Cells對象，把BackColor參數設置為Gray25。

7 在程序中添加一個文本常數，用線把其輸出端連接到Format Cells對象的輸入端。在文本常數中輸入范圍A1:A4。

8 在程序中添加一個Excel [image] Formatting [image] Auto Fit Columns對象，用線把其序列輸入端連接到Format Cells對象的序列輸出端。

9 在程序中添加一個文本常數對象，用線把其輸出端連接到AutoFitColumns對象的輸入端。輸入單元格地址A1。

10 添加一個SaveWorkbook對象，用線連接其序列端，如上所述。

11 添加一個Quit Excel對象，用線連接其序列端，如上所述。

12 運行程序。

13 打開MyWorkbook.xls，查看工作表，檢查變化結果。

14 打開Format Cells對象，分析提供的其它格式化選項。


實驗8-4︰使用Send Record

1 在Microsoft Excel中使用MyWorkbook.xls創建指明范圍。高亮度顯示想要使用的單元格范圍。選擇Insert [image] Name [image] Define，在Excel中定義指明范圍。范圍在對話框底部的文本框中指明。在文本框末尾是一個圖標，從名稱定義模式切換到單元和選擇模式。

2 定義三個范圍A, B和Test。确認指明范圍沒有重疊。記錄有一個A字段和一個B字段。這時已經為記錄中的每個字段定義了一個指明范圍。

3 Send Data [image] Record to Named Range UserFunction有一個輸入端和兩個輸出端。用線把默認的記錄常數連接到輸入端。用線把一個字母數字連接到上方的輸出端。

4 運行程序。

5 复核一下工作表，可以看到A指明范圍中的A字段值及B指明范圍中的B字段值。

6 注意，字母數字對象擁有輸出“Test”。這是因為VEE記錄沒有使用指明范圍Test。這一功能可以簡便地發現字段結構是否完整或Excel中是否存在命名錯誤。

7 把這一程序另存為SendRecord.vee。


實驗8-5︰從Panel Image中創建Excel圖片

1 使用SendRecord.vee程序，去掉記錄常數、字母數字和CallSendRecord對象。

2 從Excel [image] Send Panel Image菜單中插入ImageSettings對象。用線把它連接到File Name Selection對象的出局序列端。調節設置或使用默認值。

3 添加一個名為UserFunction1的UserFunction，具体如下。注意Function Generator中的frequency和num points參數略有修改。

4 把Panel Image插到Picture對象中。添加兩個Text常數和兩個Int16常數，用線連接這些常數，具体如下。用線把Panel Image連接到Picture上，具体如下。相對大小參數允許調整圖片大小，其中1代表100%，.8代表80%。

5 把XY Trace對象放在面板上。

6 運行程序，檢查Excel工作表。


實驗8-6︰使用系統命令

1 選擇I/O [image] Execute Program。點擊Prog with params字段，得到一個光標，然后輸入︰

command.com /c dir >> c:\bob

備注

對Windows 2000或Windows XP，用cmd替換command.com。如果驅動器盤符不是c:，那么在下面的指令中用相應的盤符代替C盤。

(可能需要包括command.com可執行程序的完整路徑。) 該命令運行DOS命令解釋程序，該程序運行系統命令，顯示當前目錄，把輸出(>)重定向到bob文件，而不是電腦屏幕。

對Wait for prog exit選項，選擇Yes。對Run Style，選擇Normal，對Working目錄輸入c:\。

2 選擇I/O [image] From [image] File，把它放在Execute Program下面。把Execute Program的序列輸出端連接到From File對象的序列輸入端。

點擊標注為myFile的From File:輸入字段，得到一個列表框，輸入c:\bob，然后點擊OK。(該程序為您創建文件bob。)

3 雙擊事務欄，出現I/O Transaction對話框。

a 把REAL64 FORMAT變成STRING FORMAT。

b 把SCALAR變成ARRAY 1D。

c 點擊SIZE: (10)字段，切換到TO END: (*)，然后點擊OK。事務欄現在應該顯示︰READ TEXT x STR ARRAY:*。這一事務將讀取bob文件的內容。

4 選擇Display [image] Logging AlphaNumeric，把其數据輸入端連接到From File數据輸出。

5 運行程序，其外觀應類似于下圖。


實驗9-1: UserFunction操作

本練習介紹了怎樣創建一個名為ArrayStats的UserFunction，它將接受數組，計算最大值、最小值、中間值和標準偏差，并把結果放在輸出端。

創建UserFunction

1 選擇Device [image] Formula，刪除其默認的輸入端，把默認的表達式變成ramp(1024,1,1024)。

這將創建一個1024元素的數組，取值為1 – 1024。

2 選擇Device [image] UserFunction，把它重命名為ArrayStats。

a 為數組添加一個數据輸入端。

b 為結果添加四個數据輸出端。

c 重命名輸出端︰Max, Min, Mean和Sdev。在Function & Object Browser對話框的Probability & Statistics中選擇max, min, mean和sdev。

d 把它們放在ArrayStats中，把其數据輸入連接到A，把其數据輸出連接到相應的輸出端。縮小ArrayStats窗口，以能夠同時看到Main窗口和ArrayStats窗口。

3 圖標化ArrayStats，它變成工作空間底部的一個圖標。

4 點擊Device [image] Call，打開對象菜單，點擊Select Function，然后點擊OK。注意VEE自動重命名對象，添加正确的端。

5 把Formula的輸出連接到Call ArrayStats 輸入。選擇Display [image] AlphaNumeric，复制三次，把顯示畫面連接到Call ArrayStats 輸出端。重命名顯示畫面。

6 運行程序。程序應如下。把程序另存為 array_stats.vee。

如果想在程序中其它地方使用ArrayStats，應點擊Device [image] Call，從對象菜單中打開Select Function對話框，選擇ArrayStats。VEE會自動把對象重命名為Call ArrayStats，并添加必要的輸入端和輸出端。

從UserFunction對象菜單中，選擇Generate [image] Call，調用Call ArrayStats對象。(在進行這一操作時，要保証UserFunction不會擴展到整個工作空間。)

編輯UserFunction

在本練習中，編輯ArrayStats，提供一條有四個字段的記錄，進行數組統計。

1 刪除四個AlphaNumeric顯示畫面。

2 選擇Edit [image] Edit UserFunction...，并從Edit UserFunction列表框中選擇ArrayStats。將顯示程序中的所有UserFunction。

3 打開ArrayStats 對象菜單，點擊尺寸，放大編輯窗口。如果需要重新确定對象大小，點擊和拖動對象的任何一角。

4 刪除連到輸出端的四條線。(按Ctrl-Shift，點擊想刪除的線。)

5 選擇Data [image] Build Data [image] Record，把它放在ArrayStats窗口的右側。

a 添加兩個數据輸入端。

b 在統計函數后標記四個端︰max, min, mean和sdev。

c 把四個Formula對象輸出連接到Build Record上的輸入。

d 雙擊Max，輸入新名稱，點擊OK，重命名Max 輸出端 X。

e 刪除其它ArrayStats 數据輸出端。

f 把Build Record 輸出連接到User Function編輯窗口上的X 輸出端。程序應如下。然后點擊窗口上的圖標化按鈕。

6 打開Call ArrayStats 對象菜單，點擊Configure Pinout，將調節端數，以与最新編輯相匹配。

備注

為更新端數，在改變UserFunction中的輸入或輸出數量時，必須打開對象，點擊Configure Pinout。也可以手動更新Call對象的輸入端和輸出端，但使用Configure Pinout要簡單得多。可以使用Find，查找調用UserFunction的所有Call對象和表達式。如需更多信息，請參閱“ 在大型程序中查找函數" 。

現在使用Record Constant對象顯示一條記錄。使用Default Value控制輸入，從ArrayStats中接受記錄。VEE自動配置Record Constant，保留進入的記錄。

7 選擇Data [image] Constant [image] Record，把它放在Call Function對象的右面。

a 打開Record 對象菜單，點擊Add Terminal [image] Control Input...。從出現的列表框中選擇Default Value。如果愿意，可以打開Properties菜單，進入Show Terminals。

b 現在把Call Function數据輸出連接到Record對象的控制輸入端。注意，控制線用虛線表示，以与數据線區分開來。

8 運行程序。

從表達式中調用UserFunction

在本練習中，您將學習怎樣從Formula對象的表達式中調用ArrayStats。

1 選擇Device [image] Formula，用ArrayStats(A)代替默認的公式。在Call ArrayStats 對象菜單中，點擊Replace。

VEE屏幕底部的Status Bar提示您選擇更換對象。點擊調用ArrayStats函數的Formula對象。VEE自動用新的Formula對象代替Call ArrayStats對象，并保留數据線的連線。

Formula對象獲得A端上的輸入，把它發送到UserFunction ArrayStats。ArrayStats把統計記錄發送到端 X。來自UserFunction (X)的第一個輸出值被返回到Formula對象，傳送到其Result 輸出。

2 運行程序。

注意Formula對象中的ArrayStats功能与Call ArrayStats對象中完全相同。本例使用Formula對象，但可以從接受表達式的任何輸入字段調用ArrayStats，如To File對象。

備注

在從表達式中調用UserFunction時，UserFunction只提供一個輸出(最上面的數据輸出端)。如果需要所有輸出，或者不能放到Record中，那么使用Call Function對象。

備注

在從表達式中調用UserFunction時，輸入端作為函數參數使用，傳送到函數中。如果沒有任何數据傳送到函數，那么必須在函數名稱后包括空白的圓括號。否則，VEE會假設您指的是全局變量或輸入端。例如，如果稱為MyFunction的UserFunction沒有任何輸入參數，那么必須在表達式中寫明MyFunction()。Call對象不要求圓括號，因為VEE知道您指的是一個函數。

生成UserFunction調用

為從UserFunction生成并把調用對象放在Main程序中，使用UserFunction 對象菜單Generate菜單。Generate菜單包含調用UserFunction的大多數常用對象。在選擇調用對象時，它可以放在調用窗口中，如Main程序，并相應地配置正确名稱和端。

在本練習中，您將學習怎樣在Main程序中從ArrayStats UserFunction 生成ArrayStats對象。

1 在上面使用的同一個實例中，雙擊Formula對象 ArrayStats，刪除對象。(還可以選擇對象菜單，選擇Cut。)

2 在UserFunction ArrayStats中，選擇對象菜單，選擇Generate [image] Formula Call。下圖顯示了UserFunction 對象菜單中的Generate菜單。

3 把對象放在Main中。注意VEE自動命名新的對象ArrayStats(A)，包括調用UserFunction ArrayStats的表達式ArrayStats(A)。

4 把Formula對象的輸出連接到ArrayStats(A)，把ArrayStats(A)的輸出連接到Record。

5 運行程序。程序應如下。

打開UserFunction對象菜單，選擇Generate菜單，查看其它可以放在程序中調用UserFunction 的對象，包括Call, Formula Call (本例中使用), If/Then/Else Call, ShowPanel和HidePanel對象。

UserFunctions和Program Explorer

UserFunctions和UserObjects提高了VEE程序的模塊化特點，使其理解起來非常容易。Program Explorer為瀏覽复雜的程序提供了寶貴的工具。例如，Program Explorer中顯示了上述程序的層級。為顯示Program Explorer，點擊View [image] Program Explorer，或點擊工具條上的Program Explorer圖標。

下圖顯示了正在使用的Program Explorer。

另請參閱

實驗9-2: 創建和合并UserFunction庫，實驗9-3: 導入和刪除庫，實驗9-4: 合并柱狀圖顯示程序，在大型程序中查找函數，合并Agilent VEE程序


實驗9-2: 創建和合并UserFunction庫

在本練習中，您將創建一個報告生成程序，其中包括一個VEE UserFunction庫。然后將創建一個新程序，合并UserFunction庫。

創建UserFunction庫

1 創建頂級程序(沒有編寫UserFunction細節)。

a 創建四個UserFunctions︰有一個輸出端的BuildRecAry, ReportHeader, 有一個輸入端的ReportBody, ReportDisplay。圖標化所有UserFunction。

b 在Main中，創建四個Device [image] Call對象，對象配置和連接如下。把程序保存為Report.vee。

備注

Call對象在指稱UserFunction時不要求使用圓括號。如果從Formula對象調用函數，那么不管函數是否使用參數，都需要包括圓括號。

四個UserFunction是一個庫。點擊Edit [image] Edit UserFunction...，可以查看這些UserFunction。點擊Cancel，關閉列表框。

2 對四個UserFunction編程，如下面几個圖所示。

下圖顯示了BuildRecAry UserFunction。它包括一個Formula對象，如果A<=5，那么包括三元表達式測試。如果表達式的解為TRUE，那么這個對象輸出"PASS"，否則這個對象輸出"FAIL"。(注意要求圓括號。)

下圖顯示了ReportHeader UserFunction︰

下圖顯示了ReportBody UserFunction，注意記錄數組A[B]。由于Value of B從0變成1再變成2，因此可以使用<record>.<field>符號訪問該Record中的特定字段，包括Value, Limit和PassFail。注意For Count輸出從零開始，還要注意第一個事務中EOL關閉。

引號中的豎線"|"表示垂直欄的常數字符串字符。FW:5表示字符串字符寬度為5。RJ表示右對齊。

參閱細節視圖中的ReportDisplay UserFunction。注意，它讀取字符串數組直到文件末尾，這用STR ARRAY格式后面的星號(*)指定。

下面是在Properties對話框中選擇Show Panel on Execute時ReportDisplay UserFunction的面板視圖。在Properties對話框中，Pop-up Panel Title已經變成ReportDisplay。為創建面板，選擇Confirm (OK)和Logging AlphaNumeric對象，點擊Edit [image] Add to Panel。注意Logging AlphaNumeric畫面中已經反選Show Title Bar。還要注意Confirm (OK)按鈕已經重命名為DONE。Confirm (OK)按鈕可以在屏幕上保持顯示畫面，直到查看完畢。

3 運行程序，應彈出ReportDisplay面板，顯示下圖所示的值。點擊DONE完成執行，然后把程序保存為 Report.vee。

創建另一個程序，把庫合并到程序中

在本練習中，您將創建一個新程序，把庫合并到這個程序中。本練習為生成報告建立一個函數庫。新程序包含一個Note Pad對象，解釋庫中的每個函數，其名稱為RepGen。

通過創建新的報告生成User Function，并把它与程序合并在一起，更新Note Pad對象追蹤這些變化，您可以重用RepGen。然后可以使用Merge Library...命令，利用RepGen中的所有函數。

1 選擇File [image] New。

2 選擇File [image] Merge Library...。從Merge Library列表框中選擇Report.vee。(如果其位于不同的目錄中，那么輸入整個文件路徑。)

選擇Edit [image] Edit UserFunction (或查看Program Explorer)，确認庫從Report.vee傳送到新程序。在使用Merge Library...命令時，可以象局部函數一樣編輯合并后的函數。

3 選擇Display [image] Note Pad，輸入UserFunction描述，類似于下圖所示。然后把程序保存為RepGen.vee。

另請參閱

實驗9-1: UserFunction操作，實驗9-3: 導入和刪除庫，實驗9-4: 合并柱狀圖顯示程序，在大型程序中查找函數，合并Agilent VEE程序


實驗9-3: 導入和刪除庫

一旦已經創建了UserFunctions庫，您可能不想把它們合并到每個程序中。您可能想在運行時調入庫，使用部分函數，然后刪除庫，以節約內存。Import Library和Delete Library對象正是為這种情況設計的。

在本練習中，您將從RepGen程序中導入函數。然后您將調用BuildRecAry函數，模擬部分測試數据，顯示測試數据，最終刪除庫，釋放內存和交換空間。

1 選擇File [image] New。

2 選擇Device [image] Import Library，把它放在Main中。設置Import Library對象中的字段如下︰

Import Library 字段 | 說明
Library Type | Library Type字段中的菜洙允許選擇UserFunction, Compiled Function或Remote Function。在本例中，您希望使汁煲erFunction庫，因此保留默認值。
Library Name | Library Name的默認值顯示為myLib。這個名稱作為VEE程序的“句柄”，區分導入的不同庫。Delete Library對象使用這個名稱識別要刪除的庫。可以使用默認名稱。
File Name | File Name字段在默認狀態下為用戶程序目錄顯示一個對話框。指明保存函數庫的文件。 點擊默認名稱myFile，得到列表框。選擇RepGen.vee (從“實驗9-2: 創建和合并UserFunctions庫")。這個文件將位于安裝過程中為程序指定的目錄下。

3 打開對象菜單，選擇Load Lib，立即導入庫，而不是等到運行時導入庫。這條命令特別适合開發階段。(在下一步中，您將注意到在Call對象中選擇Select Function時，會先用庫句柄指明函數，如myLib.BuildRecAry。)

為顯示導入的函數庫，使用Program Explorer。

備注

由于您已經導入了庫，您只能查看UserFunction，為其設置斷點。您不能編輯UserFunction。為在程序中添加可以編輯的UserFunction，使用Merge Library...命令。

4 選擇Device [image] Call，把它放在Import Library對象下方。把來自Import Library的輸出序列端連接到Call對象的輸入序列端。

5 打開Call Function對象菜單，點擊Select Function，顯示使用Load Lib命令導入的函數列表。選擇 myLib.BuildRecAry 如下。

VEE自動在Function Name字段中插入函數，添加要求的輸出端。還可以在Function Name字段中輸入myLib.BuildRecAry，實現相同的結果。在需要列出庫中函數名稱時，可以使用Select Function。

6 選擇AlphaNumeric顯示畫面，放大，把它連接到Call數据輸出。

7 選擇Device [image] Delete Library，把它放在Call對象下面。連接序列端，因此在已經調用BuildRecAry函數后刪除庫。可以保留默認的Library Name，因為這一名稱与Import Library對象使用的名稱相同。

8 運行程序，程序應如下。把程序另存為 libraries.vee。

注意合并的函數和導入的函數名稱的下述說明︰

• 如果合并的函數与局部函數名稱相同，VEE會顯示錯誤信息。

• 如果導入的函數与局部函數名稱相同，那么允許有這种情況，但只有在使用函數名稱時才會調用局部函數。可以与上圖中的Call對象一樣，使用MyLib_func()語法明确調用導入的函數。

• 如果兩個導入的函數擁有相同的函數名稱，那么結果不确定。注意Call對象使用Library名稱myLib.BuildRecAry，因此沒有產生混淆。即使有另一個局部函數或其它導入的函數使用相同的名稱，這仍能指明BuildRecAry的名稱和位置。

另請參閱

實驗9-1: UserFunction操作，實驗9-2: 創建和合并UserFunction庫，實驗9-4: 合并柱狀圖顯示程序，在大型程序中查找函數，合并Agilent VEE程序


實驗9-4: 合并柱狀圖顯示程序

在本練習中，您將把一個現有程序与一個新程序合并。盡管本例使用的是VEE Lib目錄中的程序，但事實上您可以使用任何程序。您將使用ramp()函數，用1-5五個值創建一個數組。您將把 BarChart程序与創建的程序合并，而不是使用其中一個內部VEE顯示畫面顯示數組。

1 選擇Formula，把它放在左面的工作區中。

2 刪除數据輸入端。

3 把默認公式變成ramp(5,1,5)。

第一個參數是斜坡數組中希望的要素數量。第二個參數是起始數字，第三個參數是最后數字。如需与這一函數有關的更多信息，請選擇Formula對象菜單中的Help，因為其內部擁有斜坡調用。(也可以試著使用Help [image] Contents & Index，然后在Index文件夾中使用Search功能)

4 點擊File [image] Merge...，出現Merge File列表框。選擇 BarChart.vee，把它放在Formula對象的右面。連接兩個對象。

5 運行程序。程序應如下。

注意Bar Chart Display使用一維數組，作為豎條顯示值。它使用必要的條數，顯示數組中的值。如果想查看怎樣創建程序，打開顯示畫面的細節視圖。程序詳情可以查看庫目錄中的范例。

備注

File [image] Merge命令用于UserObjects和對象合并。File [image] Merge Library命令用來合并UserFunctions。

另請參閱

實驗9-1: UserFunction操作，實驗9-2: 創建和合并UserFunction庫，實驗9-3: 導入和刪除庫，在大型程序中查找函數，合并Agilent VEE程序


實驗10-1: 配置測試

備注

本例介紹了怎樣實現預計某個測試結果范圍的random()函數，您可以使用相同的原理，配置其它測試。

1 選擇Device [image] Sequencer，把它放在左上方的工作區中。

2 選擇Display [image] AlphaNumeric顯示畫面，把它放在Sequencer下方，提高寬度，把Sequencer Log輸出端連接到Alphanumeric數据輸入。

3 雙擊Sequencer處理條，出現Sequence Transaction對話框。各字段設置如下。

字段名稱

說明

TEST:

默認名稱是test1，可以使用默認名稱。這只是Sequencer中的測試標簽，而不是測試函數本身。

SPEC NOMINAL:

表示預計的測試值。默認值是.5，把它變成.25，然后把上方的RANGE字段 (最右面)從1變成.5。

FUNCTION:

默認項目testFunc(a)保留著執行測試的實際函數。在本例中，用random()函數代替默認字段。Random()將返回一個0和1之間的Real64值，模擬測試結果。將把這一結果与測試規范進行對比。

random(low,high) 對象位于Function & Object Browser對話框的Probability & Statistics類中。記住，可以從任何表達式字段中調用這個數學函數，而不必實際使用Formula對象。如果沒有提供參數low和high，如本例中所示，函數將使用默認參數0 和 1。

備注

在編輯字段時，記住點擊新字段來修改字段；或使用Tab鍵向前移到不同的字段。使用Shift-Tab鍵，向回移動光標。只有在完成對話框編輯時，才按Enter鍵。

可以保留其它默認值。這一配置會使大約一半的運行結果為 PASS。對話框應如下。

點擊OK，關閉對話框。在第一個處理條上，您將看到處理
test1 0 <= (.25) <= .5
這意味著如果返回的值位于0 和.5范圍中(包括端點)，那么test1將通過測試。預計結果約為.25。

4 運行程序。顯示畫面應顯示測試名稱、測試結果和通過-未通過指示(1為通過, 0為未通過)。

繼續處理前，研究下表，了解Sequence Transaction對話框中的各种選項。雙擊處理條，再次打開對話框。打開各個菜單，閱讀不同的選項。

Sequence Transaction字段 | 說明
TEST | 用來在Sequencer中參考測試的唯一名稱。默認名稱從test1開始，每個測試加1。選擇TEST:表示將把測試結果与規范進行對比，將基于配置在下一個測試中發生分支。 TEST:按鈕撥到EXEC:。如果把TEST:撥到EXEC:，那么測試將執行，而不會對比測試結果和規范。例如，可以在UserFunction設置全局變量時選擇EXEC:。選擇EXEC:還將使測試記錄失效。
ENABLED | 确定什么時候執行測試。這個菜洙顯示四個菜單選項︰ • ENABLED在所有條件下執行測試。 • ENABLED IF: 如果列出的表達式值為TRUE，則執行測試。例如，如果輸入端A的值為1 (A == 1)，那么可以啟動測試。可以使用ENABLED IF:進行審計測試控制。例如，您可能想每運行10次執行一次某項測試。 • DISABLED与ENABLED相反。 • DISABLED IF:与ENABLED IF:相反。
SPEC NOMINAL | 測試預計值。
RANGE | 指定測試值范圍。這個菜單顯示四個菜單選項︰ • RANGE指明PASS條件的測試值范圍。還可以從常用比較關系中選擇︰>, >=, <, <=, ==, !=。 • LIMIT只使用一個值比較測試數据。 • TOLERANCE通過在SPEC NOMINAL值中加減指定容限，指明通過測試的取值范圍。 • %TOLERANCE通過在額定規范中加減SPEC NOMINAL的百分比容限，指明通過測試的取值范圍。
FUNCTION | 指定要運行的測試。可以調汁煲erFunctions, Compiled Functions, Remote Functions，也可以編寫一個求解的表達式。將針對規范測試調用的函數(或求解的表達式)結果。 如果UserFunction返回一個以上的值，VEE會假設最上面的輸出端保留測試結果。 還可以組合和嵌套多個函數，如(random(0,myfunc()+3,100)*2)。
LOGGING ENABLED | 登錄測試數据。為指定登錄選項，打開Sequencer對象菜單，選擇Properties，點擊Logging文件夾，選擇列表。在默認狀態下，將勾選Name, Result和Pass。還有一個字段，可以選擇Log to Output Pin Only和Log Each Transaction To:。如果啟用登錄，那么每項測試會登錄一條記錄。 這個按鈕撥到LOGGING DISABLED。
IF PASS | 确定分支指令。如果通過測試，VEE會轉到這一行獲得分支指令。IF PASS告訴VEE根据下拉菜單中的選項發生分支。 這個按鈕還撥到IF PASS CALL:。 IF PASS CALL: 告訴VEE調用指明的函數，然后轉到分支菜單選項。 (另請參閱本表中的下一項THEN CONTINUE。)
THEN CONTINUE | 确定測試分支。下拉菜單THEN CONTINUE (适用于IF PASS和IF FAIL)包含6個分支選項︰ • THEN CONTINUE 執行Sequencer中配置的下一個測試。 • THEN RETURN: 告訴VEE停止執行測試，把指定表達式放在Sequencer的Return輸出端。 • THEN GOTO: 跳到字段中指明的測試。 • THEN REPEAT重复當前測試，直到MAX TIMES:字段中指明的次數。如果在重复最大次數后仍存在PASS/FAIL條件，那么VEE會繼續下一項測試。 • THEN ERROR: 生成給定錯誤號的錯誤條件，停止執行。可以使用Sequencer的Error輸出端捕獲錯誤。任何其它輸出端都不會發送數据。 • THEN EVALUATE: 調用指定的UserFunction，它必須返回一個字符串，指明一個分支菜單選項。來自UserFunction的有效字符串結果是︰"Continue", "Return <expr>", "Goto <name>", "Repeat <expr>", "Error <expr>"，其中<expr>是任何有效的VEE表達式，<name>是序列中的測試名稱。這個選項允許詢問用戶下一步操作。
IF FAIL | 分支指令。如果未通過測試，VEE會轉到這一行獲得分支指令。IF FAIL撥到IF FAIL CALL:。其選項与IF PASS相同。
DESCRIPTION | 測試的文本注釋。它們將顯示在Sequencer處理條上，通過使用Properties對話框中的Logging文件夾，可以与測試記錄存儲在一起。

另請參閱

添加或插入或刪除一個測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，比較波形輸出和模板，分析來自Sequencer的數据，實驗10-3: 分析來自Sequencer的多輪數据，實驗10-4: 使用To/From File對象及登錄數据，使用To/From DataSet對象及記錄數据


添加或插入或刪除一個測試

在本節中，您將在Sequercer對象中添加另一項測試事務。可以使用同一個random()函數，模擬測試結果，但這次您將對比的是結果与極限，而不是取值范圍。

1 雙擊下面第一個Sequencer事務欄，出現Sequence Transaction對話框。填寫各個字段，具体如下︰

項目 | 說明
test2 | 使用默認值。
SPEC NOMINAL | 把設置從.5變成.25。
RANGE | 在下拉菜單中，選擇LIMIT:。運算符選擇<。把極限從1變成.5。
FUNCTION | 把字段從testFunc(a)變成random()。

保留其它默認選項，點擊OK，返回Sequencer。

備注

通過從對象菜單中選擇Add Trans...，還可以在高亮度顯示的事務后面添加一項事務。

Sequencer測試方案現在應該有第二個事務︰test2 (.25) < .5。現在，在這兩項測試之間插入一項事務。

2 确認高亮度顯示第二個事務欄，然后打開對象菜單，選擇Insert Trans....，添寫各個字段，具体如下︰

字段 | 說明
TEST | 把名稱字段變成Insert。
FUNCTION | 變成random()。

點擊OK。現在將在第二個事務欄上看到Insert 0 <= (.5) <= 1。運行程序，看到來自三項測試的三條記錄。(您可能必須放大顯示屏，才能看到所有項目。)

3 現在點擊Insert事務欄，把鼠標指針放在Inert事務欄，然后按Ctrl-K，刪除Insert。

備注

還可以點擊目標事務欄，從對象菜單中選擇Cut Trans。通過從對象菜單中選擇Paste Trans(快捷方式是Ctrl-Y)，還可以粘貼事務。可以以類似的方式，使用Copy Trans選項复制事務。

4 運行程序，注意來自兩項測試的兩條數据記錄。把程序另存為seq1.vee。程序外觀應類似于下圖。

大括號表示Record數据類型。Sequencer輸出Record of Records，如字母數字顯示畫面中所示。這意味著您可以把定序器放在循環中，多次運行相同的測試順序，得到一個Records of Records數組。

另請參閱

實驗10-1: 配置測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，比較波形輸出和模板，分析來自Sequencer的數据，實驗10-3: 分析來自Sequencer的多輪數据，實驗10-4: 使用To/From File對象及登錄數据，使用To/From DataSet對象及記錄數据


存取記錄的測試數据

Sequencer輸出一條或多條記錄。每個測試使用測試名稱作為Sequencer記錄中的字段名。每項測試內部的字段根据記錄配置命名。通過使用默認配置及Name、Result和Pass字段，可以存取使用符號Log.Test1.Result表示的test1結果，如下圖所示。

.

可以使用下述步驟存取測試結果。

1 打開seq1.vee。

2 選擇Device [image] Formula，把它放在顯示屏下面。把表達式變成Log.Test1.Result。(記住，VEE不分大小寫，在編制文檔時，名字中使用大寫可以更加清楚。)

把輸入端名稱從A變成Log。(也可以留下默認名稱A，在這种情況下，公式是A.Test1.Result.) 把Sequencer輸出端Log連接到Formula輸入端Log上。

3 選擇Display [image] AlphaNumeric顯示屏，把它連接到Formula輸出上。

4 運行程序，應存取Test1中的Result字段。把程序另存為seq2.vee。程序的外觀如下︰

備注︰

在Sequencer內部執行時，每項測試創建一個記錄，名稱為測試名稱。可以在后續測試中使用這個記錄。例如，如果test1通過測試，可以啟用test2 (ENABLED IF: test1.pass == 1)。如果需要在運行測試的同時存取表達字段中的測試數据，那么測試數据存儲在臨時記錄thistest中。

5 把公式變成讀取Log.test1，再次運行程序。應檢索test1的整個記錄，顯示畫面中三個值周圍的大括號表明了這一點。

6 改變公式，可以存取test1和test2記錄中的結果、是否通過測試、名稱和其它字段。在Properties對話框中選擇Logging一欄，在已有的記錄中增加Nominal和Time Stamp字段。使用Formula對象存取這些新字段。

另請參閱

實驗10-1: 配置測試， 添加或插入或刪除一個測試，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，比較波形輸出和模板，分析來自Sequencer的數据，實驗10-3: 分析來自Sequencer的多輪數据，實驗10-4: 使用To/From File對象及登錄數据，使用To/From DataSet對象及記錄數据


實驗10-2: 使用輸入端傳送數据

首先，根据下述步驟創建UserFunction Rand，模擬一個測量程序。Rand()將在 random(low,high)對象輸出中添加一個輸入參數，把這一結果放在輸出端。將從三項不同的測試中調用Rand()。

1 選擇Device [image] UserFunction，把名稱從UserFunction1變成Rand。

2 得到random(low,high)函數，刪除輸入端，刪除參數，把它放在Rand中。(回想一下如果沒有這些參數，默認值將是0和1) 把A+B對象放在random(low,high)的右面。把random(low,high)的輸出連接到A+B對象的左上方輸入。

3 在Rand中添加一個數据輸入端。把輸入端A連接到A+B對象的左下方輸入端。

4 在Rand中添加一個數据輸出端。把A+B對象的輸出連接到Rand 輸出端。

UserFunction Rand應如下。

5 把程序另存為seqdat1.vee。使用右上角x按鈕，關閉Rand窗口。

備注

關閉窗口并不會刪除UserFunction。如果想檢查一下，那么只需點擊Edit [image] Edit UserFunction，您將看到要編輯的UserFunctions列表框中出現Rand。也可以圖標化Rand函數，您將在VEE屏幕底部看到圖標。

現在在Sequencer中設置三項測試，使用Sequencer輸入端把輸入參數饋送到Rand，調用Rand。

6 選擇Device [image] Sequencer，把它放在Main中。在Sequencer中添加一個輸入端。點擊處理條，出現Sequence Transaction對話框。把FUNCTION字段從testFunc(a)變成rand(a)。這將調用UserFunction Rand()，把Sequencer輸入端A上的值發送給它。點擊 OK，返回Sequencer打開的視圖中。

備注

還可以使用Sequencer輸入端名稱，如A，把數据傳送到Sequence Transaction對話框內的任何表達式字段。例如，可以使用A，把數据傳送到RANGE:和SPEC NOMINAL:。

一定要高亮度顯示處理，把光標放在處理條上，按Ctrl-K剪切測試，然后按Ctrl-Y三次，把測試粘回Sequencer。(還可以使用對象菜單實現剪切和粘貼功能。)

默認測試名稱將是test1x2, test1x1和test1。打開三個Sequence Transaction對話框，為清楚起見，把名稱變成test1, test2和test3。

1 選擇Data [image] Continuous [image] Real64 Slider，把它放在Sequencer的左面。把名稱變成提示Select Num:，縮小對象尺寸，把它連接到Sequencer輸入端。

通過使用鼠標左鍵點擊和拖動對象的角，可以在放下時确定對象的大小。

2 選擇AlphaNumeric顯示畫面，把它放在Sequencer下方，放大到更寬，把它連接到Sequencer的Log 輸出端。

3 再次把程序另存為seqdat1。在Real64 Slider對象上選擇一個數字，運行seqdat1，其應該如下。

隨著測試數量提高，使用輸入端傳送數据要求越來越多的輸入端。為降低輸入端數量，可以把記錄傳送到輸入端，使用記錄中的各個字段進行單獨測試。還可以使用單獨的UserFunction設置全局變量，然后由程序內的其它UserFunctions或任何表達式字段調用這些變量。下一個練習說明了這一操作。


使用全局變量傳送數据

本練習通過添加一個全局變量，把參數a傳送到UserFunction Rand，來修改seqdat1程序。

1 刪除標為Select Num的Real64 Slider對象。刪除Sequencer上的A輸入端。

2 高亮度顯示test1處理條，打開對象菜單，點擊Insert Trans...。在出現Sequence Transaction對話框時，點擊TEST，把選項撥到EXEC，把名稱變成Setup。

3 將使用EXEC模式，因為User Function只設置一個全局變量，不會生成必需針對規范進行測試的結果。

4 把FUNCTION字段變成global()，點擊OK關閉對話框。

5 現在創建UserFunction global()。

6 選擇Device [image] UserFunction。把名稱UserFunction1變成global。

選擇Data [image] Continuous [image] Real64 Slider，把它放在UserFunction中，把名稱變成Select Num:，使其垂直尺寸變小。

選擇Data [image] Variable [image] Set Variable，把它放在Real64 Slider的右面。

把全局變量名稱從globalA變成a。把Real64 Slider連接到Set Variable對象。

為在屏幕上顯示函數，以便操作人員選擇一個數字，添加一個彈出面板視圖。包括一個Confirm (OK)按鈕，以便面板一直保留在屏幕上，直到操作人員作出選擇。(也可以使用global() UserFunction內部的Real Input對話框完成這些任務。)

7 選擇Flow [image] Confirm(OK)，把它放在 Real64 Slider對象上方。把OK數据輸出端連接到Real64 Slider序列輸入端。

備注

如果把OK按鈕放在Set Variable對象下方，它會導致邏輯錯誤。這是因為VEE把Slider上的舊值發送到Set Variable對象，然后暫停，直到按OK按鈕。您在彈出面板上輸入的任何新值都將被忽略。在OK連接到Real64 Slider上方時，VEE會等待設置全局變量，直到按下OK之后，進而使用新的Slider值。可以打開Show Data Flow，查看執行順序。

8 選擇Display [image] Note Pad，刪除模板信息。把它放在OK按鈕的右面。在Note Pad中輸入下面的用戶提示︰

Please select a number for this run of tests 1, 2, and 3.

9 按住Ctrl、同時點擊多個對象，選擇Note Pad、Real64 Slider和OK按鈕。每個對象現在有一個陰影，表明已經被選中。點擊Edit [image] Add To Panel。(記住還可以通過VEE屏幕打開區域或者UserObject或UserFunction細節視圖的右面按鈕使用Edit菜單。) 在Panel視圖中，縮小面板尺寸，把Note Pad放在最上面，把Real64 Slider放在中間，把OK按鈕放在最下面。

備注

在Panel視圖中重新定位對象時，它不會影響Detail視圖中的對象布局。

打開UserFunction Properties窗口。在彈出面板下的General文件夾中，在詳細視圖中把ShowPanelonExecute屬性設為True. T UserFunction。

面板視圖

10 把程序另存為seqdat2，運行程序。在出現彈出面板時，選擇一個值，按OK。程序應如下。

備注

在默認狀態下，彈出面板將出現在屏幕中心。為移動彈出面板，可以點擊和拖動標題條。

另請參閱

實驗10-1: 配置測試，添加或插入或刪除一個測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，比較波形輸出和模板，分析來自Sequencer的數据，實驗10-3: 分析來自Sequencer的多輪數据，實驗10-4: 使用To/From File對象及登錄數据，使用To/From DataSet對象及記錄數据


比較波形輸出和模板

在這個練習中，您將創建一個稱為noisyWv的UserFunction，然后從Sequencer的處理欄中調用這個函數。操作人員將能夠把波形幅度從0變成1。這個函數模擬返回有噪聲的波形的測試結果。您將使用Data [image] Constant菜單中的Coord對象，在0.6處創建一個直線模板，Sequencer將使用這個模板測試有噪聲的波形。

1 在Detail視圖中創建稱為noisyWv的UserFunction。

2 按Ctrl，點擊OK按鈕，使用Real64 Slider，然后使用寫字板高亮顯示，創建Panel視圖。選擇Edit [image] Add To Panel。

在出現Panel視圖時，根据自己的風格重新排列對象，确定窗口大小。

打開對象菜單，點擊Properties，在彈出的Panel中，點擊下一個，顯示Panel on Execute。

Panel視圖類似于下圖︰

3 選擇 Device [image] Sequencer，把它放在Main中心偏左的地方。增加一個數据輸入端，把它命名為模板。

4 點擊處理欄，出現Sequence Transaction對話框。如下表所示改變各個字段︰

字段 | 說明
FUNCTION | 輸入noisyWv().
RANGE | 從彈出菜單中點擊選擇LIMIT。剩下<=，LIMIT 端名稱字段輸入mask。所有其它默認值不變，點擊OK。

test1將從noisyWv()獲得結果，在名為mask的輸入端上針對極限值進行測試。如果有噪聲的波形在所有點上都小于等于模板，那么其通過測試，否則未通過測試。

5 選擇Data [image] Constant [image] Coord，把它放在Sequencer上方。把其輸出連接到Sequencer輸入端模板上。

打開Coord對象菜單，點擊Properties，如下表所示設置各個字段︰

屬性 | 說明
DataShape | 設為1D Array.
ArraySize | 輸入2 (指定一條直線只需兩對坐標)

6 在Coord對象 中，現在可以看到兩個指數代表著兩對坐標。雙擊第一個指數0000:，將出現一個光標。輸入用逗號分隔的坐標，VEE自動增加圓括號。輸入0, 0.6 Tab 20m, 0.6，然后點擊對象外面的工作區。項目如下︰

• noisyWv()中噪聲發生器的x軸 (時間軸)從0變成20毫秒，因此兩個x值是0和20m。

• 兩個y值都是0.6，因為您想要一個直線模板。

備注

通過配置相應數量的坐標對，并進行填充，可以創建任何模板波形。

Sequencer比較机制的工作方式与Comparator對象類似，它接受Coord數据類型測試波形。當然，也可以比較兩個Waveform數据類型。按Tab，在坐標對之間移動，在完成時點擊工作區。

7 選擇AlphaNumeric顯示，提高其寬度，把它連接到Sequencer的Log輸出上。

8 把程序另存為seqdat3，運行程序，其外觀應該如下︰

使用Sequencer傳送數据的練習到此結束。在下一個練習，您將學習怎樣存取和分析Sequencer多次迭代中的數据。

另請參閱

實驗10-1: 配置測試，添加或插入或刪除一個測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，分析來自Sequencer的數据，實驗10-3: 分析來自Sequencer的多輪數据，實驗10-4: 使用To/From File對象及登錄數据，使用To/From DataSet對象及記錄數据


分析來自Sequencer的數据

Sequencer數据輸出為記錄的記錄。但在許多情況下，Sequencer可能會多次經過一系列測試。每條記錄表示通過Sequencer一輪，并保留其它記錄，代表這一輪內部的每項測試。查看它的最簡便的方式是想象一下內存中的一個數据立方体，如下圖所示︰

記錄數組稱為Log，因為這是与Sequencer輸出端相關的名稱。為進入某一輪，可以使用帶有大括號的索引。

• Log[0]是第一輪通過Sequencer，Log[1]是第二輪，依此類推。

• 每一輪的主要記錄有兩個字段︰Test1和Test2。

• 在記錄Test1內部有三個字段︰Name, Result和Pass。這同樣适用于記錄Test2。

• 因此，Log.Test1.Result給出了由4個值組成的數組，每個值表示四輪。Log[0].Test1.Result輸出一個標量值，即第一輪(Log[0])中Test1的Result。

登記錄的記錄數組簡化了數据的分析和考察工作。例如，您可能想知道在某一輪中通過測試的數量有多少。您也可能想平均所有輪中Test2的結果。或者，您可能想查看第四輪中Test1上的所有數据。這一數据結構可以實現所有這些查詢。

另請參閱

實驗10-3: 分析來自Sequencer的多輪數据

實驗10-1: 配置測試，添加或插入或刪除一個測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，比較波形輸出和模板，實驗10-4: 使用To/From File對象及登錄數据，使用To/From DataSet對象及記錄數据


實驗10-3: 分析來自Sequencer的多輪數据

1 清屏，打開seqdat1.vee程序。

修改seqdat1.vee程序，運行三次Sequencer。然后在數据上執行某些分析操作。

2 選擇Flow [image] Repeat [image] For Count，把它放在Real64 Slider對象上方。把迭代數量變成3，把數据輸出端連接到Sequencer的序列輸入端。

3 刪除Sequencer Log端和顯示畫面之間的數据線。選擇Data [image] Collector，把它放在Sequencer的右面。把左上方的數据輸入端連接到Sequencer Log端，把XEQ端 (左下方)連接到For Count對象的序列輸出端。把Collector數据輸出端連接到AlphaNumeric顯示畫面。垂直放大顯示畫面，以适應三個要素組成的數組。

Sequencer現在將運行三次test1和test2，把數据采集到三個要素組成的數組中，每個數組保存每輪測試記錄的記錄。(參閱 數据的三次冪 查看這一點。)

這時運行程序，查看Sequencer數据顯示畫面。

現在使用Formula對象，提取部分數据進行分析。本練習對所有三輪測試都以test1為例，找出該數組的中間值。

4 選擇Device [image] Formula，把它放在顯示畫面下方。把Formula輸入端連接到Collector的輸出。把Formula輸入字段變成read: a[*].test1.result。把mean(x)對象連接到一個Formula，把AlphaNumeric顯示畫面連接到mean(x)。

a 指的是輸入端A上的數組。Test1.result存取正确的字段。數組中將顯示各輪測試。(例如，A[0].test1.result僅指第一輪測試。)

5 運行程序，程序應如下。

盡管本練習存取了一個數組，但從Sequencer輸出中提取其它數据數組的原理相同。注意，通過在Sequencer Properties對話框中打開Logging文件夾，可以簡便地改變為每個數組保存的字段。

另請參閱

實驗10-1: 配置測試，添加或插入或刪除一個測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，比較波形輸出和模板，分析來自Sequencer的數据，實驗10-4: 使用To/From File對象及登錄數据，使用To/From DataSet對象及記錄數据


實驗10-4: 使用To/From File對象及登錄數据

實驗10-4: 使用To/From File對象及記錄數据

1 打開seqdat2文件，刪除到顯示畫面的數据線。

2 選擇Flow [image] Repeat [image] For Count，把它放在Sequencer的左面。把For Count數字變成3，把其數据端連接到Sequencer的序列輸入端。

3 垂直放大工作區，把AlphaNumeric顯示畫面放在底部附近。選擇Data [image] Collector，把它放在左面的工作區中。把Sequencer Log端連接到Collector數据輸入端。把For Count序列輸出端連接到Collector XEQ端。

Collector將創建Sequencer記錄的記錄數組。在To File對象中使用WRITE CONTAINER處理，可以非常簡便地把任何VEE數据容器寫入一個文件中。

4 選擇I/O [image] To [image] File，把它放在Collector的右面。選擇I/O [image] From [image] File，把它放在To File對象的下方。在 To File對象中添加一個輸入端，把Collector輸出連接到這個輸入端。把To File序列輸出連接到From File序列輸入端。把From File數据輸出連接到顯示畫面。

在To File中复選Clear File At PreRun & Open，為WRITE CONTAINER配置一個處理。在From File對象中配置一個處理，具体如下︰READ CONTAINER x。

可以使用默認數据文件進行存儲。

5 把程序另存為seqdat4.vee，運行程序。程序應如下︰

另請參閱

實驗10-1: 配置測試，添加或插入或刪除一個測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，比較波形輸出和模板，分析來自Sequencer的數据，實驗10-3: 分析來自Sequencer的多輪數据，使用To/From DataSet對象及記錄數据


使用To/From DataSet對象及記錄數据

由于作為記錄存儲測試數据，因此您可能會首選使用To/From DataSet 對象。在這种情況下，您不需要Collector，因為您可以把每次運行的Sequencer追加到DataSet末尾。

修改seqdat4.vee，使其如下圖所示。To/From DataSet 對象位于I/O菜單中。 注意進入From DataSet的序列線。之所以包括序列線，是因為您想等到把全部三次運行追加到DataSet之后，才觸發From DataSet。

可能使用To/From DataSet 對象、而不是To/From File 對象采集數据的原因之一，是可以使用From DataSet對象中的Search Specifier功能，把數据轉換成有用的信息。

備注

記住把From DataSet中的Get records字段從One變成All。

另請參閱

實驗10-1: 配置測試，添加或插入或刪除一個測試，存取記錄的測試數据，實驗10-2: 使用輸入端傳送數据，使用全局變量傳送數据，比較波形輸出和模板，分析來自Sequencer的數据，實驗10-3: 分析來自Sequencer的多輪數据，實驗10-4: 使用To/From File對象及登錄數据


實驗11-1: 使用菜單

在本練習中，您將創建一個操作人員界面，其中包括一個有三個選項的菜單︰die1, die2和die3。在操作人員選擇一個選項時，將調用相同名稱的函數，顯示一個骰子，上面有一點、兩點或三點。這個程序模擬的情況是操作人員必須從菜單中選擇一項要運行的測試。您還將學習怎樣導入一個位圖，改變圖標外觀。這個程序可以叫作骰子程序。.

先創建三個UserFunctions︰

1 選擇Device [image] UserFunction。

盡管可以使用任何圖標，顯示導入的位圖，但本例使用Picture對象。

2 選擇Display [image] Picture，把它放在UserFunction中。

3 打開Picture對象菜單，點擊Properties，然后把ShowTitleBar屬性設成False。在Picture下選擇die1.gif，點擊Scaled，然后點擊OK。

備注

為在關閉Show Title Bar時進入對象菜單，在對象上按鼠標右鍵。

備注

盡管VEE默認為位圖子目錄，但也可以使用來自任何目錄的位圖。

現在應有一個上面是一點的骰子圖片。

4 選擇Flow [image] Confirm (OK)，把它放在骰子下面。把Picture序列輸出端連接到OK 序列輸入端。

5 選擇Picture和OK對象 (按Ctrl，點擊對象，創建一個陰影)。 把鼠標指針放在背景上，按鼠標右鍵，打開彈出Edit菜單。選擇Add to Panel。

6 把UserFunction Title和Panel Title變成die1。根据需要排列對象，确定對象大小。

備注

為在Panel View中移動對象，在對象上按鼠標右鍵，選擇Move，或高亮度顯示對象 (對象應顯示一個灰色邊框)，把對象拖到新位置。

從Properties對話框中選擇ShowPanelonExecute。點擊Panel文件夾，激活PanelGridSize屬性，把柵格大小變成2，以更準确地對齊。然后點擊OK。

7 在die1對象菜單中選擇Clone，創建另兩個UserFunctions。新的UserFunctions作為die2和die3自動出現。把圖片對象分別變成die2.gif和die3.gif。檢查新函數的所有設置，保証除名稱和位圖外，其它項目与die1一致。程序應類似如下。圖標化函數窗口。

創建一個菜洙，從三個函數中選擇一個要調用的函數。

8 選擇Data [image] Selection Control [image] Radio Buttons。

Radio Buttons是從上方輸出端的用戶自定義列表中輸出一個枚舉值的對象(Enum數据類型︰一個文本字符串，帶有一個与之相關的普通數字)。例如，如果把列表定義為Monday, Tuesday, Wednesday, Thursday和Friday，那么操作人員可以從菜單中選擇天，然后Radio Buttons會輸出這一天。

列表中的第一個項目賦予普通位置0；列表中第n個項目賦予普通位置n-1。例如，列表中Monday的普通位置為0，Friday的普通位置為4。普通位置出現在下方輸出端。如需更詳細的說明，請參閱對象菜單中的Help項目。

9 打開Radio Buttons對象菜單,選擇Edit Enum Values....

除最后一項外，在每一項之間按 Tab鍵，輸入函數名稱die1, die2和die3。點擊OK。

備注

數据選擇控制有六种菜單格式。Radio Buttons以按鈕的形式顯示各個項目。操作人員的選擇以文本格式作為Enum數据類型輸出。循環按鈕會循環通過枚舉的值，在操作人員點擊這個按鈕時，一次經過一個值。列表在一個列表中顯示所有枚舉值，其中高亮度顯示選擇的項目。另外三個選項是下拉列表、彈出列表和和滑尺列表。

10 打開Radio Buttons對象菜單，點擊Properties，然后選擇Auto Execute。把標題變成提示信息︰Make a Selection。

設置Call對象，以便操作人員在Radio Buttons對象上選擇的值現在變成Call Function對象調用的函數名稱。

11 點擊Device [image] Call。選擇Add Terminal [image] Control Input，然后選擇Function Name，點擊OK。Function Name控制端接受Enum或Text值作為輸入。把Radio Buttons數据輸出端連接到Call Function對象上的Function Name輸入端。把Radio Buttons序列輸出端連接到Call Function的序列輸入端。在Make a Selection:中點擊die2，注意Call Function Name變成die2。

備注

Call輸入端要求Text Scalar，因此VEE把Enum Scalar轉換成Text Scalar。

記住，虛線表示控制端。在打開Auto Execute時，在作出變化時，Radio Buttons會執行，并把選項發送到Call。一旦該端收到數据，Call Function上的控制端會替換函數名稱。只有在啟動序列輸入端時，Call對象才會調用指定的函數。

備注

在程序使用Auto Execute和序列端時，操作人員不必點擊Run按鈕就可以啟動程序。

添加一個只顯示提示的操作人員界面、菜單及顯示選項的彈出面板。

12 按Ctrl，點擊目標對象，選擇Radio Buttons對象，然后選擇Edit [image] Add To Panel。

13 打開對象菜單, 選擇Properties，在需要時調節顏色和字体。

選擇一個選項，運行程序。(不要使用Run按鈕，因為它將使用菜單上已經選擇的選項。)

在執行時程序應類似于下圖。

在下一個實驗練習前，應注意以下事項︰

• 可以在上面的練習中使用同一技朮，為任何程序創建多個菜單。

• 也可以使用Radio Buttons，使用帶有控制端(“Command”)、指明要調用的程序的Execute Program對象，選擇匯編的語言程序。如果已經導入一個匯編函數庫，那么也可以使用Call對象，從庫中運行函數。

• 可以使用一個UserFunction內部的Picture對象的File Name數据輸入端，然后把相應的位圖文件發送到該對象上，優化這個程序。如果使用許多不同的位圖，那么這种編程方式效率會更高。

• 在复雜程序上通常使用Run、而不是AutoExecute。可以使用Wait for Input，而不是AutoExecute，使程序在某個數据常數或選擇控制對象上暫停。


實驗11-2: 為面板背景導入位圖

位圖對程序并不是必需的，但它們可以提高測試的清晰度和沖擊力。例如，您可能想導入一個示意圖，以更好地說明被測試的項目。在本練習中，您將為面板背景導入位圖，其中把標準VEE對話放在其頂部。

可以為UserObjects怯煲erFunctions中的圖標、Picture對象或面板視圖背景導入位圖。將創建一個稱為Bitmap的彈出UserFunction，其中包括一個Label對象和一個Confirm (OK)對象。

1 選擇Device [image] UserFunction。

2 選擇Flow [image] Confirm (OK)和Display [image] Label，把它們放在UserFunction窗口中。

3 把UserFunction的名稱變成Bitmap。

4 選擇OK和Label對象，用陰影高亮度顯示。把指針放在UserFunction工作區上，按鼠標右鍵，打開彈出Edit菜單。選擇Add to Panel。

5 打開UserFunction菜單，選擇Properties，然后選擇ShowPanelonExecute。(記住雙擊標題欄，出現Properties框。) 在Pop-up Panel下反選Show Title Bar。

打開Panel文件夾，把Grid Size變成2，在Background Picture下選擇default.gif和 Scaled，然后點擊OK。

6 打開Label對象的Properties框，設置如下︰

Label屬性 | 說明
Title: | 變成Bitmap Function。
Justification | 變成Center。
BackColor | 選擇Light Gray，點擊OK。
Font | 選擇更大的粗体字体，點擊OK。复選 Automatically Resize Object on Font Change。
Border | 點擊Raised。點擊OK，完成變化，關閉Properties對話框。

7 根据需要定位標題Bitmap Function和OK按鈕。圖標化Bitmap UserFunction。

8 進入Main窗口。點擊Device [image] Call， 然后在對象菜單中點擊Select Function，選擇Bitmap。運行程序。彈出框應如下︰


實驗11-3: 創建高沖擊力警報

本練習包括嵌套的多個UserFunction。第一個UserFunction是告警本身，它顯示一個紅色的正方形，發出蜂鳴聲。第二個UserFunction重复調用告警，產生燈光閃爍效果和脈沖式聲音，直到操作人員關閉告警。

先對告警函數編程。

1 選擇Device [image] UserFunction。把名字變成告警。

2 選擇Display [image] Beep，把它放在UserFunction的左上角。調節設置，以便有持續一秒的大的蜂鳴聲。把Duration (sec)字段變成1。把Volume (0-100)字段變成100。

備注

這些說明假設您的計算机擁有支持蜂鳴聲的硬件。某些Windows 2000和Windows XP系統已經把Default System配置改成Default System Beep。

備注

您不必把Beep對象連接到任何項目上，在函數執行時，該對象會激活。

3 點擊Display [image] Indicator [image] Color Alarm，把它放在UserFunction中。打開Color Alarm對象菜單，點擊Properties，設置如下︰把ShowTitleBar屬性設為False，把Shape屬性設為Rectangular，把HighLimit屬性設為.66，刪除HighText屬性旁邊的任何文本。

4 點擊Data [image] Constant [image] Real64，把它變成1，把它連接到Color Alarm輸入端。

5 為使屏幕上的畫面保持一秒，与Beep對象同步，使用設置為1秒的Delay對象。

6 選擇Flow [image] Delay，把它設為1，把其序列輸入端連接到Color Alarm序列輸出端。然后告警持續1秒。

7 選擇Display [image] Note Pad，刪除模板。添加信息︰TURN OFF INSTRUMENTS!。根据需要調整Note Pad大小。

8 進入Main窗口。選擇Device [image] Call，從Call對象菜單中選擇Select Function，選擇告警。運行測試，進行測試。UserFunction告警的細節視圖應類似于下圖。

9 返回告警窗口。選擇Color Alarm畫面和Note Pad。打開彈出Edit菜單，選擇Add To Panel。在面板視圖中，使用對象句柄Align函數或通過移動對象，确定對象大小和排列對象。如果需要對齊网格，把PanelDrawGrid屬性設為True。打開Note Pad對象菜單，點擊Properties。設置如下︰

屬性 | 說明
ShowTitleBar | False
EditEnabled | False
Border | 變成Raised border。

10 把Color Alarm變成Raised Border。

11 點擊UserFunction內部打開的空間，出現Properties對話框，選擇ShowPanelonExecute。把屬性ShowTitleBar設為False。把Panel Title變成告警，圖標化告警。

12 進入Main窗口，刪除Call對象。(VEE仍會在內存中保留函數告警。如果想再次編輯函數，選擇Edit [image] Edit UserFunction或雙擊其圖標。)

13 創建重复調用告警函數的函數。

14 選擇Device [image] UserFunction，把UserFunction名稱變成警報。

15 選擇Flow [image] Repeat [image] Until Break。

16 選擇Device [image] Call，把Function Name變成告警，把其序列輸入端連接到Until Break數据輸出端。

添加一個Check Box對象，詢問操作人員是否想關閉告警。

17 選擇Data [image] Toggle Control [image] Check Box。打開Check Box Properties框，把Title屬性變成Turn off alarm?，選擇Scaled屬性，把它設為True，選擇InitializeAtPreRun，确保屬性值為False，使TitleFont屬性大小相對于名稱較大。把Call序列輸出端連接到Check Box序列輸入端。

這會創建一個使用Check Box的輸入對象。如果操作人員點擊這個框，會出現一個X，對象輸出一個1；否則對象會輸出一個0。可以使用If/Then/Else對象測試輸出，告訴VEE要采取的下一步措施。

18 選擇Flow [image] If/Then/Else，把它放在Toggle的右面。把Toggle數据輸出連接到If/Then/Else對象的數据輸入A上。把If/Then/Else對象中的表達式編輯為︰a == 1。(注意“等于”的符號是==，而不是=) 如果A端保留一個1，Then輸出會啟動；否則Else輸出會啟動。

把Toggle的輸出連接到If/Then/Else的輸入上。

19 選擇Flow [image] Repeat [image] Break，把它連接到If/Then/Else對象的Then輸出上，具体如下。

20 點擊對象右側，選擇Check Box對象(Turn off alarm?)。打開彈出Edit菜單，選擇Add To Panel。确定面板視圖大小，使其環繞Check Box。

21 打開警報UserFunction Properties框，選擇ShowPanelonExecute，把ShowPopupPanelTitle設為False (因為標題對操作人員沒有意義)。

22 進入Main，點擊Device [image] Call，打開其對象菜單，點擊Select Function，然后選擇警報。把Call對象移動到屏幕頂部中心。圖標化Main窗口。

23 在默認情況下，VEE同時在屏幕中心顯示告警面板和警報面板，因此告警會在停止告警的复選框頂部閃爍。由于這兩個屏幕位置都沒有鎖定，因此可以點擊并把彈出面板拖到新位置，來重新定位其在屏幕上的位置。但是，在告警面板閃爍時，進行這一操作有一些困難。這時應點擊和拖動面板邊緣。如果需要，使用工具欄上的停止按鈕停止程序。然后再運行程序。

在兩個面板位置如下時，可以點擊Turn off alarm?提示旁邊的框，停止程序。


實驗11-4: 使用ActiveX控件

本實驗說明了怎樣在VEE內部使用ActiveX控件。可以在VEE程序中采用來自其它應用程序的ActiveX控件。在本例中，您將使用ProgressBar控件，并使用循環，顯示完成0% - 100%的進度條。同樣，這些一般原理也适用于其它ActiveX控件。

1 點擊Device [image] ActiveX Control References...，選擇Microsoft Windows Common Controls 6.0。點擊OK。

2 點擊Device [image] ActiveX Controls [image] ProgressBar。調大ProgressBar對象大小。打開其Object Menu，注意對象名稱是ProgressBar。VEE已經自動創建一個指代ActiveX控件對象的聲明變量。可以在Formula表達式中使用名稱ProgressBar，就象任何其它變量或數据輸入一樣。

3 點擊Device [image] Formula & Object Browser，選擇ActiveX Objects, Library: MSComcltLib, Class: ProgressBar, Members: Value，點擊Create Set Formula。把對象放在Main窗口頂部中心。

4 為從0循環到100、并顯示完成的百分比，添加一個For Range對象。選擇Flow [image] Repeat [image] For Range，把對象放在ProgressBar下面，設置如下︰From: 0, Thru: 100, Step:10。把For Range輸出連接到ProgressBar輸入端Value。

5 為降低程序執行速度，以便能夠查看ProgressBar更新狀況，選擇Flow [image] Delay，把對象放在For Range對象的右面。把它設為.2。把ProgressBar序列輸出端連接到Delay對象序列輸入端，運行程序。

備注

ActiveX Control對象菜單同時擁有Properties和Control Properties。Properties菜單設置對象的VEE屬性。Control Properties由Control提供，對每种ActiveX Control可以不同。

考察与VEE一起提供的所有控件范例，可以更好地了解其工作方式。然后在市場上尋找您可能希望添加的其它控件和畫面，以增強VEE中的用戶界面功能。

下圖顯示了采用MS Chart控件的另一個VEE范例。在Device [image] ActiveX Controls References對話框中選擇了一個控件庫之后，可以使用Function & Object Browser或Declare Variable Object，識別控件的屬性和方法。


實驗11-5: 創建狀態面板

在本實驗中，您將學習怎樣使用骰子程序中的函數，創建一個狀態面板。(骰子程序練習位于“實驗11-1: 使用菜單"中) 一般來說，在有大量的測試，且希望在返回時查看結果時，這將与Sequencer對象一起使用。將使用函數random()，它使用默認設置，返回0和1之間的一個實數值。

1 點擊Device [image] Sequencer。雙擊處理欄，使用默認名稱test1配置測試，用random()替換FUNCTION:字段。參見下圖。

2 以相同方式配置第二個測試，名為test2。

3 打開Sequencer Properties框，選擇Logging欄，在Logging Mode下，選擇Log Each Transaction To: logTest(thisTest)，然后點擊OK。

在Sequencer執行每個處理時，它為每個測試創建一條記錄，稱為"thisTest"，可以在同一欄下配置其字段。然后創建一個UserFunction，稱為"logTest" (或另一個名稱)，Sequencer將在執行的每個處理的末尾使用Record thisTest調用LogTest() UserFunction。通過這种方式，可以更新狀態面板。

4 選擇Device [image] Function & Object Browser [image] Built-in Functions [image] Panel [image] showPanel，把它放在Sequencer上面。刪除輸入端，然后把參數編輯為"logTest",420,180，留下最后兩個參數。把showPanel的Result輸出端連接到Sequencer序列輸入端。如果成功，ShowPanel會輸出一個1。

LogTest是UserFunction的名稱。另兩個參數是屏幕上從左上角開始的X和Y坐標。這告訴VEE在顯示時把UserFunction面板放在哪個位置。(本例中沒有包括面板維度。)

5 創建名為logTest的UserFunction，如下圖所示。添加一個輸入端。(登錄Record將作為輸入。)把Logging AlphaNumeric放在面板上，把它連接到輸入端。選擇Logging AlphaNumeric，點擊Edit [image] Add to Panel。在面板視圖中，根据需要調節大小和位置。反選畫面和面板標題欄。

下圖顯示了運行程序后的面板視圖，您可以了解怎樣顯示數据。

6 從Function & Object Browser框和Flow [image] Confirm(OK)中選擇hidePanel。把hidePanel()參數變成logTest。刪除輸入端。連接對象，如下圖所示。

7 運行程序，如下圖所示。

總之，showPanel對象顯示UserFunction面板，但不調汁煲erFunction。Sequencer通過其登錄函數調汁煲erFunction兩次，每次調用時更新面板。然后，在操作人員完成時，他/她可以按OK，隱藏面板。本例使用OK對象觸發hidePanel對象，但也可以把它放到程序中其它地方，确定其執行時間。逐步通過程序，看到狀態面板出現，使用Test1和Test2結果更新屏幕，然后消失。


實驗13-1: 使用Agilent VEE网絡瀏覽器操作練習

本練習模擬一個Web會話，其中您將在系統上為遠程用戶提供Solitaire.vee 程序，供遠程用戶查看。在本例中，程序中有一個錯誤，遠程用戶咨詢您怎樣解決錯誤。

1 啟動VEE. Select File [image] Default Preferences [image] Web Server對話框，點擊Enable Server。使用默認設置。打開您希望遠程用戶查看的 Solitaire.vee 程序。運行网絡瀏覽器。

2 与遠程用戶聯系，讓他/她知道輸入http://Server5，通過网絡可以到達您的系統。(您將使用自己的計算机名稱，而不是http://Server5。)

3 在遠程用戶輸入URL http://Server5時，遠程用戶看到您的VEE Web Server主頁顯示在他/她的瀏覽器中。(如果想了解顯示屏，請參閱圖301)

4 遠程用戶決定先查看整個VEE程序。在VEE Web Server主頁中，他/她點擊Main Detail [image] View。瀏覽器顯示的畫面如下。

上圖顯示了VEE中的Main 程序。

備注

對本練習，Solitaire.vee 程序包括VEE程序范例中沒有錯誤。如果您想查看程序，它位于Help [image] Open Example... Games [image] Solitaire.vee下。

5 遠程用戶在瀏覽器中點擊Back (后退)，顯示VEE Web Server主頁，選擇Last Error Message。瀏覽器顯示錯誤信息。

注意VEE錯誤信息指明UserFunction makeAMove。

6 遠程用戶再次回到VEE Web Server主頁，點擊UserFunction的Detail View，輸入UserFunction名稱makeAMove。瀏覽器顯示UserFunction makeAMove如下。

遠程用戶能夠查看VEE程序中的錯誤。JCT對象上有一個輸入端沒有連接，如上圖所示。遠程用戶現在可以幫助您診斷 Solitaire.vee，解決錯誤。使用通過Web實現的類似協作流程，可以与遠程用戶協作，或一起開發程序。

另請參閱

可以調用的VEE ActiveX Automation Server, 使用Agilent VEE進行Web監測, 為遠程用戶提供Agilent VEE數据, Web Server對話框, 遠程用戶怎樣存取系統上的Agilent VEE,顯示Agilent VEE Web Server頁面，限制存取通過Web查看的程序


通用編程技朮

通過下面的練習，您將有机會實踐VEE概念。這一練習分成几類。

為使用這一練習，先開發一個解決方案，然后把它与列出的答案進行對比。有許多方式為一定的任務編程，因此如果它能夠滿足問題規范，那么它就是一個有效的解決方案。但是，執行更迅速、更簡便的程序可能是更好的解決方案。每個解決方案都包括簡要的要點討論。

苹果裝袋程序

使用字符串和全局變量

導 入和刪除UserFunctions庫

優化技朮

UserObjects

Agilent VEE UserFunctions

創建操作面板和彈出面板

處理文件

記錄

測試定序

測試數字

使用 Masks

隨机數字發生器

收 集隨机數字


苹果裝袋程序

您想知道裝滿一個10磅的籃子需要多少個苹果。創建一個VEE程序，計算裝滿籃子需要多少個苹果。每個苹果的重量在0 – 1磅之間。

建議

可以使用10個或更少的對象創建這個程序。從下面的對象中進行選擇︰

Start, Until Break, random() function, Accumulator, Break, Real64, Conditional (A>=B), Stop, Counter, If/Then/Else, Alphanumeric.

備注

許多實驗室試驗使用的VEE程序和本手冊中的編程實例都包括在VEE中Help [image] Open Example... Manual [image] UsersGuide下。

解決方案1—苹果裝袋程序

要點

最佳解決方案︰

為優化程序性能，應盡可能減少使用的對象數量。這個解決方案使用6個對象。也可以使用10個對象實現程序，具体如下。

Until Break和Break對象:

對要求測試某個條件的循環使用這些對象。在本例中，在苹果總重量超過10磅時，應停止循環。

Accumulator:

使用Accumulator進行累加。

Counter:

使用Counter進行計數。在本例中，Counter用來跟蹤籃子中的苹果總數。注意在總重量超過10時，只有If/Then/Else對象上的Then端激活，Counter中會提供正确的答案。

解決方案2—苹果裝袋程序

這是另一种解決方案，它使用了更多的對象。

要點

Start:

對這一程序使用Start對象是多余的，因為可以使用主菜單條上的Run按鈕。最好在屏幕上有兩個程序、且用戶希望單獨運行這兩個程序時使用Start。或者在使用具有反饋循環的程序、且用戶希望定義在哪里開始執行程序時使用Start。

Shift Register:

可以使用Shift Register存取以前的輸出值。在第二個解決方案中，Counter一直數每個苹果，直到達到要求的重量，因此在總重量超過10時，數量必須減去1。

Gate:

Gate用來保持輸出，直到發生另一個操作及激活序列端。這里，在條件A<=10不再為真時，If/Then/Else對象上的Else端激活門。

另請參閱

處理紀錄, 使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，測試定序，測試數字，收 集隨机數字,

隨机數字發生器。


測試數字

測試數字, 第1步

創建一個程序，允許用戶輸入一個0 – 100之間的數字。如果數字大于等于50，那么顯示這個數字。如果數字小于50，那么顯示一個彈出框，顯示信息“Please enter a number between 50 and 100.”

建議

可以使用5個或不到5個對象創建這一程序。從下述對象中選擇︰ Start, Int32, Slider, Real64, If/Then/Else, Formula, Gate, Text, Junction, Alphanumeric, Message Box.

解決方案—測試數字, 第1步

這是使用5個對象測試數字練習的解決方案。

測試數字, 第2步

在模型處理5個對象后(Message Box生成彈出框)，不使用Gate對象，試著使用4個對象進行編程。

解決方案—測試數字, 第2步

這是使用4個對象測試數字練習的解決方案。

要點

Auto Execute:

所有輸入對象(如Int32 Slider)在Properties對話框中都有一個Auto Execute選項。如果選擇這個選項，那么在其值變化時這個對象會運行，而不必按Start或Run按鈕。

合并公式:

對If/Then/Else對象中的表達式(A>=50)*A，如果A>=50，那么其值為1*A；如果為假，那么其值為0。因此如果表達式為真，那么A被放在Then端；如果表達式為假，那么0被放在Else端。(求解非零的任何表達式都視為真，值在Then端傳播。)

測試數字, 第3步

創建一個只使用3個對象的解決方案。

提示: 在Formula對象中使用一個三元組表達式。公式為︰(<expression> ? <if TRUE,output value> : <if FALSE, output value>)。例如，如果A < 10求解為TRUE，那么Result端應出現A值；否則，Result端應出現字符串“FALSE”。將使用下面的三元組表達式︰(A<10 ? A : "FALSE")。

解決方案—測試數字, 第3步

這是只使用3個對象測試數字練習的解決方案。

備注

由于自動檢錯功能，這可以使用Real64 Input對話框實現。但是，在程序結束前，操作人員必須輸入一個有效數字。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試定序，隨机數字發生器,

收 集隨机數字。


收集隨机數字

創建一個程序，生成100個隨机數字，并顯示這些數字。記錄生成和顯示這些值要求的總時間。

建議

可以使用6個或6個以下的對象創建這一程序。從下述對象中進行選擇︰

Start，For Range，Until Break，randomseed() function，random() function， Collector， Formula，Set Values，Alloc Int32，Logging AlphaNumeric，Strip Chart，Meter，Date/Time，Timer，Now()，Break，Do。

提示: 為改善性能，先使用Collector對象把數据收集到數組中，只把數据發送到顯示器上一次。注意性能差异。

解決方案—收集隨机數字

下圖是收集隨机數字練習使用的解決方案。

要點

Logging AlphaNumeric与AlphaNumeric比較:

使用Logging AlphaNumeric，作為以前的值歷史顯示連續輸入 (Scalar或Array 1D)。使用AlphaNumeric，把來自僅一次執行(最后一次執行)的數据顯示為單個值，如Array 1D或Array 2D。Logging畫面顯示一個沒有索引值的數組；AlphaNumeric畫面是同一數組，但帶有可選的索引號和值。

定時端:

Do對象控制著先執行哪個對象。程序末尾從For Count對象的序列輸出端中獲得定時，因為該端直到已經執行了循環內部的所有對象時才會啟動。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試定序，測試數字，隨机數字發生器。


隨机數字發生器

隨机數字發生器, 第1步

創建一個要求外部輸入的隨机數字發生器。在帶狀圖上顯示數字。輸入應支持︰

最大隨机數字

最小隨机數字

生成的隨机數字數量

解決方案--隨机數字發生器, 第1步

隨机數字發生器解決方案練習的第1步如下。

要點

滑標對象的布局:

在Properties 對話框中點擊Layout下的Horizontal，可以為滑標對象屏幕圖選擇水平格式或垂直格式。

XY Trace:

使用XY Trace，顯示連續生成的數据的最新歷史。

隨机數字發生器, 第2步

把隨机數字采集到一個數組中。找到流動平均數，并与數字一起顯示流動平均數。

解決方案--隨机數字發生器, 第2步

隨机數字發生器解決方案練習的第2步如下。

MovingAvg(x, numPts):

這個對象位于Function & Object Browser, Data Filtering种類中。使用這個對象，同時使用感興趣的數据點之前指定數量的數据點的平均值，平滑輸入數据，計算被平滑的數据點。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試定序，測試數字, 收 集隨机數字 。


使用 Masks

使用模板

模板測試, 第1步

創建一個噪聲數量可調節的50 Hz正弦波。測試有噪聲的正弦波，确定其一直低于下述極限︰

(0,0.5)

(2.2m, 1.2)

(7.2m, 1.2)

(10.2m, 0.5)

(20m, 0.5)

如果正弦波超過極限，那么用紅色菱形標明失敗點。

提示: 可以把顯示格式從線變成點，從點變成菱形。(在Properties中，對每個軌跡輸入選擇Traces一欄，線型可以是實線、虛線、僅點等等。此外，Point Type可以只是點、菱形、框或其它形狀。) 您可能會發現Comparator對象很有幫助。

解決方案--使用模板, 第1步

第1步的解決方案︰

使用模板, 第2步

增加程序，計算和顯示失敗的百分比。

解決方案--使用模板, 第2步

這是第2步的解決方案。

要點

模板:

使用Data [image] Constant [image] Coord對象創建模板，然后把它配置給5個數組要素。輸入用逗號分隔的坐標對，VEE會增加圓括號。選擇x值，知道波形的時間跨度是20毫秒。此外，注意Waveform (Time)畫面接受Coord數据類型作為輸入。還可以使用Data [image] Build Data [image] Arb Waveform對象，通過指明波形中的點數，這個對象把Coord轉換成Waveform數据類型。

Comparator:

這個對象把測試值与參考值進行對比。您再次可以比較一個波形与由坐標對組成的數組。Failures端會提供失敗的數据點數組，然后可以把這個數組發送到顯示畫面上，用不同的顏色或不同線型高亮度顯示失敗的數据點。

TotSize:

這個對象提供了數組中的要素數量。由于這個數組包含著失敗數量，因此把它除以原始波形中的要素總數256，再乘以100，可以得到失敗百分比。

公式:

A/256*100是用來計算失敗百分比的公式，因為函數發生器和噪聲發生器設置成輸出256個點。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，收 集隨机數字

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試定序，測試數字，隨机數字發生器。


字符串和全局變量的操作

處理字符串和全局變量

通過使用字符串對象或函數，創建一個接受下述格式的用戶名稱的程序︰<space> <firstname> <space> <lastname>。在用戶輸入一個名稱后，程序會去掉名，只打印姓。把字符串存儲到一個全局變量中。使用Formula對象檢索字符串。

解決方案--處理字符串和全局變量

處理字符串和全局變量的練習方案如下圖所示。

要點

字符串對象和函數:

StrTrim(str)先從名稱正面和背面去掉任何空格或標簽。StrPosChar(str1, " ")得到名和姓之間空格字符的索引。當然，StrLen(str)會提供字符串長度。所有這些都使用字符串對象執行，但也可以使用Formula對象內部的字符串函數完成。

Formula對象:

StrFromThru(A,B+1,C-1)從輸入A中獲得字符串，在輸入B的空格索引中加1，從輸入C的字符串長度中減1。(記住所有索引都基于零。)

設置變量:

注意可以簡便地設置一個全局變量，稱為lastname，然后可以在任何表達式字段中參考這個變量，如本例中的Formula對象。

優化:

可以把三個公式組合到一個公式中。建議留著strTrim()，因為其輸出被多次使用，而其它輸出可以組合到一個公式中，優化速度。(但這也會降低讀取能力。)

另請參閱

苹果裝袋程序，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，收 集隨机數字,

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試定序，測試數字，隨机數字發生器。


優化技朮

在本實驗中，您將以兩种不同的方式構建一個VEE程序，注意執行速度差异。

優化技朮, 第1步

創建一個程序，通過正弦函數和余弦函數發送范圍0 ?710，步進為10。把函數結果放在X對Y顯示畫面上。使用Timer對象，提供程序所需時間的時鐘輸入。(設置Trig Mode to Radians的默認首選項)

解決方案--優化技朮, 第1步

下面是解決方案的第1步。

優化技朮, 第2步

從第一個程序中复制所有對象。修改新的集合，把范圍收集到一個數組中。現在，針對由多個點組成的數組運行正弦函數和余弦函數，并且只繪制一次。注意節約的時間。

解決方案--優化技朮, 第2步

下面是解決方案的第2步。

要點

通過數組優化:

注意第1步和第2步之間的性能提高源于使用數組。在可能時，應使用數組、而不是標量值進行分析或顯示結果。

X對Y顯示畫面:

本例使用這個畫面，而不是波形或XY畫面，因為X數据和Y數据不同。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，UserObjects，使用 Masks，收 集隨机數字,

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試定序，測試數字，隨机數字發生器。


隨机噪聲UserObject

隨机噪聲UserObject, 第1步

創建一個生成隨机噪聲波形的UserObject。顯示UserObject外面有噪聲的波形和噪聲頻譜。在 UserObject外面控制下述項目︰幅度, 點數, 間隔 (時間跨度), DC偏置。

備注

不要使用UserObject內部的虛擬源。使用Build Waveform和Random之類的對象創建UserObject。

解決方案--隨机噪聲UserObject

這是隨机噪聲UserObject解決方案。

解決方案--隨机噪聲中的NoiseGen對象

其中一种NoiseGen UserObject解決方案如下︰

要點

UserObject:

注意構建的UserObject在本質上是在VEE中增加的定制對象。

Build Waveform:

這個對象從幅度值和時間跨度(y數据取樣的時間長度，洙位為秒)的Real數組中創建Waveform數据類型。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，使用 Masks，收 集隨机數字,

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試定序，測試數字，隨机數字發生器。


使汁煲erFunctions

使用UserFunctions

UserFunctions, 第1步

創建一個稱為NoiseGen的函數，從滑標接受一個幅度值(0-1)，返回一個有噪聲的波形。

不使用 Virtual Source, For Count, For Range

使用 Formula, Ramp, Build Waveform

提示: 使用randomize(array, -a,a)，其中array必須是256點，a是幅度。構建一個簡單的主程序，調用這一函數，保証函數正确運行。

解決方案—UserFunctions, 第1步

這是第1步的解決方案。

要點

Ramp():

注意ramp()函數用來在randomize()的參數列表內部生成由256個點組成的數組。

構建波形:

注意默認時間跨度是20毫秒，因此只需把一個數組發送到這個對象上，就可以構建一個波形。

UserFunctions, 第2步

在同一個程序中，創建稱為AddNoise的另一個函數，調用第一個函數NoiseGen。AddNoise應從NoiseGen函數向正弦波增加有噪聲的波形。AddNoise應有兩個輸入，一個輸入用于NoiseGen幅度，一個輸入用于正弦波。對結果應有一個輸出。

對噪聲幅度使用滑標、對要增加噪聲的好波形使用Virtual Source [image] Function Generator (正弦波, Freq = 100 Hz)，構建一個簡單的主程序。顯示得到的波形。

解決方案—UserFunctions, 第2步

這是第2步的解決方案。

UserFunctions, 第3步

在同一個程序中，再次調用AddNoise函數，這次是從Formula對象中調用，對結果取絕對值。在同一個顯示畫面上顯示絕對值波形。然后準備編輯AddNoise函數。啟動Debug [image] Show Data Flow。打開AddNoise窗口，運行程序。注意這一功能對調試的用處。

解決方案—UserFunctions, 第3步

這是第3步的解決方案。

UserFunctions, 第4步

現在改變程序，使滑尺設置一個全局變量，稱為Amplitude。令NoiseGen函數使用該全局變量(因此NoiseGen不再要求一個輸入端)。使程序正确運行。把這個文件另存為uflab.vee。

解決方案—使用UserFunctions, 第4步

這是第4步的解決方案。

提示: 注意Call AddNoise和Formula對象使用全局變量Amplitude，因此這兩個對象需要在Set Amplitude對象執行之后運行。從Set Amplitude到Call AddNoise及從Call AddNoise到Formula連接Sequence端，保証這些對象以要求的順序執行。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

創建操作面板和彈出面板，處理文件，記錄，測試定序，測試數字，隨机數字發生器, 收 集隨机數字。


導入和刪除UserFunctions庫

構建立一個簡單的程序，導入uflab.vee函數。調用該函數增加噪聲，然后以程序化方式刪除這個庫。使用Call對象的對象菜單中的Select Function選項。

提示︰在Import Library對象菜單中點擊Load Lib，手動加載指定的庫，從而可以使用Call中的Select Function特性。

解決方案--以程序化方式導入和刪除庫

下面的解決方案以程序化方式刪除庫。

要點

Select Function:

注意，這個選項將為選擇的函數配置正确的輸入端和輸出端。

Editing UserFunctions:

如果以程序化方式導入一個UserFunction庫，那么將不能編輯這個庫。可以查看這個庫，設置調試斷點。如果想編輯導入的UserFunction，應使用Merge Library命令。

Set Variable Caution:

注意在函數中使用全局變量時，必須記住在其它程序中使用該函數時要創建該全局變量。明确創建輸入和輸出的優點之一是它們追蹤起來更加簡便。

另請參閱

苹果裝袋程序，使用字符串和全局變量，優化技朮，UserObjects，使用 Masks，處理文件，記錄，測試定序，

Agilent VEE UserFunctions，創建操作面板和彈出面板，測試數字，隨机數字發生器, 收 集隨机數字。


創建操作面板和彈出面板

創建操作面板和彈出面板，第1步

創建一個面板，請操作人員輸入數字。創建一個UserObject，与操作人員交互。請操作人員提供兩個輸入A和B。把兩個輸入都發送到顯示屏上。使用UserObject，复選Show On Execute，顯示面板。

解決方案--創建操作面板和彈出面板，第1步

下面是細節視圖中的解決方案。

這是程序運行時出現的面板。

要點

UserObject Properties:

在UserObject Properties對話框中，選擇Pop-Up Panel，點擊打開Show Panel On Execute。把Pop-Up Panel [image] Panel Title名稱變成 Enter A or B。

創建操作人員面板和彈出面板，第2步

如果兩個數字不同，詢問操作人員是顯示A還是B，而不是同時顯示A和B。在詢問兩個值后，如果A值和B值相等，顯示取值。如果A值和B值不同，讓操作人員選擇一個值進行顯示。根据操作人員選擇，顯示A或B。

提示: 增加另一個UserObject，其中彈出面板設為Show Panel on Execute，詢問操作人員取值。

解決方案--創建操作人員面板和彈出面板，第2步

這是在A和B是不同數字時請操作人員進行選擇的UserObject。

出現的詢問操作人員是顯示A還是B的第二個彈出面板如下。

要點

Gate:

Gate對象只在兩個數字相等時才發送一個值。

Junction:

JCT對象允許在Alphanumeric對象中有多個輸入。JCT對象是一個線或對象。

作為菜單列出對象:

注意使用為兩個選項編輯的、為列表格式化的Data [image] Selection Controls [image] List對象。這一配置將輸出文本A或B。如果需要序數值(0或1)，那么應使用List對象的序數數据輸出。

創建操作人員面板和彈出面板，第3步

如果操作人員沒有輸入數字，那么會生成錯誤信息。第二個UserObject在兩個數字不同時請操作人員選擇顯示A還是顯示B，在第二個UserObject上增加一個錯誤。如果操作人員在10秒內沒有選擇A或B，會生成錯誤。

解決方案--創建操作人員面板和彈出面板，第3步

如果操作人員在10秒內沒有選擇A或B，修改后生成錯誤的UserObject如下。

要點

退出UserObject:

如果用戶在不到10秒內應答，那么這個對象將退出UserObject，即使Delay對象可能沒有執行完畢。

Delay和Raise Error:

在10秒后，Delay對象ping通Raise Error對象，后者會暫停執行程序，顯示已經輸入的錯誤信息。在導致錯誤的對象周圍會出現一個紅色外框，在點擊主菜單條上的Stop按鈕或Run按鈕時，這個紅色外框會消失。

OK和Delay:

注意AnotB中的兩個線程是不同的，以便OK和Delay并發運行。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，處理文件，記錄，測試定序，測試數字，隨机數字發生器, 收 集隨机數字。


在文件中移入和移出數据

創建一個VEE程序，把時間寫入一個文件中。生成100個隨机點，把它們寫入到文件中。計算這些數字的中間值和標準偏差，使用下述格式把它們追加到文件后面︰

中間值: xxxxxx

標準偏差: yyyyyy

然后，只從文件中讀取中間值和標準偏差。

解決方案--在文件中移入和移出數据

下面是在文件中移入和移出數据的解決方案。

要點

生成一個數組:

使用Formula對象中的randomize(ramp(100,0,1), 0, 1)，創建一個由100個隨机數字組成的數組。ramp()函數生成有序數組，把它傳送到randomize()函數，然后這個函數生成0-1之間的隨机值。

時戳:

對To File對象中的第一個處理，now()函數用于I/O Transaction對話框的表達式字段中。在把格式變成TIME STAMP FORMAT時，這個對話框會顯示額外的按鈕，指明將怎樣存儲時間。

在一行中存儲兩個值:

在To File對象的第三個處理和第四個處理中，都存儲一個常數Text字符串，后面跟著一個實數值。例如，在第三個處理中，輸入"Mean: ", 在I/O Transaction框的表達式字段中輸入B (假設中間值將在B輸入端上)。

從文件中提取一個值:

為到達中間值和標準偏差，先發送一個EXECUTE REWIND，在開頭定位讀取指針。然后使用NULL及正确格式，READ經過的時戳和實數數組。(這會丟掉已讀取的值，而不是把它們放到輸出端中) 最后，作為字符串讀取文件中的最后兩行。

Junction:

使用Flow [image] Junction對象，把一個以上的輸出連接到一個輸入上，如把中間值和標準偏差輸出連接到Logging AlphaNumeric顯示屏上。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，創建操作面板和彈出面板，記錄，測試定序，測試數字，隨机數字發生器,

收 集隨机數字。


處理紀錄

處理記錄

處理記錄, 第1步

構建一個記錄，其中包含三個字段︰整數，當前時間字符串，以及由實數構成的有4個元素的數組。這些字段應分別命名為int, daytime, 和array。把這條記錄与包含0-1之間的一個隨机數字和一個波形的另一個記錄合并在一起。把這些字段命名為rand和wave。

解決方案--處理記錄, 第1步

得到的記錄應該有五個字段。

要點

時戳:

使用To String對象內的now()函數，為這個程序創建時戳。然后可以指定其格式。

把數据常數配置為數組:

通過選擇 Properties，然后在Configuration下選擇1D Array，可以把Data [image] Constant菜單中的任何數据類型轉換成一個數組。在這里可以輸入長度，或者在輸入值時，可以使用Enter追加值。

命名字段:

通過在Build Record對象上重命名輸入端，可以為記錄提供特定的字段名稱，如int, rand和wave。

默認值控制輸入:

通過增加一個Default Value Control端，Record Constant構成了一個完美的交互顯示對象。Record Constant會針對收到的記錄自動進行配置。

處理記錄, 第2步

在Formula對象中使用條件表達式，測試記錄中的隨机值，顯示值或文本字符串。如果值小于0.5，那么顯示該隨机值；否則輸出一個文本字符串 岞ore than 0.5"。然后，只提取時間和波形。

提示︰不要使用Formula對象提取時間和波形。使用AlphaNumeric對象顯示這一記錄。

解決方案--處理記錄, 第2步

處理記錄的解決方案第2步如下圖所示︰

要點

使用條件表達式:

VEE支持條件表達式，為實現if-then-else操作提供了有效的方式。這個Formula對象中的條件表達式稱為三元組，它是(a.rand < 0.5? a.rand: "More than 0.5")。注意這是一個表達式，可以如圖所示在Formula對象中使用斷行編寫這個表達式。如果在Formula對象中有一個以上的表達式，那么表達式之間使用分號(;)分開。

Sub Record對象:

注意標有Sub Record輸入端的字段上的Text字段數組。在把Sub Record對象配置成包括多個字段時，它將輸出一條記錄，其中只包含指定的字段。

處理記錄, 第3步

用For Count對象代替第一個字段的整數輸入，重复10次。在每次重复時一定要ping隨机數字發生器和時間函數。把完整的記錄發送到To DataSet對象中。在單獨的線程中，在隨机值大于0.5的數据集中檢索所有記錄。把得到的記錄放到記錄常數中。

提示︰對Record Constant對象上的默認值，您需要一個控制端。

解決方案--處理記錄, 第3步

處理記錄的解決方案第3步如下圖所示︰

要點

To DataSet對象:

Clear File at PreRun選項只清除第一次發送數据前的文件。注意，程序會順序向同一個文件發送10條不同的記錄，這些記錄追加到文件后面。

From DataSet對象:

這個對象配置成在rand字段大于0.5時檢索所有記錄。在本例中，10條記錄中有5條記錄滿足標準，顯示了第一條記錄，索引號為0。

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，測試定序，測試數字，收 集隨机數字,

隨机數字發生器。


測試定序

使用測試定序器, 第1步

創建一個簡單的UserFunction，稱為UpperLimit，這是一個帶有Real64 Slider和Confirm (OK)對象的彈出面板。把滑標的輸出發送到稱為UpLimit的全局變量上，同時把它發送到一個輸出端上。創建一個Sequencer對象，在Sequencer中把test1配置成調用UpperLimit的EXEC處理。

創建另一個函數，稱為AddRand，模擬您可能會調用的測試。這個函數應在隨机值(0 - 1)中增加一個輸入值。它有一個輸入端和一個輸出端。

從Sequencer中，創建test2調用AddRand，遞送一個零。測試返回值，把它与小于全局UpLimit值的極限進行對比。如果通過，那么返回"PASS" + test2.result。如果未通過，返回"FAILED" + test2.result。把字母數字顯示放在Sequencer的Return端。

在Sequencer對象后，ping Get Variable對象 (UpLimit)和另一個字母數字顯示。多次運行程序。

解決方案--使用測試定序器, 第1步

這是使用Sequencer的第1步的解決方案。

要點

使用UserFunction設置全局變量:

第一個Sequencer處理的典型用途是調用一個UserFunction，設置全局變量，如本例所示。然后可以在之后的任何測試中使用這些變量，如本例所示。

Sequencer Return端:

本例中的Return端提供了PASS或FAIL信息及測試值。可以使用這個端從特定測試中提供任何信息或值。

使用測試定序器, 第2步

使第一項測試失效。假設在任何其它地方不需要全局變量，可以直接調用UpperLimit函數。改變test2，以便能夠對比AddRand(0)的返回值与UpperLimit函數結果。

提示: 為使第一項測試失效，使用下面的Sequencer Transaction對話框。

注意在上圖中，Sequencer中的第一項測試以兩條斜線開始，表明其已經失效。

解決方案--使用測試定序器, 第2步

使用測試定序器第2步的解決方案如下。

要點

表達式字段中的UserFunction:

在本例中，可以在變量將指向的表達式字段中輸入函數名稱UpperLimit()，而不是對比測試結果与UpLimit變量。

使用測試定序器, 第3步

編輯test2 Sequencer處理，調用VEE函數random (0,1)。把結果与小于0.5的極限值進行對比。剪切和粘貼test1處理，直到總共獲得4項測試。

構建一個程序，運行Sequencer五次。在記錄數据集中記錄數据，在數組中采集數据。使用數組，找到第二項測試結果的最小值、最大值、中間值和標準偏差。

解決方案--使用測試定序器, 第3步

第3步的解決方案如下。

要點

多次運行Sequencer的數据格式(第一個線程):

在Sequencer執行一次時，它會輸出一個Record of Records。第一個記錄的字段名稱与測試名稱相匹配，然后每個字段保持一條記錄，其中包含該特定測試的不同的各個數据。在Sequencer多次運行時，每個Record of Records被增加到一個數組中，然后可以考察這個數組。如果在Formula對象中使用<record>[*].<record>.<field>格式，那么可以得到一個數据數組。在這种情況下，會得到一個由實數值組成的數組，提供五次運行test2的測試結果。然后可以從這個數組中計算最小值、最大值、中間值和標準偏差。通過在記錄的記錄數組中指明某個要素，可以指明一輪test2。例如，為獲得test2的第一輪結果，可以使用表達式︰A[0].test2.result。

使用測試定序器, 第4步

在登錄記錄中增加一個時戳字段。增加一個延遲，使每步之間的運行間隔為一秒。在單獨的線程中，獲得test2的所有測試結果，把它們發送到一個記錄常數中。

Delay對象 (第一個線程):

這個對象在指定秒數內保持執行流程。在這里，它用來保証時戳值在每次運行Sequencer時變化。

增加一個時戳:

為增加一個時戳，打開Sequencer對象菜單，選擇Properties [image] Logging一欄，复選Record Fields to Log [image] Time Stamp。出現下述Properties [image] Logging一欄的對話框。

解決方案--使用測試定序器, 第4步

使用測試定序器第4步的解決方案如下。

提示: 為顯示一條記錄，點擊其中一項測試的Record [image] Record: Scaler字段，出現下述Record Field Data對話框。

使用測試定序器, 第5步

在Logging Alphanumeric畫面上，從記錄中打印時戳字段。

提示: 使用4個Formula對象(每項測試一個)。為在一個Logging Alphanumeric畫面中顯示全部4個Formula結果，增加一個Junction對象。使用To String，把63G時戳值格式化成更加可讀的字符串。

解決方案--使用測試定序器, 第5步

下圖是使用測試定序器第5步--把時戳打印到顯示屏上的程序線程。

要點

轉換時戳格式:

Logging AlphaNumeric前的To String對象把時戳從Real格式轉換成Time Stamp格式，以便更加清楚。

使用測試定序器, 第6步

如果Sequencer包括多項測試，那么使用連接到Junction的多個Formula對象可能會非常麻煩。相反，可以使用一個包含表達式的Formula，在運行時生成表達式，循環通過可能的表達式。

首先，范例將生成表達式字符串。

在另一個線程中，使用一個Loop和一個Formula，生成一個測試表達式字符串。作為Logging Alphanumeric中的字符串輸出信息。Formula中生成的字符串應該是"a[*].test<x>.timestamp"，其中<x>從1到4。

解決方案--使用測試定序器, 第6步

第6步的解決方案是︰

使用測試定序器, 第7步

現在使用第6步中構建的Loop和Formula，用這個Loop和Formula代替上一步中的4個Formula和Junction。此外，您現在想求解構建的字符串。把生成的字符串(表達式"a[*].test<x>.timestamp")發送到運行時求解的Formula中。

Formula對象上的公式控制端:

您想要求解的Formula由Loop內部的Formula生成。您可以對其Formula表達式使用控制輸入生成第二個Formula對話框。第二個Formula求解的表達式在運行時生成。

解決方案--使用測試定序器, 第7步

第7步的解決方案是︰

要點

  • To String對象仍用來把Real64格式化成時戳格式。

  • 注意第一個"生成" Formula和第二個"求解" Formula之間的序列行。這保証只有在得到新的要求解的字符串時才會執行第二個Formula。

使用測試定序器, 第8步

只顯示測試1通過、測試2未通過的記錄。

解決方案--使用測試定序器, 第8步

使用測試定序器的最后一步的解決方案如下。

要點

From Data Set對象上的EOF端 (第二個線程):

在沒有符合標準的記錄時，會增加EOF端。如果發生這种情況，那么EOF端將啟動，而不是VEE中斷程序及顯示錯誤信息。

From Data Set對象中的條件表達式 (第二個線程):

表達式是(Rec.test1.pass==1) OR (Rec.test2.pass==0)，采用相同的<record>.<record>.<field>格式。Rec是讀取和測試時數据集中每條記錄的名稱。Test1和test2指明VEE應檢查哪些測試，字段名稱pass是VEE指配的通過-未通過指示(1或0)的默認名稱。(通過在Sequencer Properties對話框中選擇Logging一欄，可以對所有測試啟用或禁用不同的字段。)

另請參閱

苹果裝袋程序，使用字符串和全局變量，導入和刪除UserFunctions庫，優化技朮，UserObjects，使用 Masks，

Agilent VEE UserFunctions，創建操作面板和彈出面板，處理文件，記錄，測試數字，隨机數字發生器,

收集隨机數字。


VEE 范例程序指南

本指南總結了所有和Agilent VEE Pro一起發布的 VEE 范例程序。 這些范例演示了許多實用的編程技巧。它們被分類列在下表中。

點擊每個分類可以查看程序列表和它們的簡介。點擊每個VEE 程序旁的按鈕會在一個新的 VEE 窗口。

范例 | 描述
.NET Examples | 包含多個.NET 范例，演示了.NET的強大和靈活。這些范例按難度分類。
ActiveX Controls | 一組ActiveX 范例程序，演示了如何使用一些典型的 ActiveX 控件。
Analysis | 一組演示 VEE 的數据分析能力的范例程序。
Electrical Applications | 這組范例演示了如何創建和拆分時域波形，DS1 Pulse Template 測試模擬， 和 lissajous 模式的產生。
Dynamic I/O Configuration | 一組演示如何使用 VEE 來查找本地或遠程儀器的范例。
Excel Library | 這組范例程序演示了如何使用 Excel 向 Excel 發送數据或從 Excel 都回數据，如何格式化 Excel 單元格，以及如何繪制 Excel 圖表。
Financial Applications | 演示了如何進行包括 NPV，投資回收率和未來值在內的通用財務計算。
Games | 這組游戲以一种有趣的方式演示了 VEE 的各种基本和高級功能。
Instrument Manager Integrated Examples | 一組集成在 Instrument Manager 中的范例程序。
Instrument Measurements | 一組演示如何進行各种儀器測量的范例程序，涵蓋了十几种儀器。
IVI Driver Example | 一組演示使用電壓表和頻譜分析儀的 IVI 范例程序。
Manufacturing Applications | 一組演示如何在制造應用程序中使用 VEE 的范例程序。包括數字型 VEE 對象和序列的使用。
MATLAB Script | 一組使用 MATLAB 的范例，它們演示如何使用 MATLAB 擴展 VEE 應用程序的功能。
Mechanical Applications | 一組使用机械工程問題演示 VEE 的功能的范例程序。
Microsoft Access | 一組使用 ActiveX 与 Access 進行交互的范例程序。演示了如何傳送數据到數据庫中并進行顯示。
Microsoft Excel | 一組使用 ActiveX 与 Excel 進行交互的范例程序。 演示了如何插入隨即數据，數組合圖表數据。
Microsoft Outlook | 一組使用 ActiveX 与 Outlook 進行交互的范例程序。 演示了如何發送郵件
Microsoft Word | 一組使用 ActiveX 与 Word 進行交互的范例程序。 演示了如何插入數据和位圖，如何查找和替換，以及如合并郵件。
Old VEE RPC API | 一組舊的 VEE 遠程過程調用庫。
Programmatic Properties | 一組演示如何使用Programmatic Properties的范例
VEE Lib Examples | 一組位于 VEE Lib 目錄的范例程序。
VEE Programming Concepts | 一組用 VEE 對象演示 VEE 基本概念的范例程序。
Visual Basic | 該范例合成一個脈沖并在時間范圍內進行顯示。
VB Script | 一組演示各种 VB Script 使用的范例。包括 DS1 脈沖測試，可調用的 VEE 服務器信息，等等。
Visual C++ | 一個演示 DS1 脈沖測試的范例。
Windows Forms Controls | 一組演示如何在 VEE 中使用 Windows Forms 控件的范例。

注釋

examples\Manual 目錄下的范例程序未包含在上表中。


重命名的范例文件

VEE 6.0/6.2 | VEE 7.0 | VEE 7.5
Access97DataClient.vee | Access97DataClient.vee | AccessDataClient.vee
Access97Enumerate.vee | Access97Enumerate.vee | AccessEnumerate.vee
Excel97Graph.vee | Excel97Graph.vee | ExcelGraph.vee
Excel97a.vee | excela.vee | ExcelInsertData.vee
Excel97b.vee | Excel97b.vee | ExcelInsertArrayData.vee
 | Excela UFunction.vee | ExcelUFunction.vee
 | Excel97a UFunction Lib.vee | ExcelUFunctionLib.vee
Excel97Weather.vee | Excel97Weather.vee | ExcelWeather.vee
 | LabVIEW.vee | LabVIEW.vee
Outlook97.vee | Outlook97.vee | OutlookSendMail.vee
Word97.vee | Word97.vee | Word.vee
Word97DataSheet.vee | Word97DataSheet.vee | WordDataSheet.vee
Word97MailMerge.vee | Word97MailMerge.vee | WordMailMerge.vee


.NET 范例

Microsoft .NET 范例

范例名稱

描述

參考的 Assemblies/
Namespaces/Classes

Difficulty

ComputingHash.vee

演示如何計算一個VEE記錄內容的hash。 這VEE紀錄和hash保存与一個外部文件。然后重新讀這個文件。紀錄的hash將根据文件中的內容會重新計算并与文件中保存的hash進行比較。這是一個驗証文件內容是否被改變的簡便方法。

Assemblies: mscorlib

Namespaces: System. System.Text, System.Security.Cryptography

Classes: System.Security.Cryptography.SHAManaged, System.Text.Encoding

3

DatabaseReadUsingDataset.vee

演示如何使用 OleDbConnection, OleDbAdapter, 和 Dataset 類創建一個多個數据庫表的in-memory副本。

Assemblies: mscorlib, System.Data

Namespaces: System, System.Data, System.Data.OleDb

Types: System.Data.OleDb.OleDbConnection, System.Data.OleDb.OleDbAdapter, System.Data.Dataset

2

DatabaseReadUsingOleDbReader.vee

演示如何使用OleDb 連接，命令和數据讀取器類從一個Access數据庫文件中查詢信息。

Assemblies: mscorlib, System.Data

Namespaces: System, System.Data, System.Data.OleDb

Types: System.Data.OleDb.OleDbConnection, System.Data.OleDb.OleDbCommand, System.Data.OleDb.OleDbDataReader

2

DateTime.vee

演示了內置的 .NET Framework 的函數DateTime，比如，過的當前的日期和時間，星期，年，以及查詢是否是一個閏年等等。

這個程序也是很好地演示了如何在 VEE 中同時使用和調用靜態和實例成員。導入System namespace 是為了保存一些類型。

Assemblies: mscorlib

Namespaces: System

Classes: System.DateTime, System.DayOfWeek

1

DateTimeConversion.vee

演示了如何在 .NET DateTime 和 VEE time 之間轉換。它還演示了如何使用新的 asClrType 類型轉換函數。注意，使用.NET 的 DateTime 類, 可以很方便地把 UTC 時間轉換為當地時間。導入 System namespace 是為了保存一些類型。另外，每一個.NET 的對象都至少有一個 ToString 方法用于生成格式完美的對象信息的打印輸出。從本例可以看出它的功能的強大。

Assemblies: mscorlib

Namespaces: System

Classes: System.DateTime

2

DeleteDir.vee

演示查詢目錄是否存在，創建多層目錄，以及刪除全部目錄的方法。 .NET Framework 中有許多易于訪問的系統管理函數，可以將這個小程序作為一個入門介紹。FileOperations.vee 是一個更為复雜的程序。瀏覽 System.IO namespace 下的類，可以給你一個全局的介紹。MSDN 中也會有更詳細的介紹。

Assemblies: mscorlib

Namespaces: System.IO

Classes: System.IO.Directory

1

DiskInfo.vee

演示如何獲得磁盤的大小和空余空間。這曾經是一個重要的任務，它包括導入kernel32.dll 并喚起 Win32 API 調用。 比較該程序与 examples\contrib\Win32\kernel32.vee。這個程序還查詢許多其他的磁盤信息。請參閱用戶函數 show_all_diskproperties。這個程序還是一個演示如何訪問和枚舉 .NET collection 的好例子。

Assemblies: mscorlib, System.Management

Namespaces: System, System.Management

Classes: System.Management.ManagementObject

3

DrawOnBitmap.vee

演示如何按規定的大小和類型創建一個位圖，并使用 System.Drawing.Graphics 對象在它上面繪圖，然后把畫好的位圖保存到一個制定的文件，最后用 VEE 的圖片對象顯示該位圖。這個范例中有兩個關鍵概念。第一個是使用靜態方法 System.Drawing.Graphics.FromImage() 從位圖獲得一個圖形對象。 如果位圖類是來源于 System.Drawing.Image 類，那么就可以把一個位圖的實例轉遞到這個函數。你一旦有了一個圖形對象，你就能在上面畫許多你需要的東西。 第二個概念是要 Dispose 任何顯式創建的繪圖對象。在本例中，使用 FromImage 建立the Graphics 對象，創建的字体和圖形對象都被 disposed。否則，VEE 程序會占用大量 GDI 資源而影響程序性能。

Assemblies: mscorlib, System.Drawing

Namespaces: System.Drawing, System.Drawing.Imaging

Classes: System.Drawing.Bitmap, System.Drawing.Graphics, System.Drawing.Font, System.Drawing.Brushes, System.Drawing.Pens, system.Drawing.Imaging.PixelFormat, System.Drawing.Imaging.ImageFormat

3

Environment.vee

使用.NET Framework, 可以很容易地獲得有關程序環境的信息，比如，當前目錄，名列行，机器和用戶名等等。

這個程序也很好地演示了如何從調用靜態成員。

Assemblies: mscorlib

Namespaces: System

Classes: System.Environment

1

EnumboundtoSelectionControl.vee

演示如何將 VEE 選擇控件做成一個下拉框，包括一個.NET 枚舉中所有的枚舉值， 然后，再把這個 VEE 下拉框的輸出值轉換成.NET 枚舉中的值。

Assemblies: mscorlib

Namespaces: System

Classes: System.Enum

1

EnumerateEnums.vee

演示了一些可以用 .NET Enumeration 來完成的有趣的事情。這個程序先獲得 System.FileAttributes 的類型，然后用那個類型循環整個枚舉，最后再打印出那些枚舉的文字或數字值。這個范例還可以用于任何 .NET Enum 類型的 EnumNamesAndValues 用戶函數，而不是只能用于 System.FileAttributes 類型。

Assemblies: mscorlib

Namespaces: System

Classes: System.Enum, System.FileAttributes

3

FileInfo.vee

演示了如何簡單地獲得文件的屬性，比如，創建時間，最后訪問時間，文件長度以及是否為只讀。注意 System 和 System.IO 名域的導入是為了保存一些類型。

IsFileReadOnly 用戶函數也演示了如何對.NET Enums 做位操作，如何使用 System.Convert 類把一個 .NET 類型轉換為另一個 .NET 類型。

Assemblies: mscorlib

Namespaces: System, System.IO

Classes: System.Convert, System.FileInfo, System.FileAttributes

2

FileOperations.vee

演示 VEE 如何使用 .NET Framework 的 File 和 Directory 類。首先，它獲得了一個通常位于 "document settings\username" 目錄下的目錄，然后在 Personal Folder 下創建一個目錄樹，如果沒有的話。之后，在那個目錄下創建一個文本文件并寫入一個格式化的行。最后打開該文件讀。這個程序同時也演示了如何得到机器上的所有邏輯驅動器。

Assemblies: mscorlib

Namespaces: System.IO

Classes: System.IO.Directory, System.IO.File, System.IO.Path, System.IO.StreamWriter

2

GetStockQuote.vee

演示了如何用10行代碼獲得股票報價。 只需輸入要查詢的股票的訂單代號，就可以得到20分鐘延遲的報價。

這個范例可以用 .NET Framework 完成的一些事情。比如，web 請求和相應，讀一個流，通過正常的表達式進行字符串匹配。

Assemblies: mscorlib, System

Namespaces: System.Net, System.IO, System.Text.RegularExpressions

Classes: System.Net.WebRequest, System.Net.WebResponse, System.IO.Stream, System.IO.StreamReader, System.Text.RegularExpressions.Regex

3

HashTable.vee

演示了 .NET Framework 中的一個內置數据結構。hash 表是一個關鍵字的集合，根据關鍵字的 hash 碼來組織值對。Hash 表可以使用比數組更為有效的查找算法。只要關鍵字實現兩個方法(GetHashCode 和 Equals)，就可以根据類型來保存任何類型的對象。這個范例演示了如何添加關鍵字和值對，如何獲得所存儲的項的數量，查找一個關鍵字是否存在于 hash 表中，以及如何基于關鍵字查找，等等。

Assemblies: mscorlib

Namespaces: System.Collections

Classes: System.Collections.Hashtable

1

IPAddress.vee

演示如何簡單地獲得机器的 IP 地址。 也演示了如何使用 GetValue Array 方法訪問一個 .NET 對象。

Assemblies: mscorlib, System

Namespaces: System.Net

Classes: System.Net.Dns, System.Net.IPHostEntry, System.Environment, System.Array

1

PasswordManagement.vee

演示如何創建一個簡單的用戶和密碼登陸系統。

Assemblies: mscorlib

Namespaces: System, System.Security.Cryptography

Types: System.Security.Cryptography.SHA1CryptoServiceProvider, System.Convert

2

ProcessInfo.vee

演示如何獲得与過程有關的信息， 比如︰虛擬內存大小，全部處理器時間，句柄數，優先級，開始時間，線程數，線程號，線程狀態和線程優先級。

Assemblies: mscorlib, System

Namespaces: System, System.Diagnostics

Classes: System.Diagnostics.Process, System.Threading.Thread

2

Registry.vee

演示如何使用 .NET Framework 類來訪問注冊表。這曾經是一個需要導入 advapi32.dll 并喚起一些難于理解的 WIN32 API 調用。 請把這個范例与 examples\contrib\advapi32.vee 比較。

Assemblies: mscorlib

Namespaces Microsoft.Win32

Classes: Microsoft.Win32.Registry, Microsoft.Win32.RegistryKey

1

SelectFiles.vee

演示如何使用 .NET Framework 中內置的對話框。本例中，OpenFileDialog 類用于顯示一個 Windows 標準的打開文件對話框。其它類，比如 SaveFileDialog, PrintDialog, ColorDialog, FontDialog, 等的使用也很簡單。使用VEE 的 File Name Selection 對話框也可以，但是 .NET 的 OpenFileDialogBox 提供更多的靈活性。比如，可以很容易地打開文件多選功能。

Assemblies: System.Windows.Form

Namespaces: System.Windows.Form

Classes: System.Windows.Forms.OpenFileDialog

1

SelectFolder.vee

演示如何選擇一個目錄而不選擇一個文件。

Assemblies: mscorlilb

Namespaces: System, System.Windows.Forms

Classes: Systems.Windows.Forms.FolderBrowserDialog, System.Environment.SpecialFolder

1

Sendmail.vee

演示如何用 .NET Framework 發送郵件。 這個范例和 lib\SmtpMail.vee 的功能相同，只是更為簡單。使用 .NET，可以只用不超過8行的代碼來發送郵件。

Assemblies: System.Web

Namespaces: System.Web.Mail

Classes: System.Web.Mail.SmtpMail

2

SendMailWithAttachments.vee

演示如何使用.NET來發送帶附件的郵件。

Assemblies: System.Web

Namespaces: System.Web.Mail

Classes: System.Web.Mail.SmtpMail

1

SpecialFolders.vee

演示如何得到机器上的目錄的路徑。這曾經是一個需要導入 shfolder.dll 并喚起 Win32 API 調用。請比較該程序与 examples\contrib\win32\shfolder.vee

注意，導入了名域。

Assemblies: mscorlib

Namespaces: System

Classes: System.Environment, System.Environment.SpecialFolder

1

Stack.vee

演示了 .NET Framework 的一個內置數据結構。堆棧是一個后進先出的結構，它和先進先出的隊列正好相反。這個范例演示了如何添加（壓）對象到堆棧和刪除（彈出）對象。

Assemblies: mscorlib

Namespaces: System.collections

Classes: System.Collections.Stack

1

StringOperations.vee

演示了使用.NET 方法的各种字符串操作。

Assemblies: mscorlib

Namespaces: System

Classes: System.String

1

StringSplit.vee

演示了使用定界符將一個字符串分為多個的方法。

.NET System.String 類有許多有用的功能。VEE 自動將 .NET 字符串轉換為 VEE 文本。有時，為了使用 .NET 對象的那些功能，也可以把一個String 當作一個.NET 對象。 這個范例演示了如何把一個 VEE 文本轉換為 .NET 字符串。它還演示了如何將一個 VEE 文本數組轉換為一個.NET System.Char數組。

該范例還很好地演示了如何使用 AsClrType 類型轉換功能。

Assemblies: mscorlib

Namespaces: System

Classes: System.String, System.Char

2

TextEncodedBInary.vee

演示了如何使用 .NET Framework 類來把二進制數据編碼為使用 Base64 的文本，然后把這個 Base64 的文本再變回為二進制形式。在沒有權限訪問文件附件時，該技朮可以用于把一個二進制文件當作文本來發送。

Assemblies: mscorlib

Namespaces: System

Classes: System.Convert

2

TimeZone.vee

演示了System.TimeZone 對象的使用。

  • 獲取當前時間的 UTC 偏移量。

  • 判斷一個時間是否為夏時制

  • 獲取夏時制時段的名稱。

  • 獲得標準時間時段的名稱。

  • 獲取夏時制開始和結束的時間。

Assemblies: mscorlib

Namespaces: System, System.Globalization

Classes: System.TimeZone, System.Globalization.DaylightTime

1

UsingTemperatureWebService.vee

演示如何使用一個Web 服務。

Assemblies: TemperatureService

Namespaces:

Classes: TemperatureService

2

UsingTerraServerWebService.vee

演示如何使用一個Web 服務。

Assemblies: mscorlib, TerraService

Namespaces: System, Agilent.VeeExample

Classes: TerraService, Place, TileId

2

WhichOS.vee

演示如何獲得操作系統的版本和平台信息。

The README details the steps to reproduce the example.

Assemblies: mscorlib

Namespaces: System

Classes: System.Environment, System.OperatingSystem

1

WriteEventLog.vee

演示了如何使用 System Menu 的 Write to Event Log 對象把 VEE 的錯誤信息記錄到 Application 事件日志中，然后再從日志中把它們讀回來。

Assemblies: mscorlib, System

Namespaces: System.Diagnostics

Types: System.Diagnostics.EventLog

1

XmlReadingUsingXmlTextReader.vee

演示了如何通過 System.IO.StringReader 讀取 XML。

Assemblies: mscorlib, System.Xml

Namespaces: System, System.IO, System.Xml

Types: System.IO.StringReader, System.Xml.XmlTextReader

2

XmlSearchingUsingXPathNavigator.vee

演示了如何把 XML 讀到 XPathDocument，然后創建一個 XPathNavigator .

Assemblies: mscorlib, System.Xml,System.Xml.XPath

Namespaces: System, System.IO, System.Xml, System.Xml.XPath

Types: System.IO.StringReader, System.Xml.XPath.XPathDocument, System.Xml.XPath.XPathNavigator, System.Xml.XPath.XPathNodeIterator

2

*難度級別標記為1到3。1級最簡單且需要最少的.NET 和 VEE 的經驗。


.NET Controls 范例

范例名稱 | 描述 | 參考的 Assemblies/ Namespaces/Classes
Button.vee | 演示如何使用一個Windows Forms Control Button | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: Button
CheckBox.vee | 演示如何使用一組Windows Forms controls, GroupBox 和 CheckBox，以及如何使用其它控件創建合成控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: GroupBox and CheckBox
CheckListBox.vee | 演示如何使用一組 Windows Forms 控件, CheckListBox 和 Label。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: CheckedListBox and Label
ComboBox.vee | 演示如何使用一組 Windows Forms 控件, ComboBox 和 Label。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: ComboBox and Label
ContainerControl.vee | 演示如何使用一組 Windows Forms 控件, DataGrid 和ContainerControl。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: DataGrid and ContainerControl
CustomCounter.vee | 演示一個定制的控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms
CustomFolderTreeView.vee | 演示一個定制的控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms
CustomGrid.vee | 演示一個定制的控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms
CustomProgressBarImage.vee | 演示一個定制的控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms
DataGrid.vee | 演示如何使用一組 Windows Forms 控件, DataGrid 和 ContainerControl。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: DataGrid and ContainerControl
DateTimePicker.vee | 演示如何使用一組 Windows Forms 控件, DateTimePicker 和 Label。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: DataTimePicker and Label
DomainUpDown.vee | 演示如何使用DomainUpDown 控件. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: DomainUpDown
GroupBox.vee | 演示如何使用一組 Windows Forms 控件, GroupBox 和 RadioButton，以及如何使用其它控件創建合成控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: GroupBox and RadioButton
GroupRadioAndCheckbox.vee | 演示如何使用三個Windows Forms 控件, GroupBox, CheckBox, 和 RadioButton。 | Assembly: System.Windows.Forms and System.Drawing Namespaces: System.Windows.Forms and System.Drawing Types: CheckBox, GroupBox, RadioButton and Point
HScrollBar.vee | 演示如何使用三個Windows Forms 控件, HScrollBar, VScrollBar, 和 Label. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: HScrollBar, VScrollBar, Label
LinkLabel.vee | 演示如何使用Windows Forms 控件, LinkLabel. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: LinkLabel
ListBox.vee | 演示如何使用Windows Forms 控件, ListBox and Label. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: ListBox and Label
ListView.vee | 演示如何使用Windows Forms 控件,ListView. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: ListView
MenuStrip.vee | 演示如何使用Windows Forms 控件, Menustrip. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type:MenuStrip
MonthCalendar.vee | 演示如何使用Windows Forms 控件, MonthCalendar. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: MonthCalendar
NumericUpDown.vee | 演示如何使用Windows Forms 控件, NumericUpDown. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: NumericUpDown
Panel.vee | 演示如何使用Windows Forms 控件, Panel. 以及如何使用創建合成控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: Panel and CheckBox
PictureBox.vee | 演示如何使用Windows Forms 控件, PictureBox. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: PictureBox
ProgressBar.vee | 演示如何使用Windows Forms 控件, ProgressBar. | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: ProgressBar
RadioButton.vee | 演示如何使用Windows Forms 控件, GroupBox 和 RadioButton，以及如何使用其它控件創建合成控件。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: GroupBox and RadioButton
RichTextBox.vee | 演示如何使用Windows Forms 控件, RichTextBox。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: RichTextBox
Splitter.vee | 演示如何使用Windows Forms 控件, Splitter, Panel, TreeView, 和 ListView。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: Splitter, Panel, TreeView, and ListView
StatusBar.vee | 演示如何使用Windows Forms 控件, StatusBar。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: StatusBar
TabControl.vee | 演示如何使用Windows Forms 控件, Tab Control，以及如何創建一個包含TabPage的合成控件。該TabPage則包含Button, CheckBoxes, 及 RadioButtons。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: TabControl, TabPage, Button, RadioButton, and CheckBox
TabPage.vee | 演示如何使用Windows Forms 控件, Tab Control，以及如何創建一個包含TabPage的合成控件。該TabPage則包含Button, CheckBoxes, 及 RadioButtons。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: TabControl, TabPage, Button, RadioButton, and CheckBox
TextBox.vee | 演示如何使用Windows Forms 控件, TextBox。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: TextBox
ToolStrip.vee | 演示如何使用Windows Forms 控件, ToolStrip。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Type: TooStrip
TrackBar.vee | 演示如何使用Windows Forms 控件, Label 和 TrackBar。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: Label and TrackBar
TreeView.vee | 演示如何使用Windows Forms 控件, TreeView 和 Label。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: TreeView and Label
VScrollBar.vee | 演示如何使用Windows Forms 控件, HScrollBar, VScrollBar, 和 Label。 | Assembly: System.Windows.Forms Namespace: System.Windows.Forms Types: HScrollBar, VScrollBar, and Label


ActiveX Controls范例

ActiveX 控件
examples\ActiveXControls

必須在程序正确運行前，在你的系統上安裝下面的ActiveX 控件。

1. ActiveMovie 控件

2. Microsoft Common Dialog 控件

3. ListView 控件

4. ProgressBar 控件

5. Microsoft RichTextBox 控件

另外，在VEE中使用ActiveX automation，需先安裝 Microsoft Office 2000 或之后的版本。

ActiveX Control 范例
 | 范例名稱 | 描述
1 | ActiveMovie.vee | 演示如何使用ActiveMovie控件現實一個電影文件。
2 | CommonDialog.vee | 演示如何象在Common Dialog ActiveX控件中一樣使用多個Windows通用對話框。
3 | ListView.vee | 演示由comctl32.ocx提供的ListView 控件的使用。
4 | ProgressBar.vee | 演示由comctl32.ocx提供的ProgressBar 控件的使用。
5 | RichTextBox.vee | 演示如何先將RTF文本放入RichTextBox控件，然后將該文本保存在VEE程序中以避免在在發布程序時，洙獨發布.rtf文件。

另請參閱

Releasing ActiveX References


Analysis 范例

Analysis
examples\Analysis

Analysis 范例
范例名稱 | 描述
AnalogFilter.vee | 演示如何顯示一個濾波器的轉換功能，和如何使用數組而不是循環。
curvefit.vee | 演示實現curve fitting的各种regression方法。
magDist.vee | 演示使用magDist()功能產生數据的點分布histogram。
mixer.vee | 演示如何︰ 使用 Virtual Source仿真信號。 從一個复雜的數据結構中獲得數据。
psk.vee | 演示如何使用非傳統的方法使用各种對象實現消息的編碼/解碼方案。
ReadMarkerValues.vee | 演示如何使用兩個UserFunctions設置XY Trace顯示的marker，然后再讀回該值。
setmap.vee | 演示如何使用 Data [image] UnBuild Data [image] Spectrum, PComplex, 和 Data [image] Access Array [image] Set Mappings從Spectrum 數据類型中提取有用的信息。
traj1.vee | 演示在一個計算軌道的程序中Detail視圖和Panel視圖的區別。
traj2.vee | 演示UserObjects的Show Panel on Execute模式并顯示所需的數据。
xfftfunc.vee | 用 ScaleFFT UserFunction在一個波形上實現FFT。


Electrical Applications
examples\Applications

Electrical Application 范例
范例名稱 | 描述
digfilt.vee | 演示如何︰ Unbuilding 和 building 時域波形。 創立一個第3序的橢圓數字濾波器。 自動進行時域到頻域的轉換。
telecomm.vee | 用已經保存的波形數据仿真一個DS1脈沖模板測試。無線電領域的一個通用方法是監視來自DS1測試設備的脈沖形狀。這個程序演示了如何自動將波形模和測量的 DS1脈沖匹配。
lissajou.vee | 演示如何使用X vs Y Plot對象的兩個輸入端產生 lissajous模式。
pid.vee | 閉環過程控制的一個簡單的PID(Proportional-Integral-Derivative)控制器。


Dynamic I/O Configuration

動態 I/O 配置
examples\InstrumentIO

動態 I/O 配置范例
范例名稱 | 描述
DynamicFindDMM.vee | 可以找到系統上的第一個數字示波器或所有DMM。
DynamicFindInstruments.vee | 找到系統上的所有GPIB和VXI儀器，返回它們的模型名稱和總線地址。 儀器必須是IEEE 488.2兼容和理解"IDN?"命令。
DynamicFindInterfaces.vee | 報告系統上的所有儀器接口的類型和邏輯單元號。
DynamicFindRemoteInstruments.vee | 找到遠程主机上所有可用的儀器。遠程主机必須安裝Agilent VEE才能用于遠程工作。
PreRunDeviceCheck.vee | 演示在VEE的pre-run階段的一些儀器配置檢查功能。


Excel Library
examples\ExcelLibrary

Excel Library范例
范例名称 | 说明
AddComment.vee | 演示怎样在单元格中添加备注。
AlphaColAndNumericCol.vee | 从1 - 256的同等数字输入中计算列名称。
BarChart.vee | 在Microsoft Excel中创建柱状图。
ColoredLimits.vee | 演示怎样根据极限值改变文本颜色。
CreateVbaMacro.vee | 创建和执行简单的VBA宏命令。
DataFromCells.vee | 在选择一个工作簿文件后，从文件中的某个范围读取和显示数据。
DataToCells2D.vee | 本范例把2D数据双程发送到Excel。
DataToCells3D.vee | 本范例把3D数据双程发送到Excel。数据自动发送到多个工作表中。
EnumerateCharts.vee | 显示工作簿中的图表名称。
EnumerateNames.vee | 显示工作表中的范围名称。
EnumerateSheets.vee | 显示给定工作簿中的工作表名称。
EvaluateCellFormula.vee | 检索单个单元格使用的计算值。
ExcelVisibleOnTop.vee | 演示在查看时怎样保证Excel一直位于顶部。
FindFirstEmptyRow.vee | 找到一系列行内的第一个空白项。
FormatCell.vee | 演示不同的单元格格式。
FormatCellsAllColors.vee | 所有单元格背景颜色都作为文本发送到Excel，使用该背景颜色格式化每个单元格。
FormatText.vee | 调置整个数据范围的字体。
FormatTextAllColors.vee | 把单元格中的所有文本格式化成给定的前景颜色。
IterateColumns.vee | 迭代通过一组列，先发送一个数据序列，然后再检测同一序列。
IterateRows.vee | 迭代通过一组行，先发送一个数据序列，然后再检测同一序列。
LineChart1D.vee | 在Excel中创建一个一维折线图。
LineChart2D.vee | 在Excel中创建一个二维折线图。
LineChart2DLogarithmic.vee | 在Excel中创建一个二维对数折线图。
Macro.vee | 演示在Excel工作簿中运行现有的宏命令。
MergeCells.vee | 描述怎样在Excel中把多个单元格合并在一起。
MultipleWorkbooks.vee | 把一个2D数组重复发送到Excel，以新建多个工作簿。
NavigateCells.vee | 从一个相对位置、然后再从一个绝对位置计算单元格地址。
NumericRowColFromCell.vee | 演示怎样把单元格地址转换成数字行和列输出。
OpenSaveAs.vee | 使用只读真值打开一个工作簿，把它保存为一个新名字。
PanelImage.vee | 说明怎样在Excel报告中包括VEE图表。
PieChart.vee | 在Excel中创建一个饼图。
Print.vee | 打印Excel工作簿文件。
PrintPreview.vee | 在打印预览模式下显示工作簿。
ReUsingCharts.vee | 说明怎样使用Excel的图表绘制功能和Excel Library的数据管理属性创建自定义图表。
SaveAsHTML.vee | 改变设置，以便能够另存为HTML文件。它还会把DisplayAlerts设置设为False，以便能够根据需要多次覆盖SaveAs文件。
SearchArray.vee | 搜索一个一维或二维数组。
SelectWorkbookAndEnumerations.vee | 以示意图方式说明怎样使用OpenWorkbook, SelectWorkbook和Enumerate工作簿。
SendColumnByColumn.vee | 按列把数据发送到Microsoft Excel中。
SendComplexData.vee | 提供一个解决方案，作为纵向Cartesian Complex数组发送Complex。
SendCoordData.vee | 为坐标数字创建一个纵向SendData。
SendPComplexData.vee | 为Polar Complex数字创建一个纵向SendData。
SendRecordData.vee | 把一个记录数组发送到一个工作簿中，其中第一个工作簿中预先定义的名称范围与记录数组中的字段名称相匹配。
SendSpectrumData.vee | 说明怎样拆除Spectrum数据类型，使用Start, Stop把它发送到Excel中。
SendWaveformData.vee | 说明怎样拆除波形数据类型，使用TimeSpan和Data采用特定排列把它发送到 Excel中，可以根据个人偏好修改排列方式。
SettingABorderOnARange.vee | 设置嵌入在另一个单元格范围内的某个单元格范围的边框。
StringReplace.vee | 某个字符串一定时，代替这个字符串内部的子字符串。可能要考虑大小写。
XYChart.vee | 在Excel中创建一个XY图。

另请参阅

释放ActiveX参考


Financial Applications
examples\Applications

Financial 范例
范例名稱 | 描述
simp_npv.vee | 演示如何在不影響報稅效果的情況下使用一個簡單的Net Present Value 模型進行財務計算。
payback.vee | 演示如何在影響報稅效果的情況下使用一個簡單的Net Present Value "Discounted Payback Period"模型進行財務計算。
futValue.vee | 演示VEE的財務計算能力,及如何通過圖形化的曲線展示未來總計值的增長。


Games

游戲
examples\Games

下面的范例都是完整的程序，它們演示了各种VEE的編程技巧。

Game 范例

范例名稱

Battleship

BlackJack

Euchre

MineSweeper

Movies

Race

Reversi

Slots

Solitaire

StraVEEgo

Wheel


集成在 Instrument Manager 中的范例
examples\InstrumentIO\InstrManagerIntegrated

集成在 Instrument Manager 中的范例
范例程序名 | 描述
Ag33220A_IVI-COM.vee | 下載一個預定義的信號到 33220A LXI 設備，并使用IVI-COM 驅動程序將它輸出。
Ag34410a_LXI.vee | 從局域网上的 Agilent 34410A 數字示波器中提取測試結果
Ag344xxa.vee | 從下列Agilent 數字万用表 (DMM)中提取測試結果︰34401A, 34405A, 34410A, or 34411A
Ag344xxa_Excel.vee | 從下列Agilent 數字万用表 (DMM)中提取五個測試結果︰ 34401A, 34405A, 34410A, or 34411A. 并將數据程序化地發送給 Excel。
Ag34980A_IVI-COM.vee | 從34980A 中提取配置信息和一些數据。
AgDSO3000.vee | 使用 DSO3000 系列示波器和 VEE Pro 的 Direct IO 功能測量一個波形的參數。
AgDSO603xMSO603x.vee | 從Agilent 6000-series DSO 或 MSO 示波器中提取模擬數据并在 VEE 的數据顯示對象中顯示。
AgDSO603xMSO603x_MATLAB1.vee | 使用 VEE 中嵌入的 MATLAB 功能計算通道1和通道2之間的互相關，并顯示結果。
AgDSO603xMSO603x_MATLAB2.vee | 使用 MATLAB 的 exp() 和 abs() 函數及繪圖功能。
AgDSO603xMSO603x_MATLAB3.vee | 使用 VEE 中嵌入的 MATLAB 功能，使用 Butterworth 濾波對模擬通道1進行濾波并顯示計算結果。
AgE4980a_directIO.vee | 使用 E4980A LCR 表測量電容和損耗因數。
AgN1996a.vee | 從Agilent CSA 頻譜分析儀中提取測量結果。
AgN19XXA.vee | 配置并控制 N19XXA 電壓表從儀器向 PC 傳輸數据。
AgN57xx_directIO.vee | 設置輸出并使用 Direct IO 并從模塊化電源 N5700B 中提取數据。
AgN57xx_IVI_COM.vee | 演示如何在 VEE8.0 中使用 IVI-COM 驅動程序。
AgN67xx_IVI_COM.vee | 使用 VEE 和 IVI COM 驅動程序設置輸出，并從模塊化電源 N6700B 中提取數据。
Ag87xxEx.vee | 控制 87XXET/ES 以從它提取測量數据。
Ag87xx-VNA.vee | 在 VNA 中設置多條軌跡, 掃描，下載和顯示數据。
Ag332x0a1.vee | 下載一個預定義的信號到一個發生器并輸出。
Ag332x0a2.vee | 從發生器中輸出一個被調制的 AM 信號。
Ag661xc-Ag663xb.vee | 程序輸出，測量輸出條件和計算輸出電壓。
Ag681x.vee | 進行一個Inrush電流測量
Ag811xx-AgE831x.vee | 配置脈沖，模式和猝發模式。
Ag5313xa1.vee | 測量通道1的頻率并提取數据。
Ag 5313xa2.vee | 測量通道1的頻率并進行數据記錄。
Ag34970a.vee | 确認幀中的卡并繪制數据。
AgE36xx.vee | 設置電壓，記錄電流，并保存到 Excel 文件中。
AgE44xx.vee | 設置中心頻率和span, 查看軌跡并保存到 Excel 文件中。
AgE44xxCdma2000.vee | 測量 CDMA2000 上已占用的帶寬并保存到 Excel 中。
AgE50xxx-ENA1.vee | 在 ENA 中設置多條軌跡,并掃描，下載和顯示數据。
AgE50xxx-ENA2.vee | 使用 ECal 模塊設置和校準 2-Port S-Parameter
AgE82xx.vee | 使用 ECal 模塊設置和校準 2-Port S-Parameter
AgE83xxx-AgN52xxx-AgE880xx-Agn338xx-PNA1.vee | 在 PNA 中設置多條軌跡,并掃描，下載和顯示數据。
AgE83xxx-AgN52xxx-AgE880xx-Agn338xx-PNA2.vee | 使用 ECal 模塊設置和校準 2-Port S-Parameter
AgE443xb.vee | 頻率掃描，并在掃描結束時發送 SRQ 。
AgE443xb_Excel.vee | 頻率掃描，并在掃描結束時發送 SRQ 并保存到 Excel 中。
AgE4438c-AgE8267x.vee | 下載波形到任意波形發生器，并保存到 Excel 中。
AgE4438c-Ag8267x_Excel.vee | 下載波形到任意波形發生器，并保存到 Excel 中。
AgInfiniiumScopeAdvanced1.vee | 顯示 MATLAB 互相關。
AgInfiniiumScopeAdvanced2.vee | 顯示 Butterworth 濾波。
AgInfiniiumScopeAnalog.vee | 顯示模擬波形和參數。
AgInfiniiumScopeDigital.vee | 顯示數字波形和參數。
AgN33xxa.vee | 程序輸入，測量輸入條件以及條形圖表。
AgN4901b.vee | 自動對齊和執行 BER 讀
AgN6700b.vee | 程序輸出，測量輸出條件， 和條形圖表輸出
Hp33120a.vee | 設置波形形狀，峰值大小和頻率。
Hp34401a.vee | 從 34401A 中提取數据。
Hp34401a_Excel.vee | 從 34401A 中提取數据并發送到 Excel


Instrument I/O

儀器測量范例
examples\InstrumentIO

儀器測量范例
Example Name | Description
4195imp.vee | Measures the impedance characteristics of a chip type component.
4195net.vee | Is a setup to study the transmission frequency response of a bandpass filter.
4195s11.vee | Measures the Return Loss of a device under test.
4195s12.vee | Measures the Reverse Transmission Coefficients of a device under test.
4195s21.vee | Measures the Forward Transmission Coefficients of a device under test.
4195s22.vee | Measures the Reverse Reflection Coefficients of a device under test.
4195spec.vee | Studies the Harmonic Distortion of a frequency signal with the following parameters: Sweep Start frequency: 5 MHz Sweep Stop frequency: 105 MHz R1 input attenuation: 40 dB S1 source amplitude: -15 dB
4338_ext.vee | Shows how to control the HP 4338A external trigger, and use the instrument drivers sequence output to perform an SRQ and SPOLL, then log readings from the HP 4338A component driver.
8720cal.vee | Shows how the calibration data for an HP 8720C can be stored in a file after the calibration and later on it can be retrieved from the file to dump the cal data to the instrument.
8720lims.vee | Shows the limit segments editing using the HP 8720C and performs the limit line testing on the measured characteristics of the test device.
8720smp1.vee | Performs a phase measurement to study the deviation from linear phase.
8720smp2.vee | Performs phase measurement using an HP 8720C, and the phase value is detected for the selected stimulus frequency. In the second state, Z:Transmission characteristics measurement is done.
8753lims.vee | Shows the limit segments editing using the HP 8753C and performs the limit line testing on the measured characteristics of the test device.
BpTr_STR.vee | Demonstrates stress measurement on a bipolar transistor.
DIOFreq.vee | Finds the frequency response of the HP 3478 multimeter using Direct I/O objects. Needs a HP 3325B function generator and a HP 3478 multimeter.
enum_id.vee | Shows how to use a Selection Control object (Enum) to generate an input for an ID device that uses numbers to select internal states.
hpe1326.vee | Takes readings from the HP E1326. After a delay to take the readings, the readings are uploaded to a file.
hpe1413.vee | Uploads HP E1413 data to a file and then displays the data.
hpe1488a.vee | Takes readings on the HP E1431A, transfers them over the local bus to the HP E1488A, then reads the data over the GPIB to display it on a Waveform display.
hpe1562.vee | Readings are taken on the HP E1413 and transferred directly to the HP E1562 from the HP E1413 FIFO via the VME backplane. Then the readings are read from the HP E1562 and sent by Local Bus to the HP E1488A.
gpibtest.vee | This utility allows you to perform simple GPIB transactions with an instrument.
IC_IB_VB.vee | Displays the hFE values corresponding to IC>1mA and IC<4mA. This is a good example of transistor characteristics and hFE calculation based on the above results.
IC_VCE.vee | Is an example of IC vs VCE characteristics of bipolar transistor.
ID_VDS1.vee | Is a good example of ID-VGS characteristics of MOSFET. It also gives information about Vth@ID=10mA and Vth@MAX(Gm)
ID_VDS2.vee | Is an example of ID vs VGS of MOSFET.
IDfreq.vee | Finds the frequency response of the HP 3478 multimeter using HP Instrument Drivers(HP-ID). Needs a HP 3325B function generator and a HP 3478 multimeter.
cap4291.vee | Can be used for studying: Frequency characteristics of impedance OSC level characteristics of capacitance and dissipation factor Frequency characteristics of capacitance and dissipation factor DC bias voltage characteristics of capacitance and dissipation factor
imp4291.vee | Does Resistance and Reactance Measurement over the frequency sweep from 1000KHz to 1800 MHz.
instr.vee | Shows three methods in VEE for programming instruments.
k2000.vee | Tests the operation of the Keithley 2000 Digital Multimeter.
k2000_dc.vee | Is an example using the Keithley 2000 voltmeter. 100 DCV readings are taken and shown on an XY Trace.
k2001.vee | Tests the operation of the Keithley 2001 Digital Multimeter.
k2001_dc.vee | Sets up the Keithley 2001 to take DC readings using the .01 NPLC Aperture. 100 readings are taken and averaged. Both the average and a plot of the values are shown.
logger1.vee | Shows how to construct a simple multi-channel data logger.
logger2.vee | Shows a data logger that saves measurement data to a file.
loss4291.vee | Can be used for measuring frequency characteristics of relative Permittivity. Channel 1 measures Permittivity real(Er') and channel 2 measures Loss tangent(tan delta).
perm1_91.vee | Is a program for the HP 4291A that measures permeability real for channel 1 measures permeability loss factor for channel 2.
perm2_91.vee | Is used for measuring: Frequency characteristics of relative Permeability OSC level characteristics of relative Permeability DC bias current characteristics of relative Permeability
prmtty_91.vee | Is a program for the HP 4291A that measures permittivity real for channel 1 measures permittivity loss factor for channel 2.
rd126014.vee | Writes the data of "Data Buffer" to port 1 of the Racal Dana 1260-14 and reads it from port 0.
scopeMask.vee | Displays a DS1 mask in the waveform memories of an HP 54502 or HP 54504 oscilloscope. This demonstrates the concept of creating a mask in a scope's waveform memories. Although it builds something that looks like a DS1 mask, the data from which the mask is built does not conform to any standard.
smallsig.vee | Measures small signal gain. This measurement is useful for the study of characteristics of active devices like amplifiers in the linear operating region. This program doesn't include the calibration measurement.
Vdownld.vee | Downloads drivers to the VXI Command Module.


IVI 驅動程序范例

AgilentPowerMeterAverages_VEE7.vee

AgilentPowerMeterCalAndZero_VEE7.vee

AgilentSA_VEE7.vee

AgilentSA.vee

Agilent33220.vee


Manufacturing Applications
examples\Applications

Manufacturing 范例

范例名稱

描述

mfgtest.vee

介紹一些你也許覺得在創建制造類測試系統是有用的VEE功能。下面是一些被著重介紹的VEE功能:

對話框:
該范例使用了多個不同類型的對話框。"login" 函數使用的最多了。可以在Data [image] Dialog Box 菜洙找到它們。

鍵盤控制:
通過 Tab 鍵, space 鍵, 和 Enter 鍵，可以完全這個控制程序。另外，還有一個用戶對話框，可以讓你使用功能鍵導航。

指示器:
可以使用各种顯示對象，比如 Color Alarm 和 Thermometer, 來指示測試是否成功或失敗。 指示器可以在Display [image] Indicator  菜洙中找到。

圖片對象:
這些對象可以用于在可縮放的對象中顯示圖像。我們已將它用于顯示一個測試連接圖。它可以接受的圖形文件包括︰Graphics Interchange Format (GIF), Bitmap (BMP), 和 X Window Dump (XWD) 格式。這個對象位于 Display 菜洙中。

Sequencer 狀態面板:
一個面板視圖可以動態顯示或隱藏的通用函數。使用它，可以讓 Sequencer 的外觀在運行時動態地改變。

Sequencer:
Sequencer 有一個叫 ExecTrans 的數据輸入端， 它接收要執行的測試名的數組。使用一個多選列表框(一种 Dialog Box 對象), 可以讓使用程序的用戶動態地選擇 Sequencer 將要執行的測試。


MATLAB

MATLAB脚本
examples\MATLAB

MATLAB脚本范例
范例名称 | 说明
BasicGraphManipulation.vee | 显示某些基本图形和绘图操作
FindMaximums.vee | 显示怎样定位和高亮度显示图形峰值
Interpolation.vee | 显示MATLAB Interpl 1D数据插补函数
Logo3DPlot.vee | 绘制有吸引力的三维阴影表面图
MultiGraphFigure.vee | 显示怎样创建和显示子图
MultiTraceGraph.vee | 显示怎样绘制和涂色多个图形轨迹
Plot2DArray.vee | 显示怎样从VEE中绘制二维数组数据图
SignalProcessing.vee | 介绍MATLAB广泛的信号处理功能
Surf3DPlot.vee | 显示怎样创建和旋转MATLAB 3D阴影表面图


Mechanical 范例
examples\Applications

Mechanical 范例
范例名 | 描述
beam.vee | 這個程序使用 XY Trace 顯示一束波在統一，傾斜和組合負載狀態下的偏移。
chaos.vee | 顯示了一個簡單的人口模型的穩定狀態值。
coilspr.vee | 演示了使用一系列的變參計算一個螺旋彈簧的自然頻率。
convcoef.vee | 演示了在 VEE 中使用 Natural Convection Heat Transfer Model 為多個体或面計算熱交換系數 "h"。
fluidflw.vee | 演示了一個簡單的机械工程問題的創建和解決方案。同時還演示了數据輸入，顯示的方法，以及如何使用數組和全局變量計算公式。
torsion1.vee | 演示了一個簡單的机械工程問題的創建和解決方案。同時還演示了數据輸入，顯示的方法，以及如何使用計算公式。 這個程序使用一個簡單的公式計算一個圓形扭轉軸的角度偏轉，已知扭轉軸的直徑，長度，應用的轉力矩，和材料的剪切彈性模數值。
torsion2.vee | 演示了一個簡單的机械工程問題的創建和解決方案。同時還演示了數据輸入，顯示的方法，以及如何使用計算公式。 這個程序使用一個簡單的公式計算一個圓形扭轉軸的角度偏轉，已知扭轉軸的直徑，長度，應用的轉力矩，和材料的剪切彈性模數值。


Microsoft Access
examples\ActiveXAutomation

必須先安裝Microsoft Access 以及下述程序引用的ActiveX automation 類型庫，下述程序才能正常運行。

Microsoft Access 交互操作范例
范例名稱 | 描述
AccessDataClient.vee | 打開Access保存測試數据，然后VEE把數据記錄到數据庫文件testData.mdb中，最后再讀該文件。
AccessEnumerate.vee | 打開以testData.mdb命名的DAO 3.6 (ACCESS)數据庫，然后顯示數据庫中所有的表和resultsTable中的所有域。 演示DAO已安裝時，如何打開數据庫和記錄，使用count和name屬性等. 注意DAO engine 創建了多個"MSys"表。

另請參閱

釋放 ActiveX References


Microsoft Excel
examples\ActiveXAutomation

必須先安裝Microsoft Excel以及下述程序引用的ActiveX automation 類型庫，下述程序才能正常運行。

Microsoft Excel 交互操作范例
范例名稱 | 描述
ExcelInsertData.exe | 使用Excel 和 ActiveX automation一次向工作表中的一個單元插入隨机數。然后用 Excel的 Average 函數計算插入Excel中的數据的平均值。
ExcelInsertArrayData.vee | 使用Excel和ActiveX Automation在一次操作中向工作表中插入一個隨机數的數組。然后使用Excel的StDev函數計算所有插入Excel中的數据的偏差。
ExcelGraph.vee | 使用Excel 和 ActiveX automation向工作表中插入數据。然后讓Excel畫一個新的且格式正确的圖表。
ExcelUFunction.vee | 使用Excel 和 ActiveX automation一次向工作表中的一個單元插入隨机數。然后用 Excel的 Average 函數計算插入Excel中的數据的平均值。
ExcelWeather.vee | 使用Excel 和 ActiveX automation計算天气報告。

從Excel調用VEE

SpreadsheetApp.xls 是一個可以調用lib.vee中的VEE函數的Excel文件。它的一個功能是根据從一個文件讀回的數据來生成一個脈沖；另一個功能是在測試限制內顯示這個脈沖。使用Windows Explorer，雙擊文件可以打開范例程序:

<VEE_install_dir>\examples\CallableVEE\Excel\SpreadsheetApp.xls

另請參閱

釋放ActiveX References


Microsoft Outlook
examples\ActiveXAutomation

必須先安裝Microsoft Outlook以及下述程序引用的ActiveX automation 類型庫，下述程序才能正常運行。

Microsoft Outlook范例
范例名稱 | 描述
Outlook.vee | 使用VEE 的 ActiveX Automation 功能和Microsoft Outlook發送電子郵件。

另請參閱

釋放 ActiveX References


Microsoft Word
examples\ActiveXAutomation

必須先安裝Microsoft Word以及下述程序引用的ActiveX automation 類型庫，下述程序才能正常運行。

ActiveX Automation 范例
范例名稱 | 描述
Word.vee | 使用Word and ActiveX Automation把測試數据和VEE UserFunction的位圖插入一個Word文檔。
WordDataSheet.vee | 在一個用作單頁的數据表模板的Word文檔中執行ActiveX Automation查找和替換。
WordMailMerge.vee | 使用ActiveX Automation在一個名為mmerge.doc的Word的文檔中執行郵件合并操作，使用的數据庫文件為 mmerger.mdb。

另請參閱

釋放 ActiveX References


Callable VEE

舊的 VEE RPC API
examples\CallableVEE\Rpc_api

舊的 VEE RPC 范例
范例名稱 | 描述
lib.vee | 一個包含多個可調用的函數的VEE庫，還包括DS1脈沖測試功能。

DS1 脈沖測試

CallVEE.c 是一個 C 原碼文件，它調用lib.vee中的兩個VEE函數. 一個根据從文件中讀回的數据合成一個脈沖，另一個顯示測試范圍內的脈沖。

Callable VEE ActiveX Automation Server 可以用于調用VEE 6.0及其后續版本。然而，最初的 C API仍然可以使用。如果你使用K&R C (而非 C++)你可以選用舊的方法。

請使用Windows Explorer并雙擊文件來打開文件:

<VEE_install_dir>\examples\CallableVEE\Rpc_api\CallVEE.c


Multiple Traces 范例

范例名稱

描述

2dXyTrace.vee

演示如何在圖形對象上，只通過一個輸入端現實多個軌跡。

MatrixInputStripChart.vee

隨机產生四個從-100 到100 之間的 Real64數据并把它們顯示在一個Strip Chart對象上。


程序屬性范例

范例名稱

說明

ProgrammaticPropertyDemo.vee

演示怎樣以程序化方式GET/SET屬性

DemoTabIndexChangeDemo.vee

演示怎樣以程序化方式在面板視圖中改變對象的TableIndex。

SelectionControlPropertiesDemo.vee

演示怎樣以程序化方式改變EnableEditing, EnumIndex, EnumValue, EnumValues for Selection控制功能


Lib

VEE 庫范例
examples\Lib

在 VEE 的安裝目錄下有一個\lib 目錄。可以將這里的函數或對象用于你的 VEE 程序。可以用 File [image] Merge 導入這些對象到你的程序中。下面的范例程序演示了這些對象時如何被用于一個完整的程序中的。

庫范例
范例名稱 | 描述
1dto2d.vee | 演示了使用 Formula 對象和 Array 根据一個數組大小固定的大的一維數組創建一個二維數組。
2dto1d.vee | 演示了使用 MatToAry.vee 庫對象將一個多維的數組展開為一個一維的數組。
barcht1.vee | 演示了使用 BarChart.vee 庫對象顯示數組數据。
barcht2.vee | 演示了使用 BarPF.vee 庫對象將一個數組的每個元素与某個定值比較并顯示數組的數据。
barcht3.vee | 演示使用 BarStack.vee 庫對象同時顯示兩個數組的數据。
barcht4.vee | 演示了使用 BarComp.vee 庫對象同時顯示兩個數組的數据。
dialog.vee | 演示了使用 dialog 庫對象在程序的一個指定點請求用戶輸入。這個程序可以作為更复雜的對話框程序的起點。對于簡單的對話框，可以使用 VEE 自帶的 Dialog Box 對象。
keypad.vee | 演示了如何使用 keypad.vee。
maparray.vee | 演示了使用 mapArray.vee 庫對象創建一個數字數組，它的成員与Spectrum or Waveform 輸入的每個元素相對應。
multiplex.vee | 演示了如何把 Formula 對象用作一個 Multiplexer 對象。
pathsep.vee | 演示了使用 pathSep.vee 庫對象格式化 DOS 和 posix 路徑名中的路徑分隔符。
piechart.vee | 演示了如何使用 PieChart.vee 庫對象顯示一個數組的數据。
rmfile.vee | 演示了如何使用 rmfile.vee 庫對象
SMTPMail.vee | 一個庫對象，它演示了如何使用 To/From Socket 對象實現只能用于發送的Simple Mail Transfer Protocol (SMTP) 功能。
xy_cntrl.vee | 演示了如何使用Record Constant 對象，Traces Control 和 Scales Control 調整 XY Trace 的軌跡和比例。這些控件都位于 XY_cntrl.vee 庫對象中。如只需控制一個比例或軌跡，請打開 Traces Control 或 Scales Control 的 Properties 對話框，將 Array Size 設為 0。


Concepts

VEE 編程概念
examples\Concepts

VEE 編程范例
范例名稱 | 描述
AdvancedDialog.vee | 演示如何創建一個對話框來獲取初始參數和有效的用戶輸入，并返回用戶輸入的信息。
alternateToIfThenElse.vee | 演示了如何使用 demultiplexer 對象和junction 對象Shows 化簡复雜的 if/then 結構。
ascii.vee | 演示了如何把一個鍵盤字符轉換為 ASCII 碼，以及如何把一個 ASCII 碼轉換為鍵盤字符。
convert.vee | 演示了 VEE 對不同類型的數据的處理。包括 DECIMAL, HEXADECIMAL, OCTAL, 和 BINARY。
complex.vee | 演示了如何產生，添加，處理和顯示 Complex 和 Polar Complex 數据。
datacomp.vee | 通過查找變化來對新數据進行壓縮，只用時戳來記錄變化
feedback.vee | 演示了反饋，及如何用它來實現一個簡單的one-pole IIR 數字濾波。
fib.vee | 演示使用反饋來計算一個等式，比如 Fibonacci 數列︰ a(n) = a(n-1) + a(n-2).
holdBackAndDelay.vee | 演示如何使用 Gate 和 Delay 對象控制程序流。
if.vee | 演示如何用 If/Then/Else 對象輸出一個值。
ifThenExpressions.vee | 演示如何使用三操作數表達式。
infoAbout.vee | 描述了用于多個程序范例的彈出的幫助對象。
integrate.vee | 演示了如何使用對話框中輸入的上下限來計算積分，并圖形化地顯示積分的結果。
iterateColumnOrRow.vee | 演示如何按行或列來循環一個數組。
iterateOneDim.vee | 演示如何使用 For Each 對象來循環一個一維數組。
iterateRecordFields.vee | 演示了如何按一個記錄標量的域來循環整個記錄。其中使用了 For Each 對象。
iterateTwoDim.vee | 演示如何使用 For Each 對象來循環一個二維數組。
layout1.vee | 演示了如何布局一個 VEE 程序，使用了從左到右的數据流來幫助提高程序的可讀性。
layout2.vee | 演示了在一個程序中使用對齊和改變大小的對象的效果。
loop.vee | 產生一系列的1到10的隨机整數，并找到它們中有多少的和小于或等于100。
magphase.vee | 演示了一個從時域波形現實 Magnitude 和 Phase vs. Frequency 的簡單方法。注意其中的 Mag/Phase Display 是一個 UserObject，而不是一個提供的顯示對象。
nestedRecord.vee | 演示了 Build Record 對象的嵌套能力。
oneshot.vee | 演示了用 Toggle Button 創建 One-Shot Button 的方法。
opt1.vee | 使用 Parallel Math 操作數組。
opt2.vee | 從一個文件讀取一個兩維數組。
opt3.vee | 比較位于不同分支的計算表達式的 Formula 對象如何影響 Sieve 的速度。
redim.vee | 演示如何改變數組的維數。
scattrgm.vee | 演示了使用 X vs Y 顯示對象繪制散布圖的方法。
strings.vee | 演示如何使用內置于 Function & Object Browser 中的字符串函數。
subrecord.vee | 演示如何將子記錄作為記錄來處理。
text1.vee | 演示了多种組合字符串的方法。
timetick.vee | 使用 On Cycle 對象 (on Flow [image] Repeat 菜單) 創建一個時鐘。
tofrom1.vee | 演示了一种在程序連續執行時保存數据的方法，即在讀取或將之前修改的數据寫入同一文件后，再寫入最新的數据。
tofrom2.vee | 演示了如何在一個線程入文件時，另一個線程仍以它的速度讀取和處理數据。
tofrom3.vee | 演示了如何同時使用 Selection Control 對象，比如 Radio Buttons ( Data [image] Selection Control 菜單), 和 WRITE CASE I/O 事務。使用這個技朮映射易于理解的字符串到相應的輸出字符串。
tofrom4.vee | 演示了如何使用事務 I/O 寫 VEE 的波形。該程序用涉及到了有關數据類型轉換和事務 I/O 的概念。To String 對象用于方便地查看結果。也可以用 To String 來代替 To File 對象。
tr_ctrl.vee | 演示如何使用 Strip Chart 顯示對象的 Traces 控制輸入端。該控制端根据數据的值把線的顏色由綠改為紅。
truefals.vee | 演示了三种把一個數字轉變為 TRUE 和 FALSE 字符串的方法。
UserFunctions.vee | 演示如何調用 UserFunction，以及如何在整個程序中使用它而不對它進行修改。
whichos.vee | 演示如何使用 whichOS() 和 whichPlatform() 函數獲得計算机的操作系統和平台信息。
wizbang.vee | 演示了 Alarms, Indicators, 的 Controls 使用。
zerofill.vee | 演示了各种通過補零來將一個數組延伸到指定長度的方法。演示了在 Formula 對象中使用數學函數，及使用 Allocate Array 和 ramp 創建固定的數組。


Visual Basic
examples\CallableVEE\VisualBasic

DS1 脈沖測試

CallVEE.vbp 是一個Visual Basic項目。它調用lib.vee中的兩個VEE函數。一個根据從文件中讀回的數据合成一個脈沖。另一個在測試范圍內顯示這個脈沖。如果你的系統已經安裝了Visual Basic，就可以在Windows Explorer中雙擊文件打開一個范例程序。

<VEE_install_dir>\examples\CallableVEE\VisualBasic\CallVEE.vbp


Visual Basic Script

VB Script
examples\CallableVEE\VBScript

如果已經安裝了Microsoft VB Script， 就可以在Windows Explorer中雙擊文件來運行范例程序了。

DS1 脈沖測試

CallVEE.vbp 是一個Visual Basic項目。它調用lib.vee中的兩個VEE函數。一個根据從文件中讀回的數据合成一個脈沖。另一個在測試范圍內顯示這個脈沖。

<VEE_install_dir>\examples\CallableVEE\VBScript\CallVEE.vbs

獲得VEE服務器信息

GetServerInfo.vbs 是一個VB Script文件。它返回有關已注冊的可調用的VEE服務器的信息，比如，主机使用的I/O配置文件。

<VEE_install_dir>\examples\CallableVEE\VBScript\GetServerInfo.vbs

創建并顯示一個波型

GetWaveform.vbs是一個VB Script文件。它使用VEE的特有的數据類型。 它演示了如何創建，傳遞和返回波形數据。

<VEE_install_dir>\examples\CallableVEE\VBScript\GetWaveform.vbs

查找和導入VEE庫

UsingInstallDir.vbs 是一個VB Script文件。它會發現VEE的安裝目錄，然后相對与那個目錄裝入和調用一個VEE庫。

<VEE_install_dir>\examples\CallableVEE\VBScript\UsingInstallDir.vbs


Visual C++
examples\CallableVEE\VisualC++

DS1 脈沖測試

CallVEE.vbp 是一個Visual C++文件。它調用lib.vee中的兩個VEE函數。一個根据從文件中讀回的數据合成一個脈沖。另一個在測試范圍內顯示這個脈沖。如果你的系統已經安裝了Visual C++，就可以在Windows Explorer中雙擊文件打開一個范例程序。

<VEE_install_dir>\examples\CallableVEE\VisualC++\CallVEE.cpp


ASCII Table

ASCII表

下表列出了ASCII 7位字符代码：

 | 二进制 | 八进制 | 十六进制 | 十进制 | GPIB消息
NUL | 0000000 | 000 | 00 | 0 |
SOH | 0000001 | 001 | 01 | 1 | GTL
STX | 0000010 | 002 | 02 | 2 |
ETX | 0000011 | 003 | 03 | 3 |
EOT | 0000100 | 004 | O4 | 4 | SDC
ENQ | 0000101 | 005 | 05 | 5 | PPC
ACK | 0000110 | 006 | 06 | 6 |
BEL | 0000111 | 007 | 07 | 7 |
BS | 0001000 | 010 | 08 | 8 | GET
HT | 0001001 | 011 | 09 | 9 | TCT
LF | 0001010 | 012 | 0A | 10 |
VT | 0001011 | 013 | 0B | 11 |
FF | 0001100 | 014 | 0C | 12 |
CR | 0001101 | 015 | 0D | 13 |
SO | 0001110 | 016 | 0E | 14 |
SI | 0001111 | 017 | OF | 15 |
DLE | 0010000 | 020 | 10 | 16 |
DC1 | 0010001 | 021 | 11 | 17 | LLO
DC2 | 0010010 | 022 | 12 | 18 |
DC3 | 0010011 | 023 | 13 | 19 |
DC4 | 0010100 | 024 | 14 | 20 | DCL
NAK | 0010101 | 025 | 15 | 21 | PPU
SYN | 0010110 | 026 | 16 | 22 |
ETB | 0010111 | 027 | 17 | 23 |
CAN | 0011000 | 030 | 18 | 24 | SPE
EM | 0011001 | 031 | 19 | 25 | SPD
SUB | 0011010 | 032 | 1A | 26 |
ESC | 0011011 | 033 | 1B | 27 |
FS | 0011100 | 034 | 1C | 28 |
GS | 0011101 | 035 | 1D | 29 |
RS | 0011110 | 036 | 1E | 30 |
US | 0011111 | 037 | 1F | 31 |
SPACE | 0100000 | 040 | 20 | 32 | listen 0
! | 0100001 | 041 | 21 | 33 | listen 1
" | 0100010 | 042 | 22 | 34 | listen 2
# | 0100011 | 043 | 23 | 35 | listen 3
$ | 0100100 | 044 | 24 | 36 | listen 4
% | 0100101 | 045 | 25 | 37 | listen 5
& | 0100110 | 046 | 26 | 38 | listen 6
" | 0100111 | 047 | 27 | 39 | listen 7
( | 0101000 | 050 | 28 | 40 | listen 8
) | 0101001 | 051 | 29 | 41 | listen 9
* | 0101010 | 052 | 2A | 42 | listen 10
+ | 0101011 | 053 | 2B | 43 | listen 11
, | 0101100 | 054 | 2C | 44 | listen 12
- | 0101101 | 055 | 2D | 45 | listen 13
. | 0101110 | 056 | 2E | 46 | listen 14
/ | 0101111 | 057 | 2F | 47 | listen 15
0 | 0110000 | 060 | 30 | 48 | listen 16
1 | 0110001 | 061 | 31 | 49 | listen 17
2 | 0110010 | 062 | 32 | 50 | listen 18
3 | 0110011 | 063 | 33 | 51 | listen 19
4 | 0110100 | 064 | 34 | 52 | listen 20
5 | 0110101 | 065 | 35 | 53 | listen 21
6 | 0110110 | 066 | 36 | 54 | listen 22
7 | 0110111 | 067 | 37 | 55 | listen 23
8 | 0111000 | 070 | 38 | 56 | listen 24
9 | 0111001 | 071 | 39 | 57 | listen 25
: | 0111010 | 072 | 3A | 58 | listen 26
; | 0111011 | 073 | 3B | 59 | listen 27
< | 0111100 | 074 | 3C | 60 | listen 28
= | 0111101 | 075 | 3D | 61 | listen 29
> | 0111110 | 076 | 3E | 62 | listen 30
? | 0111111 | 077 | 3F | 63 | UNL
@ | 1000000 | 100 | 40 | 64 | talk 0
A | 1000001 | 101 | 41 | 65 | talk 1
B | 1000010 | 102 | 42 | 66 | talk 2
C | 1000011 | 103 | 43 | 67 | talk 3
D | 1000100 | 104 | 44 | 68 | talk 4
E | 1000101 | 105 | 45 | 69 | talk 5
F | 1000110 | 106 | 46 | 70 | talk 6
G | 1000111 | 107 | 47 | 71 | talk 7
H | 1001000 | 110 | 48 | 72 | talk 8
I | 1001001 | 111 | 49 | 73 | talk 9
J | 1001010 | 112 | 4A | 74 | talk 10
K | 1001011 | 113 | 4B | 75 | talk 11
L | 1001100 | 114 | 4C | 76 | talk 12
M | 1001101 | 115 | 4D | 77 | talk 13
N | 1001110 | 116 | 4E | 78 | talk 14
O | 1001111 | 117 | 4F | 79 | talk 15
P | 1010000 | 120 | 50 | 80 | talk 16
Q | 1010001 | 121 | 51 | 81 | talk 17
R | 1010010 | 122 | 52 | 82 | talk 18
S | 1010011 | 123 | 53 | 83 | talk 19
T | 1010100 | 124 | 54 | 84 | talk 20
U | 1010101 | 125 | 55 | 85 | talk 21
V | 1010110 | 126 | 56 | 86 | talk 22
W | 1010111 | 127 | 57 | 87 | talk 23
X | 1011000 | 130 | 58 | 88 | talk 24
Y | 1011001 | 131 | 59 | 89 | talk 25
Z | 1011010 | 132 | 5A | 90 | talk 26
[ | 1011011 | 133 | 5B | 91 | talk 27
\ | 1011100 | 134 | 5C | 92 | talk 28
] | 1011101 | 135 | 5D | 93 | talk 29
^ | 1011110 | 136 | 5E | 94 | talk 30
_ | 1011111 | 137 | 5F | 95 | UNT
` | 1100000 | 140 | 60 | 96 | second 0
a | 1100001 | 141 | 61 | 97 | second 1
b | 1100010 | 142 | 62 | 98 | second 2
c | 1100011 | 143 | 63 | 99 | second 3
d | 1100100 | 144 | 64 | 100 | second 4
e | 1100101 | 145 | 65 | 101 | second 5
f | 1100110 | 146 | 66 | 102 | second 6
g | 1100111 | 147 | 67 | 103 | second 7
h | 1101000 | 150 | 68 | 104 | second 8
i | 1101001 | 151 | 69 | 105 | second 9
j | 1101010 | 152 | 6A | 106 | second 10
k | 1101011 | 153 | 6B | 107 | second 11
l | 1101100 | 154 | 6C | 108 | second 12
m | 1101101 | 155 | 6D | 109 | second 13
n | 1101110 | 156 | 6E | 110 | second 14
o | 1101111 | 157 | 6F | 111 | second 15
p | 1110000 | 160 | 70 | 112 | second 16
q | 1110001 | 161 | 71 | 113 | second 17
r | 1110010 | 162 | 72 | 114 | second 18
s | 1110011 | 163 | 73 | 115 | second 19
t | 1110100 | 164 | 74 | 116 | second 20
u | 1110101 | 165 | 75 | 117 | second 21
v | 1110110 | 166 | 76 | 118 | second 22
w | 1110111 | 167 | 77 | 119 | second 23
x | 1111000 | 170 | 78 | 120 | second 24
y | 1111001 | 171 | 79 | 121 | second 25
z | 1111010 | 172 | 7A | 122 | second 26
{ | 1111011 | 173 | 7B | 123 | second 27
| | 1111100 | 174 | 7C | 124 | second 28
} | 1111101 | 175 | 7D | 125 | second 29
~ | 1111110 | 176 | 7E | 126 | second 30
[del] | 1111111 | 177 | 7F | 127 |


Error Codes

錯誤編碼

從下面的表中可以根据出現錯誤時給出的錯誤代碼查找相應的錯誤信息。

錯誤代碼 | 描述
對象 |
300 | 輸入端數字<n>錯誤
301 | 輸入 <n> 沒有出現 (有效范圍 = [<n>..<n>])
302 | 不允許有額外輸入 -- 上限為<n>
303 | 輸入必須為 <type>
304 | 輸入不能為 <type>
305 | 輸入不匹配︰ <name >, <name >
306 | 沒有所需的輸入 <name >
308 | 沒有所需的輸出 <name >
309 | 輸出不匹配︰<name >, <name >
310 | 沒有輸出 <n> (有效范圍 = [<n>..<n>])
311 | 不允許有額外輸出 -- 上限為<n>
312 | 沒有選擇 <type>
313 | 不支持<operation>
314 | 無效參數組合 <n>
315 | 不能添加組件 <name >
317 | 沒有可轉換的面板
318 | UserFunction <name >沒有面板視圖
320 | 子過程運行失敗
321 | 子過程結束
322 | 不能打開管道（pipe ）
323 | 列表沒有元素
330 | Max value必須大于 Min value
331 | VEE 不能加載或執行程序
340 | 不能編譯帶有多于一個 xeq 端的對象
341 | xeq 端必須是最底下的一個端
342 | 不能編譯帶有多于一個 xeq 端的上下文對象
343 | UserObject 不能位于它編輯 窗口中
344 | CallBox不能位于調用函數內 (不允許循環遞歸)
345 | 重复的設備名。修改 <name > 為唯一值
346 | 必須為設備制定名稱
347 | 無法編譯在iterators 或 junctions上有錯誤端的程序
容器 |
400 | 值為空或 nil (可以為零元素數組)
401 | 值越界 (有效范圍 = [<n>..<n>])
402 | <name> 值必須為 <type>
403 | <name> 值越界
404 | 數字值必須為正
405 | <name>沒有找到
410 | 值必須為標量
411 | 值必須為數組
412 | 值必須為標量或線性數組
413 | 值必須為<n>維數組
414 | 值必須為 waveform 或線性數組
415 | 值必須有相同的維數
416 | 值必須有相同的大小和形狀
417 | Record就夠必須匹配
418 | Records不能合并
420 | 值必須為方形矩陣
421 | 矩陣值得形狀不适用月矩陣乘法
422 | 值必須為帶有 ODD列數的矩陣
430 | 不能用非零索引訪問標量
431 | 數組索引值越界
432 | 錯誤的數組／子數組的索引值
433 | 給定的數組維數太多 (最大為= <n>)
434 | 值必須有 <n> 個域
435 | 兩個值必須有相同數量的域
440 | 操作對數据類型 <type>無效
441 | 該操作對標量數据無效
442 | 操作對 <n> 維數組無效
443 | 操作只對數字值有效
444 | Declared Variable賦值無效
445 | 試圖訪問尚未初始化的 Declared Variable <name>
450 | 操作需要數組被映射
451 | 數組映射必須匹配
452 | 數組映射的采樣頻率必須匹配
453 | <type> 不能垂直布進
454 | 不允許創建數組
460 | 不能增加／減少數組合函數
461 | 值 > 16 digits -- 不能增加／減少
462 | 重寫常量或參數 <name> 失敗
463 | 輸入坐標在 "X"上非洙調
464 | 不能把t <type> 轉換為 <type>
465 | 不允許進行<action> <message>
MATH |
500 | 函數 <name>的參數值非法
501 | 函數 <name> 的值不能為負
502 | 函數 <name> 需要 <n> 個參數
510 | 函數 <name>有數學錯誤
511 | 除數為零
512 | 負值不能用作非整數冪 (<n>)
513 | Zero 不能用作非正數冪 power (<n>)
514 | 數字值在函數 <name>中溢出
515 | 數字值在函數 <name>中下溢
516 | 在計算<name>時，出現和上溢
517 | 不可知的函數或 UserFunction: '<name>'
520 | LOG 映射的邊界必須 > 0
521 | LOG映射函數的X-data必須 > 0
522 | 不支持排序 <n>的分布
523 | 不支持多維數組上的插入
ActiveX |
550 | ActiveX 對象 <name>失敗
551 | ActiveX對象返回的數据類型不兼容 <name>
552 | 參考的 ActiveX 對象中的<name>失敗
553 | 在 <action> <name>過程中 ActiveX對象返回一個錯誤
554 | <name>不是參考的 ActiveX 對象的成員
555 | 試圖在沒有指定值是就設置屬性 <name>
556 | ActiveX對象不實現接口 <name>
557 | 不能建立ActiveX 對象
558 | <name>的目標操作系統平台不是 WIN32
559 | 不能從<name>中載入類型庫
560 | 沒有發現屬性 <name>
561 | 沒有裝入任何有關 <name>的類型信息
562 | 無效 CLSID: <number>
563 | 無效 ProgID: <name>
564 | 無法建立到<name>的事件連接
565 | 不能訪問 ActiveX 對象 <name>
566 | ActiveX 對象返回了一個不兼容的值
567 | 不能得到 ActiveX 對象 <name>的實例
568 | 程序化訪問VEE對象的屬性失敗
569 | ActiveX Automation 數組錯
570 | 不能訪問 ActiveX Automation 數組中的數据
571 | 不能創建遠程對象， DCOM 沒有安裝。可以從 Microsoft 网站下載并安裝 DCOM95
MATLAB 腳本 |
590 | MATLAB 沒有安裝。 重新安裝 VEE并選擇 MATLAB Script 安裝選項。
591 | 不能啟動 MATLAB Script引擎
592 | MATLAB 一般錯誤r <message>
593 | MATLAB Script錯誤
594 | MATLAB 數据包含無限大或 NaN
表達式 |
600 | 語法錯: <描述>
601 | 無效表達式: <描述>
602 | 函數沒有找到: <name>
603 | 沒有找到變量: <name>
604 | 函數不能裝入: <name>
610 | 提供了過多的參數 (最大=<n>)
611 | 提供給函數<name>的參數數量錯
620 | 名稱或字符串常量過長 (> n chars)
621 | 重复的符號名<name>
622 | 無效的變量／終端名 <name>
623 | 沒有找到字符串的結束引號
624 | 解析字符串時，發現非法字符
625 | 非法換碼字符序列 <sequence>
626 | 重复的記錄域名 <name>
627 | 重复的庫名 <name>
628 | 無效的記錄域名 <name>
629 | 無效的 UserFunction名 <name>
630 | 無效值
631 | 表達式的值必須為全零或全非零
640 | 不匹配錯誤: 期望為<name>, 實際為 <name>
641 | 不認識的參數: <name>
642 | 沒有定義的參數: <name>
643 | 該程序沒有執行窗口
650 | 庫: <name> 包含正在運行的函數，不能刪除
660 | 無效名: <name>
文件 |
700 | 沒有找到文件 <name>
701 | 文件結尾或發現沒有數据
702 | 不能打開文件<name>: 許可被延遲
703 | 不能讀文件 <name>
704 | 不能寫文件 <name>
705 | 讀文件 <name>錯
706 | 文件結束或沒有找到匹配的
707 | 需要讀 <n>, 值找到了 <m>
708 | 對到的字節數必須為數据大小的倍數
710 | 文件 <name>不是一個命名的管道
711 | 無法創建文件 <name>
712 | 文件 <name> 已經存在
713 | 無效路徑名 <name>
714 | 文件為目錄
715 | 目錄不為空
716 | 文件 <name>不能執行
717 | 無效工作目錄 <name>
718 | 不能創建過程。 (Windows 錯誤號: <n>)
720 | 文件正在使用中
721 | 設備忙
722 | 無法訪問不同的文件系統
723 | 打開的文件太多
724 | 文件太長
725 | 磁盤滿
726 | 文件查找錯
727 | 系統文件號錯
728 | 符號連接太多
729 | 非法文件格式
730 | 文件中沒有 UserFunction
733 | 無法合并 secured 程序
734 | 無法創建共享內存段
736 | 無法讀二進制文件 <name>
737 | 無法寫二進制文件 <name>
738 | 無法恢复的語法錯誤
739 | 從compiled function返回的棧指針錯
.NET |
751 | .NET 調用失敗
752 | 例外
753 | 沒有默認成員
754 | 無法訪問 .NET
755 | 屬性未賦值
756 | 無法建立對象
757 | 無法獲得成員信息
758 | 沒有對 .NET操作做好準備
759 | 無法獲得 Namespace
760 | 無法找到的類型
761 | 事件連接失敗
763 | 無法建立時間連接
764 | 創建 .NET 操作失敗
765 | The control may have to added to another control programmatically
I/O |

800

沒有該設備或地址錯誤

801

配置錯誤: <description>

802

設備文件 <name> 錯誤

803

設備 <name>不是基于消息的

804

非法訪問設備 <name>上的內存

810

儀器驅動程序錯 <n>: <description>
詳情請參閱儀器手冊

811

I/O 錯誤或超時

812

無效的 bin block 頭

813

必須為當前活動的系統控制器，才能訪問 GPIB

814

對 <device> <interface>的鎖定獲取失敗

815

對VXIplug&play函數調用返回失敗，錯誤號 <n>

816

對VXIplug&play init() 函數調用返回失敗，錯誤號 <n>

817

對NIDAQ 驅動函數調用返回失敗

818

對NIDAQ NIxxxx_init() 函數調用返回失敗

821

不支持對 <name> 接口的事務操作

830

無法初始化對應用程序 <name>, 論題 <name>的DDE連接

831

對項目 <name>的 DDE POKE失敗

832

從項目 <name>來的DDE REQUEST 失敗

833

DDE EXECUTE 失敗

850

無法識別的主机 <name>

851

主机<name>上沒有 Service Manager

852

該主机上的网絡沒有初始化

853

連接超時

854

在從网絡上接受前發生了中斷

855

連接被中斷

856

操作系統超出了緩沖空間

857

网絡中斷

858

在連接到主机 <name>前發生中斷

859

端口 <name>已被使用

860

對<name>的連接嘗試超時

861

<name>上的Service Manager沒有響應

862

主机 <name>上的服務 <name>沒有響應

863

沒有找到主机 <name>上的服務<name>

864

無法啟動主机 <name>上的服務<name>

865

主机 <name>上的服務<name>出錯

866

到主机 <name>的連接失敗

867

無法找到主机<name>上的 UserFunction <name>

868

主机 <name>上的用戶 <name>沒有權限

869

主机 <name>上的遠程服務 <name>錯， 錯誤報告: <n>

870

收到Non-blocking

871

遠程調試尚未結束就被中斷

876

COM HRESULT返回錯誤代碼

877

需要傳遞 ByRef的參數為 <name>

878

<name>返回值無效

879

VEE的數据容器空

880

數組 <name> 的大小必須為域計數 <n>的整數倍數

系統

900

程序執行中不允許操作

901

非法反饋形式

902

發生了意料外的 BREAK

903

發生了意料外的 CONTINUE

904

發現了非法設備

905

非法版本 "<rev>" (期望值為 "<rev>")

906

帶反饋的線程請求START對象

910

過程超出內存容量，立即保存程序

911

浮點錯，可能為上溢或下溢

912

系統過程過多

913

發生复位或中斷

914

無法打開顯示

915

操作系統沒有資源

920

對管道的寫，沒有過程去讀它 (signal = <n>)

921

收到用戶定義的信號１ (signal = <n>)

922

收到用戶定義的信號２ (signal = <n>)

930

PreRun 時發生錯誤

935

反饋環路中需要一個連接對象

936

UserFunction不能重入

937

沒有給Sample & Hold 任何數据

938

VEE 無法編譯程序的這個部分

939

當線程連接到輸入端時不能按下 START

940

非法反饋形式

941

T1 必須在 T2前激活

950 through 999

EXCEL 庫

2001

  • 試圖訪問第２５６列之后獲第１列之前的列；

  • 試圖訪問第一行之前和最后一行之后的行；

  • 發現無效的單元格或范圍地址被試圖轉換為數字行和列: <column>;

  • 試圖向第２５６行之后的行傳遞數据.

2002

  • 試圖發送超過三維的數据;

  • 發送數据類型 \nENUM錯。該類型被做為記錄\nSPECTRUM的一部分來傳送。請參閱范例\nCCOMPLEX,\nPCCOMPLEX, \nCOORD, \nOBJECT - Excel庫不支持;

  • 試圖發送一個三維或以上的記錄

2003

該標但已被保護，不能被修改

2004

  • 當前工作簿中無法找到該表單;

  • 無法在當前打開的工作簿集中找到該工作簿

2005

試圖在沒有打開的工作簿時，發送數据

2006

SendRecord輸入不是一個記錄

2007

  • SendDataSettings.ThreeDArrays無法識別的值;

  • Print無法識別的值

2008

數据大小 > 254。無法建立燒鍋 254個的新表單

2022

無法識別的 Chart類型

2023

線段圖表設置Names數組錯。可能的原因是該數組与數据數組的大小不一致。如果選擇了 Logarithmic,　也請确認數据中沒有負值。

2025

ActiveChart.ApplyCustomType(xlBuiltIn, "Logarithmic")錯。非英文版本的 Office不支持此項。請參閱聯机幫助以獲得可能的替代方法。

另請參閱

VEE中.NET的錯誤


激活

1. 把一個容器發送到一個端上。另請參閱Container和Terminal。

2. 在每次運行前复位UserObject上下文的操作。另請參閱Context和PreRun。


ActiveX

允許多個流程在Windows平台上通信的一种通信机制。ActiveX是基于Microsoft COM的一系列技朮，包括各种分布式計算輔助功能，如ActiveX Controls和ActiveX Automation Servers。


分配

初始化VEE數組。分配操作設置維數、每個維度中的元素數量，用初始數据填充數組。例如，在默認情況下，用0填充二維整數數組。


數組

与數學數組對應的一种數据形狀，其中包含一維或多維的一組數据項(所有數据項的數据類型相同)。通過數組索引存取數据項。在VEE中，一維數組稱為Array 1D，二維數組稱為Array 2D，依此類推。另請參閱數据形狀。


异步

在异步操作中，設備在沒有同步事件的公共信號的情況下運行，這些事件在非指定時間發生。VEE控制端(如顯示對象上的Clear端)是异步的。


Auto Execute

数据常数对象的对象菜单上的一个选项。如果设置了Auto Execute，且程序还没有运行，那么在编辑其值时对象会运行。在程序运行时，会忽略Auto Execute。


Bitmap

位图

位图形或图片。在VEE中，可以使用Picture对象或在任何图标上显示一个位图。还可以在主程序面板视图、UserObject面板视图或UserFunction面板视图的背景上显示一个位图。


Breakpoint

断点

调试程序使用的一个工具。如果为一个对象设置断点，那么就在该对象执行前，程序会暂停。


Buffer

缓冲器

存储器中临时存储信息的区域。


Button

按钮

VEE中的一个图形对象，它仿真瞬时开关或选择按钮，从屏幕上弹出。在VEE中用鼠标点击"按"一个按钮时，会发生一个操作。(也可能指明鼠标左键或右键。)


Cascading Menu

级联菜单

下拉菜单或弹出菜单中提供额外选项的子菜单。


Checkbox

复选框

菜单和对话框上隐藏的方框，允许选择一个设置。为选择一个设置，点击这个框，框中会出现对号，表明选中了这个框。为取消设置，只需再点击这个框即可。


Click

点击

按下后放开鼠标键。点击通常会选择VEE窗口中的一个菜单功能或对象。另请参阅双击和拖动。


Clone

克隆

對象菜單上的一個菜單項，复制對象及其互連，把對象拷貝放在Paste緩沖器中。Clone复制被克隆對象的所有屬性，包括端、參數和大小。


Compiled Function

通过把用编程语言(如C语言)编写的程序动态链接到VEE流程中创建的一个用户自定义函数。用户必须创建一个DLL (动态链接库)文件和一个定义文件。Import Library对象把DLL附着到VEE流程中，解析定义文件声明。然后可以使用Call Function对象或从特定表达式中调用Compiled Function。另请参阅UserFunction和Remote Function。


Component

组件, 成分, 部分

VEE仪器面板或组件驱程中的一个仪器函数或测量值。例如，电压表驱程包含多个组件，记录范围、触发源和最新读数。另请参阅Component Driver, Driver Files, State和Instrument Panel。


Component Driver

組件驅動程序

把值讀寫到具体選擇的組件的儀器控制對象。使用組件驅程，通過一次只設置多個組件的值，使用驅程控制儀器。(組件驅程不支持耦合。)


合成數据類型

具有相關形狀的一种數据類型。另請參閱數据形狀和數据類型。


Container

容器

参阅数据容器。


Context

上下文

一种工作区等级，可以包含其它等级的工作区(如嵌套UserObjects)，但独立于其它等级的工作区。


Control Pin

控制端

一个异步输入端，它把数据传送到对象上，而不用等待对象的其它输入端包含数据。例如，VEE中的控制端通常用来清除或自动定标显示画面。


Coupling

耦合

仪器中某些函数的相互关系。在仪器面板中，如果函数A和函数B耦合，那么改变A的值可能会自动改变B的值，即使没有明确改变B。


Cursor

光标

输入字段中的一个指针(脱字符号)，表明在从键盘上输入信息时字母和数字数据会出现的地方。


Cut Buffer

剪切缓冲器

保存剪切或复制的对象的缓冲器。然后可以使用Edit [image] Paste把对象粘回到工作区中。


Data Container

数据容器

通过线路传送的、由对象处理的数据封装。每个数据容器包含着数据和数据类型、数据形状和映射(如有)。


Data Field

数据字段

指定要写入的表达式(WRITE事务)的事务规范内部的字段，或接收被读取的数据的变量(READ事务)。另请参阅事务。


Data Flow

数据流程

经过VEE对象及VEE对象之间的数据流程。数据从左到右流经各个对象，但只有在所有数据输入端上都有数据时，才会执行对象。数据从一个对象的数据输出端传播到下一个对象的数据输入端。数据流程是决定VEE程序执行情况的首要因素。


Data Input Pin

数据输入端

对象左侧的一个连接点，允许数据流入对象中。


Data Output Pin

数据输出端

对象右侧的一个连接点，它把数据流程传播到下一个对象中，把第一个对象的结果传送给下一个对象。


DataSet

保存到文件中、以备日后检索的"Record"容器集。To DataSet对象收集输入上的Record数据，把这些数据写入到一个命名的文件中(DataSet)。From DataSet对象从命名的文件(DataSet)中检索Record数据，作为Record容器在其Rec输出端输出这些数据。另请参阅Record。


Data Shape

数据形状

每个数据容器都有一个形状和一个类型。数据形状可以是标量或数组。数据形状可以是标量或一维或多维数组。在VEE中，一维数组称为Array 1D，二维数组称为Array 2D，依此类推。


Data Type

数据类型

每个数据容器都有一个类型和一个形状。VEE支持多种数据类型，包括Text, Int16, Real64, Complex, Waveform等等。


DDE (Dynamic Data Exchange)

DDE (动态数据交换)

允许流程在Windows平台上通信的一种通信机制。DDE是一种比较老的机制，已经被ActiveX代替。


Default

默认值

自动选择的一个值或操作。例如，VEE使用某些默认颜色和字体，可以使用Default Preferences对话框改变这些颜色和字体。


Default Button

默认按钮

在按Enter或Return或双击选项时，对话框中在默认状态下激活的按钮。默认按钮的标签采用粗体。


Demote

降级

从包含较多信息的数据类型转换成包含较少信息的数据类型。另请参阅数据类型和晋级。


Detail View

詳細視圖

VEE程序中顯示所有對象及對象之間的線的視圖。


Device Driver

設備驅動程序

參閱接口驅動程序。


Dialog Box

对话框

在VEE要求输入信息后才能继续执行时显示的二级窗口。例如，对话框中可能会包含一个可以选择的文件列表。


Direct I/O Object

Direct I/O对象

一种仪器控制对象，允许VEE直接控制仪器，而不必使用专用驱程。


DLL (Dynamically Linked Library)

DLL (动态链接库)

使用C语言编写的可以从VEE for Windows中调用的函数集。可以由资深C编程人员使用微软工具创建DLL。


Double-Click

双击

迅速连续按下和放开鼠标按钮两次。双击通常是选择和执行某项操作的快捷方式。例如，从File [image] Open中双击一个文件名会选择和打开这个文件。


Drag

拖动

按下并一直按住鼠标按钮，移动鼠标。拖动操作会移动某个项目(如对象或滚动条)。


Driver

驅程，驅動程序

允許計算机与其它軟件或硬件通信的軟件。另請參閱組件驅程, 驅程文件, 接口驅程和儀器面板。


Driver Files

驱程文件

VEE自带的文件集，其中包含创建控制仪器使用的仪器面板和组件驱程对象所需的信息。


Drop-Down List

下拉列表

点击选项字段右面的箭头时出现的选项列表。


Entry Field

输入字段

用来输入数据的字段，它一般是对话框的一部分，或者是一个可以编辑的对象。在其背景为白色时，可以编辑输入字段。


Error Message

错误信息

错误对话框中出现的信息，解释已经发生了一个问题。


Error Pin

错误端

捕获对象中发生的任何错误的端。错误端上输出错误编号，而不是获得错误信息。在生成错误时，不激活数据输出端。


Execute

执行

运行程序(或其部件)的操作。


Execution Flow

执行流程

对象运行的顺序。另请参阅数据流程。


表達式

輸入字段中的一個等式，可能包含輸入端名稱、局部或全局變量名稱、數學運算符、內置函數和用戶自定義函數。表達式在運行時求解。表達式可以用于Formula, If/Then/Else, Get Values, Get Field, Set Field, Sequencer和Dialog Box對象及I/O事務對象中。


Feedback

反馈

使用上次执行的值改变当前执行的值的、由序列和/或数据线组成的连续线程路径。


Flow

流程

参阅数据流程和执行流程。


Font

字体

字体的大小和样式。


Function

函數

對象的名稱和操作，其中輸出是輸入的函數。這些對象位于Function & Object Browser中(Device [image] Function & Object Browser)，可以用于Formula對象中。例如，sqrt(x)是一個函數，+不是一個函數。


Global Variable

全局变量

在全局设置的命名变量，可以根据名称用于VEE程序的任何上下文中。例如，可以使用Set Variable在程序的根上下文中设置全局变量，可以使用Get Variable按名称存取全局变量，或从UserObject上下文内部的某些表达式中存取全局变量。但是，名称与全局变量相同的局部变量在表达式中优先权较高。参阅变量。


變成灰色的功能

用灰色而不是黑色顯示的一种菜單功能，表明該功能沒有激活或不能使用。按鈕、复選框或單選按鈕等對話框項目也可以是灰色。


Highlight

高亮度显示

1. 对象周围的彩色或阴影，以可视方式提示对象的状态。

2. 菜单功能上的颜色变化，表明用户正在指向该功能。


Host

主机

1. 开始一个线程或子线程。例如，For Count提供主机的子线程是迭代的子线程。

2. 在分布式系统中，运行(或服务)一个工具或程序的计算机。


Hypertext

超文本

把多个主题链接起来的系统，在用户需要更多的信息时，可以跳到相关主题。在联机帮助系统中，超文本链接一般会在下面标有下划线。在点击这些文本时，会出现相关信息。


Icon

图标

1. VEE对象的小的图形表示方式，如表示仪器、控件或显示画面。

2. 应用程序、文件或文件夹的小的图形表示方式。


Instrument

仪器

测量和/或测试信号源使用的一种电子设备。仪器使用GPIB, RS-232, GPIO, VXI, LAN或USB接口连接到计算机上。特定VEE对象(如Direct I/O对象和Panel Drivers)与仪器通信。


Instrument Driver

仪器驱程

参阅驱程文件, 组件驱程和仪器面板。


Instrument Panel

仪器面板

一种仪器控制对象，强制相应物理仪器中的所有功能设置都与该对象open view中显示的控制面板中的设置相匹配。


Interface

接口

不同硬件(或软件)系统中的对象之间共享的边界。GPIB, RS-232, GPIO, LAN, USB和VXI称为仪器I/O使用的接口。特定的VEE对象如Interface Event对象，只能把命令发送到接口上。


Interface Driver

接口驱程

允许计算机与硬件接口通信的软件，如GPIB或RS-232接口。


Iterate

迭代

使用其中一个Repeat对象(如For Count)，重复(循环)部分VEE程序。


Library

库

通常使用的、被划分在一起的对象或程序集，以便于存取。


Line

线, 直线

VEE中两个对象之间传送要处理的数据容器的链路。另请参阅线程。


Logical Unit

逻辑单位

用来识别硬件接口的逻辑地址的数字。例如，大多数GPIB接口的出厂默认逻辑单位都是7。


Loop

循环

使用其中一个Repeat对象(如For Count)重复部分VEE程序。


Main Menu

主菜单

位于VEE菜单栏中的菜单。为打开一个主菜单，点击菜单栏中相应的菜单标题。也可以使用加速器。例如，Alt+F打开File菜单。


Main Work Area

主工作区

也称为Main Window(主窗口)。


Main Window

主窗口

开发VEE程序的根工作区或一级工作区。这个Main Window工作区位于VEE窗口的工作空间中，是所有其它上下文的母上下文。


Mapping

映射

由连续值或离散值组成的集合，表示数组的独立变量 (如波形的时间跨度)。


Maximize

最大化

使用最大化按钮放大窗口，如Main、UserObject或UserFunction，使其装满VEE窗口提供的所有工作空间。对VEE窗口，这会装满提供的所有屏幕空间。


Maximize Button

最大化按钮

UserObject、UserFunction和Main窗口上的一个按钮，可以使用这个按钮放大窗口，使其装满VEE窗口提供的所有工作空间。对VEE窗口，这会装满提供的所有屏幕空间。


Menu

菜单

出现在列表中的功能集。另请参阅级联菜单, 主菜单, 对象菜单, 弹出菜单和下拉菜单。


Menu Bar

菜单栏

VEE窗口顶部显示下拉菜单和主菜单标题的条，您可以从中选择不同的功能。


Menu Title

菜单标题

VEE菜单栏内部的菜单名称，如File或Edit。


Minimize

最小化

1. 把对象的open view降低到最小尺寸 -- 图标。

2. 把窗口降低到最小尺寸 -- 图标。


Minimize Button

最小化按钮

对象或VEE窗口上的一个按钮，它会把对象或VEE窗口变成图标。


Mouse

鼠标

一种指点设备，可以在某个表面上移动鼠标，在VEE窗口内部移动指针。


Mouse Button

鼠标按钮

鼠标上的一个按钮，可以单击或双击这个按钮，使用VEE窗口中的相应指针，执行特定操作。


Network

网络

连接在一起的一组计算机和外设，允许共享数据和工作负荷。


Object

对象

程序中的单元的图形表示方式，如仪器、控制、显示或数学运算符。对象放在工作区中，连接到其它对象上，创建一个程序。


對象菜單按鈕

open view對象左上角的按鈕，在點擊時會顯示對象菜單。


Open

打开

启动一项操作或开始处理文本、数字或图形文件。在从VEE中选择Open时，工作区中会加载一个程序。


Open View

比图标更详细地表示VEE对象。大多数对象的open view有多个字段，允许修改对象的操作。


Operate

运行, 操作

处理数据及输出结果的对象操作。在已经激活对象的数据输入端和序列输入端时，这个对象会运行。参阅激活。


操作界面

VEE編程人員創建的允許操作人員(最終用戶)控制程序的界面。典型的操作界面包括面板視圖和對話框。


外框

表示一個對象或一群對象的外部邊緣的框，指明一個或多個對象將在工作區的哪個地方。


Palette

调色板

VEE中提供的可能颜色集。


Panel Driver

面板驱程

一种仪器控制对象，它强制相应物理仪器中的所有功能设置与对象的open view中显示的对象控制面板设置相匹配。


Panel View

面板视图

VEE程序、UserObject或UserFunction的一种视图，它只显示用户运行程序和查看数据结果所需的对象。可以使用面板视图，为程序创建一个操作人员界面。


Pin

端

对象上的外部连接点，可以用它们连接一条直线。


Pointer

指针

与鼠标移动对映的图像。指针允许用户进行选择，提供了正在进行的某个流程的反馈信息。VEE有不同形状的指针，这些指针与不同的流程模式相对应，如箭头、十字线和沙漏。


Pop-Up Menu

弹出菜单

按鼠标右键弹出的菜单。例如，在工作区内部空白区域按鼠标右键，会弹出Edit菜单。也可以在对象没有活动的区域按鼠标右键，弹出对象菜单。


PostRun

在程序停止时执行的一套操作。


Preferences

首选项是可以使用工具栏上的Default Preferences按钮或菜单File [image] Default Preferences改变的VEE环境的属性。例如，可以改变默认颜色、字体和数字格式。


PreRun

在程序开始运行前复位程序、检查错误的一套操作。


Program

程序

在VEE中，程序是指由使用直线相连的对象集组成的图形程序。程序一般代表着解决某个工程问题的方案。


Program Explorer

VEE窗口中的一个辅助工具，它可以浏览程序内容，特别是物理屏幕上可能看不到的程序的各个部分。(Program Explorer只能用于VEE Pro中。)


晉級

從包含較少信息的數据類型轉換成包含較多信息的數据類型。另請參閱數据類型和降級。


傳播

在操作或運行時對象和程序遵守的規則。另請參閱數据流程。


Properties

属性

对象属性是可以使用对象菜单上的Properties改变的VEE对象的属性。可以使用对象菜单上的Properties，改变Main, UserObject和 UserFunction窗口的属性。属性包括颜色、字体和标题。


Pterodactyl

翼龙

灭绝的、属于侏罗纪时期和白垩纪时期翼龙目、会飞的各种爬行动物。翼龙的特点是有一对翅膀，其中由拍打的皮肤组成，在每个前腿上有非常长的第四个脚趾。


下拉菜單

在把指針放在一個菜單標題上，按鼠標左鍵時，從菜單欄上拉下的一個菜單。


Radio Button

单选按钮

VEE对话框中的一个菱形按钮，允许选择与该对话框中其它单选按钮互斥的设置。为选择一个设置，点击单选按钮。为删除设置，点击同一个对话框中的另一个单选按钮。


Record

一种命名了数据字段，其中可以包含多个值的VEE数据类型。Record(记录)一般用来划分信息的相关条目。但是，每个记录字段可以包含一种不同的数据类型。每个字段可以包含另一个Record容器，一个Scalar或一个Array。Record数据类型在所有VEE数据类型中的优先级最高。但是，不能通过自动晋级/降级过程把数据自动转换成Record数据类型及从Record数据类型自动转换数据。必须使用Build Record和UnBuild Record对象构建/拆除记录。


Remote Function

可以从本地主机上调用的一种UserFunction。(只有VEE Pro中才支持远程函数) Import Library对象在远程主机上启动流程，把UserFunctions加载到远程主机上的VEE流程中。然后可以使用Call Function对象或从某些表达式中调用Remote Function。另请参阅UserFunction, Remote Functions和Compiled Function。


Restore

恢复

通过双击它，把最小化窗口或图标返回到窗口或open view。


Run

在程序或线程运行时启动多个对象。


保存

把文件寫入存儲設備中，如硬盤。


Scalar

包含单个值的一种数据形状。另请参阅数据形状。


示意圖

用來定義數据記錄的結構或框架，包括每個字段的名稱、類型、形狀(和維度大小)和映射。


屏幕轉儲

窗口或部分窗口的圖形打印輸出。


滾動

使用滾動條在對話框中移動通過數据文件或其它選項列表或平移工作區的操作。


滾動箭頭

一個箭頭，在點擊時它會在對話框中滾動通過數据文件或其它選項列表，或移動工作區。


滾動條

一個長方形條，在拖動時，會在對話框中滾動通過數据文件或其它選項列表，或移動工作區。


選擇

為選擇一個對象而執行的一項操作，或一個菜單項目。通常通過點擊鼠標，來進行選擇操作。


Select Code

用来识别硬件接口地址的一个号码。"select code"已经被逻辑单位术语所代替。


選項

1. 一個菜單選項(功能)。

2. 在VEE窗口中已經選中的一個對象或操作。


選擇字段

對象或對話框中的一個字段，允許從下拉列表中選擇選項。


序列輸入端

一個對象最上面的端。在連接時，會保持執行對象，直到這個端收到一個容器(被"ping")。


序列輸出端

一個對象最下面的端。在連接時，當對象及來自該對象的所有數据傳播執行完時，會激活這個輸出端。


Sequencer

通过一系列序列事务控制执行流程的对象，每个事务可以调用一个UserFunction, Compiled Function或Remote Function。定序器通常用来指定一系列事务来执行一系列测试。(Sequencer只能用于VEE Pro中)


休眠

在等待運行或時間間隔結束或等待事件發生時，對象會休眠。休眠的對象允許并發運行其它并行線程。一旦事件、時間間隔或運行發生，將執行對象，允許繼續執行。


啟動目錄

參閱工作目錄。


狀態

与VEE儀器面板相關的所有組件的特定值集合，表示儀器的測量狀態。例如，數字万用表對高速電壓讀數使用一种狀態，對高精度電阻測量使用不同的狀態。另請參閱Instrument Panel。


狀態欄

VEE窗口底部的一個行，其中顯示VEE的當前狀態信息及VEE相關信息。


狀態字段

顯示不能編輯的信息的字段。狀態字段看上去与輸入字段類型類似，但背景是灰色的。


步進

運行VEE程序的操作，一次運行一個對象(以調試程序)。下次將運行的對象用黃色高亮度顯示。VEE為步進通過一個程序提供了三种方式︰Step Into, Step Over和Step Out，可以控制UserObject和UserFunction中對象運行。


端

端子, 終端, 端

端的內部表示方式，顯示与端有關的信息及端保持的數据容器。雙擊一個終端，可以查看容器信息。


端區域

對象左側和右側的區域，在為該對象激活Show Terminals時會顯示端。輸入端區域位于對象的左面，輸出端區域位于對象的右面。


Thread

线程

在VEE程序中用实线连接的对象集合。拥有多个线程的程序可以同时运行所有线程。


Title Bar

标题栏

对象或窗口open view顶部的长方形条，显示对象或窗口的标题。可以使用对象菜单上的Properties关闭对象标题栏。


Toolbar

工具栏

VEE窗口顶部的长方形条，提供了多个按钮，可以迅速进入常用命令。这些按钮运行来自File, Edit, View, Debug和Device等菜单中的命令。


Transaction

事务, 交易, 处理

VEE中某些对象使用的输入和输出(I/O)规范，包括To File, From File, Direct I/O和Sequencer对象。事务作为这些对象open view中列明的短语出现。


Trig Mode

觸發模式

Trig Mode是一种屬性，它決定著三角測量值是用度顯示、用弧度顯示、還是坡度顯示。注意VEE自動把三角測量值轉換成弧度，以進行計算。


用戶自定義函數

用戶可以創建、然后在VEE程序中調用的函數。可以創建三种使用Call Function對象或從某些表達式中調用的用戶自定義函數。另請參閱UserFunction, Compiled Function和Remote Function。


UserFunction

直接在UserFunction窗口中或从现有的UserObject中创建的用户自定义函数。UserFunction存在于VEE流程的后台中，但提供的功能与UserObject相同。可以使用Call Function对象或从某些表达式中调用UserFunction。可以在本地创建和调用UserFunction，也可以保存在库中，使用Import Library导入到VEE程序中。(只有VEE Pro中才支持导入UserFunction) 另请参阅Compiled Function, Remote Function和UserObject。


UserObject

可以封装一组对象，在程序内执行特定用途的对象。UserObject允许在构建程序时使用从上而下的设计技术，及构建可以保存在库中和重用的用户自定义对象。


Variable

变量

声明或未声明的命名变量。变量可以使用Declare Variable声明为局部变量、上下文全局变量或库全局变量。局部变量和全局变量可以在不声明的情况下在运行时设置值；但是，程序对声明变量运行速度较快。


View

视图

VEE可以在各种视图中表示程序和对象。程序可以出现在细节视图或打开视图中，对象可以出现在打开视图或图标视图中。参阅Detail View, Icon, Open View和Panel View。


Wait

等待

参阅休眠。


Window

窗口

屏幕上包含某个应用程序的长方形区域，如Agilent VEE。


Windows 2000和XP

采用微軟公司開發的視窗界面的一种操作系統，VEE在這一系統上運行。Windows 2000和Windows XP系統運行32位應用程序，但具有明顯的用戶/內核邊界。


工作區

Main, UserObject怯煲erFunction窗口內部的區域，可以把VEE對象放在這個區域中，把這些對象用線連接起來，創建一個VEE程序。在打開一個程序時，它會加載到Main窗口的工作區中。


工作空間

VEE應用窗口中的空間，其中包含編程或編輯窗口，如Main, UserObject和UserFunction。這些窗口包含著工作區域，可以把VEE對象放在這些區域中，用線連接起來，創建一個VEE程序。


工作目錄

VEE運行的目錄。例如，"C:\Program Files\Agilent\VEE Pro 7.5"是VEE Pro for Windows默認的工作目錄。工作目錄有時稱為"啟動目錄"，因為它在啟動VEE的快捷方式中指定。


XEQ Pin

XEQ端

即使数据输入端或序列输入端没有激活，仍会强制执行对象操作的端。只适用于Collector和Sample & Hold对象。另请参阅控制端, 数据输入端和序列输入端。


關于Agilent VEE Pro中的.NET錯誤

VEE提供.NET傳送給它的所有信息。考察使用的具体.NET方法在很大程度上可以為您提供足夠的信息，确定异常事件的特點。否則，可以直接進入MSDN中的异常事件類型。

帶有詳細异常事件框、自行解釋异常事件的范例如下︰

詳細程度較差、但常見的錯誤信息如下，其中方法提供了提示︰


Access Array

一個菜單項。

用途

使用Access Array存取下述數組修改對象︰

Set Values

Get Values

Set Mappings

Get Mappings

備注

這些對象通常用于Allocate Array對象修改要素或在新建數組中添加映射關系之后。

位置

Data [image] Access Array

另請參閱

Allocate Array, Get Mappings, Get Values, Set Mappings, Set Values和對象菜單。

從數組中提取值


Access Record

一個菜單項。

用途

使用Access Record存取下述記錄修改對象︰

Merge Record

SubRecord

Set Field

Get Field

備注

這些對象通常用于Build Record對象修改要素、合并記錄或存取記錄各部分之后。

位置

Data [image] Access Record

另請參閱

Build Record, Merge Record, SubRecord, Set Field, Get Field和對象菜單。

改變記錄中的字段


Accumulator

顯示和輸出其輸入值累積和的對象。

用途

使用Accumulator獲得累加和。

對象菜單

Clear - 清除Accumulator的內容。

備注

累加的輸出數据類型与最高階的輸入值相同。因此，如果Accumulator是Real64和Int32輸入，它會輸出一個Real64。

例如，如果使用Real64激活Accumulator數据輸入，那么后者由Complex激活，當前累加數据是Complex；Accumulator把Real64數据轉換成Complex。如果其中一個輸入是文本，那么所有數据將轉換成文本。

在混合數据時使用警告。其輸入順序決定著菜單。如果輸入是實數、實數和文本，那么Accumulator將把兩個實數相加，把結果轉換成文本，然后把輸入文本串追加到實數串末尾。如果輸入是文本、實數和實數，Accumulator將把兩個實數轉換成字符串，把它們追加到文本串的末尾。它們將在累加的字符串中表現為兩個不同的數字，而不是兩個實數之和。

位置

Device [image] Accumulator

另請參閱

Counter, Properties (對象)和對象菜單。


Activate Breakpoints

在复選時，會啟用設置的所有斷點。在沒有复選時，會取消所有斷點。

用途

使用Activate Breakpoints在調試和正常程序運行之間切換。在Activate Breakpoints打開時，會复選菜單選項。在遇到斷點時，程序停止運行。

備注

即使在關閉Activate Breakpoints時，設置了斷點的對象周圍仍會存在橙?色(默認值)邊框。對象Properties顯示复選了Set Breakpoint，而不管Activate Breakpoints狀態如何。

如果沒有复選Default Preferences中的Disable Debugging Features框，那么斷點只在VEE 4和更高執行模式下活動。在對象上設置了斷點時，Step Into將中斷，Step Over將不會中斷。

位置

Debug [image] Activate Breakpoints

另請參閱

Clear All Breakpoints, 默認首選項, Properties (對象), Step Into, Step Over和Toggle Breakpoint。


ActiveX Automation References

顯示ActiveX Automation References對話框，它允許提供VEE中使用的ActiveXAutomation庫。

用途

使用ActiveX Automation References對話框，選擇VEE用來控制其它應用程序的ActiveXAutomation庫。如果已經安裝了相關應用程序，那么庫會出現在這個對話框中，因此Windows Registry可以識別這些庫。在選擇希望的庫時，按OK，把庫加載到內存中以供VEE使用，搜索對象類，調度接口和導出的事件。只有在計划處理類型庫生成的事件時，或想參考任何類型庫，以便其功能(屬性、方法、枚舉、事件)出現在Function & Object Browser中時，才必須選擇類型庫。

在參考類型庫之前，使用內置函數CreateObject() or GetObject()，連接一個Automation對象。然后在選擇庫以后，打開VEE的Function & Object Browser (Device [image] Function & Object Browser)，在Type: 區域中選擇ActiveX Objects，在Formula對象中生成表達式，操縱對象。使用其它Formula表達式，獲得和設置其屬性，調用方法。

對話框信息

Registered Automation Servers: - 包含注冊的ActiveXAutomation庫列表。點擊一個名稱，高亮度顯示它，查看列表下面狀態區域中的信息。點擊名稱旁邊的框，點擊OK，選擇它，以用于VEE中。

Browse… - 如果在系統上存在沒有出現在列表中的庫，點擊Browse，在Add ActiveX Automation Reference對話框中搜索庫。在找到和打開庫時，VEE會把這個庫添加到列表中，試著注冊庫。為在VEE中使用庫，一定要复選它所在的框，點擊OK。

備注

VEE必須設為VEE 5或更高的執行模式，以便使ActiveX支持生效(Default Preferences)。對能夠作為Automation Servers操作的應用，ActiveX Automation允許作為Automation Controller使用VEE。這可以与Microsoft Word、Excel和Access等應用程序交互，完成從VEE發送數据、生成報告等活動。在具有Automation功能的應用中，這全面代替了VEE的當前應用控制解決方案Dynamic Data Exchange (DDE)。

在安裝包含Automation庫的應用程序時，會安裝Automation庫。

僅選擇所需數量的庫，避免過多地占用內存。

如需与影響ActiveX參考的編程技朮有關的信息，請參閱CreateObject內容。

位置

Device [image] ActiveX Automation References…

另請參閱

參見ActiveX范例目錄中的范例程序
Help [image] Open Example…

ActiveX Control References, 默認首選項, Formula, Function & Object Browser, CreateObject, GetObject, ActiveX范例

參閱VEE高級技朮手冊中的"使用ActiveXAutomation對象和控件"。


ActiveX Control Host

為添加到VEE工作區中的ActiveX控件提供主机的VEE對象。

用途

ActiveX Control Host作為ActiveX控件的容器使用。在工作區中添加一個控件時(Device [image] ActiveX Controls)，VEE創建容器，因此可以象存取其它VEE對象一樣存取控件。容器還允許存取控件開發人員在控件中構建的特定屬性。

當控件出現在工作區中時，它在標題欄中有一個標題和變量名稱。它沒有使用直線連接到其它對象的端。必須使用指稱變量名稱的表達式，操縱控件，獲得和設置其屬性，調用方法。VEE的Function & Object Browser (Device [image] Function & Object Browser)躍助您在Formula對象中生成這些表達式。從本質上看，變量名稱是控件的聲明變量名稱。控件的聲明變量名稱与使用Declare Variable對象創建的變量非常類似，但控件的變量已經初始化。聲明是上下文局部聲稱，因此在默認狀態下，變量名稱只能用于其所在的上下文中。如需与在全局存取ActiveX控件有關的更多信息，請參閱下面的備注。

對象菜單

  • Help - 打開描述容器對象的這個VEE躍助主題。

  • Properties - 存取VEE 容器對象的屬性，如標題、變量名稱、顏色、字体和圖標視圖。

  • Control Properties - 存取開發人員構建的控件的屬性頁面。每种控件有不同的屬性。在出現的屬性窗口中，點擊Help按鈕，獲得更多信息。

  • Edit Event Handler… - 如果已經為控件創建任何事件處理器UserFunctions，打開Edit Event Handler對話框。

  • Create Event Handler… - 打開Create Event Handler UserFunction瀏覽器。這個瀏覽器允許您創建一個UserFunction，處理控件生成的事件。可以為瀏覽器Member區域中列出的每個事件創建一個事件處理器。

屬性 (容器對象)

Title - 顯示容器對象的當前標題，可以編輯標題。

Name - 顯示控件的當前局部變量名稱，可以編輯名稱。這會作為上下文局部變量聲明和初始化控件。

備注

VEE必須設為VEE 5或更高的執行模式，以便使ActiveX支持生效(Default Preferences)。ActiveX控件可以作為單獨產品提供，也可以作為大型程序的一部分安裝。

VEE不支持所有ActiveX控件。如果控件不兼容VEE，在把控件添加到程序中或在使用控件時，會發生錯誤。

在把控件添加到VEE工作區中時，在標題欄中會單現指配的局部變量名稱。雙擊控件的標題欄，出現ActiveX Control Properties對話框，可以改變指配的變量名稱。在Design類別中，改變Name的值。由于控件沒有使用直線連接到程序中其它對象的端，因此必須在Formula對象中使用按變量名稱指稱控件的表達式操縱控件。由于變量是上下文局部變量，因此這些表達式必須与控件出現在相同的上下文中。

如果希望變量名稱是全局的，那么使用Declare Variable (Data [image] Variable [image] Declare Variable)聲明新的變量名稱。由于控件的變量名稱已經存在，因此不能簡單地把它聲明為全局變量，VEE不允許有這樣的沖突。在Declare Variable中，輸入變量名稱，把Scope設為Global，把Type:設為Object。您不必复選Specify Object Type；但是，通過指定對象類型細節，VEE會自動進行類型檢查，保証指定的Library和Class只指配給聲明變量。然后可以把控件的局部變量(如Calendar1)設成等于聲明變量(如g_calendar1)，如這個表達式中所示︰

Set g_calendar1 = Calendar1

位置

Device [image] ActiveX Controls

另請參閱

參見ActiveX范例目錄中的范例程序
Help [image] Open Example…

ActiveX Control References, Declare Variable, 默認首選項, Formula, Function & Object Browser, ActiveX范例

參閱VEE高級技朮手冊中的"使用ActiveXAutomation對象和控件"。


ActiveX Control References

顯示ActiveX Control References對話框，把ActiveX控件用于VEE中。

用途

使用ActiveX Control References對話框，選擇希望在VEE程序中使用的ActiveX控件。如果已經安裝了控件或相關程序，控件會出現在這個對話框中，以便Windows Registry識別控件。在選擇想要的控件時，按OK把控件加載到內存中供VEE使用，搜索對象類，調度接口和導出的事件。

在選擇控件后，象任何其它VEE對象一樣，使用Device [image] ActiveX Controls選取一個控件，把它放在程序的細節視圖中。出現得到的控件"對象"，標題欄中會有一個變量名稱。由于控件沒有類似其它對象的端，必須使用控件的變量名稱在Formula表達式中操縱控件。VEE的Function & Object Browser (Device [image] Function & Object Browser)幫助生成這些表達式。

對話框信息

Registered Controls: - 包含注冊的ActiveX控件類型庫的列表。點擊一個名稱，高亮度顯示它，在列表下面的狀態區中查看信息。點擊名稱旁邊的框，點擊OK，選擇它用于VEE中。

Browse… - 如果在系統中存在沒有出現在列表中的控件，點擊Browse在Add ActiveX Control Reference對話框中搜索控件。在找到和打開控件時，VEE會把控件添加到列表中，試著注冊控件。為在VEE中使用控件，一定要复選控件的框，點擊OK。

備注

VEE必須設為VEE 5或更高的執行模式，以便使ActiveX支持生效(Default Preferences)。ActiveX控件可以作為單獨產品提供，也可以作為大型程序的一部分安裝。

選擇的控件數量能夠滿足程序需求即可，以避免占用額外的內存。

在使用ActiveX Control Reference對話框選擇名稱后，VEE會在菜單Device [image] ActiveX Controls中添加控件名稱。某些選擇會導致一個以上的ActiveX控件添加到菜單中，這是正常的。

VEE不支持所有ActiveX控件。如果控件不兼容VEE，在把控件添加到程序中或在使用控件時，會發生錯誤。

位置

Device [image] ActiveX Control References…

另請參閱

參見ActiveX范例目錄中的范例程序
Help [image] Open Example…

ActiveX Automation References, ActiveX Controls, Declare Variable, 默認首選項, Formula, Function & Object Browser, ActiveX范例


ActiveX Controls

一個Device菜單選項，允許在VEE工作區中添加ActiveX控件。

用途

使用ActiveX Controls菜單，添加供VEE使用的ActiveX控件。如果使用ActiveX Controls Reference對話框(Device [image] ActiveX Controls Reference…)選擇它們，這些控件會出現在級聯菜單中。

備注

VEE必須設為VEE 5或更高的執行模式，才能使ActiveX支持生效(Default Preferences)。ActiveX控件既可以作為單獨的產品提供，也可以作為大型程序一部分安裝。

VEE不支持所有ActiveX控件。如果控件不兼容VEE，在程序中添加控件或使用控件時，會發生錯誤。

位置

Device [image] ActiveX Controls

另請參閱

參閱ActiveX范例目錄下的范例程序
Help [image] Open Example…

ActiveX Control Host, ActiveX Control References, 默認首選項, ActiveX范例


Add Days

在一定日期時間上增加天。

位置

System [image] DateTime [image] Add Days


Add Hours

在一定日期時間中增加小時。

位置

System [image] DateTime [image] Add Hours


Add Minutes

在一定日期和時間中增加分鐘。

位置

System [image] DateTime [image] Add Minutes


Add Months

在一定日期和時間中增加月。

位置

System [image] DateTime [image] Add Months


Add Seconds

在一定日期和時間上增加秒。

位置

System [image] DateTime [image] Add Seconds


Add Terminal

一個菜單項。

用途

使用Add Terminal存取下述功能添加端︰

Data Input

Control Input

Data Output

Error Output

快捷方式

通過把光標放在輸入或輸出端顯示區域上，然后按CTRL+A，可以迅速添加一個數据端。每按一下CTRL+A會在光標所在位置插入一個額外的數据端。

位置

On each對象菜單 [image] Add Terminal

另請參閱

Properties (對象), Line Probe, Delete Terminal, Control Input (對象菜單), Data Input (對象菜單), Data Output (對象菜單)和Error Output (對象菜單)

在UserObject中添加輸入端和輸出端

自動調整顯示畫面大小

以程序化方式顯示一個文件名


Add To Panel

把選擇的對象复制到VEE程序的相關上下文面板中。

用途

使用Add To Panel，把選擇的對象集放在面板視圖上，為程序創建一個用戶界面。例如，面板視圖可能只包括程序的輸入和顯示對象；不顯示程序的細節視圖。

在存在面板視圖，程序沒有安全保護時，UserObject或UserFunction的標題欄上有兩個按鈕，允許切換到希望的視圖。

如果選擇Add To Panel，但不存在面板視圖，那么會創建面板視圖。

備注

如果沒有選擇對象，那么不能使用Add To Panel功能。

UserObject的面板視圖可以添加到Main面板視圖或作為相關上下文的UserObject的面板視圖中。換句話說，可以嵌套面板。在面板添加到父面板中時，會生成源面板的精确副本。在源面板修改時，所有复制面板也會更新。

為把一個UserObject面板添加到父面板中，如Main面板︰

1. 在創建UserObject及其面板后，在UserObject的圖標視圖上按鼠標右鍵，出現對象菜單。

2. 點擊Restore，出現Open View。它表現為一個面板視圖。不要刪除這個視圖，否則會從父程序中刪除UserObject。

3. 選擇UserObject，高亮度顯示UserObject。

4. 點擊Add To Panel工具欄按鈕(Edit [image] Add To Panel)。父面板中出現UserObject。

位置

Edit [image] Add To Panel

或UserObject對象菜單Edit [image] Add To Panel

另請參閱

Create UserObject, Delete (對象菜單), Create RunTime Version, Select All, View Detail和View Panel。

在主面板中添加UserObject面板

在嵌套UserObject面板中添加對象

在面板中添加對象

構建UserFunction面板

構建UserObject面板


Add Years

一定的日期时间中增加年。

位置

System [image] DateTime [image] Add Years


高級儀器屬性

允許配置儀器設備驅程和接口通信參數的一個對話框。

用途

在使用Instrument Properties對話框選擇Interface: 類型(GPIB, Serial, 等等)之后，點擊Advanced...按鈕，出現Advanced Instrument Properties對話框。

Advanced Instrument Properties對話框分成六個不同版本，下面六种接口類型每种一個版本︰

1. GPIB

2. Serial

3. GPIO

4. VXI

5. TCPIP

6. USB

對話框信息

Advanced Instrument Properties對話框提供了下面的欄和字段︰

備注
每類接口(GPIB, Serial, GPIO, VXI, TCPIP,或USB)并不總是要求完全相同的所有通信參數。例如，GPIO接口配置的Direct I/O欄只包含GPIB接口配置Direct I/O欄中的字段的一個子集。下面的各欄說明介紹了任何一類欄中可能出現的所有字段。

General欄︰

Timeout (sec): - 允許指定VEE等待儀器對通信請求作出響應的秒數，在超過這個秒數之后，VEE會生成錯誤。默認值為5秒。

Live Mode: - 指定Live Mode是ON還是OFF。如果Live Mode關閉，那么即使沒有連接儀器，仍可以運行VEE程序。但是，如果与儀器實際通信，Live Mode必須為ON。Live Mode會保持OFF，直到在Instrument Properties對話框的Address字段中輸入一個非零的地址；然后Live Mode會切換到ON。然后可以點擊切換ON或OFF字段。Live Mode不适用于Plug&play Drivers。

Byte Ordering: - 指定設備讀寫二進制數据使用的字節順序。VEE确定是否需要交換字節。點擊這個字段，選擇MSB (先發送最有用的位)或LSB (先發送最沒用的位)。所有IEEE 488.2標準設備都使用MSB順序。MSB也是默認值。如需更具体的信息，請參閱儀器手冊。

Description (optional): - 允許為儀器輸入自己的簡單的字母數字識別符。

Direct I/O欄︰

Read Terminator: - 允許指定用來結束儀器Read事務的字符。默認終結符是\n (換行)。

Write - 允許指定儀器write事務的多個參數。共有五個字段，可以編輯這些字段，指定這些參數。這些字段是︰

EOL Sequence: - 允許指定用來識別EOL (行尾)的字段。默認字符是\n。

Multi-Field as: - 選項是Data Only (默認值)和(...) Syntax。

Array Separator: - 允許指定作為Array Separator使用的字段。默認字符是"," (逗號)。

Array Format: - 選項是Linear或Block。默認值為Linear。

END (EOI) on EOL: - 結束或識別行尾。選項是YES或NO。默認值為NO。

Conformance: - 允許指定Direct I/O事務中將使用哪個GPIB IEEE一致性規范。選項是IEEE 488 (默認值)和IEEE 488.2。

Binblock: - 允許為Direct I/O事務指定Binblock格式。Binblock格式選項包括︰

None - 如果指定Conformance (上面)為IEEE 488.2，那么這是默認選項。

#A - IEEE 728碼組包頭，格式為︰#A<Byte_Count><Data>

#I - An IEEE 728碼組包頭，格式為︰#I<Byte_Count><Data>

#T - An IEEE 728碼組包頭，格式為︰#T<Data><END>

其中︰

- #是實際字符。
- A, I和T是實際字符。
- <Byte_Count>由兩個字節組成，這兩個字節構成一個不帶符號的16位整數，它指定<Data>中后面的字節數量。(VEE自動計算這個數字)。
- <Data>是由任意字節組成的數据流。
- <END>指明使用傳送的最后一個數据字節确定EOI。

State (Learn String): - State字段指明儀器是否配置成上傳和下載學習字符。選項是Not Config'd (默認值)或Configured。如果選擇Configured，那么將為輸入高亮度顯示Upload String和Download String字段。

Upload String: - 在從Direct I/O對象菜單中選擇Upload State時，Upload String字段指定發送到儀器的命令。它指定導致儀器輸出學習字符串的命令，詳情請參閱儀器編程手冊。注意，必須用雙引號把命令引起來。

Download String: - Download String字段指定在Direct I/O對象中的WRITE STATE (LEARN STRING)事務產生學習字符串前立即發送到儀器的字符串。這個字段用來支持在下載學習字符串時要求命令前綴的儀器，詳情請參閱儀器編程手冊。

Plug&play Driver欄︰

Plug&play Driver Name: - 指配給配置的Plug&play設備的驅程名稱。默認名稱是Unknown。

Parameters to init() call組︰

Address (eg GPIB-VXI0::12::INSTR): - Plug&play儀器的設備地址。

Perform Indentification Query - 在复選這個框時，在初始化時將查詢Plug&play設備ID。在默認狀態下會复選這個框。

Perform Reset - 在复選這個框時，將自動向設備發送一條Reset命令。在默認狀態下會复選這個框。

IVI-COM Driver欄︰

IVI-COM Driver/Session Name: - IVI-COM驅程或IVI Config Store會話的名稱。

Address: - 儀器的地址。在提供了會話名稱時，這個字段為空。

Perform Identification Query: - 執行識別字符串，如*IDN。

Perform Reset: - 复位儀器。

Use Class Compliant Interface: - IVI為不同的儀器類別提供了定義，如DMM或Scope。在复選這個复選框時，將從擁有制造商專用信息的設備專用 IVI驅程(默認值)切換到獨立于制造商的類別專用IVI驅程。

Configure IVI Driver Session: - 選擇這個按鈕會啟動Instrument Explorer。Instrument Explorer使用IVI Config Store查找儀器。通過使用Instrument Explorer，可以定義包含資源字符串及其它儀器參數的IVI會話。如需与Instrument Explorer及其功能有關的更多信息，請參閱其聯机幫助。

Panel Driver欄︰

ID Filename: - 點擊這個字段將出現Read from what Instrument Driver?對話框。在Read from what Instrument Driver?對話框中，可以從顯示的目錄和文件中選擇所需的ID Filename。

Sub Address: - 輸入Panel Driver的Sub Address (如有)。

Error Checking: - 打開或關閉Error Checking。默認值為ON。

Incremental Mode: - 打開或關閉Incremental Mode。默認值為ON。

Serial欄︰

Baud Rate: - 默認波特率為9600 (位/秒)。

Character Size: - 默認值為8(位)。允許的值為5, 6, 7, 8,和None。

Stop Bits: - 默認值為1。允許的值為1和2。

Parity: - 默認值為None。允許的值為None, Odd, Even, Mark,和Space。

Handshake: - 默認值為None。允許的值為None和Xon/Xoff。

Receive Buffer Size: - 默認值為4096 (bytes)。

GPIO欄︰

Data Width: - Data Width字段指定通過GPIO接口作為一個單位傳送的并行數据的位數。這個字段把接口配置成讀寫寬8位(默認值)或16位的數据。不需要与這個字段同時設置硬件開關。

A16 Space欄︰ (僅适用于VXI)

Byte Access (D8) - Byte Access字段指定VXI設備是否支持8位A16存儲器訪問。Byte Access選項有︰

NONE - 設備不支持字節訪問。這是默認值。

ODD ACCESS - 設備支持字節訪問，但只在奇數字節邊界(D08(O))上支持。

ODD/EVEN ACCESS - 設備在所有邊界(D08(E))上支持字節訪問。

Word Access (D16) - Word Access字段不能編輯。所有VXI設備必須支持16位訪問(D16)。

LongWord Access (D32) - LongWord Access字段指定VXI設備是否支持32位A16存儲器訪問。LongWord Access選項有︰

NONE - 設備不支持32位訪問。這是默認值。

D32 ACCESS - 設備支持32位A16存儲器訪問。

Add Register - 每次在點擊Add Register字段時，在對話框右半部分將出現一行新字段。每個新字段允許配置對設備A16存儲器的訪問。共有4個字段︰

Name - 這是寄存器的符號名稱，用來指明使用READ REGISTER或WRITE REGISTER事務時Direct I/O對象中的特定寄存器。

Offset - 這是配置的寄存器較設備A16存儲器相對庫的偏置，單位為字節。默認Offset為0。

Format - 這是讀出或寫入配置的寄存器的數据格式。將在Offset字段指定的字節上發生讀或寫訪問。可能的格式包括︰
- BYTE - 讀或寫一個字節。設備必須支持、并使用上面的Byte Access字段把設備正确配置成進行8位訪問。如果BYTE字段為ODD，那么Offset字段中指定的字節位置必須是奇數。
- WORD16 - 讀或寫一個16位字。16位表示為2的補數整數。所有VXI設備都明确支持這种格式。
- WORD32 - 讀或寫一個32位字。32位表示為2的補數整數。即使LongWord Access字段指定為NONE (使用兩個D16訪問讀或寫全部32位)，VEE仍支持這种格式。如果LongWord Access字段指定為D32 ACCESS，那么將訪問全部32位。
- REAL32 - 讀或寫表示為IEEE 754 32位浮點數字的32位字。32位表示為2的補數整數。即使LongWord Access字段指定為NONE (使用兩個 D16訪問讀或寫全部32位)，VEE仍支持這种格式。如果LongWord Access字段指定為D32 ACCESS，那么將訪問全部32位。

Mode - 指定寄存器將支持哪种I/O模式。選項包括︰
- READ - 這個寄存器只在READ REGISTER事務中作為選項出現。
- WRITE - 這個寄存器只在WRITE REGISTER事務中作為選項出現。
- READ/WRITE - 這個寄存器在READ REGISTER和WRITE REGISTER事務中同時作為選項出現。

Delete Register - 在點擊Delete Register字段時，將出現一個Select Register To Delete對話框，其中包含著當前配置的每個寄存器的符號Name。點擊希望刪除的寄存器的符號Name，然后點擊OK按鈕确認刪除操作。

A24/A32 Space欄︰ (僅适用于VXI)。

A24/A32 Space指VXI設備中的A24或A32擴展存儲器。VXI設備可以實現A24存儲器或A32存儲器，并不能同時實現這兩种存儲器。

Byte Access (D8) - Byte Access字段指定 VXI設備是否支持8位擴展存儲器訪問。Byte Access選項有︰

NONE - 設備不支持字節訪問。這是默認值。

ODD ACCESS - 設備支持字節訪問，但只在奇數字節邊界(D08(O))上支持。

ODD/EVEN ACCESS - 設備在所有邊界(D08(E))上支持字節訪問。

Word Access (D16) - Word Access字段字段不能編輯。所有VXI設備必須支持對所有存儲空間進行16位訪問(D16)。

LongWord Access (D32) - LongWord Access字段指定 VXI設備是否支持32位擴展存儲器訪問。LongWord Access選項有︰

NONE - 設備不支持32位訪問。這是默認值。

D32 ACCESS - 設備支持32位擴展存儲器訪問。

Add Location - 每次在點擊Add Location字段時，對話框的右半部分將出現一行新字段。每個新字段允許配置對設備擴展存儲器的訪問。共有4個字段︰

Name - 這是存儲器位置的符號名稱，用來指明使用READ MEMORY或WRITE MEMORY事務時Direct I/O對象中的特定存儲器位置。

Offset - 這是配置的存儲器位置較設備擴展存儲器相對庫的偏置，單位為字節。默認Offset為0。

Format - 這是讀出或寫入配置的存儲器位置的數据格式。將在Offset字段指定的字節上發生讀或寫訪問。可能的格式包括︰
- BYTE - 讀或寫一個字節。設備必須支持、并使用上面的Byte Access字段把設備正确配置成進行8位訪問。如果BYTE字段為ODD，那么Offset字段中指定的字節位置必須是奇數
- WORD16 - 讀或寫一個16位字。16位表示為2的補數整數。所有VXI設備都明确支持這种格式。
- WORD32 - 讀或寫一個32位字。32位表示為2的補數整數。即使LongWord Access字段指定為NONE (使用兩個D16訪問讀或寫全部32位)，VEE仍支持這种格式。如果LongWord Access字段指定為D32 ACCESS，那么將訪問全部32位。
- REAL32 - 讀或寫表示為IEEE 754 32位浮點數字的32位字。32位表示為2的補數整數。即使LongWord Access字段指定為NONE (使用兩個D16訪問讀或寫全部32位)，VEE仍支持這种格式。如果LongWord Access字段指定為D32 ACCESS，那么將訪問全部32位。

Mode - 指定存儲器位置將支持哪种I/O模式。選項包括︰
- READ - 這個存儲器位置只在READ REGISTER事務中作為選項出現。
- WRITE - 這個存儲器位置只在WRITE REGISTER事務中作為選項出現。
- READ/WRITE - 這個存儲器位置在READ REGISTER和WRITE REGISTER事務中同時作為選項出現。

Delete Location - 在點擊Delete Location字段時，將出現一個Select Memory Location To Delete對話框，其中包含著當前配置的每個存儲器位置的符號Name。點擊希望刪除的存儲器位置的符號Name，然后點擊OK按鈕确認刪除操作。

位置

I/O [image] Instrument Manager... 然后選擇Add...或Properties，然后選擇Advanced...

另請參閱

Instrument Properties, Instrument Manager

添加儀器配置

使用Direct I/O對象


Advanced I/O

一个菜单项。

用途

使用Advanced I/O访问下述对象，实现对GPIB、RS-232 (串行)、VXI、LAN和USB接口的低级控制 (如总线命令, 轮询和服务请求)：

Interface Operations

Device Event

Interface Event

MultiDevice Direct I/O

备注

VXIplug&play不支持任何Advanced I/O功能。

位置

I/O [image] Advanced I/O

另请参阅

Bus I/O Monitor, Device Event, Interface Event, Interface Operations和MultiDevice Direct I/O

轮询GPIB仪器


Align

一个Edit菜单选项，允许在物理上对准VEE Panel和Detail视图中的对象。

用途

Align为操纵VEE对象的物理位置提供了多种选项。这些选项控制水平对准和垂直对准以及对象的分布。可以按住CTRL键，同时使用鼠标左键，选择希望对准的多个对象。也可以按住CTRL键，使用鼠标左键从选定区域的左角到右角画一个框，选择希望对准的多个对象。最后，如果想选择全部对象，可以进入Edit菜单，选择Select All。一旦已经选择了对象，使用下面其中一个菜单选项，执行对准：

  • Middles - 使用最左面对象的中间作为Y坐标参考点，对选定VEE对象执行水平对准。

  • Tops - 使用最左面对象的顶部作为Y坐标参考点，对选定VEE对象执行水平对准。

  • Bottoms - 使用最左面对象的底部作为Y坐标参考点，对选定VEE对象执行水平对准。

  • Centers - 使用最上面对象的中心作为X坐标参考点，对选定VEE对象执行垂直对准。

  • Lefts - 使用最上面对象的左侧作为X坐标参考点，对选定VEE对象执行垂直对准。

  • Rights - 使用最上面对象的右侧作为X坐标参考点，对选定VEE对象执行垂直对准。

  • Distribute Horizontally ? 使用最左侧对象的左侧，在水平面上均匀分布对象，执行选定VEE对象的水平分布。

  • Distribute Vertically - 使用最上面对象的顶部，在垂直面上均匀分布对象，执行选定VEE对象的垂直分布。

备注

在对准对象时，如果其新位置导致与一个对象重叠，可以使用Bring-to-Front或Send-to-Back功能，按需重新排列对象。

在发生对准后，对准的对象不能反选。这允许对同样这些对象进行后续分组对准。

在对准或分布期间不移动参考对象。

位置

Edit [image] Align

Middles或

Tops或

Bottoms或

Centers或

Lefts或

Rights或

Distribute Horizontally

Distribute Vertically

另请参阅

默认首选项, Bring to Front (对象菜单), Send to Back (对象菜单)和Select All


Allocate Array

一個菜單項。

用途

使用Allocate Array存取下述數組構件和初始化對象︰

Alloc Text

Alloc UInt8

Alloc Int16

Alloc Int32

Alloc Int64

Alloc Real32

Alloc Real64

Alloc Coord

Alloc Complex

Alloc PComplex

備注

使用Set Values修改已經存在的數組。

位置

Data [image] Allocate Array

另請參閱

Alloc Coord, Alloc Complex, Alloc UInt8, Alloc Int16, Alloc Int32, Alloc PComplex, Alloc Text, Alloc Real32, Alloc Real64, Get Values, Set Mappings, 和 Set Values。

分配數組

改變數組中的值

對象菜單


Alloc Boolean

創建布爾數組的對象。

用途

使用Alloc Boolean創建由Boolean元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value | Lin Ramp | Log Ramp

Init Value - 放在每個數組元素中的值。這個值被解釋為Boolean。默認值是False。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] Boolean

另請參閱

Int32, Get Values, Set Mappings和Set Values。

分配數組, Properties (對象)和對象菜單


Alloc Complex

創建Complex數組的對象。

用途

使用Alloc Complex創建由Complex元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value - 放在每個數組元素中的值。默認值是(0, 0)。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] Complex

另請參閱

Complex, Get Values, Set Mappings和Set Values。

分配數組, Properties (對象), 對象菜單


Alloc Coord

創建Coord數組的對象。

用途

使用Alloc Coord創建由Coord元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。与Int32和Real64等其它數組類型不同，Num Dims只能是1，因為VEE中不支持一維以上的Coord數組。

Num Coord Dims - 每個Coord中的取值數量，有效范圍為2 - 10。

Init Value - 放在每個數組元素中的值。默認值是(0, 0), (0,0,0), (0,0,0,0)等等，具体取決于Num Coord Dims的值。

Size - 維度中的元素數量。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

位置

Data [image] Allocate Array [image] Coord

另請參閱

Allocate Array, Build Data, Coord, Get Values, Set Values和UnBuild Data。

分配數組, Properties (對象)和對象菜單


Alloc Int16

創建整數數組的對象。

用途

使用Alloc Int16創建由2字節整數元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value | Lin Ramp | Log Ramp

Init Value - 放在每個數組元素中的值。這個值被解釋為整數。默認值是0。

Lin Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用相等間隔的整數值的線性斜坡。只有在Num Dims = 1時才能使用這個選項。

Log Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用對數間隔的整數值的斜坡。只有在Num Dims = 1時才能使用這個選項。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] Int16

另請參閱

Int16, Get Values, Set Mappings和Set Values。

分配數組, Properties (對象)和對象菜單


Alloc Int32

創建整數數組的對象。

用途

使用Alloc Int32創建由4字節整數元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value | Lin Ramp | Log Ramp

Init Value - 放在每個數組元素中的值。這個值被解釋為整數。默認值是0。

Lin Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用相等間隔的整數值的線性斜坡。只有在Num Dims = 1時才能使用這個選項。

Log Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用對數間隔的整數值的斜坡。只有在Num Dims = 1時才能使用這個選項。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] Int32

另請參閱

Int32, Get Values, Set Mappings和Set Values。

分配數組, Properties (對象)和對象菜洙


Alloc Int64

創建整數數組的對象

用途

使用Alloc Int64創建由8字節整數元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value | Lin Ramp | Log Ramp

Init Value - 放在每個數組元素中的值。這個值被解釋為整數。默認值是0。

Lin Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用相等間隔的整數值的線性斜坡。只有在Num Dims = 1時才能使用這個選項。

Log Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用對數間隔的整數值的斜坡。只有在Num Dims = 1時才能使用這個選項。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置Location

Data [image] Allocate Array [image] Int64

另請參閱

Int32, Get Values, Set Mappings和Set Values。

分配數組, Properties (對象)和對象菜單


Alloc PComplex

創建PComplex數組的對象。

用途

使用Alloc PComplex創建由PComplex元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value - 放在每個數組元素中的值。初始值的相位被歸一化，落在pi弧度和-pi弧度之間；如果數字的幅度為負值，它會通過使相位角位移180度，轉換成正值。默認值是(0, @0)。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] PComplex

另請參閱

Allocate Array, Get Values, PComplex, Set Mappings和Set Values。

分配數組, Properties (對象)和對象菜單


Alloc Real32

創建實數數組的對象。

用途

使用Alloc Real32創建由4字節實數組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value | Lin Ramp | Log Ramp

Init Value - 放在每個數組元素中的值。默認值是0。

Lin Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用相等間隔的實數值的線性斜坡。只有在Num Dims = 1時才能使用這個選項。

Log Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用對數間隔的實數值的斜坡。只有在Num Dims = 1時才能使用這個選項。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] Real32

另請參閱

Get Values, Real32, Set Mappings和Set Values。

分配數組, Properties (對象)和對象菜單


Alloc Real64

創建實數數組的對象。

用途

使用Alloc Real64創建由8字節實數組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value | Lin Ramp | Log Ramp

Init Value - 放在每個數組元素中的值。默認值是0。

Lin Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用相等間隔的實數值的線性斜坡。只有在Num Dims = 1時才能使用這個選項。

Log Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用對數間隔的實數值的斜坡。只有在Num Dims = 1時才能使用這個選項。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] Real64

另請參閱

Get Values, Real64, Set Mappings和Set Values。

分配數組, Properties (對象)和對象菜單


Alloc Text

創建Text數組的對象。

用途

使用Alloc Text創建由Text元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value - 放在每個數組元素中的值。這個值解釋為字符串。默認值是空(空字符串)。

Size - 維度中的元素數量。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] Text

另請參閱

Get Values, Set Mappings, Set Values和Text。

分配數組, Properties (對象)和對象菜單


Alloc UInt8

創建整數數組的對象。

用途

使用Alloc UInt8創建由1字節整數元素組成的數組。

Open View參數

Num Dims - 輸出數組中的維數。Num Dims是從1到10的整數。默認值是1。

Init Value | Lin Ramp | Log Ramp

Init Value - 放在每個數組元素中的值。這個值被解釋為整數。默認值是0。

Lin Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用相等間隔的整數值的線性斜坡。只有在Num Dims = 1時才能使用這個選項。

Log Ramp - 在斜坡初始值(含)和斜坡結束值(含)之間盡可能采用對數間隔的整數值的斜坡。只有在Num Dims = 1時才能使用這個選項。

Size - 維度中的元素數量。每個維度有一個大小字段。默認值是10。

可以在對象上或從數据輸入端設置Init Value和Size。

備注

為改變各個元素的值，使用Set Values。

如果Num Dims值變化，視圖會在Open View上自動創建或刪除字段，以便使維數大小字段与Num Dims值相匹配。

輸出數据沒有映射。使用Set Mappings映射數組的維度。

位置

Data [image] Allocate Array [image] UInt8

另請參閱

UInt8, Get Values, Set Mappings和Set Values。

分配數組, Properties (對象),和對象菜單


AlphaNumeric

显示字母数字数据的对象。

用途

使用AlphaNumeric把任何数据类型显示为单个值、一个Array 1D或一个Array 2D。为查看数组，使用滚动条滚动显示屏。

属性

ShowArrayIndices - 在这个属性为True，且收到的数据是一个数组时，显示区域中的每一行都带有索引。默认值为True。

Number Format - 如果复选Global格式，那么使用默认格式。默认值为启动。

Integer: - 如果Global Format关闭，指定在这个对象上显示的整数的数字格式。选项为Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a)和Binary (如#B00101010)。默认值为Decimal。

Real: - 如果Global Format关闭，指定在这个对象显示的实数的数字格式。选项为Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Sat 01/Jan/2003 17:01:38)。默认值为Standard。

Significant Digits: - 如果Global Format关闭，指定Real值显示的有效位数。

备注

如果AlphaNumeric对象的当前宽度太小，而不能显示数字类型的默认精度(使用当前指定的显示字体)，那么会显示一行星号(***)。调整对象大小，显示数据。

如果有一个2D Array，您将看到一个滚动条(除非已经调整对象大小，以显示整个数组)。

三维和更大的数组显示为字符串3D Array，依此类推。

显示的ASCII值0-31与字体有关，可能不能阅读。

在某些平台(操作系统)上可能不能正确显示长于2048个字符的文本字符串。在任何平台上都不能正确显示长于32767个字符的文本字符串。

位置

Display [image] AlphaNumeric

另请参阅

默认首选项和Logging AlphaNumeric。

显示标量值和Properties (对象)

显示取值数组和对象菜单


Arrange Icons

一个Windows菜单选项，控制着最小化的窗口图标在VEE工作空间中的排列。

用途

使用Arrange Icons存取下述图标放置函数：

by Position - 这一选项将根据其当前位置沿着VEE工作空间底部排列所有最小化的窗口图标。

by Name - 这一选项将按字母排列顺序沿着VEE工作空间底部排列所有最小化的窗口图标。

备注

如果没有打开的最小化窗口，那么不能使用Arrange Icons菜单项(变成灰色)。

位置

Window [image] Arrange Icons

另请参阅

Minimize All, by Name和by Position.


ArrayList - Add

在数组、列表或集合中增加一个项目。

位置

System [image] Collections [image] ArrayList [image] Add


ArrayList - Clear

清除数组、列表或集合中的项目。

位置

System [image] Collections [image] ArrayList [image] Clear


ArrayList - Contains Item?

查看数组、列表或集合什么时候包含某个项目。

位置

System [image] Collections [image] ArrayList [image] Contains


ArrayList - Count

计算数组、列表或集合中的项目数量。

位置

System [image] Collections [image] ArrayList [image] Count


ArrayList - Create

创建新的数组、列表或集合。

位置

System [image] Collections [image] ArrayList [image] Create


ArrayList - Enumerate

枚举数组、列表或集合的成员。

位置

System [image] Collections [image] ArrayList [image] Enumerate Items


ArrayList - Get

從一個數組、列表或集合中獲得一個項目。

位置

System [image] Collections [image] ArrayList [image] Get Item


ArrayList - Remove Item

从数组、列表或集合中删除一个单元。

位置

System [image] Collections [image] ArrayList [image] Remove


ArrayList - Set Item

把现有值设置成数组、列表或集合中的新值。

位置

System [image] Collections [image] ArrayList [image] Set Item


asClrType

asClrType(x, t)

把VEE數据容器憙?#36716;換成懀?#31867;型的.NET對象的函數。

用途

使用asClrType把VEE數据容器轉換成懀?#31867;型的.NET對象。對VEE和.NET本机支持的所有數据類型，VEE在VEE和.NET之間自動實現數据類型轉換。例如，Int16, Int32, Real64等等。這是一個應滿足大多數VEE用例的設計判斷。在不太頻繁的用例中，您可能想𠀾ndo?撤銷操作)這一自動轉換，以便能夠作為真正的.NET對象使用數据。在這些情況下，可以使用asClrType類型轉換函數，把VEE數据類型轉換成.NET/CLR對象。

憙?#26159;一個VEE數据容器。支持的VEE數据容器類型有Uint8, Int16, Int32, Real32, Real64, Text以及這些類型的數組。 懀?#26159;一個.NET/CLR類型。支持的.NET/CLR數据類型包括所有原始類型(System.Boolean, System.Byte, System.Sbyte, System.Int16, System.Uint16, System.Int32, System.Uint32, System.Int64, vUint64, System.Char, System.Double和System.Single), System.Decimal, System.DateTime和System.String。

返回一個懀?#31867;型的.NET對象。如果不支持VEE數据容器或.NET/CLR類型，那么會發生錯誤440。如果轉換失敗，那么會發生錯誤464。

假設︰已經參考組件mscorlib.dll。這個組件提供了這一函數支持的所有.NET/CLR數据類型。

范例

VEE自動把.NET類型System.String轉換成VEE的Text。如果您想使用System.String類中的多個有用函數，可以使用asClrType，把文本轉換回到System.String︰

Set dotnetString = asClrType("abacusabcus", System.String);

dotNetString.EndsWith(“us”);

另請參閱examples\DotNet\StringSplit.vee.

位置

Device [image] Function & Object Browser

Type: Built-in Functions

Category: Type Conversion

Member: asClrType


Auto Scrolling

自动滚动

在Detail视图中，拖动(但不要放下)对象到主工作区的边缘，暂停，工作区会向该方向滚动。可以把对象移动到任何边缘或拐角。


Beep

生成听得见的声音的对象。

用途

使用Beep生成指定频率、时长和音量的声音。

Open View参数

Frequency (Hz) - 声音的频率，单位为赫兹。默认值为1000 Hz。

Duration (sec) - 声音持续时间，单位为秒。默认值为0.1秒。

Volume (0-100) - 声音的相对音量，0是静音，100是最大。默认值为80。(在PC上，1 - 100之间的任意值会产生相同的音量。但是，0值会静音。) 对所有版本的Windows，忽略这个参数。

所有这三个Open View参数都可以添加为数据输入端。

备注

Beep对象的功能与硬件相关。在某些情况下，一个或多个Open View参数可能不会影响生成的实际声音。此外，某些计算机没有内置扬声器，可能要求外置扬声器模块。如需与音频输出功能有关的信息，请参阅计算机用户手册。

小于等于零的Frequency或Volume值会暂停规定的时长。

Beep对象可能会在长时间声音结束前完成执行(激活其序列输出端)。但是，执行后续Beep对象会暂停程序执行，直到已经完成前面的声音。

在Windows 98/ME上忽略频率和音量。

位置

Display [image] Beep

另请参阅

Properties (对象)和对象菜单


Boolean

輸出布爾標量或一維數組的一個對象。

用途

使用Boolean設置布爾常數或得到用戶輸入。點擊輸入字段，輸入一個值。

布爾數据間支持的運算包括︰

  • 邏輯運算: AND, OR, XOR, NOT(!)

  • 比較運算: ==, !=

下表說明了對布爾數据類型，執行模式8和其它執行模式之間的差別。

運算 | ExecMode VEE 8 | ExecMode VEE 7 | ExecMode VEE 6 | ExecMode VEE 4&5
TRUE, FALSE類型 | Boolean | Int32 | Int32 | 不支持
.NET或COM指配 例如: TreeView.ShowLines = TRUE | 支持 | 不支持 | 不支持 | 不支持
布爾和其它數据之間的邏輯運算: OR, NOT, XOR, AND 例如: TRUE或0.0 | 不支持 | 支持 | 支持 | 不支持
數學運算: 例如: sin(true) | 不支持 | 支持 | 支持 | 不支持
基本數學運算: +, -, *, / 例如: 1 + True, True + False | 不支持 | 支持 | 支持 | 不支持

范例

如果想使用Boolean作為面板視圖上的提示符，把Boolean對象名稱變成提示符。用戶在輸入字段中填寫所需的信息。

屬性

DataShape - 把取值的初始數据形狀設置成這個對象的輸出。可能的值為標量和Array 1D。

ArraySize - 在選擇DataShape 1D Array時，ArraySize設置數組的長度。

ArraySizeFixed - 在這個屬性為True時，數据不能增加或刪除線。只有在選擇DataShape 1D Array時才能使用這個選項。

Stepping Category - 在DataShape是Array 1D時禁用。

ShowArrayIndices - 在這個屬性為True時，索引輸入字段中的每一行。只有在選擇DataShape 1D Array時才能使用這個選項。默認值為True。

Wait for Input - 在這個屬性為True時，只有在對象值變化時對象才會操作。在沒有選擇這個屬性時，只要滿足任何限制，對象就會操作，并輸出當前選擇的值。默認值為False。

AutoExecute - 在這個屬性為True時，在選擇一個值時，對象操作，并啟動程序的其余部分。如果程序已經運行，會忽略AutoExecute。默認值為False。

InitialValue - 指定要設置的值。默認值為False。

InitializeAtPreRun - 在這個屬性為True時，在PreRun time時設置InitialValue。默認值為False。

InitializeAtActivate - 在這個屬性為True時，在Activate時設置Initial Value。默認值為False。

備注

從第8.0版，Agilent VEE在Compiled Functions中支持Boolean。用戶可以使用VEE_BOOL作為Complied Function的返回類型和參數類型。Agilent VEE作為Boolean處理VEE_BOOL。

Initialize最常用的用途是初始化UserObject內部的值。設置初始值的其它方式是使用大多數數据常數上提供的Default Value控制端。

可以為Default Value, Reset, Enable Editing和Disable Editing添加控制輸入。

Default Value輸入允許以程序化方式改變當前值。這一輸入要求一個整數值，其可以是Scalar或Array 1D。將重新配置Constant，以与輸入數据的形狀相匹配。

Reset輸入允許以程序化方式把值設置成假。如果Constant配置為Array 1D，所有值設置成假。忽略Reset輸入上的實際數据。

Enable Editing和Disable Editing輸入允許以程序化方式控制能否在對象的open view中改變值。

注意，InitialValue字段一直是標量，即使Boolean配置成數組。

位置

Data [image] Constant [image] Boolean

另請參閱

Alloc Boolean , Complex, Constant, Coord, Date/Time, Selection Control, Default Preferences, UInt8, Int16, Int32, Int64, PComplex, Real32, Real64, Text和Toggle Control

使用數据常數


Break

终止当前迭代循环的对象。

用途

使用Break停止循环，通过迭代器的序列输出端继续执行。

备注

Break通常与Until Break对象一起使用。它也可以与其它迭代对象一起使用，通常与If/Then/Else对象结合使用，有条件地停止迭代。

位置

Flow [image] Repeat [image] Break

另请参阅

For Count, For Range, For Log Range, Next, On Cycle, If/Then/Else,和Until Break。

循环部分VEE程序, Properties (对象)和对象菜单


Bring to Front (Object Menu)

Bring to Front (对象菜单)

通过改变对象的z顺序，把对象放到看得见的平面的前面。

用途

从Panel视图的对象菜单中，把选中的对象放到看得见的平面的前台中。

另请参阅

Send to Back (对象菜单), Align, 和Move (对象菜单)


Build Arb Waveform

从一个坐标数据集中创建波形的对象。

用途

使用Build Arb Waveform从由Coord 值组成的Array 1D中创建正态取样的波形。

Open View参数

Num Points - 输出波形中的点数。默认值为256。可以从数据输入中设置Num Points。

备注

Build Arb Waveform使用下面的公式：

  dx = (Xmax-Xmin)/Num Points

  Xvalue = Xmin + (point * dx)

因此，最后的数据点不是Coord最后的独立值。

每个Coord的独立值(x)必须大于或等于数组中前一个Coord的独立值。

Input Coord数组必须是(x,y)对，而不是(x,y,z)。

位置

Data [image] Build Data [image] Arb Waveform

另请参阅

Build Waveform, Comparator, Coord, Function Generator, Noise Generator, Pulse Generator, Properties (对象)和对象菜单

参阅范例

ScopeMask.vee


Build Complex

创建Complex数字的对象。

用途

使用Build Complex从实数部分和虚数部分创建一个Complex数字。

备注

如果其中一个输入是数组，另一个输入必须是Scalar或相同大小和形状的数组。两个输入都转换成Real64类型。输出的大小和形状与输入相同。忽略输入值的映射，不映射输出Complex值。

位置

Data [image] Build Data [image] Complex

另请参阅

Build Data, UnBuild Complex, Properties (对象)和对象菜单

参阅范例

Complex.vee


Build Coord

从实数中创建Coord的对象。

用途

使用Build Coord从实数部分构建一个Coord。

备注

数据输入数量决定着坐标字段的数量。默认值(和最小值)是2 (x,y)。坐标字段的最大数量是10个。

如果其中一个输入是数组，另一个输入必须是Scalar或相同大小和形状的数组。两个输入都转换成Real64类型。输出的大小和形状与输入相同。忽略输入值的映射。

数据输入形状必须是Scalar或Array 1D。

备注
对Coordinate数据类型，字段名一直是 x, y, z, w, v, u, t, s, r, q，即使您可能会改变输入端名称。这些字段名称在UnBuild Coord和sort(x)上使用。

位置

Data [image] Build Data [image] Coord

另请参阅

Build Data, Coord, UnBuild Coord, UnBuild Data, Properties (对象)和对象菜单

参阅范例

FutValue.vee


Build Data

一个菜单项。

用途

使用Build Data存取下述对象，从不同的部分创建特定数据类型的容器：

Build Coord

Build Complex

Build PComplex

Build Waveform

Build Arb Waveform

Build Spectrum

Build Record

位置

Data [image] Build Data

另请参阅

Allocate Array, Build Arb Waveform, Build Complex, Build Coord, Build PComplex, Build Record, Build Spectrum, Build Waveform, Set Mappings, Set Values和UnBuild Data。


Build PComplex

从不同的部分创建PComplex (极复数)数字的对象。

用途

使用Build PComplex从幅度部分和相位部分中创建一个PComplex数字。相位部分的单位取决于File [image] Default Preferences下的Trig Mode设置。

备注

如果其中一个输入是数组，另一个输入必须是Scalar或相同大小和形状的数组。两个输入都转换成Real64类型。输出的大小和形状与输入相同。忽略输入值的映射，不映射输出PComplex值。

初始值的相位进行归一化，落在pi弧度和-pi弧度之间。如果幅度是负数，它会转换成正数，相角位移180度。

位置

Data [image] Build Data [image] PComplex

另请参阅

Alloc PComplex, Build Complex, Build Data, Default Preferences, PComplex, UnBuild PComplex, Properties (对象)和对象菜单

参阅范例

Complex.vee, FutValue.vee和Manual10.vee


Build Record

从不同部分创建记录的对象。

用途

使用Build Record从标量部分或数组部分创建一条记录。输入数据部分变成输出记录中的字段。输出记录可以是标量或一维数组。

Open View参数

Output Shape - 可以把输出记录的形状设置成Scalar或Array 1D。

备注

记录中的字段名称来自相应输入端的名称。字段名称不分大小写(大写字母和小写字母表示的意思相同)。字段名称在一条记录内部不能重复。可以添加额外的数据输入，创建包括任意数量字段的记录。它支持记录的记录(记录中的字段本身是一个记录)。其对递归没有限制(除可用内存外)。

如果所有输入都是标量数量，那么Record输出端的记录将是一条标量记录，每个输入有一个字段，而不管指定的Output Shape是什么。

如果一个或多个输入是数组，那么得到的记录的形状取决于指定的Output Shape：

如果Scalar指定为Output Shape，那么输出记录将是一个标量，每个输入有一个字段。每个字段可以是标量或数组，其形状与相应的输入相同。

如果Array 1D指定为Output Shape，那么输出记录将是由多条记录组成的一维数组，每个输入有多个字段。如果输入是标量或一维数组，记录中的相应字段将是标量。如果输入是n维数组，那么相应的字段将是n-1维数组。如果一个以上的输入是数组，它们必须拥有相同的大小和形状。部分范例如下：

如果输入A是长10个要素的一维数组，输入B是标量，那么输出是由10个要素组成的一维记录数组，它有两个字段，即A和B。A输入数组的各个要素将出现在输出记录字段A的各个数组要素中。输入B将在输出记录的B字段中重复10次。

如果输入是由两个或多个维度组成的数组，输出记录仍将是Array 1D。例如，如果输入字段是两维数组，大小是10 x 3，那么输出记录是一个长10个要素的一维数组，但有一个字段是由3个要素组成的一维数组。

位置

Data [image] Build Data [image] Record

另请参阅

From DataSet, Get Field, Merge Record, Record Constant, Set Field, SubRecord, To DataSet和UnBuild Record。

把数据采集到记录中, Properties (对象)和对象菜单

参阅范例

appA_Records1.vee和Ch5_UnBuild.vee


Build Spectrum

从不同部分创建Spectrum的对象。

用途

使用Build Spectrum从由PComplex或Complex数字组成的数组和频率间隔信息中构建频谱值。

范例

如果有一个由[5], PComplex (0,@1), (0,@2)等组成的Array 1D，且开始频率等于11，结束频率等于16，那么频率样点等于11, 12, 13, 14, 15。

Open View参数

Start/Stop Freq |Center/Span Freq - 确定两个输入值是Start/Stop还是Center/Span。Start/Stop或Center/Span值都可以添加为输入。

Freq Sampling - 指定对取样值是线性取样还是对数取样。默认值是Linear。

备注

忽略输入PComplex值的映射关系。

VEE不跟踪dB标度的数据。在dB标度的数据上执行运算时，必须保证它们正确完成运算。

为在线性标度数据和db标度数据之间转换，使用VEE程序安装目录下lib目录中与VEE一起提供的库程序。

其点数与取样间隔相同，每个点位于取样间隔的开头。

位置

Data [image] Build Data [image] Spectrum

另请参阅

Build Data, Build Waveform和UnBuild Spectrum。

fft(x), Properties (对象),和对象菜单


Build Waveform

从不同部分创建Waveform的对象。

用途

使用Build Waveform从由幅度值和时间跨度信息组成的实数数组中创建一个Waveform。

Open View参数

Time Span - y数据取样的时长，单位为秒。Time Span可以添加为数据输入。默认值为20ms。

备注

忽略输入值的映射关系。Build Waveform假设y数据在一定间隔上以恒定速率线性取样。

样点数量与取样间隔相同。每个点位于取样间隔的开头。

位置

Data [image] Build Data [image] Waveform

另请参阅

Build Arb Waveform, Build Data, Build Spectrum,和UnBuild Waveform.

ifft(x), Properties (对象)和对象菜单

参阅范例

DigFilt.vee和ReadMarkerValues.vee


Bus I/O Monitor

记录通过I/O接口路径(GPIB, GPIO, USB, LAN, VXI或RS-232)发送的消息的对象。

用途

使用Bus I/O Monitor记录在VEE与其通过Instrument Panels, Component Drivers, Direct I/O和Advanced I/O设备控制的任何仪器之间传送的每个字节(命令或数据)。记录的信息可以选择性地发送到一个日志文件中。Bus I/O Monitor不显示来自Plug&play Drivers的信息。

Bus I/O Monitor的显示区域包含五个列。对GPIB、GPIO和RS-232，这些列是：

第1列 - 行号。

第2列 - GPIB命令(*), 数据输出(>)或数据输入(<)。

第3列 - 传送的字节的十六进制值。

第4列 - 与传送的字节对应的7位ASCII字符。

第5列 - 总线命令助记符(仅GPIB总线命令)。

在监测GPIB通信时，只使用第1列到第3列。

在监测RS-232通信时，只使用第1列到第4列。

对VXI，这些列是：

第1列 - 行号。

第2列 - VXI命令(*), 数据输出(>)或数据输入(<)。

第3列 - 内存空间(A16, A24或A32), 寄存器或位置的符号名称, 距命名位置的偏置。

第4列 - 传送的字节的十六进制值。

第5列 - VXI仪器的逻辑地址。

对象菜单

Clear - 清除Bus I/O Monitor的内容。Clear可以添加为控制输入端。

Clear Log File - 删除指定日志文件的内容。这个参数可以添加为控制输入。

属性

Logging

LoggingEnabled - 记录Bus I/O Monitor列表区域中的活动。可以添加Log Enable和Log Disable控制输入端。默认值为True。

FileLoggingEnabled - 在由Bus I/O Monitor记录时，把数据发送到指定文件。监视器数据一直附加到指定文件的末尾。可以在Bus I/O Monitor的Open View上指定Log File Name，也可以添加为控制输入。默认值为False。

BufferSize

Lines: 确定监视器显示屏中保留的最大行数。一旦监视器已满，监视器开头的行会被丢弃，以便为新记录的行留出空间。默认值为256。

备注

在显示为图标，而不是Open View时，Bus I/O Monitor的执行速度要快得多。

每个Bus I/O Monitor对象能够监测一条物理总线。例如，为监测一张GPIB卡和一张RS-232卡上的VEE活动，用户需要两个Bus I/O Monitors。

Bus I/O Monitor并不是通用的硬件总线监视器，因为它只显示VEE输入和输出的字节。输入/输出到总线的任何其它程序都不会把其I/O记录到VEE监视器上。

通过使用Control Panel中的Date/Time Properties对话框 (Time Zone栏)，可以改变这个对象中出现的时区。在改变时区设置后，必须重启VEE，才能使变化生效。

位置

I/O [image] Bus I/O Monitor

另请参阅

Advanced I/O和Instrument Manager。

监测总线消息


Button

按钮

参阅切换控制。


by Name

管理图标(最小化的窗口)在VEE工作空间中排列的函数。

用途

使用by Name，以字典顺序在VEE工作空间中排列图标(最小化的窗口)。图标将对齐和/或堆叠在工作空间的底部。它根据图标标题栏中出现的名称按字典顺序排列图标。

位置

Window [image] Arrange Icons [image] by Name

另请参阅

Arrange Icons, by Position和Minimize All。


by Position

管理图标(最小化的窗口)在VEE工作空间中排列的函数。

用途

使用by Position排列图标(最小化的窗口)在VEE工作空间中的物理位置。图标会整齐地对准和/或堆叠在工作空间底部。

位置

Window [image] Arrange Icons [image] by Position

另请参阅

Arrange Icons, by Name和Minimize All。


Call Stack

用于程序调试的一个View菜单对象。

用途

使用Call Stack对话框，协助调试VEE程序。Call Stack对话框显示目前正在执行程序的UserObject或UserFunction。除识别目前正在执行的对象外，对话框还显示哪些UserObject或UserFunction调用目前正在执行的对象的列表或层级。

只有在程序处于暂停状态时，Call Stack对话框才显示有用的信息。在程序运行时，没有提供任何信息。可以通过多种方式暂停程序，包括Activate Breakpoint, Pause等等。

对话框信息

Call Stack对话框没有包含用户可以编辑的字段或按钮。在Call Stack对话框的标题栏下面是一个状态字段。这个状态字段指明程序的当前状态。在程序执行时，状态栏将显示：Program is running。

在程序暂停及启用Call Stack时，会发生三件事。

1. Call Stack对话框状态栏将指明程序中下一个执行的对象。这个显示屏采用下述格式：

Next Object: object Title(objectType)

其中object Title是对象标题栏中显示的文本，(objectType)是将执行的对象类型，如Formula对象。

2. 在状态栏中识别的对象将高亮度显示在VEE工作空间中。

3. 导致目前正在执行的对象或函数的调用的层级显示在对话框窗口内部。点击层级中列出的任何项目，会把该UserObject或UserFunction调入VEE工作空间中，并高亮度显示。

备注

Call Stack可以与Step Into, Step Out和Step Over函数结合使用，协助调试VEE程序。

位置

View [image] Call Stack

另请参阅

Activate Breakpoints, Find, Pause, Profiler, Run/Resume, Step Into, Step Out, Step Over和切换断点

查看调用堆栈


Cascade

在VEE工作空间中管理多个窗口的一个函数。

用途

使用Cascade作为重叠窗口排列VEE工作空间中打开的(没有最小化的)所有窗口。工作空间中的窗口将堆叠在一起，向下及向右偏移。

备注

在VEE工作空间中打开多个窗口时，可以结合使用Ctrl键及其它键，在工作空间中滚动没有最小化的其它窗口。

同时按Ctrl+Tab或Ctrl+F6键，把当前最上面的窗口移动到窗口堆栈最下面。然后可以看到堆栈中的下一个窗口。

同时按Ctrl+Shift+Tab或Ctrl+Shift+F6键，把窗口堆栈中最下面的窗口移动到窗口堆栈最上面。

位置

Window [image] Cascade

另请参阅

Arrange Icons, Close All, Minimize All, Tile Horizontally和Tile Vertically。


Change Extension

改变文件名中的扩展名。例如，使用这个对象，可以把文件test.txt变成test.doc。

位置

System [image] Path [image] Change Extension


Check Box

复选框

参阅切换控制。


Clean Up Lines

在Main程序、UserObject或UserFunction中重新画所有线，只使用横线段和竖线段路由对象。

用途

如果使Automatic Line Routing失效，那么可以端到端简明地连接线 (除非被钉住)。随时可以选择Clean Up Lines，整理程序中的线。

备注

Clean Up Lines与上下文相关；在从UserObject或UserFunction Edit菜单中选择时，只有该特定上下文内部的线受到影响。在从菜单栏Edit中选择时，只有根上下文(并不是任何UserObjects都有根上下文)中的线受到影响。

在复杂的程序中，重新路由线可能需要一会儿时间。

在某个路由看起来非常复杂时，把部分对象的距离移开一些，为Auto Line Routing功能提供更多的空间，找到更短的路径。

在使用Clean Up Lines后，有时很难确定是两条线相交还是一条线连接到三个位置。使用Line Probe显示线的端点。

位置

Edit [image] Clean Up Lines
或
UserObject (Object Menu) [image] Edit [image] Clean Up Lines

另请参阅

默认首选项, Line Probe和UserObject。


Clear All Breakpoints

清除执行断点。

用途

使用Clear All Breakpoints，在完成调试时从对象中删除所有断点。

位置

Debug [image] Clear All Breakpoints

另请参阅

Activate Breakpoints, Properties (对象)和Toggle Breakpoint。

控制断点


Clone (Object Menu)

Clone (对象菜单)

复制这个对象，并把对象拷贝放在Paste缓冲器中。

用途

使用Clone生成对象的拷贝。Clone可以立即提供复制对象，把对象的拷贝放在Paste缓冲器中。Clone复制被克隆的对象的所有属性，包括端、参数和大小。

备注

如果想同时复制多个对象，使用CTRL-鼠标左键或Edit [image] Select All选择多个对象，然后使用Edit [image] Copy和Edit [image] Paste (或CTRL-c和CTRL-v)。

每次Clone会覆盖Paste缓冲器中以前的内容。

每次Clone一个UserObject会独立拷贝其中的所有对象。改变一个拷贝不影响任何其它拷贝。

每次Clone一个Instrument Panel会反映同一部仪器的不同状态。

快捷方式

选择要克隆的一个或多个对象。把鼠标放在一个或多个对象上，按住CTRL-鼠标左键。把克隆的对象拖到希望的位置(在对象被克隆前，移动的距离不得少于65个像素)。

位置

在每个对象菜单上 [image] Clone

另请参阅

对象菜单, Cut (对象菜单), Copy, Paste和Replace。


Close All

在VEE工作空间中管理窗口使用的一个函数。

用途

Close All将关闭所有打开的或最小化的窗口(图标)，留下空白的VEE工作空间。

位置

Window [image] Close All

另请参阅

Arrange Icons, Cascade, Minimize All, Tile Horizontally和Tile Vertically。


CLR Version

从主机中检索公共语言运行时(CLR)的版本。

位置

System [image] Environment [image] CLR Version


Color Alarm

根据Scalar输入的值显示不同颜色和文本字符串的对象。

用途

使用Color Alarm作为"LED"，根据输入值和用户自定义范围显示颜色和文本字符串。还可以以可选的数字字段显示输入值。

属性

ClearAtPreRun - 在这一属性为True时，在PreRun时清除Color Alarm的内容。默认值为True。

 ClearAtActivate - 在这一属性为True时，在Activate时清除Color Alarm的内容。默认值为True。

Shape - 选择Color Alarm显示画面的形状。默认值为Circular。

 Show 3-D Border - 在这一属性为True时，Color Alarm会加上阴影，提供三维外观。在这一属性为False时，Color Alarm显示为单一的颜色；在需要非常小的"LED"显示，需要对象运行速度更快，或希望查看三维视图时，适合采用这一功能。

 ShowDigitalDisplay - 在这一属性为True时，在对象Open View的底部会显示输入值的数字画面。在这一属性为False时，不显示数字画面，对象运行速度会更快。默认值为False。

HighColor - 指定最高范围使用的颜色 (即大于High Limit)。

 High Text - 指定在使用HighColor时Color Alarm上显示的文本。默认值为High。

 High Limit - 定义最高范围的数字下限。这个值必须大于等于Low Limit。

 MidColor - 指定中间范围使用的颜色 (即小于等于High Limit，且大于Low Limit)。

 Mid Text - 指定在使用MidColor时Color Alarm上显示的文本。默认值为Mid。

 Low Limit - 定义最低范围的数字上限。这个值必须小于等于High Limit。

 LowColor - 指定最低范围使用的颜色(即小于等于Low Limit)。

 Low Text - 指定在使用LowColor时Color Alarm上显示的文本。默认值为Low。

备注

输入数据必须是Scalar，并能够转换成Real64 (Complex, PComplex, Spectrum和Coord必须先"拆散"。)

Low Limit必须小于High Limit。

如果只想使用两个颜色范围，把Low Limit设置成等于High Limit。

如果只想使用一种颜色，把LowColor、MidColor和HighColor设置成相同的颜色。

位置

Display [image] Indicator [image] Color Alarm

另请参阅

AlphaNumeric, Fill Bar, Logging AlphaNumeric, Meter, Tank和Thermometer。

显示颜色告警

对象菜单


COM對象 - 問題診斷

有時在Microsoft Visual Studio .NET或Agilent VEE中使用COM類型庫作為.NET組件時，您可能會收到警告信息。

原因

Microsoft Visual Studio .NET和Agilent VEE都試圖使用TypeLibConverter.ConvertTypeLibToAssembly API把COM類型庫自動轉換成.NET interop組件。您將看到錯誤信息，因為API不能把COM類型庫轉換成.NET interop組件。

解決方法

為解決這個問題，試著使用.NET Framework SDK 1.1自帶的命令行輔助工具TlbImp。您需要從微軟開發人員网絡中下載和安裝SDK，因為VEE不分發SDK。如果已經安裝了Visual Studio .NET 2003，那么您已經安裝了SDK，不需要下載。

  1. 打開一個命令窗口，把目錄變成空文件夾。

  2. 輸入下述內容︰<PathToSDK>\TlbImp.exe <PathToYourComTypeLib.dll>

例如c:\program files\Microsoft Visual Studio .NET 2003\sdk\v1.1\bin\TlbImp.exe
c:\program files\IVI\bin\rsfs.dll

這會生成.NET interop組件，如干淨的文件夾中的Rsfs_RohdeAndSchwarzLib.dll。它還會在相同的目錄下生成任何相關組件。

  3. 把生成的組件复制到VEE程序所在的地方。例如，如果程序位于C:\VEE programs\Rsfs.vee下，那么把生成的所有組件复制到c:\VEE programs下。

  4. 打開VEE程序，開始正常使用VEE程序。例如，如果它是IVI-COM驅程，您可以根据"To/From IVI-COM"聯机幫助主題中的說明操作。如果它是任何其它COM類型庫，可以使用Device [image] .NET Assembly References對話框瀏覽到interop組件。

備注

也可以使用TlbImp，生成可以由多個程序共享的Primary Interop Assembly，而不必复制到与程序相同的目錄下。有時，這是最佳方法，如IVI-COM驅程。如需与TblImp有關的更多信息，請參閱微軟開發人員网絡。


Command Line

检索整个命令行及参数，用来启动这个VEE会话。

位置

System [image] Environment [image] Command Line


Command Line Args

把启动VEE当前会话使用的命令行自变量检索到一维数组中。

位置

System [image] Environment [image] Command Line Args


Comparator

比较两个值、然后输出未通过比较的坐标的对象。

用途

使用Comparator把一个数字测试值(如Waveform或Coord)与一个参考值进行比较。如果Test Value中的一个或多个值未通过比较，那么在Failures输出端会输出Coord Array 1D，并激活Failed输出端。如果所有值都通过比较，那么在Failures输出端会输出一个空白的Coord，并激活Passed输出端。

Failures输出Coord Array 1D的独立字段(x)包含每个失败点的索引或映射关系。相关字段(y)包含失败的Test Value。

Open View参数

Test Value == Ref Value - 通过点击并从显示的列表中选择函数，可以改变比较运算符。默认值为==。

备注

Comparator只比较数字值，即使其位于Text对象中。Comparator不能比较文本字符串。

Ref Value的形状作为与Test Value相同的形状处理。例如，在Test Value是 Array 1D时，3的Scalar Ref Value作为Array 1D处理 (所有要素等于3)。如果比较多个数组，那么数组的大小和维数必须匹配。

如果Test Value是一个标量，那么Ref Value必须是一个标量。

如果Test Value是一个没有映射的数组，那么会忽略Ref Value上的任何映射。

如果Test Value是一个映射的数组，那么Failures输出Coord (x)的独立变量是失败的要素的映射关系。

如果Test Value是一个Coord，那么比较中只使用Coord的相关变量。Failures输出Coord包含失败的Coord值。

所有测试都使用"约等于"算法，检查等于或不等于至少6个有效位。如果Ref Value是由一个以上的要素组成的数组，那么会从参考数据的幅度中导出"虚拟零"值。取值为"0"的任何数据点必须与这个"虚拟零"值相匹配。

位置

Device [image] Comparator

另请参阅

Allocate Array, Build Arb Waveform, Coord, If/Then/Else, Set Values, Properties (对象)和对象菜单


Complex

输出常数Complex标量或Array 1D的对象。

用途

使用Complex设置Complex Constant或获得用户输入。点击输入字段，输入一个值。

范例

为作为面板上的提示使用Complex，把Complex对象的名字变成提示，如Enter the AC voltage:。用户在输入字段中填写请求的信息。

输入(2,10/27)，令Complex常数对公式求解，显示答案。

属性

 DataShape - 设置这一对象输出的值的初始数据形状。默认值为Scalar。

 ArraySize: - 在选择1D Array时，ArraySize设置数组的长度。默认值为10。

 ArraySizeFixed - 在这一属性为True时，数组不能添加或删除行。只有在选择1D Array时才能使用这一选项。

 ShowArrayIndices - 在这一属性为True时，输入字段中的每一行都带有索引。只有在选择1D Array时才能使用这一选项。默认值为True。

 Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

 InitialValue - 指定要设置的值。默认值为(0, 0)。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

 NumberFormat: - 如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Sat 01/Jan/2003 17:01:38)。默认值为Standard。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入可以以程序化方式改变当前值。这一输入要求一个Complex值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与进入的数据形状相匹配。

Reset输入可以以程序化方式把值设为零。如果Constant配置为Array 1D，那么所有值都设为零。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。

注意，InitialValue字段一直是一个标量，即使Complex配置成数组。

可以只输入实数值和虚数值，用逗号分隔这些值，令VEE格式化数字。

位置

Data [image] Constant [image] Complex

另请参阅

Alloc Complex, Build Complex, 默认首选项, Constant, Coord, Date/Time, Selection Control, Int16, Int32, PComplex, Real32, Real64, Text, Toggle Control, UInt8。

使用数据常数和对象菜单


Complex Plane

使用笛卡爾曲線顯示連續生成的數据的對象。

用途

使用Complex Plane在實數對虛數軸上顯示Complex、PComplex或Coord數据。

打開視圖參數

下面是默認的打開視圖參數。其用途及其它參數的使用情況由對象菜單及Properties對話框中的選項控制 (對象菜單 [image] Properties)。

Imag - Y (虛數)軸的名稱。

Trace1 - 第一條軌跡的名稱。

Real - X (實數)軸的名稱。

對象菜單

Auto Scale [image] -點擊這些菜單項，立即把畫面重新定標成顯示整條軌跡。（可以添加為控制端，或在收集數据后使用Scales屬性欄設置，自動調整顯示畫面的大小。）

Auto Scale - 自動定標兩個軸。

Auto Scale X - 自動定標X軸。

Auto Scale Y - 自動定標Y軸。

Zoom [image] - 縮放顯示畫面。

In - 放大顯示畫面，只包含使用指針選定的矩形區域。在選擇這一功能后，通過在圖形區域上拖動，可以選擇區域。這一操作使用?/span>橡皮圈?/span>框确定信息外形。

Out 2|5|10|20|50|100X - 在相對于中心的X方向和Y方向上，以某個倍數擴大顯示范圍。

Clear Control [image] - 指明什么時候清除顯示畫面的參數。

Display - 清除顯示的軌跡。這個參數可以添加為控制端。

Next Curve - 复位畫面，顯示一系列曲線中的下一個曲線 (畫面下次運行時的數据)，而不會清除上一個曲線。在系列中每條新曲線前必須選擇(或激活)Next Curve。可以作為控制輸入添加這個參數。

Center Markers - 如果提供了標尺，那么把它們放到軌跡看得到的部分的中心。如果滾動畫面，看不到標尺，可以使用這种功能。

Add Right Scale - 添加最多兩個額外的Y軸標度，允許多條軌跡有不同的標度范圍。在添加适當的標度后，可以添加輸入端 (對象菜單 [image] Add Terminal [image] Data Input)。然后使用 Properties對話框上的Traces和Scales欄設置其屬性。

Print - 出現Print對話框。按OK將在選定的輸出設備上打印或繪制設備的整個畫面拷貝。可以作為控制輸入添加Print。

屬性

Name - 為顯示畫面指配一個變量值。通過輸入名稱，在打開時可以以程序化方式讀取標尺值。變量是Object數据類型，是存在畫面的上下文的局部變量。詳情請參閱備注。

ClearAtPreRun - 在屬性為True時，在PreRun時清除畫面。默認值為True。

ClearAtActivate - 在屬性為True時，在Activate(上下文輸入)時清除畫面。默認值為True。

ShowTracesLegend - 在打開的視圖中，控制軌跡名稱和顏色的可視性。使用EditTracesAndScales控制軌跡圖例的編輯按鈕功能。默認值為True。

ShowScalesLegend - 在打開的視圖中，控制標度名稱的可視性。使用EditTracesAndScales控制標度圖例的編輯按鈕功能。默認值為True。

ShowScalesLabels - 在打開視圖中，控制標為標度軸的值的可視性。默認值為True。

Show Scroll Bars - 在打開視圖中，控制X和Y標度上滾動條的可視性。默認值為True。

ShowAutoScaleButton - 在打開的視圖中，控制Auto Scale按鈕的可視性。默認值為False。

EnableEditTracesAndScales - 在打開的視圖中，控制軌跡和標度屬性的編輯按鈕功能。在啟用時，點擊各個軌跡或標度名稱，編輯其屬性。默認值為True。使用ShowTracesLegend和ShowScalesLegend控制軌跡和標度名稱的可視性。

GridType - 默認值為Axis。

NumMarkers: - 允許在顯示曲線上找到數据點的确切值。如果使用對數標度繪制數据，標尺上顯示的值為線性數据點。

點擊在畫面底部附近的標尺值左面按鈕的打開視圖，可以將標尺移動至一條不同的軌跡上。按鈕可以循環順序通過不同軌跡的不同線型和顏色。

 MarkersInterpolate - 在這一屬性為True時，可以在顯示的數据點中設置標尺。顯示的標尺值從線性內插計算得出。默認設置為False。

 MarkerColor - 標尺的顏色。

DisplayBackColor - 允許從調色板中選擇畫面區域的顏色。在細節視圖和面板視圖中顯示時，可以選擇不同的顏色。在設置Screen Element: Graph Background的Colors欄上的Default Preferences中，設置默認的Background顏色。

ScaleLabelFont: - 允許從系統提供的字体列表中選擇標度標記的字体。標度標記文本的默認字体在Screen Element: Graph Scale Label Text的Fonts欄上的Default Preferences中設置。

Traces Category:

Name: - 在圖形區域左面顯示的軌跡名稱及相應的輸入端名稱。

Color: - 軌跡的顏色。每條新增的軌跡有一個与現有軌跡不同的顏色。第一條軌跡的默認值是yellow。

LineStyle: - 連接多個數据點的線的格式。默認值為continuous line。

PointStyle: - 標記每個數据點的符號。為顯示沒有連接的數据點，選擇單點LineStyle格式及希望的PointStyle符號。默認值為dot。

Scale ?/span>如果存在一個以上的Y標度，選擇這條Trace使用的標度。

ScaleNumberFormat: (X和Y標度出現的屬性，外加額外的Y標度)

Scales 組︰

Show Scale: - 如果有多個Y標度，那么這個選項(使用复選框)將指明在圖形區域右面是否顯示端點和每個新增的适當標度的軸。

Scale Name: - 打開的視圖中出現的標度名稱。

Automatic Scaling: - 控制畫面是否自動重新定標，在收到數据后立即顯示整條軌跡。默認值為打開。如果這一項關閉，可以在Layout組中使用General欄上的Auto Scale按鈕，或在對象菜單上使用Auto Scale命令，來重新定標畫面。

Maximum: - 標度的最大值。

Minimum: - 標度的最小值。

Label Spacing: - 控制哪個tic號中標上標度值。X標度的默認值是Every Other Tic；Y標度的默認值是Every Major Tic。

Mapping: - x和y數据与畫面映射的方式。映射可以是線性映射或對數映射。為繪制log-log圖，把X軸和Y軸都變成Log。默認值為Linear。

Log Cycles: - 在Automatic Scaling啟動時顯示的10的最大數量(從x和y最大值向下計數)。只有在Mapping為Log時，才使用Log Cycles。在軌跡數据中包含大的動態范圍時，适合使用Log Cycles。默認值為4。

Scale Color - 任何背景柵格或tic號的顏色。默認值為Gray。

Global Format - 如果Global Format關閉，指定這個對象上顯示的實數數字格式。選項有︰Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如Sat 01/Jan/2003 17:01:38)。默認值為Standard。

X和Y標尺值采用与其附在的標度相同的數字格式。X和Y的增量標尺值使用默認數字格式，除非使用Time Stamp格式。如果X標度上的標尺1和標尺2或Y標度上的兩個標尺都使用Time Stamp格式，增量標尺值將使用Delta Time格式。

備注

輸入必須為Complex、 PComplex或Coord類型的Scalar或Array 1D。

通過只使用x和y值，而不是先轉換成Spectrum類型，來繪制Coord 型輸入數据圖。

使用Add Terminal [image] Data Input對象菜單選項添加軌跡，最多支持12條軌跡。

在Automatic Scaling屬性打開時(Scales欄)，如果把整個數据集合發送到顯示畫面上，程序執行速度要更快。然后，顯示畫面會自動重新定標一次。如果程序一次把一個數据點發送到顯示畫面上，顯示畫面可以在每個數字點以后自動重新定標，這會降慢程序執行速度。在這种情況下，使用Collector對象創建一個數組，然后把數組發送到顯示畫面上。

在這种情況下，使用Collector對象創建一個數組，然后把數組發送到顯示畫面上。

添加控制輸入

可以添加一個Title控制輸入端，把標題欄名稱設置成指定的文本值。這可以程控打印畫面時顯示的標題。

可以添加一個Traces控制輸入端。控制輸入數据必須是由多個記錄組成的數組(或如果只想控制一條軌跡，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為TraceNum的字段及一個整數值(1是第一條軌跡)。要求 TraceNum字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name

Pen

LineType

PointType

Name字段必須有一個文本值。Pen, LineType和PointType值必須是從0到 n 的整數，其中0不繪圖，n 是提供的選項數量。

可以添加一個Scales控制輸入端，控制上面列出的標度參數。控制輸入數据必須是由多個記錄組成的數組(如果只想控制一個標度，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為Scale的Text字段，取值為X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name - 在打開的視圖中改變標度名稱。必須是一個文本值。

Min - 設置X標度的最小值。必須是一個整數值或實數值。

Max - 設置X標度的最大值。必須是一個整數值或實數值。

Mapping - 必須有一個Linear或Log文本值。

AutoScale - 控制自動定標。必須有一個On或Off的文本值。

如需進一步信息，請參閱VEE高級技朮中的"使用記錄和DataSets"。

以程序化方式設置和讀取標尺值

可以以程序化方式獲得和設置標尺值。為準備顯示，打開Properties窗口。為Name輸入一個值。Name值暗示聲明Object變量是顯示畫面上下文的局部變量。然后，在Markers組中打開一個設置。VEE為標尺的X位置和Y位置指配下述屬性，包括增量值。(Marker1指向下；Marker2指向上。)

Marker1X (作為Real64獲得位置)

Marker1Y (作為Real64獲得位置)

Marker2X (作為Real64獲得位置)

Marker2Y (作為Real64獲得位置)

MarkerDX (作為Real64獲得位置)

MarkerDY (作為Real64獲得位置)

Marker1 (作為Coord獲得/設置位置)

Marker2 (作為Coord獲得/設置位置)

可以使用Marker1和Marker2屬性，讀取當前標尺位置，或把標尺移動到新位置。所有其它標尺屬性都是只讀的。如果試圖把標尺移動到不在軌跡的坐標上，標尺會"咬"住軌跡上最近的點上。

在程序中，在Formula對象中輸入一個或多個表達式，設置或讀取標尺值。每個表達式必須包含顯示畫面Name和相關的標尺屬性。標尺屬性名稱不分大小寫。如果顯示畫面的Name是XY，同時打開Delta Markers，那么下述表達式將讀取提供的所有標尺值，并作為Real64標量把它們指配給變量a到f︰

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把顯示畫面Name指配給一個全局變量。在Formula對象中，在程序內添加一個賦值表達式，使用Declare Variable對象聲明全局變量。例如，假設已經聲明globalXY變量為全局變量，并把其Type設為Object，那么在存在顯示畫面的上下文中，在程序中添加下面的表達式︰

Set globalXY = XY

可以從使用表達式的程序的另一個上下文中讀取顯示畫面的標尺值，如︰

a = globalXY.Marker1X

在開發程序時，您可能想包括一种方式暫停程序，以便在程序讀取值之前手動重新定位標尺。暫停程序的方式之一是在顯示畫面的序列輸出和Formula對象的序列輸入之間添加一個Confirm (OK)按鈕。您也可能想以程序化方式定位標尺。

位置

Display [image] Complex Plane

另請參閱

Magnitude Spectrum, Polar Plot, Strip Chart, Waveform (Time), X vs Y Plot, XY Trace和默認首選項。

在顯示畫面中設置標尺, 獲得和設置標尺屬性

對象菜單

Copyright (c) 1991-2007 Agilent Technologies, Inc.


Component Driver

把值??到用?具体??的?件中的?器控制?象。它与Panel Driver?象的??在于，其不?示?器的控制面板。

用途

使用Component Driver，通?一次只?置部分?件的值，?控制?器。在使用Component Driver之前，必?安?所需?器的?器?程。

?在VEE工作?中添加Component Driver?象，??I/O [image] Instrument Manager... ，?示Instrument Manager??框。?查配置的?器列表，查看是否有希望使用的?器?：

如果希望使用的?器位于列表中，且配置正确：

1. ???器?，高亮度?示它。

2. ??Component Driver按?。

如果希望使用的?器位于列表中，但需要改?配置，那么??Properties?/font>，使用??框改?配置，保存配置(??OK)，然后采用上面的第1步和第2步。

如果希望使用的?器?有位于列表中，??Add?/font>，使用??框改?配置，保存配置(??OK)，然后采用上面的第 1步和第2步。

如需与配置??框有?的信息，???Instrument Manager和Instrument Properties。

?注

可以在??Live Mode的情?下操作Component Driver。用?可以在不与?器通信的情?下?行程序，不管?器是否?接到?算机上。必?先把Live Mode?置成??(??Instrument Properties)，然后?器才能与物理?器通信。

?使用?象，必?至少把一??入或一??出添加到Component Driver?象中。可以添加一?以上的?入或?出，???入和?出可以出?在同一??象上。一??入??件?行?置操作，一??出?行?得操作。控制端作??入初始化?件，以程序化方式改???地址，?置超?值。

位置

I/O [image] Instrument Manager...

另???

Direct I/O, Instrument Manager, Instrument Properties, Panel Driver, Add Terminal和Properties (?象)

使用?件?程?象 。


Concatenator

把所有输入数据连接输出到Array 1D中的对象。

用途

使用Concatenator把两个或两个以上的数据要素组合到Array 1D的要素中。得到的数组大小是输入的大小之和。可以添加数据输入，允许连接三个或三个以上的容器。

Enum输入先转换成类型Text，然后再进行连接。

备注

输出数据类型是所有输入数据类型中最高的类型。如果任何输入是一维以上的数组，那么数组会平坦化(行较优)为一个Array 1D，以进行连接。

为把多行Text连接成一行，可以使用Accumulator。

它忽略空输入，这不同于concat(x,y)函数，后者在公式框内部运算。在公式框中，所有空输入自动转换成Real64标量，值为0。因此，如果a为空，b是 Int32标量值5，那么concat(a,b)得到长为2的Array 1D，类型为Real64，值为[0, 5]。有两个输入(空和Int32标量值5)的Concatenator对象输出长为1的Int32数组，值为[5]。

如果第一个值(第一个数据输入)有映射关系，其它输入值可以有映射关系，且点间隔相同，也可以没有映射关系。结果将从Xmin映射到Xmin + dx * N，其中"Xmin"是第一个数组值的映射的最小值，"dx"是第一个值中两个连续点之间的距离，"N"是得到的数组的大小。

位置

Data [image] Concatenator

另请参阅

Accumulator, Allocate Array, Collector, Set Values, Sliding Collector, Properties (对象)和对象 菜单

concat(x,y)


Conditional

一个菜单项。

用途

使用Conditional存取下述条件分支：

If A == B

If A ~= B

If A != B

If A < B

If A > B

If A <= B

If A >= B

使用Conditional对象，确定运行哪个子线程。

备注

注意Device [image] Functions & Object Browser下的Comparison项目与Conditional项目之间的差别。Comparisons是输出0或1的公式；Conditionals是If/Then/Else，有两个或两个以上的输出，其中一个输出启动。

注意Device [image] Function & Object Browser...中Logical项目AND, OR, XOR和NOT的返回值类型为Int32，形状与运算对象相同。这不同于条件函数，如==，其总是返回标量。

逻辑运算符只从字符串是否为空的角度定义给文本类型。也就是说，"0"和"1"在逻辑上为真，因为它们都是非空字符串，而""为假。因此，"zoo"和"" (空字符串)在逻辑上为假，因为第二个字符串为空。记住在比较Text类型和非字符串类型时，后者晋级为Text类型。这意味着"zoo"和"0"为真，因为实数0晋级为字符串"0"，且因为两个字符串都不是空，因此AND表达式为真，结果为1。

位置

Flow [image] Conditional

然后选择希望的条件分支对象。

另请参阅

If A ~= B, If A == B, If A != B, If A < B, If A > B, If A <= B, If A >= B和If/Then/Else。

Comparison, 三元运算符和Function & Object Browser。

在VEE程序内进行分支


Confirm (OK)

参阅OK。


Constant

一个菜单项。

用途

使用Constant存取下述输入常数，常数形状可以是标量或数组：

Text

UInt8

Int16

Int32

Int64

Real32

Real64

Coord

Complex

PComplex

Date/Time

Record

备注

除Text外，所有Constant对象都支持在输入框中使用任意公式。(只有在以前执行程序时设置了全局变量，才允许使用全局变量。在Program Explorer中点击Globals，查看存在哪些变量。) 在输入编辑字段后，公式会立即解析和求解。得到的标量数字作为Constant值使用。Constants不象Formula对象那样支持输入变量，因此不能在公式中使用输入变量。输入的公式必须求解成相应类型的标量值，或求解成可以转换成使用的Constant类型的标量值。

其支持的语法与Formula对象中相同，但有一些例外。不能使用数组构建语法([, ])运算符来构建数组，因为它们会返回非标题值，而返回值必须是标量。此外，不能在Constant对象中使用输入名称变量。

一般来说，允许对嵌套、函数调用和预先定义的数字常数PI (3.1416...)使用任意二元运算符和圆括号。

Constant对象中不会出现Variant类型。创建Variant数据类型的唯一方式是使用声明变量，选择类型"Variant"。

范例

在PComplex对象中输入(2, @PI/2)时，它求解，返回(2, @90) (如果Trig Mode设为Degrees)。

在Real64对象中输入14 + exp10(3)时，它求解，返回1014。

在Real64对象中输入(1, 2)时，返回错误，因为VEE不允许从Complex转换到Real64。

位置

Data [image] Constant

另请参阅

Complex, Coord, Date/Time, Int16, Int32, PComplex, Real32, Real64, 记录常数, 选择控制, Text, 拨码控制,UInt8。

创建记录常数

创建数组常数

使用数据常数


Continuous

一个菜单项。

用途

使用Continuous存取下述对象：

Int32 Slider

Int64 Slider

Real64 Slider

Int32 Knob

Int64 Knob

Real64 Knob

位置

Data [image] Continuous

另请参阅

Int32 Knob, Int32 Slider, Real64 Knob, 和 Real64 Slider。

使用数据滑尺和旋钮


Control Input (Object Menu)

Control Input (对象菜单)

把异步控制输入端添加到对象中。

用途

使用Control Input在对象中添加异步输入，如Reset或Clear。

在选择Control Input后，从对话框中选择要添加的控制。在某些系统上，控制输入终端使用与数据输入不同的颜色。

备注

并不是所有对象上都提供了控制输入。

激活控制输入端不会导致对象运行，而只会强制发生特定操作 (如Clear)。

可以由控制输入执行的操作通常也可以从对象菜单选项或打开视图上的按钮实现。

位置

在每个对象菜单上 [image] Add Terminal [image] Control Input

另请参阅

Add Terminal, Data Output (对象菜单), Delete Terminal和对象菜单。


Coord

输出常数Coord Scalar或Array 1D的对象。

用途

使用Coord，设置Coord常数或获得用户输入。点击输入字段，输入一个值。

属性

DataShape - 设置这一对象输出的值的初始数据形状。可能的值是Scalar和Array 1D。默认值为Scalar。

 ArraySize: - 在选择Datashape 1 D Array时，ArraySize设置数组的长度。

 ArraySizeFixed - 在这一属性为True时，数组不能添加或删除行。只有在选择Datashape 1D Array时才能使用这一选项。

 ShowArrayIndices - 在这一属性为True时，输入字段中的每一行都带有索引。只有在选择Datashape 1D Array时才能使用这一选项。默认值为True。

 Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为(0, 0)。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

Number Format - 如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Sat 01/Jan/2003 17:01:38)。默认值为Standard。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为 Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入可以以程序化方式改变当前值。这一输入要求一个Coord值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与进入的数据形状相匹配。

Reset输入可以以程序化方式把值设为零。如果Constant配置为Array 1D，那么所有值都设为零。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。

注意，InitialValue字段一直是一个标量，即使Coord配置成数组。

Coords可以包含两个以上的字段。例如，拥有三个字段的Coord是(x, y, z)。

Coords上的数学运算只在相关变量上操作，即它们在(x, y)对的y值上操作。

范例

输入2, 5 + exp10(2)，生成Coord常数(2,105)。

可以使用Coord Array 1D定义波形的定界包络，作为Comparators的波形输入。使用Array 1D of Coords定义定界波形上的限制点。限制点是定义了限制波形形状的线段的端点。然后通过Build Arb Waveform对话框发送这个数组，创建限制波形。可以在Comparator对话框中使用新的定界波形，作为其中一个输入，生成落在定界波形外面的点。

可以在clipUpper或clipLower函数中使用定界波形，把波形削波到定界极限。

为作为面板上的提示使用Coord，把它的标题变成提示，如"Enter the Coordinates"。用户在输入字段中填写请求的信息。

位置

Data [image] Constant [image] Coord

另请参阅

Complex, Constant, Date/Time, Int16, Int32, PComplex, Real32, Real64, Selection Control, Text, Toggle Control和UInt8。

使用数据常数


Copy

把复制的選定對象放在Paste緩沖器及Windows 2K和XP剪貼板上。

用途

使用Copy，然后使用Paste，多次复制選定的對象集合。

備注

只有在選定對象后，才能使用Copy。

每次Copy會覆蓋Paste緩沖器中以前的內容。

被复制的對象可以粘貼到同一程序中的另一個位置或另一個VEE會話中。在Windows 2K和XP中，被复制的對象可以粘貼到其它應用程序中。

為复制一個對象，使用對象菜單中的Clone選項。Copy与Clone的區別在于，Clone可以立即复制一個對象集合，而Copy則只能把對象放在Paste緩沖器中以備以后使用。

位置

Edit [image] Copy

另請參閱

复制 (對象菜單), 剪切, 對象菜單, 粘貼, 替換, 和 全選。


Counter

显示和输出其数据输入端被激活的次数的对象。

用途

使用Counter连续计数。Counter连续计算上一个对象的输出激活一个输入的次数。Counter输出是一个Real64标量。

对象菜单

Clear - 清除Counter的内容。

备注

Counter的数据输入不要求任何特定类型的数据，甚至可以计算空值的输入数量。通过激活输入Clear控制端，还可以清除计数。

Counter的值是一个Real64标量，在Counter输出上提供。

位置

Device [image] Counter

另请参阅

Accumulator, Properties (对象)和对象菜单


Create Directory

创建一个新目录。

位置

System [image] Directory [image] Create Directory


Create RunTime Version

保存不能编辑的安全版本的程序。

用途

使用Create RunTime Version，在完成后及在用户访问前锁定程序的主面板视图。您将不能再访问具有安全保护的项目中的细节视图。

在使用Create RunTime Version时，系统会提示输入一个文件名，调用安全版本。然后，具有安全保护的文件将使用<filename>.vxe名称保存。为运行具有安全保护的文件，选择File [image] Open...，把Files of type:选项变成Secure VEE Programs (*.vxe)，选择文件。在加载具有安全保护的文件时，许多VEE开发工具(Edit, Debug, ...)都不能使用。

备注

具有安全保护的程序的加载和运行速度要比没有安全保护的程序快。

使用Default Preferences，把具有安全保护的程序的文件格式设置成ASCII或二进制。默认设置二进制格式保存的文件容量较小、加载速度更快。

为提高安全性，VEE不能把.vxe文件合并到另一个程序中。但是，VEE将导入保存为.vxe文件的库。

位置

File [image] Create RunTime Version...

另请参阅

Default Preferences, UserFunction, UserObject

保护程序安全


Create UserObject

把多个选择的对象放到一个UserObject中。

用途

使用Create UserObject把多个对象在逻辑上和物理上划分在一组中。选择要包括的多个对象，然后选择Create UserObject。创建的UserObject中包含选择的多个对象。

UserObject象任何其它对象一样操作；只有UserObject内部的所有数据输入被激活时，UserObject内部的对象才会操作。必须先完成UserObject内部的所有操作，然后才能激活数据输出。

open view标题栏右侧的最大化按钮可以把UserObject的尺寸提高到VEE工作区的尺寸。

如果UserObject内部的对象在位于UserObject之间连接到其它对象上，那么将在UserObject上自动创建多个端，以保持连接。UserObject内部的对象不能连接到UserObject外部的对象上，而必须先从UserObject菜单中添加输入端和输出端。

备注

如果没有选择对象，那么Create UserObject不能使用。为创建空的UserObject，从Device菜单中选择UserObject。在创建后，通过把对象移动到UserObject窗口内部，可以把新的对象放在UserObject内。必须使用Cut和Paste完成，才能把现有对象放在新的UserObject内。

可以方便地保存常用函数的UserObject(使用Save Objects...)，创建一个再次使用的函数库。

在Step Over一个UserObject时，UserObject的整个上下文会运行。使用Step Into运行UserObject内部的各个对象，使用Step Out运行所有其余对象及退出UserObject。

位置

Edit [image] Create UserObject

另请参阅

Add To Panel, 默认首选项, Create RunTime Version, Select All, Step Into, Step Over, Step Out, Unpack (对象菜单), UserFunction和UserObject。

创建和使用UserObject库

在程序中使用多个对象创建UserObject

在程序中创建UserObject


創建 UserFunction

一個Edit菜單選項，允許從用戶選擇的多個VEE對象中創建一個UserFunction。

用途

通過使用Create UserFunction，可以把許多功能相關的VEE對象采集到一個單獨的UserFunction中。當在VEE程序中重复使用相同的對象時，特別适合把相關的VEE對象轉換成UserFunction。

為創建UserFunction，按住CTRL鍵，同時使用鼠標左鍵點擊多個對象，選擇希望在函數中包括的VEE對象。選中的對象將使用陰影高亮度顯示。

在已經選擇了希望在函數中包括的多個對象后，從Edit菜單中選擇Create UserFunction，出現Create UserFunction對話框。使用這個對話框中的Function Name:字段，為要創建的UserFunction 輸入自己的描述名稱。如果選擇不輸入新的UserFunction名稱，那么默認名稱是UserFunction1。一旦已經為新的UserFunction選擇了一個名稱，在Create UserFunction對話框上點擊OK按鈕。

在已經創建了新的UserFunction后，選中的所有對象現在會出現在一個新的UserFunction窗口中。新窗口有一個標題欄，包含已經指配的UserFunction名稱。此外，這個新UserFunction的Call將作為Call對象出現在創建新UserFunction的VEE窗口中。

備注

如果在目前活動的窗口中沒有選擇任何VEE對象，那么Create UserFunction菜單選項將變成灰色(不能選擇)。

位置

Edit [image] Create UserFunction

另請參閱

Call, Edit UserFunction, Import Library, UserFunction和UserObject。

在程序中使用多個對象創建UserFunction

在程序中創建UserFunction


Cut

删除选择的对象，把其放到Paste缓冲器及Windows中的剪贴板上。

用途

使用Cut删除一套选择的对象，或从工作区中的一个位置删除多个对象，把多个拷贝放到工作区中另一个位置(使用Paste)。

备注

只有在选择了对象之后才能使用Cut。

在程序正在运行时不能使用Cut。

为删除一个对象，从对象菜单中使用Delete功能。

每个Cut会覆盖Paste缓冲器中以前的内容。

如果意外Cut对象，可以使用Undo恢复这些对象。

Cut对象可以粘贴到同一程序中另一个位置、另一个VEE会话或其它应用程序中。

为在不删除对象的情况下进行多次拷贝，应使用Clone或Copy。为在不修改剪切板的情况下剪切对象，应使用对象上下文相关菜单Delete。

Panel Veiw和Detail View上都可以撤销剪切操作。

位置

Edit [image] Cut

另请参阅

Clone (对象菜单), Cut (对象菜单), Copy, Paste, Replace, 撤消操作, Delete (对象菜单)和Select All。


Cut (Object Menu)

Cut (对象菜单)

删除一个对象，把它放到Paste缓冲器及剪贴板上。

用途

使用Cut从工作区中删除这个对象。

备注

只能从User Objects和User Functions中使用Cut。

每次Cut会覆盖Paste缓冲器中以前的内容。

在程序运行时不能使用Cut (对象菜单)。

如果意外Cut一个对象，可以使用Paste或Undo恢复这个对象。

剪切对象可以粘贴到同一程序中另一个位置或另一个VEE会话中，剪切对象可以粘贴到其它应用程序中。

如果想删除多个对象，可以使用Edit菜单中的Cut选项，或按住CTRL键，移动鼠标左键，在想要剪切的项目周围画一个长方形。在工作区中任何打开区域上按鼠标右键，从菜单中选择Cut。

快捷方式

为删除指针下的对象，按CTRL+D。

位置

在对象菜单上 [image] Cut

另请参阅

Clone (对象菜单), Copy, Cut, Paste, Replace和Select All。


Cyclic Button

参阅Selection Control。


Data Input (Object Menu)

Data Input (对象菜单)

在对象中添加数据输入端。

用途

使用Data Input，提高对象使用的数据输入端数量。在某些对象上，新增的数据输入自动命名为A, B, C，依此类推。可以把大多数端的名称变成对您更有意义的名称。

尽管不能改变大多数输入端的数据类型或形状，但可以在某些对象上改变这些限制，如If/Then, Formula, Shift Register和I/O菜单下的对象。

备注
不应改变输入端的数据类型或形状，除非对象只需要该数据类型；如果限制从Any变成其它类型，必须把数据输入转换成端限制，然后对象才会处理数据。转换会耗费时间。如果转换不成功，对象会返回错误。

备注

只能从允许新增数据输入的对象中使用Data Input。

快捷方式

通过把光标放在输入端显示区域，然后按CTRL+A，可以迅速添加一个数据输入端。每按一下CTRL+A会在光标位置插入另一个数据输入端。Add Terminal [image] Data Input在末尾添加数据输入端。CTRL+D删除光标覆盖的数据输入端。

位置

在每个对象菜单上 [image] Add Terminal [image] Data Input...

另请参阅

Add Terminal, Data Output (对象菜单), Control Input (对象菜单), Conditional, Delete Terminal, 对象菜单和Properties (对象)。


Data Output (Object Menu)

Data Output (对象菜单)

在对象中添加一个数据输出端。

用途

使用Data Output，提高对象使用的数据输出端数量。在某些对象上，新增的数据输出自动命名为X, Y, Z, W, V，依此类推。可以把这些数据输出端的名称变成对您更有意义的名称。

在只有在该对象已经执行后，才会在端信息对话框中显示输出端容器信息(数据类型和形状)。

备注

只能从允许新增数据输出的对象中使用Data Output。

快捷方式

通过把光标放在输出端显示区域，然后按CTRL+A，可以迅速添加一个数据输出端。每按一下CTRL+A会在光标位置插入另一个数据输出端。Add Terminal [image] Data Output在末尾添加数据输出端。CTRL+D删除光标覆盖的数据输出端。

位置

在每个对象菜单上 [image] Add Terminal [image] Data Output...

另请参阅

Add Terminal, Data Input (对象菜单), Delete Terminal, Error Output (对象菜单), Instrument Manager和对象菜单。


Date/Time

输出日期和时间常数值的对象。Date/Time获得输入日期和时间，把它转换成输入与Epoch开始 (定义为公元后0001年1月1日UTC 0000时开始)之间的秒数。

用途

使用Date/Time，显示创建对象或数据时的时间和日期。

可以使用Date/Time，通过以数学方式比较个事件，计算上一个事件和当前事件之间经过的时间。

为改变周几、日期或时间之类的值，输入值。例如，输入Tue可以把Mon 27/Oct/2003 15:43:33变成Tue 28/Oct/2003 15:43:33。如果没有指定值，那么将显示当前周几、日期或时间。如果只改变其中一项，其它时间要素会保持相同。

范例

可以使用Date/Time，确定生成某个试验数据的时点与另一个时点(可以是过去时点、也可以是当前时点)之间经过的时长。使用Date/Time对话框，输入新的任意日期，然后取原始试验数据与新任意日期之差。

为确定所有程序或部分程序执行所需的时间长度，使用Timer或now()。

属性

 DataShape - 设置这一对象输出的值的初始数据形状。默认值为Scalar。

 ArraySize: - 在选择1D Array时，ArraySize设置数组的长度。默认值为10。

 ArraySizeFixed - 在这一属性为True时，数组不能添加或删除行。只有在选择1D Array时才能使用这一选项。

 ShowArrayIndices - 在这一属性为True时，输入字段中的每一行都带有索引。只有在选择1D Array时才能使用这一选项。默认值为True。

 PasswordMasking - 在这一属性为True时，作为星号(*)发回输入文本。在操作人员输入敏感的日期/时间数据时，可以使用这一功能。Date/Time输出端上输出的字符串没有掩码。在Configuration为1D Array时，掩码失效。默认值为False。

 Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为Sat 01/Jan/1 17:00:00 MST。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入可以以程序化方式改变当前值。可以重新配置Constant，以便与进入的数据形状相匹配。控制输入应该是日期/时间常数解析规则给出的有效的Date/Time字符串，其规则与Direct I/O相同。

Reset输入可以以程序化方式把值设为零。如果Constant配置为Array 1D，那么所有值都设为零。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。

注意，InitialValue字段一直是一个标量，即使Date/Time配置成数组。

通过使用对象的Properties窗口中提供的Time Stamp数字格式，可以显示AlphaNumeric或Logging AlphaNumeric格式的Date/Time输出。

可以使用To String, To File或To Printer (I/O [image] To [image])之类的对象，把Date/Time输出写入到各种位置，如字符串、文件或打印机。在这些对象中，在WRITE TEXT事务中使用Time Stamp格式。

对MS Windows，可以使用Control Panel中的Date/Time Properties对话框(Time Zone栏)，改变这个对象中出现的时区。在改变时区设置后，必须重启VEE，以使变动生效。

位置

Data [image] Constant [image] Date/Time

另请参阅

Timer

使用数据常数


Date/Time Compare

比较两个日期/时间。

位置

System [image] DateTime [image] Compare


Date/Time to Local Time

把日期/时间值转换成当地时间。

位置

System [image] DateTime [image] To Local Time


Date/Time to String

把日期/时间值转换成字符串。

位置

System [image] DateTime [image] To String


Date/Time to Universal Time

把系统日期/时间转换成通用时间。

位置

System [image] DateTime [image] To Universal Time


Day of the Week

从一定日期中检索周几。

位置

System [image] DateTime [image] Day of the Week


Day of the Year

从一定日期中检索其在一年中的日期。

位置

System [image] DateTime [image] Day of the Year


Declare Variable

允許聲明編程變量的對象。

用途

使用Declare Variable對象聲明VEE程序中任何地方的變量。可以聲明三類變量︰

Global - 可以在程序內部任何地方使用聲明變量。這是默認的聲明變量范圍。

Local to Context - 聲明變量專用于聲明變量的上下文，如位于某個UserObject怯煲erFunction內部。

Local to Library - 聲明變量專用于某個Library，只有其UserFunctions才能到達這個庫。

對象菜單

Add Field -- 在字段列表末尾的記錄中添加一個新字段。對話框允許定義新字段的名稱、類型和形狀。這個字段是灰色的，除非選擇Record類型。

Insert Field -- 在記錄的指定部分插入一個新字段。對話框允許定義新字段的名稱、類型和形狀。這個字段是灰色的，除非選擇Record類型。

Delete Field -- 允許刪除記錄字段。對話框將列出可以刪除的字段。只有在記錄有一個以上的字段時，才能使用這一選項。這個字段是灰色的，除非選擇Record類型。

Edit Event Handler?/font> - 如果已經為聲明的ActiveX對象創建任何事件處理器UserFunctions，那么打開Edit Event Handler對話框。

Create Event Handler?/font> - 打開Create Event Handler UserFunction瀏覽器。這個瀏覽器允許創建一個UserFunction，處理ActiveX automation對象生成的事件。可以為瀏覽器Member區域列出的每個事件創建一個事件處理器。只有在Type設置為Object，且已經為指定對象Library和Class啟用事件時，才能使用這個菜單項。

Open View參數

Name: - 用戶自定義的變量名稱。默認名稱是global1。

Scope: - 聲明變量的程序范圍。有效的程序范圍值是Global, Local to Context和Local to Library。默認的程序范圍是Global。

Type: - 變量的數据類型，如Real64, Int32, Enum等等。默認類型是Real64。

在Type設置為Record時，Declare Variable對話框擴展到右面。擴展的區域允許定義和構建Record。使用對象菜單中的Add Field, Insert Field和Delete Field構建Record。

在Type設置為Object時，會出現一個新字段"Sub Type"，Declare Variable對話框擴展到右面。擴展的區域允許在為ActiveX或.NET對象聲明變量時指定可選的細節。在聲明變量，您不需要指定這些細節；但是，通過指定細節，VEE會自動進行類型檢查，以保証只為聲明變量指配技朮數据。對ActiveX對象，為改變Library, Class和Events值，點擊Specify Object Type，然后點擊Edit?/font>，在出現的Specify Object Type對話框中改變值。對.NET對象，為改變Assembly, Namespace, Type和Members值，把Sub Type設置為.NET，然后點擊Edit...，在出現的Specify Object Type對話框中改變值。子類型"Any"支持子類型.NET, ActiveX(COM)的對象或VEE對象, 如XYDisplay。

在Type設置為Variant時，變量賦值可以是任何數据類型。

Num Dims: - 變量的維數。有效范圍是0-10。默認值是0。

備注

如需与影響清空ActiveX參考的編程技朮有關的更多信息，請參閱CreateObject內容。

位置

Data [image] Variable [image] Declare Variable

另請參閱

ActiveX Automation References, ActiveX Control References, Delete Variable, Get Variable, Set Variable, Specify Object Type, Variant, View Variables, Properties (對象)和對象菜單

創建變量和釋放ActiveX參考


Default Preferences

一個菜單選項，為在VEE編程環境中設置默認首選項提供了一個對話框。

用途

使用Default Preferences設置VEE工作區選項。在啟動VEE時及在選擇New時，會使用保存的選項。部分選項還保存在程序中，因此可以為每個程序配置一套不同的默認值。

對話框信息

General欄︰

Environment組︰

Auto Line Routing- 在選中Auto Line Routing复選框時，在移動或調整對象大小時，會自動重畫連接到對象的線。VEE只畫橫線和豎線，在其它對象周圍路由這些線。复雜的程序重新畫線可能要用一段時間。在沒有選中Auto Line Routing复選框時，直接從端到端畫連接線(除非固定)。選擇Edit [image] Clean Up Lines，在對象周圍重新畫線。

Delete Variables at PreRun - 在選中Delete Variables at PreRun复選框時，在每次運行程序前，將刪除所有變量中存儲的值。由于只有在使用Set Variable對象設置調用的變量時才能執行Get Variable對象，因此如果沒有設置要求的變量，那么將返回錯誤。在沒有選中Delete Variables at PreRun复選框時，在PreRun時將不會刪除變量中存儲的值，程序將使用以前運行的數据運行。但是，需要注意的是這些數据可能會無效(這時程序執行會不正确)，將不會報告任何錯誤，可能會遇到意想不到的結果。

Code Completion and Insight- 在選中Code Completion and Insight复選框時，啟動Code Completion and Insight功能。在輸入公式對話框時，將提示所有可用的選項。

Code Completion Supports Build-in Functions - 在選中Code Completion Supports Build-in Functions复選框時，Code Completion窗口中將出現VEE內置函數。如果沒有選中這一項，那么Code Completion將不顯示任何內置函數。

Code Completion Supports COM Constants- 在選中Code Completion Supports COM Constants复選框時，COM Constants將出現在Code Completion窗口中。如果沒有選中這一項，Code Completion將不會顯示任何COM Constants。

Match Brackets in Formula- 在選中Match Brackets in Formula复選框時，VEE將在公式中用灰色標出匹配的括弧。這种功能适用于复雜的公式。

Execution Mode組︰
如需更多信息，請參閱了解執行模式。如需了解執行模式之間的兼容能力問題詳情，請參閱執行模式。

VEE 8 - 使用与VEE 8.0產品相同的設置運行程序。VEE 8模式包括VEE 6&7模式的所有功能及新的數据類型Int32和Boolean。

VEE 6&7 - 使用与VEE 6.0產品相同的設置運行程序。VEE 6模式包括VEE 5模式的所有功能及新的數据類型UInt8, Int16, Real32和Variant。

VEE 5 - 使用与 VEE 5.0產品相同的設置運行程序。 VEE 5模式包括VEE 4模式的所有功能及在Windows上支持ActiveX。注︰使用VEE 4.0及老版本編寫的部分程序在VEE 5模式下可能會表現出不同的行為方式。

VEE 4 - 使用与 VEE 4.0產品相同的設置運行程序。使用VEE 4.0編寫的程序運行方式与老版本完全相同。VEE 4模式增加了匯編程序技朮，其程序運行時間要比老版本快。注︰使用VEE 3.2及老版本編寫的部分程序在這种模式下可能會表現出不同的行為方式。盡管程序表面上可能運行正常，但由于分時差，程序可能會發生問題。

VEE 3 (Not Compiled) - 使用老的VEE解釋程序運行程序，使用VEE 3.2和老版本編寫的程序運行方式与老版本完全相同。

Trig Mode組︰

Degrees | Radians | Gradians - 指定整個程序中使用的三角測量單位的默認值。如果選擇Radians，三角測量計算的執行速度最快。

Debug組︰

Data Flow Rate: - 設置Data Flow標尺移動的速度，指明經過程序的數据流程。可以選擇速率1 - 10 (其中10最快)。默認速率是6。

Disable Debug Features - 允許關閉所有調試功能，以使程序執行速度達到最快。

Check Instrument Addresses at PreRun - 在啟動儀器檢查時，VEE會在運行前檢查支持的所有儀器，确定是否可以訪問參考的儀器(活動)。如果不能訪問儀器或接口，那么VEE︰

1. 顯示對話框，提示用戶先解決問題，然后進行重試。用戶可以回答"Yes"重試檢測這台儀器，回答"No"檢查下一台儀器，或回答"Cancel"完全繞過這台儀器。

2. 如果在重試后檢測到該儀器，那么VEE將檢查下一台儀器。

3. 在重試不成功后(或回答"No")，VEE在同一個接口類型上顯示活動的儀器列表。然后用戶可以為當前儀器選擇另一個地址。

Program Development組︰

Alignment Spacing - 在复選Edit [image] Align [image] Space Equally時指定放在VEE對象之間的空間量(單位為像素)。選擇其中一個其它Align [image] 命令會導致對象使用指定的空間量對齊。

Binary RunTime File Format - 在使用File [image] Create RunTime Version把程序另存為.vxe文件時控制文件格式。打開Binary RunTime File Format (默認值)，可以縮小文件容量，改善程序安全。在關閉時，將使用ASCII格式保存文件。

Show Description Indicators - 在复選時，如果對象帶有描述，對象右上角會顯示一個小的紅三角形。可以點擊紅三角形，啟動描述編輯會話。

Colors欄︰

Screen Element - 允許選擇將設置默認顏色的屏幕單元(VEE的圖形部分)。可以使用某個VEE對象的菜單上的Properties選項，改變部分單元的顏色。

Color Value - 允許從調色板中選擇屏幕單元的顏色。

Fonts欄︰

Screen Element - 允許選擇將設置默認字体的屏幕單元(VEE的圖形部分)。可以使用某個VEE對象的菜單上的Properties選項，改變部分單元的字体。

Font Value - 允許從系統上提供的字体列表中選擇屏幕單元的文本字体。

Number欄︰

Integer: - 指定在這個對象上顯示的整數數字的數字格式。選項有Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a)和Binary (如#B00101010)。默認值為Decimal。

Real: - 指定在這個對象上顯示的實數數字的數字格式。選項有Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0)和Standard (如98.6)。默認值為Standard。

Printing欄︰

Screen Element - 允許選擇在打印時設置灰色陰影的屏幕單元(VEE的圖形部分)。

B & W Printer Darkness - 在黑白打印机上打印時，允許為每個屏幕單元選擇灰色陰影。默認值通常适用于大多數打印机。

Print Magnification: - 指定在打印VEE程序或部分程序時使用的放大倍數。對打印輸出上較小的圖像，應使用較低的數字。如果想在一頁上打印輸出放大的屏幕，默認打印放大倍數設置為75%。

Print Header and Index Page - 在复選這個框時，VEE程序每頁打印輸出上將包含一個兩行的標題，表明日期和時間、程序文件名和頁碼。在打印輸出末尾，將打印一張索引頁，顯示索引項目的頁碼。

Print Program Explorer - 在复選這個框時，VEE程序打印輸出將顯示Program Explorer窗口中包含的信息。

Print Cover Page - 在复選這個框時，VEE程序打印輸出的第一頁將顯示下述內容︰

Agilent VEE產品徽標圖像。

打印的程序的文件名。

程序保存的文件格式。

正在使用的VEE軟件的修訂版代碼 (如6.0等等)。

當前VEE執行模式(VEE 6等等)。

Main用戶對象Description文件(如果已經輸入)。

Print I/O Configuration - 在复選這個框時，打印儀器配置展開的樹型圖。可以在I/O [image] Instrument Manager…中看到儀器配置。

為生成曲線，以互動方式從顯示屏的對象菜單中選擇Print菜單項。如果當前Printer Setup位于Print to File模式下，那么將使用指定的文件或目錄名。

將繪制顯示對象的整個曲線，并進行定標，填充定義的繪圖區域，同時保留原始顯示對象的屏幕高寬比。通過重新調整顯示對象的大小，可以控制繪制的圖像的屏幕高寬比。通過擴大顯示對象，可以縮小曲線周圍文本和數字標注的相對大小。

Web Server欄︰

Enable Server - 允許打開VEE的內置Web服務器。默認值為關閉。Web服務器允許使用標準HTTP 1.0協議從遠程网絡瀏覽器中監測和診斷VEE應用程序。VEE必須在連接到网絡的系統上運行。

Root Directory: - 允許指定遠程网絡瀏覽器可以訪問的文件位置。默認值為~installDir/www。不要把私密文件放在這個目錄或其任何子目錄下，因為可以接入主机系統的任何网絡瀏覽器都可以看到這些文件。文件index.html安裝在默認的根目錄下。這個文件是默認的Web服務器主頁，可以根据要求調整這個主頁。如果改變Root Directory，把index.html移到新位置，不要改變其文件名。

HTTP Port Number: - 允許為Web服務器指定端口號。默認值為80。只有在另一個Web服務器(如另一個VEE)在同一系統上運行，或想限制訪問VEE的Web服務器時，才需要改變默認端口號。不要使用已經分配的端口號。允許的取值范圍為0 - 65535。如需查看當前分配的端口列表，請參閱services文件︰
Windows NT: \Winnt\system32\drivers\etc\services

Server Timeout (sec): - 允許設置web服務器等待VEE處理Web服務器命令的最大時間。默認值為60秒。如果VEE程序忙著執行耗時的活動，那么會它向网絡瀏覽器發送一條超時消息。

Log File: - 允許指定日志文件http.log的位置。默認位置是一個臨時目錄，如C:\tmp\http.log。如果日志文件不存在，那么在Default Preferences中進行任何變動時將創建日志文件。日志中包含Web服務器處理的所有進入HTTP請求的記錄。數据追加到日志文件上，因此必須監測其大小。

I/O欄︰

IO Preferences

 Enable Pre 8.0 Legacy IO: - 在复選這個框時，Instrument Manager將搜索舊式SICL設備。在默認情況下，Instrument Manager不搜索這些設備。

備注

在啟動VEE Web服務器及設置其屬性時，可以從支持HTTP 1.0規范的任何网絡瀏覽器上訪問Web服務器(任何常用的瀏覽器)。使用下面的其中一种格式輸入网址︰

http://hostname{:port}{/file}

或

http://hostname{:port}{/command}{?parameter}

其中︰

hostname (必填)識別VEE正在運行的主机系統。在网址中獨立使用時，這會打開Web服務器主頁index.html。

port (選填)在不使用默認值時識別Web服務器的HTTP Port Number。

file (選填)相對于瀏覽器打開的Root Directory，識別一個文件或目錄。可以包括一個文件擴展名，如.jpeg或.html。

command (選填)指定Web服務器支持的命令，允許從瀏覽器監測、診斷和控制VEE程序。下面介紹了這些命令。

parameter (選填)指定命令要求的參數。下面的命令描述了各個參數。

Agilent VEE Web服務器支持下述命令︰

ViewVEE顯示整個VEE窗口。

ViewMainDetail顯示Main窗口的細節視圖。如果程序保存為具有安全保護的RunTime程序，那么會出現錯誤信息。

ViewMainPanel顯示Main窗口的面板。如果Main窗口沒有面板，那么會出現錯誤信息。

ViewExecWindow顯示VEE Execution窗口。如果不存在Execution窗口，那么會出現錯誤信息。

ViewDetail?UserFuncName顯示名為UserFuncName的UserFunction的細節視圖。如果UserFuncName不存在或已經保存為具有安全保護的RunTime文件，那么會出現錯誤信息。視圖的大小將可以看到UserFunction中的所有對象，即使當前UserFunction窗口尺寸較小。

ViewPanel?UserFuncName顯示名為UserFuncName的UserFunction的面板視圖。如果UserFuncName不存在或沒有面板，那么會出現錯誤信息。

ViewError顯示當前程序的Error窗口。

下面的范例說明了可以在网絡瀏覽器中輸入的网址。它們假設VEE正在聯网的系統上運行，主机名為my_system，已經啟動Web服務器，使用默認HTTP端口號80。

http://my_system/public_docs/page.html
在目錄public_docs中顯示文件page.html。這個目錄和文件位于相對于Web服務器根目錄的主机系統上。

http://my_system/ViewExecWindow
顯示VEE Execution窗口。

在按Save時，默認首選項存儲在默認文件中(對MS Windows是VEE程序安裝目錄下的文件VEE.RC)。部分屬性保存在程序中，并作為默認文件保存。其中包括General欄上Environment組和Trig Mode組中的選項及Number欄上的數字格式。只有在File [image] Save對話框中复選Save colors和fonts with program框時，才會在程序中保存顏色和字体值。另外對顏色和字体，只有改變的設置才保存在默認文件中。

如果按OK，變化只對當前工作會話有效。

如果按Reset，將丟棄當前設置，重讀默認值。

如果按Cancel，將取消所作的變化。

位置

File [image] Default Preferences

另請參閱

Align, Clean Up Lines, Delete Variable, Get Variable, Set Variable, Show Data Flow, Program Explorer和Properties (對象)

改變默認顏色

改變默認字体

改變數字格式

改變打印首選項

設置打印机


Delete (Object Menu)

Delete (对象菜单)

从面板视图或细节视图中删除这个对象。

用途

使用Delete从细节视图或面板视图中删除对象。注意在从面板视图中删除对象时，对象仍保留在细节视图上。

从细节视图中删除对象也会从面板视图中删除这个对象。

备注

Delete不会修改剪切板(即用于Paste)。

通过按CTRL+Z、从主菜单中选择Edit > Undo或从工具栏中选择 [image] ，可以撤消Delete操作。

快捷方式

通过双击对象左上角的对象菜单选择框，可以迅速删除对象。

位置

在对象菜单上 [image] Delete

另请参阅

Cut, 对象菜单, 撤消操作和Properties (对象)。

从面板中删除对象


Delete Directory

删除指定的目录。

位置

System [image] Directory [image] Delete Directory


Delete File

删除指定路径位置上的文件。

位置

System [image] File [image] Delete File


Delete Library

从运行的程序中删除(卸载)UserFunctions、Compiled Function定义或Remote Function定义库的对象。

用途

使用Delete Library从VEE程序中删除一个库。采取的操作取决于库的类型：

UserFunction - Delete Library从VEE程序中删除以前使用Import Library对象加载的UserFunction。这只删除Library Name字段中指明的库内包含的UserFunction。

Compiled Function - Delete Library把一个共享的库从VEE流程中分离。但是，只有删除指向该文件的最后一个库时，才会实际分离包含共享库的文件。也就是说，如果有多个库指向同一个共享库文件(使用同一个定义文件或不同的定义文件)，那么只有当没有使用附着代码的其它库时，共享的库文件才会从VEE流程中分离。一旦附着到一个流程上，操作系统不允许移动或删除共享的库。如果想创建一个新的共享库文件，必须使用Import Library对象中的Delete Lib选项分离代码。

Remote Function - Delete Library关闭远程VEE流程，从本地VEE流程中删除Remote Function定义。在本地主机上删除参考远程流程的最后一个库时，Delete Library会实际关闭远程流程。

Open View参数

Library Name - 在这个字段中，输入想删除的库的名称。

备注

Delete Library一般用于高级操作，您可能想动态加载、然后从运行的VEE流程中删除库对象。这可以大大降低VEE流程的存储要求。

Delete Library对象将接受一个Data Input端。输入端的默认名称是LibraryName。

位置

Device [image] Delete Library

另请参阅

Call, Edit UserFunction, Import Library, UserFunction, UserObject和Properties (对象)


Delete Line

删除两个端之间的线。

用途

使用Delete Line消除错误连接或修改程序中的连接。选择Delete Line，然后点击要删除的线或点击其附近区域。

为退出这一模式、且不删除线，在工作区上远离任何线点击空白空间。

备注

为查看一条线的端点(不删除线)，把光标瞬间放在线上。这会高亮度显示线，并显示其端点，另外还会显示线所携带的值。

在程序运行时不能使用Delete Line。

可以撤消Delete Line操作。

快捷方式

按住CTRL+Shift，把指针放在线上，按鼠标左键，删除线。

通过这种方式，可以删除一系列线，一次删除一条。

位置

Edit [image] Delete Line

另请参阅

Cut, 撤消操作和Line Probe。


Delete Terminal

一个菜单项。

用途

使用Delete Terminal通过下述功能删除端：

Input - 用来删除添加到对象中的数据或控制输入端。在选择Input后，从显示的对话框中选择要删除的端。将删除端及与这个端的任何连接。如果两个端的名称完全相同，VEE会根据这些端在列表中出现的顺序删除端。

Output - 用来删除添加到对象中的数据或错误输出端。在选择Output后，从显示的对话框中 选择要删除的端。将删除端及与这个端的任何连接。如果两个端的名称完全相同，VEE会根据这些端在列表中出现的顺序删除端。

备注

只有在对象有可以删除的输入端时，才能使用Input。某些端不能删除。

只有在对象有可以删除的输出端时，才能使用Output。某些端不能删除。

快捷方式

通过把光标放在端视图区域上，然后按CTRL+D，可以迅速删除一个数据端。

位置

在每个对象菜单上：
Delete Terminal [image] Input?/font>

Delete Terminal [image] Output?/font>

另请参阅

Add Terminal, Line Probe, 对象菜单和Properties (对象)。


Delete Variable

删除在执行当前程序时已经创建的变量值的对象。

用途

使用Delete Variable对象按名称删除一个变量，或删除程序中目前设置的所有变量。之前Set Variable对象必须已经在程序内部创建了变量。

Open View参数

By Name - open view为变量名称显示一个字段。名称不分大小写(可以使用小写字母或大写字母)。因此，globalA变量与GLOBALa变量相同。可以作为控制输入添加名称字段。

All Variables - 删除所有变量将删除所有范围的所有声明变量及所有未声明变量。名称字段变成灰色(不能使用)。

备注

如果按名称参考的变量不存在，Delete Variable对象会发生错误。为避免这种错误，可以在Delete Variable对象中添加一个错误输出端。

在已经执行Delete Variable对象时，会删除按名称参考的变量(或所有变量)，就象从未创建这些变量一样。由于变量不存在，以后使用Get Variable对象中的变量时将发生错误。

在不需要时使用Delete Variable对象删除变量可以节约内存，帮助您更好地管理变量。

在Default Preferences中，如果Delete Variables at PreRun启动(默认值)，那么只有在删除所有变量后，才能执行程序。如果Delete Variables at PreRun关闭，那么将不会删除变量，必须认真编程，避免传播无效数据。

如需与影响清空ActiveX参考的编程技术有关的更多信息，请参阅CreateObject内容。

位置

Data [image] Variable [image] Delete Variable

另请参阅

默认首选项, Get Variable, Set Variable, View Variables和Properties (对象)

删除变量和释放ActiveX参考


DeMultiplexer

把输入值指向选定的输出端的对象。

用途

使用DeMultiplexer把输入数据指向某个输出端。激活的输出取决于地址输入的值。

备注

DeMultiplexer有两个输入，一个用于数据输出，一个用于地址值(它决定着传播的输出)。每次在对象运行时，只会传播一个输出。如果地址输入的值不在输出数量范围内[0 [image] (N-1)]，那么会返回一个错误。可以在对象中增加额外的输出。可以删除输出，然后按顺序对后面的输出(如有)重新编号。

位置

Device [image] DeMultiplexer

另请参阅

If/Then/Else, JCT, Properties (Object)和对象菜单


Description

可以从对象菜单存取的获得对象相关信息的项目，或可以从标题栏菜单中存取的获得主程序、User Object或User Function相关信息的项目。

显示一个可以编辑的Rich Text Format (RTF)对话框，其中显示用户提供的信息。有一个默认的演示对话框功能的Description，在打开Description对话框时会显示。为创建自己的默认Description，编辑installdir\templates下的description.rtf。如果希望空白的描述对话框，编辑description.rtf文件，使其为空即可。

用途

带有描述的对象在右上角有一个小的红色三角形。

使用Description存档对象，解释怎样使用对象及为什么使用对象。也可以从标题栏菜单中，使用Description存档整个文件。

为编写描述，点击文本区域，输入描述，也可以从RTF文件中剪切和复制一段描述。在完成时点击OK。

Open View参数

OK - 与程序一起保存描述信息。

Cancel - 取消描述的最新变化，关闭Description窗口。

Insert Template - 在光标位置插入模板文件Description.rtf。您可以编辑模板，保存在%installDir%\Templates中。

Clear All - 清除Description窗口中的所有内容。为恢复被取消的文本，按Cancel，然后重新打开Description窗口。

备注

可以使用常用VEE编辑功能编辑文本区域。

在使用Print All并选中Print All Objects时，或使用Print Objects进行打印时，还会打印该对象的描述。

由于Description是一个RTF对话框，因此可以使用基于RTF的应用程序，创建格式优美的文本，其中可以包括多种字体、颜色、表格、活动的URL等等。

可以打印Description文本，但它总是作为文本打印。

位置

在每个对象菜单上 [image] Description

或

在每个标题栏菜单上 [image] Description

另请参阅

Note Pad, 对象菜单, Create RunTime Version和对象菜单


Dialog Box

一个菜单项。

用途

使用Dialog Box存取下面编制好的对话框对象：

Text Input

Int32 Input

Int64 Input

Real64 Input

Message Box

List Box

File Name Selection

位置

Data [image] Dialog Box

另请参阅

File Name Selection, Int32 Input, List Box, Message Box, Real64 Input, Text Input, 和UserObject

关于内置对话框对象

使用Data Input对话框


Direct I/O

使用事务语句把仪器写入仪器及从仪器读取数据的一个对象。

用途

使用Direct I/O向仪器输出和输入各种编码和格式。

对象菜单

Show Config - 显示仪器配置。

Upload State - 把当前仪器状态上传到学习字符串，并把这种状态与Direct I/O对象的这个特定实例关联起来。它支持能够支持学习字符串的GPIB设备和基于消息的VXI设备。

Edit Trans - 编辑当前高亮度显示的事务。

Add Trans - 在列表末尾添加一个事务。

Insert Trans - 在目前高亮度显示的事务前插入一个事务。

Cut Trans - 剪切(删除)目前高亮度显示的事务，但把它保存在事务"剪切和粘贴"缓冲器中。

Copy Trans - 把目前高亮度显示的事务复制到事务"剪切和粘贴"缓冲器中。

Paste Trans - 粘贴以前"剪切"或"复制"的事务。

Delete Trans - 删除列表中高亮度显示的事务。

Move Trans Up - 上移高亮度显示的事务。

Move Trans Down - 下移高亮度显示的事务。

Print Trans - 打印描述当前高亮度显示的事务的详细对话框。

Open View参数

Direct I/O操作：

READ - 使用指定编码和格式从仪器中读取数据。

WRITE - 使用指定编码和格式把数据写入仪器中。

EXECUTE - 对GPIB仪器，发送Selected Device Clear, Go To Local, Remote或Group Execute Trigger命令。对串行仪器，发送Break或Reset。对GPIO仪器，发送Reset。对基于VXI消息的仪器，发送Selected Device Clear, Go To Local, Remote或Trigger命令。

WAIT - 在执行下一项事务前等待的具体秒数。对GPIB仪器或基于VXI消息的仪器，一直等到串行轮询响应与模板的位逻辑AND运算结果为零(ALL CLEAR)或非零(ANY SET)。

仅对GPIO仪器，READ操作允许IOSTATUS，WRITE操作允许IOCTL。

仅对VXI仪器，READ和WRITE操作允许REGISTER:和MEMORY:。WAIT操作还支持一直等到存储器或寄存器偏置中的值AND模板值满足ANYSET, ALL CLEAR或EQUAL。

Direct I/O编码：

TEXT - 以人可读的形式读取所有数据类型。在写入时，VEE数字数据自动转换成文本。

BINARY - 以机器专用的二进制格式写入所有数据类型。

BINBLOCK - 使用IEEE 488.2限定长度码组包头在二进制文件中写入所有VEE数据类型。

在输出结束换行符的仪器中使用BINBLOCK时，选择End byte (LF)，以便VEE将消耗结束换行符。如果仪器没有输出结束换行符，选择No END byte。

CONTAINER - 以独立于平台的文本格式写入所有数据类型。

快捷方式

通过把光标放在输入端或输出端显示区域上，然后按CTRL+A，可以迅速添加一个数据端。每按一下CTRL+A会额外添加一个数据端。

通过把光标放在端查看区域上，然后按CTRL+D，可以迅速删除一个数据端。

为迅速插入一个事务，把光标放在事务上。按CTRL+O会在放置光标的事务上插入一个事务。

为迅速删除("杀掉")一个事务，把光标放在该事务上，按CTRL+K。

为从"kill"缓冲器中粘贴一个事务，按CTRL+V。

为迅速移到下一个事务或上一个事务，分别按CTRL+N或CTRL+P。

控制端可以作为输入，以程序化方式改变设备地址和超时周期。这些事务的超时周期以秒为单位。

位置

I/O [image] Instrument Manager

另请参阅

Advanced I/O, Component Driver, Formula, Instrument Manager, Panel Driver和To/From VXIplug&play

提高I/O性能

使用Direct I/O读取数据

使用Direct I/O对象

编辑事务


Directory Exists

进行测试，查看是否存在指定目录。

Location

System [image] Directory [image] Directory Exists


Do

创建分支点、控制线程执行流程的对象。

用途

使用Do创建一个分支点；先激活连接到数据输出端的对象，然后再激活连接到序列输出端的对象。注意这会强制实施对象运行顺序。

位置

Flow [image] Do

另请参阅

Break, Start, Properties (对象)和对象菜单


Domain Name

检索主机作为会员的域名。

位置

System [image] Environment [image] Domain Name


Drop-Down List

参阅Selection Control。


編輯 UserFunction

一個菜單選項，允許在程序內部編輯本地創建的UserFunction。還可以查看(但不能改變)使用庫導入的UserFunction。

用途

使用Edit UserFunction，通過從UserObject的對象菜單中執行Make UserFunction，在程序內部編輯本地創建的UserFunction。如果已經在一個庫文件中保存了一系列UserFunction，那么必須打開庫文件，才能編輯這些UserFunction。

備注

在選擇Edit UserFunction時，會出現一個對話框，列出可以編輯的本地UserFunction。一旦選擇一個UserFunction，那么會創建一個窗口，顯示一個工作區，其中表明創建UserFunction的原始UserObject的功能。可以象編輯任何UserObject一樣編輯這個工作區。在編輯完成時，關閉窗口。在保存文件時，會与文件一起保存編輯的UserFunction。

在編輯UserFunction時，可以使用標題欄上的Panel和Detail圖標，在Panel視圖和Detail視圖之間切換。

在查看使用庫導入的UserFunction時，不能改變UserFunction。但是，為協助調試，可以設置斷點及打開/圖標化/移動對象。這些變化不會保存到庫文件中。

快捷方式

從Program Explorer中，雙擊一個User Function進行編輯。

位置

Edit [image] Edit UserFunction

Call Function的對象菜單 [image] Edit UserFunction

另請參閱

Call, Create UserFunction, Delete Library, Import Library, UserFunction和UserObject。

編輯UserFunction


Ends With

如果给定的字符串的结尾是测试值，那么返回布尔逻辑真。

位置

System [image] String [image] Ends With


Error Output (Object Menu)

Error Output (对象菜单)

在对象中添加一个错误输出端。

用途

使用Error Output，允许程序捕获和处理VEE错误。如果Error端位于一个对象上，且该对象遇到错误，那么将不会显示错误对话框，而是会把错误编号输出到Error端。

如果捕获一个错误，那么将激活错误输出端和序列输出端，在数据输出端上不输出任何数据。

错误输出端输出一个Scalar Int32容器及生成的错误编号值。

备注

几乎所有对象都提供了Error Output。某些对象如Bus I/O Monitor和Note Pad从不会返回错误，因此它们不允许添加错误输出端。

错误输出端输出VEE错误的错误编号。它不输出编号的意义或任何恢复信息。错误信息在Help [image] Contents and Index下的Error Codes主题中提供。

使用errorInfo()，确定使用错误输出端时捕获的最新错误的错误信息。在捕获错误后，执行errorInfo()对象，输出一条记录，其中包含错误对话框中显示的所有信息。

UserObject中的Raise Error对象可以生成由封闭的UserObject的错误端捕获的错误。

UserObject的错误端捕获UserObject中任何对象的任何错误。

位置

在每个对象菜单上 [image] Add Terminal [image] Error Output

另请参阅

Add Terminal, Delete Terminal, errorInfo, 对象菜单, Raise Error和UserObject。

捕获错误


Execute Program

启动MS-DOS或Windows流程的对象。

用途

使用Execute Program启动MS-DOS或Windows流程，包括可执行程序、操作系统命令或批处理文件。PC Execute对象从执行的程序中返回一个退出代码。如果Wait for prog exit设置为No，那么退出代码输出端不传播任何返回值。

Open View参数

Run Style - 如果要执行的程序在窗口中运行，那么Run Style会指定窗口样式：

Normal在标准窗口中运行程序。

Minimized在最小化为图标的窗口中运行程序。

Maximized在最大化的窗口中运行程序。

Wait for prog exit - 如果Wait for prog exit设置成Yes，那么VEE运行外部流程，等到外部流程结束，然后激活Execute Program对象的序列输出端。

如果Wait for prog exit设置成No，VEE运行外部流程，但会激活Execute Program对象的序列输出端，而不会等待外部流程结束。

Prog with params - 要运行的程序。下面的范例说明了可以在这个字段输入的内容：

COMMAND.COM /C DIR C:\TMP (在Windows 98上)
CMD /C DIR C:\TMP (在Windows NT上)

PBRUSH

C:\MYDIR\MYFILE.BAT

"\Program Files\Windows Media Player\mplayer2.exe" "\WINNT\Media\Mozart's Symphony No. 40.rmi"

www.favorite_site.org/index.htm

包含空格的路径名称必须带上引号，如倒数第二个范例。

在最后一个范例中，已知后缀".htm"会启动网络浏览器，加载指定URL。如果浏览器已经运行，它会加载指定URL。

Working directory - 指向一个目录，在这个目录中，要执行的程序可以找到所需的文件。因此，如果想在c:\progs\cprog1目录下使用makefile运行程序nmake，使用的参数如下：

在Prog with params:中输入nmake。

在Working directory:中输入c:\progs\cprog1。

备注

Execute Program不基于事务。不能使用事务与外部流程通信。

如果在PATH变量中已经包括相应的路径，那么在Prog with params字段中不必包括路径。对Windows 98，设置AUTOEXEC.BAT文件中的PATH变量，对Windows NT，设置User Environment Variables (Main / Control Panel / System)。

为执行.EXE文件，在Prog with params字段中不必包括后缀。但是，对.COM和.BAT文件，则必须包括后缀。

如果Prog with params中指定的操作没有启动新的程序实例，那么Execute对象不会等待程序退出，即使Wait for prog exit设置成Yes。在这种情况下，退出代码端不会传播退出代码。这种行为的一个范例是在网络浏览器已经运行时"执行"一个URL。在运行的浏览器中会打开指定的URL，VEE不会等到最后关闭浏览器。这种行为的其它常见范例是把文件传送到现有的文字处理软件或电子表格编辑软件的实例中。注意，外部应用程序(浏览器、电子表格等)的设计人员在这些情况下决定是启动新实例还是使用已有实例。

Execute对象使用ShellExecuteEx() Win32 API。

位置

I/O [image] Execute Program

另请参阅

To/From DDE和Properties (对象)


Execution Window

View菜单上的一个选项。

用途

如果Main UserObject有一个面板，且在Main's Properties Window上没有启用ShowPanelOnExecute，那么在运行VEE程序时，该面板将出现在Execution Window内部。这可以同时查看Main对象窗口及Execution Window。另外，Execution Window会表明可执行程序在VEE Pro RunTime中运行时的外观。

可以移动、调整、最大化、最小化或把Execution Window移动到窗口堆栈底部，但不能关闭。

可以从Main窗口上的对象菜单中设置出现在Execution Window标题栏中的名称。从Main对象菜单中，选择Properties，然后改变PopUpPanelTitle。

位置

View [image] Execution Window

另请参阅

Add To Panel, Main和创建RunTime版本。

关于Agilent VEE Pro RunTime产品。


Exit

退出VEE。

用途

使用Exit结束与VEE的这个工作会话。

备注

如果在选择Exit时还没有保存程序改动，系统会提示保存这些改动。

在程序运行时不允许执行Exit操作。如果想退出正在运行的程序，应使用Stop对象。

快捷方式

按CTRL+E退出。在VEE窗口左上角的窗口控制按钮上，双击按钮，或单击按钮，从菜单中选择Close。

位置

File [image] Exit

另请参阅

Raise Error, Exit Thread, Exit UserObject, New, Open和Stop。


Exit Thread

停止执行线程的对象。

用途

使用Exit Thread结束执行独立线程。Exit Thread只会停止执行其所在的线程。

位置

Flow [image] Exit Thread

另请参阅

Break, Raise Error, Exit UserObject, Start, Stop, Properties (对象)和对象菜单

停止VEE程序


Exit UserObject

停止执行UserObject的对象。

用途

使用Exit UserObject停止执行UserObject中的所有线程，开始执行程序中UserObject后面的下一个对象。通过激活这些输出，在遇到Exit UserObject前发送到UserObjects输出端的任何数据都会传送到相应的后续对象上。

使用Exit UserObject提前退出UserObject。

位置

Flow [image] Exit UserObject

另请参阅

Create UserObject, Raise Error, Exit Thread, Start, Stop, UserObject和Properties (对象)

提前退出UserObject


File Exists?

检查指定路径上是否存在文件。

位置

System [image] File [image] File Exists?


Fill Bar

使用色条以图形方式显示Scalar数字值的对象。

用途

使用Fill Bar在模拟标度上用色条及可选的数字字段显示一个数字值。

Open View

通过点击当前值，输入一个新值，可以在对象的open view上设置Fill Bar的最小值和最大值。它自动计算和显示Tic号及其标签。最小值必须小于最大值。

还可以作为控制输入添加这些值。

属性

Orientation - 选择怎样显示Fill Bar。默认值为Vertical。

 ShowDigitalDisplay - 在这一属性为True时，在对象Open View的底部会显示输入值的数字画面。在这一属性为False时，不显示数字画面，对象运行速度会更快。默认值为True。

ShowTics - 控制是否显示标度的tic号和标签。默认值为True。

 Logarithmic - 在启动时，把标度从线性变成对数。默认值为False。

 Label Spacing - 控制在哪个tic号上标上标度值。默认值为Every Other Tic。

HighColor - 指定最高范围使用的颜色 (即大于High Limit)。

High Limit - 定义最高范围的数字下限。这个值必须大于等于Low Limit。可以作为控制输入添加这个值，它会使该属性的编辑字段失效。

 MidColor - 指定中间范围使用的颜色 (即小于等于High Limit，且大于Low Limit)。

 Low Limit - 定义最低范围的数字上限。这个值必须小于等于High Limit。可以作为控制输入添加这个值，它会使该属性的编辑字段失效。

 LowColor - 指定最低范围使用的颜色(即小于等于Low Limit)。

NumberFormat - 如果Global Format关闭，那么为这个对象上显示的实数指定数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如Wed 01/Jan/2003 17:01:38)。 默认值为Standard。

备注

输入数据必须是Scalar，并能够转换成Real64 (Complex, PComplex, Spectrum和Coord必须先"拆散"。)

Low Limit必须小于High Limit。

如果只想使用两个颜色范围，把Low Limit设置成等于High Limit。

如果只想使用一种颜色，把Low Color、 Mid Color和High Color设置成相同的颜色。

快捷方式

为迅速改变Fill Bar的方向，只需把它调整到所需的形状。它会自动改变方向。

位置

Display [image] Indicator [image] Fill Bar

另请参阅

AlphaNumeric, Color Alarm, Logging AlphaNumeric, Meter, Tank和Thermometer。

显示数据的模拟画面


Find

这个菜单选项提供了一个对话框，在VEE程序中搜索文本字符串和特定对象属性。

用途

Find功能提供了一种方便的方式，可以在VEE 程序中执行文本字符串搜索。可以简便地在程序对象内部定位特定文本，同时可以搜索某些其它对象属性，如对象的标题栏颜色或背景颜色。

但是Find不搜索下述内容：

面板或面板上的对象

线或线值

端值

对话框信息

Find对话框包括一个单行文本字段，用来输入可以搜索的文本字符串，并为配置搜索标准提供了多个选项。对话框功能如下：

Find What: - 在这一行中输入要搜索的文本字符串。如果这一行留为空，那么搜索会与任何及所有文本相匹配。

Search in: - 允许把文本搜索范围只限于VEE程序的某些段。默认值为搜索Entire Program。

Find - Find按钮使用用户在对话框的General栏和Advanced栏指定的搜索参数开始搜索文本。

Stop - Stop按钮暂停搜索过程。将保留搜索流程停止前找到的任何匹配。

Help - Help按钮为Find对话框调用联机帮助信息。

Status Bar位于Find对话框的底部。Status Bar指明搜索过程的状态。在发现新的匹配结果时，将更新Status Bar中的信息。

属性

General栏

General选项栏为限定通用文本搜索提供了一套限制。选项包括：

Match Case - 如果复选这一项，那么文本必须与用户指定的搜索字符串完全匹配。默认值为关闭。

Find all matches on each Object - 默认值为关闭。

Search nested UserObjects - 默认值为启动。

Show occurrences that - 对搜索进一步作出下面的限制：

Contain search text - 默认值为启动。

Exactly match search text - 默认值为关闭。

Begin with search text - 默认值为关闭。

End with search text - 默认值为关闭。

Advanced栏：

点击Advanced栏会在Find对话框中调出一个新的选项集。Advanced栏上的选项为基于对象类型和对象特点限制搜索范围提供了一种方式。Advanced栏上的Property和Value按钮结合使用，定义搜索标准。一旦已经定义了Property按钮，那么还必须定义其相关的Value按钮。

Property和Value - Property列有三个按钮，Value列有三个按钮。点击Property列中的按钮会调出一个Property Name对话框，其中列出具体搜索属性的名称。对选择的每个Property Name，必须点击相邻的Value按钮，选择一个值。Property和Value组合的配对方式如下：

Object Type (默认值) - 在选择这个Property Name时，Value按钮默认使用All Types。点击Value按钮会调出Select Object Type(s)对话框。这个对话框列出能够在VEE工作空间中打开对象的所有VEE函数。如需了解提供的每个对象类型，请参阅Help中的具体对象类型部分。

注意在Select Object Type(s)对话框中，在默认状态下预先选择所有对象类型。为只选择一个对象类型或多个对象类型，点击对话框上的Clear All按钮，然后按鼠标左键，选择所需的具体对象类型。通过点击Clear All按钮，可以反选任何和所有选中的对象类型。还可以把Property按钮指配给Object Type之外的Property Name。下面介绍了部分属性名称范例及相关Value：

- Description - 有效值是用户在Value字段中输入的任何用户自定义的Description。
- Device name - 有效值是用户在Value字段中输入的任何用户自定义的Device name。
- Popup Panel Title Background Color - 有效值是来自VEE颜色地图的任何颜色。这个值的默认颜色是用户在Default Preferences对话框中指定的颜色。点击Value字段将打开Select Color for Object Title对话框。用户可以使用鼠标左键，从这个对话框的调色板中选择任何颜色。

Reset - Reset按钮把第一个Property按钮默认提供给Object Type，把第一个Value按钮默认提供给All Types。将清除任何选中的选项在Advanced栏上的其余两对Property和Value按钮。

快捷方式

按Ctrl+F打开Find对话框。

为自动限制范围，在某个上下文上按鼠标右键，如UserFunction或UserObject，从Program Explorer中打开Find。

位置

Edit [image] Find...

另请参阅

默认首选项和Find Results

通过搜索属性查找对象

通过搜索文本查找对象


Find Results

显示一个对话框，列出最后一次Find搜索的结果。

用途

使用Find Results显示一个对话框，列出最后一次执行Find文本搜索的结果。如果还没有执行Find文本搜索，那么Find Results菜单项将变成灰色(不能选择)。

在Find对话框上点击Find按钮时，还会显示Find Results对话框。

对话框信息

Find Results对话框的标题栏提供了Find搜索摘要信息，包括找到多少个匹配项目以及VEE对象总数。下面的标题栏上列出了多个控制按钮、使用的具体搜索文本及搜索范围(Entire Program等等)。

Control buttons - 控制按钮为查看Find Results提供了快捷方式。控制按钮包括：

Keep Visible - 一种切换功能，控制着在查看匹配后是否仍能看到对话框。

Display previous item - 显示Find Results列表中上一个匹配项目。

Display next item - 显示Find Results列表中下一个匹配项目。

Find - 恢复Find对话框。

Find: - 这个窗口显示搜索的具体文本，用引号引起来。

Scope: - 这个窗口显示搜索范围。默认值为整个程序。

Object Location - 指向发现匹配的UserFunction或UserObject的路径名称。在嵌套VEE UserObject中，这是每个嵌套对象的路径。

Object Title - 找到文本的对象标题。这个标题通过Object Properties设置。

Object Type - 找到文本的VEE对象类型(如Formula对象, Constant对象, 等等)。

Text Found - 在对象中某个地方找到的文本。这个文本可以位于对象中或位于对象本身内部某个地方。

快捷方式

按Ctrl+R打开Find Results对话框。

通过点击栏的标题，还可以改变对话框中栏的分类顺序。

位置

Edit [image] Find Results

另请参阅

Find

查看Find操作的结果


For Log Range

激活数据输出端指定次数的对象。

用途

使用For Log Range执行子线程指定迭代数量。使用For Log Range指定开头、结尾和增量，生成沿着log 10标度均匀分布的输出值。

打开视图参数

From - 迭代循环开始的值

Thru - 迭代循环结束的值。在迭代器的值大于等于Thru值时，循环结束。

/Dec - 确定迭代器发出的值的间隔。第0个值是From，第n个值是From*exp10(n/(/Dec))。

From, Thru和/Dec可以添加为输入。

备注

For Log Range输出值是范围从From到Thru的Real64标量。

For Log Range输出包含的线程将继续执行，直到发生下面一种情况：

所有对象已经操作。子线程被去活，迭代计数器递增/Dec值。如果数量值小于Thru值，那么子线程会使用新的迭代值重新激活For Log Range输出。

Break对象操作。子线程被去活，序列输出端被激活。注意保持在For Log Range输出上的值是遇到Break时出现的相同值。

Next对象操作。子线程被去活，迭代计数器递增/Dec值。如果数量值小于Thru值，那么子线程会使用新的迭代值重新激活Data 输出，并继续正常执行子线程。如果迭代计数器达到或超过Thru值，那么激活序列输出端。如果超过计数器，那么Data输出上保留的值是超出范围的值。

在添加任何可选的数据输入时，它们不一定与提供值的字段名称相一致。一定要知道正在输入哪些值以及相关的端。(在必要时可以使用Show Terminals。)

如果Thru值小于From值，/Dec必须为负，否则循环不执行。

如果/Dec = 0，那么循环会无限次迭代，或直到子线程中遇到一个Break对象。

如果From等于Thru，那么循环会执行一次。

For Log Range对象上包含的子线程完成迭代时，在前一个迭代中发送的所有数据容器都会在下一个迭代之前失效。这可以防止当前迭代中重用来自上一个迭代的"旧"数据。但是，如果在迭代子线程内部存在流程分支，那么在每次迭代时某些对象可能不能执行。因此，这些对象发送的数据容器可能会在其它对象能够在数据上执行前失效。在这种情况下，为获得希望的传播，使用Sample & Hold对象。

位置

Flow [image] Repeat [image] For Log Range

另请参阅

Break, For Count, For Range, Next, On Cycle, Sample & Hold, Properties (Object), Until Break, Properties (对象)和对象菜单

循环部分VEE程序


For Range

激活数据输出指定次数的对象。

用途

使用For Range执行子线程开始值、结束值和增量指定的迭代数量。使用For Range生成在From值和Thru值之间均匀分布的值。

Open View参数

From - 迭代循环开始的值

Thru - 迭代循环结束的值。在迭代器的值大于等于Thru值时，循环结束。

Step - 迭代器当前值和下一个值之间的增量值。

数据输入上提供了所有open view参数。

备注

For Range输出值是范围从From值到Thru值的Real64标量。

For Range输出包含的线程将继续执行，直到发生下面一种情况：

所有对象已经操作。子线程被去活，迭代计数器递增步进值。如果数量值小于Thru值，那么会使用新的迭代值重新启动For Range输出，来重新激活子线程。

Break对象操作。子线程被去活，序列输出端被激活。注意保持在For Range输出上的值是遇到Break时出现的相同值。

Next对象操作。子线程被去活，迭代计数器递增Step值。如果数量值小于指定的Thru，那么会使用新的迭代值重新启动Data 输出来重新激活子线程，并继续正常执行子线程。如果迭代计数器已经达到Thru值，那么激活序列输出端。

在添加任何可选的数据输入时，它们不一定与提供值的字段名称相一致。一定要知道正在输入哪些值以及相关的端。(在必要时可以使用Show Terminals。)

如果Thru值小于From值，Step必须为负，否则不能激活输出。

如果Step = 0，那么循环会无限次迭代，或直到子线程中遇到一个Break对象。

如果From等于Thru，那么循环会执行一次。

For Range对象上包含的子线程完成迭代时，在前一个迭代中发送的所有数据容器都会在下一个迭代之前失效。这可以防止当前迭代中重用来自上一个迭代的"旧"数据。但是，如果在迭代子线程内部存在流程分支，那么在每次迭代时某些对象可能不能执行。因此，这些对象发送的数据容器可能会在其它对象能够在数据上执行前失效。在这种情况下，为获得希望的传播，使用Sample & Hold对象。

位置

Flow [image] Repeat [image] For Range

另请参阅

Break, For Count, For Log Range, Next, On Cycle, Sample & Hold, Properties (对象), Until Break, Properties (对象)和对象菜单

循环部分VEE程序


From

一个菜单项。

用途

使用From存储作为I/O操作源的下述对象：

File

DataSet

String

位置

I/O [image] From

另请参阅

To


From File

使用I/O事務從文件中讀取數据的對象。

用途

使用From File對象讀取各种文件編碼和格式。From File特別适合導入其它軟件包生成的數据文件。

在多個From File對象指向同一個磁盤文件時，會對所有此類對象保持一個讀取指針，即使它們處于不同的線程或不同的上下文中。這意味著使用同一文件的另一個From File對象不能重新讀取From File對象，除非在文件上已經進行REWIND操作。 在 PreRun后該文件第一個From File對象運行時，將打開文件，把文件指針复位到文件開頭(默示的REWIND)。在程序停止運行時，將關閉所有文件。

From File操作︰

READ - 使用指定編碼和格式從文件中讀取數据。

EXECUTE - REWIND把文件的讀取指針重新定位到文件開頭，而不會擦除文件內容。CLOSE會關閉打開的文件。DELETE會刪除文件。

WAIT - 在執行下一個事務前等待指定的秒數。

From File編碼︰

TEXT - 讀取VEE或其它軟件包編寫的ASCII文件。

BINARY - 以特定机器二進制格式讀取所有數据類型。

BINBLOCK - 從帶有IEEE 488.2一定長度碼組包頭的二進制文件中讀取所有VEE數据類型。

CONTAINER - 以特定机器文本格式讀取所有數据類型。

Open View參數

Open View為數据文件名提供一個字段，后面跟著可用的事務列表。數据文件名可以添加為控制輸入。

Open View顯示執行的文件事務列表。

對象菜單

Add Trans - 在列表末尾添加一個事務。

Insert Trans - 在目前高亮度顯示的事務前插入一個事務。

Cut Trans - 剪切(刪除)目前高亮度顯示的事務，但把它保存在事務"剪切和粘貼"緩沖器中。

Copy Trans - 把目前高亮度顯示的事務复制到事務"剪切和粘貼"緩沖器中。

Paste Trans - 粘貼以前"剪切"或"复制"的事務。

Print Trans - 打印詳細對話框，描述目前高亮度顯示的事務。

備注

可以使用Add Data Output添加EOF (文件結束)。EOF是專用的輸出端，在某個事務企圖讀取End of File之后的數据時与空容器一起傳播。在檢測到End of File條件，且激活EOF輸出時，將不會激活其它數据輸出，即使它們包含新讀取的數据。

如果檢測到EOF，且沒有EOF輸出端，那么會返回一個錯誤。

為讀取文件中的所有數据，使用READ ... ARRAY TO END:事務。

快捷方式

為迅速插入一個事務，把光標放在事務上。按CTRL+O會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按CTRL+K。

為從"kill"緩沖器中粘貼一個事務，按CTRL+Y。

為迅速移到下一個事務或上一個事務，分別按CTRL+N或CTRL+P。

位置

I/O [image] From [image] File

另請參閱

To File, 從文件中讀取數据, Properties (對象)和對象菜單


From String

使用事務從字符串中讀取數据的對象。

用途

使用From String從字符串的文本數据中讀取各种編碼和格式。

如果一維Text數組傳送到AString輸入，From String事務的工作方式將与使用From File對象從文件中讀取這些文本行的方式相同。也就是說，Text數組將作為在每個字符串要素之間使用換行符的單個文本流處理。

從字符串操作中︰

READ - 使用指定編碼和格式讀取數据。

WAIT - 在執行下一個事務前等待指定秒數。

從字符串編碼中︰

TEXT - 從AString輸入中讀取所有數据類型。

CONTAINER - 從VEE特定文本格式中讀取所有數据類型。

Open View參數

Open View顯示要執行的事務列表。

對象菜單

Add Trans - 在列表最后添加一個事務。

Insert Trans - 在當前高亮度顯示的事務前插入一個事務。

Cut Trans - 剪切(刪除)當前高亮度顯示的事務，但把它保存在事務"剪切和粘貼"緩沖器中。

Copy Trans - 把當前高亮度顯示的事務复制到事務"剪切和粘貼"緩沖器中。

Paste Trans - 粘貼此前已經"剪切"或"复制"的事務。

Print Trans - 打印描述當前高亮度顯示的事務的詳細對話框。.

備注

From String為了解READ TEXT事務工作方式提供了有效的調試工具。把一個Text Constant對象連接到標為AString的From String輸入端上，把Logging AlphaNumeric顯示畫面連接到From String輸出端上，立即查看結果。最好還應解析儀器返回的字符串。

快捷方式

為迅速插入一個事務，把光標放在一個事務上。按CTRL+O，在放置光標的事務上插入一個事務。

為迅速刪除("取消")一個事務，把光標放在該事務上，按CTRL+K。

為從"取消"緩沖器粘貼一個事務，按CTRL+Y。

為迅速移動到下一個或前一個事務，分別按CTRL+N或CTRL+P。

位置

I/O [image] From [image] String

另請參閱

From, From File, To String, Properties (對象)和對象菜單

把字符串轉換成數字


Function & Object Browser

用來存取數學函數和邏輯函數的Device菜單項；及ActiveX對象。

用途

使用Function & Object Browser存取Function & Object Browser。從瀏覽器可以選擇︰

Operators

Built-in Functions

MATLAB Functions

Local User Functions

Imported User Functions

Remote User Functions

Compiled Functions

ActiveX Objects

.NET/CLR Objects

VEE Objects

Instruments

備注

Function & Object Browser 對話框包含四個或五個字段。在選擇ActiveX Objects時，對象會變化。

Type: - 在這個字段中選擇一個項目，顯示其它字段中的相關項目。Operators和Built-in Functions与VEE一起提供。Local, Imported和Remote User Functions和Compiled Functions由用戶創建。選擇ActiveX Objects會把Category字段划分到Library字段和Class字段中。選擇.NET/CLR Objects會把Category字段划分到 Assembly, Namespace和Type字段中。

Category: - <All>包含選定Type的所有函數。其它Category項目會把提供的函數划分成更小的組。

Library: - 在Type設置成ActiveX Objects時与Class字段一起出現。如果已經在Device [image] ActiveX Automation References或ActiveX Control References中選擇了ActiveX automation或control類型庫，ActiveX類型庫名稱會出現在Library字段中。在Library和Class字段中選擇名稱，查看為ActiveX對象提供的屬性、方法和事件。

Class: - 在Type設置成ActiveX Objects時与Library字段一起出現。Class字段中出現的名稱是Library字段中高亮度顯示的ActiveX類型庫中包含的類。選擇一個類名稱，查看為ActiveX對象提供的屬性、方法和事件。

Assembly: - 在選擇.NET/CLR Object時出現。組件是.NET應用可以重用、可以改變版本的自我描述構件。Assembly是.NET Framework的基本構件。在已經從Device [image] .NET Assembly References中選擇組件時，組件會出現在Assembly字段中。

Namespace: - 在選擇.NET/CLR Object時出現。為查看Namespace字段中的名字空間，必須已經選擇至少一個有相關名字空間的Assembly。從Namespace字段中選擇名字空間，查看該名字空間內提供的部分成員列表。

Member: - 如果Operators或任何函數名稱在Type中高亮度顯示，那么這會列出選定的Category中提供的運算符和函數名稱。對大于提供的空間的列表，將提供一個滾動條。為從這個列表中獲得放到程序中的運算符或函數，點擊Member名稱，然后點擊Create Formula/Create Call，或雙擊名稱。

如果ActiveX Objects在Type中高亮度顯示，Member列表會包含与高亮度顯示的Library和Class名稱有關的ActiveX對象使用的屬性、方法和事件。為在程序中為屬性和方法創建公式，點擊Member名稱，然后點擊Create Formula，或雙擊名稱。

如果.NET/CLR在Type中高亮度顯示，那么Member列表會包含Type中選擇的.NET/CLR對象使用的構造器、屬性、方法和計數器。

不能從事件名稱中創建任何東西。如果想為ActiveX automation對象創建事件處理器，使用Declare Variable聲稱類型對象的變量，啟用其事件，然后使用對象菜單中的Create Event Handler。如果想為ActiveX控件創建事件處理器，必須先在程序中添加控件(Device [image] ActiveX Controls)，然后使用對象菜單中的Create Event Handler。

Description Field - 這是位于對話框底部的大型字段。對內置函數，VEE為高亮度顯示的函數提供了一個描述字符串。對本地用戶函數、導入的用戶函數和遠程用戶函數，VEE顯示高亮度顯示的函數的Show Description對話框的內容。對ActiveX對象，VEE顯示公式語法及參數。

如需与Member列表中任何名稱有關的其它信息，高亮度顯示一個名稱，點擊Help。VEE幫助中提供了与Operators和Built-in Functions有關的信息。如果厂商為其提供了聯机幫助，那么還可以使用与ActiveX Members有關的信息。

位置

Device [image] Function & Object Browser

另請參閱

ActiveX Automation References, ActiveX Control Host, ActiveX Control References, ActiveX Controls, Assignment, Call, Declare Variable, Delete Library, Edit UserFunction, Import Library, Miscellaneous Operators和UserFunction。

使用數學運算符和函數


Function Generator

输出Waveform的对象。

用途

使用Function Generator生成您自己的指标的Waveform。

Properties

ErrorOnAliasing - 求解确定Num Points除以Time Span (相同频率)是否小于指定频率的两倍。如果是，那么会返回错误。这一求解的目的是确定生成的点是否准确地表示生成的函数。选中的对话框会生成精确的点表示。默认值为启动。

Open View参数

必须从open view中设置所有下述参数，或把这些参数添加为数据输入。

Function - 波形的形状(Sine, Square, Triangle等等)。默认值为Cosine。

Frequency - 波形的频率，单位为Hz。如果Function设置为DcOnly，那么忽略这个参数。默认值为200 Hertz.

Amplitude - 在添加任何dcOffset前用线性单位表示的最大值和最小值的绝对值。默认值为1。

dcOffset - 波形偏置(上移或下移的数量)。默认值为0。

Phase Units - 度(Deg), 弧度(Rad)或梯度(Grad)。Phase Units不考虑相位值的当前Trig Mode。默认值为Deg。

Phase - 波形位移的周期部分。对正的相位值，波形向负时间移动。在Function设置为DcOnly时，忽略Phase。默认值为0。

Time Span - 波形的时长(秒)。默认值为20ms。

Num Points - 波形中的点数。波形中各点之间的时间是Time Span/Num Points。Num Points必须为正。默认值为256.

备注

点数与取样间隔相同。每个点位于取样间隔开头。

位置

Device [image] Virtual Source [image] Function Generator

另请参阅

Build Arb Waveform, Comparator, Noise Generator, Pulse Generator和对象菜单


Gate

在序列输入端激活时把输入数据传送到数据输出端的对象。

用途

使用Gate保持容器，直到发生另一项操作(及激活序列输入端)。

备注

如果没有连接序列输入端，那么没有"触发抑制"效应。因此，在数据输入端激活时，Gate把数据从数据输入端传送到数据输出端。

不存储流入Gate的数据；在序列输入端激活时，数据输入端上的容器是容器输出。

位置

Flow [image] Gate

另请参阅

DeMultiplexer, JCT, Properties (对象)和对象菜单

在超时时输出一个值


Get Current Directory

在主机上检索当前目录。

位置

System [image] Directory [image] Get Current Directory


Get Directory Name

检索提供的路径的目录名称。

位置

System [image] Path [image] Get Directory Name


Get Extension

检索文件名的扩展名。例如，文件test1.xls将返回扩展名xls。

位置

System [image] Path [image] Get Extension


Get Field

允许用户拆除记录、恢复其中一个字段或子字段的对象。

用途

使用Get Field提取记录的一个字段或子字段。Get Field对象只是一个使用输入端Rec和表达式Rec.A初始化的Formula对象。使用"句点"语法，指定想从记录输入中提取的字段。例如，Rec.A从Rec记录输入中提取A字段。

Open View参数

Formula field (没有标签) - 默认值是Rec.A。可以输入Formula对象中允许的任何数学公式，但通常应使用A.B句点语法，从记录中提取一个字段。可以添加一个Formula 控制输入。

备注

Get Field对象实际上是使用Rec 输入和表达式Rec.A初始化的一个Formula对象。在Formula对象中使用的Get Field中，可以使用任何表达式，但为提取一个字段，则需要使用"句点"语法，如Rec.A或A.B.C。

所有Formula对象都全面支持 Get Field中的A.B句点语法，包括Formula, If/Then/Else, Get Values, Set Field及所有事务装置(To File, To String等)。

注意Get Field, UnBuild Record和SubRecord对象之间的区别。

Get Field对象的工作方式与Formula对象类似，它使用句点语法(A.B)拆除记录。注意通过使用表达式，如A.B.C，Get Field允许用一个步骤拆除多个记录组成的记录。这一流程要求两个UnBuild Record对象。

UnBuild Record对象为由输入记录字段组成的Name List和Type List提供输出。UnBuild Record对象的其它(可选的)输出A, B等则返回与多个Get Field对象相同的结果。

SubRecord对象与UnBuild Record和Get Field的区别是其输出总是一条记录。SubRecord装置允许包括或不包括 一条记录中的字段列表，形成一条子记录。

位置

Data [image] Access Record [image] Get Field

另请参阅

Build Record, Formula, Record Constant, Set Field, SubRecord和UnBuild Record。

从记录中提取字段


Get File Creation Time

检索指定路径上的文件创建时间。

位置

System [image] File [image] Get File Creation Time


Get File Name

从提供的路径中检索文件名。

位置

System [image] Path [image] Get File Name


Get File Name Without Extension

检索路径中给定的文件的文件名，但不包括文件扩展名。

位置

System [image] Path [image] Get File Name Without Extension


Get Full Path

使用当前目录作为起点检索整个路径。例如，假设您位于temp目录下，在temp目录下有一个目录名叫test，在test目录下有一个文件名叫balderdash。在使用这个对象搜索文件balderdash时，会搜索temp目录树，返回文件的整个路径。

位置

System [image] Path [image] Get Full Path


Get Files

在输入路径的目录中检索多个文件，然后在一个一维数组中显示这些文件。

位置

System [image] Directory [image] Get Files


Get Last File Access Time

检索给定文件最后一次存取文件的时间。

位置

System [image] File [image] Get Last File Access Time


Get Last File Write Time

检索给定文件最后一次写入文件的时间。

位置

System [image] File [image] Get Last File Write Time


Get Logical Drives

检定主机系统上逻辑驱动器的一维数组。

位置

System [image] Directory [image] Get Logical Drives


Get Mappings

输出与容器有关的映射信息的对象。

用途

使用Get Mappings获得与映射的数组有关的信息。Get Mappings输出映射的类型(对数或线性)及每个维度每个映射的开始值和结束值。

Open View参数

NumDims - 输入数组中的维数，这是一个整数值，最小值为1，最大值为10。

备注

如果输入数组没有映射，Get Mapping输出Linear (0,n-1)，其中"n"是输入数组该维度中的点数。

Get Mapping不允许Coord作为输入，因为Coord数据类型有明确的映射。

Num Dims必须与输入数组中的维数相匹配。

如果Num Dims值变化，视图会自动创建或删除输出端，以便输出数量(每个维度三个)与Num Dims值相匹配。对每个维度，Get Mappings有三个数据输出端。

快捷方式

为查看映射的数组的映射关系，在一条线上使用Line Probe或打开端，查看容器数据。

位置

Data [image] Access Array [image] Get Mappings

另请参阅

Line Probe, Set Mappings, Properties (对象), UnBuild Data和Properties (对象)


Get Parent Directory

检索父目录的路径。

位置

System [image] Directory [image] Get Parent Directory


Get Path Root

检索传送到路径上的任何路径的根。

位置

System [image] Path [image] Get Path Root


Get Root Directory

检索当前VEE会话使用的主机系统的根目录。

位置

System [image] Directory [image] Get Root Directory


Get Specified Files

提供一个路径和一个通配符模型 (如*.vee)，然后这个对象会检索与该模型相匹配的文件。

位置

System [image] Directory [image] Get Specific Files


Get Subdirectories

检索由子目录组成的一维数组。这不是一个递归列表，而是路径参数中指定的目录下面的第一级子目录。

位置

System [image] Directory [image] Get Subdirectories


Get Temp Directory Path

检索到临时目录的路径，其通常是C:\Documents and Settings\{UserName}\Local Settings\Temp\。

位置

System [image] Path [image] Get Temp Directory Path


Get Temp File Name

在C:\Documents and Settings\{UserName}\Local Settings\Temp中创建一个临时文件，然后检索文件名。

位置

System [image] Path [image] Get Temp File Name


Get Values

从数组中提取要素的对象。

用途

使用Get Values存取数组的特定要素。可以从一个或多个数组中提取一个或多个要素、列或行。

使用Get Values获得与数据集有关的信息，如数据类型、维数、维度大小及构成输入数组的所有数组要素的总大小。

打开视图参数

公式字段(未标记) - 指定正在提取的数组的要素。与数组有关的具体符号包括：

逗号(,) - 分隔要素维度。

分号(:) - 指明包括的要素集。

星号(*) - 指明整列或整行的通配符。

范例

从两维数组[3,3] 要素中提取第二列，记住数组索引基于零 ：

- - - -
|1 2 3 |                      | 2 |
|4 5 6 | Array [*,1] outputs: | 5 |
|7 8 9 |                      | 8 |
- - - -

备注

所有数组都基于零。

每个数组维度必须有一个技术数据。

Get Values对象实际只是使用一个Ary输入、表达式Ary及多个输出初始化的Formula对象。可以在Get Values中使用能够在Formula对象中使用的任何表达式。

所有Formula对象全面支持Get Values中的Ary[2,3]子数组语法，包括Formula, If/Then/Else, Get Field, Set Field及所有处理设备(To File, To String, 等等)。

数据类型字符串输出值与typeName()函数中返回的字符串相同。

位置

Data [image] Access Array [image] Get Values

另请参阅

Array, Formula, Set Values, typeName(), UnBuild Data和Properties (对象)

从数组中提取值


Has Extension?

如果提供的路径中的文件有一个文件扩展名，那么检索布尔值。例如，在文件test.xls中，xls是文件扩展名，将返回布尔值真。

位置

System [image] Path [image] Has Extension?


Hash Table - Add Key/Value Pair

在散列表中添加键/值对。

位置

System [image] Collections [image] Hashtable [image] Add Key/Value Pair


Hash Table - Clear

清除散列表。

位置

System [image] Collections [image] Hashtable [image] Clear Hashtable


Hash Table - Contains Key?

某个散列表是否包含某个键。

位置

System [image] Collections [image] Hashtable [image] Contains Key?


Hash Table - Count

提供散列表中键/值对数。

位置

System [image] Collections [image] Hashtable [image] Count


Hash Table - Create

创建一个新的散列表。

位置

System [image] Collections [image] Hashtable [image] Create


Hash Table - Enumerate Key/Value Pairs

列出指定散列表的键/值对。

位置

System [image] Collections [image] Hashtable [image] Enumerate Key/Value Pairs


Hash Table - Get Value

获得散列表和散列键一定的散列值。

位置

System [image] Collections [image] Hashtable [image] Get Value


Hash Table - Remove Key/Value Pair

从散列表中去掉一对键/值。

位置

System [image] Collections [image] Hashtable [image] Remove Key/Value Pair


Hash Table - Set Value

设置给定散列表中给定键的值。

位置

System [image] Collections [image] Hashtable [image] Set Value


Help (Object Menu)

Help (对象菜单)

获得这个对象的帮助。

用途

使用Help查看这个对象的参考页面。为退出帮助，关闭帮助窗口。

备注

为获得多个对象、术语或程序信息的帮助，使用VEE菜单栏上的Help菜单。

Instrument Panel或Component Driver的Help包含着与驱程本身有关的帮助。

快捷方式

为迅速获得选定对象的帮助信息，按F1。

位置

在每个对象菜单上 [image] Help

另请参阅

对象菜单和Properties (对象)。


Home

把程序的左上角移動到工作區的左上角(Main, UserFunctions怯煲erObjects)。

快捷方式

按工具欄上的 [image] 按鈕，或點擊Home鍵。

位置

Edit [image] Home

另請參閱

導航程序


Horizontal Paddle

参阅Toggle Control。


Horizontal Rocker

参阅Toggle Control。


Horizontal Slide

参阅Toggle Control。


If A ~= B

在两个数据输入值约等于时提供输出分支的对象。

用途

使用If A ~= B试验约等于，并根据试验结果提供分支。

备注

If A ~= B是一个预先配置的If/Then/Else对象，用来试验两个输入是否约等于。

如果两个输入约等于，那么Then输出传播一个Int32标量1，否则Else输出传播一个Int32标量0。

"约等于"试验对Complex数字和Polar Complex数字略有不同。对两个实数(a和b)，"约等于"试验如下：

a - b <= a * 10E-7

而对两个Complex值(a和b)，试验如下：

re(a) - re(b) <= mag(a) * 10E-7

其中：

re(a)是a的实数部分。

re(b)是b的实数部分。

mag(a)是a的矢量幅度。

位置

Flow [image] Conditional [image] If A ~= B

另请参阅

Comparison, Conditional, If/Then/Else, If A == B, If A != B, If A < B, If A > B, If A <= B和If A >= B。

在VEE程序内进行分支


If A == B

在两个数据输入值相等时提供输出分支的对象。

用途

使用If A == B试验等于，并根据试验结果提供分支。

备注

If A == B是一个预先配置的If/Then/Else对象，用来试验两个输入是否相等。

如果两个输入相等，那么Then输出传播一个Int32标量1，否则Else输出传播一个Int32标量0。

位置

Flow [image] Conditional [image] If A == B

另请参阅

Comparison, Conditional, If/Then/Else, If A ~= B, If A != B, If A < B, If A > B, If A <= B和If A >= B。

在VEE程序内进行分支


If A >= B

在一个输入大于等于另一个输入时提供输出分支的对象。

用途

使用If A >= B试验一个输入是否大于等于另一个输入，并根据试验结果提供分支。

备注

If A >= B是一个预先配置的If/Then/Else对象。

如果A的值大于等于B的值，那么Then输出传播一个 Int32标量1，否则Else输出传播一个 Int32标量0。

位置

Flow [image] Conditional [image] If A >= B

另请参阅

Comparison, Conditional, If/Then/Else, If A ~= B, If A == B, If A != B, If A < B, If A > B和If A <= B。

在VEE程序内进行分支


If A > B

在一个输入大于另一个输入时提供输出分支的对象。

用途

使用If A > B试验一个输入是否大于另一个输入，并根据试验结果提供分支。

备注

If A > B是一个预先配置的If/Then/Else对象。

如果A的值大于B的值，那么Then输出传播一个 Int32标量1，否则Else输出传播一个 Int32标量0。

位置

Flow [image] Conditional [image] If A > B

另请参阅

Comparison, Conditional, If/Then/Else, If A ~= B, If A == B, If A != B, If A < B, If A <= B和If A >= B。

在VEE程序内进行分支


If A <= B

在一个输入小于等于另一个输入时提供输出分支的对象。

用途

使用If A <= B试验一个输入是否小于等于另一个输入，并根据试验结果提供分支。

备注

If A <= B是一个预先配置的If/Then/Else对象，用来试验两个输入不等。

如果A的值小于等于B的值，那么Then输出传播一个 Int32标量1，否则Else输出传播一个 Int32标量0。

位置

Flow [image] Conditional [image] If A <= B

另请参阅

Comparison, Conditional, If/Then/Else, If A ~= B, If A == B, If A != B, If A < B, If A > B和If A >= B。

在VEE程序内进行分支


If A < B

在一个输入小于另一个输入时提供输出分支的对象。

用途

使用If A < B试验一个输入是否小于另一个输入，并根据试验结果提供分支。

备注

If A < B是一个预先配置的If/Then/Else对象。

如果A的值小于B的值，那么Then输出传播一个Int32标量1，否则Else输出传播一个Int32标量0。

位置

Flow [image] Conditional [image] If A < B

另请参阅

Comparison, Conditional, If/Then/Else, If A ~= B, If A == B, If A != B, If A > B, If A <= B和If A >= B。

在VEE程序内进行分支


If A != B

在两个数据输入值不等时提供输出分支的对象。

用途

使用If A != B试验不等，并根据试验结果提供分支。

备注

If A != B是一个预先配置的If/Then/Else对象，用来试验两个输入不等。

如果A的值不等于B的值，那么Then输出传播一个Int32标量1，否则Else输出传播一个Int32标量0。

位置

Flow [image] Conditional [image] If A != B

另请参阅

Comparison, Conditional, If/Then/Else, If A ~= B, If A == B, If A < B, If A > B, If A <= B和If A >= B。

在VEE程序内进行分支


If/Then/Else

根据输入值分支执行流程的对象。

用途

使用If/Then/Else制订与执行哪个子线程分支有关的决策。可以在open view的公式框中输入任何合法的数学表达式。

只激活与真条件有关的输出端。容器输出是表达式的值。

If/Then/Else对If/Else If子句中的表达式求解(从上到下)，直到一个表达式的解是非零值。这个非零容器复制到表达式相应的输出上，传播一个输出。而且只传播一个输出。如果没有表达式的解为非零值，那么Else输出会传播最后一次求解的表达式的零值。

如果任何表达式的解是数组值，那么会检查数组值，看是否全为零或全不为零。如果零值和非零值混合，会返回错误，因为不能确定数组是true还是false。为产生标量，使用expr == 0或expr!=0，因为相等比较总是返回一个标量。

Open View参数

在编辑字段中输入一个表达式。

对象菜单

Add Else/If - 增加一个条件，试验是否满足前一个条件，如果条件为真，那么激活一个输出端。新条件会增加到所有当前条件下面。

Insert Else/If - 打开一个对话框，列出当前条件，允许在任何当前条件之前插入一个新条件(及相关输出端)。

Delete Else/If - 删除一个条件。在选择Delete Else/If后，选择一个要从显示的对话框中删除的条件。

在只显示一个条件时，不能使用Delete Else/If。只有至少有两个Else/If条件时，才能使用这一功能。

备注

可以在条件语句中使用任何合法的数学语句。可以添加其它输入，用于表达式中，就象Formula对象一样。

为在满足条件时输出一个值，把条件语句乘以这个值。例如，为在A小于10时在变量A中输出值，在编辑字段中使用下面的表达式：

(A<10)*A

在这个条件为真时，在Then数据输出端上输出A的值。这种技术只适用于真语句(输出到Then或Else If数据输出端)。此外，这一技术只适用于A不等于0的情况。如果A等于0，公式结果为假，Else数据输出端上输出0。如果条件为假，Else数据输出端总是返回零。

Flow [image] Conditional下的对象是预先配置的If/Then/Else对象，用来试验某个条件。

为获得TRUE|FALSE (1|0) 输出，使用Comparison对象。这些对象位于Function & Object Browser的Type: Operators, Category: Comparison下。

另外注意Comparison对象和Conditional对象之间的区别。Comparisons是输出0或1的公式。Conditionals是If/Then/Else，有两个输出，一次只激活一个输出。

位置

Flow [image] If/Then/Else

另请参阅

Comparison, Conditional, Formula, 三元运算符, Properties (对象)和对象菜单

在VEE程序内进行分支


Import Library

把UserFunction库、Compiled Function定义库或Remote Function定义库加载到正在运行的VEE程序中的一个对象。

用途

使用Import Library在运行时把下面其中一种函数库加载到VEE程序中：

UserFunction - Import Library从指定文件中加载所有UserFunctions。(通过在UserObject对象菜单上选择Make UserFunction选项，创建UserFunctions。通过创建多个UserFunction，并把它们保存到文件中，创建一个库。)

Compiled Function - Import Library把一个动态链接库或DLL附加到VEE流程中，并解析Definition File声明。(Compiled Functions是用编程语言编写的程序，如C语言，其动态链接到VEE流程。)

Remote Function - Import Library在远程主机上启动一个VEE流程，把Remote File加载到VEE流程中。(Remote Functions实际是远程VEE流程加载的、但能够在本地主机上调用的UserFunction。)

一旦加载UserFunction、Compiled Function或Remote Function库，可以使用Call Function对象按名称执行(调用)函数。

Open View参数

Library Type - 一个对话框，允许选择UserFunction, Compiled Function或Remote Function。

Library Name - 为加载的库指配一个逻辑名称。

File Name - (仅适用于UserFunction或Compiled Function) 选择包含要导入的库的文件。对Compiled Functions，这是一个.dll。

Definition File - (仅适用于Compiled Function) 为Compiled Function选择定义文件。这是包含函数调用原型的文件 (.h文件)。

Host Name - (仅适用于Remote Function) 在Remote Function运行的地方输入远程主机的名称。

Remote File Name - (仅适用于Remote Function) 输入库的文件名称(完整的路径) (如/users/MyUserName/MyDir/MyFile)。

Remote Timeout - (仅适用于Remote Function) 为Remote Function设置超时秒数。

Geometry - (仅适用于Remote Function) 使用标准几何格式为包含远程VEE视图的窗口输入初始几何图形，如800x500+0-0 (width x height+/-xoffest+/-yoffset。

Remote Debug - (仅适用于Remote Function) 在选中这个复选框时，将在调试模式下执行库内的所有UserFunction (即您将能够在这些UserFunction上执行调试，如设置断点及进行线路探测)。在执行每个远程UserFunction之前，程序将暂停。不管是否有面板视图，这一设置都适用于UserFunction。

对象菜单

Load Lib - 立即把指定库加载到VEE中。如果以前加载了同一名称的库，那么将删除这个库，用新库覆盖旧库。

Delete Lib - 立即从VEE中删除指定库。(这提供的功能与Delete Library对象相同。)

备注

Import Library对象一般用于已经把UserFunctions、Compiled Functions或Remote Functions集合开发到库中的高级操作。Import Library允许在运行时动态加载这些库。对UserFunctions，通过创建一个库，并使用Import Library加载这个库，可以节约大量的空间，而不必在各个程序中保存UserFunction的拷贝。此外，在开发由标准UserFunction组成的库时，可以把这些函数的源代码放在一个位置。

Import Library在运行时加载的UserFunctions的运行方式与程序内部本地创建的UserFunction完全相同。可以使用Call Function或Formula对象执行任何UserFunction。但是，在程序内部只能编辑本地创建的UserFunction。不能编辑导入的UserFunction，但可以使用Edit UserFunction为调试目的查看这些UserFunction。如果想编辑任何外部UserFunction，必须打开包含着UserFunction的库文件，并使用Edit菜单上的Edit UserFunctions选项。一旦编辑了UserFunction，把文件保存回磁盘。

从包含嵌入式I/O配置的程序文件执行Import Library不会导入该I/O配置的任何库。参阅嵌入式I/O配置和合并。

位置

Device [image] Import Library

另请参阅

Call, Delete Library, Edit UserFunction, UserFunction, UserObject, Properties (对象), 使用Compiled Function, 构建C函数, 创建动态链接库


Indicator

这个菜单选项根据Scalar数字输入值提供了各种模拟型图形画面。

用途

Indicator菜单允许选择五种不同的VEE对象，以图形方式显示Scalar数字输入值。这五个对象是：

Meter - 在模拟型仪表上显示一个Scalar数字值。

Thermometer - 在温度计图形内部使用色条显示一个Scalar数字值。

Fill Bar - 使用色条以图形方式显示一个数字值。

Tank - 在坦克图形内部使用色条以图形方式显示一个Scalar数字值。

Color Alarm - 一个图形告警指示符，它显示不同的颜色和文本字符串，具体取决于Scalar输入值。

位置

Display [image] Indicator

另请参阅

Color Alarm, Fill Bar, Meter, Tank和Thermometer。

显示颜色告警

显示数据的模拟画面


Instrument Manager

顯示Instrument Manager對話框。

用途

選擇I/O [image] Instrument Manager，顯示Instrument Manager對話框。使用這個對話框，添加、刪除、編輯、定位和配置接口和儀器。還可以創建下述類型的儀器I/O對象︰Direct I/O, IVI-COM Drivers, NIDAQ Drivers VXIplug&play Drivers, Panel Drivers和Component Drivers。

對話框信息

Instrument Manager對話框分成下面的區域︰

Instrument List - 新視圖包含三個節點︰My Configuration (根)、接口和儀器。點擊節點，選中節點。選中的節點控制著其它區域中的按鈕執行的操作。如果想編輯列表中的接口或儀器，雙擊接口或儀器。

Auto Discovery - 這個區域控制著自動發現和配置儀器及其驅程。在這個區域有三個按鈕︰

Find Instruments - 這個按鈕自動搜索選定接口上提供的所有儀器。如果選中根節點，那么將為儀器搜索所有本地接口。Auto Discovery Settings對話框(通過點擊Settings?#25353;鈕顯示)控制著這一搜索的部分細節。

從8.0版起，VEE開始逐步淘汰舊的不一致的I/O設備(混合SICL & VISA)，以便在聲明/使用I/O設備時實現更加統一的方法(VISA)。這可以保持向下兼容能力，同時?#40723;勵?#29992;戶使用新式設備。

用戶舊程序I/O与VEE 8.0以前完全相同。可以運行傳統SICL式設備，但可能不再添加到程序中。

注︰如果使用GPIB到LAN接口，由于在從根節點中查找局域网設備時有一個很長的超時周期，因此安捷倫建議從GPIB接口啟動查找操作。通過這种方式啟動的查找操作將快速正确地工作。

Configure Drivers - 這個按鈕識別選定的儀器，為該儀器配置任何可用的驅程。注意，只能識別IEEE-488.2 (及大多數VXI)儀器。不能自動檢測或識別完善程度較低的接口上的儀器，如RS-232。

Configure Drivers在Instrument List中選定的儀器上工作。只有選定儀器時才能使用這一項；如果選擇根節點或接口，這個按鈕會變成灰色(不能使用)。

如果在選定儀器時這個按鈕呈灰色，那么在系統上沒有提供儀器I/O。在這种情況下，您需要安裝相應的I/O庫(VISA, SICL, 等等)，以支持儀器接口。

Settings... - 這個按鈕啟動Auto Discovery Settings對話框，控制著在儀器發現過程中執行的部分操作。

如果選擇Detect only，Find Instruments按鈕只檢測在每個總線地址上是否存在設備。

如果選擇了Detect, identify和configure...，Find Instruments按鈕還為檢測的每台儀器執行識別和驅程配置。(其執行的配置与Configure Drivers按鈕相同。)

如果复選Ask before sending...，在發送*IDN?識別每台儀器前會出現一個确認對話框。如果沒有复選，會把*IDN?發送到所有儀器，而不需操作人員确認。如果系統包含舊的非IEEE-488.2儀器，您可能希望出現确認對話框。

Instrument - 這個區域允許改變儀器配置。這個區域有三個按鈕︰

Properties- 這個按鈕允許您編輯選定的接口或儀器配置。點擊Properties會打開Interface Properties或Instrument Properties對話框。也可以雙擊想要編輯的接口或儀器。

Add... - 這個按鈕允許在列表中增加儀器。在點擊Add時，出現Instrument Properties對話框。通過填寫這個對話框中的字段，可以配置儀器。

Remove - 這個按鈕從列表中檢測當前選擇的儀器。在刪除与接口相關的所有儀器時，會自動刪除接口節點。如果發生錯誤，只需選擇Cancel按鈕就可以恢复。這會退出Instrument Manager，而不會保存任何變動。

Create I/O Object - 這個區域确定在VEE程序中添加的儀器I/O對象的類型。點擊其中一個驅程按鈕，在工作區中添加儀器I/O對象。在選定儀器不能使用這些驅程時，按鈕變成灰色。

對話框底部有六個按鈕︰OK, Save, Cancel, Print, Help,和Load Samples。

OK - 點擊這個按鈕，与當前會話一起保留儀器配置，關閉Instrument Manager。

Save - 點擊這個按鈕，在veeio配置文件中保存儀器配置，關閉Instrument Manager。如果儀器配置嵌入在VEE程序中，這個按鈕會變成灰色。

Load Samples - 點擊這個按鈕，看到包含這一儀器的樣本列表。在選擇其中一個樣本時，會啟動新的VEE，加載和正确配置儀器。您只需按Run即可。

Auto Discovery的更多信息

Find Instruments在Instrument List中選定的節點上運行。如果選擇根節點(一般是"My Configuration")，那么會選擇所有本地GPIB和VXI接口。如果選擇各個接口，那么只搜索該接口。不能搜索儀器的GPIO和RS-232接口，因為它們不支持自動檢測儀器的任何標準協議。

在從根節點中運行時，Find Instruments操作不搜索使用局域网网關的接口，但從使用网關的接口節點運行時，它將搜索遠程儀器。Find Instruments操作不搜索使用局域网网關的新接口。必須手動确定使用网關的接口初始項目。

搜索可能會在Instrument List區域產生下面的結果︰

儀器配置中已經列出的、接口上物理存在的儀器會標上一個計算机圖標。

儀器配置文件中還沒有列出的、但在接口上物理存在的儀器將添加到列表中，并標上一個問號。

儀器配置中已經列出的、但在接口上物理不存在的儀器不作標記。

注意Auto Discovery流程不會從當前配置中刪除儀器。不管現有項目是否与實地儀器對應，它都會添加新項目和注釋。但是，不會簡單地刪除項目，因為在按Find Instruments按鈕時相應的儀器沒有活動。在大多數情況下，大多數用戶對這种保守方法表示歡迎。一個小的缺點是只按一個按鈕不能創建与當前連接的儀器完全相同的I/O配置。如果需要創建一個配置，其中只包含某個時間上本地連接的儀器，那么先刪除所有儀器項目，然后按Find Instruments。

保存I/O配置的更多信息

可以在單獨的文件中保存儀器配置，或把儀器配置嵌入在VEE程序中。如果想使用單獨的文件，配置文件會保存在vee.io中。擁有I/O對象的VEE程序依賴儀器I/O配置文件，查找程序中參考的儀器。如果程序与配置文件不匹配(例如，如果程序文件從一台儀器复制到另一台儀器，而不复制相應的vee.io文件)，那么對象可能不能執行，因為沒有配置其相關儀器。

也可以把儀器配置信息嵌入在VEE程序文件中。如果想創建嵌入配置，選擇File [image] Save As?/font> (或選擇Save，建立新的程序文件)，在Options區域复選Save I/O configuration with program框。然后點擊OK保存程序。在与程序一起保存I/O配置時，Instrument Manager中的Save按鈕不能使用。

Instrument Manager顯示I/O配置是來自單獨的vee.io文件還是嵌入在程序中。

備注

可以在儀器實際連接計算机或沒有連接計算机的情況下運行I/O對象(Plug&play Driver對象除外)。如果想控制實地儀器，必須設置一個正确的非零地址，啟動Live Mode。地址和Live Mode設置通過Instrument Properties對話框控制。如果地址為零或如果Live Mode關閉，儀器對象會運行，但不會試圖与物理儀器通信。在其關閉時，Plug&play Driver對象忽略Live Mode設置，一直試圖訪問物理儀器。

在VEE能夠与物理儀器通信前，必須正确配置儀器(及其接口)。如需更多信息，請參閱I/O Libraries安裝說明。

如需儀器專用幫助，從Panel Driver或Component Driver對象的對象菜單中選擇Help。

可以在程序內部交互使用Panel Driver。如果想設置各個組件的值，點擊包含組件值的字段，在出現的對話框中操作。如果想進行測量及顯示結果，在Panel Driver open view內部點擊相應的數字讀數或XY畫面。

可能會有一個以上的對象控制一台儀器。還可能有同一個驅程的多個拷貝，每個拷貝控制著不同的物理儀器。不管是哪种情況，配置的名稱都決定著哪個對象控制哪台儀器。

位置

I/O [image] Instrument Manager

另請參閱

Advanced Instrument Properties, Advanced I/O, Bus I/O Monitor, Component Driver, Direct I/O, Instrument Properties, Panel Driver, To/From VXIplug&play, To/From IVI-COM和To/From IVI-COM - Advanced

刪除儀器配置, 添加儀器配置, 編輯儀器配置

I/O配置技朮, I/O控制技朮, 邏輯單元和I/O地址

GPIO 儀器屬性,GPIB 儀器屬性,串行口儀器屬性,VXI 儀器屬性,USB 儀器屬性,TCPIP 儀器屬性。


Instrument Properties

可以配置儀器的一個對話框。

用途

使用Instrument Properties對話框，添加新的儀器配置或編輯已有的配置。可以使用Instrument Properties配置GPIB, Serial, GPIO, VXI, TCPIP, NIDAQ和USB儀器及相關對象，如Direct I/O, Plug&play Drivers, IVI-COM和Panel Drivers。

對話框信息

Instrument Properties對話框提供了下述字段和按鈕︰

備注
使用Tab鍵在字段之間切換，或使用鼠標點擊所需的字段。只有在對話框完成時才能按Enter (或Return)。按Enter (或Return)會導致對話框關閉，相當于按OK。

Name - 輸入一個唯一的名稱，識別這個特定的儀器配置。注意一個以上的配置(每個配置有一個唯一的名稱)可以控制一部儀器，但不推荐使用這种技朮。兩部不同的儀器使用的名稱不能相同。

Interface - 指定与儀器通信使用的硬件接口的類型(默認值為GPIB)。點擊GPIB顯示可以使用的接口類型列表(GPIB, Serial等等)。如果使用GPIB接口，為這個字段選擇 GPIB。

Address (eg 714) - 指定儀器的I/O地址。默認值為0。(在輸入非零的值時，Live Mode變成ON) 如需与設置地址有關的更多信息，請參閱VEE高級技朮手冊中的"配置儀器"。

Gateway - 在VEE流程存取連接到遠程計算机上的儀器時，指定LAN网關的主机名稱。默認值為This host。如需与高級I/O控制有關的更多信息，請參閱VEE高級技朮手冊中的"高級I/O內容"。

Board Number - 這种接口類型的每塊電路板從0開始編號。默認值為0。

Alias - VISA地址字符串的USB別名。USB VISA地址字符串長，使用困難。別名為識別儀器提供了更簡單的方法。默認值為USBDevice1。

TCPIP Address - 儀器的TCPIP地址。TCPIP地址字符串的格式是TCPIP[board]::host address[::LAN device name]::INSTR，括弧中的項目是可選項目，如TCPIP0::jetscrm3::GPIB0,9::INSTR，其中0是電路板::jetscrm3是主机地址(這也可以是一個IP地址，如129.82.135.12)::GPIB0是GPIB/LAN轉換器上的入口，,9是儀器的地址::INSTR是接口。

Advanced... - 點擊Advanced...按鈕將打開Advanced Instrument Properties對話框。從Advanced Instrument Properties對話框中，可以配置設備驅程，并為上面列明的每种接口類型配置通信參數。對Advanced Instrument Properties，請參閱單獨的Help內容。

OK - 一旦完成配置，點擊OK确認所作的變動。

位置

I/O [image] Instrument Manager?/font> 然后雙擊Instrument List儀器所在行，選擇一部儀器。

另請參閱

Advanced Instrument Properties, Advanced I/O, Bus I/O Monitor, Component Driver, Direct I/O, Instrument Manager和Panel Driver。

添加儀器配置


Int16

輸出2字節的整數標量或1D數組常數的對象。

用途

使用Int16設置整數常數或獲得用戶輸入。點擊輸入字段，輸入一個值。

范例

為作為面板視圖上的提示使用Int16，把Int16對象的名字變成提示，如Enter the number of seconds to delay:。用戶在輸入字段中填寫請求的信息。

在Int16中輸入公式12*1024，計算結果。

屬性

General欄︰

DataShape - 設置這一對象輸出的值的初始數据形狀。可能的值為標量和Array 1D。

 ArraySize: - 在選擇DataShape 1D Array時，ArraySize設置數組的長度。

 ArraySizeFixed - 在這一屬性為True時，數組不能添加或刪除行。只有在選擇DataShape 1D Array時才能使用這一選項。

 ShowArrayIndices - 在這一屬性為True時，輸入字段中的每一行都帶有索引。只有在選擇DataShape 1D Array時才能使用這一選項。默認值為True。

Wait for Input - 在這一屬性為True時，只有在對象值變化時對象才會操作。在這一屬性為False時，一旦滿足限制，對象將會操作，并輸出當前自動選擇的值。默認值為False。

 AutoExecute - 在這一屬性為True時，在選擇一個值時，對象操作并啟動程序的其余部分。如果程序已經運行，那么會忽略AutoExecute。默認值為False。

Initialization 組︰

 InitialValue - 指定要設置的值。默認值為0。

 InitializeAtPreRun - 在這一屬性為True時，在PreRun時設置InitialValue。默認值為False。

 InitializeAtActivate - 在這一屬性為True時，在Activate時設置InitialValue。默認值為False。

NumberFormat︰

Global Format - 使用默認格式。默認值為啟動。

Integer: - 如果Global Format關閉，指定在這個對象上顯示的整數的數字格式。選項包括Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a),和Binary (如#B00101010)。默認值為Decimal。

備注

Initialize最常用的用途是初始化UserObject內部的值。設置初始值的另一种方法是使用大多數數据常數上提供的Default Value控制端。

可以為Default Value, Reset, Enable Editing和Disable Editing添加控制輸入。

Default Value輸入可以以程序化方式改變當前值。這一輸入要求一個整數值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与進入的數据形狀相匹配。

Reset輸入可以以程序化方式把值設為零。如果Constant配置為Array 1D，那么所有值都設為零。忽略Reset輸入上的實際數据。

Enable Editing和Disable Editing輸入可以以程序化方式控制是否在對象的open view中改變值。

注意，InitialValue字段一直是一個標量，即使Int16 配置成數組。

位置

Data [image] Constant [image] Int16

另請參閱

Alloc Int16, Complex, Constant, Coord, Date/Time, Selection Control, 默認首選項, UInt8, Int32, PComplex, Real32, Real64, Text,和Toggle Control.

使用數据常數


Int32

輸出4字節的整數標量或1D數組常數的對象。

用途

使用Int32設置整數常數或獲得用戶輸入。點擊輸入字段，輸入一個值。

范例

為作為面板視圖上的提示使用Int32，把Int32對象的名字變成提示，如Enter the number of seconds to delay:。用戶在輸入字段中填寫請求的信息。

在Int32中輸入公式12*1024，計算結果。

屬性

DataShape - 設置這一對象輸出的值的初始數据形狀。可能的值為標量和Array 1D。

ArraySize: - 在選擇DataShape 1D Array時，ArraySize設置數組的長度。

ArraySizeFixed - 在這一屬性為True時，數組不能添加或刪除行。只有在選擇DataShape 1D Array時才能使用這一選項。

ShowArrayIndices - 在這一屬性為True時，輸入字段中的每一行都帶有索引。只有在選擇DataShape 1D Array時才能使用這一選項。默認值為True。

Stepping Category: - 數据形狀為 1D 時無效。

  • EnableStepping - 在這一屬性為True時，步長控制出現在輸入字段的右端，允許滾動所有值。默認值為False。

  • DetentSize - 在EnableStepping屬性為True時，當使用步進控制滾動所有值時，這會設置各個值之間的步長。默認值為1。

 Wait for Input - 在這一屬性為True時，只有在對象值變化時對象才會操作。在這一屬性為False時，一旦滿足限制，對象將會操作，并輸出當前自動選擇的值。默認值為False。

 AutoExecute - 在這一屬性為True時，在選擇一個值時，對象操作并啟動程序的其余部分。如果程序已經運行，那么會忽略AutoExecute。默認值為False。

InitialValue - 指定要設置的值。默認值為0。

 InitializeAtPreRun - 在這一屬性為True時，在PreRun時設置InitialValue。默認值為False。

 InitializeAtActivate - 在這一屬性為True時，在Activate時設置InitialValue。默認值為False。

NumberFormat:

Global Format - 使用默認格式。默認值為啟動。

Integer: - 如果Global Format關閉，指定在這個對象上顯示的整數的數字格式。選項包括Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a)和Binary (如#B00101010)。默認值為Decimal。

備注

Initialize最常用的用途是初始化UserObject內部的值。設置初始值的另一种方法是使用大多數數据常數上提供的Default Value控制端。

可以為Default Value, Reset, Enable Editing和Disable Editing添加控制輸入。

Default Value輸入可以以程序化方式改變當前值。這一輸入要求一個整數值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与進入的數据形狀相匹配。

Reset輸入可以以程序化方式把值設為零。如果Constant配置為Array 1D，那么所有值都設為零。忽略Reset輸入上的實際數据。

Enable Editing和Disable Editing輸入可以以程序化方式控制是否在對象的open view中改變值。

注意，InitialValue字段總是一個標量，即使Int32 配置成數組。

位置

Data [image] Constant [image] Int32

另請參閱

Alloc Int32, Complex, Constant, Coord, Date/Time, Selection Control, Default Preferences, UInt8, Int16, PComplex, Real32, Real64, Text和Toggle Control。

使用數据常數


Int32 Input

显示一个接受整数输入的弹出对话框的对象。

用途

使用Int32 Input提示用户输入一个整数，接受这个数字，使用用户自定义测试检查这个数字是否有效。

在弹出对话框中，在按OK按钮时，Value输出端输出用户输入的整数。在按Cancel按钮时，Cancel输出端输出1。

Open View

  • Prompt/Label - 这个字符串提示用户选择一个文件名。可以作为数据输入添加这个参数。默认值为Enter Integer Value:

  • Default Value - 在输入任何数据前位于对话框输入字段中的文本。如果用户在没有输入任何数据的情况下按OK，那么输出这个文本。可以作为数据输入添加这个参数。默认值为5。

  • Value Constraint - 测试输入文本是否有效的等式。可以使用任何数学表达式，或调用一个UserFunction。可以作为数据输入添加这个参数。默认值为0<=value AND value<=10，表示检查取值在0和10之间的用户输入。如果想支持任何值，使用表达式1。

  • Error Message - 如果用户输入没有满足Value Constraint，那么消息框中输出这些文本。可以作为数据输入添加这个参数。默认值为You must enter a integer between 0 and 10。

属性

  • PopupTimeoutEnabled - 在这一属性为True时，Timeout输出端添加到对象中。默认值为False。

  • PopUpDuration - 设置弹出对话框显示的时间长度。在过了这段时间之后，对话框超时，Timeout输出端输出值1。如果 Timeout端执行，那么任何其它输出端都没有数据。只有在选中Timeout Enabled复选框时才能使用这个字段。默认值为60 seconds。

  • PopupOKLabel - 在True时把按钮标注设置为OK。如果用户的母语不是英语，也可以使用其它字。不管使用什么字，按钮的功能都是一样的。

  • PopupCancelLabel - 在True时把按钮标注设置为Cancel。如果用户的母语不是英语，也可以使用其它字。不管使用什么字，按钮的功能都是一样的。

  • PopupPasswordMasking - 在这一属性为True时，输入文本表现为星号 (*)。在操作人员输入敏感数据时，如口令，适合使用这种功能。它不会掩蔽Value输出端上输出的字符串。默认值为False。

备注

弹出对话框的默认位置大约位于工作区中心。如果移动弹出对话框，下次它会弹出到新位置。

错误信息对话框的标题文本与Int32 Input对象标题相同。

只使用键盘对弹出对话框作出响应：在对话框弹出时，开始输入信息，使用Enter和Esc键。使用Tab键在输入字段和按钮之间移动，然后使用Space栏选择按钮。

只有在程序运行时才显示弹出对话框和错误对话框。在显示弹出对话框时，整个程序会暂停执行，在对话框关闭时继续执行。

位置

Data [image] Dialog Box [image] Int32 Input

另请参阅

File Name Selection, List Box, Message Box, Real64 Input, Text Input, UserObject和对象菜单

使用数据输入对话框


Int64

輸出8字節的整數標量或1D數組常數的對象。

用途

使用Int64設置整數常數或獲得用戶輸入。點擊輸入字段，輸入一個值。

范例

使用Int64作為面板視圖上的提示，把Int64對象的名字變成提示，如Enter the number of seconds to delay:。用戶在輸入字段中填寫請求的信息。

在Int64中輸入公式1024*1024，Int64就會計算結果。

屬性

DataShape - 設置這一對象輸出的值的初始數据形狀。可能的值為標量和Array 1D。

 ArraySize: - 在選擇DataShape 1D Array時，ArraySize設置數組的長度。

 ArraySizeFixed - 在這一屬性為True時，數組不能添加或刪除行。只有在選擇DataShape 1D Array時才能使用這一選項。

 Stepping Category: - 數据形狀為 1D 時無效。

 ShowArrayIndices - 在這一屬性為True時，輸入字段中的每一行都帶有索引。只有在選擇DataShape 1D Array時才能使用這一選項。默認值為True。

  • EnableStepping - 在這一屬性為True時，步長控制出現在輸入字段的右端，允許滾動所有值。默認值為False。

  • DetentSize - 在EnableStepping屬性為 True 時，當使用步進控制滾動所有值時，這會設置各個值之間的步長。默認值為 1。

 Wait for Input - 在這一屬性為True時，只有在對象值變化時對象才會操作。在這一屬性為False時，一旦滿足限制，對象將會操作，并輸出當前自動選擇的值。默認值為False。

 AutoExecute - 在這一屬性為True時，在選擇一個值時，對象操作并啟動程序的其余部分。如果程序已經運行，那么會忽略AutoExecute。默認值為False。

InitialValue - 指定要設置的值。默認值為0。

 InitializeAtPreRun - 在這一屬性為True時，在PreRun時設置InitialValue。默認值為False。

 InitializeAtActivate - 在這一屬性為True時，在Activate時設置InitialValue。默認值為False。

NumberFormat:

Global Format - 使用默認格式。默認值為啟動 on。

Integer: - 如果Global Format關閉，指定在這個對象上顯示的整數的數字格式。選項包括Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a)和Binary (如#B00101010)。默認值為Decimal。

備注

Initialize最常用的用途是初始化UserObject內部的值。設置初始值的另一种方法是使用大多數數据常數上提供的Default Value控制端。

可以為Default Value, Reset, Enable Editing和Disable Editing添加控制輸入。

Default Value輸入可以以程序化方式改變當前值。這一輸入要求一個整數值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与進入的數据形狀相匹配。

Reset輸入可以以程序化方式把值設為零。如果Constant配置為Array 1D，那么所有值都設為零。忽略Reset輸入上的實際數据。

Enable Editing和Disable Editing輸入可以以程序化方式控制是否在對象的open view中改變值。

注意，InitialValue字段總是一個標量，即使Int32 配置成數組。

關于Int64 和 執行模式

表示整數時Int64具有最長的精度。Agilent VEE 提供了兩個內置的數字常數來表示最大的和最小的int64: MaxInt64 和 MinInt64。在不同執行模式下，常數會被解釋為不同的類型。下表給出了一個范例。

常數 | 執行模式 VEE 8 | 執行模式 VEE 7 | 執行模式 VEE 6 | 執行模式 VEE 4&5
1 | Int32 | Int32 | Int32 | Real
1G | Real64 | Real64 | Real | Real
2147483648 (最大的Int32 + 1) | Int64 | Real64 | Real | Real
2147483647 (最大的Int32) | Int32 | Real64 | Real | Real
9223372036854775808 (最大的Int64 + 1) | Real64 | Real64 | Real | Real
9223372036854775807 (最大的Int64) | Int64 | Real64 | Real | Real
-9223372036854775808 | Real64* | Real64 | Real | Real
MinInt64** | Int64 | Int64 | Int64 | Int64

* 如果你想讓 Agilent VEE 把 -9223372036854775808 看作Int64, 請使用內置常數MinInt64。

** MinInt64 和 MaxInt64 是倆個內置數字常數，且總是被當作Int64類型的常數來操作。用戶可以在任何執行模式下使用MinInt64 和 MaxInt64。

位置

Data [image] Constant [image] Int64

另請參閱

Alloc Int64, Complex, Constant, Coord, Date/Time, Selection Control, Default Preferences, UInt8, Int16, Int32, PComplex, Real32, Real64, Text, 和 Toggle Control.

使用數据常數


Int32 Knob

输出旋钮整数值的对象。

用途

使用Int32 Knob输入Int32值。Int32 Knob特别适合面板视图。

Open View参数

open view显示旋钮当前值、最小值、最大值和旋钮控制字段。

属性

Orientation - 设置怎样显示Knob。默认值为Horizontal。

 ShowDigitalDisplay - 如果这一属性为True，那么会在对象open view底部的编辑字段中显示旋钮的当前值。在修改这个值时，旋钮的位置会发生变化。默认值为True。

ShowTic - 控制标度的tic号和标注的可视性。默认值为True。

 LabelSpacing: - 控制标度值中是否标注tic号。默认值为EveryOtherTic。

 DetentSize: - 设置Knob提供的各个值之间的距离。如果输入其它值，那么它们会舍入到最近的定位器。任何实数Detents都会截短到Int32。默认值为1。

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为0。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

Number Format - 如果Global Format关闭，指定在这个对象上显示的整数的数字格式。选项包括Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a)和Binary (如#B00101010)。默认值为Decimal。

备注

Initialization 最常用的用途是初始化 UserObject 内部的值。设置初始值的另一种方法是使用大多数数据常数上提供的 Default Value 控制端。

可以为Default Value, Reset, Enable Editing, Disable Editing, MaxValue, MinValue和Detents 添加控制输入：

Default Value 输入可以以程序化方式改变当前值。这一输入要求一个Int32 Scalar值。

Reset输入可以以程序化方式把值设为零。忽略 Reset 输入上的实际数据。

Enable Editing和Disable Editing输入允许以程序化方式控制能否在open view中改变当前值、最小值和最大值。

The MaxValue和MinValue输入允许以程序化方式设置最小值和最大值字段。这些输入要求实数标量值，然后转换成Int32。

Detents输入以程序化方式设置定位器值。

位置

Data [image] Continuous [image] Int32 Knob

另请参阅

Complex, Selection Control, Int32, Int32 Slider, PComplex, Real64, Real64 Knob, Text, Toggle Control和对象菜单

使用数据滑尺和旋钮


Int32 Slider

输出滑尺整数值的对象。

用途

使用Int32 Slider输出Int32值。Int32 Slider特别适合用于面板视图中。

Open View参数

open view显示滑尺值、最小值、最大值和滑尺控制字段。

属性

Orientation - 设置怎样显示Slider。默认值为Vertical。

 ShowDigitalDisplay - 如果这一属性为True，那么会在对象open view底部的编辑字段中显示滑尺的当前值。在修改这个值时，滑尺的位置会发生变化。默认值为True。

ShowTics - 如果这一属性为True，滑尺显示最小值和最大值之间的值的标志和标注。默认值为True。对VEE 4.0版以前的程序，默认值为False。

 LabelSpacing: - 控制标度值上标注的tic号的可视性。默认值为Every Other Tic。

 Detent Size: - 设置Slider提供的各个值之间的距离。如果输入其它值，那么它们会舍入到最近的定位器。任何实数Detents都会截短到Int32。默认值为1。

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为0。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

NumberFormat - 如果Global Format关闭，指定在这个对象上显示的整数的数字格式。选项包括Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a),和Binary (如#B00101010)。默认值为Decimal。

备注

Initialize 最常用的用途是初始化 UserObject 内部的值。设置初始值的另一种方法是使用 Default Value 控制端。

可以为Default Value, Reset, Enable Editing, Disable Editing, MaxValue, MinValue和Detents 添加控制输入：

Default Value 输入可以以程序化方式改变当前值。这一输入要求一个 Int32 Scalar值。

Reset输入可以以程序化方式把值设为零。忽略 Reset 输入上的实际数据。

Enable Editing和Disable Editing输入允许以程序化方式控制能否在open view中改变当前值、最小值和最大值。

The MaxValue和MinValue输入允许以程序化方式设置最小值和最大值字段。这些输入要求实数标量值，然后转换成Int32。

Detents输入以程序化方式设置定位器值。

位置

Data [image] Continuous [image] Int32 Slider

另请参阅

Complex, Selection Control, Int32, Int32 Knob, PComplex, Real64, Real64 Knob, Real64 Slider, Text, Toggle Control,和对象菜单

使用数据滑尺和旋钮


Interface Event

为VXI、GPIB和串行捕获异步接口事件的对象。

用途

Interface Event对象可以配置成检测各种接口事件。根据配置，对象可能会等待事件，放弃执行其它并行线程，或者会返回一个布尔值(0或1)或接口状态的其它指示符。

如果Interface Event对象已经配置成等待事件，那么在发生事件时，将执行对象。只有在VEE 3执行模式下，这个对象所带的任何线程才优先于任何其它并行线程，将一直执行直到结束。如果Interface Event对象已经配置成返回接口状态指示符，那么包含对象的线程拥有普通优先权，并与任何其它线程一起执行。

Open View参数

Interface - 在这个字段中显示当前选择的接口。点击这个字段显示当前配置的接口列表。对出现在这个列表中的接口，必须使用I/O [image] Instrument Manager...为该接口配置至少一台仪器。它根据逻辑单元(如："hpib7"和"hpib8")区分同一类型的多个接口。

Action - 确定在检测到事件时Interface Event对象的执行行为。

Wait - 等待发生事件。在发生事件时执行对象。这个对象所带的任何线程都要优先于任何其它并行线程，在事件发生时将一直执行直到结束，但它会"被阻塞"，直到事件发生。在发生事件时，输出布尔TRUE (1)或接口事件专用码型。

No Wait - 立即执行，把32位整数指定的配置事件的当前状态放在event输出端。如果事件没有发生，这个值是布尔值FALSE (0)。如果事件已经发生，会返回一个TRUE (1)或一个与接口事件相关的码型。在No Wait配置中，Interface Event对象所带的任何线程将拥有普通执行优先权，将与任何其它线程并行执行。

Event - 允许选择具体接口事件。点击这个字段显示多个选项。对下面每个选项，我们同时描述了Wait和No Wait操作。注意在每种情况下，上面都描述了Wait和No Wait的线程传播优先权。

SRQ - 这是GPIB接口的唯一选项：
-- 如果Action选项是Wait，Interface Event对象会延迟执行，直到GPIB确定服务请求线路。然后它在event输出端放上布尔值TRUE (1)。
-- 如果Action选项是No Wait，且如果事件没有发生，那么会输出布尔值FALSE (0)。如果事件已经发生，那么event端输出布尔值TRUE (1)。

DAV - (Data Available) 这是串行接口的唯一选项。
-- 如果Action选项是Wait，Interface Event对象会延迟执行，直到数据到达接收缓冲器中。接收缓冲器中的字节数量放在event输出端，改变下述对象，从缓冲器中读取字节。
-- 如果Action选项是No Wait，Interface Event对象会立即执行，给出接收缓冲器中来自event输出端的字节数量。

Sys Reset - 在VXI接口上发生系统复位时执行Interface Event对象：
-- 如果Action选项是Wait，在发生系统复位时，event端输出布尔值TRUE (1)。
-- 如果Action选项是No Wait，且如果没有发生系统复位，那么输出FALSE (0)。

Sys Active - 在VXI Resource Manager完成VXI初始化和管理时，它向VXI接口发送Begin Normal Operation (BNO)命令。如果配置了Sys Active，在发生下面的情况时会执行Interface Event对象：
-- 如果Action选项是Wait，在发生BNO命令时 event端输出布尔值TRUE (1)。
-- 如果Action选项是No Wait，且如果没有发生事件，那么输出FALSE (0)。

Sys Deactive - 在正常VXI操作中止时，向接口发送Abort Normal Operation (ANO)或End Normal Operation (ENO)命令。如果配置了Sys Deactive，那么在发生下面的情况时会执行Interface Event对象：
-- 如果Action选项是Wait，在发生ANO或 ENO命令时event端输出布尔值TRUE (1)。
-- 如果Action选项是No Wait，且如果没有发生事件，那么输出FALSE (0)。

TTL Trig - 在配置TTL Trig时，Interface Event对象"监测"VXI TTL触发线：
-- 如果Action选项是Wait，在VXI设备确认VXI背板中八条TTL触发线的一条或多条触发线时，将执行Interface Event对象，把一个32位整数放在event输出端。这个整数只有低字节有效。它是一个码型，显示了八条TTL触发线中哪条触发线活动(位0与触发线0对应，位7与触发线7对应)。每个位集合(1)表明已经触发相应的线。例如，00010001表明已经触发TTL线0和4。
-- 如果Action选项是No Wait，且如果没有发生触发，那么输出布尔值FALSE (0)。

ECL Trig - 在配置ECL Trig时，Interface Event对象"监测"VXI ECL触发线：
-- 如果Action选项是Wait，在VXI设备确认VXI背板中四条ECL触发线的一条或多条触发线时，将执行Interface Event对象，把一个32位整数放在event输出端。这个整数的低字节是一个码型，显示了四条ECL触发线中哪条触发线活动。(位 0与触发线0对应，位3与触发线3对应)。每个位集合(1)表明已经触发相应的线。例如，00001001表明已经触发ECL线0和3。
-- 如果Action选项是No Wait，且如果没有发生触发，那么输出布尔值FALSE (0)。注意某些VXI卡槽可能会选择只实现两条ECL触发线。

EXT Trig - 在配置EXT Trig时，Interface Event对象"监测"VXI EXT触发线：
-- 如果Action选项是Wait，在外部设备确认嵌入式控制器的"Trig In" 输入时，将执行Interface Event对象。最多可以发生四个外部触发输入。在执行Interface Event对象时，event端输出一个32位整数。这个整数的低字节是一个码型，显示了四条EXT触发线中哪条触发线活动。(位 0与触发线0对应，位3与触发线3对应)。每个位集合(1)表明已经触发相应的线。例如，00001001表明已经触发EXT线0和 3。
-- 如果Action选项是No Wait，且如果没有发生触发，那么输出布尔值 FALSE (0)。某些控制器实现方案可能没有外部触发输入。

Unknown Interrupt - 如果配置Unknown Interrupt，Interface Event对象会检查没有处在VXI控制器伺服器区域中的VME或VXI设备产生的任何VME中断：
-- 如果Action选项是Wait，这种中断会导致执行Interface Event对象。返回的32位值是设备进行中断确认(IACK)时放在VXI总线上的值。
-- 如果Action选项是No Wait，且如果没有发生中断，那么输出布尔值FALSE (0)。

Unknown Signal - 如果配置Unknown Signal，Interface Event对象会检查没有处在VXI控制器伺服器区域中的VXI设备产生的任何信号寄存写入：
-- 如果Action选项是Wait，这种信号会导致执行Interface Event对象。返回的32位值是信号写入寄存器的内容。
-- 如果Action选项是No Wait，且如果没有发生信号，那么输出布尔值FALSE (0)。

备注

Interface Event对象的执行行为可以是异步的，也可以是同步的，具体取决于选择的Action参数。NO WAIT指定同步轮询操作。对象会立即执行，任何所附线程的优先权与目前正在执行的所有其它线程相同。选择WAIT会导致Interface Event对象一直等到事件发生。对象所带的任何线程的优先权要更高，将一直执行到结束，而阻塞所有其它并发执行的线程。

Timeout Control Pin - 设置对象试图获得锁定接口为事件服务前等待的超时周期。如果没有采集接口，那么会发生错误。

位置

I/O [image] Advanced I/O [image] Interface Event

另请参阅

Instrument Event和Interface Operations.

轮询GPIB仪器


Interface Operations

使用事务通过GPIB、VXI和串行方式发送低级接口命令和数据的对象。

Interface Operations应该用于接口专用任务或用于通过Direct I/O或Instrument Driver与设备通信不能提供必要的控制等级的特殊情况。

用途

对低级操作使用Interface Operations，如：

发送非标准GPIB地址序列。

发送GPIB组触发消息或拉VXI触发线。

在ATN为真或ATN不为真时通过GPIB发送任意字节。

向VXI或GPIB接口发送清除命令和复位命令。

发送IEEE 488.1定义的多行消息。

把接口锁定和解锁消息发送到串口。

为使用Interface Operations，必须添加一个或多个事务。为此，在对象菜单中点击Add Trans。事务作为多行文本列在对象的open view中。为编辑事务，双击事务，使用出现的对话框编辑事务。

对象菜单

Edit Trans - 编辑当前高亮度显示的事务。

Add Trans - 在列表末尾添加一个事务。

Insert Trans - 在目前高亮度显示的事务前插入一个事务。

Cut Trans - 剪切(删除)目前高亮度显示的事务，但把它保存在事务"剪切和粘贴"缓冲器中。

Copy Trans - 把目前高亮度显示的事务复制到事务"剪切和粘贴"缓冲器中。

Paste Trans - 粘贴以前"剪切"或"复制"的事务。

Delete Trans - 删除列表中高亮度显示的事务。

Move Trans Up - 上移高亮度显示的事务。

Move Trans Down - 下移高亮度显示的事务。

Print Trans - 打印描述当前高亮度显示的事务的详细对话框。

属性

Interface: - 显示总线配置，允许变成另一个接口。使用逻辑单元区分同一类型的多个接口 (如"hpib7"和"hpib8")。

 Timeout: - 设置超时时间。可以使用控制输入端设置。

快捷方式

为迅速插入一个事务，把光标放在事务上。按CTRL+O会在放置光标的事务上插入一个事务。

为迅速删除("杀掉")一个事务，把光标放在该事务上，按CTRL+K。

为从"kill"缓冲器中粘贴一个事务，按CTRL+V。

为迅速移到下一个事务或上一个事务，分别按CTRL+N或CTRL+P。

位置

I/O [image] Advanced I/O [image] Interface Operations

另请参阅

Advanced I/O, Bus I/O Monitor, Formula, Instrument Manager和编辑事务


Interface Properties

配置各种接口地址的一个对话框。

用途

可以使用Interface Properties对话框，配置或编辑GPIB, VXI, Serial或GPIO接口地址。

Open View参数

从Interface Properties对话框中配置下述参数：

Interface: - 这是要配置的接口类型(默认接口类型是从Instrument List中选择的接口类型)。

Address: - 这是希望配置或编辑的逻辑单元编号。

Gateway: - 在VEE流程必须访问连接到远程计算机的仪器时，指定局域网网关的主机名称。默认值是This host。

备注

从8.0版起，VEE开始逐步淘汰旧的不一致的I/O设备(混合SICL & VISA)，以便在声明/使用I/O设备时实现更加统一的方法(VISA)。这可以保持向下兼容能力，同时?#40723;励?#29992;户使用新式设备。

用户旧程序I/O与VEE 8.0以前完全相同。

位置

I/O [image] Instrument Manager...

从Instrument Manager对话框的Instrument List中，选择(高亮度显示)其中一个接口图标，如GPIB, VXI, Serial或GPIO，然后点击Properties按钮，出现Interface Properties对话框。

另请参阅

Advanced I/O, Advanced Instrument Properties, Instrument Properties, 添加仪器配置和编辑仪器配置。


IP Address

检索主机的IP地址。

位置

System [image] Environment [image] IP Address


Is Leap Year?

如果是闰年，则返回布尔值真。

位置

System [image] DateTime [image] Is Leap Year?


Is Path Rooted?

根据提供的路径是不是根路径来检索布尔值。例如，vee\src不是根路径，而\vee\src则是根路径。

位置

System [image] Path [image] Is Path Rooted?


Join

使用文本分隔符把由文本值组成的数组联接起来。例如，数值1; 2; 3;和4。分隔符使用逗号，结果为1, 2, 3, 4。这为创建CSV文件提供了一种快捷方式。

位置

System [image] String   [image] Join


Junction

参阅JCT。


Label

用来在Panel View上放一个文本标记的对象。

用途

使用Label，在Panel View上创建标记或标题。这个对象不需执行，其背景颜色混合到Panel View的背景颜色中。

Open View

显示当前Label串。默认值是Label。为改变Label，使用对象菜单中的Properties改变对象标题，或使用数据输入。

属性

Justification - 指定文本在对象边框内部的布局。默认值是Left。

备注

Label默认的对象颜色与默认的Panel View颜色相同，以便Label背景颜色混合到Panel View中。

在Panel View上，Label对象默认的Border设置是None。

如果使用标记值的数据输入，注意Label对象在运行时不会自动确定大小，以适应字符串的长度。如果字符串比Label对象长，Label会削短数据输入上发给它的字符串。一定要使Label对象长度足够长，以便在使用数据输入时适应字符串。

位置

Display [image] Label

另请参阅

Beep和Text

到标记区域


Last Directory Access Time

检索最后一次访问目录的时间。

位置

System [image] Directory [image] Last Directory Access Time


Last Directory Write Time

检索最后一次修改指定目录的时间。

位置

System [image] Directory [image] Last Directory Write Time


Last Error

一个View菜单项，允许检索VEE中程序生成的最后Error对话框。

用途

Last Error允许检索VEE程序中生成的最后Error对话框。可以在Error对话框上点击Go To按钮，VEE工作空间中将出现VEE程序的细节视图。只要程序保持在Error状态，那么就会高亮度显示发生错误的UserObject或UserFunction。如果程序不再处于Error状态，全如在程序已经停止时，那么将不再高亮度显示对象。

对话框信息

Last Error对话框包含下述信息和按钮：

错误信息和错误编号 - Last Error对话框的主窗口将简要解释生成的错误，并识别发生错误的Object Title和Object Type。另外还将识别Error number。

Go To - 点击Go To按钮，出现VEE程序的细节视图，如果程序仍处于Error状态，那么将高亮度显示发生错误的UserObject或UserFunction。

Call Stack - 点击Call-Stack按钮，出现Call Stack对话框。Call Stack对话框可以包含与程序中发生Error的地方有关的更多信息。

Close - 关闭Error对话框。

Help - 点击Help打开Help标题，提供与收到的Error number有关的更多信息。

备注

使用Last Error不能检索Error pin捕获和处理的错误。

位置

View [image] Last Error

另请参阅

Error Output (对象菜单), Call Stack, errorInfo(),和Raise Error.


List Box

显示弹出对话框、向用户显示一个列表的对象。

用途

使用List Box向用户显示一条列表消息。用户选择对话框中的一个(或多个)选项作出响应。可以定制按钮上的文本。

在弹出对话框中，在选中一个项目时，Text输出端输出选择结果，Index输出端输出列表索引。在选中多个项目时，Text输出端输出由文本组成的数组，Indices输出端输出由索引组成的数组。

Open View

  • List Entries Edit ... - 允许编辑List Box弹出对话框上显示的选项列表。可以作为数据输入添加这个参数。

  • Default Entry - 允许从List Entries弹出对话框上出现的选项中选择默认项。可以作为数据输入添加这个参数。

  • Allow Multiple Selections - 在选中这个复选框时，用户可以从列表中选择一个或多个选项。同时在弹出对话框中增加了另两个按钮：Select All和Clear All。

属性

  • PopupTimeoutEnabled - 在这一属性为True时，Timeout输出端添加到对象中。默认值为False。

  • PopUpDuration - 设置弹出对话框显示的时间长度。在过了这段时间之后，对话框超时，Timeout输出端输出值1。如果 Timeout端执行，那么任何其它输出端都没有数据。只有在选中Timeout Enabled复选框时才能使用这个字段。默认值为60 seconds。

  • PopupOKLabel - 在True时把按钮标注设置为OK。如果用户的母语不是英语，也可以使用其它字。不管使用什么字，按钮的功能都是一样的。

  • PopupCancelLabel - 在True时把按钮标注设置为Cancel。如果用户的母语不是英语，也可以使用其它字。不管使用什么字，按钮的功能都是一样的。

  • PopupSelectAllLabel - 只有在选中Allow Multiple Selections时才能使用。

  • PopupClearAllLabel - 只有在选中Allow Multiple Selections时才能使用。

  • PopupPasswordMasking - 在这一属性为True时，输入文本表现为星号 (*)。在操作人员输入敏感数据时，如口令，适合使用这种功能。它不会掩蔽Value输出端上输出的字符串。默认值为False。

  • PopupNumDisplayedItems - 设置在没有滚动条的情况下List Box将显示的最大行数。如果这个值大于列表项数，那么将调节弹出对话框，包含列表项数 (没有空行)。默认值为10。

备注

弹出对话框的默认位置大约位于工作区中心。如果移动弹出对话框，下次它会弹出到新位置。

只使用键盘对弹出对话框作出响应：在对话框弹出时，开始输入信息，使用Enter和Esc键。使用Tab键在输入字段和按钮之间移动，然后使用Space栏选择按钮。

只有在程序运行时才显示弹出对话框和错误对话框。在显示弹出对话框时，整个程序会暂停执行，在对话框关闭时继续执行。

位置

Data [image] Dialog Box [image] List Box

另请参阅

File Name Selection, Message Box, Int32 Input, Real64 Input, Text Input和UserObject。

关于内置对话框对象


List

参阅Selection Control。


Logging AlphaNumeric

显示Scalar或Array 1D字母数字数据的对象。Logging AlphaNumeric允许在不重写显示画面的情况下显示数据。

用途

使用Logging AlphaNumeric作为以前值的历史显示连续输入(Scalar或Array 1D)。

对象菜单

Clear - 清除Logging AlphaNumeric上显示的所有数据。Clear可以添加为控制输入。

属性

ClearAtPreRun - 在这一属性为True时，在PreRun时清除Logging AlphaNumeric的内容。默认值为True。

 ClearAtActivate - 在这一属性为True时，在Activate时清除Logging AlphaNumeric 的内容。默认值为True。

Buffer Size - 指定显示缓冲器保持的行数。如果输入Logging AlphaNumeric的行数大于该行数，那么将保留最新的值，覆盖以前的值。默认值为256。

 NumberFormat - 如果Global Format关闭，那么指定该对象上显示的整数的数字格式。选项包括Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a)和Binary (如#B00101010)。默认值为Decimal。

  • Real: - 如果Global Format关闭，那么指定该对象上显示的整数的数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Sat 01/Jan/1994 17:01:38)。默认值为Standard。

备注

如果Logging AlphaNumeric对象当前的宽度太小，而不能显示默认精度的数字类型，那么会显示一行星号 (***)。调整对象大小，返回程序，显示数据。

显示的ASCII值0-31取决于字体，可能不能读。

在某些平台(操作系统)上可能不能正确显示长于2048字符的文本字符串。在任何平台上都不能正确显示长于32767字符的文本字符串。

位置

Display [image] Logging AlphaNumeric

另请参阅

AlphaNumeric, 默认首选项和对象菜单

显示一串对数值


Machine Name

检索主机的名称。

位置

System [image] Environment [image] Machine Name


Magnitude Spectrum

以图形方式显示频谱的一个对象。

用途

使用Magnitude Spectrum在频域中显示频谱或波形。波形通过傅立叶变换自动转换成频谱。X轴是输入频谱的取样单位 (一般是频率)。

Open View参数

下面是默认的Open View参数。其用途及其它参数的使用情况由对象菜单及Properties对话框中的选项控制 (对象菜单 [image] Properties)。

Mag - Y轴的名称。

Trace1 - 第一条轨迹的名称。

Freq - X轴的名称。

对象菜单

Auto Scale [image] - 点击这些菜单项，立即把画面重新定标成显示整条轨迹。(可以添加为控制端，或使用Scales属性栏设置成在采集数据后自动重新定标画面。)

Auto Scale - 自动定标两个轴。

Auto Scale X - 自动定标X轴。

Auto Scale Y - 自动定标Y轴。

Zoom [image] - 缩放显示画面。

In - 放大显示画面，只包含使用指针选定的矩形区域。在选择这一功能后，通过在图形区域上拖动，可以选择区域。这一操作使用?#27233;皮圈?#26694;确定信息外形。

Out 2|5|10|20|50|100X - 在相对于中心的X方向和Y方向上，以某个倍数扩大显示范围。

Clear Control [image] - 指明什么时候清除显示画面的参数。

Display - 清除显示的轨迹。这个参数可以添加为控制端。

Next Curve - 复位画面，显示一系列曲线中的下一个曲线 (画面下次运行时的数据)，而不会清除上一个曲线。在系列中每条新曲线前必须选择(或激活)Next Curve。可以作为控制输入添加这个参数。

Center Markers - 如果提供了标尺，那么把它们放到轨迹看得到的部分的中心。如果滚动画面，看不到标尺，可以使用这种功能。

Add Right Scale - 添加最多两个额外的Y轴标度，允许多条轨迹有不同的标度范围。在添加适当的标度后，可以添加输入端 (对象菜单 [image] Add Terminal [image] Data Input)。然后使用 Properties对话框上的Traces和Scales栏设置其属性。

Print - 出现Print对话框。按OK将在选定的输出设备上打印或绘制设备的整个画面拷贝。可以作为控制输入添加Print。

属性

Name - 为显示画面指配一个变量值。通过输入名称，在打开时可以以程序化方式读取标尺值。变量是Object数据类型，是存在画面的上下文的局部变量。详情请参阅备注。

ClearAtPreRun - 在属性为True时，在PreRun时清除画面。默认值为True。

 ClearAtActivate - 在属性为True时，在Activate时清除画面。默认值为True。

ShowTracesLegend - 在Open View中，控制轨迹名称和颜色的可视性。使用EditTracesAndScales控制轨迹图例的编辑按钮功能。默认值为True。

 ShowScalesLegend - 在Open View中，控制标度名称的可视性。使用EditTracesAndScales控制标度图例的编辑按钮功能。默认值为True。

 ShowScaleLabels - 在Open View中，控制标度轴标为H的取值的可视性。默认值为True。

 ShowScrollBars - 在Open View中，控制X和Y标度上的滚动条。默认值为True。

 ShowAutoScaleButton - 在Open View中，控制Auto Scale按钮的可视性。默认值为False。

 EditTracesAndScales - 在Open View中，控制轨迹和标度属性的编辑按钮功能。在启用时，点击各个轨迹或标度名称，编辑其属性。默认值为True。使用ShowTracesLegend和ShowScalesLegend控制轨迹和标度名称的可视性。

GridType - 默认值为Lines。

NumMarkers - 图形中显示的标尺数量。为把标尺移动到一条不同的轨迹上，进入Open View，点击画面底部附近标尺值左面的按钮。按钮顺序通过不同轨迹的不同线型和颜色。

 MarkerInterpolate - 在属性为True时，可以把标尺放在显示的数据点之间。通过线性内插计算显示的标尺值。默认值为False。

DisplayBackColor - 允许从调色板中选择显示区域的颜色。在画面出现在细节视图和面板视图中时，可以选择不同的颜色。

ScaleLabelFont - 允许从系统上提供的字体列表中选择标度标记的字体。标度标记文本的默认字体是Screen Element: Graph Scale Label Text中Fonts栏上Default Preferences中设置的字体。

Traces Group: (每条轨迹一个)

Name: - 在图形区域左面显示的轨迹名称及相应的输入端名称。

Color: - 轨迹的颜色。每条新增的轨迹有一个与现有轨迹不同的颜色。第一条轨迹的默认值是yellow。

LineStyle: - 连接多个数据点的线的格式。默认值为continuous line。

PointStyle: - 标记每个数据点的符号。为显示没有连接的数据点，选择单点LineStyle格式及希望的PointStyle符号。默认值为dot。

Scale - 如果存在一个以上的Y标度，选择这个轨迹定标的标度。

Scales 属性： (每个X和Y标度一个，外加额外的Y标度)

Show Scale: - 如果有多个Y标度，那么这个选项(使用复选框)将指明在图形区域右面是否显示端点和每个新增的适当标度的轴。

Scale Name: - Open View中出现的标度名称。

Automatic Scaling: - 控制画面是否自动重新定标，在收到数据后立即显示整条轨迹。默认值为打开。如果这一项关闭，可以在Layout组中使用General栏上的Auto Scale按钮，或在对象菜单上使用Auto Scale命令，来重新定标画面。

Maximum: - 标度的最大值。

Minimum: - 标度的最小值。

Label Spacing: - 控制哪个tic号中标上标度值。X标度的默认值是Every Other Tic；Y标度的默认值是Every Major Tic。

Mapping: - x和y数据与画面映射的方式。映射可以是线性映射或对数映射。为绘制log-log图，把X轴和Y轴都变成Log。默认值为Linear。

Log Cycles: - 在Automatic Scaling启动时显示的10的最大数量(从x和y最大值向下计数)。只有在Mapping为Log时，才使用Log Cycles。在轨迹数据中包含大的动态范围时，适合使用Log Cycles。默认值为4。

Scale Color - 任何背景栅格或tic号的颜色。默认值为Gray。

ScaleNumberFormat: (X和Y标度及任何其它Y标度出现的属性。)

Global Format - 使用默认格式。默认值为True。

Real - 如果Global Format关闭，指定这个对象上显示的实数数字格式。选项有：Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

X和Y标尺值采用与其附在的标度相同的数字格式。X和Y的增量标尺值使用默认数字格式，除非使用Time Stamp格式。如果X标度上的标尺1和标尺2或Y标度上的两个标尺都使用Time Stamp格式，增量标尺值将使用Delta Time格式。

备注

输入类型必须是Spectrum, Waveform,或Coord (Scalar或Array 1D)。

通过只使用x和y值，而不是先转换成Spectrum类型，来绘制Coord 型输入数据图。

使用Add Terminal [image] Data Input对象菜单选项添加轨迹，最多支持12条轨迹。

在Automatic Scaling属性打开时(Scales栏)，如果把整个数据集合发送到显示画面上，程序执行速度要更快。然后，显示画面会自动重新定标一次。如果程序一次把一个数据点发送到显示画面上，显示画面可以在每个数字点以后自动重新定标，这会降慢程序执行速度。在这种情况下，使用Collector对象创建一个数组，然后把数组发送到显示画面上。.

添加控制输入

可以添加一个Title控制输入端，把标题栏名称设置成指定的文本值。这可以程控打印画面时显示的标题。

可以添加一个Traces控制输入端。控制输入数据必须是由多个记录组成的数组(或如果只想控制一条轨迹，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为TraceNum的字段及一个整数值(1是第一条轨迹)。要求 TraceNum字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name

Pen

LineType

PointType

Name字段必须有一个文本值。Pen, LineType和PointType值必须是从0到n的整数，其中0不绘图，n是提供的选项数量。

可以添加一个Scales控制输入端，控制上面列出的标度参数。控制输入数据必须是由多个记录组成的数组(如果只想控制一个标度，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为Scale的Text字段，取值为X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name - 在Open View中改变标度名称。必须是一个文本值。

Min - 设置X标度的最小值。必须是一个整数值或实数值。

Max - 设置X标度的最大值。必须是一个整数值或实数值。

Mapping - 必须有一个Linear或Log文本值。

AutoScale - 控制自动定标。必须有一个On或Off的文本值。

可以添加Print和Plot控制输入端。在Windows上，这些输入使用Windows的Print Setup对话框(File [image] Print Setup?/font>)，其行为方式相同。如果当前Printer Setup处于Print to File模式，可以指定目的文件或目录名称，作为Plot控制输入上的字符串数据。如果没有给出控制输入值，那么将使用Printer Setup中指定的文件或目录名。

如需进一步信息，请参阅使用记录和使用DataSets。

以程序化方式设置和读取标尺值

可以以程序化方式获得和设置标尺值。为准备显示，打开Properties窗口。为Name输入一个值。Name值暗示声明Object变量是显示画面上下文的局部变量。然后，在Markers组中打开一个设置。VEE为标尺的X位置和Y位置指配下述属性，包括增量值。(Marker1指向下；Marker2指向上。)

 Marker1X (作为Real64获得位置)

 Marker1Y (作为Real64获得位置)

 Marker2X (作为Real64获得位置)

 Marker2Y (作为Real64获得位置)

 MarkerDX (作为Real64获得位置)

 MarkerDY (作为Real64获得位置)

 Marker1 (作为Coord获得/设置位置)

 Marker2 (作为Coord获得/设置位置)

可以使用Marker1和Marker2属性，读取当前标尺位置，或把标尺移动到新位置。所有其它标尺属性都是只读的。如果试图把标尺移动到不在轨迹的坐标上，标尺会"咬"住轨迹上最近的点上。

在程序中，在Formula对象中输入一个或多个表达式，设置或读取标尺值。每个表达式必须包含显示画面Name和相关的标尺属性。标尺属性名称不分大小写。如果显示画面的Name是XY，同时打开Delta Markers，那么下述表达式将读取提供的所有标尺值，并作为Real64标量把它们指配给变量a到f：

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把显示画面Name指配给一个全局变量。在Formula对象中，在程序内添加一个赋值表达式，使用Declare Variable对象声明全局变量。例如，假设已经声明globalXY变量为全局变量，并把其Type设为Object，那么在存在显示画面的上下文中，在程序中添加下面的表达式：

Set globalXY = XY

可以从使用表达式的程序的另一个上下文中读取显示画面的标尺值，如：

a = globalXY.Marker1X

在开发程序时，您可能想包括一种方式暂停程序，以便在程序读取值之前手动重新定位标尺。暂停程序的方式之一是在显示画面的序列输出和Formula对象的序列输入之间添加一个Confirm (OK)按钮。您也可能想以程序化方式定位标尺。

位置

Display [image] Spectrum (Freq) [image] Magnitude Spectrum

另请参阅

Magnitude vs Phase, Phase Spectrum, Polar Plot, 默认首选项, Spectrum (Freq),和Waveform (Time)。

显示波形, 在显示画面中设置标尺, 获得和设置标尺属性,和对象菜单


Magnitude vs Phase

显示复合频谱的幅度对相位的极坐标图的一个对象。

用途

使用Magnitude vs Phase显示频谱或波形。波形通过傅立叶变换自动转换成频谱。每个数据点的Radius是频谱的幅度；Angle是频谱在当前触发单元中的相位。

可以使用对象菜单上的Properties，在Polar和Smith Chart模式之间变换。可以从Lines变成Smith Chart。

对Polar栅格类型，标尺值以极坐标格式显示(r:radius, a:angle)，对Smith Chart和Inv Smith Chart栅格类型，标尺值以复阻抗或导纳格式显示。

Open View参数

下面是默认的Open View参数。其用途及其它参数的使用情况由对象菜单及Properties对话框中的选项控制 (对象菜单 [image] Properties)。

Mag - 半径标度的名称。

Span: - 显示画面的垂直维度。在原点位于显示画面中心时，Span是半径的两倍。这个参数控制着显示画面的标度。默认值为2。

Trace1 - 第一条轨迹的名称。

Polar Reference Location - 指定显示的极坐标图的部分。其速度要比滚动到某个区域快。在输入字段中改变参考点，可以把指定的图表部分(如Center)滚动到指定的位置(如(0, @0))。

Ref Radius: - 粗体格线圆圈的半径值。

对象菜单

Auto Scale [image] Auto Scale - 立即把画面重新定标成显示整条轨迹。Auto Scale会把极坐标的参考位置复位到Center (0,@0)。(可以添加为控制端，或使用Scales属性栏设置成在采集数据后自动重新定标画面。)

Auto Scale X - 不能使用。

Auto Scale Y - 不能使用。

Zoom [image] - 缩放显示画面。

In - 放大显示画面，只包含使用指针选定的矩形区域。在选择这一功能后，通过在图形区域上拖动，可以选择区域。这一操作使用?#27233;皮圈?#26694;确定信息外形。

Out 2|5|10|20|50|100X - 在相对于中心的X方向和Y方向上，以某个倍数扩大显示范围。

Clear Control [image] - 指明什么时候清除显示画面的参数。

Display - 清除显示的轨迹。这个参数可以添加为控制端。

Next Curve - 复位画面，显示一系列曲线中的下一个曲线 (画面下次运行时的数据)，而不会清除上一个曲线。在系列中每条新曲线前必须选择(或激活)Next Curve。可以作为控制输入添加这个参数。

Center Markers - 如果提供了标尺，那么把它们放到轨迹看得到的部分的中心。如果滚动画面，看不到标尺，可以使用这种功能。

Add Right Scale - 添加最多两个额外的Radius轴标度，允许多条轨迹有不同的标度范围。在添加适当的标度后，可以添加输入端 (对象菜单 [image] Add Terminal [image] Data Input)。然后使用 Properties对话框上的Traces和Scales栏设置其属性。

Print - 出现Print对话框。按OK将在选定的输出设备上打印或绘制设备的整个画面拷贝。可以作为控制输入添加Print。

属性

Name - 为显示画面指配一个变量值。通过输入名称，在打开时可以以程序化方式读取标尺值。变量是Object数据类型，是存在画面的上下文的局部变量。详情请参阅备注。

ClearAtPreRun - 在属性为True时，在PreRun时清除画面。默认值为True。

 ClearAtActivate - 在属性为True时，在Activate时清除画面。默认值为True。

ShowTracesLegend - 在Open View中，控制轨迹名称和颜色的可视性。使用EditTracesAndScales控制轨迹图例的编辑按钮功能。默认值为True。

 ShowScalesLegend - 在Open View中，控制标度名称的可视性。使用EditTracesAndScales控制标度图例的编辑按钮功能。默认值为True。

 ShowScrollBars - 在Open View中，控制标度上标度栏的可视性。默认值为True。

 ShowAutoScaleButton - 在Open View中，控制Auto Scale按钮的可视性。默认值为False。

 EditTracesAndScales - 在Open View中，控制轨迹和标度属性的编辑按钮功能。在启用时，点击各个轨迹或标度名称，编辑其属性。默认值为True。使用ShowTracesLegend和ShowScalesLegend控制轨迹和标度名称的可视性。

GridType: - 默认值为Lines。在主要格上显示线，在次要格上显示tic号。X轴和Y轴显示为粗线。

Smith Chart - 在Smith图表中显示数据 (也称为"阻抗图表")。标尺值给定为实数阻抗和虚数阻抗。粗体圆是"参考半径"，其线性半径值在画面的右下角显示。如果输入数据已经归一化，Smith Chart栅格和标尺只表示正确定标的值。为归一化数据，把所有幅度除以特性阻抗。

Inv Smith Chart - 在反Smith图表中显示数据(也称为"导纳图表")。反Smith图表的使用方式与Smith图表相同，但栅格和标尺值是导纳值，而不是阻抗值。

NumMarkers - 图形中显示的标尺数量。为把标尺移动到一条不同的轨迹上，进入Open View，点击画面底部附近标尺值左面的按钮。按钮顺序通过不同轨迹的不同线型和颜色。

 MarkerInterpolate - 在属性为True时，可以把标尺放在显示的数据点之间。通过线性内插计算显示的标尺值。默认值为False。

DisplayBackColor - 允许从调色板中选择显示区域的颜色。在画面出现在细节视图和面板视图中时，可以选择不同的颜色。

Traces Group: (每条轨迹一个)

Name: - 在图形区域左面显示的轨迹名称及相应的输入端名称。

Color: - 轨迹的颜色。每条新增的轨迹有一个与现有轨迹不同的颜色。第一条轨迹的默认值为yellow。

LineStyle: - 连接多个数据点的线的格式。默认值为continuous line。

PointStyle: - 标记每个数据点的符号。为显示没有连接的数据点，选择单点LineStyle格式及希望的PointStyle符号。默认值为dot。

Scale - 如果存在一个以上的Y标度，选择这个轨迹定标的标度。

Scales 属性： (每个X和Y标度一个，外加额外的Y标度)

Show Scale: - 如果有多个Radius标度，那么这个选项(使用复选框)将指明在图形区域右面是否显示端点和每个新增的适当标度的轴。

Scale Name: - Open View中出现的标度名称。

Automatic Scaling: - 控制画面是否自动重新定标，在收到数据后立即显示整条轨迹。默认值为打开。如果这一项变成False，可以在Layout组中使用General栏上的Auto Scale按钮，或在对象菜单上使用Auto Scale命令，来重新定标画面。

Vertical Span: - 显示画面的垂直维度。默认值为2。

Scale Color - 任意背景栅格或tic号的颜色。默认值为Gray。

Reference Corner: - 指定显示的极坐标图的部分。其速度要比滚动到某个区域快。改变Reference Value，可以把指定的图表部分(如Center)滚动到指定的位置(如(0, @0))。默认值为Center。

Reference Value: - 定义了极坐标图中使用的数字极坐标值。默认值为(0, @0)。

备注

输入类型必须是Spectrum, Waveform,或Coord (Scalar或Array 1D)。

通过只使用x和y值，而不是先转换成Spectrum类型，来绘制Coord 型输入数据图。

使用Add Terminal [image] Data Input对象菜单选项添加轨迹，最多支持12条轨迹。

在Automatic Scaling属性打开时(Scales栏)，如果把整个数据集合发送到显示画面上，程序执行速度要更快。然后，显示画面会自动重新定标一次。如果程序一次把一个数据点发送到显示画面上，显示画面可以在每个数字点以后自动重新定标，这会降慢程序执行速度。在这种情况下，使用Collector对象创建一个数组，然后把数组发送到显示画面上。.

添加控制输入

可以添加一个Title控制输入端，把标题栏名称设置成指定的文本值。这可以程控打印画面时显示的标题。

可以添加一个Traces控制输入端。控制输入数据必须是由多个记录组成的数组(或如果只想控制一条轨迹，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为TraceNum的字段及一个整数值(1是第一条轨迹)。要求 TraceNum字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name

Pen

LineType

PointType

Name字段必须有一个文本值。Pen, LineType和PointType值必须是从0到n的整数，其中0不绘图，n是提供的选项数量。

可以添加一个Scales控制输入端，控制上面列出的标度参数。控制输入数据必须是由多个记录组成的数组(如果只想控制一个标度，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为Scale的Text字段，取值为X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name - 在Open View中改变标度名称。必须是一个文本值。

Min - 设置X标度的最小值。必须是一个整数值或实数值。

Max - 设置X标度的最大值。必须是一个整数值或实数值。

Mapping - 必须有一个Linear或Log文本值。

AutoScale - 控制自动定标。必须有一个On或Off的文本值。

可以添加Print和Plot控制输入端。在Windows上，这些输入使用Windows的Print Setup对话框(File [image] Print Setup?/font>)，其行为方式相同。如果当前Printer Setup处于Print to File模式，可以指定目的文件或目录名称，作为Plot控制输入上的字符串数据。如果没有给出控制输入值，那么将使用Printer Setup中指定的文件或目录名。

如需进一步信息，请参阅使用记录和使用DataSets。

以程序化方式设置和读取标尺值

可以以程序化方式获得和设置标尺值。为准备显示，打开Properties窗口。在General栏中，为Name输入一个值。Name值暗示声明Object变量是显示画面上下文的局部变量。然后，在Markers组中打开一个设置。VEE为标尺的X位置和Y位置指配下述属性，包括增量值。(Marker1指向下；Marker2指向上。)

 Marker1X (作为Real64获得位置)

 Marker1Y (作为Real64获得位置)

 Marker2X (作为Real64获得位置)

 Marker2Y (作为Real64获得位置)

 MarkerDX (作为Real64获得位置)

 MarkerDY (作为Real64获得位置)

 Marker1 (作为Coord获得/设置位置)

 Marker2 (作为Coord获得/设置位置)

可以使用Marker1和Marker2属性，读取当前标尺位置，或把标尺移动到新位置。所有其它标尺属性都是只读的。如果试图把标尺移动到不在轨迹的坐标上，标尺会"咬"住轨迹上最近的点上。

在程序中，在Formula对象中输入一个或多个表达式，设置或读取标尺值。每个表达式必须包含显示画面Name和相关的标尺属性。标尺属性名称不分大小写。如果显示画面的Name是XY，同时打开Delta Markers，那么下述表达式将读取提供的所有标尺值，并作为Real64标量把它们指配给变量a到f：

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把显示画面Name指配给一个全局变量。在Formula对象中，在程序内添加一个赋值表达式，使用Declare Variable对象声明全局变量。例如，假设已经声明globalXY变量为全局变量，并把其Type设为Object，那么在存在显示画面的上下文中，在程序中添加下面的表达式：

Set globalXY = XY

可以从使用表达式的程序的另一个上下文中读取显示画面的标尺值，如：

a = globalXY.Marker1X

在开发程序时，您可能想包括一种方式暂停程序，以便在程序读取值之前手动重新定位标尺。暂停程序的方式之一是在显示画面的序列输出和Formula对象的序列输入之间添加一个Confirm (OK)按钮。您也可能想以程序化方式定位标尺。

位置

Display [image] Spectrum (Freq) [image] Magnitude vs Phase (Polar)

Display [image] Spectrum (Freq) [image] Magnitude vs Phase (Smith)

另请参阅

Magnitude Spectrum, Phase Spectrum, Polar Plot, Spectrum (Freq),和默认首选项。

显示波形, 在显示画面中设置标尺, 获得和设置标尺属性,和对象菜单


Main

Main是VEE中的根UserObject窗口。

用途

Main窗口是VEE程序中的根UserObject。程序要求使用这个窗口，不能删除。其它UserObject和UserFunction窗口都是从Main窗口中创建的。

如果Main窗口已经最小化或关闭，那么从View菜单中选中它，可以再次打开Main窗口。也可以点击VEE Program Explorer窗口中的Main，重新打开Main窗口。

属性

Title - 显示程序的当前标题。在一个对象放在面板视图中时，可以编辑标题。在使用-r命令行选项运行程序时，会在程序的标题栏中显示标题。默认值为Untitled。

ShowPanelonExecute: - 在Main面板视图中添加一个对象时，可以使用这个属性。在ShowPanelonExecute打开时，Main面板视图会在运行程序时出现在Execution窗口中。

TrigMode组：

Degrees | Radians | Gradians - 指定主程序中使用的三角单位。在选择Radians时，三角计算的执行速度最快。这一设置不影响UserObjects使用的Trig Mode。

Convert Infinity to 9.9E37 on Binary Reads - 如果选中这个复选框，在仪器(或包含仪器数据的文件)返回+INF (+无穷大), -INF (-无穷大)或NAN (非数字)的二进制读数时，VEE会转换读数。这种转换会在一定程度上会降慢每次进行二进制读取的I/O速度。

如果从遵守SCPI标准的仪器中获得数据，并且把这些数据输出到图形显示对象上，应选中这个对话框。如果没有选中这个复选框，且+INF, -INF或NAN被发送到一个显示对象上，那么会收到浮点异常错误。如果选中这个对话框，图表中的尖峰会表明+INF, -INF或NAN值。

备注

如果还没有关闭Main窗口，它还会出现在Window菜单中：

Window [image] 1 Main

位置

View [image] Main

另请参阅

Arrange Icons, Cascade, Close All, Minimize All, Program Explorer, Tile Horizontally, Tile Vertically和Properties (对象)


Make UserFunction (Object menu)

Make UserFunction (对象菜单)

一个菜单选项，只有在UserObject的对象菜单中才能找到这个选项，用来把UserObject转换成UserFunction。

用途

使用Make UserFunction把UserObject转换成UserFunction。UserObject标题区域中显示的名称变成UserFunction名称。UserObject消失，代以Call Function对象。

备注

如果UserObject标题区域中的名称对UserFunction是一个无效名称，或没有改变名称"UserObject"，那么系统会提示为UserObject输入一个新名称。

有效的UserFunction名称必须以希腊字母阿尔法开头，后面跟着字母数字字符或下划线。

位置

在对象菜单上(仅适用于UserObjects) [image] Make UserFunction

另请参阅

Call, Edit UserFunction, hidePanel(), showPanel(), UserFunction和UserObject。


Make UserObject

一个菜单选项，只有在Edit UserFunction的对象菜单中才能找到这个选项，用来把UserFunction重新转换回到UserObject。

用途

使用Make UserObject把UserFunction重新转换回到UserObject。

备注

Make UserObject大体上是Make UserFunction的逆操作。尽管Make UserObject把UserFunction转换回到UserObject，但任何Call Function对象仍然存在，在程序的主上下文中仍保持连接。但UserFunction本身会消失。

位置

Edit [image] Edit UserFunction [image] Make UserObject (在UserFunction对象菜单上)

另请参阅

Edit UserFunction, Make UserFunction (对象菜单), UserFunction和UserObject。


math_syntax

下面列出了VEE的數學操作和數學函數的幫助頁。

abs(x)
acos(x)
acosh(x)
acot(x)
acoth(x)
a + b (add)
Ai(x)
a ~= b (almost equal to)
a AND b
+ - * /
Array
asin(x)
asinh(x)
atan(x)
atan2(y,x)
atanh(x)
bartlet(x)
Bessel
beta(x,y)
Bi(x)
binomial(a,b)
bit(x,n)
bitAnd(x,y)
bitCmpl(x)
bitOr(x,y)
bits(str)
bitShift(x,y)
Bitwise
bitXor(x,y)
blackman(x)
Calculus
ceil(x)
charToInt(a)
clearBit(x,n)
clipLower (x,a)
clipUpper (x,a)
cofactor(x, row,col)
comb(n,r)
Comma Operator
Complex Parts
concat(x,y)
conj(x)
convolve(a,b)
cos(x)
cosh(x)
cot(x)
coth(x)
cubert(x)
Data Filtering
defIntegral (x,a,b)
deriv(x, order)
derivAt(x, order,pt)
det(x)
a div b (truncated division)
a / b (divide)
dmyToDate (d,m,y)
a == b (equal to)
erf(x)
erfc(x)
exp(x)
exp10(x)
a ^ b (exponent)
exponential regression
factorial(n)
fft(x)
floor(x)
fracPart(x)
Freq Distribution
gamma(x)
Generate
a > b (greater than)
a >= b (greater than or equal to)
hamming(x)
hanning(x)
hmsToHour (h,m,s)
hmsToSec (h,m,s)
Hyper Bessel
Hyper Trig
i0(x)
i1(x)
identity(x)
ifft(x)
im(x)
init(x,val)
integral(x)
intPart(x)
intToChar(a)
inverse(x)
j(x)
j0(x)
j1(x)
jn(x,n)
k0(x)
k1(x)
a < b (less than)
a <= b (less than or equal to)
linear regression
log(x)
log10(x)
logarithmic regression
Logical
logMagDist (x,from,thru, logStep)
logRamp (numElem, from,thru)
mag(x)
magDist(x, from,thru, step)
matDivide (numer, denom)
matMultiply (A,B)
Matrix
max(x)
maxIndex(x)
maxX(x)
mday(aDate)
mean(x)
meanSmooth (x,numPts)
median(x)
min(x)
minIndex(x)
minor(x,row, col)
minX(x)
a mod b (modulo)
mode(x)
month(aDate)
movingAvg (x,numPts)
a * b (multiply)
NOT a
a != b (not equal to)
now()
a OR b
ordinal(x)
perm(n,r)
phase(x)
poly(x,vec)
Polynomial
polynomial regression
polySmooth (x)
Power
power curve regression
product(x)
ramp (numElem, from,thru)
random (low,high)
randomize (x,low,high)
randomSeed (seed)
re(x)
Real Parts
recip(x)
rect(x)
Regression
rms(x)
rotate(x, numElem)
round(x)
sdev(x)
setBit(x,n)
Signal Processing
signof(x)
sin(x)
sinh(x)
sort(x, direction, field)
sq(x)
sqrt(x)
Statistics
strDown(str)
strFromLen (str,from,len)
strFromThru (str,from, thru)
String
strLen(str)
strPosChar (str,char)
strPosStr (str1,str2)
strRev(str)
strTrim (str,trimlist)
strUp(str)
a - b (subtract)
sum(x)
tan(x)
tanh(x)
Time & Date
totSize(x)
transpose(x)
Triadic Operator
Trig
vari(x)
wday(aDate)
xcorrelate (a,b)
xlogRamp (numElem, from,thru)
a XOR b
xramp (numElem, from,thru)
y0(x)
y1(x)
year(aDate)
yn(x,n)


MATLAB Script

MATLAB 腳本

使用MATLAB Script命令定義的操作調用MATLAB Script引擎的對象。VEE數据可以傳送到MATLAB Script引擎，也可以從MATLAB Script引擎返回VEE數据。

MATLAB幫助

您讀取的幫助內容描述了怎樣從VEE中調用MATLAB。它沒有解釋怎樣編寫MATLAB程序或一旦調用后怎樣處理MATLAB。MATLAB及其腳本語言幫助信息以兩种方式提供︰

VEE的Function & Object Browser在底部有一個Help按鈕。在已經選擇了一個MATLAB函數時點擊Help按鈕，啟動MATLAB Help系統，顯示該函數的相關內容。

MATLAB對象菜單 (點擊鼠標右鍵彈出菜單)包含MATLAB Help選項。(注︰"Help"和"MATLAB Help"都位于這個菜單上。) 點擊MATLAB Help，啟動MATLAB Help系統。

如果MATLAB Script對象是從VEE的Device菜單中創建的，那么將使用主MATLAB HelpDesk窗口啟動幫助系統。如果MATLAB Script對象是從VEE的Function & Object Browser中創建的，那么將使用創建MATLAB Script對象時選擇的函數標題啟動幫助系統。

用途

使用MATLAB Script對象，在VEE內部利用MATLAB軟件的處理能力。這個對象与VEE Formula對象類似。可以在公式字段中輸入MATLAB Script命令，可以使用輸入端和輸出端傳送數据。

在從Function & Object Browser中創建MATLAB Script對象時，可以使用許多預先定義的函數。Device菜單中提供的默認對象也可能有兩個輸入、一個輸出和一個范例腳本 (X=A+B)。可以修改任何范例對象，使其擁有不同數量的輸入端或輸出端及一套不同的MATLAB Script命令。在VEE中提供的MATLAB Script引擎提供了大約1500個函數。MATLAB信號處理工具箱提供了大約另外200种函數。VEE的Function & Object Browser顯示了大約500种最流行的函數。如需与所有MATLAB函數有關的信息，請查閱MATLAB HelpDesk。

MATLAB Script中的變量名稱區分大小寫，但VEE中的變量名稱不區分大小寫。換句說知，在VEE中，"A"和"a"指同一變量，而在MATLAB中則指不同的變量。在MATLAB Script中編寫公式時要記住這一點。例如，如果VEE數据端命名為"A"，那么在MATLAB Script中應使用"A"，而不是"a"。

VEE對MATLAB Script命令不執行任何語法檢查。如果MATLAB Script對象包含語法錯誤，那么只有在調用MATLAB Script引擎時才能發現這些錯誤。MATLAB報告的任何錯誤映射到VEE錯誤591或592上。如果MATLAB報告任何警報，那么其會顯示為VEE警報信息。

執行的第一個MATLAB Script對象會打開一個MATLAB會話。MATLAB Script對象的所有其它實例共享同一會話。因此，MATLAB Script對象可以共享MATLAB工作空間中的全局變量。

這個VEE對象提供的MATLAB Script不支持MATLAB函數定義功能。

數据備注

只允許某些VEE數据類型作為MATLAB Script輸入。可以使用輸入端數据類型限制，保証把VEE輸入數据轉換成支持的類型。例如，假設使用的是Int32數据，MATLAB Script對象不接受整數數据，但接受Real64數据。可以雙擊輸入端，選擇Real64作為 Required Type。通過設置這一限制，輸入端會自動把入局的Int32數据晉級為Real64，然后再傳送給MATLAB。 VEE還提供某些自動數組轉換功能，提高使用VEE 1D數組的方便性。下表描述了VEE數据類型与MATLAB數据類型的對應關系。

輸入端數据

從VEE類型 | 到MATLAB類型 | 備注
文本標量 | 字符數組 | 晉級到長度為(1 x n)的數組，其中n是VEE字符串的長度
文本一維數組 | 字符數組 | 變成長度為(m x n)的數組，其中m是VEE數組中的要素數量，n是數組中最長的VEE字符串的長度
文本數組, 二維或更多 | -- | 不支持
Real64標量 | 雙數組 | 晉級到長度為(1 x1)的數組
Real64數組 | 雙數組 | VEE 1D數組晉級到長度為(m x 1)的數組。二維或更大的VEE數組保持原始形狀
复標量 | 复數組 | 晉級到長度為(1 x 1)的數組
复數組 | 复數組 | VEE 1D數組晉級到長度為(m x 1)的數組。二維或更大的VEE數組保持原始形狀
波形一維數組 | 雙數組 | VEE 1D數組晉級到長度為 (m x 1)的數組。波形時基映射丟失

輸出端數据

從MATLAB類型 | 到VEE類型 | 備注
空矩陣 | 零 | 沒有生成輸出容器
長度為(1 x n)的字符數組 | 文本標量 |
長度為(m x n)的字符數組 | 文本一維數組 | 整形為帶有 m個要素的一維數組
字符數組, 3D-10D | -- | 不支持
長度為(1 x 1)的雙數組 | Rea64標量 |
長度為(m x 1)或(1 x n)的雙數組 | Real64一維數組 或 Real64二維數組 | 可以在對象屬性中選擇自動降級到VEE一維數組。否則，會返回二維數組
雙數組, 2D-10D | Real64數組 |
長度為(1 x 1)的复數組 | 复標量 |
長度為(m x 1)或(1 x n)的复數組 | 一維复數組 或 二維复數組 | 可以在對象屬性中選擇自動降級到VEE一維數組。否則，會返回二維數組
复數組, 2D-10D | 复數組 |

MATLAB Script允許把無窮大(有時會生成無窮大)作為數字值。VEE不允許使用無窮大值。如果MATLAB Script對象試圖返回+無窮大、-無窮大或NaN (非數字)的浮點表示，那么調用會失敗，生成VEE錯誤594。

多個MATLAB版本

在VEE使用MATLAB Script引擎前，它檢查系統上是否已經注冊MATLAB。如果MATLAB已經存在，VEE安裝的MATLAB Script引擎不會注冊為MATLAB Automation Server。在這种情況下，VEE使用現有的MATLAB，不會干預MATLAB開發環境操作。更重要的是，MATLAB使用它在Path中找到的第一個項目。如果有以前版本的MATLAB，它將在Path中位于VEE安裝的MATLAB之前。在這种情況下，會一直先調用舊的MATLAB。

在某些情況下，您可能想注冊VEE安裝的MATLAB Script引擎，即使此前已有一個版本。(例如，如果以前的MATLAB版本沒有信號處理工具箱) 在這种情況下，可以使用下述命令進行手動注冊︰

<vee_install_dir>\matlab\bin\matlab.exe /regserver

如果以后需要把注冊撥回其它MATLAB版本，可以使用/regserver選項執行該版本，也可以每次在運行時、自行重新注冊時運行該版MATLAB。

MATLAB 5.3, 6.1, 6.5,和7.0都在VEE 8.0下運行。

位置

Device [image] Function & Object Browser [image] MATLAB Functions

Device [image] MATLAB Script

另請參閱

MATLAB腳本概述


Merge

把程序的内容或保存的一套对象添加到工作区中，同时保持现有的工作区内容。

用途

使用Merge，把以前保存的程序或一套对象组合到VEE工作区的现有程序中。Merge适合从经常使用的函数库中调用以前创建的程序或一套对象。

备注

在把该程序Merge到VEE工作区中时，将不能加载或使用与程序保存的任何Default Preferences (例如Trig Mode)。工作区中当前活动的Default Preferences将保持不变。

不能对UserFunction使用Merge，而是应使用Merge Library。

Merge会出现一个对话框，允许选择希望打开的文件名称。在使用Merge时，对话框指向VEE程序安装目录下的lib目录。

可以使用Merge，加载使用Save或Save As保存的文件。

如果保存的程序有面板视图，面板不会导入到程序中。UserObject的面板视图是输入。

从包含嵌入式I/O配置的程序文件中进行Merge，不会合并任何I/O配置。参阅嵌入式I/O配置和合并。

位置

File [image] Merge

另请参阅

Merge Library, Open, Save, 和Save Objects。

创建UserObject库

从库文件中合并对象和程序


Merge Library

把UserFunction库加载到工作区中。

用途

使用Merge Library，把以前函数库文件中保存的UserFunction合并到当前工作区中。

Merge Library从一个指定文件中加载所有UserFunction。 (通过在UserObject对象菜单上选择Make UserFunction选项，创建UserFunction。通过创建多个UserFunction，并把它们保存到文件中，可以创建一个库。)

一旦加载了UserFunction库，那么将使用Call对象根据名称执行(调用)函数。

备注

Merge Library用于已经在库中开发UserFunction集合的高级操作。在开发UserFunction库时，可以把这些函数的源代码保持在一个位置。如需使用UserFunction的详细介绍，请参阅Help [image] Content [image] Tell me about... User-Defined Functions。

Merge Library加载的UserFunctions操作方式与程序内部本地创建的任何UserFunction完全相同。可以使用Call对象执行任何UserFunction，也可以在获得表达式的任何对象中包括UserFunction (如Formula)。可以编辑Merge Library加载的任何合并的UserFunction，因为它们现在合并到VEE工作区中。

将不会加载或使用与函数保存的任何Default Preferences (如Trig Mode)。工作区当前活动的Default Preferences保持不变。

Merge Library出现一个对话框，允许选择希望打开的文件名称。对话框指向VEE程序安装目录下的lib目录。

从包含嵌入式I/O配置的程序文件中进行Merge Library操作不会合并任何I/O配置。参阅嵌入式I/O配置和合并。

位置

File [image] Merge Library

另请参阅

Call, Delete Library, Edit UserFunction, Import Library, Open, Save, Save Objects, UserFunction, 和UserObject.


Merge Record

允许用户把相同形状的两个或两个以上的记录合并到一个记录中的对象。

用途

使用Merge Record，把两个或两个以上的记录合并到一个记录中。可以合并任意数量的标量记录。可以合并任意数据的记录数组，只要所有数组拥有相同数量的要素。

备注

可以添加任意数量的输入端 (A, B等等)，但每个输入端的数据类型必须是Record。合并的记录输出到Record输出端。

合并的记录不得有任何重复的字段名称。字段名称从输入记录中获得(忽略输入端名称)。

位置

Data [image] Access Record [image] Merge Record

另请参阅

Build Record, From DataSet, Record Constant, Set Field, To DataSet, UnBuild Record,和Properties (对象)


Message Box

显示一个弹出对话框，其中包含对用户显示的信息的对象。

用途

使用Message Box，向用户显示一条提示信息。用户按对话框上其中一个按钮，作为应答。可以自定义按钮上的文本。

在弹出对话框中，当按一个按钮时，在按钮相关的输出端(与按钮名称相同)会输出一个1。

Open View

  • Message - Message Box 弹出对话框上显示的信息串。使用\n在这个字段的文本中开始新的一行。可以作为数据输入添加这个参数。默认值是User Message

  • Symbol - Message Box 弹出对话框左侧显示的图形图像。可以作为数据输入添加这个参数

    • Question - 绿圈内的白色问号。

    • Exclamation - 黄圈内的黑色叹号。

    • Information - 蓝圈内的白色字母"i"。

    • Stop - 红色六边形内的文本"STOP"。

    • Blank - 在不希望弹出对话框中有图形时，使用这个选项。

    • <Custom...> - 提供一个对话框，允许从图形文件中选择一个图片，作为符号使用。
      在对话框中：
      - Picture - 从文件系统中输入图形文件的文件名称。显示的目录是安装目录下的bitmaps目录。为从另一个目录中选择一个文件，按Browse...按钮。
      - Actual (默认值)自动调整对象大小，以适应图形图像的实际大小。
      如果调整对象大小，那么图像不会缩放。在调整对象大小时，- Scaled会调整图形图像大小。

可以作为数据输入添加这个参数。默认值是Information

  • Buttons - 按钮上的文本显示在Message Box 弹出对话框底部，选项包括：

  • OK

    • OK Cancel

  • Abort Retry Ignore

    • Yes No

    • Yes No Cancel

    • Retry Cancel

    • <Custom ...> - 提供一个对话框，可以为最多三个按钮输入按钮标记文本。如果输入字段为空，那么该字段不会获得按钮。

数据输出端自动配置成与按钮选项相对应。

  • Default - 在用户按Enter时选择的按钮。显示的选项取决于选择的按钮。可以作为数据输入添加这个参数。默认值是OK。

属性

  • PopupTimeoutEnabled - 在这个属性为True时，会在对象中添加一个Timeout输出端。默认值是False。

  • PopUpDuration - 设置显示弹出对话框的时长。在这个时间之后，对话框超时， Timeout输出端输出一个值1。如果Timeout端执行，任何其它输出端都没有数据。只有在选中Timeout Enabled复选框时，才能使用这个字段。默认值是60 seconds。

备注

弹出对话框的默认位置大体位于工作区的中心。如果移动它，下次它将弹出到新位置。

为只使用键盘对弹出对话框作出响应：在弹出对话框时，使用Enter键，选择最左面的按钮，使用Esc键，选择最右面的按钮。也可以使用Tab键，在按钮之间移动，并使用空格键选择按钮。

只有在程序运行时才显示弹出对话框。在显示弹出对话框时，整个程序暂停执行，在关闭对话框时，程序继续执行。

如果在General栏上的Properties中打开Timeout Enabled，在对话中添加一个Timeout 输出端，那么可以关闭Timeout Enabled，删除这个输出端。不能使用对象菜单上的Delete Terminal或使用Ctrl+D ("删除终端"快捷方式)删除这个输出端。

位置

Data [image] Dialog Box [image] Message Box

另请参阅

文件名称选择, 列表框, Int32 Input, Real64 Input, Text Input, UserObject.和对象菜单

关于内置对话框对象


Meter

以图形方式显示标量数字值的对象。

用途

使用Meter，显示模拟标度和数字数据字段上的值。

Open View

通过点击当前值，输入一个新值，可以在Open View上设置Meter的最小值和最大值。如果最小值大于最大值，那么会改变 Meter指针的操作方向 (即从右到左，而不是从左到右)。

也可以作为控制端添加这些值。

属性

ClearAtPreRun - 在属性为True时，在PreRun时清除Meter的内容。默认值为True。

 ClearAtActivate - 在属性为True时，在Activate时清除Meter的内容。默认值为True。

Orientation - 设置怎样显示Meter。如果Meter的方向是vertical，那么最小值位于顶部，最大值位于底部。默认值为Horizontal。

 ShowDigitalDisplay - 如果属性为True，显示的值的数字画面将添加到对象Open View的底部。如果属性为False，那么不会显示数字画面，对象操作速度更快。默认值为True。

 ShowTics - 控制标度tic号和标记的可视性。默认值为True。

 Logarithmic - 在属性为True时，把标度从线性变成对数。默认值为False。

 LabelSpacing - 控制哪个tic号标上标度值。默认值为Every Other Tic。

Sub-Range Configuration Category: - 为不同的显示范围设置不同的颜色。颜色范围相互重叠，红色在底部，绿色在顶部。在每个标度结束时可以使用红色(默认)子范围。

Show Range - 在属性为True时，在对象上显示子范围颜色。

Meter Range - 设置子范围的极限。

ColorRange - 设置不同范围的颜色。

NumberFormat:

Global Format - 使用默认格式。默认值为True。

Real: - 如果Global Format关闭，那么指定在这个对象显示的实数格式。选项包括Fixed (e.g. 98.6000), Scientific (e.g. 9.8600E+01), Engineering (e.g. 98.6000E0), Standard (e.g. 98.6), 和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

输入数据必须是Scalar，并能够转换成Real64 (必须先"拆除"Complex, PComplex, Spectrum和Coord)

位置

Display [image] Indicator [image] Meter

另请参阅

AlphaNumeric, Logging AlphaNumeric,和默认首选项.

显示数据的模拟画面


Minimize All

在VEE工作空间中管理窗口的一个函数。

用途

Minimize All将最小化所有打开的没有最小化的窗口。最小化的窗口将作为小图标出现在VEE工作空间底部。

位置

Window [image] Minimize All

另请参阅

Arrange Icons, Cascade, Close All, Tile Horizontally, 和Tile Vertically。


Minimize (Object Menu)

Minimize (对象菜单)

使对象或窗口Open View图标化。

用途

使用Minimize显示对象的图标视图，或在VEE工作空间中最小化打开的窗口 (Main, UserObject, UserFunction)。

备注

可以从所有对象和窗口的Open View中使用Minimize。

快捷方式

为使对象或窗口最小化，按对象或窗口右上角的最小化按钮(位于标题栏的右侧)。

位置

在对象菜单 [image] Minimize上

另请参阅

Restore (对象菜单).


各种運算符

Function & Object Browser下的Formula類型對象。

用途

一般來說，可以使用Miscellaneous Operators對象，存取三元運算符，創建或讀取簡單的數組，或讀取記錄中的字段。

備注

在已經選擇了Category: Miscellaneous時，Function & Object Browser對話框的Member一欄中會顯示各种運算符范例。點擊其中一個范例，會出現預先加載Miscellaneous Operator的一個VEE對象。范例對象包括︰

(a?b:c) - 三元運算符。如果'a'為真(非零)，那么'b'是輸出，否則'c'是輸出。

PI - 取值3.14 (執行17個十進制位置)。用圓周和圓半徑之比表示的無限不循環數字。

[1,2,3] - 從標量中創建一個一維數組。

[a,b,c] - 從形狀相匹配的部分創建任意維度的數組。

a[2] - 返回部分數組。

a[5,3:4,*] - 返回部分比較复雜的數組。

rec.field - 返回記錄的一個字段。

object.value - 獲得ActiveX對象的Property。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Miscellaneous

另請參閱

Assignment, Function & Object Browser和三元運算符


Move (Object Menu)

Move (对象菜单)

移动这个对象。

用途

使用Move拖动对象，重新确定对象在工作区上的位置。

备注

Move保留与其它对象的连接。如果设置Automatic Line Routing，那么需要用一段时间重新画线。

Move可以在Panel View和Detail View中工作。

如果想移动多个对象，选择这些对象(使用CTRL-鼠标左键或Edit [image] Select All)，拖动这些对象。

也可以在多个对象周围画一个框，选择要移动的多个对象。把鼠标放在要选择的区域的左上角，然后使用CTRL键并按住鼠标左键，拖动到选择区域的右下角，也可以完成这一操作。

如果移动操作导致Objects重叠在Panel View中，使用Object Menu中的Bring to Front或Send to Back，调节对象的位置。

快捷方式

可以把光标放在对象上，而不是选择Move。这会激活一个四角的移动光标。拖动对象(使用鼠标左键)。指针不得放在对象的操作区域上(如按钮或输入字段)。

位置

在每个对象菜单上 [image] Move

另请参阅

对象菜单


Move File

把文件从给定位置移动到新位置。还可以使用同一流程重命名文件。

位置

System [image] File [image] Move File


MultiDevice Direct I/O

在同一个事务框中把数据写入一台以上的仪器及从一台以上的仪器读取数据的对象。

用途

使用MultiDevice Direct I/O对各种I/O地址上的仪器输出和输入各种编码和格式。

Open View参数

open view显示要执行的事务列表。

Direct I/O操作：

READ - 使用指定编码和格式从仪器中读取数据。

WRITE - 使用指定编码和格式把数据写入仪器中。

EXECUTE - 对GPIB仪器，发送Selected Device Clear, Go To Local, Remote或Group Execute Trigger命令。对串行仪器，发送Break或Reset。对GPIO仪器，发送Reset。对基于VXI消息的仪器，发送Selected Device Clear, Go To Local, Remote, Trigger, Lock Device或Unlock Device命令。

WAIT - 在执行下一项事务前等待的具体秒数。对GPIB仪器或基于VXI消息的仪器，一直等到串行轮询响应与模板的位逻辑AND运算结果为零(ALL CLEAR)或非零(ANY SET)。

仅对GPIO仪器，READ操作允许IOSTATUS，WRITE操作允许IOCTL。

仅对VXI仪器，READ和WRITE操作允许REGISTER:和MEMORY:。WAIT操作还支持一直等到存储器或寄存器偏置中的值AND模板值满足ANYSET, ALL CLEAR或EQUAL。

对象菜单

Edit Trans - 编辑当前高亮度显示的事务。

Add Trans - 在列表末尾添加一个事务。

Insert Trans - 在目前高亮度显示的事务前插入一个事务。

Cut Trans - 剪切(删除)目前高亮度显示的事务，但把它保存在事务"剪切和粘贴"缓冲器中。

Copy Trans - 把目前高亮度显示的事务复制到事务"剪切和粘贴"缓冲器中。

Paste Trans - 粘贴以前"剪切"或"复制"的事务。

Delete Trans - 删除列表中高亮度显示的事务。

Move Trans Up - 上移高亮度显示的事务。

Move Trans Down - 下移高亮度显示的事务。

Print Trans - 打印描述当前高亮度显示的事务的详细对话框。

快捷方式

通过把光标放在输入端或输出端显示区域上，然后按CTRL+A，可以迅速添加一个数据端。每按一下CTRL+A会额外添加一个数据端。

通过把光标放在端查看区域上，然后按CTRL+D，可以迅速删除一个数据端。

为迅速插入一个事务，把光标放在事务上。按Insert键会在放置光标的事务上插入一个事务。

为迅速删除("杀掉")一个事务，把光标放在该事务上，按Delete键。

为从"kill"缓冲器中粘贴一个事务，按CTRL+V。

为迅速移到下一个事务或上一个事务，分别按Up Arrow键或Down Arrow键。

备注

MultiDevice Direct I/O与Direct I/O非常类似。但是，MultiDevice Direct I/O不专用于任何特定仪器。每个事务可以与各种I/O地址上配置的任何仪器通信。事务对话框允许从提供的配置的仪器中指定预计的仪器。

可以使用在仪器配置过程中最初输入的仪器默认地址，也可以指定另一个地址。在仪器地址不同时，点击Default Address按钮，露出另外的文本框。在框中输入新的地址值或变量名称。

位置

I/O [image] Advanced I/O [image] MultiDevice Direct I/O

另请参阅

Advanced I/O, Component Driver, Direct I/O, Formula, Instrument Manager, Panel Driver和To/From VXIplug&play.

使用Direct I/O读取数据

使用Direct I/O对象

Properties (对象)

使用MultiInstrument Direct I/O对象

编辑事务


New

清除工作区。

用途

使用New清除工作区。

备注

如果还没有保存程序，New会提示您保存变化。

New不会清除Paste缓冲器。New从默认文件VEE.RC中读入默认的Preferences设置。

New保持Save和Open命令使用的目录路径。

快捷方式

按CTRL+N清除程序。

位置

File [image] New

另请参阅

默认首选项


Next

导致Repeat [image] 对象立即开始下一个迭代的对象。

用途

使用Next跳到当前循环的下一个迭代，而不在迭代子线程上执行其余对象。

如果Next没有位于迭代子线程上，那么它会停止子线程上的所有执行。

备注

Next通常与If/Then对象一起使用，有条件地控制迭代。

位置

Flow [image] Repeat [image] Next

另请参阅

Break, For Count, For Log Range, For Range, If/Then/Else, On Cycle, 和Until Break.

循环部分VEE程序

Properties (对象)


NI-FGEN

在VEE中使用NI-FGEN时，多个事务会导致创建?#21477;柄?#65292;其中包括：

  • AGniFgen_CreateFreqList

  • AGniFgen_CreateWaveformF64

  • AGniFgen_CreateWaveformI16

  • AGniFgen_CreateWaveformFileI16

  • AGniFgen_CreateWaveformFileF64

  • AGniFgen_CreateWaveformFileHWS

  • AGniFgen_CreateArbSequence

  • AGniFgen_CreateAdvancedArbSequence

  • AGniFgen_AllocateWaveform

这些句柄会以输出端的方式从事务中返回，并可以传送到程序中的其它对象。在同一个To/From NI-FGEN对象内部的其它事务也可以在内部使用这些句柄。在输出生成完成时，一定要记住鏠lear?#19978;面的事务创建的Sequence/Waveform/Frequency-List句柄。对上面每个事务，都会有一个对应的鏠lear?#20107;务，把句柄作为输入端处理。例如：

注意𨯗GniFgen_ClearFreqList?#21069;面的𨯗GniFgen_AbortGeneration?#20107;务。

另请参阅

To/From NIDAQ, NI-SCOPE Fetch/Read函数, NI-DAQmx, 在VEE中使用NI数据采集


NI-SCOPE Fetch/Read函數

某些返回波形數据的NI-SCOPE函數工作方式与VEE的功能不一致。VEE不能處理指向結構的指針。這些函數︰

  • AGniScope_Fetch

  • AGniScope_FetchArrayMeasurement

  • AGniScope_FetchBinary8

  • AGniScope_FetchBinary16

  • AGniScope_FetchBinary32

  • AGniScope_Read

与National Instruments NI-SCOPE聯机幫助中的描述略有不同。首先，VEE一次只允許提取/讀取一條通道。如果用戶設置多通道采集，那么他們必須進行多個提取/讀取，才能獲得每一條通道的數据，一次一條通道。第二，它不把指針返回包含下述字段的niScope_wfmInfo結構︰

wfmInfo

struct niScope_wfmInfo

返回一個結構數組，其中包含与每個波形有關的下述定時和標度信息︰

  • relativeInitialX - 從觸發到被提取的波形中第一個樣點的時間(單位為秒)

  • absoluteInitialX - 記錄和采集之間可以比較的提取的第一個樣點的時戳(單位為秒)；數字化器必須支持連續采集

  • xIncrement - 采集的波形中各點之間的時間，單位為秒

  • actualSamples - 提取及放在波形數組中的實際樣點數量

  • gain - 指定通道的增益系數；用來使用下面的公式定標二進制數据

  • offset - 指定通道的偏置系數；用來使用下面的公式定標二進制數据

電壓 = 二進制數据 * 增益系數 + 偏置

VEE作為單獨的參數值返回ViReal64 relativeInitialX和ViReal64 xIncrement。如果用戶需要訪問absoluteInitialX, actualSamples, gain或offset，可以使用相應Attribute ID調用AGniScope_GetAttributeViReal64 ()。可以通過這种方式，使用VEE返回的值創建VEE波形︰

上面的VEE程序還演示了多次提取的兩通道采集。

另請參閱

To/From NIDAQ, NI-FGEN, NI-DAQmx, 在VEE中使用NI數据采集


Noise Generator

生成噪声数据波形的对象。

用途

使用Noise Generator生成仿真的白噪声的波形。

Open View Parameters

必须从open view中设置所有下述参数，或把这些参数添加为数据输入。

Amplitude - 最大值和最小值的绝对值。默认值为1。任何值不得大于Amplitude，任何值不得小于-Amplitude。

Time Span: - 波形的时长(秒)。默认值为 20m。

Num Points: - 波形中的点数。波形中各点之间的时间是Time Span/Num Points。Num Points必须为正。默认值为256.

位置

Device [image] Virtual Source [image] Noise Generator

另请参阅

Build Arb Waveform, Build Waveform, Comparator, Function Generator, Pulse Generator和Properties (对象)


Note Pad

显示一个可以编辑的Rich Text Format (RTF)对话框，其中会显示用户提供的信息。有一个默认的NotePad项，表明了对话框的功能，在打开NotePad对话框时会显示这个项。如果想创建自己的默认NotePad项，可以在installdir\templates中编辑notepad.rtf文件。如果想使用空白的NotePad对话框，编辑notepad.rtf文件，把它留为空白，或删除文件。

用途

使用Note Pad存档程序，标注面板视图，或编写注释。

Open View参数

如果想在Note Pad中输入信息，点击面板，然后输入注释，或在任何支持RTF的应用中输入文本，然后把它剪切和粘贴到Note Pad中。

对象菜单

Insert File... - 提供了一个对话框，允许选择现有文本或RTF文件，插入Note Pad中。

Clear All - 从Note Pad中清除所有文本，出现一个对话框，确认操作或拒绝操作。

属性

EditingEnabled - 在这个属性为True时，允许在面板中编辑文本。在不选择这个属性时，不允许进行编辑。在Note Pad位于面板视图上，不希望其它用户修改注释时，可以使用这个属性。

备注

每个Note Pad都是一个独立对象，不连接任何其它对象。

在编辑或调整大小后，可以根据要求在Note Pad中增删滚动条。

可以使用所有常用的VEE编辑功能编辑文本区域。

Notepad采用Rich Text Format (RTF)，支持环绕字。可以把任何RTF文档剪切和粘贴到Notepad中。

可以打印Notepad文本，但一直采用纯文本格式。

通过编辑%installDir%\Templates中的Notepad.rtf文件，可以为Notepad项目创建模板。

位置

Display [image] Note Pad

另请参阅

Description

存档程序


Now (System Menu)

Now

检索系统时间和日期。

位置

System [image] DateTime [image] Now


Object Menu

对象菜单

与每个对象相关的、其中包含影响该对象的选项的菜单。

用途

使用对象设置状态，编辑，设置控件，添加和删除对象的端。

使用Object Menu进入下述对象操作：

Restore

Move

Size

Minimize

Clone

Replace

Help

Properties

Description

Add Terminal

Data Input

Control Input

Data Output

Error Output

Delete Terminal

Input

Output

Delete

对放在Main窗口、UserObjects或 UserFunctions面板视图上的对象，使用Object Menu进入下述操作：

Move

Size

Properties?/font>

 Go To Detail View

 Delete

备注

许多对象菜单有专用于该对象的额外菜单功能。如需与这些对象菜单选项有关的详细信息，请参阅对象相关信息。

大多数对象在Properties窗口上有该对象专用的其它选项(通过对象菜单上的Properties进入)。如需与这些对象属性有关的详细信息，请参阅对象相关信息。

快捷方式

为删除对象，双击对象菜单按钮(在Open View中提供)。

为进入Properties窗口，双击对象的标题栏(在Open View中提供)。

为获得与选定对象的相关帮助，按F1。

位置

为进入对象的Object Menu，把指针放在对象上，点击鼠标右键。注意，为进入 UserObjectOpen View的对象菜单，必须把指针放在标题栏或端上，否则会出现Edit Menu。

通过把指针放在对象菜单按钮上(正方形，在标题栏左侧中间有一个条)，按鼠标左键，还可以从Open View中进入Object Menu。

另请参阅

Move (对象菜单), Size (对象菜单), Minimize (对象菜单), Restore (对象菜单), Replace, Clone (对象菜单), Help (对象菜单), Properties (对象), Description, Add Terminal, Delete Terminal, Control Input (对象菜单), Data Input (对象菜单), Data Output (对象菜单), Error Output (对象菜单), 和Cut (对象菜单)。


OK

暂停子线程执行流程、直到按这个键的一个对象。

用途

使用OK等待用户响应。

属性

Assign to Function Key - 在属性为True，且从细节视图或面板视图中按下指定的功能键时，会执行这个对象。可以为多个OK对象指配一个功能键。默认值为False。

Assign to Enter Button - 在属性为True，且从面板视图运行程序时，按键盘上的Enter，将执行对象。每个上下文只能指为Enter指配一个OK。如果试图设置一个以上的OK，那么将反选以前的设置。在使用OK对象作为自定义对话框上的OK按钮时，适合使用这种属性。默认值为False。

 Assign to Escape Button - 在属性为True，且从面板视图运行程序时，按键盘上的Enter，将执行对象。每个上下文只能指为Esc指配一个OK。如果试图设置一个以上的OK，那么将反选以前的设置。在使用OK对象作为自定义对话框上的Cancel按钮时，适合使用这种属性。默认值为False。

备注

在创建对话框时通常使用OK，或者OK通常与Selection Control常数一起使用。

只有在对象操作时，OK按钮部分才会激活。

可以使用Go数据输出端或序列输出端，继续执行线程。

在使用Data [image] Constant下的对象时，暂停线程执行流程的另一种方式是使用Wait for Input属性。

位置

Flow [image] Confirm (OK)

另请参阅

Gate, JCT, Start, Stop, 和对象菜单

为功能键指配按钮

为Enter或Esc键指配OK按钮

构建基本对话框

保持显示弹出面板


Open

把一個程序文件加載到工作區中，代替現有程序。

用途

使用Open把以前保存的程序調到VEE中運行或編輯。移動到文件所在的目錄，點擊文件名，按OK。程序顯示在屏幕上。

備注

Open會出現一個對話框，允許選擇希望打開的程序文件名稱。在文件中加載VEE時，指針圖標會變成一副眼鏡。

可以Open使用Save Objects、 Save或Save As保存的文件。

快捷方式

CTRL+O打開文件。

位置

File [image] Open

另請參閱

Merge, Save, 和Save Objects。

打開VEE程序文件


OS Version

检测主机系统的操作系统版本。

位置

System [image] Environment [image] OS Version


Pad Left

在字符串左侧垫上指定的字符。

位置

System [image] String [image] Pad Left


Pad Right

在字符串右侧垫上指定的字符。

位置

System [image] String [image] Pad Right


Panel Driver

一个仪器控制对象，强制相应物理仪器中的所有函数设置与该对象Open View中显示的控制面板中的设置相匹配。

用途

使用Panel Driver，以开放视图中显示的控制面板方式控制仪器状态。在使用Panel Driver之前，必须安装了希望仪器的仪器驱程。

为在VEE工作区中添加Panel Driver对象，点击I/O [image] Instrument Manager，出现Instrument Manager对话框。检查配置的仪器列表，查看是否有希望使用的仪器项：

如果希望使用的仪器位于列表中，且正确配置，那么：

1. 单击仪器项，高亮度显示仪器项。

2. 点击Panel Driver，添加该仪器的仪器面板。

如果希望使用的仪器没有位于列表中，或者虽然位于列表中、但配置不正确，那么必需添加和/或配置仪器。参阅Instrument Manager, 仪器属性和高级仪器属性。

如需与使用Panel Drivers有关的更多信息，请参阅Help [image] Content [image] Tell me about... Instrument Control Fundamentals [image] Introduction to Panel Drivers and Component Drivers。

对象菜单

Add Terminal by Component [image] Select Input Component - 用来作为输入在Panel Driver中添加面板上看到的字段。

Add Terminal by Component [image] Select Output Component - 用来作为输出在Panel Driver中添加面板上看到的字段。

Show Config - 显示仪器配置。 (可以使用I/O [image] Instrument Manager编辑这一配置。)

Sync - 在下述条件下把仪器驱程状态与仪器状态同步：

ID代码中包含一个同步组件。

ID启动了实地模式。

备注

可以在关闭Live Mode的情况下运行Panel Drivers。即使仪器没有连接到计算机上，仍可以在不与仪器通信的情况下运行程序。这意味着必须先把Live Mode设为开(参阅高级仪器属性)，然后程序才能与物理仪器通信。

Panel Drivers可以交互使用，也可以在程序内部使用。为设置各个组件的值，点击包含组件值的字段，添写出现的对话框。为进行测量和显示结果，在Panel DriverOpen View中点击相应的数字读数或XY画面。

可能会有一个以上的对象控制一部仪器，也就是说，两个Panel Driver对象可以控制同一程序中的fgen。在操作时，这些对象会执行状态调用。

可以为Panel Driver组件 (与Component Driver一样)添加输入和输出。输入执行设置的操作、面板设置操作及组件配套操作。控制端作为输入，初始化仪器，以程序化方式改变仪器地址和超时周期，提供同步信号。输出执行获取操作和面板获取操作。

位置

I/O [image] Instrument Manager

另请参阅

高级仪器属性, Add Terminal, Component Driver, Direct I/O, Instrument Manager, 仪器属性, 和To/From VXIplug&play。

使用Panel Driver对象读取数据


Paste

把Paste缓冲器的拷贝放到工作区上。

用途

在Detail view上使用Cut, Copy或Clone之后，使用Paste提取对象集合的拷贝。

Paste允许恢复不小心Cut的对象。同时也将恢复与这些对象的连接。

备注

Paste缓冲器只保留一个对象集合。每次在Clone, Cut或Copy时，会替换Paste缓冲器。

在使用Open, Merge或New时，不会清除Paste缓冲器。

粘贴不会粘贴纯文本对象。使用键盘键，剪切/复制和粘贴文本。高亮度显示文本，然后使用Ctrl-C (复制)或Ctrl-X (剪切)，然后点击新位置，使用Ctrl-V (粘贴)。

位置

Edit [image] Paste

另请参阅

Clone (对象菜单), Copy, Cut, Cut (对象菜单), 和Replace。


Pause

暂时导致所有线程停止运行的按钮。

用途

使用Pause临时中止程序执行。在选择Pause后，选择Resume继续执行。

备注

选择Pause会把程序置入"暂停"状态。Resume和Step功能激活，可以用来继续执行程序。

快捷方式

按CTRL+P暂停正在运行的程序。

位置

Debug [image] Pause

另请参阅

Call Stack, Line Probe, 默认首选项, Run/Resume, Run, Show Data Flow, Show Execution Flow, Step Into, Step Over, Step Out, Stop, Stop (对象), 和拨码断点.

逐步通过程序


PComplex

输出一个常数PComplex标量或1D Array的对象。

用途

使用PComplex设置Polar Complex常数或获得用户输入。点击输入字段，输入一个值。

范例

为在面板视图上使用PComplex作为提示，把PComplex对象名称变成提示信息，如Enter the AC voltage:。用户在输入字段中填写请求的信息。

输入(2,@PI/2)，它将计算PComplex Constant公式。

属性

DataShape - 把取值的初始数据形状设置成与这个对象一起输出。可能的值是标量和Array 1D。

 ArraySize: - 在选择DataShape 1D Array时，Size设置数组的长度。

 ArraySizeFixed - 在属性为True时，数组不能添加或删除行。只有在选择DataShape 1D Array时，才能使用这个选项。

 ShowArrayIndices - 在属性为True时，输入字段中的每一行都带有索引。只有在选择DataShape 1D Array时，才能使用这个选项。默认值为False。

Wait for Input - 在属性为True时，只有在改变对象值时才运行对象。在属性为False时，一旦满足了任何限制，对象将运行，选择的当前值是输出。默认值为False。

 AutoExecute - 在属性为True时，对象运行，在选择一个值时开始程序其余部分。如果程序已经运行，将忽略AutoExecute。默认值为False。

 InitialValue - 指定设置的值。默认值为(0, @0)。

 InitializeAtPreRun - 在属性为True时，在PreRun时设置Initial Value。默认值为False。

 InitializeAtActivate - 在属性为True时，在Activate时设置Initial Value。默认值为False。

NumberFormat: Real: - 如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项是Fixed (如 98.6000), Scientific (如 9.8600E+01), Engineering (如 98.6000E0), Standard (如 98.6), 和Time Stamp (如 Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

Initialize最常用的情况是初始化UserObject内部的值。还可以使用Default Value控制端设置初始值。

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value 输入允许以程序化方式改变当前值。这个输入要求PComplex值，可以是Scalar或Array 1D。Constant被重新配置成与进入的数据形状相匹配。

Reset输入允许以程序化方式把值设为零。如果Constant配置为Array 1D，所有值设为零。忽略Reset输入上的实际数据。

Enable Editing 和Disable Editing 输入允许以程序化方式控制是否能够在对象的Open View中改变值。

注意，即使PComplex 配置成数组，Initial Value字段仍一直是标量。

Trig Mode指定相位值单位。可以在全局或在每个上下文(UserObject 和UserFunction)上设置触发模式。

可以自动输入Magnitude and和Phase 值(用逗号分开)及VEE格式。

位置

Data [image] Constant [image] PComplex

另请参阅

Alloc PComplex, Complex, Constant, Coord, Date/Time, Selection Control, UInt8, Int16, Int32, Real32, Real64, Text, 默认首选项, 和Toggle Control。

使用数据常数


Phase Spectrum

以图形方式显示相对于相位角的频谱幅度的对象。

用途

使用Phase Spectrum显示Spectrums或Waveforms的相位对频率 (在频域中)。 波形通过傅立叶变换自动转换成频谱。X轴是输入频谱的取样单位。Y轴单位是当前Trig Mode设定值。

Open View参数

下面是默认的Open View参数。其用途及其它参数的使用情况由对象菜单及Properties对话框中的选项控制 (对象菜单 [image] Properties)。

Phase - Y轴的名称。

Trace1 - 第一条轨迹的名称。

Freq - X轴的名称。

对象菜单

Auto Scale [image] - 点击这些菜单项，立即把画面重新定标成显示整条轨迹。(可以添加为控制端，或使用Scales属性栏设置成在采集数据后自动重新定标画面。)

Auto Scale - 自动定标两个轴。

Auto Scale X - 自动定标X轴。

Auto Scale Y - 自动定标Y轴。

Zoom [image] - 缩放显示画面。

In - 放大显示画面，只包含使用指针选定的矩形区域。在选择这一功能后，通过在图形区域上拖动，可以选择区域。这一操作使用?#27233;皮圈?#26694;确定信息外形。

Out 2|5|10|20|50|100X - 在相对于中心的X方向和Y方向上，以某个倍数扩大显示范围。

Clear Control [image] - 指明什么时候清除显示画面的参数。

Display - 清除显示的轨迹。这个参数可以添加为控制端。

Next Curve - 复位画面，显示一系列曲线中的下一个曲线 (画面下次运行时的数据)，而不会清除上一个曲线。在系列中每条新曲线前必须选择(或激活)Next Curve。可以作为控制输入添加这个参数。

Center Markers - 如果提供了标尺，那么把它们放到轨迹看得到的部分的中心。如果滚动画面，看不到标尺，可以使用这种功能。

Add Right Scale - 添加最多两个额外的Y轴标度，允许多条轨迹有不同的标度范围。在添加适当的标度后，可以添加输入端 (对象菜单 [image] Add Terminal [image] Data Input)。然后使用 Properties对话框上的Traces和Scales栏设置其属性。

Print - 出现Print对话框。按OK将在选定的输出设备上打印或绘制设备的整个画面拷贝。可以作为控制输入添加Print。

属性

Name - 为显示画面指配一个变量值。通过输入名称，在打开时可以以程序化方式读取标尺值。变量是Object数据类型，是存在画面的上下文的局部变量。详情请参阅备注。

ClearAtPreRun - 在属性为True时，在PreRun时清除画面。默认值为True。

 ClearAtActivate - 在属性为True时，在Activate时清除画面。默认值为True。

ShowTracesLegend - 在Open View中，控制轨迹名称和颜色的可视性。使用EditTracesAndScales控制轨迹图例的编辑按钮功能。默认值为True。

 ShowScalesLegend - 在Open View中，控制标度名称的可视性。使用EditTracesAndScales控制标度图例的编辑按钮功能。默认值为True。

 ShowScaleLabels - 在Open View中，控制标度轴标为H的取值的可视性。默认值为True。

 ShowScrollBars - 在Open View中，控制X和Y标度上的滚动条。默认值为True。

 ShowAutoScaleButton - 在Open View中，控制Auto Scale按钮的可视性。默认值为False。

 EditTracesAndScales - 在Open View中，控制轨迹和标度属性的编辑按钮功能。在启用时，点击各个轨迹或标度名称，编辑其属性。默认值为True。使用ShowTracesLegend和ShowScalesLegend控制轨迹和标度名称的可视性。

GridType - Lines。在主要格显示直线，在次要格显示tic号。X轴和Y轴都显示为粗线。

Markers Category: - 允许查找显示的曲线上某个数据点的确切值。如果在对数标度上绘制数据图，标尺上显示的值是线性数据点。

为把标尺移动到一条不同的轨迹上，进入Open View，点击画面底部附近标尺值左面的按钮。按钮顺序通过不同轨迹的不同线型和颜色。

 NumMarkers - 图形中显示的标尺数量。默认值是选项None。

 MarkerInterpolate - 在属性为True时，可以把标尺放在显示的数据点之间。通过线性内插计算显示的标尺值。默认值为False。

DisplayBackColor - 允许从调色板中选择显示区域的颜色。在画面出现在细节视图和面板视图中时，可以选择不同的颜色。

ScaleLabelFont - 允许从系统上提供的字体列表中选择标度标记的字体。标度标记文本的默认字体是Screen Element: Graph Scale Label Text中Fonts栏上Default Preferences中设置的字体。

Traces Group: (每条轨迹一个)

Name: - 在图形区域左面显示的轨迹名称及相应的输入端名称。

Color: - 轨迹的颜色。每条新增的轨迹有一个与现有轨迹不同的颜色。第一条轨迹的默认值是yellow。

LineStyle: - 连接多个数据点的线的格式。默认值为continuous line。

PointStyle: - 标记每个数据点的符号。为显示没有连接的数据点，选择单点LineStyle格式及希望的PointStyle符号。默认值为dot。

Scale - 如果存在一个以上的Y标度，选择这个轨迹定标的标度。

Scales 属性： (每个X和Y标度一个，外加额外的Y标度)

Show Scale: - 如果有多个Y标度，那么这个选项(使用复选框)将指明在图形区域右面是否显示端点和每个新增的适当标度的轴。

Scale Name: - Open View中出现的标度名称。

Automatic Scaling: - 控制画面是否自动重新定标，在收到数据后立即显示整条轨迹。默认值为打开。如果这一项关闭，可以在Layout组中使用General栏上的Auto Scale按钮，或在对象菜单上使用Auto Scale命令，来重新定标画面。

Maximum: - 标度的最大值。

Minimum: - 标度的最小值。

Label Spacing: - 控制哪个tic号中标上标度值。X标度的默认值是Every Other Tic；Y标度的默认值是Every Major Tic。

Mapping: - x和y数据与画面映射的方式。映射可以是线性映射或对数映射。为绘制log-log图，把X轴和Y轴都变成Log。默认值为Linear。

Log Cycles: - 在Automatic Scaling启动时显示的10的最大数量(从x和y最大值向下计数)。只有在Mapping为Log时，才使用Log Cycles。在轨迹数据中包含大的动态范围时，适合使用Log Cycles。默认值为4。

Scale Color - 任何背景栅格或tic号的颜色。默认值为Gray。

ScaleNumberFormat: (X和Y标度及任何其它Y标度出现的属性。)

Global Format - 使用默认格式。默认值是on。

Real: - 如果Global Format关闭，指定这个对象上显示的实数数字格式。选项有：Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

X和Y标尺值采用与其附在的标度相同的数字格式。X和Y的增量标尺值使用默认数字格式，除非使用Time Stamp格式。如果X标度上的标尺1和标尺2或Y标度上的两个标尺都使用Time Stamp格式，增量标尺值将使用Delta Time格式。

备注

输入类型必须是Spectrum, Waveform,或Coord (Scalar或Array 1D)。

通过只使用x和y值，而不是先转换成Spectrum类型，来绘制Coord 型输入数据图。

使用Add Terminal [image] Data Input对象菜单选项添加轨迹，最多支持12条轨迹。

在Automatic Scaling属性打开时(Scales栏)，如果把整个数据集合发送到显示画面上，程序执行速度要更快。然后，显示画面会自动重新定标一次。如果程序一次把一个数据点发送到显示画面上，显示画面可以在每个数字点以后自动重新定标，这会降慢程序执行速度。在这种情况下，使用Collector对象创建一个数组，然后把数组发送到显示画面上。.

添加控制输入

可以添加一个Title控制输入端，把标题栏名称设置成指定的文本值。这可以程控打印画面时显示的标题。

可以添加一个Traces控制输入端。控制输入数据必须是由多个记录组成的数组(或如果只想控制一条轨迹，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为TraceNum的字段及一个整数值(1是第一条轨迹)。要求 TraceNum字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name

Pen

LineType

PointType

Name字段必须有一个文本值。Pen, LineType和PointType值必须是从0到n的整数，其中0不绘图，n是提供的选项数量。

可以添加一个Scales控制输入端，控制上面列出的标度参数。控制输入数据必须是由多个记录组成的数组(如果只想控制一个标度，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为Scale的Text字段，取值为X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name - 在Open View中改变标度名称。必须是一个文本值。

Min - 设置X标度的最小值。必须是一个整数值或实数值。

Max - 设置X标度的最大值。必须是一个整数值或实数值。

Mapping - 必须有一个Linear或Log文本值。

AutoScale - 控制自动定标。必须有一个On或Off的文本值。

如需进一步信息，请参阅使用记录和使用DataSets。

以程序化方式设置和读取标尺值

可以以程序化方式获得和设置标尺值。为准备显示，打开Properties窗口。为Name输入一个值。Name值暗示声明Object变量是显示画面上下文的局部变量。然后，在Markers组中打开一个设置。VEE为标尺的X位置和Y位置指配下述属性，包括增量值。(Marker1指向下；Marker2指向上。)

Marker1X (作为Real64获得位置)

Marker1Y (作为Real64获得位置)

Marker2X (作为Real64获得位置)

Marker2Y (作为Real64获得位置)

MarkerDX (作为Real64获得位置)

MarkerDY (作为Real64获得位置)

Marker1 (作为Coord获得/设置位置)

Marker2 (作为Coord获得/设置位置)

可以使用Marker1和Marker2属性，读取当前标尺位置，或把标尺移动到新位置。所有其它标尺属性都是只读的。如果试图把标尺移动到不在轨迹的坐标上，标尺会"咬"住轨迹上最近的点上。

在程序中，在Formula对象中输入一个或多个表达式，设置或读取标尺值。每个表达式必须包含显示画面Name和相关的标尺属性。标尺属性名称不分大小写。如果显示画面的Name是XY，同时打开Delta Markers，那么下述表达式将读取提供的所有标尺值，并作为Real64标量把它们指配给变量a到f：

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把显示画面Name指配给一个全局变量。在Formula对象中，在程序内添加一个赋值表达式，使用Declare Variable对象声明全局变量。例如，假设已经声明globalXY变量为全局变量，并把其Type设为Object，那么在存在显示画面的上下文中，在程序中添加下面的表达式：

Set globalXY = XY

可以从使用表达式的程序的另一个上下文中读取显示画面的标尺值，如：

a = globalXY.Marker1X

在开发程序时，您可能想包括一种方式暂停程序，以便在程序读取值之前手动重新定位标尺。暂停程序的方式之一是在显示画面的序列输出和Formula对象的序列输入之间添加一个Confirm (OK)按钮。您也可能想以程序化方式定位标尺。

位置

Display [image] Spectrum (Freq) [image] Phase Spectrum

另请参阅

Magnitude Spectrum, Magnitude vs Phase, Spectrum (Freq), 默认首选项, 和对象菜单

显示波形, 在显示画面中设置标尺, 获得和设置标尺属性


Picture

用来显示图形图像的对象。

用途

使用Picture在Detail或Panel View上显示一个图形图像。它允许平铺、拉长和截短图片。可以作为数据输入把图形文件名称添加到Picture对象中。

属性

Picture Category:

使用Picture从文件系统中选择一个显示在这个对象上的图形文件。显示的目录是安装目录下的bitmaps目录。如果想从另一个目录中选择一个文件，按Browse ...按钮。可以作为数据输入添加文件名。

Actual | Centered | Scaled | Tiled
-- 选择Actual指明自动调整对象，使其与图形图像的实际大小相符。如果调整对象，图像不会缩放，并显示在对象的左上角。
-- 选择Centered指明图像保持固定大小，并一直在对象上居中，即使对象大小变化。
-- 选择Scaled指明在对象大小变化时缩放图像。可能要用一会儿时间才能完成调整。
-- 选择Tiled在对象上水平和垂直复制图像，创建"墙纸"效果。

Preview - 显示选择的当前图形图像。

VEE检查文件，确定文件格式，目前支持的格式如下：

位图(*.BMP)

JPEG (*.JPG)

Windows Meta File (*.WMF)

GIF87a (*.GIF)

GIF89 (*.GIF)

可移植网络图形(*.PNG)

默认位图位于VEE程序安装目录的bitmaps目录中。

备注

如果大小属性设置成Actual之外的选项，那么对象默认的背景颜色与默认的Panel View颜色相同，以便背景混合到Panel View中。

背景图形可以添加到任何UserObject或UserFunction面板中，并在面板上带有Picture对象。

GIF89支持仅限于一个画面(非动画GIF)，不允许使用透明的背景颜色。

位置

Display [image] Picture

另请参阅

Label, Beep和UserObject.

在面板中添加图片


Plug&play設備配置

允許從VEE中指定或修改使用的Plug&play儀器配置。

用途

使用這個對話框，從配置的儀器列表中添加或編輯儀器。

注意，并不是所有Plug&play驅程都支持所有平台。另外，可能并不是所有平台上都支持某些VTL/VISA版本 (与GPIB卡一起提供)。請与相應厂商進行核對。

對話框信息

Advanced Instrument Properties對話框的Plug&play Driver一欄分成下述區域︰

Plug&play Driver Name: - 選擇驅程的名稱。提供的選項是已經安裝的驅程。這也是驅程所在的目錄。這個字段是必填字段。這些驅程的默認位置是︰

Windows 98: C:\VXIPNP\WIN98

Windows NT: C:\VXIPNP\WINNT

Parameters to init() call

Address: - 輸入識別儀器的地址位。地址格式取決于儀器連接的接口︰

- VXI地址字符串。對帶有嵌入式控制器或MXIbus控制器的VXI儀器，地址字符串采取VXI[board]::VXI logical address[::INSTR]的形式。例如，VXI::24::INSTR表示邏輯地址24上的儀器。

- GPIB-VXI地址字符串。對從GPIB卡到命令模塊控制的VXI儀器，地址字符串采取GPIB-VXI[board]::VXI logical address[::INSTR]的形式。例如，GPIB-VXI0::24::INSTR表示邏輯地址24上的儀器。

- GPIB地址字符串。對從GPIB卡控制的非VXI儀器，地址字符串采取GPIB[board]::GPIB primary address::[GPIB secondary address][::INSTR]的形式。例如，GPIB0::4::24::INSTR表示一級地址4和二級地址24上的儀器。

Perform Identification Query - 在選中這個复選框時，在第一次執行這個驅程的功能面板時，會檢查儀器的身份。一般來說，應選中這個复選框。

Perform Reset - 在選中這個复選框時，在第一次執行這個驅程的功能面板時，儀器初始化到預先定義的狀態。一般來說，應 選中這個复選框。

備注

Plug&play Driver Name字段允許從已經安裝的驅程中選擇驅程名稱。根据儀器驅程自帶的說明，安裝每個驅程所需的文件集。每個VXIplug&play驅程都是由硬件厂商編寫的，与儀器一起發售。

可能會有一個以上的對象控制一部儀器。還可能同一個驅程有多個拷貝，每個拷貝控制一部不同的物理儀器。不管是哪种情況，都由配置的名稱确定哪個對象控制哪部儀器。

位置

I/O [image] Instrument Manager，然后按Add?/font>或Properties按鈕，出現Instrument Properties對話框。按Advanced按鈕。

另請參閱

Direct I/O, Instrument Manager, Instrument Properties, Panel Driver和To/From VXIplug&play。


Polar Plot

在极坐标中显示图形绘图的对象。

用途

在为半径和角数据提供不同的极坐标信息时，使用Polar Plot显示极坐标上的一个值。

在绘制一条以上的轨迹时，每次执行Polar Plot对象都使用一个角输入数据，其中包括每条轨迹的Radius输入数据，因此所有轨迹共享一个角输入。

Open View参数

下面是默认的Open View参数。其用途及其它参数的使用情况由对象菜单及Properties对话框中的选项控制 (对象菜单 [image] Properties)。

Y name - 半径标度的名称。

Span: - 显示画面的垂直维度。在原点位于显示画面中心时，Span是半径的两倍。这个参数控制着显示画面的标度。默认值为2。

RData1 - 第一条轨迹的名称。

Polar Reference Location - 指定显示的极坐标图的部分。其速度要比滚动到某个区域快。在输入字段中改变参考点，可以把指定的图表部分(如Center)滚动到指定的位置(如(0, @0))。

Ref Radius: - 粗体格线圆圈的半径值。

对象菜单

Auto Scale [image] Auto Scale - 立即把画面重新定标成显示整条轨迹。Auto Scale会把极坐标的参考位置复位到Center (0,@0)。(可以添加为控制端，或使用Scales属性栏设置成在采集数据后自动重新定标画面。)

Auto Scale X - 不能使用。

Auto Scale Y - 不能使用。

Zoom [image] - 缩放显示画面。

In - 放大显示画面，只包含使用指针选定的矩形区域。在选择这一功能后，通过在图形区域上拖动，可以选择区域。这一操作使用?#27233;皮圈?#26694;确定信息外形。

Out 2|5|10|20|50|100X - 在相对于中心的X方向和Y方向上，以某个倍数扩大显示范围。

Clear Control [image] - 指明什么时候清除显示画面的参数。

Display - 清除显示的轨迹。这个参数可以添加为控制端。

Next Curve - 复位画面，显示一系列曲线中的下一个曲线 (画面下次运行时的数据)，而不会清除上一个曲线。在系列中每条新曲线前必须选择(或激活)Next Curve。可以作为控制输入添加这个参数。

Center Markers - 如果提供了标尺，那么把它们放到轨迹看得到的部分的中心。如果滚动画面，看不到标尺，可以使用这种功能。

Add Right Scale - 添加最多两个额外的Radius轴标度，允许多条轨迹有不同的标度范围。在添加适当的标度后，可以添加输入端 (对象菜单 [image] Add Terminal [image] Data Input)。然后使用 Properties对话框上的Traces和Scales栏设置其属性。

Print - 出现Print对话框。按OK将在选定的输出设备上打印或绘制设备的整个画面拷贝。可以作为控制输入添加Print。

属性

Name - 为显示画面指配一个变量值。通过输入名称，在打开时可以以程序化方式读取标尺值。变量是Object数据类型，是存在画面的上下文的局部变量。详情请参阅备注。

ClearAtPreRun - 在属性为True时，在PreRun时清除画面。默认值为True。

 ClearAtActivate - 在属性为True时，在Activate时清除画面。默认值为True。

ShowTracesLegend - 在Open View中，控制轨迹名称和颜色的可视性。使用EditTracesAndScales控制轨迹图例的编辑按钮功能。默认值为True。

 ShowScalesLegend - 在Open View中，控制标度名称的可视性。使用EditTracesAndScales控制标度图例的编辑按钮功能。默认值为True。

 ShowScrollBars - 在Open View中，控制标度上标度栏的可视性。默认值为True。

 ShowAutoScaleButton - 在Open View中，控制Auto Scale按钮的可视性。默认值为False。

 EnableEditTracesAndScales - 在Open View中，控制轨迹和标度属性的编辑按钮功能。在启用时，点击各个轨迹或标度名称，编辑其属性。默认值为True。使用ShowTracesLegend和ShowScalesLegend控制轨迹和标度名称的可视性。

GridType: - 默认值为Lines。

Smith Chart - 在Smith图表中显示数据 (也称为"阻抗图表")。标尺值给定为实数阻抗和虚数阻抗。粗体圆是"参考半径"，其线性半径值在画面的右下角显示。如果输入数据已经归一化，Smith Chart栅格和标尺只表示正确定标的值。为归一化数据，把所有幅度除以特性阻抗。

Inv Smith Chart - 在反Smith图表中显示数据(也称为"导纳图表")。反Smith图表的使用方式与Smith图表相同，但栅格和标尺值是导纳值，而不是阻抗值。

Markers Category: - 允许查找显示的曲线上某个数据点的确切值。如果在对数标度上绘制数据图，标尺上显示的值是线性数据点。

为把标尺移动到一条不同的轨迹上，进入Open View，点击画面底部附近标尺值左面的按钮。按钮顺序通过不同轨迹的不同线型和颜色。

NumMarkers - 图形中的标尺数量。

MarkerInterpolate - 在属性为True时，可以把标尺放在显示的数据点之间。通过线性内插计算显示的标尺值。默认值为False。

BackColor - 允许从调色板中选择显示区域的颜色。在显示画面出现在细节视图和面板视图中时，可以选择不同的颜色。

Traces Group: (每条轨迹一个)

Name: - 在图形区域左面显示的轨迹名称及相应的输入端名称。

Color: - 轨迹的颜色。每条新增的轨迹有一个与现有轨迹不同的颜色。第一条轨迹的默认值为yellow。

LineStyle: - 连接多个数据点的线的格式。默认值为continuous line。

PointStyle: - 标记每个数据点的符号。为显示没有连接的数据点，选择单点LineStyle格式及希望的PointStyle符号。默认值为dot。

Scale - 如果存在一个以上的Y标度，选择这个轨迹定标的标度。

Scales 属性： (每个X和Y标度一个，外加额外的Y标度)

Show Scale: - 如果有多个Radius标度，那么这个选项(使用复选框)将指明在图形区域右面是否显示端点和每个新增的适当标度的轴。

Scale Name: - Open View中出现的标度名称。

Automatic Scaling: - 控制画面是否自动重新定标，在收到数据后立即显示整条轨迹。默认值为打开。如果这一项变成False，可以在Layout组中使用General栏上的Auto Scale按钮，或在对象菜单上使用Auto Scale命令，来重新定标画面。

Vertical Span: - 显示画面的垂直维度。默认值为2。

Scale Color - 任意背景栅格或tic号的颜色。默认值为Gray。

Reference Corner: - 指定显示的极坐标图的部分。其速度要比滚动到某个区域快。改变Reference Value，可以把指定的图表部分(如Center)滚动到指定的位置(如(0, @0))。默认值为Center。

Reference Value: - 定义了极坐标图中使用的数字极坐标值。默认值为(0, @0)。

备注

输入必须是Scalar或Array 1D，其可以转换成Real64类型。

角单位位于当前Trig Mode。

所有输入的大小和形状必须相同。忽略输入上的映射信息。

使用Add Terminal [image] Data Input对象菜单选项添加轨迹，最多支持12条轨迹。

在Automatic Scaling属性打开时(Scales栏)，如果把整个数据集合发送到显示画面上，程序执行速度要更快。然后，显示画面会自动重新定标一次。如果程序一次把一个数据点发送到显示画面上，显示画面可以在每个数字点以后自动重新定标，这会降慢程序执行速度。在这种情况下，使用Collector对象创建一个数组，然后把数组发送到显示画面上。.

添加控制输入

可以添加一个Title控制输入端，把标题栏名称设置成指定的文本值。这可以程控打印画面时显示的标题。

可以添加一个Traces控制输入端。控制输入数据必须是由多个记录组成的数组(或如果只想控制一条轨迹，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为TraceNum的字段及一个整数值(1是第一条轨迹)。要求 TraceNum字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name

Pen

LineType

PointType

Name字段必须有一个文本值。Pen, LineType和PointType值必须是从0到n的整数，其中0不绘图，n是提供的选项数量。

可以添加一个Scales控制输入端，控制上面列出的标度参数。控制输入数据必须是由多个记录组成的数组(如果只想控制一个标度，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有：

一个或多个下述字段：

Name, Name1, Name2, and/or Name3 - 必须是文本值。

Span, Span1, Span2, and/or Span3 - 必须是整数或实数值。

RefPt - 必须是PComplex。

如需进一步信息，请参阅使用记录和使用DataSets。

以程序化方式设置和读取标尺值

可以以程序化方式获得和设置标尺值。为准备显示，打开Properties窗口。在General栏中，为Name输入一个值。Name值暗示声明Object变量是显示画面上下文的局部变量。然后，在Markers组中打开一个设置。VEE为标尺的X位置和Y位置指配下述属性，包括增量值。(Marker1指向下；Marker2指向上。)

Marker1X (作为Real64获得位置)

Marker1Y (作为Real64获得位置)

Marker2X (作为Real64获得位置)

Marker2Y (作为Real64获得位置)

MarkerDX (作为Real64获得位置)

MarkerDY (作为Real64获得位置)

Marker1 (作为Coord获得/设置位置)

Marker2 (作为Coord获得/设置位置)

可以使用Marker1和Marker2属性，读取当前标尺位置，或把标尺移动到新位置。所有其它标尺属性都是只读的。如果试图把标尺移动到不在轨迹的坐标上，标尺会"咬"住轨迹上最近的点上。

在程序中，在Formula对象中输入一个或多个表达式，设置或读取标尺值。每个表达式必须包含显示画面Name和相关的标尺属性。标尺属性名称不分大小写。如果显示画面的Name是XY，同时打开Delta Markers，那么下述表达式将读取提供的所有标尺值，并作为Real64标量把它们指配给变量a到f：

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把显示画面Name指配给一个全局变量。在Formula对象中，在程序内添加一个赋值表达式，使用Declare Variable对象声明全局变量。例如，假设已经声明globalXY变量为全局变量，并把其Type设为Object，那么在存在显示画面的上下文中，在程序中添加下面的表达式：

Set globalXY = XY

可以从使用表达式的程序的另一个上下文中读取显示画面的标尺值，如：

a = globalXY.Marker1X

在开发程序时，您可能想包括一种方式暂停程序，以便在程序读取值之前手动重新定位标尺。暂停程序的方式之一是在显示画面的序列输出和Formula对象的序列输入之间添加一个Confirm (OK)按钮。您也可能想以程序化方式定位标尺。

位置

Display [image] Polar Plot

另请参阅

Complex Plane, Magnitude Spectrum, Magnitude vs Phase, Spectrum (Freq), Strip Chart, Waveform (Time), 和默认首选项。

显示极坐标数据, 在显示画面中设置标尺, 获得和设置标尺属性


Pop-Up List

弹出列表

参阅选择控制。


Print

一个对话框，允许使用标准Microsoft Windows打印惯例进行打印。

用途

使用Print对话框选择打印质量和打印的份数。

对话框信息

Printer - 识别当前Windows系统打印机。如果想改变打印机，点击Properties按钮，出现Print Setup对话框。

Print Range - 对VEE固定为All。

Print Quality - 这些选项是打印机专用选项。对HP LaserJet Printers，默认值为300 dpi (300点/英寸)。

Copies - 输入打印份数(默认值= 1)。

Collate Copies - 默认值为关闭(没有对勾)。点击复选框，打开Collate Copies。

在完成时，如果准备打印，点击OK；如果想不打印并停止，点击Cancel。如果想显示Print Setup对话框，改变其它参数，点击Properties。

备注

如需与为Windows程序设置打印机有关的更多信息，请参阅Microsoft Windows文档。

位置

File [image] Print Screen

File [image] Print Program

File [image] Print Objects

另请参阅

Print Objects, Print Program, Print Screen和Print Setup。

改变打印首选项

打印VEE程序

在VEE程序中打印对象

打印或复制VEE窗口

打印VEE工作空间


Print Objects

对每个选中的对象向一台打印机或一个打印文件输出一页，其中包含所有视图和Description数据。

用途

使用Print Objects获得选中对象的硬拷贝。Print Objects显示一个对话框，指明与打印机配置有关的信息。

Print Objects将打印每个对象的所有视图(图标, 打开, 细节或面板)以及Description数据。如果对象中包含多项事务，那么还会打印描述事务的详细对话框。

如果当前没和选中任何对象，那么Print Objects菜单项会变成灰色。

对话框信息

Print Objects为系统显示相应的对话框；参阅Print。

备注

Print Objects捕获程序图像可能要用一段时间。当正在捕获图像时，指针变成一个沙漏。只有在捕获完成时(指针变回箭头)，才能使用VEE。

VEE只保存一种打印配置，在各个打印操作之间保持不变。

位置

File [image] Print Objects

另请参阅

Print, Print Program, Print Screen, Default Preferences和Select All。

改变打印首选项

打印VEE程序

在VEE程序中打印对象

打印或复制VEE窗口

打印VEE工作空间


Print Program

把程序的整个细节视图输出到一台打印机或一个打印文件中。

用途

使用Print Program，获得整个程序的硬拷贝。Print Program显示Print Options对话框，允许指定输出到打印机上的内容。在已经选择了打印选项后，点击OK按钮，出现Print对话框。

Print Program生成带索引的页面，显示VEE程序的整个结构。输出中包括顶级程序的整体视图，程序中的每个对象显示一页，其中包括对象的所有视图及其Description数据。如果对象中包含多项事务，那么还会打印描述事务的详细对话框。每页输出包含着描述图像在程序中的位置的信息。

可以通过Print Options对话框，独立控制打印过程的各个方面。

对话框信息

Print Program对话框显示五个字段：

Print Nested UserObjects - 打印引擎以递归方式打印目前正在打印的对象内部嵌套的任何UserObject。

Print Object Views - 打印上下文内部的所有对象。但是，对象打印方式在一定程度上取决于对象的复杂程度。也就是说，简单的对象如Gate、Junction或UntilBreak对象会在出现在VEE程序中时打印。比较复杂的对象如Graph或Sequencer对象会采用open view形式打印。

Print Header and Index Page - 如果复选这个对话框，VEE程序打印输出的每一页将包含一个两行的标题，显示日期、时间、程序文件名和页码。在打印输出结尾，会打印一张索引页，显示索引项的页码。

Print Program Explorer - 如果复选这个对话框，VEE程序打印输出将显示Program Explorer窗口中包含的信息。

Print Cover Page - 如果复选这个对话框，VEE程序打印输出第一页将显示下述内容：

VEE产品徽标图形。

打印的程序文件名。

保存程序的文件格式。

使用的VEE软件的修订版本 (如6.0, 等等)。

当前VEE执行模式(VEE 6, VEE 5, 等等)。

Print I/O Configuration - 如果复选这个对话框，会打印仪器配置的扩展树图。可以在I/O [image] Instrument Manager?/font>中查看仪器配置。

在按OK时，系统会出现相应的对话框；参阅Print。

备注

Print Program捕获程序图像可能要用一段时间。当正在捕获图像时，指针变成一个沙漏。只有在捕获完成时(指针变回箭头)，才能使用VEE。

VEE只保存一种打印配置，在各个打印操作之间保持不变。

位置

File [image] Print Program...

另请参阅

Default Preferences, Print, Print Screen, Print Objects和Save Documentation。

改变打印首选项

打印VEE程序

在VEE程序中打印对象

打印或复制VEE窗口

打印VEE工作空间


Print Screen Object

在系统打印机上打印一份VEE窗口看得见的部分的对象。

用途

在程序运行时，使用Print Screen打印一份看得见的工作区。

备注

使用下述方式配置Print Screen使用的打印机(VEE系统打印机)：

File [image] Print Setup

Print Screen把输出指向配置的图形打印机或目录。

在Print Screen运行时，正在运行的程序会暂停。在Print Screen完成时，程序会恢复运行。

位置

I/O [image] Print Screen

另请参阅

Print, Print Program, Print Screen, Print Objects和Default Preferences。

改变打印首选项


Print Setup

一个对话框，允许使用标准Microsoft Windows打印惯例设置打印机。

用途

使用Print Setup对话框选择打印机、打印方向及纸张大小和来源。

对话框信息

Printer - 选择Default Printer或Specific Printer。如果选中Specific Printer，那么可以从Windows系统上配置的打印机列表中选择打印机。

Paper - 从支持的选项列表中选择纸张大小Size和来源Source。

Orientation - 选择纵向Portrait或横向Landscape。

如果点击Properties，会出现另一个(标准Windows)对话框，提示进一步作出选择。

备注

如需与为Windows程序设置打印机有关的更多信息，请参阅Microsoft Windows文档。

在Windows 98下运行VEE时，对几乎所有VEE打印情况，都应选中Font栏上的Print True Type as graphics及Graphics栏上的Use raster graphics。

在Windows NT下运行VEE时，Document Properties对话框中的Print Text as Graphics应为On。这个对话框从File [image] Print Setup中进入。在Print Setup对话框中，点击Properties按钮，然后点击Advanced栏。

位置

File [image] Print Setup

(或从文件菜单中选择其它打印选项中的一个选项，出现Print对话框。)

另请参阅

Print, Print Program, Print Objects和Print Screen。

改变打印首选项

打印VEE程序

在VEE程序中打印对象

打印或复制VEE窗口

打印VEE工作空间


Profiler

一个菜单选项，提供了与UserObjects和UserFunctions有关的执行信息。

用途

在启用Profiler时，会出现Profiler Information对话框。从Profiler Information对话框中，可以配置VEE程序中每个UserObject和UserFunction的各种执行参数。

在启动Profiler时，它将提供与每个UserObject或每个UserFunction执行所需的时间量有关的对比信息。在试图修改VEE程序，以最大限度地提高效率、改善执行速度时，这些信息可能非常有用。

只要启用Profiler，在VEE工作空间右下角的程序Status Bar将高亮度显示PROF。

对话框信息

Name - Name一栏列出了配置文件的每个UserObject和每个UserFunction的名称。

# Executions - 这一栏显示了在配置过程中每个UserObject或UserFunction执行的次数。

% Time - 显示某个UserObject或UserFunction执行所用的时间在整个程序执行的总时间中所占的百分比。

Time(sec) - 显示某个UserObject或UserFunction执行所用的时间，单位为秒。

Start Profiling - Start Profiling按钮是在Start Profiling或Stop Profiling之间拨码切换的功能。在已经启动配置文件时，VEE程序Status Bar将高亮度显示PROF字段。

Refresh - Profile Information对话框不会使用新的配置文件数据自动更新。必须点击Refresh按钮，使Profiler从正在运行的、暂停的或停止的VEE程序中检索最新配置文件数据。

Clear - Clear按钮把Profiler Information对话框中的所有字段值复位成0 (零)。

Save - 点击Save按钮，把Profiler数据保存到可以使用Options...按钮指定的文件名中。(参阅下面介绍的Options...)。

Options... - 点击Options...按钮，出现Profiler Options对话框。 Profiler Options对话框包含下述字段和按钮：

# digits for % Time - 这个字段允许指定希望在Profiler对话框的% Time字段中显示多少位的精度(小数点的右面)。默认位数是2。

# digits for Time(sec) - 这个字段允许指定希望在Profiler对话框的Time(sec)字段中显示多少位的精度(小数点的右面)。默认位数是3。

Show only executed contexts - 如果复选(启用)这个框，那么将只在执行的UserObjects和UserFunctions上显示Profiler数据。在默认情况下，不复选这个框。

Save Options 组 - Save Options 组中的项目定义了怎样把Profiler数据保存到数据文件中的选项，包括：

- Save File Name: - 这个字段指明了保存Profiler数据的文件名。点击这个字段，出现Save data filename对话框。从Save data filename对话框中，可以指定希望用来存储Profiler数据的文件名和文件类型。默认文件名是profile.dat。
- Overwrite data - 如果复选(启用)Overwrite data框，那么每次在保存新采集的Profiler数据时，都会覆盖以前采集和保存到Profiler数据文件中的Profiler数据。在默认情况下，启用Overwrite data。
- Comma delimited - Comma delimited框允许指定是否把Profiler数据写入逗号分隔格式或非逗号分隔格式的数据文件中。如果以Comma delimited格式写入数据，那么使用逗号作为各个Profiler数据字段之间的分隔符，把数据写入数据文件。在数据文件中使用逗号分隔符可以更加简便地把数据文件传送到其它类型的应用软件中(如电子表格)。在默认情况下，不复选(不启用)Comma delimited框。
- OK - 点击OK，确认在Profiler Options对话框中已经选择的任何选项。

备注

在Profiler已经在Profiler对话框中采集和显示数据后，可以双击Name字段中显示的任何UserObject或UserFunction，VEE工作空间中将调入该UserObject或UserFunction。

此外，点击任何栏的标记，如Name, # Executions, % Time等，会以相反的顺序对Profiler对话框中显示的数据分类。再次点击，会再次颠倒分类顺序。

位置

View [image] Profiler

另请参阅

Call Stack, Clean Up Lines, Show Data Flow, Show Execution Flow,和Properties (对象)。

配置执行参数


Program Explorer

打开或关闭Program Explorer窗口的View 菜单项。

用途

Program Explorer菜单选项是一个切换功能，确定是否显示Program Explorer窗口。在其活动时，Program Explorer窗口位于VEE工作空间的左面。可以使用下述方法，设置Program Explorer的默认状态：

1. 使用View 菜单或Toolbar按钮，设置Program Explorer的当前状态。

2. 选择File [image] Default Preferences。

3. 按Default Preferences对话框上的Save按钮。

4. 按Default Preferences对话框上的OK按钮。

在下次启动VEE时，Program Explorer会以通过Default Preferences确定的状态启动。

通过在VEE工作空间和Program Explorer窗口本身的垂直间隔上滑动鼠标指针，可以调整Program Explorer窗口大小。在鼠标指针变成竖的劈开光标时，按鼠标左键，把光标向右或向左拖，可以提高或缩小窗口大小。

通过在Program Explorer和Properties 窗口的水平分隔符上滑动鼠标指针，可以调整Program Explorer窗口的高度(如果能够同时看到Program Explorer和Properties)。

备注

Program Explorer窗口用来向编程人员显示目前加载的VEE程序的层级结构。这个结构使用不同的图标表示程序的不同部分。这些图标代表着不同类型的下述程序信息。

在Main UserObject上开始的UserObject层级

本地UserFunction列表

导入的UserFunction库列表和相关函数

导入的Compiled Libraries和相关函数

导入的Remote UserFunction库和相关函数

全局变量, 包括声明变量和未声明变量

相应库下声明的库全局变量

相应上下文下声明的局部变量

很大一部分Program Explorer功能通过上下文相关菜单存取。例如，如果在UserObject icon in the Program Explorer窗口中的UserObject图标上移动鼠标光标，然后按鼠标右键，会出现UserObject的上下文相关菜单。

并不是Program Explorer中的所有项目都提供了上下文菜单，而出现的菜单取决于项目类型 (UserObject图标, UserFunction图标等等)。Program Explorer中的下述项目将提供上下文相关菜单：

Program (或Root) Node

Main UserObject

UserObjects

UserFunctions

本地UserFunctions

导入的UserFunctions

导入的UserFunction库

Remote UserFunction

Compiled Function

全局变量

库全局变量

局部变量

位置

View [image] Program Explorer

另请参阅

默认首选项, UserFunction, UserObject

浏览程序结构


Properties (Object)

Properties (对象)

与每个对象相关的、包含影响该对象的选项的窗口。本页只描述了每个对象上提供的通用属性。由于某些对象的特点，某些选项和栏不适用。

用途

使用Properties Window编辑标题，设置断点，设置对象颜色和字体，设置标题颜色和字体，改变图标和Open View外观，执行其它对象专用操作。

窗口信息

Title - 显示对象的当前标题，允许编辑标题。

 ShowTitleBar - 在这个属性为True时，显示对象Open View上的标题栏。

 Show Terminals - 在这个属性为True时， Show Terminals在Open View上显示输入端和输出端。显示的端中会显示端名称。为获得完整的端信息，双击对象的端。

BreakpointEnabled - 在这个属性为True时在对象上启用断点；在这个属性为False时在对象上取消断点。使用BreakpointEnabled作为调试工具，在这个对象执行前暂停执行程序。下一个要执行的对象有一个黄色边框(在默认状态下)。为继续执行，按工具栏上的Resume或其中一个Step按钮。当Properties中设置了断点或从Debug菜单中选择了断点时，会启用断点，对象会用橙色边框(默认状态下)高亮度显示。

Title BackColor - 允许从调色板中选择标题栏(Open View)和标题(图标视图)的颜色。

 Title ForeColor - 允许从调色板中选择标题栏(Open View)和标题(图标视图)使用的文本颜色。

BackColor - 允许从调色板中选择对象的Open View的颜色。

 ForeColor - 允许从调色板中选择Open View中使用的文本颜色。如果在对象Open View的正文中没有文本，那么这个选项不能使用。

Title Font - 允许从系统上提供的字体列表中选择标题栏(Open View)和标题(图标视图)的字体。

Font - 允许从系统上提供的字体列表中选择Open View中使用的文本颜色。如果在对象Open View的正文中没有文本，那么这个选项不能使用。

ShowIconTitle - 在这个属性为True时，显示对象图标视图上的对象名称。在Show Title为False时，图标上不显示对象名称。如果只想在图标上显示一个位图，一般使用这个功能。

IconPicture - 使用Picture，从文件系统中选择在这个图标上显示的图形文件。

显示的目录是安装目录下的bitmaps目录。为从另一个目录中选择一个文件，按Browse ...按钮。

选择Centered，指定即使图标大小变化，仍把图像保持在固定大小，并一直在图标上居中。

选择Scaled，指定在图标大小变化时缩放图像。

Preview - 显示当前选择的图形图像。当前支持的格式请参阅Picture对象的Help信息。

默认的位图位于VEE程序安装目录下的bitmaps目录中。

Border: 只能从Panel视图上的对象中使用。

None | Flat | Sunken | Raised - 选择在面板上显示的对象的边框特点。

Location: 只能从Panel视图上的对象中使用。

X: -对象左上角的水平位置(用像素表示)。0位于工作区的左上角。

Y: - 对象左上角的垂直位置(用像素表示)。0位于工作区的左上角。

Size: 只能从 Panel视图上的对象中使用。

Width: - 对象左侧和右侧之间的距离。这个数字包括任何对象边框的宽度。

Height: - 对象顶部和底部之间的距离。这个数字包括任何对象边框的宽度。

备注

在修改Font属性时，字体对话框有一个复选框，标为Automatically Resize Object on Font Change。在选择这个复选框，改变字体，按OK时，对象会调整大小，以适应新字体。在没有选择这个复选框时，对象大小保持不变，而不管字体有多大或多小。如果没有选择Object Text字体，那么这一选项不能使用。

从对象面板视图中在Properties窗口中所作的任何变化，都只会影响该对象的面板视图。从对象的面板视图中提供的Properties选项是细节视图选项的一个子集。

大多数对象在Properties窗口中有专用于该对象的其它选项(通过对象菜单上的Properties进入这个窗口)。这些对象属性的详情请参阅与该对象有关的信息。

快捷方式

双击对象的标题栏(在Open View中提供)，可以迅速进入Properties窗口。.

位置

在每个对象菜单 [image] Properties ...上

从Main Menu View [image] Properties中

另请参阅

默认首选项和对象菜单


Pulse Generator

生成和输出脉冲波形的对象。

用途

使用Pulse Generator，使用自己的技术数据生成一个脉冲波形。

属性

ErroronAliasing - 如果这个属性为True，那么在任何高或低脉冲状态的时间周期小于取样周期(Time Span/Num Points)的两倍时会返回错误。这一选项求解的目的是确定生成的点是否准确地表示生成的脉冲。如果不选中这个复选框，那么会以原本方式表示各点。默认值为True。

Open View参数

所有这些参数都可以从Open View中设置，或添加为数据输入。

Frequency - 生成脉冲的速率，单位为赫兹。

Pulse Width - 脉冲的宽度，用时间表示。这一时间是从低到高转换的中点到从高到低转换中点之间测得的值。脉宽必须是正实数。默认值为5ms。

Pulse Delay - 从脉冲开始到下一个转换开始之间的时间。Pulse Delay必须是一个正实数。默认值为0。

Thresholds - 确定Rise Time和Fall Time使用的门限。
低门限= (第一个百分比) * (高 - 低)
高门限= (第二个百分比) * (高 - 低)

0%-100%

10%-90%

20%-80%

Rise Time - 从低门限转换到高门限所用的时间，单位为秒。Rise Time必须是正实数。

Fall Time - 从高门限转换到低门限所用的时间，单位为秒。Fall Time必须是正实数。

High - 在脉冲活动时的波形值。High必须是实数。默认值为1。

Low - 在脉冲不活动时的波形值。Low必须是实数。如果Low的值大于High的值，那么生成的脉冲会倒置。默认值为0。

Burst Mode - 启用或取消在Frequency上生成的多个脉冲。在Burst Rate为OFF时，在Frequency上只生成一个脉冲。在Burst Mode为On时，在Frequency上生成Burst Count数量的脉冲。默认值为OFF。

Burst Count - 以Rep Rate生成的脉冲数量。Burst Count必须是正整数。默认值为2。

Burst Rep Rate - 生成Burst Count脉冲的速率。Burst Rep Rate必须是大于1/pulse width的实数。

Time Span: - 波形的时长(单位为秒)。 默认值为20ms。

Num Points: - 波形中的点数。波形各点之间的时间为Time Span/numPoints。Num Points必须为正。默认值为256。

位置

Device [image] Virtual Source [image] Pulse Generator

另请参阅

Build Arb Waveform, Build Waveform, Comparator, Function Generator,和Noise Generator。


Clear Queue

Queue - Clear

清除给定队列。

位置

System [image] Collections [image] Queue [image] Clear


Queue - Count

计算队列中的项目数量。

位置

System [image] Collections [image] Queue [image] Count


Queue - Create

创建一个称为队列的数据结构。

位置

System [image] Collections [image] Queue [image] Create


Queue - Dequeue Item

从队列中删除一个项目。

Location

System [image] Collections [image] Queue [image] Dequeue Item


Queue - Enqueue Item

在队列中添加一个项目。

位置

System [image] Collections [image] Queue [image] Enqueue Item


Queue - Enumerate

提供队列中的项目列表。

位置

System [image] Collections [image] Queue [image] Enumerate Items


Queue - Peek an Item

抽看队列中的一个项目。

位置

System [image] Collections [image] Queue [image] Peek Item


Radio Buttons

Radio按钮

参阅选择控制。


Raise Error

使用相关错误编号(换码)和文本消息生成用户自定义的错误条件。(这个对象以前称为Escape)

用途

使用Raise Error，停止执行当前的UserObject，生成可以由密封UserObject或主工作区的错误端捕获的错误。如果没有捕获错误(由UserObject上的错误端)，且换码不是零，那么Raise Error会停止程序，生成错误对话框。

Raise Error还可以用于UserFunction中，生成由调用UserFunction的对象上的错误端捕获的错误。

Open View参数

Code - 一个错误编号，必须是Int32。VEE使用300和1,000之间的错误编号，最好使用这个范围之外的错误编号。可以在输入框中输入Code，或添加为数据输入。

Message - 要输出的文本信息。可以在输入框中输入Message，或添加为数据输入。

备注

如果使用-r命令行调用VEE，那么Raise Error生成的没有捕获的错误会导致VEE中止。Code和Message写入stderr中，作为退出代码向操作系统返回255。

为生成某个退出代码，使用Stop对象。

位置

Flow [image] Raise Error

另请参阅

Error Output (对象菜单), Create UserObject, Exit UserObject, Exit Thread, Start, Stop, 和Properties (对象)

捕获错误


Real32

输出4字节实数标量或1D数组常数的对象。

用途

使用Real32设置实数常数或获得用户输入。点击输入字段，输入一个值。

范例

为作为面板视图上的Real32提示使用Real32对象的名字变成提示，如 Enter the offset:。用户在输入字段中填写请求的信息。

输入100M*PI，令Real32 Constant对这个公式求解，显示Real32数字答案。

属性

DataShape - 设置这一对象输出的值的初始数据形状。可能的值为标量和Array 1D。

 ArraySize - 在选择DataShape 1D Array时，ArraySize设置数组的长度。

 ArraySizeFixed - 在这一属性为True时，数组不能添加或删除行。只有在选择DataShape 1D Array时才能使用这一选项。

 ShowArrayIndices - 在这一属性为True时，输入字段中的每一行都带有索引。只有在选择DataShape 1D Array时才能使用这一选项。默认值为True。

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为0。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

Global Format - 使用默认格式。默认值为True。

Real: - 如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入可以以程序化方式改变当前值。这一输入要求一个实数值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与进入的数据形状相匹配。

Reset输入可以以程序化方式把值设为零。如果Constant配置为Array 1D，那么所有值都设为零。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。

注意，InitialValue字段总是一个标量，即使Real32配置成数组。

位置

Data [image] Constant [image] Real32

另请参阅

Alloc Real32, Complex, Constant, Coord, Date/Time, Selection Control, UInt8, Int16, Int32, PComplex, Real64, Text和Toggle Control.

使用数据常数


Real64

输出8字节实数标量或1D数组常数的对象。

用途

使用Real64设置实数常数或获得用户输入。点击输入字段，输入一个值。

范例

为作为面板视图上的Real64提示使用Real64对象的名字变成提示，如 Enter the offset:。用户在输入字段中填写请求的信息。

输入100M*PI，令Real64 Constant对这个公式求解，显示Real64数字答案。

属性

DataShape - 设置这一对象输出的值的初始数据形状。可能的值为标量和Array 1D。

 ArraySize - 在选择DataShape 1D Array时，Size 设置数组的长度。

 ArraySizeFixed - 在这一属性为True时，数组不能添加或删除行。只有在选择DataShape 1D Array时才能使用这一选项。

 ShowArrayIndices - 在这一属性为True时，输入字段中的每一行都带有索引。只有在选择DataShape 1D Array时才能使用这一选项。默认值为True。

Stepping Category: (在DataShape为Array 1D失效)

EnableStepping - 在这一属性为True时，输入字段右端出现步进控制，允许滚动各个值。默认值为False。

DetentSize - 在EnableStepping属性为True时，这会设置使用步进控制滚动取值时取值之间的长度。默认值为1。

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为0。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

Global Format - 使用默认格式。默认值为启动。

Real: - 如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入可以以程序化方式改变当前值。这一输入要求一个实数值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与进入的数据形状相匹配。

Reset输入可以以程序化方式把值设为零。如果Constant配置为Array 1D，那么所有值都设为零。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。

注意，InitialValue字段总是一个标量，即使Real64配置成数组。

位置

Data [image] Constant [image] Real64

另请参阅

Alloc Real64, Complex, Constant, Coord, Date/Time, Selection Control, UInt8, Int16, Int32, PComplex, Real32, Text和Toggle Control。

使用数据常数


Real64 Knob

输出旋钮Real64值的对象。

用途

使用Real64 Knob输入值。Real64 Knob特别适合用于面板上。

Open View参数

open view显示旋钮当前值、最小值、最大值和旋钮控制字段。

属性

Orientation - 设置怎样显示Knob。

 ShowDigitalDisplay - 如果这一属性为True，那么会在对象open view底部的编辑字段中显示旋钮的当前值。在修改这个值时，旋钮的位置会发生变化。默认值为True。

ShowTics - 控制标度的tic号和标注的可视性。默认值为True。

 Logarithmic - 在这一属性为True时，标度从线性变成对数。默认值为False。在打开时，Detents变成Steps/Decade。

 LabelSpacing: - 控制标度值中是否标注tic号。默认值为Every Other Tic。

 Detents或Steps/Decade: - 在线性标度上，Detents设置Knob提供的各个值之间的距离。在对数标度上，Steps/Decade设置Knob每10 Hz内提供的步长数量。如果输入其它值，那么它们会舍入到最近的定位器。Detents (线性标度)的默认值为1m。Steps/Decade (对数标度)的默认值为1.0。

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为0。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

NumberFormat类别：

Global Format - 使用默认格式。默认值为on。

Real: - 如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

Initialize 最常用的用途是初始化 UserObject 内部的值。设置初始值的另一种方法是使用大多数数据常数上提供的 Default Value 控制端。

可以为Default Value, Reset, Enable Editing, Disable Editing, MaxValue, MinValue和Detents 添加控制输入：

Default Value 输入可以以程序化方式改变当前值。这一输入要求一个实数标量值。

Reset输入可以以程序化方式把值设为零。忽略 Reset 输入上的实际数据。

Enable Editing和Disable Editing输入允许以程序化方式控制能否在open view中改变当前值、最小值和最大值。

MaxValue和MinValue输入允许以程序化方式设置最小值和最大值字段。这些输入要求实数标量值。

Detents输入以程序化方式设置定位器值。

位置

Data [image] Continuous [image] Real64 Knob

另请参阅

Complex, Selection Control, Int32, Int32 Slider, Int32 Knob, PComplex, Real64, Real64 Slider, Text, Toggle Control和对象菜单

使用数据滑尺和旋钮


Real64 Slider

输出滑尺Real64值的对象。

用途

使用Real64 Slider输入值。Real64 Slider特别适合用于面板上。

Open View参数

open view显示滑尺值、最小值、最大值和滑尺控制字段。

Properties

Orientation - 设置怎样显示Slider。

 ShowDigitalDisplay - 如果这一属性为True，那么会在对象open view底部的编辑字段中显示滑尺的当前值。在修改这个值时，滑尺的位置会发生变化。默认值为True。

ShowTics - 控制标度的tic号和标注的可视能力。默认值为True。

 Logarithmic - 在这一属性为True时，标度从线性变成对数。默认值为False。在打开时，Detents变成Steps/Decade。

 LabelSpacing: - 控制标度值中是否标注tic号。默认值为Every Other Tic。

 Detents或Steps/Decade: - 在线性标度上，Detents设置Slider提供的各个值之间的距离。在对数标度上，Steps/Decade设置Slider每10 Hz内提供的步长数量。如果输入其它值，那么它们会舍入到最近的定位器。Detents (线性标度)的默认值为1m。Steps/Decade (对数标度)的默认值为1.0。

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

 AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

InitialValue - 指定要设置的值。默认值为0。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

NumberFormat：

Global Format - 使用默认格式。默认值为on。

Real: - 如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项包括Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

Initialize 最常用的用途是初始化 UserObject 内部的值。设置初始值的另一种方法是使用 Default Value 控制端。

可以为Default Value, Reset, Enable Editing, Disable Editing, MaxValue, MinValue和Detents 添加控制输入：

Default Value 输入可以以程序化方式改变当前值。这一输入要求一个实数标量值。

Reset输入可以以程序化方式把值设为零。忽略 Reset 输入上的实际数据。

Enable Editing和Disable Editing输入允许以程序化方式控制能否在open view中改变当前值、最小值和最大值。

The MaxValue和MinValue输入允许以程序化方式设置最小值和最大值字段。这些输入要求一个实数标量值。

Detents输入以程序化方式设置定位器值。

位置

Data [image] Continuous [image] Real64 Slider

另请参阅

Complex, Selection Control, Int32, Int32 Knob, Int32 Slider, PComplex, Real64, Real64 Knob, Text, Toggle Control和对象菜单

使用数据滑尺和旋钮


Record Constant

输出Record数据类型、标量或1D Array形状的常数的对象。

用途

使用Record Constant对象定义和构建Record常数，或以互动方式编辑一条现有记录或由记录组成的数组。

Open View参数

在open view中，记录中的每个字段有一个Field name按钮和一个Value按钮 (或输入字段)。(在默认情况下，Field name按钮A和B分别与Value字段"Text field"和"1.25"对应。) 如果记录DataShape是Array 1D，那么在数组(0, 1, 等等)中索引的open view中有一个额外的字段。为步进通过数组值，提供了First, Prev, Next和Last按钮。

Field name -- 在按这个按钮时，弹出一个对话框，允许用户重命名记录字段及改变其类型和形状。如果试图把字段重命名成现有的字段名称，那么会发生错误。字段名称不分大小写(小写和大写一样)。在改变数据类型时，VEE会试图根据数据类型强制转换规则，把现有数据强制变成新的数据类型。

Value -- 允许编辑字段中的值。如果字段是数据类型不同于Enum的标量容器，那么Value是一个输入字段。也就是说，可以点击字段，输入所需的值。如果字段是一个Enum或Array 1D容器，那么Value字段是一个按钮，会调出一个对话框，允许选择值。如果字段是一个两维或多维数组，那么可能不能编辑值。

对象菜单

Add Record -- 在记录数组末尾添加一条记录。新记录是数组中最后记录的拷贝。(这个菜单选项对记录标量没有激活。)

Insert Record -- 在目前正在查看的记录数组位置插入一条记录。新记录是正在查看的记录的拷贝。(这个菜单选项对记录标量没有激活。)

Delete Record -- 从数组中删除目前正在查看的记录。(这个菜单选项对记录标量没有激活。此外，对记录数组，只有在数组中有一条以上的记录时，这个选项才会激活。)

Add Field -- 在字段列表末尾的记录中添加一个新字段。对话框允许定义新字段的名称、类型和形状。

Insert Field -- 在指定位置在记录中插入一条新记录。对话框允许定义新字段的名称、类型和维度。第二个对话框允许定义插入点。

Delete Field -- 允许删除记录字段。对话框将列出可以删除的字段。只有在记录有一个以上的字段时，才能使用这个选项。

属性

DataShape - 使用这个对象设置要输出的值的初始数据形状。可能的值是标量和Array 1D。

 ArraySize: - 在选择DataShape 1D Array时，Size设置数组的长度。

 ArraySizeFixed - 在这一属性为True时，数组不能添加或删除线。只有在选中DataShape 1D Array时才能使用这一选项。

 Schema Fixed - 在这一属性为True时，记录的格式("模式")是固定的，不可以修改。在允许用户以互动方式在弹出面板上修改Record值时，可以使用这一字段。

NumberFormats:

Global Format - 使用默认格式。默认值为打开。

Integer: - 如果Global Format关闭，那么指定在这个对象上显示的整数的数字格式。选项有Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a)和Binary (如#B00101010)。默认值为Decimal。

Real: - 如果Global Format关闭，那么指定在这个对象上显示的实数的数字格式。选项有Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入允许以程序化方式改变当前值。这一输入要求一个值Record，其类型可以是Scalar或Array 1D。Constant会重新配置，以便与进入的数据形状相匹配。

Reset输入允许以程序化方式把值设为零。如果Constant配置为Array 1D，那么所有值都设为零。(数字字段变成零，Text字段变成空字符串。) 忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入允许以程序化方式控制能否在对象的open view中改变值。

Default Value端用来编辑大的记录数组(例如，使用From DataSet对象的"拉入"的记录数组)。只需把记录数组发送到Default Value端，为Record Constant设置初始值即可。然后可以查看及以互动方式编辑整个记录。可以改变数据值，还可以改变字段的类型、形状和映射关系(除非字段本身是一条记录)。一旦已经编辑了记录，它可以输出到一个新的数据集或文件中(使用To DataSet或To File)。Record Constant对象不允许编辑本身是记录的字段 -- 它只允许查看字段及其数据。

注意Record Constant对象不允许创建由记录组成的记录。也就是说，Record Constant不允许添加是记录的字段。但是，所有其它VEE记录对象(如Build Record和Set Field)则允许进行这一操作。允许进行递归，直到可用的用户内存极限。也就是说，记录可以有一个字段，这个字段是一个记录，记录内部又有一个记录字段，依此类推。记录容器的形状只能是标量或一维数组。

位置

Data [image] Constant [image] Record

另请参阅

Build Record, From DataSet, Merge Record, Set Field, To DataSet和UnBuild Record。

创建记录常数


Remove

从给定字符串中删除指定的子字符串。

位置

System [image] String [image] Remove


Repeat

一个菜单项。

用途

使用Repeat存取下述迭代符和迭代控制对象：

For Count

For Range

For Log Range

Until Break

On Cycle

Next

Break

备注

可以嵌套迭代符。

持续执行迭代符提供主机的子线程，直到发生下面其中一种情况：

所有对象已经运行。子线程迭代已经完成。

Break对象已经运行。子线程被去活，序列输出端被激活。

Next对象经运行。子线程被去活，迭代计数器递增。

在迭代子线程结束时，序列输出端被激活。

位置

Flow [image] Repeat

另请参阅

Break, For Count, For Range, For Log Range, Next, On Cycle, 和Until Break。

循环部分VEE程序


Replace

用另一个对象替换这个对象及其连接。

用途

使用Replace替换一个对象，同时保持连接。

Replace把被替换的对象拷贝放在Paste缓冲器中。

备注

每次Replace会用原始对象覆盖Paste缓冲器以前的内容。

从上到下连接各个端。如果连接到原始对象上的线数多于新对象上的端数，那么会删除多出的线。如果连接到原始对象的线数少于新对象上的端数，那么新对象上最底下的端不连接。

Replace只在一个上下文内部工作。例如，为Replace UserObject中的对象，先把替换对象放在UserObject上下文中。

除非对象被连接到一个或多个对象中，否则Replace不能使用。

位置

在每个对象菜单上 [image] Replace

另请参阅

对象菜单, Cut (对象菜单), Copy和Paste。


Replace (System Menu)

Replace

用提供的文字替换给定字符串中的子字符串。

位置

System [image] String [image] Replace


Restore (Object Menu)

Restore (对象菜单)

把对象恢复到Open View中。

用途

使用Restore显示对象的Open View。

备注

可以从所有对象的图标视图中使用Restore。

从最大化的UserObject中，Restore将把Open View调整为非最大化尺寸。

快捷方式

为恢复对象，双击图标。

位置

在对象菜单上 [image] Restore

另请参阅

Minimize (对象菜单)。


Run/Resume

在程序暂停后，使所有暂停的线程继续运行。

用途

在程序暂停后，使用Run/Resume恢复程序执行。如果按Pause按钮、如果达到断点或如果使用Step函数，那么程序会暂停。

Run/Resume主要用来继续在断点之间继续执行，通常与其它调试工具一起使用。

备注

工具栏上的Run/Resume按钮与Run按钮相同。如果按Stop，那么不能使用Run/Resume。

快捷方式

按CTRL + G键或F5功能键，将激活Run/Resume。

位置

Debug [image] Run/Resume

另请参阅

Pause, Run, Start, Step Into, Step Over, Step Out, Stop, 和切换断点。

逐步通过程序


Run

開始執行程序中的所有線程。

用途

使用Run開始執行程序。如果在主工作區的線程上使用Start對象，那么從這些對象開始執行程序。

在選擇Run時，VEE PreRun所有線程，清除數据，檢查反饋。如果默認首選項中的Execution Mode設為VEE 4或更高版本，VEE會預測對象執行順序，确定哪些數据類型在某些線上流動，為每個對象生成匯編的代碼。

備注

如果在程序中有多個線程，且希望只運行其中一個線程，那么把Start對象連接到該線程上。在希望運行的線程上按Start對象。

快捷方式

按CTRL+G或F5運行程序。

位置

Debug [image] Run

另請參閱

Pause, Run/Resume, Start, Step Into, Step Over, Step Out,和Stop。

啟動VEE程序


Sample & Hold

存储收到的最新数据容器的对象。激活XEQ端会输出存储的容器。

用途

使用Sample & Hold捕获XEQ激活时输入端上最后出现的数据。

范例

使用Sample & Hold，保存If/Then/Else或 Conditional流程对象的后续线程段中的对象(其也位于迭代子线程中)生成的数据。

备注

一般不需要Sample & Hold，除非一个线程中同时存在迭代和流程分支。在默认状态下，对象通常会在输入端保留收到的最新数据容器。

Sample & Hold只保存到达InData 输入的最新数据容器。在新数据到达时，它覆盖现有数据。

如果连接了Sequence In端，那么在接受数据容器，替换存储的现有数据前，必须同时激活InData输入和Sequence In端。

Sample & Hold在XEQ端激活时运行。在Sequence Out端激活前会尽可能远地传播。

PreRun和Activate时清除Sample & Hold的内容。如果激活XEQ时没有存储数据，那么会生成错误信息。

由于Sample & Hold上要求XEQ，因此不能删除它或添加另一个XEQ端。

如果没有新数据到达，多个XEQ激活中的每个XEQ激活会重新发送存储的最新数据。

位置

Flow [image] Sample & Hold

另请参阅

Repeat, If/Then/Else, Conditional, UserObject, Properties (对象)和对象菜单


Save

把工作区中的程序复制到以前指定的文件名中。

用途

定期使用Save，把程序写入文件中。

警告

以Agilent VEE Pro 8.0或更高格式保存的文件可能不能检索到较早版本的VEE中。

备注

Save把程序写入Save As或Open中指定的文件名中。如果从New工作区中创建一个程序，没有完成Save As，那么Save会提示您一个文件名称。在写入程序时，指针会变成铅笔。

VEE允许在程序文件中保存颜色和字体(由默认首选项定义)。Save File对话框中新增了一个复选框Save colors and fonts with program。

VEE允许把I/O配置信息嵌入到程序本身中。为能够嵌入配置信息，在Save File对话框中已经新增了一个复选框Save I/O configuration with program。如需与保存I/O配置有关的更多信息，请参阅Instrument Manager。

Save在覆盖文件时不要求确认。

保存文件可能会影响其兼容能力。例如，检索到第6版中并保存的第5版文件不再能够兼容第5版。

快捷方式

按CTRL+S保存程序。

位置

File [image] Save

另请参阅

Merge, Open, Save As和Save Objects。


Save Documentation

创建一个文本文件，其中包含当前程序的描述。

用途

使用Save Documentation获得程序列表，以进行存档。来自Save Documentation的输出文件包括下述信息：

源文件名。

存档日期。

VEE的当前版本号。

保存文件版本。

系统首选项(颜色和字体除外)。

对象名称和类型。

对象的Open View信息(如Constant值或处理)。

从Description中输入的对象描述文本。

备注

Save Documentation替换以前修订版VEE中存在的veedoc辅助工具。

Save Documentation文件中不包括Do, Junction和Gate对象，除非它们已经从Description中输入了描述文本。

为Save Documentation文件中每个对象指配的编号与使用Print All时对象旁边打印的编号相对应。

由于在一行上打印常数数据，因此不打印数组和记录，以便能够使用常用的文字处理程序读取文件。

Save Documentation不保存颜色和字体信息或I/O配置。

位置

File [image] Save Documentation

另请参阅

默认首选项, Print Program, Save, 和Save As。

存档程序


Save Objects

把选定的对象复制到某个文件中。

用途

使用Save Objects为一个对象集指定一个文件名，把这些对象写入该文件中。Save Objects一般用来把一组对象保存到其它程序包括的一个常用函数库中。

备注

使用Save Objects从程序中复制用于其它程序的对象集。Save Objects允许构建一个由您自己的函数组成的库。在写入对象时，指针变成铅笔。

如果您试图覆盖现有文件，系统会要求确认该操作。

Save Objects不保存颜色和字体信息或I/O配置。

位置

File [image] Save Objects

另请参阅

Merge, Open, Save和Select All.

创建UserObjects库

保护UserObject安全


Send to Back (Object Menu)

Send to Back

把一个对象发送到看得见的平面的背面。

用途

Send to Back是Panel上的一个对象菜单选项，把一个对象放在看得见的平面的后台中，改变对象的z顺序。

另请参阅

Bring to Front (对象菜单)


Selection Control

从用户自定义的列表中输出枚举值的对象。Selection Control对象有各种显示格式，但这些格式的工作方式相同。

用途

使用Selection Control对象，设置枚举常数或获得在可以接受的选项中选择的用户输入。列表中的第一项指配普通位置0；列表中的第n项指配普通位置n-1。

对象菜单

Edit Enum Values - 允许在枚举的选项列表中添加有效选项，或编辑现有的选项。添加一个选项，然后按Tab键，移动到列表中的下一项。按 Shift+Tab，可以在列表中向回向上移动。

属性

Format属性: - 指明Selection Control对象的外观及选择选项的方法。默认格式是从菜单中选择任何对象。

Radio Buttons - 显示所有选项。在按选项旁边的单选按钮时，进行选择。

Cyclic Button - 在点击按钮字段时，循环出现各个选项。在有两个选项时，如On/Off或Stop/Go，或在由另一个按钮确认选项的对话框中，最好使用这一选项。

List - 如果不能一次显示所有选项，那么在列表框中显示多个选项。在点击选项时，进行选择。

Drop-Down List - 在按字段右面的箭头时，在下拉的列表框中显示选项。在点击选项时，进行选择。

Pop-Up List - 在按按钮字段时，在显示的对话框的列表框中显示枚举的选项。在点击选项及按OK时，进行选择。

Slider List - 枚举的选项在滑尺上作为三叉标签显示。在点击滑尺按钮或标签时，进行选择。

Execution 组：

Wait for Input - 在选中这个复选框时，只有在对象值变化时对象才会操作。在没有选中这个复选框时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为关闭。

Auto Execute - 在选中这个复选框时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略Auto Execute。默认值为关闭。

FormatSliderLayout 属性：

Horizontal | Vertical - 设置滑尺显示的方向。只在Format设置为滑尺列表时有效。

Initialization 类别：

Initial Value - 指定要设置的值。默认值是列表中的第一个选项。

Initialize At PreRun - 在选中这个复选框时，在PreRun时设置Initial Value。默认值为关闭。

Initialize At Activate - 在选中这个复选框时，在Activate时设置Initial Value。默认值为关闭。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为Default Value, Reset, Enable Editing, Disable Editing和Enum Values添加控制输入：

Default Value输入可以以程序化方式改变当前值。这一输入要求一个Text Scalar值 (或可以转换成Text Scalar的任何数据，包括Enum)。这个值必须与其中一个可能的Enum值匹配(区分大小写)。

Reset输入允许以程序化方式把当前值设置为列表中的第一个值(0或普通值)。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。

Enum Values输入允许以程序化方式为Selection Control设置可能的取值列表。这个输入要求Enum、Text Array 1D或可以转换成Text Array的任何数据。

对许多对象，Enum容器自动转换成Text，包括Collector, Concatenator, Sliding Collector和大多数Formula对象。

为获得选定值的普通值，把一条线连接到Ordinal输出上，而不是选择的字符串上，或者使用ordinal()。

范例

为作为用户面板上的提示使用Selection Control，把对象的名字变成提示，如"Choose the type of test:"。

位置

Data [image] Selection Control

另请参阅

Complex, Constant, Coord, Date/Time, UInt8, Int16, Int32, PComplex, Real32, Real64, Text, Toggle Control和List Box。

ordinal(x)

使用数据选择对象


Send Mail

这个功能强大的对象允许发送邮件，其前提条件是需要有一个SMTP服务器地址。其余要求则是标准电子邮件功能：收件人, 发件人, 主题和正文。

位置

System [image] Send Mail


Service Manager

Service Manager是使用Remote Functions的前提条件。它管理着在远程主计算机上运行的"服务"与在本地主计算机上运行的"客户端"之间的通信。在发起使用远程函数前，必须先在远程主机系统上启动Service Manager。

在采用Microsoft XP SP2的系统上运行Service Manager时，该操作系统新增的防火墙功能可能会导致问题。在第一次运行时，Service Manager可能会被封锁。如果发生这种问题，您会收到安全警报。选择Unblock this program, despite the security risk.，点击OK。

另请参阅

Remote Functions


Set File Creation Time

设置给定文件的文件创建时间。

位置

System [image] File [image] Set File Creation Time


Set Last File Access Time

设置给定文件最后一次文件访问时间。

位置

System [image] File [image] Set Last File Access Time


Set Mappings

为数组指配映射关系的一个对象。

用途

使用Set Mappings以线性方式或对数方式把数组的一个或多个维度映射到一个实数值范围上。

Open View参数

Num Dimensions - 输入数组中的维数。Num Dimensions必须是一个整数。最小值为1，最大值为10，默认值为1。改变Num Dimensions的值会改变设置Mapping, From和To参数使用的行数，每个维度一行。

Mapping - 对每个维度为Linear或Log。默认值为Linear。

From - 每个维度映射范围(含)的下限。

To - 每个维度映射范围(含)的上限。

可以作为数据输入添加From和To。

备注

如果Waveform或Spectrum是输入，那么其要素重新映射到规范中。Waveform不支持对数映射。

其点数与取样间隔相同。每个点位于取样间隔的开头。

Set Mappings不支持Coord数组作为输入，因为Coord数组一直进行明确映射。

XY显示画面中对Autoscale和各种数学函数使用数组映射。

From和To必须不同。

Num Dimensions字段值必须与输入数组的维数相匹配。

位置

Data [image] Access Array [image] Set Mappings

另请参阅

Allocate Array, Collector, Get Mappings, Line Probe, Sliding Collector和 Properties (对象)


Set Values

允许改变数组容器要素的一个Formula对象。

用途

使用Set Values修改任何类型和大小的数组。这个对象是一个Formula对象，预先带有一个可以改变数组要素的表达式。

可以把多个容器连接到Set Values对象的输入上：要改变的数组，要添加的标量数据，以及指定放置标量数据的数组位置的索引。

为希望替换的数组和要素索引输入新的值。在所有变化完成时，对象会输出修改后的数组及变化后的各个要素。

Open View参数

Expression input field - 这个输入字段允许直接改变数组的要素。表达式左侧允许使用Formula数学语法的子集，允许指定希望改变的数组的要素。它支持A[2]子数组语法，指定要改变的特定数组要素。

备注

所有数组都基于零；所有数组指数都基于零。

如果想在开始时创建数组，使用Allocate Array [image] 对象。

在数组中插入的值的类型必须与数组相同，或可以晋级到相同的类型。

位置

Data [image] Access Array [image] Set Values

另请参阅

Allocate Array, Build Data, Collector, Formula , Get Values, ramp (numElem, from,thru), Set Mappings和Sliding Collector.

使用赋值运算


Set Variable

设置变量数据值的对象。

用途

使用Set Variable对象设置变量(按名称)的数据容器(类型、形状和值)。然后这个变量可以按名称用于VEE程序的其它部分。

在一个程序上下文中创建的未声明全局变量(使用Set Variable创建)可以作为程序另一个上下文中的数据使用。例如，程序根上下文中的Set Variable可以创建一个未声明全局变量，然后可以通过在UserObject中包括Get Variable，可以作为数据使用。这特别适合程序中包含UserObjects的多个嵌套层的情况。

使用Set Variable设置的变量也可以按名称用于下述设备的表达式字段中：Formula, If/Then/Else, Get Values, Get Field, Set Field, From DataSet及在处理中使用表达式的所有设备，包括To File, From File, Direct I/O, From Stdin, To/From Named Pipes和Sequencer。

Open View参数

Open View为变量名称显示一个字段。名称不分大小写(可以使用大写字母或小写字母)。因此，globalA与GLOBALa是相同的变量。可以作为控制输入添加名称字段。

备注

为避免意想不到的结果，程序必须保证在Get Variable对象 (或在表达式中包括变量名称的对象) 执行前使用Set Variable设置变量。一般来说，保证这一点的最佳方式是把Set Variable对象的序列输出端连接到Get Variable对象的序列输入端，或连接到使用变量的其它对象。然而，有时不需要连接序列输入端。如需进一步信息，请参阅VEE程序Help菜单中Contents and Index下的Tell Me About... Variables。

如果启动Delete Variables at PreRun(默认值)，那么在程序执行前会删除所有变量。如果关闭Delete Variables at PreRun，那么将不会删除变量，必须认真编程，避免传播无效数据。

全局变量是真正的全局变量，因为它们不是在UserObject级定义的。在程序的一个上下文中定义的全局变量可以用于程序内任何其它上下文中。例如，可以在程序的根上下文中，使用Set Variable对象定义一个全局变量，然后包括Get Variable，在UserObject或UserFunction中获得该全局变量。但是，必需在整个程序中避免名称冲突：

如果两个或多个Set Variable对象试图设置同一个变量(使用相同的名称)，那么在每次执行Set Variable时将覆盖当前值。如果您不知道名字重复，这可能会导致意想不到的行为。

如果一个数据端变量的名称与一个变量相同，那么数据端变量优先。

如需进一步信息，请参阅VEE程序Help菜单中Contents and Index下的Tell Me About... Variables。

Set Variable不能设置作为数组或记录的部分变量。如果想使用globAry[2] = 3操纵数组或使用globRec.field = 2操纵记录，应使用Assignment Formula输入这些表达式。

Formula中的Assignment与Set Variable差异非常小。Set Variable可以创建未声明变量，初始化声明变量，修改所有变量。Assignment Formula不能创建未声明变量。此外，Set Variable不能修改部分变量，而Assignment则能够修改部分变量，如globalAry[1] = 2。

在为ActiveX对象设置变量时，最好使用Assignment Formula。如果全局变量g_cells声明及初始化为Microsoft Excel工作表的一个单元格，那么Formula 中的Assignment g_cells = 2实际上执行g_cells上设置的默认属性。其效果与g_cells.item = 2相同，会把取值2放到Excel的该单元格中。这种方法作为指向该单元格的指针维护g_cells。如果使用Set Variabl，实际上会覆盖全局变量，以使g_cells是一个整数，而不是指向Excel中的单元格的指针。

位置

Data [image] Variable [image] Set Variable

另请参阅

Assignment, 默认首选项, Delete Variable, Get Variable, View Variables, 和 Properties (对象)

使用赋值操作

创建变量


Shift Register

输出以前输入值的对象。

用途

使用Shift Register存取以前的输入值。

备注

在Shift Register中添加输出，存取以前的值。

Shift Register在开始时把所有输出都设为零。每次激活对象时，来自输入的数据被复制到"当前"输出端。以前位于当前输出中的数据被移动到1 Prev输出。以前执行的数据下移输出端，直到最后输出端。

还可以添加额外的输出，这样用户可以从"n"个以前执行的线程或程序中存取数据。从Properties窗口中关闭Clear at PreRun和Clear at Activate，在后续程序执行中保留数据。

位置

Device [image] Shift Register

另请参阅

Logging AlphaNumeric, Sliding Collector,和Properties (对象)


Show Config (Object Menu)

Show Config (对象菜单)

出现一个对话框，显示仪器驱程面板、组件驱程或直接I/O对象的I/O配置。

用途

从仪器驱程面板、组件驱程或直接I/O对象的对象菜单中，选择Show Config，查看使用I/O [image] Instrument Manager指定的配置。

为改变任何配置参数，使用I/O [image] Instrument Manager。注意，任何变化都会影响使用该仪器及Direct I/O的所有其它对象。为改变Direct I/O对象中的设备，编辑名称字段，选择一台新设备。注意Direct I/O对象中的处理可能不兼容新设备。

位置

在仪器驱程面板、组件驱程或直接I/O对象上：

从对象菜单中 [image] Show Config

另请参阅

Instrument Manager。


Show Data Flow

显示数据通过程序所采取的路由。

用途

使用Show Data Flow作为调试工具，显示输入端和输出端之间的数据流程。它使用小型正方形标尺跟踪数据沿着线的传播流程。即使零数据也以这种方式显示。

在设置Show Data Flow时，菜单选项在左面会有一个对号。

备注

Show Data Flow通常与Show Execution Flow一起使用。这些调试工具将降低程序执行速度。

通过选择File [image] Default Preferences，可以改变标尺移动的速度。在Default Preferences对话框中，在Debug组中，设置Data Flow Rate。

位置

Debug [image] Show Data Flow

另请参阅

Line Probe, 默认首选项, Profiler, Show Execution Flow, Step Into, Step Over, Step Out, 和切换断点。

查看数据流程和程序执行


Show Execution Flow

高亮度显示目前正在执行的对象。

用途

使用Show Execution Flow作为调试工具，显示目前正在运行的对象。在对象周围会出现一个高亮度显示的彩色边框(默认值是浅绿色)，并一直保持到运行结束。目前执行的处理也将高亮度显示在包括处理列表的对象中，如Direct I/O, Sequencer, To File, From File等等。

在Show Execution Flow启动时，菜单选项在左面有一个对号。

备注

Show Execution Flow通常与Show Data Flow一起使用。这些调试工具将降低程序执行速度。

Show Execution Flow还高亮度显示已经执行的对象。为在暂停或错误后在目前打开的窗口中查看哪些对象已经执行，点击Show Execution Flow。

位置

Debug [image] Show Execution Flow

位置

Line Probe, Profiler, Show Data Flow, Step Into, Step Over, Step Out, 和切换断点。

查看数据流程和程序执行


Sliding Collector

输出Array 1D的对象。

用途

使用Sliding Collector，从标量输入数据中创建Array 1D。

对象菜单

Clear - 清除Sliding Collector的内容。

Open View参数

Array Size - 输出数组中的要素数量。Array Size可以是一个数据输入。默认值为10。

Trigger Every - 在数组输出前输入端必须激活的次数。默认值是10。

可以从Open View或从数据输入端输入这两个参数。参数必须是整数。

在数据放到数组中前，Enum输入被转换成Text类型。

备注

通过自动排序通过数组索引，Sliding Collector构建一个Array 1D。一般来说，Array Size和Trigger Every的大小相同。

输出数组一直是长Array Size的Array 1D。输出数组的类型由Clear后面的第一个输入数据确定。

如果Trigger Every小于Array Size，那么 Sliding Collector会生成直接输出。例如，如果Array Size是4，Trigger Every是2，那么Sliding Collector会在两个数据输入之后输出一个长4的数组。输出的前两个要素是数据要素输入；输出的后两个要素是0。

如果Trigger Every大于Array Size，那么将丢弃部分输入要素。例如，如果Array Size是2，Trigger Every是4，那么输出是一个长2的数组，其中包括最后两个数据。数据输入的前两个要素被丢弃。

位置

Data [image] Sliding Collector

另请参阅

Allocate Array, Collector, Concatenator, Get Values, Set Values, Properties (对象)和对象菜单

把数据采集到数组中


Specify Object Type

一個對話框，允許在為ActiveXAutomation對象、控件或a .NET對象聲明變量時指定可選的細節。

用途

使用Specify Object Type對話框，設置 Library和Class，在為ActiveX對象聲明變量時控制事件。也可以使用Specify Object Type對話框，在為.NET對象聲明變量時設置Assembly, Namespace和Type。在為ActiveX或.NET對象聲明變量前，必須先為VEE提供這些變量。對ActiveX對象，使用Device [image] ActiveX Automation References或ActiveX Control References?#12290;對.NET對象，使用Device [image] .NET Assembly References。

与所有其它變量一樣，為ActiveX對象聲明變量是可選的。但是，通過為ActiveX對象聲明變量，指定對象類型細節，VEE將自動進行類型檢查，以保証只為聲明變量指配指定的Library和Class。

聲明Automation對象變量實際上不會為您創建對象。對Automation對象，必須仍使用Formula表達式中的CreateObject函數，創建程序中使用的對象。下面的表達式提供了一個范例︰

Set Excel = CreateObject("Excel.Application")

類似的，聲明.NET對象變量實際上并不會為您創建對象。為創建.NET對象，必須仍使用Formula表達式中的CreateInstance函數，創建程序中使用的對象。下面的表達式提供了一個范例︰

Set hashtable = CreateInstance("mscorlib", "System.Collections.Hashtable");

對話框信息

ActiveX對象

Library: - 點擊這個區域，出現提供的ActiveX庫下拉菜單。在使用Device [image] ActiveX Automation References?#21644;ActiveX Control References?#36827;行選擇時，可以使用這個列表。

Class: - 點擊這個區域，出現提供的類下拉列表。列表中包含選擇的庫中包含的類。

Enable Events - 如果選擇的類包含事件，那么這個字段激活。如果想處理ActiveX對象在程序中生成的事件，點擊這個選項，出現一個對號。如果需要啟用這個選項，一定要創建一個事件處理器UserFunction (對象菜單 [image] Create Event Handler)。

OK - 一旦已經指定了對象類型，點擊OK，使Declare Variable對象中的選項生效。

.NET對象

Assembly: - 點擊這個區域，出現提供的.NET Assemblies下拉列表。在使用Device [image] .NET Assembly References?#36827;行選擇時，可以使用這個列表。

Namespace: - 點擊這個區域，出現提供的名字空間下拉列表。列表中包含選擇的匯編程序中包含的名字空間。

Type: - 點擊這個區域，出現提供的類型下拉列表。列表中包含選擇的名字空間中包含的類型。

備注

如果在聲明ActiveX對象變量時啟用了事件，那么Declare Variable對象會顯示Events: Enabled。必須創建一個事件處理器UserFunction。在使用Declare Variable對象菜單中的Create Event Handler?/font> 菜單選項聲明變量時，可以簡便地完成這一操作。

.NET不支持事件。

位置

Data [image] Variable [image] Declare Variable
(把Type設置成Object，設置Sub-Type，然后點擊Edit?/font>)

另請參閱

ActiveX Automation References , ActiveX Control References, Declare Variable.


Spectrum (Freq)

包含频域画面的一个菜单项。

用途

使用Spectrum (Freq)进入下面的频域画面：

Magnitude Spectrum

Phase Spectrum

Magnitude vs Phase (Polar)

Magnitude vs Phase (Smith)

备注

输入必须是Waveform, Spectrum或Coords数组。

如果Spectrum画面的输入是Waveform，那么它会通过快傅立叶变换(fft)自动变换成Spectrum。

位置

Display [image] Spectrum (Freq)

另请参阅

Magnitude Spectrum, Magnitude vs Phase, Phase Spectrum 和Waveform (Time).


Split

把一个字符串分成两段。例如，在字母i上划分单词ordinary，得到两个子字符串：ord 和nary。字母i被破坏。

位置

System [image] String [image] Split


Stack - Clear

清除堆栈中的所有项目。

位置

System [image] Collections [image] Stack [image] Clear


Stack - Count

计算堆栈中的项目数量。

位置

System [image] Collections [image] Stack [image] Count


Stack - Create

创建一个存储堆栈。

位置

System [image] Collections [image] Stack [image] Create


Stack - Enumerate

创建堆栈中的项目列表。

位置

System [image] Collections [image] Stack [image] Enumerate Items


Stack - Peek an Item

抽看堆栈上的一个项目。

位置

System [image] Collections [image] Stack [image] Peek Item


Stack - Pop an Item

从堆栈中弹出一个项目。

位置

System [image] Collections [image] Stack [image] Pop Item


Stack - Push Item

把一个项目推送到堆栈上。

位置

System [image] Collections [image] Stack [image] Push Item


Start

在按下其按钮时，开始执行线程的对象。

用途

在按下其按钮时，Start对象会开始执行其连接的线程，但对其它线程没有影响。(按Run会开始执行程序中的所有线程，而不管线程中是否有Start对象。)

备注

如果程序中包括一个以上的独立线程，那么可以使用Start发起一个线程，而不用运行其它线程。

在按Run或Start时，传播会从Start对象开始。如果一个线程上有一个以上的Start对象，那么传播会从每个Start上开始，只要传播规则允许，就会并行继续。

如果在UserObject内部按Start，那么UserObject会运行，但数据输出端不会激活；因此传播不会继续。

位置

Flow [image] Start

另请参阅

Raise Error, Exit Thread, Exit UserObject, Stop和Properties (对象)

启动VEE程序


Starts With

如果字符串开头是提供的子字符串，那么会返回布尔值真。

位置

System   [image] String [image] Starts With


Status Bar

View菜单上的一种切换功能，控制着VEE Status Bar的可视性。

用途

使用Status Bar打开或关闭VEE状态栏。在打开时，Status Bar菜单选项左面会出现一个对号。

Status Bar是位于VEE工作空间底部的信息框。Status Bar显示各种有用信息，包括：

显示文件加载进度和加载的文件名。

VEE下拉菜单上每个项目的描述文本。

VEE Toolbar上每个按钮的描述文本。

在VEE工作空间中定位对象时，显示临时信息，如X,Y坐标数据。它还为确定对象大小提供了对象Width和Height信息。

VEE程序执行模式的恒定可视状态。

VEE Profiler状态的恒定可视状态。

指明VEE程序是否已经被修改。

提供各种其它临时状态信息，如"File Saved"或"3 objects selected"等等。

位置

View [image] Status Bar

另请参阅

Toolbar


Step Into

一次运行一个基本对象，执行一个程序。

用途

使用Step Into调试程序。每次在选中时，Step Into运行一个基本对象。要执行的下一个对象有一个黄色边框(在默认情况下)。

在遇到一个UserObject或局部或导入的UserFunction时，VEE会把对象放在其细节视图中，执行每个对象。

备注

Step Into 不打开远程函数、内置函数或汇编的函数。Step Into将打开从Formula对象和Call对象中调用的UserFunctions，但不打开从处理对象中调用的UserFunctions。

只有在UserFunction或UserObject进行时间分片时，Step Into才能用于UserFunction或UserObject中。只有在从Call, Formula, If/Then/Else或Sequencer对象中调用时(仅从Function field中)，UserFunction 才进行时间分片。在从To File, To String或类似对象中调用时，或通过控制端提供公式时，UserFunction不进行时间分片。

在VEE 4及更高的执行模式中，只有在从不同的线程中调用时，UserObject才进行时间分片。

不能从有安全保护的程序中使用Step Into。

只有在第一次选择Step Into时才发生PreRun。

快捷方式

F11与Debug [image] Step Into对应。

位置

Debug [image] Step Into

另请参阅

Call Stack, Step Over, Step Out, 默认首选项, Pause, Run/Resume, Run, Show Data Flow, Show Execution Flow, Start, Stop,和切换断点。

逐步通过程序


Step Out

执行完当前UserObject或UserFunction，在下一个对象上暂停。

用途

使用Step Out调试程序。每次在选中时，Step Out运行一个基本对象。要执行的下一个对象有一个黄色边框(在默认情况下)。

如果执行位于UserObject或UserFunction中，VEE将执行完该UserObject或UserFunction中的所有对象，然后退出UserObject或UserFunction。

备注

不能从有安全保护的程序中使用Step Out。

在第一次选择Step Out时会发生PreRun。

快捷方式

Shift-F11与Debug [image] Step Out相对应。

位置

Debug [image] Step Out

另请参阅

Call Stack, Step Into, Step Over, Default Preferences, Pause, Run/Resume, Run, Show Data Flow, Show Execution Flow, Start, Stop和切换断点。

逐步通过程序


Step Over

一次运行一个基本对象，执行一个程序，而不打开UserObjects或UserFunctions。

用途

使用Step Over调试程序。每次在选中时，Step Over运行一个基本对象。要执行的下一个对象有一个黄色边框(在默认情况下)。

在遇到UserObject或UserFunction时，VEE会整个执行对象。

备注

不能从有安全保护的程序中使用Step Over。

在第一次选择Step Over时，会发生PreRun。

快捷方式

F10与Debug [image] Step Over相对应。

位置

Debug [image] Step Over

另请参阅

Call Stack, Step Into, Step Out, Default Preferences, Pause, Run/Resume, Run, Show Data Flow, Show Execution Flow, Start, Stop和切换断点。

逐步通过程序


Stop

停止程序中的所有线程。

用途

使用Stop停止程序执行。在选择Stop后，按Resume继续执行。

备注

在选择Stop时，程序进入"停止"状态，清除任何高亮度显示，关闭任何打开的文件和I/O通道。

位置

Debug [image] Stop

另请参阅

默认首选项, Pause, Run/Resume, Run, Step Into, Step Over, Step Out, Properties (对象), Stop (对象), 和Toggle Breakpoint。

逐步通过程序

停止VEE程序


Stop (Object)

Stop (对象)

停止执行程序的一个对象。

用途

使用Stop，暂停执行程序中的所有线程，返回一个错误代码。Stop通常用于针对某个条件执行测试以后。

打开视图参数

Exit Code - 一个数字，指明程序的状态。可以在凹进的矩形中输入Exit Code，或作为数据输入添加Exit Code。Exit Code是一个8位整数，输出到操作系统中；如果输出大于255，那么它是输出模数256 (256输出为0)。

如果使用-r选项运行VEE，Stop会退出VEE。

位置

Flow [image] Stop

另请参阅

Exit Thread, Exit UserObject, Raise Error, Start和Stop。

停止VEE程序


String - Add

在字符串集合中添加一个字符串。

位置

System [image] Collections [image] StringCollection [image] Add String


String Collection - Clear

清除给定集合中的所有字符串。

位置

System [image] Collections [image] StringCollection [image] Clear StringCollection


String Collection - Create

创建一个字符串项目集。

位置

System [image] Collections [image] StringCollection [image] Create


String - Contains String?

在某个字符串集合中搜索某个字符串值。

位置

System [image] Collections [image] StringCollection [image] Contains String?


String - Count

计算字符串集合中的字符串数量。

位置

System [image] Collections [image] StringCollection [image] Count


String - Get

从给定索引给定集合中获得一个字符串。

位置

System [image] Collections [image] StringCollection [image] Get String


String - Get All

从给定集合中获得所有字符串。

位置

System [image] Collections [image] StringCollection [image] Get All Strings


String - Remove

从字符串集合中删除一个字符串。

位置

System [image] Collections [image] StringCollection [image] Remove String


Set String

设置给定集合给定索引的字符串值。

位置

System [image] Collections [image] StringCollection [image] Set String


String Compare

比较两个字符串值。还可以检查大小写。

位置

System [image] String [image] Compare


Strip Chart

显示连续生成的数据的对象。

用途

使用Strip Chart显示连续生成的数据的最新历史。对每个y输入值，x值会以指定的Step步长递增。在新数据运行到显示画面右侧之外时，画面会自动滚动，显示最新数据。

Strip Chart保存发送它上面的所有数据，直到被删除，但在缓冲器容量设置为限定值时除外。

与其它图形画面不同，数组数据将追加到Strip Chart的末尾，而不是先清除轨迹。

Open View参数

下面是默认的Open View参数。其用途及其它参数的使用情况由对象菜单及Properties对话框中的选项控制 (对象菜单 [image] Properties)。

Y name - Y轴的名称。

Trace1 - 第一条轨迹的名称。

Step Size: - X轴上数据点之间的距离。

X name - X轴的名称。

对象菜单

Auto Scale [image] - 点击这些菜单项，立即把画面重新定标成显示整条轨迹。(可以添加为控制端）

Auto Scale - 自动定标两个轴。

Auto Scale X - 自动定标X轴。

Auto Scale Y - 自动定标Y轴。

Zoom [image] - 缩放显示画面。

In - 放大显示画面，只包含使用指针选定的矩形区域。在选择这一功能后，通过在图形区域上拖动，可以选择区域。这一操作使用?#27233;皮圈?#26694;确定信息外形。

Out 2|5|10|20|50|100X - 在相对于中心的X方向和Y方向上，以某个倍数扩大显示范围。

Clear Control [image] - 指明什么时候清除显示画面的参数。

Display - 清除显示的轨迹。这个参数可以添加为控制端。

Next Curve - 复位画面，显示一系列曲线中的下一个曲线 (画面下次运行时的数据)，而不会清除上一个曲线。在系列中每条新曲线前必须选择(或激活)Next Curve。可以作为控制输入添加这个参数。

Center Markers - 如果提供了标尺，那么把它们放到轨迹看得到的部分的中心。如果滚动画面，看不到标尺，可以使用这种功能。

Add Right Scale - 添加最多两个额外的Radius轴标度，允许多条轨迹有不同的标度范围。在添加适当的标度后，可以添加输入端 (对象菜单 [image] Add Terminal [image] Data Input)。然后使用 Properties对话框上的Traces和Scales栏设置其属性。

Print - 出现Print对话框。按OK将在选定的输出设备上打印或绘制设备的整个画面拷贝。可以作为控制输入添加Print。

属性

Name - 为显示画面指配一个变量值。通过输入名称，在打开时可以以程序化方式读取标尺值。变量是Object数据类型，是存在画面的上下文的局部变量。详情请参阅备注。

ClearAtPreRun - 在属性为True时，在PreRun时清除画面。默认值为True。

ClearAtActivate - 在属性为True时，在Activate时清除画面。默认值为True。

ShowTracesLegend - 在Open View中，控制轨迹名称和颜色的可视性。使用EditTracesAndScales控制轨迹图例的编辑按钮功能。默认值为True。

ShowScalesLegend - 在Open View中，控制标度名称的可视性。使用EditTracesAndScales控制标度图例的编辑按钮功能。默认值为True。

ShowScalesLabels - 在Open View中，控制标为标度轴的值的可视性。默认值为True。

 Show Scroll Bars - 在Open View中，控制X和Y标度上滚动条的可视性。默认值为True。

ShowAutoScaleButton - 在Open View中，控制Auto Scale按钮的可视性。默认值为False。

EnableEditTracesAndScales - 在Open View中，控制轨迹和标度属性的编辑按钮功能。在启用时，点击各个轨迹或标度名称，编辑其属性。默认值为True。使用ShowTracesLegend和ShowScalesLegend控制轨迹和标度名称的可视性。

GridType: - None - 不显示格线。

Markers Group: - 允许查找显示的曲线上某个数据点的确切值。如果在对数标度上绘制数据图，标尺上显示的值是线性数据点。

为把标尺移动到一条不同的轨迹上，进入Open View，点击画面底部附近标尺值左面的按钮。按钮顺序通过不同轨迹的不同线型和颜色。

NumMarkers - 图表上的标尺数。 None是默认值。

MarkerInterpolate - 在属性为True时，可以把标尺放在显示的数据点之间。通过线性内插计算显示的标尺值。默认值为False。

BufferSize - 指定内存中存储的点数。默认值为10000。

Display BackColor: - 允许从调色板中选择显示区域的颜色。当画面出现在细节视图和面板视图中时，可以选择不同的颜色。默认的Background颜色在Screen Element: Graph Background的Colors 栏Default Preferences中设置。

Scale Label组：

Text: - 允许从系统提供的字体列表中选择标度标记的字体。默认标度标记文本的字体在Screen Element: Graph Background的Fonts栏Default Preferences中设置。

Traces 组：（每条轨迹一个）

Name: - 在图形区域左面显示的轨迹名称及相应的输入端名称。

Scale: - 如果有多个Y标度，选择这条轨迹使用的Y标度。

Color: - 轨迹的颜色。每条新增的轨迹有一个与现有轨迹不同的颜色。第一条轨迹的默认值为yellow。

LineStyle: - 连接多个数据点的线的格式。默认值为continuous line。

PointStyle: - 标记每个数据点的符号。为显示没有连接的数据点，选择单点LineStyle格式及希望的PointStyle符号。默认值为dot。

Scale - 如果存在一个以上的Y标度，选择这个轨迹定标的标度。

Scales 属性： (每个X和Y标度一个，外加额外的Y标度)

Show Scale: - 如果有多个Y标度，那么这个选项(使用复选框)将指明在图形区域右面是否显示端点和每个新增的适当标度的轴。

Scale Name: - Open View中出现的标度名称。

Automatic Scaling: - 不能调节。默认值为off。可以作为控制输入添加Auto Scale。也可以使用General栏中的Show Auto Scale Button，或使用对象菜单中的Auto Scale调整显示画面。

Maximum: - 标度最大值。

Minimum: - 标度最小值。

Label Spacing: - 控制哪个标志标有标度值。X标度的默认值为Every Other Tic； Y标度的默认值为Every Major Tic。

Mapping: - y数据映射到显示画面的方式。映射可以是线性或对数。X轴不能调节。默认值为 Linear。

Log Cycles: -当Auto Scale被激活时显示的10的最大数量（从y最大值向下数）。当Mapping是Log时，只能使用Log Cycles。当轨迹在数据中包含一个大的动态范围时，使用Log Cycles。默认值为4。

Scale Color -任意背景栅格或tic号的颜色。默认值为Gray。

Step Size -X轴上数据点之间的距离。只适用于X轴线。默认值为1。

ScaleNumberFormat：（X标度和Y标度及任何额外Y标度出现的一个组）

Global Format -使用默认格式。默认值为on。

Real: -如果Global Format关闭，指定在这个对象上显示的实数的数字格式。选项包括：Fixed （如98.6000），Scientific （如9.8600E+01)，Engineering （如98.6000E0），Standard （如98.6），和Time Stamp（如Sat 01/Jan/1994 17:01:38）。默认值为Standard。

X和Y标尺值采用与其附在的标度相同的数字格式。X和Y的增量标尺值使用默认数字格式，除非使用Time Stamp格式。如果X标度上的标尺1和标尺2或Y标度上的两个标尺都使用Time Stamp格式，增量标尺值将使用Delta Time格式。

备注

输入必须是能够转化成Real64类型的Scalar或Array 1D。在输入到Strip Chart之前，必须?#25286;除?font face="Courier New">Complex，PComplex和Spectrum值。

为在Strip Chart上实现最佳的更新速度和最大的显示区域，复位某些Properties。把Set Grid Type设为None。在Layout区域中，除必须选项外，关闭所有其它选项。把Buffer Size设得尽可能小。设置X标度Maximum值，以便降低画面滚动频度。

使用Add Terminal [image] Data Input对象菜单选项添加轨迹，最多支持12条轨迹。

添加控制输入

可以添加一个Title控制输入端，把标题栏名称设置成指定的文本值。这可以程控打印画面时显示的标题。

可以添加一个Traces控制输入端。控制输入数据必须是由多个记录组成的数组(或如果只想控制一条轨迹，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为TraceNum的字段及一个整数值(1是第一条轨迹)。要求 TraceNum字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name

Pen

LineType

PointType

Name字段必须有一个文本值。Pen, LineType和PointType值必须是从0到n的整数，其中0不绘图，n是提供的选项数量。

可以添加一个Scales控制输入端，控制上面列出的标度参数。控制输入数据必须是由多个记录组成的数组(如果只想控制一个标度，那么可以是一个记录标量)。使用Record Constant或Build Record对象，创建由多个记录组成的数组；每个记录必须有下述字段：

一个名为Scale的Text字段，取值为X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略这个字段，会发生错误。

一个或多个下述字段：

Name - 在Open View中改变标度名称。必须是一个文本值。

Min - 设置X标度的最小值。必须是一个整数值或实数值。

Max - 设置X标度的最大值。必须是一个整数值或实数值。

Mapping - 必须有一个Linear或Log文本值。

AutoScale - 控制自动定标。必须有一个On或Off的文本值。

如需进一步信息，请参阅使用记录和使用DataSets。

以程序化方式设置和读取标尺值

可以以程序化方式获得和设置标尺值。为准备显示，打开Properties窗口。为Name输入一个值。Name值暗示声明Object变量是显示画面上下文的局部变量。然后，在Markers组中打开一个设置。VEE为标尺的X位置和Y位置指配下述属性，包括增量值。(Marker1指向下；Marker2指向上。)

Marker1X (作为Real64获得位置)

Marker1Y (作为Real64获得位置)

Marker2X (作为Real64获得位置)

Marker2Y (作为Real64获得位置)

MarkerDX (作为Real64获得位置)

MarkerDY (作为Real64获得位置)

Marker1 (作为Coord获得/设置位置)

Marker2 (作为Coord获得/设置位置)

可以使用Marker1和Marker2属性，读取当前标尺位置，或把标尺移动到新位置。所有其它标尺属性都是只读的。如果试图把标尺移动到不在轨迹的坐标上，标尺会"咬"住轨迹上最近的点上。

在程序中，在Formula对象中输入一个或多个表达式，设置或读取标尺值。每个表达式必须包含显示画面Name和相关的标尺属性。标尺属性名称不分大小写。如果显示画面的Name是XY，同时打开Delta Markers，那么下述表达式将读取提供的所有标尺值，并作为Real64标量把它们指配给变量a到f：

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把显示画面Name指配给一个全局变量。在Formula对象中，在程序内添加一个赋值表达式，使用Declare Variable对象声明全局变量。例如，假设已经声明globalXY变量为全局变量，并把其Type设为Object，那么在存在显示画面的上下文中，在程序中添加下面的表达式：

Set globalXY = XY

可以从使用表达式的程序的另一个上下文中读取显示画面的标尺值，如：

a = globalXY.Marker1X

在开发程序时，您可能想包括一种方式暂停程序，以便在程序读取值之前手动重新定位标尺。暂停程序的方式之一是在显示画面的序列输出和Formula对象的序列输入之间添加一个Confirm (OK)按钮。您也可能想以程序化方式定位标尺。

位置

Display [image] Strip Chart

另请参阅

Complex Plane, 默认首选项, Magnitude Spectrum, Polar Plot, Waveform (Time), XY Trace和X vs Y Plot.

在显示画面中设置标尺, 获得和设置标尺属性


SubRecord

允许用户从一条记录中切掉大量字段的对象。

用途

使用SubRecord在Record输出端上输出原始记录的一个子集，并从记录中"切掉"指定的字段。要编辑的记录在Record输入端输入。输出记录中"包括"或"不包括"的字段列表在Fields输入端输入。

如果在open view中选择Include fields，输出记录只由Fields输入中的字段组成。

如果在open view中选择Exclude fields，输出记录由原始记录中的所有字段组成，但不包括 Fields输入中列出的字段。

Open View参数

Include fields -- (默认模式) 只使用其字段位于Fields数据输入端字段名称列表中的输入记录构建输出记录。这个选项与Exclude fields切换。

Exclude fields -- 只使用其字段没有位于Fields数据输入端字段名称列表中的输入记录构建输出记录。

备注

Fields输入端可以是由输出记录中包括/不包括的记录字段名称组成的文本数组。

如果试图包括/不包括的字段不在输入记录中，那么会发生错误。如果不包括记录的所有字段，那么会发送空输出信号。

注意UnBuild Record, SubRecord和Get Field对象之间的区别。

UnBuild Record对象为输入记录字段Name List和Type List提供输出。UnBuild Record对象的其它(可选)输出A, B等返回的结果与多个Get Field对象相同。

Get Field对象的工作方式与Formula对象的类似之处是它使用句点语法(A.B)构建记录。注意，Get Field允许使用A.B.C之类的表达式，用一个步骤拆除记录的记录。这一过程要求两个UnBuild Record对象。

SubRecord对象与UnBuild Record和Get Field的区别在于，其输出总是一条记录。SubRecord对象允许包括或不包括一条记录中的字段列表，形成一条子记录。

位置

Data [image] Access Record [image] SubRecord

另请参阅

Build Record, From DataSet, Get Field, Record Constant, Set Field, To DataSet, UnBuild Record和Properties (对象)


Subtract (System Menu)

Subtract

从另一个时间值中减去一个时间值。

位置

System [image] DateTime [image] Subtract


System Directory

检索主机系统的系统目录。

位置

System [image] Environment [image] System Directory


Tank

使用坦克图形内部的色条以图形方式显示Scalar数字值的对象。

用途

使用Tank在模拟标度上用坦克图形内部的色条及可选的数字字段显示一个数字值。

Open View

通过点击当前值，输入一个新值，可以在对象的open view上设置Tank的最小值和最大值。它自动计算和显示Tic号及其标签。最小值必须小于最大值。

还可以作为控制输入添加这些值。

属性

ClearAtPreRun - 在这一属性为True时，在PreRun时清除Tank的内容。默认值为True。

ClearAtActivate - 在这一属性为True时，在Activate时清除Tank的内容。默认值为True。

Orientation - 选择怎样显示Tank。 默认值为Vertical。

ShowDigitalDisplay - 在这一属性为True时，在对象Open View的底部会显示输入值的数字画面。如果没有选择复选框，不显示数字画面，对象运行速度会更快。默认值为True。

ShowTics - 控制是否显示标度的tic号和标签。默认值为True。

Logarithmic - 在启动时，把标度从线性变成对数。默认值为False。

LabelSpacing - 控制在哪个tic号上标上标度值。默认值为Every Other Tic。

HighColor - 指定最高范围使用的颜色 (即大于High Limit)。

High Limit - 定义最高范围的数字下限。这个值必须大于等于Low Limit。可以作为控制输入添加这个值，它会使该属性的编辑字段失效。

MidColor - 指定中间范围使用的颜色 (即小于等于High Limit，且大于Low Limit)。

Low Limit - 定义最低范围的数字上限。这个值必须小于等于High Limit。可以作为控制输入添加这个值，它会使该属性的编辑字段失效。

LowColor - 指定最低范围使用的颜色(即小于等于Low Limit)。

NumberFormat:

Global Format - 使用默认格式。默认值为on。

Real: - 如果Global Format关闭，那么为这个对象上显示的实数指定数字格式。选项包括 Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如Wed 01/Jan/2003 17:01:38)。默认值为Standard。

备注

输入数据必须是Scalar，并能够转换成Real64 (Complex, PComplex, Spectrum和Coord必须先"拆散"。)

Low Limit必须小于High Limit。

如果只想使用两个颜色范围，把Low Limit设置成等于High Limit。

如果只想使用一种颜色，把Low Color、 Mid Color和High Color设置成相同的颜色。

快捷方式

为迅速改变Tank的方向，只需把它调整到所需的形状。它会自动改变方向。

位置

Display [image] Indicator [image] Tank

另请参阅

AlphaNumeric, Color Alarm, Fill Bar, Logging AlphaNumeric, Meter, Thermometer和对象菜单

显示数据的模拟画面


Text

输出常数字符串Scalar或Array 1D的对象。

用途

使用Text设置字符串常数或请求用户输入。点击输入字段，输入一个值。

范例

为作为面板视图上的提示使用Text，把Text对象的名字变成提示，如 What is your name? 。用户在输入字段中填写请求的信息。

属性

DataShape - 设置这一对象输出的值的初始数据形状。

ArraySize: - 在选择1D Array时，ArraySize设置数组的长度。

 ArraySizeFixed - 在这一属性为True时，数组不能添加或删除行。只有在选择1D Array时才能使用这一选项。

 ShowArrayIndices - 在这一属性为True时，输入字段中的每一行都带有索引。只有在选择1D Array时才能使用这一选项。

 PasswordMasking - 在这一属性为True时，open view输入字段中的字段返回星号(*)。

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

 InitialValue - 指定要设置的值。默认值为 null string。

 InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

 InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入可以以程序化方式改变当前值。这一输入要求一个Complex值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与进入的数据形状相匹配。

Reset输入可以以程序化方式把值设为零。如果Constant配置为Array 1D，那么所有值都设为零。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。

在这个常数中没有换码符解释。输入内容会完全复现在输出端。

注意，InitialValue字段一直是一个标量，即使Text 配置成数组。

位置

Data [image] Constant [image] Text

另请参阅

Complex, Constant, Coord, Date/Time, UInt8, Int16, Int32, PComplex, Real32, Real64, Selection Control和Toggle Control。

使用数据常数


Thermometer

使用温度计图形内部的色条以图形方式显示Scalar数字值的对象。

用途

使用Thermometer在模拟标度上用温度计图形内部的色条及可选的数字字段显示一个数字值。

Open View

通过点击当前值，输入一个新值，可以在对象的open view上设置Thermometer的最小值和最大值。它自动计算和显示Tic号及其标签。最小值必须小于最大值。

还可以作为控制输入添加这些值。

属性

ClearAtPreRun - 在这一属性为True时，在PreRun时清除Thermometer 的内容。默认值为True。

 ClearAtActivate - 在这一属性为True时，在Activate时清除Thermometer 的内容。默认值为True。

Orientation - 选择显示Thermometer的方向。默认值为Vertical。

 ShowDigitalDisplay - 在这一属性为True时，在对象Open View的底部会显示输入值的数字画面。如果没有选择复选框，不显示数字画面，对象运行速度会更快。默认值为True。

ShowTics - 控制是否显示标度的tic号和标签。默认值为True。

Logarithmic - 在启动时，把标度从线性变成对数。默认值为False。

 LabelSpacing - 控制在哪个tic号上标上标度值。默认值为Every Other Tic。

HighColor - 指定最高范围使用的颜色 (即大于High Limit)。

 High Limit - 定义最高范围的数字下限。这个值必须大于等于Low Limit。可以作为控制输入添加这个值，它会使该属性的编辑字段失效。

 MidColor - 指定中间范围使用的颜色 (即小于等于High Limit，且大于Low Limit)。

 Low Limit - 定义最低范围的数字上限。这个值必须小于等于High Limit。可以作为控制输入添加这个值，它会使该属性的编辑字段失效。

 LowColor - 指定最低范围使用的颜色(即小于等于Low Limit)。

NumberFormat:

Global Format - 使用默认格式。默认值为on。

Real: - 如果Global Format关闭，那么为这个对象上显示的实数指定数字格式。选项包括 Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6)和Time Stamp (如Wed 01/Jan/2003 17:01:38)。 默认值为Standard。

备注

输入数据必须是Scalar，并能够转换成Real64 (Complex, PComplex, Spectrum和Coord必须先"拆散"。)

Low Limit必须小于High Limit。

如果只想使用两个颜色范围，把Low Limit设置成等于High Limit。

如果只想使用一种颜色，把Low Color、 Mid Color和High Color设置成相同的颜色。

快捷方式

为迅速改变Thermometer的方向，只需把它调整到所需的形状。它会自动改变方向。

位置

Display [image] Indicator [image] Thermometer

另请参阅

AlphaNumeric, Color Alarm, Fill Bar, Logging AlphaNumeric, Meter, Tank和对象菜单

显示数据的模拟画面


Tile Horizontally

管理VEE工作空间中的窗口的函数。

用途

使用Tile Horizontally把所有打开的没有最小化的窗口排列为非重叠的窗口。这些窗口将堆叠在另一个窗口的顶部。

位置

Window [image] Tile Horizontally

另请参阅

Cascade, Close All, Minimize All和Tile Vertically。


Tile Vertically

管理VEE工作空间中的窗口的函数。

用途

使用Tile Vertically把所有打开的没有最小化的窗口排列为非重叠的窗口。这些窗口将并列排列在VEE工作空间中。

位置

Window [image] Tile Vertically

另请参阅

Cascade, Close All, Minimize All和Tile Horizontally。


Timer

輸出頂部數据輸入端和底部數据輸入端激活時間之差(單位為秒)的對象。

用途

使用Timer測量兩個事件之間相差多少時間，如對象運行，在激活第一個輸入和第二個輸入時，會發生這种情況。如果第二個輸入在第一個輸入之前激活，那么第二個輸入上的容器被忽略，Timer對象不執行。

備注

時間用秒顯示。

在Windows上， 如果系統提供，Timer可以使用高分辨率計數器。

位置

Device [image] Timer

另請參閱

Date/Time, Do, Properties (對象)和 對象菜單


To

一個菜單項目。

用途

使用To存取作為I/O操作目的地的下述對象︰

To File

To DataSet

To Printer

To String

位置

I/O [image] To

另請參閱

From


To DataSet

允许用户把记录采集到一个文件中的对象。

用途

使用To DataSet把拥有相同模式定义的记录采集到一个文件中，以备日后检索。可以添加下述控制端：

File Name -- 这个控制端允许用户改变将写入的记录的文件名称。

Rewind -- 这个控制端"倒带"文件，以便能够使用全新的记录类型进行重写。其效果与选中Clear File At PreRun复选框时把第一条记录发送到文件中的效果相同。

Close -- 这个控制端关闭文件。

Open View参数

To DataSet: -- 点击名称字段，显示一个对话框，然后选择包含DataSet的文件名。

Clear File At PreRun -- 如果选中这个对话框，那么会在第一次执行To DataSet时(在收到第一条记录时)清除和重写整个DataSet。由于DataSet被完全擦除，可以发送拥有新模式定义的记录 -- 第一条记录确定新的模式定义。

备注

进入To DataSet文件的记录必须拥有相同的模式(数据形状和类型)。写入文件的第一条记录将定义所有后续记录都必须拥有的模式。

每次在使用一个输入(只允许一个输入)执行To DataSet对象时，新记录会追加到文件末尾。如果新记录是一个数组，那么会追加数组的每个记录要素。每个记录的模式(字段数量和每个字段名、类型和形状)必须匹配，但记录的形状(标量/数组)无关紧要。To DataSet对象将继续追加到文件中，直到激活一个Rewind控制输入，或选择Clear File At PreRun和发生PreRun。下次执行To DataSet对象时，它开始在开头写入文件，再次从第一个记录的模式开始。这一模式可能与文件中的模式不同。

位置

I/O [image] To [image] DataSet

另请参阅

Build Record, From DataSet, Record Constant, UnBuild Record, Properties (对象)和对象菜单

把数据写入文件


To File

使用事務語句把數据寫入文件的對象。

用途

使用To File輸出各种編碼和格式，允許靈活地輸出到文件中。每個文件保持一個指針，因此不同To File對象輸出的數据按對象運行的順序寫入到文件中。

To File操作︰

WRITE - 使用指定編碼和格式把數据寫入文件。

EXECUTE - 把文件的寫入指針重新定位到文件開頭，可以擦除(CLEAR)、也可以不擦除(REWIND)文件內容。在選擇Clear File at PreRun & Open時，只能使用EXECUTE REWIND。注意在VEE程序停止時，文件會自動關閉。但是，可以使用EXECUTE CLOSE事務，在程序執行過程中關閉文件。EXECUTE DELETE會刪除文件。

WAIT - 在執行下一個事務前等待指定的秒數。

To File編碼︰

TEXT - 把所有數据類型寫入到人可以閱讀的文件中，這些文件可以簡便地編輯或移植到其它應用軟件中。在寫入時，VEE數字數据自動轉換成文本。

BYTE - 把數字數据轉換成二進制整數，寫入最低有效字節。

CASE - 把一個枚舉的值或一個整數映射到一個字符串，寫入字符串。例如，可以使用CASE接受錯誤編號，寫入錯誤信息。

BINARY - 以特定机器二進制格式寫入所有數据類型。

BINBLOCK - 在帶有IEEE 488.2一定長度碼組包頭的二進制文件中寫入所有VEE數据類型。

CONTAINER - 以特定机器文本格式寫入所有數据類型。使用CONTAINER通過"To File"對象把數据直接導出到PV-WAVE中，執行可視數据分析。

Open View 參數

Clear at PreRun & Open - 擦除文件內容，把文件指針設置到文件開頭。在沒有選中复選框時，數据追加到文件末尾。

如果有多個To File對象指向同一個文件，那么多個复選框會連接起來，如果在一個位置改變對象，那么會改變所有复選框。

open view顯示要執行的事務列表。

對象菜單

Add Trans - 在列表末尾添加一個事務。

Insert Trans - 在目前高亮度顯示的事務前插入一個事務。

Cut Trans - 剪切(刪除)目前高亮度顯示的事務，但把它保存在事務"剪切和粘貼"緩沖器中。

Copy Trans - 把目前高亮度顯示的事務复制到事務"剪切和粘貼"緩沖器中。

Paste Trans - 粘貼以前"剪切"或"复制"的事務。

Print Trans - 打印詳細對話框，描述目前高亮度顯示的事務。

屬性

EolSequence - 指定在使用EOL ON的WRITE事務末尾發送的字符。這個字段中的項目必須包含用雙引號引起來的0個或多個ASCII字符。默認值是"\n"。

 ArraySeparator - 指定隔离WRITE TEXT事務編寫的數組要素使用的字符串。這個字段中的項目必須用雙引號引起來。

MultiFieldFormat: 為WRITE TEXT事務的多字段數据類型指定下面兩种格式化樣式。影響的數据類型有Coord, Complex, PComplex和Spectrum。

Data Only - 用逗號分隔每個多字段項目，但不使用圓括號括起這個組。复數2+2j將格式化2,2。

(...) Syntax - (默認) 用逗號分隔每個多字段項目，使用圓括號括起這個組。复數2+2j將格式化為(2,2)。

ArrayFormat group: 确定怎樣格式化多維數組。

Linear - 線性排列數組要素。

Block - (默認) 在每一行末尾使用EOL字符，排列兩維或多維模塊中的數組要素。

快捷方式

通過把光標放在輸入端或輸出端顯示區域上，然后按CTRL+A，可以迅速添加一個數据端。每按一下CTRL+A會額外添加一個數据端。

通過把光標放在端查看區域上，然后按CTRL+D，可以迅速刪除一個數据端。

為迅速插入一個事務，把光標放在事務上。按Insert鍵會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按Delete鍵。

為從"kill"緩沖器中粘貼一個事務，按CTRL+V。

為迅速移到下一個事務或上一個事務，分別按Up Arrow鍵或Down Arrow鍵。

位置

I/O [image] To [image] File

另請參閱

Formula, From File和對象菜單

把數据寫入文件


To/From DDE

通過事務与支持Dynamic Data Exchange (DDE)的Microsoft Windows應用程序交換數据的對象。

用途

DDE為希望實現流程間通信的編程人員提供了一個工具。

必須在To/From DDE中添加一個或多個事務。為此，點擊對象菜單中的Add Trans。

目前，.NET Framework的功能、文檔和支持已經全面的得多。

否則，ActiveX Automation可以更強健地滿足您的需求，對大多數服務器可以更好地編制文檔。如需与ActiveX有關的信息，參閱Help => Contents and Index => Tell Me About... => Active X。

Open View參數

Application - 支持DDE的Windows應用程序的名稱。(如Excel)

Topic - 數据种類的專用標識符。(如Sheet1)

此外，open view會顯示要執行的事務列表。

可以作為控制輸入添加Application和Topic字段。

對象菜單

Edit Trans - 編輯當前高亮度顯示的事務。

Add Trans - 在列表末尾添加一個事務。

Insert Trans - 在目前高亮度顯示的事務前插入一個事務。

Cut Trans - 剪切(刪除)目前高亮度顯示的事務，但把它保存在事務"剪切和粘貼"緩沖器中。

Copy Trans - 把目前高亮度顯示的事務复制到事務"剪切和粘貼"緩沖器中。

Paste Trans - 粘貼以前"剪切"或"复制"的事務。

Delete Trans - 刪除列表中高亮度顯示的事務。

Move Trans Up - 上移高亮度顯示的事務。

Move Trans Down - 下移高亮度顯示的事務。

Print Trans - 打印描述當前高亮度顯示的事務的詳細對話框。

屬性

EolSequence - 指定在使用EOL ON的WRITE事務結尾發送的字符。這個字段中的項目必須包含用雙引號引起的零或多個ASCII字符。默認值"\n"。

 ArraySeparator - 指定用來分隔WRITE TEXT事務編寫的數組要素的字符串。這個字段中的項目必須帶有雙引號。

MultiFieldFormat組: 為WRITE TEXT事務的多字段數据類型指定下面兩种格式化方式。影響的數据類型包括︰Coord, Complex, PComplex和Spectrum。

Data Only - 用逗號分隔每個多字段項目，不用括弧把組括起來。复數2+2j將格式化為2,2。

(...) Syntax - (默認值) 用逗號分隔每個多字段項目，使用括弧把組括起來。复數2+2j將格式化為(2,2)。

ArrayFormat組: 确定怎樣格式化多維數組。

Linear - 以線性方式排列數組。

Block - (默認值) 在每行結尾使用EOL字段以每個碼組兩個或多個維度排列數組要素。

備注

To/From DDE可以与支持Dynamic Data Exchange的Windows應用程序通信。但是，用戶負責确定從VEE到特定應用程序成功地進行DDE通信所需的專用協議。這是一种高級編程功能。

支持DDE的Windows應用程序可以作為客戶端、服務器或兩者操作。但是，VEE只提供了客戶端功能。

To/From DDE使用四种事務︰

READ(REQUEST) - 從DDE傳送中讀取數据。

WRITE(POKE) - 把數据寫入(插入)DDE傳送中。

EXECUTE - 把命令發送到VEE正在通信的DDE服務器，然后服務器會執行命令。

WAIT - 等待指定時間(單位為秒)。

To/From DDE作為函數的一部分啟動和結束DDE操作。不需要明确啟動和結束這些事務。

如需查看使用DDE的實例，請參閱与程序通信。

快捷方式

為迅速插入一個事務，把光標放在事務上。按Insert鍵會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按Delete鍵。

為從"kill"緩沖器中粘貼一個事務，按CTRL+V。

為迅速移到下一個事務或上一個事務，分別按Up Arrow鍵或Down Arrow鍵。

位置

I/O [image] To/From DDE

另請參閱

Formula, From, From File, To File, To, 對象菜單和編輯事務


To/From IVI-COM

使用調用IVI-COM驅程函數的事務語句，向儀器寫入數据及從儀器中讀取數据的對象。

用途

為正在使用的儀器下載和安裝IVI驅程。Instrument Manager內部有一條指向下載网站的鏈接。

如果想為儀器自動配置IVI-COM驅程，啟動Instrument Manager。在"Auto Discovery"中，點擊"Find Instruments"。選擇想要配置驅程的儀器，然后在"Auto Discovery"中，點擊"Configure Drivers"。VEE將試圖為這台儀器配置所有驅程。如果找到IVI-COM驅程，那么"IVI-COM Driver"按鈕不再是灰色。

如果想為某個接口手動配置IVI-COM，啟動Instrument Manager。添加一台儀器，選擇接口。從同一個Instrument Properties對話框中，選擇Advanced，然后選擇IVI-COM Driver欄。選擇与儀器匹配的IVI-COM驅程名稱，檢驗儀器地址。

為訪問To/From IVI-COM對象，從I/O菜單中調用Instrument Manager。選擇一台儀器。然后在"Create I/O Object"中，選擇"IVI-COM Driver"。如果還沒有為該儀器配置IVI-COM驅程，那么選項會變成灰色。

Open View參數

open view顯示可以執行事務列表。每項事務都是一個IVI-COM命令(調用IVI-COM驅程中的函數)。

在雙擊一個空事務時，會出現Select an Operation from...對話框。這個對話框允許選擇要執行的操作。對話框底部的文本區域描述了當前選擇的成員的描述。成員的分層樹圖顯示了不同類別。左面帶+號的成員表明有子成員。左面不帶+號的文件夾表明沒有子成員。

CreateInstance一直是第一個事務，后面跟著一個Initialize事務。這時，可以插入所需的其它事務，但要記住用Close事務結尾，以便釋放資源。

在選擇操作并點擊OK后，會出現Edit對話框。這個對話框允許編輯操作的值，配置輸入端和輸出端。

這時點擊Cancel將取消整個選擇過程。

Edit對話框包含下面的字段︰

Edit Parameters欄︰

這些參數隨著選擇的操作變化。一般來說，所需的答案會自行顯現。

Configure Terminals欄︰

您通常不需要修改這些值。

點擊OK會關閉Edit對話框，創建事務。

在雙擊現有事務時，將出現Edit對話框，然后可以編輯當前選中的函數調用。

對象菜單

Edit Operation - 編輯當前高亮度顯示的函數。

Add Operation - 在列表末尾添加一個函數。

Insert Operation - 在目前高亮度顯示的函數前插入一個函數。

Cut Operation - 剪切(刪除)目前高亮度顯示的函數，但把它保存在函數"剪切和粘貼"緩沖器中。

Copy Operation - 把目前高亮度顯示的函數复制到函數"剪切和粘貼"緩沖器中。

Paste Operation - 粘貼以前"剪切"或"复制"的函數。

Delete Oper - 刪除列表中高亮度顯示的函數。

Move Oper Up - 上移高亮度顯示的函數。

Move Oper Down - 下移高亮度顯示的函數。

IVI-COM Help - 為您提供与IVI-COM驅程有關的幫助信息。這些信息由硬件制造商提供，每個驅程帶有這些信息。

快捷方式

通過把光標放在輸入端或輸出端顯示區域上，然后按CTRL+A，可以迅速添加一個數据端。每按一下CTRL+A會額外添加一個數据端。

通過把光標放在端查看區域上，然后按CTRL+D，可以迅速刪除一個數据端。

為迅速插入一個事務，把光標放在事務上。按Insert鍵會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按Delete鍵。

為從"kill"緩沖器中粘貼一個事務，按CTRL+V。

為迅速移到下一個事務或上一個事務，分別按Up Arrow鍵或Down Arrow鍵。

位置

I/O [image] Instrument Manager...

備注

在少數情況下，將不加載IVI-COM驅程。在這种情況發生時，參閱COM對象 - 問題診斷。

另請參閱

To/From IVI-COM - Advanced, 對象菜單


To/From NIDAQ

使用調用NIDAQ驅程的事務語句，向儀器寫入數据及從儀器中讀取數据的對象。

用途

使用To/From NIDAQ与擁有NIDAQ驅程的儀器通信。

為訪問To/From NIDAQ對象，從I/O菜單中調用Instrument Manager。添加NIDAQ接口，選擇NIDMM, NISCOPE, NISWITCH, NIFGEN, NIDAQ或NIDAQmx。然后在"Create I/O Object"中選擇"NIDAQ Driver"。如果沒有為該儀器配置NIDAQ驅程，那么選項會變成灰色。

Open View參數

open view顯示要執行的事務列表。每項事務都是一個NIDAQ命令(調用NIDAQ驅程中的C函數)。

在雙擊一個空事務時，會出現Select a Function Panel對話框。

這個對話框允許選擇要執行的函數。對話框底部的文本區域描述了當前選擇的函數面板。函數的分層樹圖顯示了不同類別的函數面板。左面帶+號的文件夾表明提供了多個文件夾或函數面板。左面帶-號的文件夾表明已經顯示了多個文件夾或函數面板。如果想全部展開一個樹枝，選擇要展開的項目，按*鍵。

在選擇函數，點擊OK后，出現Edit Function Panel對話框。這個對話框允許編輯函數面板上的值，設置變量，自動建立輸入端和輸出端。

這時點擊Cancel，取消整個函數面板選擇流程。

Edit Function Panel對話框包含下述字段︰

Panel欄︰

Controls (在對話框頂部) - 每個控制功能表示函數的一個參數。編輯控制功能中的值允許為參數指定常數值。控制功能的名稱是從函數面板文件中指定的標注。如果想獲得与控制功能有關的幫助，在控制功能上按鼠標右鍵。某些控制面板可能沒有任何控制功能。

Configuration欄︰(并不是所有函數都有這一欄) - 允許為函數參數指定變量。

label name組︰從函數面板文件中指定的控制功能名稱。

Parameter Type: - 指定參數的類型和形狀。

Parameter Value: Constant | Variable - 指定參數設置成常數值(從Panel欄)還是作為變量輸入到C函數。如果參數必須是Variable (如數組類型)，Parameter Value變成灰色。如果選擇了Variable，那么會啟動Name和Create Terminal字段。

Name - C函數傳送的變量的名稱。在默認情況下，Name設置成從函數面板文件中指定的標注名稱。如果變量是輸入變量，這個字段還包含UserFunction調用，UserFunction會返回一個在運行時求解的值(然后將傳送到函數調用)、變量和表達式。

Create Terminal - 在選中复選框時，如果其目前不存在，那么會創建輸入和/或輸出端。如果Name字段設置成無效的端名(如UserFunction調用或表達式)，那么這個字段會變成灰色。

Auto-Allocate Input - 如果Parameter Type是一個數組或Text類型，必須分配發送給提取數据的函數的存儲器。編輯容量字段，告訴VEE分配多少存儲器，來容納數組要素數量或字符串長度。一定要把容量設置得足夠大。可以反選這個框，使用輸入端自行分配存儲器，但不建議采取這种作法。

在雙擊現有事務時，將出現Edit Function Panel對話框，然后可以編輯當前選擇的函數調用。

對象菜單

Edit Function - 編輯當前高亮度顯示的函數。

Add Function - 在列表末尾添加一個函數。

Insert Function - 在目前高亮度顯示的函數前插入一個函數。

Cut Function - 剪切(刪除)目前高亮度顯示的函數，但把它保存在函數"剪切和粘貼"緩沖器中。

Copy Function - 把目前高亮度顯示的函數复制到函數"剪切和粘貼"緩沖器中。

Paste Function - 粘貼以前"剪切"或"复制"的函數。

Delete Function - 刪除列表中高亮度顯示的函數。

Move Function Up - 上移高亮度顯示的函數。

Move Function Down - 下移高亮度顯示的函數。

Instrument Help - 為您提供与NIDAQ驅程有關的幫助信息。

快捷方式

通過把光標放在輸入端或輸出端顯示區域上，然后按CTRL+A，可以迅速添加一個數据端。每按一下CTRL+A會額外添加一個數据端。

通過把光標放在端查看區域上，然后按CTRL+D，可以迅速刪除一個數据端。

為迅速插入一個事務，把光標放在事務上。按Insert會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按Delete鍵。

為從"kill"緩沖器中粘貼一個事務，按CTRL+V。

為迅速移到下一個事務或上一個事務，分別按CTRL+N或CTRL+P。

備注

NIDAQ不支持任何Advanced I/O功能。

NIDAQ函數調用不會出現在VEE的Bus I/O Monitor中。

必須為傳送到NIDAQ驅程中的數組和文本參數分配存儲器。如果沒有為這些參數分配足夠的存儲器，函數可能會覆蓋存儲器，可能會導致General Protection Fault或Segmentation Violation。強烈建議您一直使用Auto-Allocate Input功能，一定要把存儲器容量設置得足夠大。

由于VEE自動調用init()和close()，為您處理會話句柄，不要調用可能位于驅程中的任何init()函數。如需更多信息，請參閱Advanced I/O幫助內容。

部分NI-FGEN調用會創建句柄。這些句柄要求在VEE要特別注意。參閱NI-FGEN。

NI-SCOPE中的部分調用返回波形數据的方式与VEE不一致。參閱NI-SCOPE Fetch/Read函數。

位置

I/O [image] Instrument Manager...

另請參閱

Advanced I/O, Component Driver, Formula, Instrument Manager, Panel Driver, 編輯事務和NI-DAQmx


To/From Socket

通過事務与支持Dynamic Data Exchange (DDE)的Microsoft Windows應用程序交換數据的對象。

用途

Socket 是那些希望實現過程間通信的程序員的工具。To/From Socket 使用事務I/O。

首先要定義需連接或綁定的端口，然后在To/From Socket中加入一個或多個事務來讀或寫數据。

To/From Socket 的操作︰

READ - 使用指定編碼和格式讀數据。

WRITE - 使用指定編碼和格式寫數据。

EXECUTE - 使用EXECUTE CLOSE事務專門終止一個socket連接。

WAIT - 執行下一個事物前等待指定的秒數。

To/From Socket 編碼︰

TEXT -把所有數据類型寫入到人可以閱讀的文件中，這些文件可以簡便地編輯或移植到其它應用軟件中。在寫入時，VEE數字數据自動轉換成文本。

BYTE - 把數字數据轉換成二進制整數，寫入最低有效字節。

CASE - 把一個枚舉的值或一個整數映射到一個字符串，寫入字符串。例如，可以使用CASE接受錯誤編號，寫入錯誤信息。

BINARY - 以特定机器二進制格式寫入/讀出所有數据類型。

BINBLOCK - 在帶有IEEE 488.2一定長度碼組包頭的二進制文件中寫入/讀出所有VEE數据類型。

CONTAINER - 以特定VEE文本格式寫入/獨出所有數据類型。

Open View 參數

Open view顯示指定端口連接或綁定的域，超時時間段，和要執行的事務的列表。

Connect/Bind Port - 此按鈕在綁定和連接模式之間切換。Bind Port綁定計算机上的一個端口，VEE在這個計算机上運行并等待一個連接的發生。Connect Port 連接一個遠程計算机上的bound socket。在相關的文本域中輸入端口號。可以使用從5000到6000的端口號。

主机名 - 在Bind Port模式，顯示VEE運行的那個主机名。在Connect Port模式，輸入要連接的遠程主机的名稱或Internet Protocol (IP) 地址。

Timeout - 以秒來計算的超時時段的整數值，它表示可以接受的允許綁定貨連接的時間。連接過后，這一時段為允許進行 READ和WRITE事務的時段。設為0可以讓超時時間為無限長。

對象菜單

Edit Function - 編輯當前高亮度顯示的函數。

Add Function - 在列表末尾添加一個函數。

Insert Function - 在目前高亮度顯示的函數前插入一個函數。

Cut Function - 剪切(刪除)目前高亮度顯示的函數，但把它保存在函數"剪切和粘貼"緩沖器中。

Copy Function - 把目前高亮度顯示的函數复制到函數"剪切和粘貼"緩沖器中。

Paste Function - 粘貼以前"剪切"或"复制"的函數。

Delete Function - 刪除列表中高亮度顯示的函數。

Move Function Up - 上移高亮度顯示的函數。

Move Function Down - 下移高亮度顯示的函數。

Instrument Help - 為您提供与NIDAQ驅程有關的幫助信息。

屬性

EolSequence - 指定在使用EOL ON的WRITE事務末尾發送的字符。這個字段中的項目必須包含用雙引號引起來的0個或多個ASCII字符。默認值是"\n"。

ArraySeparator - 指定隔离WRITE TEXT事務編寫的數組要素使用的字符串。這個字段中的項目必須用雙引號引起來。

MultiFieldFormat: 為WRITE TEXT事務的多字段數据類型指定下面兩种格式化樣式。影響的數据類型有Coord, Complex, PComplex和Spectrum。

Data Only - 用逗號分隔每個多字段項目，但不使用圓括號括起這個組。复數2+2j將格式化2,2。

(...) Syntax - (默認) 用逗號分隔每個多字段項目，使用圓括號括起這個組。复數2+2j將格式化為(2,2)。

ArrayFormat group: 确定怎樣格式化多維數組。

Linear - 線性排列數組要素。

Block - (默認) 在每一行末尾使用EOL字符，排列兩維或多維模塊中的數組要素。

快捷方式

通過把光標放在輸入端或輸出端顯示區域上，然后按CTRL+A，可以迅速添加一個數据端。每按一下CTRL+A會額外添加一個數据端。

通過把光標放在端查看區域上，然后按CTRL+D，可以迅速刪除一個數据端。

為迅速插入一個事務，把光標放在事務上。按Insert鍵會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按Delete鍵。

為從"kill"緩沖器中粘貼一個事務，按CTRL+V。

為迅速移到下一個事務或上一個事務，分別按Up Arrow鍵或Down Arrow鍵。

注釋

To/From Socket對象設為綁定一個socket或創建一個連接會阻塞VEE中的所有線程直到連接超時。

多個To/From Socket對象綁定到同一個端口時，將共享同一個socket。同樣，所有端口號和主机名配置相同且試圖連接到同一個bound socket的對象回共享這個socket。建立連接的額外負載發生在所有這些對象中第一對象執行時。

設置超時為零使超時無效，等待連接的時間為無限長。違反超時會導致錯誤，造成VEE運行終止。

當嘗試連接時，遠程主机不存在或關机時，忽略超時。在這种情況下，VEE接口會被凍結直到連接确實已經失敗，這大概需要1分鐘的時間。

當一個VEE程序停止時，該程序建立的所有socket連接都會中斷。連接中斷后，服務器和客戶端對象必須重复綁定/連接協議以重新建立連接。

所有 READ 操作都會阻塞并等待接收事務所指定的數据類型和數量直到發生超時。使用READ IOSTATUS事務檢測數据何時在socket上有效，可以避免阻塞線程。

位置

I/O [image] To/From Socket

另請參閱

Formula, Object Menu, 和 編輯事務。


Toggle Control

输出1 (已按下, 已复选, 或已选中)或0的对象。Toggle Control对象有各种显示格式，但所有这些格式的工作方式相同。

用途

使用Toggle Control对象设置输出1或0。Toggle Control对象通常与包含A==1条件的If/Then对象一起使用。

属性

Format组: - 指定Toggle Control对象的外观及选择选项的方式。默认格式是从菜单中选择的任何对象。

Button - 通过按一个按钮选择一个选项。

Check Box - 通过点击凹进的框选择一个选项。对号表示on (1)。

Vertical Paddle - 垂直桨状开关。绿点表示on (1)。

Horizontal Paddle - 水平桨状开关。绿点表示on (1)。

Vertical Rocker - 垂直摇杆开关。绿点表示on (1)。

Horizontal Rocker - 水平摇杆开关。绿点表示on (1)。

Vertical Slide - 垂直滑动开关。绿点表示on (1)。

Horizontal Slide - 水平滑动开关。绿点表示on (1)。

<Custom> - 在选中时，可以为on和off指定自己的位图。从Custom一栏中选择位图。

Execution组:

Wait for Input - 在这一属性为True时，只有在对象值变化时对象才会操作。在这一属性为False时，一旦满足限制，对象将会操作，并输出当前自动选择的值。默认值为False。

AutoExecute - 在这一属性为True时，在选择一个值时，对象操作并启动程序的其余部分。如果程序已经运行，那么会忽略AutoExecute。默认值为False。

Layout组：

Scaled - 如果这一属性为True，切换图像缩放到对象的尺寸。如果这一属性为False，向左调节切换图像。默认值为False。

Show Caption - 如果这一属性为True，显示对象的open view上的图示内容。图示内容中包含与标题栏相同的文本。

Initialization组：

InitialValue - 指定要设置的值。默认值为0 (零)。

InitializeAtPreRun - 在这一属性为True时，在PreRun时设置InitialValue。默认值为False。

InitializeAtActivate - 在这一属性为True时，在Activate时设置InitialValue。默认值为False。

CustomOnPicture - 选择在Toggle Contro输出值为1时希望显示的图形图像文件。

CustomOffPicture - 选择在Toggle Control输出值为0希望显示的图形图像文件。

Preview - 显示选中的当前图形图像。

显示的目录是安装目录下的bitmaps目录。如果想从另一个目录中选择一个文件，按Browse ...按钮。

VEE检查文件，确定文件格式。目前支持的格式有：

位图(*.BMP)

GIF87a (*.GIF)

Windows MetaFile (*.WMF)

可移植网络图形(*.PNG)

默认位图位于VEE程序安装目录下的bitmaps目录中。

备注

Initialize最常用的用途是初始化UserObject内部的值。设置初始值的另一种方法是使用Default Value控制端。

可以为Default Value, Reset, Enable Editing和Disable Editing添加控制输入。

Default Value输入可以以程序化方式改变当前值。这个输入要求一个Int32 Scalar值。取值0表示切换off。任何其它值表示切换on。

Reset输入允许以程序化方式把取值设置为零。忽略Reset输入上的实际数据。

Enable Editing和Disable Editing输入可以以程序化方式控制是否在对象的open view中改变值。.

位置

Data [image] Toggle Control

另请参阅

Complex, Constant, Coord, Date/Time, Selection Control, If/Then/Else, UInt8, Int16, Int32, PComplex, Real32, Real64和Text。


Toggle Breakpoint

设置或清除选定对象上的执行断点。

用途

使用Toggle Breakpoint作为调试工具，设置或清除断点。选择多个对象，然后选择Toggle Breakpoint。这一操作在选定的没有断点的任何对象上设置断点，在选定的有断点的任何对象上清除断点。

在对象上设置断点会在这个对象前停止执行程序。如果想继续执行程序，在VEE工具栏上按Resume按钮；如果想只运行有断点的对象，按其中一个Step按钮。

在设置断点后，对象会使用一个彩色外框高亮度显示(默认值为橙色)。

备注

为设置单个对象的断点，在对象属性窗口上使用Breakpoint选项。

在通过Toggle Breakpoint设置断点时，Properties窗口中的Breakpoint选项会打勾。

断点与程序一起保存。如果不希望打开程序时再次出现断点，在保存程序前使用Clear All Breakpoints。

快捷方式

为切换断点，高亮度显示要设置的对象，然后按CTRL-B。

位置

Debug [image] Toggle Breakpoint

另请参阅

Activate Breakpoints, Properties (对象), Clear All Breakpoints, Run/Resume, Select All, Show Data Flow, Show Execution Flow, Step Into, Step Over和Step Out。

控制断点


Toolbar

View菜单上控制VEE Toolbar可视性的一种切换函数。

用途

使用Toolbar打开或关闭VEE工具栏。当打开时，Toolbar 菜单选项的左面会出现一个对号。

在看得见Toolbar时，可以通过快捷方式进入许多VEE编程和调试功能，如打开新的VEE程序文件，打开已有的VEE程序文件，或开始、暂停和停止执行VEE程序。

通过把鼠标光标放到按钮上，可以确定Toolbar 按钮的功能；按钮下面会出现工具提示。工具提示简要描述了按钮的功能。同时，位于VEE工作空间底部的Status Bar中也会出现Toolbar 按钮的功能描述。

位置

View [image] Toolbar

另请参阅

Status Bar


To Printer

把數据發送到打印机的對象。

用途

使用To Printer，采用各种編碼和格式把數据輸出到打印机。

To Printer操作︰

WRITE - 使用指定編碼和格式打印數据。

WAIT - 在執行下一個事務前等待指定的秒數。

To Printer編碼︰

在几乎所有情況下，都應使用TEXT or CASE編碼打印數据。高級用戶可以使用其它編碼。

TEXT - 以人可讀的形式寫入所有數据類型。VEE數字數据在寫入時自動轉換成文本。

BYTE - 把數字數据轉換成二進制整數，寫入最低有效字節。

CASE - 把枚舉的值或整數映射到字符串，寫入字符串。例如，可以使用CASE，接受錯誤編號，寫入錯誤消息。

BINARY - 以机器專用二進制格式寫入所有數据類型。

BINBLOCK - 使用IEEE 488.2限定長度碼組包頭寫入二進制文件中的所有VEE數据類型。

CONTAINER - 以机器專用文本格式寫入所有數据類型。

Open View參數

open view顯示了要執行的事務列表。

對象菜單

Edit Trans - 編輯當前高亮度顯示的事務。

Add Trans - 在列表末尾添加一個事務。

Insert Trans - 在目前高亮度顯示的事務前插入一個事務。

Cut Trans - 剪切(刪除)目前高亮度顯示的事務，但把它保存在事務"剪切和粘貼"緩沖器中。

Copy Trans - 把目前高亮度顯示的事務复制到事務"剪切和粘貼"緩沖器中。

Paste Trans - 粘貼以前"剪切"或"复制"的事務。

Delete Trans - 刪除列表中高亮度顯示的事務。

Move Trans Up - 上移高亮度顯示的事務。

Move Trans Down - 下移高亮度顯示的事務。

Print Trans - 打印描述當前高亮度顯示的事務的詳細對話框。

屬性

EolSequence - 指定在使用EOL ON的WRITE事務結尾發送的字符。這個字段中的項目必須包含用雙引號引起的零或多個ASCII字符。默認值"\n"。

ArraySeparator - 指定用來分隔WRITE TEXT事務編寫的數組要素的字符串。這個字段中的項目必須帶有雙引號。

MultiFieldFormat組: 為WRITE TEXT事務的多字段數据類型指定下面兩种格式化方式。影響的數据類型包括︰Coord, Complex, PComplex和Spectrum。

Data Only - 用逗號分隔每個多字段項目，不用括弧把組括起來。复數2+2j將格式化為2,2。

(...) Syntax - (默認值) 用逗號分隔每個多字段項目，使用括弧把組括起來。复數2+2j將格式化為(2,2)。

ArrayFormat組: 确定怎樣格式化多維數組。

Linear - 以線性方式排列數組。

Block - (默認值) 在每行結尾使用EOL字段以每個碼組兩個或多個維度排列數組要素。

備注

如果使用WRITE TEXT事務打印，那么To Printer不能打印嵌入控制字符的ASCII文本。而應使用To File對象，在文件名文本字段中，輸入一個端口名稱，如LPT1。

如果想配置目的打印机，使用Print Setup。

在程序中第一個To Printer對象運行時，它啟動一項打印作業。程序中的所有To Printer對象都共享打印作業，因此其輸出順序出現在同一個打印輸出中。

打印作業保持打開，直到PostRun，或直到執行EXECUTE CLOSE事務或激活任何To Printer上的End Job控制輸入。在程序中所有線程執行結束或在按Stop兩次時，會發生PostRun。可以通過對象菜單中的Add Control Input選項進入End Job控制輸入端。

快捷方式

為迅速插入一個事務，把光標放在事務上。按Insert鍵會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按Delete鍵。

為從"kill"緩沖器中粘貼一個事務，按CTRL+V。

為迅速移到下一個事務或上一個事務，分別按Up Arrow鍵或Down Arrow鍵。

位置

I/O [image] To [image] Printer

See Also

Default Preferences, Formula, To, To File, 把數据發送到打印机和編輯事務


To String

使用事務把格式化文本寫入字符串的對象。

用途

使用To String，創建使用事務的格式化文本。

如果To String事務只生成一個事務，那么輸出容器是一個字符串標量。在生成一個以上的字符串時，輸出容器是Array 1D。

以"EOL ON"結尾的WRITE事務將結束當前輸出字符串，導致To String列表中的下一個事務把數据寫入輸出容器下一個數組要素中。不能為End Of Line (EOL)屬性指定數据格式的分隔符序列。

以"EOL OFF"結尾的WRITE事務將不會結束輸出字符串，導致To String列表中下一個WRITE事務生成的字符被追加到當前輸出字符串的末尾。To String列表中最后的事務將一直結束輸出字符串，而不是該事務的"EOL"模式如何。

To String操作︰:

WRITE - 使用指定編碼和格式寫入數据。

WAIT - 在執行下一個事務前等待指定的秒數。

To String編碼︰

在几乎所有情況下，都應使用TEXT編碼寫入數据。

TEXT - 以人可讀的形式寫入所有數据類型。VEE數字數据在寫入時自動轉換成文本。

BYTE - 把數字數据轉換成二進制形式，寫入同等的映射最低有效字節。的ASCII文本。例如，下面的事務寫入字符A (ASCII 65十進制)︰

WRITE BYTE 65

CASE - 把枚舉的值或整數映射到字符串，寫入字符串。例如，可以使用CASE，接受錯誤編號，寫入錯誤消息。

Open View參數

open view顯示了要執行的事務列表。

對象菜單

Edit Trans - 編輯當前高亮度顯示的事務。

Add Trans - 在列表末尾添加一個事務。

Insert Trans - 在目前高亮度顯示的事務前插入一個事務。

Cut Trans - 剪切(刪除)目前高亮度顯示的事務，但把它保存在事務"剪切和粘貼"緩沖器中。

Copy Trans - 把目前高亮度顯示的事務复制到事務"剪切和粘貼"緩沖器中。

Paste Trans - 粘貼以前"剪切"或"复制"的事務。

Delete Trans - 刪除列表中高亮度顯示的事務。

Move Trans Up - 上移高亮度顯示的事務。

Move Trans Down - 下移高亮度顯示的事務。

Print Trans - 打印描述當前高亮度顯示的事務的詳細對話框。

屬性

EolSequence - 指定在使用EOL ON的WRITE事務結尾發送的字符。這個字段中的項目必須包含用雙引號引起的零或多個ASCII字符。默認值"\n"。

 ArraySeparator - 指定用來分隔WRITE TEXT事務編寫的數組要素的字符串。這個字段中的項目必須帶有雙引號。

MultiFieldFormat組: 為WRITE TEXT事務的多字段數据類型指定下面兩种格式化方式。影響的數据類型包括︰Coord, Complex, PComplex和Spectrum。

Data Only - 用逗號分隔每個多字段項目，不用括弧把組括起來。复數2+2j將格式化為2,2。

(...) Syntax - (默認值) 用逗號分隔每個多字段項目，使用括弧把組括起來。复數2+2j將格式化為(2,2)。

ArrayFormat組: 确定怎樣格式化多維數組。

Linear - 以線性方式排列數組。

Block - (默認值) 在每行結尾使用EOL字段以每個碼組兩個或多個維度排列數組要素。

范例

To String為考察TEXT事務的工作方式提供了一個有用的調試工具。把Logging AlphaNumeric顯示畫面連接到To String輸出端，可以立即查看結果。

快捷方式

為迅速插入一個事務，把光標放在事務上。按Insert鍵會在放置光標的事務上插入一個事務。

為迅速刪除("殺掉")一個事務，把光標放在該事務上，按Delete鍵。

為從"kill"緩沖器中粘貼一個事務，按CTRL+V。

為迅速移到下一個事務或上一個事務，分別按Up Arrow鍵或Down Arrow鍵。

位置

I/O [image] To [image] String

另請參閱

Formula, To, To File, 把數字轉換成字符串和編輯事務


類型轉換

Function & Object Browser對話框里的一類Built-in Function。

用途

使用Type Conversion可以訪問下述函數。

asBoolean(x)
asClrType(x, t)
asComplex(x)
asCoord(x)
asInt16(x)
asInt32(x)
asInt64(x)
asPComplex(x)
asReal32(x)
asReal64(x)
asText(x)
asUInt8(x)
asVariant(x)
asVariantBool(x)
asVariantCurrency(x)
asVariantDate(x)
asVariantEmpty(x)
asVariantError(x)
asVariantNull(x)
isVariant(x)
isVariantBool(x)
isVariantCurrency(x)
isVariantDate(x)
isVariantEmpty(x)
isVariantError(x)
isVariantNull(x)
typeName(x)

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Type Conversion


UInt8

輸出1字節的整數標量或1D數組常數的對象。

用途

使汁?font face="Courier New" class="hcp1">Int8設置整數常數或獲得用戶輸入。點擊輸入字段，輸入一個值。

范例

為作為面板視圖上的提示使用UInt8，把UInt8對象的名字變成提示，如Enter the number of seconds to delay:。用戶在輸入字段中填寫請求的信息。

在UInt8中輸入公式12*24，計算結果。

屬性

General欄︰

DataShape - 設置這一對象輸出的值的初始數据形狀。可能的值為標量和Array 1D。

 ArraySize: - 在選擇DataShape 1D Array時，ArraySize設置數組的長度。

 ArraySizeFixed - 在這一屬性為True時，數組不能添加或刪除行。只有在選擇DataShape 1D Array時才能使用這一選項。

 ShowArrayIndices - 在這一屬性為True時，輸入字段中的每一行都帶有索引。只有在選擇DataShape 1D Array時才能使用這一選項。默認值為True。

Wait for Input - 在這一屬性為True時，只有在對象值變化時對象才會操作。在這一屬性為False時，一旦滿足限制，對象將會操作，并輸出當前自動選擇的值。默認值為False。

 AutoExecute - 在這一屬性為True時，在選擇一個值時，對象操作并啟動程序的其余部分。如果程序已經運行，那么會忽略AutoExecute。默認值為False。

Initialization 組︰

 InitialValue - 指定要設置的值。默認值為0。

 InitializeAtPreRun - 在這一屬性為True時，在PreRun時設置InitialValue。默認值為False。

 InitializeAtActivate - 在這一屬性為True時，在Activate時設置InitialValue。默認值為False。

NumberFormat︰

Global Format - 使用默認格式。默認值為啟動。

Integer: - 如果Global Format關閉，指定在這個對象上顯示的整數的數字格式。選項包括Decimal (如42), Octal (如#Q52), Hexadecimal (如#H2a),和Binary (如#B00101010)。默認值為Decimal。

備注

Initialize最常用的用途是初始化UserObject內部的值。設置初始值的另一种方法是使用大多數數据常數上提供的Default Value控制端。

可以為Default Value, Reset, Enable Editing和Disable Editing添加控制輸入。

Default Value輸入可以以程序化方式改變當前值。這一輸入要求一個整數值，其可以是Scalar或Array 1D。可以重新配置Constant，以便与進入的數据形狀相匹配。

Reset輸入可以以程序化方式把值設為零。如果Constant配置為Array 1D，那么所有值都設為零。忽略Reset輸入上的實際數据。

Enable Editing和Disable Editing輸入可以以程序化方式控制是否在對象的open view中改變值。

注意，InitialValue字段一直是一個標量，即使UInt8配置成數組。

位置

Data [image] Constant [image] UInt8

另請參閱

Alloc UInt8, Complex, Constant, Coord, Date/Time, Selection Control, 默認首選項, Int16, Int32, PComplex, Real32, Real64, Text, 和 Toggle Control.

使用數据常數


UnBuild Complex

作为Real64数字输出Complex数字的实数部分和虚数部分的对象。

用途

使用UnBuild Complex从矩形Complex数字中提取实数部分和虚数部分。

备注

还可以使用re(x)和imag(x)函数或对象，获得Complex数字的实数部分和虚数部分。

即使输入有映射，输出仍没有映射。

位置

Data [image] UnBuild Data [image] Complex

另请参阅

Build Complex, UnBuild Data, UnBuild PComplex, Properties (对象)和对象菜单


UnBuild Coord

作为Real64数字输出Coord值的对象。

用途

使用UnBuild Coord提取Coord数据类型的x, y, z ...值。可以为z和其它坐标维度添加其它输出。输出数量必须与输入数据的坐标维数相匹配。

位置

Data [image] UnBuild Data [image] Coord

另请参阅

Build Coord, UnBuild Data, Properties (对象)和对象菜单


UnBuild Data

一个菜单项。

用途

使用UnBuild存取下述数据类型转换对象：

Coord

Complex

PComplex

Waveform

Spectrum

Record

位置

Data [image] UnBuild Data

另请参阅

Access Array, Build Data, UnBuild Complex, UnBuild Coord, UnBuild PComplex, UnBuild Record, UnBuild Spectrum, UnBuild Waveform和对象菜单


UnBuild PComplex

作为Real64数字提取并输出PComplex数字的幅度部分和相位部分的对象。

用途

使用UnBuild PComplex从PComplex数字中提取幅度部分和相位部分。

备注

还可以使用mag(x)和phase(x)函数或对象，获得PComplex数字的各个部分。

即使输入有映射，输出仍没有映射。

位置

Data [image] UnBuild Data [image] PComplex

另请参阅

Build PComplex, Default Preferences, UnBuild Complex, UnBuild Data, Properties (对象)和对象菜单


UnBuild Record

允许对象拆除记录、恢复其组件的对象。

用途

使用UnBuild Record从记录中提取数据组件 (A, B, 等等)，获得这些组件的Name List和Type List。

Name List输出端输出由输入记录字段名的所有名称组成的一个Text数组。

Type List输出端输出由输入记录所有数据类型组成的一个Text数组。

A, B等输出端输出从记录中拆除的各个数据组件。

备注

可以在这个对象中添加任意数量的输出端。每个输出端名称必须与一个记录字段名对应。字段名不分大小写(小写和大写一样)。

注意UnBuild Record, SubRecord, Get Field,和From DataSet对象之间的区别。

UnBuild Record对象为输入记录字段Name List和Type List提供输出。UnBuild Record对象的其它(可选)输出A, B等返回的结果与多个Get Field对象相同。

Get Field对象的工作方式与Formula对象的类似之处是它使用句点语法(A.B)构建记录。注意，Get Field允许使用A.B.C之类的表达式，用一个步骤拆除记录的记录。这一过程要求两个UnBuild Record对象。

SubRecord对象与UnBuild Record和Get Field的区别在于，其输出总是一条记录。SubRecord对象允许包括或不包括一条记录中的字段列表，形成一条子记录。

From DataSet根据逻辑表达式的限制从由多个记录组成的文件(一个"数据集")中读取记录。例如，可以提取在记录字段中拥有PASS值的所有记录。

位置

Data [image] UnBuild Data [image] Record

另请参阅

Build Record, From DataSet, Get Field, Record Constant, Set Field, SubRecord, To DataSet, Properties (对象)和对象菜单

从记录中提取字段


UnBuild Spectrum

输出PComplex值和Spectrum的频率范围的对象。

用途

使用UnBuild Spectrum从Spectrum中提取Array 1D的PComplex值和间隔。

Open View参数

Start/Stop | Center/Span - 改变输出中描述Spectrum的频率范围的值。

位置

Data [image] UnBuild Data [image] Spectrum

另请参阅

Build Spectrum, UnBuild Data, UnBuild Waveform, Properties (对象)和对象菜单


UnBuild Waveform

输出Waveform的幅度值和时间跨度的对象。

用途

使用UnBuild Waveform从Wavefrom的时间跨度中提取Array 1D的幅度值和实数值。

备注

Real64数组输出将没有映射。

位置

Data [image] UnBuild Data [image] Waveform

另请参阅

Build Waveform, UnBuild Data, UnBuild Spectrum, Properties (对象)和对象菜单


Unpack (Object Menu)

Unpack (對象菜單)

一個菜單選項，僅位于UserObject的對象菜單中，用來?#25286;包?/span>UserObject。UserObject會消失，但UserObject內的對象會變成程序主要上下文的一部分。

用途

使用Unpack會刪除UserObject，把它的內容放到程序的主要上下文中。在嵌大式UserObject中，則會把它的內容放在拆包的UserObject所在的UserObject的上下文中。由于構成UserObject的對象仍在新上下文內保持連接線，因此UserObject內的功能保持不變。

備注

Unpack是Create UserObject的逆操作。如果選擇多個對象，執行Create UserObject，那么這些對象及其連接變成新的UserObject的一部分。如果之后在UserObject上執行Unpack，對象會返回到程序的主要上下文，就象從未創建UserObject一樣。

位置

在對象菜單上（僅UserObjects） [image] Unpack

另請參閱

創建UserObject 和 UserObject。


Until Break

重复執行子線程直到遇到Break的對象。

用途

使用Until Break啟動一套操作，這套操作一直重复，直到遇到Break 。

備注

由Until Break 提供主机的子線程會一直執行，直到發生其中一种下述情況︰

所有對象已經運行；子線程被去活。通過重新啟動Until Break 輸出，直到遇到一個Break 對象，子線程被重新激活。

一個Break對象運行。子線程被去活，序列輸出端被激活。

一個Next對象運行。通過重新啟動Until Break 輸出，直到遇到一個Break 對象，子線程子線程被去活，然后被重新激活。

Until Break輸出一個實數值為零的輸出輸出執行信號。

當由Until Break 對象提供主机的子線程完成迭代時，在下一個迭代之前，在前一個迭代期間發送的所有數据容器會失效。這可以防止來自上一個迭代的?#26087;?#25968;据重用在當前迭代中。但是，如果在迭代子線程中存在流程分支，那么某些對象在每次迭代中可能會不執行。因此，這些對象發送的數据容器可能會失效，然后才能在數据上執行其它對象。為在這种情況下獲得希望的傳播，使用Sample & Hold對象。

位置

Flow [image] Repeat [image] Until Break

另請參閱

Break, For Count, For Log Range, For Range, Next, On Cycle, Sample & Hold, 和 Properties (對象)

循環部分VEE程序


UserFunction

從一個UserObject 或選擇的一組對象中創建的一個用戶自定義函數。

用途

通過創建一個UserObject，然后執行Make UserFunction （詳情請參閱UserObject），可以創建一個UserFunction。還也可以通過選擇一組對象，使用Edit Create UserFunction...，創建一個UserFunction。

一旦已經創建，可以使用Edit UserFunction 編輯UserFunction。UserFunctions存在于“后台”中，使用Call Function或從某些表達式中調用。

UserFunction較UserObject的一個優勢是，在程序內可以多次調汁煲erFunction，但它作為源代碼只位于一個位置。

對象菜單

  • Edit - 是調出UserFunction 的上下文Edit 的父菜單。這個菜單包含的選項与Edit 菜單的主菜單相同。在UserFunction 工作區上按鼠標右鍵，會彈出Edit 菜單。 下列選項与UserFunction有關︰

  • Clean Up Lines – 在對象周圍引導UserFunction中的直線。

  • Add To Panel – 為UserFunction創建一個面板視圖（如果目前不存在面板視圖），其中包含選擇的對象。

  • Create UserObject – 創建一個由當前選擇的對象構成的UserObject。

  • Create UserFunction – 創建一個由當前選擇的對象構成的UserFunction 。

  • Cut – 從VEE及內存中刪除UserFunction ，把它放在粘貼緩沖器里。UserFunction及其內容可以粘貼到另一個VEE會話中。對Windows 2000和XP，這還會把UserFunction編輯窗口圖像及其內容放在剪切板上，可以隨時粘貼到其它應用程序中。

  • Copy – 把UserFunction复制到粘貼緩沖器中。UserFunction及其內容可以粘貼到另一個VEE會話中。對Windows 2000和XP，這還會把UserFunction編輯窗口圖像及其內容放在剪切板上，可以隨時粘貼到其它應用程序中。

  • Make UserObject – 是Make UserFunction的相反操作。把UserFunction轉換回UserObject。 Save Secured Version – 保存用戶不能編輯的UserFunction版本。系統會提示安全版本的名稱，它將使用.vee擴展名保存。

  • Locate – 在Program Explorer中高亮度顯示UserFunction 的位置。

  • Generate - 創建包含參考UserFunction標題的表達式的其中一個下述對象。可以把生成的對象放在程序的另一個部分中︰ Call 創建一個 Call對象。 Formula Call 創建一個 Formula 對象。 If/Then/Else Call創建一個If/Then/Else對象。 ShowPanel創建一個帶有ShowPanel()函數的Formula 對象。 HidePanel 創建一個帶有HidePanel()函數的Formula對象。

  • Calls – 打開Find Results 對話框，其中包含這個UserFunction調用的其它UserFunction組成的列表。

  • Called By – 打開Find Results對話框，其中包含調用這個UserFunction的其它UserFunction 組成的列表。

  • Create Panel – 創建一個UserFunction 面板視圖，面板中不添加任何對象。

  • Delete Panel – 刪除UserFunction的面板視圖及面板中添加的任何對象。与面板一起刪除的對象不會從細節視圖中刪除。

  • Close – 隱藏UserFunction 編輯窗口。UserFunction 仍裝在內存中。在運行程序前，不需要Close UserFunctio編輯窗口。

屬性

  • TrigMode 組︰

  • Degrees | Radians | Gradians – 指定在這個UserFunction中使用的三角單位的默認值。

  • PopupPanelTitle: - 在執行窗口中面板上顯示的標題。

  • ShowPanelOnExecute – 當屬性為 True時，顯示UserFunction運行時与UserFunction相關的面板視圖。默認值為False。

  • PopupMoveable – 當屬性為True時，用戶不能移動彈出面板。 默認值為False。

  • ShowPopupPanelTitle – 當屬性為True時，顯示彈出面板上的標題欄。默認值為True。

  • ShowPopupPanelBorder – 當屬性為 True時，顯示彈出面板周圍的邊框。默認值為True。

備注

通過創建多個UserFunctions，然后把它們都保存到一個文件中，可以創建一個UserFunctions 庫。然后可以使用Import Library把這個庫導入一個程序中，使用Delete Library 刪除這個庫。

不僅可以使用Call Function調汁煲erFunction，還可以從求解延遲到運行時的任何表達式中調汁煲erFunction，包括各种對象中的表達式，如Formula、If/Then/Else和 Set Values以及Sequencer和 I/O 處理中的表達式。但是，在表達式中調用函數的語法只允許返回一個值。因此，從這樣的表達式中調汁煲erFunction只會返回第一個輸出上的值。如果還有其它輸出（不包括序列輸出），那么輸出值會被丟掉。如果沒有輸出，返回的值將未定義。

為找到顯示的面板名稱（通過showPanel()或ShowPanelonExecute），在面板上按鼠標右鍵，將彈出面板名稱。

如果通過UserFunction傳送零，且requiredType 或 requiredShape不是Any，那么會發生錯誤。

帶有描述的UserFunctions有專用圖標。在程序瀏覽器及標題欄中，圖標 表明其中帶有描述，因為右上角有一個紅色三角形。

位置

從Edit =〉Edit UserFunction或從Call Function對象菜單 Edit UserFunction中，選擇UserFunction 名稱，或在Program Explorer中雙擊UserFunction 名稱。

另請參閱

Call, Delete Library, Edit UserFunction, Formula, hidePanel(), If/Then/Else, Import Library, lockPosition(), panelPosition(), panelSize(), Sequencer, showPanel(), unlockPosition(), Remote Functions, 和 UserObject 。

在程序使用多個對象創建UserFunction .


UserName

检索目前登录到机器上的用户名称。

位置

System [image] Environment [image] User Name


UserObject

可以包含其他對象的對象。

用途

使汁煲erObject 在邏輯上和物理上把多個對象划分在一組中。UserObject 構成一個与程序的根上下文不同的“上下文”在一個程序中可以使用多個UserObjects 或嵌套的UserObjects。

為創建希望的UserObject，可以把其它對象移動到UserObjectOpen View的工作區中，也可以選擇多個對象，然后從Edit 菜單中使用Create UserObject。

對象菜單中的Make UserFunction 項允許把UserObject 轉換成UserFunction，然后可以使用Call Function對象或從特定表達式中調汁煲erFunction。

運行:

UserObject的運行方式与其它對象相同--只有在UserObject的所有數据輸入被激活時，UserObject內部的對象才會運行。在輸出數据被激活前，UserObject內部的所有操作必須已經完成。 在UserObject 內部的對象連接到UserObject 外部的對象時，當選擇Create UserObject時，會自動創建輸入端和輸出端。為在現有UserObjects中添加輸入端和輸出端，從對象菜單中使用Add Terminal 。

創建UserFunction:

一旦已經創建了一個UserObject，可以使用Make UserFunction （參閱下面的“對象菜單”創建一個擁有相同功能的UserFunction。UserObject將從屏幕中消失，而被一個Call Function 對象所取代，其中包含調用新的UserFunction 和新的UserFunctions 窗口。UserFunction將被添加到提供的User Functions列表中，這個列表位于程序內的“后台”。可以使用Call Function 對象或從某些表達式中調汁煲erFunction。可以使用Edit 菜單中的Edit UserFunction，編輯UserFunction。

對象菜單

可以從對象菜單按鈕中選擇UserObject 對象菜單，但不能從UserObject打開窗口的工作區中選擇它。從這個窗口內部，按鼠標右鍵會彈出一個Edit 菜單，与主窗口中提供的菜單相同。當指針移動到UserObject內部的一個對象上時，按鼠標右鍵，會出現該對象的對象菜單。通過把指針放到UserObject邊界外，按鼠標右鍵，也可以獲得UserObject對象菜單。

  • Edit -是調出UserObject的上下文Edit 的父菜單。這個菜單包含的選項与Edit 菜單的主菜單相同。在UserObject工作區上按鼠標右鍵，會彈出Edit 菜單。

以下選項与UserObject相關︰

Clean Up Lines - 在對象周圍引導UserObject中的直線。

Add To Panel -為UserObject創建一個面板視圖，其中包含選擇的對象。

Create UserObject - 創建一個由當前選擇的對象構成的UserObject。

Create UserFunction - 創建一個由當前選擇的對象構成的UserFunction 。

Maximize - 調整UserObject打開窗口的大小，使其占据整個VEE工作區。使用Restore 返回到以前的Open View大小。

  • Cut - 從VEE及內存中刪除UserObject，把它放在粘貼緩沖器里。UserObject及其內容可以粘貼到另一個VEE會話中。對Windows 2000和XP，這還會把UserObject編輯窗口圖像及其內容放在剪切板上，可以隨時粘貼到其它應用程序中。

  • Copy - 把UserObject复制到粘貼緩沖器中。UserObject及其內容可以粘貼到另一個VEE會話中。對Windows 2000和XP，這還會把UserObject編輯窗口圖像及其內容放在剪切板上，可以隨時粘貼到其它應用程序中。

  • Make UserFunction ?把UserObject轉換成UserFunction。UserObject將從屏幕中消失，而被一個Call Function 對象所取代，其中包含調用新的UserFunction。在進行這一操作前，在標題字段中輸入一個唯一的名稱。這個名稱將成為UserFunction的名稱，Call Function 或某些表達式可以通過這個名稱來調汁煲erFunction。如果這個名稱是最初的- UserObject- 或不是唯一的，那么系統會提示您輸入一個函數名稱。

  • Unpack ?刪除UserObject，但不刪除其中包含的對象。

  • Save Secured Version - 保存用戶不能編輯的UserObject版本。系統會提示安全版本的名稱，它將使用.vee擴展名保存。

  • Locate - 在Program Explorer中高亮度顯示UserObject的位置。

  • Calls - 打開Find Results 對話框，其中包含這個UserObject調用的UserFunction組成的列表。

  • Create Panel - 創建一個UserObject面板視圖，面板中不添加任何對象。

  • Delete Panel - 刪除UserObject的面板視圖及面板中添加的任何對象。与面板一起刪除的對象不會從細節視圖中刪除。

  • Close - 隱藏UserObject編輯窗口。UserObject仍裝在內存中。在運行程序前，不需要Close UserObject編輯窗口。

屬性

  • TrigMode 組︰

  • Degrees | Radians | Gradians - 指定在這個UserObject中使用的三角單位的默認值。

  • PopUpPanelTitle: - 在執行窗口中面板上顯示的標題。

  • ShowPanelOnExecute - 當選中复選框時，顯示UserObject運行時与UserObject相關的面板視圖。只有在已經創建UserObject面板后（使用Create Panel）才能使用這個選項。默認值為False。

  • PopupMoveable - 當屬性為True時，用戶不能移動彈出面板。 默認值為False。

  • ShowPopupPanelTitle - 當屬性為True時，顯示彈出面板上的標題欄。默認值為True。

  • ShowPopupPanelBorder -當屬性為 True時，顯示彈出面板周圍的邊框。默認值為True。

備注

為創建由當前選擇的對象組成的一個UserObject，使用Create UserObject。

可以方便地保存常用函數的UserObjects（使用Save Objects），創建一個函數庫，以便再次使用。

通過創建多個UserObjects，把它們轉換成UserFunctions，然后保存到一個文件中，可以創建一個UserFunctions庫。然后可以使用Import Library把這個庫導入到程序中，使用Delete Library刪除這個庫。

為找到顯示的面板名稱（通過ShowPanelonExecute），在面板上按鼠標右鍵，將彈出面板名稱。

UserObject 面板視圖可以添加到Main 面板視圖或作為外層上下文的UserObject面板視圖中，換句話說，面板可以嵌套。當面板被添加到parent面板中時，會生成完全重复的源面板。在源面板被修改時，所有重复面板也會更新。

如果UserObject帶有相關描述，它會有一個特殊的圖標 ，注意右上角是紅色。

為把UserObject面板添加到父面板中，如Main面板︰

1. 在創建一個UserObject及其面板后，在UserObject 的圖標視圖上按鼠標右鍵，出現其對象菜單。

2. 點擊Restore，出現Open View。它看起來像一個面板視圖。不要刪除這個視圖，否則會從父程序中刪除UserObject。

3. 選擇UserObject，高亮度顯示UserObject。

4. 點擊Add To Panel工具欄按鈕（Edit Add To Panel）。UserObject出現在父面板中。

位置

Device =〉UserObject

另請參閱

Add To Panel, Call, Create UserObject, Delete Library, Direct I/O, Edit UserFunction, Formula, If/Then/Else, Import Library, Create RunTime Version, Sequencer 和 UserFunction。

在程序使用多個對象創建UserFunction

在程序中創建UserFunction


UTCNow

检索系统的通用时间(格林威治标准时间)。

位置

System [image] DateTime [image] UTCNow


Variable

一个菜单项。

用途

使用variable存取下面的对象，设置和获得变量值。

Set Variable

Get Variable

Delete Variable

Declare Variable

备注

在一个程序的一个上下文中定义的变量可以用于程序内部任何其它上下文中。例如，可以使用Set Variable对象在程序的根上下文中定义一个变量，然后包括Get Variable，在UserObject中获得该变量。在整个程序中必需避免名称冲突：

如果两个或多个Set Variable对象试图设置同一个变量(使用相同的名称)，那么在执行每个Set Variable 时会覆盖当前值。如果不知道存在重复名称，这可能会导致意想不到的行为。

如果有一个数据端变量的名称与变量相同，那么数据端变量优先。

如需进一步信息，请参阅VEE高级技术手册中的"变量"。

位置

Data [image] Variable

另请参阅

默认首选项, Declare Variable, Delete Variable, Get Variable, Set Variable, View Variables。

创建变量

删除变量

使用变量


Variant

變量

用途

Variant數据類型不是确定的數据類型。它在表達式中用以表明，其代表的值可以成為許多其它數据類型中的一种。它是當時保持的數据類型。任何一個數据類型都可以晉級或降級至一個Variant，同時一個Variant也能夠晉級或降級至其所保持的相關數据，而且此數据遵守相應的規則。

如果這個容器被傳送到ActiveX自動化服務器或控件，它將轉換成VT_VARIANT，而不是在Variant容器中的數据類型。如果ActiveActiveX自動化方法需要VT_VARIANT或ByRef VT_VARIANT類型參數，那么只需要Variant類型。

范例

在函數sin(var)中，在Variant數据類型(var)中的數据可以是整數、實數或波形，取決于它被賦予的值。

在表達式a=sin(var)中，a將得到一個(var)所包含的數据類型。

位置

創建Variant數据類型的唯一方式是︰

Data [image] Variable [image] Declare Variable
選擇類型Variant；或

使用asVariant()函數。

另請參閱

asVariant(), Declare Variable。


Vertical Paddle

垂直桨

参阅Toggle Control。


Vertical Rocker

垂直摇杆

参阅Toggle Control。


Vertical Slide

垂直滑条

参见Toggle Control。


View Detail

把显示的视图从面板视图切换到细节视图。

用途

在按这个按钮时，View Detail会显示程序、UserObject或UserFunction的细节视图。

备注

在UserObjects和UserFuntions上，只有在创建了面板视图以后才能看到View Detail。

在保护面板视图安全后，看不到View Detail按钮。

位置

主VEE窗口、UserObject或UserFunction的标题栏 (在已经创建相关面板时)。

另请参阅

添加到面板, 查看面板,和创建RunTime版本.

在面板中添加对象

从面板中删除对象


View Panel

把显示的视图从细节视图切换到面板视图。

用途

在按View Panel时，显示创建的面板视图，作为主VEE窗口、UserObject或UserFunction上的程序接口。

备注

在UserObjects或UserFunctions上，只有在创建了面板视图时才能看到View Panel。

在已经保护面板视图安全后，看不到View Panel按钮。

位置

主VEE窗口、UserObject或UserFunction的标题栏 (在已经创建相关面板时)。

另请参阅

Add To Panel, View Detail,和创建RunTime版本.

在面板中添加对象

从面板中删除对象


View Properties

打开或关闭Properties窗口的一个View菜单项。

用途

Properties菜单选项是一个切换函数，确定是否显示Properties窗口。在其激活时，Properties窗口位于VEE工作空间左侧。

通过在VEE工作空间和Properties窗口之间的垂直间隔上盘旋鼠标指针，可以调节Properties窗口的宽度。在鼠标光标的形状变成竖的分开光标时，按鼠标左健，向右或向左拖动光标，提高或降低窗口大小。

通过在Program Explorer和和Properties窗口之间的水平分隔符上盘旋鼠标指针，可以调节Properties窗口的高度(如果能够看到Program Explorer和Properties)。

Properties窗口的目的是向编程人员显示当前选中的对象的属性。除少数例外情况下，可以修改这些属性。

位置

View [image] Properties

另请参阅

Properties (对象)


Virtual Source

一个菜单项。

用途

使用Virtual Source存取下面的虚拟信号发生器。

Function Generator

Pulse Generator

Noise Generator

备注

Virtual Source对象输出Waveforms。

位置

Device [image] Virtual Source

另请参阅

Build Arb Waveform, Function Generator, Instrument Manager, Noise Generator和Pulse Generator。


Watch Window

打開或關閉Watch Window對話框的一個View菜單項。

用途

通過使用Watch Window (VEE 8.0中的新功能)，可以︰

  • 在調試程序時查看變量和端。

  • 編輯并繼續操作。可以在調試程序時改變變量和端。程序可以繼續執行，包括任何改變的值。

  • 在細節視圖中确定對象的位置。可以方便地找到當前變量或端屬于哪個對象。

  • 把Watch Window中的項目复制到复制-粘貼緩沖器中。

對話框信息

Watch Window對話框包括四欄︰Locals, Globals, Watch Terminals和Watch Variables。每欄有三個字段。

  • Name字段顯示變量或端的名稱或標識。

  • Value字段顯示并允許編輯變量或端的值。這一功能适用于標量和多維數組。

  • Type字段顯示變量或端的數据類型和形狀。

Locals欄︰

活動上下文中的Local to Context變量將自動出現在Locals欄下。

在活動上下文變化時，Locals欄的內容將變化。在從活動上下文中刪除變量時，變量會從Watch Window對話框中自動消失。

Globals欄︰

所有Declared Global變量和Local to Library Declared變量將自動出現在Globals欄下。

未聲明變量(如通過Set Variable對象)或Imported Libraries中的變量將不會在其添加到程序后立即出現在Watch Window中。在程序執行過了Set Variable對象后，將出現一個Undeclared變量；通過運行程序導入庫后，或通過Import Library對象的上下文菜單手動加載庫后，將出現Imported庫中的Global變量。

Watch Terminals欄︰

可以選擇性地把端添加到 Watch Window的Watch Variables欄中。有3种方式在Watch Window中添加一個端︰

1. 雙擊輸入端或輸出端，打開Input / Output Terminal Information對話框，如下圖所示。

點擊Watch按鈕。如果Watch Window中已有一個端，它將不會再次添加到Watch Window中。

2. 在輸出線上按鼠標右鍵，打開Edit Line對話框，如下圖所示︰:

選擇Watch Data。如果Watch Window中已有一個輸出端，那么它將不會再次添加到Watch Window中。

3. 雙擊一條輸出線，打開Line Value對話框，如下圖所示︰

點擊Watch按鈕。如果Watch Window中已有一個輸出端，那么它將不會再次添加到 Watch Window中。

在Watch Terminal欄下，狀態欄會顯示与選定的端有關的部分信息，如端的上下文、設備名稱和端的名稱。

Watch Terminals欄中Name的格式為︰

{對象標題 -對象標識}.輸出端名稱.

例如，在下圖中，Watch Window對話框中的一個項目是{bigNum-M.21}。Int16. "bigNum"是對象標題；"M.21"是對象標識，与Properties窗口中的項目一致。"Int16"是輸出端的名稱。

Watch Variables欄︰

可以選擇性地把變量添加到Watch Window的Watch Variables欄中。有4种方式在Watch Window中添加一個變量︰

    1. 雙擊并輸入Watch Variables欄下的名稱字段；

    2. 在變量上按鼠標右鍵，查看Locals欄或Globals欄，然后選擇Add Watch；

    3. 在VEE程序的Declare Variable對象、Set Variable對象或Get Variable對象上按鼠標右鍵，然后選擇Add Watch；

    4. 在變量按鼠標右鍵，查看VEE Program Explorer，然后選擇Add Watch。

上下文菜單

在Locals欄或Globals欄下按鼠標右鍵，打開一個上下文菜單，如下圖所示。

在Watch Variable欄或Watch Terminals欄下按鼠標右鍵，打開一個上下文菜單，如下圖所示。

  • Copy -- 把選定的項目(包括Name, Value和Type字段)复制到"复制-粘貼"緩沖器中。

  • Copy Nested -- 把數組复制到"复制-粘貼"緩沖器中。Copy Nested复制選定的數組，包括其所有項目，即使Watch Window中沒有展開數組。

  • Locate -- 迅速确定相應變量或端在活動上下文中的位置。在細節視圖很大時，Locate提供了一种非常方便的功能。

  • Select All -- 選擇當前欄下的所有項目。

  • Delete -- 從Watch Variables或Watch Terminals欄中刪除選定的變量。

  • Delete All -- 從Watch Variables欄中刪除所有變量，或從Watch Terminals欄中刪除所有端。

  • Add Watch -- 把變量添加到Watch Variables欄中。

備注

  • Watch Window按字母順序對所有項目分類。

  • 在關閉Watch Window或在VEE程序關閉時，將保存Watch Terminals和Watch Variables欄下的所有項目。在重新打開Watch Windows時，Watch Window將恢复保存的所有這些項目。VEE只保存這些項目的名稱字段和類型字段，而不保存任何值。

更新和編輯值

只有在程序暫停(如遇到斷點)或停止時，才會更新Watch Window中的變量和端值。

在程序暫停或停止時，通過雙擊希望編輯的項目的取值字段，可以編輯Watch Window中的變量和端值。不能改變變量和端的名稱和類型。

在Watch Window中，在項目不能編輯時，項目會變成灰色。

Watch Window支持的數据類型

下表列出了Watch Window支持的數据類型。

數据類型 | 查看 | 編輯
Boolean | 是 | 是
Uint8 | 是 | 是
Int16 | 是 | 是
Int32 | 是 | 是
Int64 | 是 | 是
Real32 | 是 | 是
Real64 | 是 | 是
PComplex | 是 | 是
Complex | 是 | 是
Waveform | 是 | 是
Spectrum | 是 | 是
Coord | 是 | 是
Text | 是 | 是
Enum | 是 | 否
Record | 是 | 是
.NET | 是 | 是 (部分支持)
COM | 最小 | 否
Variant | 最小 | 否
Boolean,UInt8, Int16, Int32, Int64, Real32, Real64, PComplex, Complex, Coord, Text數組 | 是 | 是

快捷方式

按工具欄上的 [image] 按鈕。

位置

View [image] Watch Window


Waveform (Time)

在兩維圖形畫面上顯示時域信息(波形)的對象。

用途

使用Waveform (Time)在時域內顯示波形或頻譜。頻譜將通過反向快速傅立葉變換(ifft)自動轉換成波形。X軸為輸入波形的取樣單位（一般是秒）。

Open View參數

下面是默認的Open View參數。其用途及其它參數的使用情況由對象菜單及Properties對話框中的選項控制 (對象菜單 [image] Properties)。

Mag - Y軸的名稱。

Trace1 - 第一條軌跡的名稱。

Freq - X軸的名稱。

對象菜單

Auto Scale [image] - 點擊這些菜單項，立即把畫面重新定標成顯示整條軌跡。(可以添加為控制端，或使用Scales屬性欄設置成在采集數据后自動重新定標畫面。)

Auto Scale - 自動定標兩個軸。

Auto Scale X - 自動定標X軸。

Auto Scale Y - 自動定標Y軸。

Zoom [image] - 縮放顯示畫面。

In - 放大顯示畫面，只包含使用指針選定的矩形區域。在選擇這一功能后，通過在圖形區域上拖動，可以選擇區域。這一操作使用- 橡皮圈- 框确定信息外形。

Out 2|5|10|20|50|100X - 在相對于中心的X方向和Y方向上，以某個倍數擴大顯示范圍。

Clear Control [image] - 指明什么時候清除顯示畫面的參數。

Display - 清除顯示的軌跡。這個參數可以添加為控制端。

Next Curve - 复位畫面，顯示一系列曲線中的下一個曲線 (畫面下次運行時的數据)，而不會清除上一個曲線。在系列中每條新曲線前必須選擇(或激活)Next Curve。可以作為控制輸入添加這個參數。

Center Markers - 如果提供了標尺，那么把它們放到軌跡看得到的部分的中心。如果滾動畫面，看不到標尺，可以使用這种功能。

Add Right Scale - 添加最多兩個額外的Y軸標度，允許多條軌跡有不同的標度范圍。在添加适當的標度后，可以添加輸入端 (對象菜單 [image] Add Terminal [image] Data Input)。然后使用 Properties對話框上的Traces和Scales欄設置其屬性。

Print - 出現Print對話框。按OK將在選定的輸出設備上打印或繪制設備的整個畫面拷貝。可以作為控制輸入添加Print。

屬性

Name - 為顯示畫面指配一個變量值。通過輸入名稱，在打開時可以以程序化方式讀取標尺值。變量是Object數据類型，是存在畫面的上下文的局部變量。詳情請參閱備注。

ClearAtPreRun - 在屬性為True時，在PreRun時清除畫面。默認值為True。

ClearAtActivate - 在屬性為True時，在Activate時清除畫面。默認值為True。

ShowTracesLegend - 在Open View中，控制軌跡名稱和顏色的可視性。使用EditTracesAndScales控制軌跡圖例的編輯按鈕功能。默認值為True。

ShowScalesLegend - 在Open View中，控制標度名稱的可視性。使用EditTracesAndScales控制標度圖例的編輯按鈕功能。默認值為True。

ShowScaleLabels - 在Open View中，控制標度軸標為H的取值的可視性。默認值為True。

ShowScrollBars - 在Open View中，控制X和Y標度上的滾動條。默認值為True。

ShowAutoScaleButton - 在Open View中，控制Auto Scale按鈕的可視性。默認值為False。

EditTracesAndScales - 在Open View中，控制軌跡和標度屬性的編輯按鈕功能。在啟用時，點擊各個軌跡或標度名稱，編輯其屬性。默認值為True。使用ShowTracesLegend和ShowScalesLegend控制軌跡和標度名稱的可視性。

GridType類別︰

None-不顯示网格線。

Tic Marks - 在圖像四邊上主格和分格上顯示tic號。

Axis - 在圖像的X和Y軸上的主格和分格上顯示tic號。如果實際軸滾動到圖像區域之外，軸線將被畫在距軸最近的界線上。

Lines - 在主格顯示線，在分格顯示tic號。X和Y軸用粗線顯示。

NumMarkers 類別: -允許在顯示曲線上找到數据點的确切值。如果使用對數標度繪制數据，標尺上顯示的值為線性數据點。

點擊在畫面底部附近的標尺值左面的按鈕，可以將標尺移動至一條不同的軌跡上。按鈕可以循環順序通過不同軌跡的不同線型和顏色。

Off - 不顯示標尺。此選項為默認值。

One - 提供一個標尺。

Two - 提供兩個標尺。

Delta - 提供兩個標尺，并顯示x和y之差。

MarkerInterpolate - 當复選框被選中時，可以在顯示的數据點中設置標尺。顯示的標尺值從線性內插計算得出。默認設置為False。

默認標尺顏色為yellow。

DisplayBackColor - 允許從調色板中選擇畫面區域的顏色。在細節視圖和面板視圖中顯示時，可以選擇不同的顏色。在設置Screen Element: Graph Background的Colors欄上的Default Preferences中，設置默認的Background顏色。

Font - 允許從系統提供的字体列表中選擇標度標記的字体。標度標記文本的默認字体在Screen Element: Graph Scale Label Text的Fonts欄上的Default Preferences中設置。

Traces類別︰

Name: - 在圖形區域左面顯示的軌跡名稱及相應的輸入端名稱。

Color: - 軌跡的顏色。每條新增的軌跡有一個与現有軌跡不同的顏色。第一條軌跡的默認值是yellow。

LineStyle: - 連接多個數据點的線的格式。默認值為continuous line。

PointStyle: - 標記每個數据點的符號。為顯示沒有連接的數据點，選擇單點LineStyle格式及希望的PointStyle符號。默認值為dot。

Scales類別

Show Scale: - 如果有多個Y標度，那么這個選項(使用复選框)將指明在圖形區域右面是否顯示端點和每個新增的适當標度的軸。

Scale Name: - Open View中出現的標度名稱。

Automatic Scaling: - 控制畫面是否自動重新定標，在收到數据后立即顯示整條軌跡。默認值為打開。如果這一項關閉，可以在Layout組中使用General欄上的Auto Scale按鈕，或在對象菜單上使用Auto Scale命令，來重新定標畫面。

Maximum: - 標度的最大值。

Minimum: - 標度的最小值。

Label Spacing: - 控制哪個tic號中標上標度值。X標度的默認值是Every Other Tic；Y標度的默認值是Every Major Tic。

Mapping: - x和y數据与畫面映射的方式。映射可以是線性映射或對數映射。為繪制log-log圖，把X軸和Y軸都變成Log。默認值為Linear。

Log Cycles: - 在Automatic Scaling啟動時顯示的10的最大數量(從x和y最大值向下計數)。只有在Mapping為Log時，才使用Log Cycles。在軌跡數据中包含大的動態范圍時，适合使用Log Cycles。默認值為4。

Scale Color - 任何背景柵格或tic號的顏色。默認值為Gray。

ScaleNumberFormat: (X和Y標度及任何其它Y標度出現的屬性。)

GlobalFormat - 使用默認格式。默認值為True。

Real - 如果Global Format關閉，指定這個對象上顯示的實數數字格式。選項有︰Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如Sat 01/Jan/1994 17:01:38)。默認設置為Standard。

X和Y標尺值采用与其附在的標度相同的數字格式。X和Y的增量標尺值使用默認數字格式，除非使用Time Stamp格式。如果X標度上的標尺1和標尺2或Y標度上的兩個標尺都使用Time Stamp格式，增量標尺值將使用Delta Time格式。

備注

輸入必須為標量或數組1D。

通過只使用x和y值，而不是先轉換成Spectrum類型，來繪制Coord 型輸入數据圖。

使用Add Terminal [image] Data Input對象菜單選項添加軌跡，最多支持12條軌跡。

在Automatic Scaling屬性打開時(Scales欄)，如果把整個數据集合發送到顯示畫面上，程序執行速度要更快。然后，顯示畫面會自動重新定標一次。如果程序一次把一個數据點發送到顯示畫面上，顯示畫面可以在每個數字點以后自動重新定標，這會降慢程序執行速度。在這种情況下，使用Collector對象創建一個數組，然后把數組發送到顯示畫面上。.

添加控制輸入

可以添加一個Title控制輸入端，把標題欄名稱設置成指定的文本值。這可以程控打印畫面時顯示的標題。

可以添加一個Traces控制輸入端。控制輸入數据必須是由多個記錄組成的數組(或如果只想控制一條軌跡，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為TraceNum的字段及一個整數值(1是第一條軌跡)。要求 TraceNum字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name

Pen

LineType

PointType

Name字段必須有一個文本值。Pen, LineType和PointType值必須是從0到 n 的整數，其中0不繪圖，n 是提供的選項數量。

可以添加一個Scales控制輸入端，控制上面列出的標度參數。控制輸入數据必須是由多個記錄組成的數組(如果只想控制一個標度，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為Scale的Text字段，取值為X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name - 在Open View中改變標度名稱。必須是一個文本值。

Min - 設置X標度的最小值。必須是一個整數值或實數值。

Max - 設置X標度的最大值。必須是一個整數值或實數值。

Mapping - 必須有一個Linear或Log文本值。

AutoScale - 控制自動定標。必須有一個On或Off的文本值。

如需進一步信息，請參閱使用記錄和使用DataSets。

以程序化方式設置和讀取標尺值

可以以程序化方式獲得和設置標尺值。為準備顯示，打開Properties窗口。為Name輸入一個值。Name值暗示聲明Object變量是顯示畫面上下文的局部變量。然后，在Markers組中打開一個設置。VEE為標尺的X位置和Y位置指配下述屬性，包括增量值。(Marker1指向下；Marker2指向上。)

Marker1X (作為Real64獲得位置)

Marker1Y (作為Real64獲得位置)

Marker2X (作為Real64獲得位置)

Marker2Y (作為Real64獲得位置)

MarkerDX (作為Real64獲得位置)

MarkerDY (作為Real64獲得位置)

Marker1 (作為Coord獲得/設置位置)

Marker2 (作為Coord獲得/設置位置)

可以使用Marker1和Marker2屬性，讀取當前標尺位置，或把標尺移動到新位置。所有其它標尺屬性都是只讀的。如果試圖把標尺移動到不在軌跡的坐標上，標尺會"咬"住軌跡上最近的點上。

在程序中，在Formula對象中輸入一個或多個表達式，設置或讀取標尺值。每個表達式必須包含顯示畫面Name和相關的標尺屬性。標尺屬性名稱不分大小寫。如果顯示畫面的Name是XY，同時打開Delta Markers，那么下述表達式將讀取提供的所有標尺值，并作為Real64標量把它們指配給變量a到f︰

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把顯示畫面Name指配給一個全局變量。在Formula對象中，在程序內添加一個賦值表達式，使用Declare Variable對象聲明全局變量。例如，假設已經聲明globalXY變量為全局變量，并把其Type設為Object，那么在存在顯示畫面的上下文中，在程序中添加下面的表達式︰

Set globalXY = XY

可以從使用表達式的程序的另一個上下文中讀取顯示畫面的標尺值，如︰

a = globalXY.Marker1X

在開發程序時，您可能想包括一种方式暫停程序，以便在程序讀取值之前手動重新定位標尺。暫停程序的方式之一是在顯示畫面的序列輸出和Formula對象的序列輸入之間添加一個Confirm (OK)按鈕。您也可能想以程序化方式定位標尺。

位置

Display [image] Waveform (Time)

另請參閱

Complex Plane, Magnitude Spectrum, Polar Plot, Strip Chart, X vs Y Plot, XY Trace和默認首選項。

顯示波形, 在顯示畫面中設置標尺, 獲得和設置標尺屬性


什么是IVI?

IVI (可互換的虛擬儀器)是IVI協會制訂的一項新標準。可以查閱http://www.ivifoundation.org獲得更多信息。IVI協會的目標是建立一個驅程標準，允許儀器實現互換，同時仍能提供很高的質量和性能。互換能力意味著您可以為福祿克公司的任意波形發生器(ARB)編寫一個程序，然后換上安捷倫ARB和驅程。程序仍能工作，因為ARB的IVI標準要求不同制造商的ARB能夠支持完全相同的一套函數調用。當然，對互換能力有一些限制。

IVI-C与IVI-COM比較

IVI協會目前規定了兩類驅程。IVI-C驅程擴展了VXIplug&play驅程規范，使用方式類似。IVI-COM驅程与ActiveX控件類似。因此，盡管這兩個驅程的功能類似，但使用方式有很大差別。

另請參閱

.NET和IVI驅程


WhichOS()

用来输出Agilent VEE Pro目前正在运行的操作系统的对象。

用途

使用whichOS()确定Agilent VEE Pro正在运行的操作系统。它会返回其中下面一个字符串：

Windows_NT

Windows_98

Windows_2000

Windows XP

范例

在PC上Agilent VEE Pro for Windows 98: whichOS()返回Windows_98。

备注

whichOS()对象是一个在没有输入的情况下初始化的Formula对象，其中包含whichOS()公式。还可以在任何其它Formula对象或表达式中输入whichOS()。

位置

Device > Function & Object Browser

Type: Built-in Functions Category: System Information Member: whichOS

另请参阅

Formula, whichVersion().


whichVersion()

用来输出目前正在运行的VEE版本的对象。

用途

使用whichVersion()确定正在运行的VEE版本。这个字符串与Help [image] About对话框中出现的字符串相同。

范例

对VEE 3.2版，whichVersion()返回文本字符串3.2。

备注

whichVersion()对象是一个在没有输入的情况下初始化的Formula对象，其中包含whichVersion()公式。还可以在任何其它Formula对象或表达式中输入whichVersion()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: whichVersion

另请参阅

Formula和whichOS()


Write to Event Log

把VEE错误信息写入到Application事件日志中。

位置

System [image] Write to Event Log


X vs Y Plot

顯示Cartesian曲線的對象。

用途

當X和Y數据有不同的數据信息時，使用X vs Y Plot來繪制并顯示這些值。在打印一條以上的軌跡時，每次執行X vs Y Plot對象會使用一個X輸入數据及每條軌跡的Y輸入數据，因此所有軌跡共享相同的X輸入數据。如果需要不同的X數据值，必須為每條軌跡建立坐標或映射的數組，并使用X-Y Trace對象。

所有的輸入的大小和形狀必須相同。忽略輸入數据上的映射信息。

Open View參數

下面是默認的Open View參數。其用途及其它參數的使用情況由對象菜單及Properties對話框中的選項控制 (對象菜單 [image] Properties)。

Y name - Y軸的名稱。

YData1 - 第一條軌跡的名稱。

X name 胍軸的名稱。

對象菜單

Auto Scale [image] -點擊這些菜單項，立即把畫面重新定標成顯示整條軌跡。（可以添加為控制端，或在收集數据后使用Scales屬性欄設置，自動調整顯示畫面的大小。）

Auto Scale - 自動定標兩個軸。

Auto Scale X - 自動定標X軸。

Auto Scale Y - 自動定標Y軸。

Zoom [image] - 縮放顯示畫面。

In - 放大顯示畫面，只包含使用指針選定的矩形區域。在選擇這一功能后，通過在圖形區域上拖動，可以選擇區域。這一操作使用 "橡皮圈" 框确定信息外形。

Out 2|5|10|20|50|100X - 在相對于中心的X方向和Y方向上，以某個倍數擴大顯示范圍。

Clear Control [image] - 指明什么時候清除顯示畫面的參數。

Display - 清除顯示的軌跡。這個參數可以添加為控制端。

Next Curve - 复位畫面，顯示一系列曲線中的下一個曲線 (畫面下次運行時的數据)，而不會清除上一個曲線。在系列中每條新曲線前必須選擇(或激活)Next Curve。可以作為控制輸入添加這個參數。

Center Markers - 如果提供了標尺，那么把它們放到軌跡看得到的部分的中心。如果滾動畫面，看不到標尺，可以使用這种功能。

Add Right Scale - 添加最多兩個額外的Radius軸標度，允許多條軌跡有不同的標度范圍。在添加适當的標度后，可以添加輸入端 (對象菜單 [image] Add Terminal [image] Data Input)。然后使用 Properties對話框上的Traces和Scales欄設置其屬性。

Print - 出現Print對話框。按OK將在選定的輸出設備上打印或繪制設備的整個畫面拷貝。可以作為控制輸入添加Print。

屬性

Name - 為顯示畫面指配一個變量值。通過輸入名稱，在打開時可以以程序化方式讀取標尺值。變量是Object數据類型，是存在畫面的上下文的局部變量。詳情請參閱備注。

ClearAtPreRun - 在屬性為True時，在PreRun時清除畫面。默認值為True。

ClearAtActivate - 在屬性為True時，在Activate時清除畫面。默認值為True。

ShowTracesLegend - 在Open View中，控制軌跡名稱和顏色的可視性。使用EditTracesAndScales控制軌跡圖例的編輯按鈕功能。默認值為True。

ShowScalesLegend - 在Open View中，控制標度名稱的可視性。使用EditTracesAndScales控制標度圖例的編輯按鈕功能。默認值為True。

ShowScalesLabels - 在Open View中，控制標為標度軸的值的可視性。默認值為True。

Show Scroll Bars - 在Open View中，控制X和Y標度上滾動條的可視性。默認值為True。

ShowAutoScaleButton - 在Open View中，控制Auto Scale按鈕的可視性。默認值為False。

EnableEditTracesAndScales - 在Open View中，控制軌跡和標度屬性的編輯按鈕功能。在啟用時，點擊各個軌跡或標度名稱，編輯其屬性。默認值為True。使用ShowTracesLegend和ShowScalesLegend控制軌跡和標度名稱的可視性。

GridType類別︰

None-不顯示网格線。

Tic Marks - 在圖像四邊上主格和分格上顯示tic號。

Axis - 在圖像的X和Y軸上的主格和分格上顯示tic號。如果實際軸滾動到圖像區域之外，軸線將被畫在距軸最近的界線上。

Lines - 在主格顯示線，在分格顯示tic號。X和Y軸用粗線顯示。

NumMarkers 類別: -允許在顯示曲線上找到數据點的确切值。如果使用對數標度繪制數据，標尺上顯示的值為線性數据點。

點擊在畫面底部附近的標尺值左面的按鈕，可以將標尺移動至一條不同的軌跡上。按鈕可以循環順序通過不同軌跡的不同線型和顏色。

Off - 不顯示標尺。此選項為默認值。

One - 提供一個標尺。

Two - 提供兩個標尺。

Delta - 提供兩個標尺，并顯示x和y之差。

MarkerInterpolate - 當复選框被選中時，可以在顯示的數据點中設置標尺。顯示的標尺值從線性內插計算得出。默認設置為False。

默認標尺顏色為yellow。

DisplayBackColor - 允許從調色板中選擇畫面區域的顏色。在細節視圖和面板視圖中顯示時，可以選擇不同的顏色。在設置Screen Element: Graph Background的Colors欄上的Default Preferences中，設置默認的Background顏色。

Scale Label Text - 允許從系統提供的字体列表中選擇標度標記的字体。標度標記文本的默認字体在Screen Element: Graph Scale Label Text的Fonts欄上的Default Preferences中設置。

Traces組︰（每條軌跡一個）

Name: - 在圖形區域左面顯示的軌跡名稱及相應的輸入端名稱。

Color: - 軌跡的顏色。每條新增的軌跡有一個与現有軌跡不同的顏色。第一條軌跡的默認值是yellow。

LineStyle: - 連接多個數据點的線的格式。默認值為continuous line。

PointStyle: - 標記每個數据點的符號。為顯示沒有連接的數据點，選擇單點LineStyle格式及希望的PointStyle符號。默認值為dot。

Scale - 如果存在一個以上的Y標度，選擇這條Trace使用的標度。

Scales屬性(每個X和Y標度一個，外加額外的Y標度)

Show Scale: - 如果有多個Y標度，那么這個選項(使用复選框)將指明在圖形區域右面是否顯示端點和每個新增的适當標度的軸。

Scale Name: - Open View中出現的標度名稱。

Automatic Scaling: - 控制畫面是否自動重新定標，在收到數据后立即顯示整條軌跡。默認值為打開。如果這一項關閉，可以在Layout組中使用General欄上的Auto Scale按鈕，或在對象菜單上使用Auto Scale命令，來重新定標畫面。

Maximum: - 標度的最大值。

Minimum: - 標度的最小值。

Label Spacing: - 控制哪個tic號中標上標度值。X標度的默認值是Every Other Tic；Y標度的默認值是Every Major Tic。

Mapping: - x和y數据与畫面映射的方式。映射可以是線性映射或對數映射。為繪制log-log圖，把X軸和Y軸都變成Log。默認值為Linear。

Log Cycles: - 在Automatic Scaling啟動時顯示的10的最大數量(從x和y最大值向下計數)。只有在Mapping為Log時，才使用Log Cycles。在軌跡數据中包含大的動態范圍時，适合使用Log Cycles。默認值為4。

Scale Color - 任何背景柵格或tic號的顏色。默認值為Gray。

ScaleNumberFormat: (X和Y標度及任何其它Y標度出現的屬性。)

GlobalFormat - 使用默認格式。默認值為True。

Real - 如果Global Format關閉，指定這個對象上顯示的實數數字格式。選項有︰Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如 Wed 01/Jan/2003 17:01:38)。默認設置為Standard。

X和Y標尺值采用与其附在的標度相同的數字格式。X和Y的增量標尺值使用默認數字格式，除非使用Time Stamp格式。如果X標度上的標尺1和標尺2或Y標度上的兩個標尺都使用Time Stamp格式，增量標尺值將使用Delta Time格式。

備注

輸入必須為標量或數組1D。

使用Add Terminal [image] Data Input對象菜單選項添加軌跡，最多支持12條軌跡。

在Automatic Scaling屬性打開時(Scales欄)，如果把整個數据集合發送到顯示畫面上，程序執行速度要更快。然后，顯示畫面會自動重新定標一次。如果程序一次把一個數据點發送到顯示畫面上，顯示畫面可以在每個數字點以后自動重新定標，這會降慢程序執行速度。在這种情況下，使用Collector對象創建一個數組，然后把數組發送到顯示畫面上。

添加控制輸入

可以添加一個Title控制輸入端，把標題欄名稱設置成指定的文本值。這可以程控打印畫面時顯示的標題。

可以添加一個Traces控制輸入端。控制輸入數据必須是由多個記錄組成的數組(或如果只想控制一條軌跡，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為TraceNum的字段及一個整數值(1是第一條軌跡)。要求 TraceNum字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name

Pen

LineType

PointType

Name字段必須有一個文本值。Pen, LineType和PointType值必須是從0到 n 的整數，其中0不繪圖，n 是提供的選項數量。

可以添加一個Scales控制輸入端，控制上面列出的標度參數。控制輸入數据必須是由多個記錄組成的數組(如果只想控制一個標度，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為Scale的Text字段，取值為X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name - 在Open View中改變標度名稱。必須是一個文本值。

Min - 設置X標度的最小值。必須是一個整數值或實數值。

Max - 設置X標度的最大值。必須是一個整數值或實數值。

Mapping - 必須有一個Linear或Log文本值。

AutoScale - 控制自動定標。必須有一個On或Off的文本值。

如需進一步信息，請參閱使用記錄和使用DataSets。

以程序化方式設置和讀取標尺值

可以以程序化方式獲得和設置標尺值。為準備顯示，打開Properties窗口。為Name輸入一個值。Name值暗示聲明Object變量是顯示畫面上下文的局部變量。然后，在Markers組中打開一個設置。VEE為標尺的X位置和Y位置指配下述屬性，包括增量值。(Marker1指向下；Marker2指向上。)

Marker1X (作為Real64獲得位置)

Marker1Y (作為Real64獲得位置)

Marker2X (作為Real64獲得位置)

Marker2Y (作為Real64獲得位置)

MarkerDX (作為Real64獲得位置)

MarkerDY (作為Real64獲得位置)

Marker1 (作為Coord獲得/設置位置)

Marker2 (作為Coord獲得/設置位置)

可以使用Marker1和Marker2屬性，讀取當前標尺位置，或把標尺移動到新位置。所有其它標尺屬性都是只讀的。如果試圖把標尺移動到不在軌跡的坐標上，標尺會"咬"住軌跡上最近的點上。

在程序中，在Formula對象中輸入一個或多個表達式，設置或讀取標尺值。每個表達式必須包含顯示畫面Name和相關的標尺屬性。標尺屬性名稱不分大小寫。如果顯示畫面的Name是XY，同時打開Delta Markers，那么下述表達式將讀取提供的所有標尺值，并作為Real64標量把它們指配給變量a到f︰

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把顯示畫面Name指配給一個全局變量。在Formula對象中，在程序內添加一個賦值表達式，使用Declare Variable對象聲明全局變量。例如，假設已經聲明globalXY變量為全局變量，并把其Type設為Object，那么在存在顯示畫面的上下文中，在程序中添加下面的表達式︰

Set globalXY = XY

可以從使用表達式的程序的另一個上下文中讀取顯示畫面的標尺值，如︰

a = globalXY.Marker1X

在開發程序時，您可能想包括一种方式暫停程序，以便在程序讀取值之前手動重新定位標尺。暫停程序的方式之一是在顯示畫面的序列輸出和Formula對象的序列輸入之間添加一個Confirm (OK)按鈕。您也可能想以程序化方式定位標尺。

位置

Display [image] X vs Y Plot

另請參閱

Complex Plane, Magnitude Spectrum, Polar Plot, Strip Chart, Waveform (Time), XY Trace, 默認首選項 和 對象單

顯示XY值, 在顯示畫面中設置標尺, 獲得和顯示標尺屬性


XY Trace

顯示兩維Cartesian曲線的對象。

用途

當在使用均勻間隔的x值生成y數据時，使用XY Trace顯示所映射的數組或一組值。在您不需要（或擁有）帶標度的x數据值時，可以使用XY Trace快速查看數据。

自動生成的x值取決于軌跡數据的數据類型。例如，如果軌跡為實數值，則x值為0、1、2，等等。如果軌跡是一個波形，那么x值為時間值。

Open View參數

下面是默認的Open View參數。其用途及其它參數的使用情況由對象菜單及Properties對話框中的選項控制 (對象菜單 [image] Properties)。

Y name - Y軸的名稱。

Trace1 - 第一條軌跡的名稱。

X name 胍軸的名稱。

對象菜單

Auto Scale [image] -點擊這些菜單項，立即把畫面重新定標成顯示整條軌跡。（可以添加為控制端，或在收集數据后使用Scales屬性欄設置，自動調整顯示畫面的大小。）

Auto Scale - 自動定標兩個軸。

Auto Scale X - 自動定標X軸。

Auto Scale Y - 自動定標Y軸。

Zoom [image] - 縮放顯示畫面。

In - 放大顯示畫面，只包含使用指針選定的矩形區域。在選擇這一功能后，通過在圖形區域上拖動，可以選擇區域。這一操作使用“橡皮圈”框确定信息外形。

Out 2|5|10|20|50|100X - 在相對于中心的X方向和Y方向上，以某個倍數擴大顯示范圍。

Clear Control [image] - 指明什么時候清除顯示畫面的參數。

Display - 清除顯示的軌跡。這個參數可以添加為控制端。

Next Curve - 复位畫面，顯示一系列曲線中的下一個曲線 (畫面下次運行時的數据)，而不會清除上一個曲線。在系列中每條新曲線前必須選擇(或激活)Next Curve。可以作為控制輸入添加這個參數。

Center Markers - 如果提供了標尺，那么把它們放到軌跡看得到的部分的中心。如果滾動畫面，看不到標尺，可以使用這种功能。

Add Right Scale - 添加最多兩個額外的Radius軸標度，允許多條軌跡有不同的標度范圍。在添加适當的標度后，可以添加輸入端 (對象菜單 [image] Add Terminal [image] Data Input)。然后使用 Properties對話框上的Traces和Scales欄設置其屬性。

Print - 出現Print對話框。按OK將在選定的輸出設備上打印或繪制設備的整個畫面拷貝。可以作為控制輸入添加Print。

屬性

Name - 為顯示畫面指配一個變量值。通過輸入名稱，在打開時可以以程序化方式讀取標尺值。變量是Object數据類型，是存在畫面的上下文的局部變量。詳情請參閱備注。

ClearAtPreRun - 在屬性為True時，在PreRun時清除畫面。默認值為True。

ClearAtActivate - 在屬性為True時，在Activate時清除畫面。默認值為True。

ShowTracesLegend - 在Open View中，控制軌跡名稱和顏色的可視性。使用EditTracesAndScales控制軌跡圖例的編輯按鈕功能。默認值為True。

ShowScalesLegend - 在Open View中，控制標度名稱的可視性。使用EditTracesAndScales控制標度圖例的編輯按鈕功能。默認值為True。

ShowScalesLabels - 在Open View中，控制標為標度軸的值的可視性。默認值為True。

Show Scroll Bars - 在Open View中，控制X和Y標度上滾動條的可視性。默認值為True。

ShowAutoScaleButton - 在Open View中，控制Auto Scale按鈕的可視性。默認值為False。

EnableEditTracesAndScales - 在Open View中，控制軌跡和標度屬性的編輯按鈕功能。在啟用時，點擊各個軌跡或標度名稱，編輯其屬性。默認值為True。使用ShowTracesLegend和ShowScalesLegend控制軌跡和標度名稱的可視性。

GridType類別︰

None-不顯示网格線。

Tic Marks - 在圖像四邊上主格和分格上顯示tic號。

Axis - 在圖像的X和Y軸上的主格和分格上顯示tic號。如果實際軸滾動到圖像區域之外，軸線將被畫在距軸最近的界線上。

Lines - 在主格顯示線，在分格顯示tic號。X和Y軸用粗線顯示。

Markers組: -允許在顯示曲線上找到數据點的确切值。如果使用對數標度繪制數据，標尺上顯示的值為線性數据點。

點擊在畫面底部附近的標尺值左面按鈕的Open View，可以將標尺移動至一條不同的軌跡上。按鈕可以循環順序通過不同軌跡的不同線型和顏色。

Markers 組:

Off - 不顯示標尺。此選項為默認值。

One - 提供一個標尺。

Two - 提供兩個標尺。

Delta - 提供兩個標尺，并顯示x和y之差。

MarkerInterpolate - 當复選框被選中時，可以在顯示的數据點中設置標尺。顯示的標尺值從線性內插計算得出。默認設置為False。

MarkerColor - 允許您改變畫面上的標尺顏色。

BackColor - 允許從調色板中選擇畫面區域的顏色。在細節視圖和面板視圖中顯示時，可以選擇不同的顏色。在設置Screen Element: Graph Background的Colors欄上的Default Preferences中，設置默認的Background顏色。

Scale Label組:

Text - 允許從系統提供的字体列表中選擇標度標記的字体。標度標記文本的默認字体在Screen Element: Graph Scale Label Text的Fonts欄上的Default Preferences中設置。

Traces 組︰每條軌跡一個。

Name: - 在圖形區域左面顯示的軌跡名稱及相應的輸入端名稱。

Color: - 軌跡的顏色。每條新增的軌跡有一個与現有軌跡不同的顏色。第一條軌跡的默認值是yellow。

LineStyle: - 連接多個數据點的線的格式。默認值為continuous line。

PointStyle: - 標記每個數据點的符號。為顯示沒有連接的數据點，選擇單點LineStyle格式及希望的PointStyle符號。默認值為dot。

Scale - 如果存在一個以上的Y標度，選擇這條Trace使用的標度。

Scales屬性(每個X和Y標度一個，外加額外的Y標度)

Show Scale: - 如果有多個Y標度，那么這個選項(使用复選框)將指明在圖形區域右面是否顯示端點和每個新增的适當標度的軸。

Scale Name: - Open View中出現的標度名稱。

Automatic Scaling: - 控制畫面是否自動重新定標，在收到數据后立即顯示整條軌跡。默認值為打開。如果這一項關閉，可以在Layout組中使用General欄上的Auto Scale按鈕，或在對象菜單上使用Auto Scale命令，來重新定標畫面。

Maximum: - 標度的最大值。

Minimum: - 標度的最小值。

Label Spacing: - 控制哪個tic號中標上標度值。X標度的默認值是Every Other Tic；Y標度的默認值是Every Major Tic。

Mapping: - x和y數据与畫面映射的方式。映射可以是線性映射或對數映射。為繪制log-log圖，把X軸和Y軸都變成Log。默認值為Linear。

Log Cycles: - 在Automatic Scaling啟動時顯示的10的最大數量(從x和y最大值向下計數)。只有在Mapping為Log時，才使用Log Cycles。在軌跡數据中包含大的動態范圍時，适合使用Log Cycles。默認值為4。

Scale Color - 任何背景柵格或tic號的顏色。默認值為Gray。

ScaleNumberFormat: (X和Y標度及任何其它Y標度出現的屬性。)

GlobalFormat - 使用默認格式。默認值為True。

Real - 如果Global Format關閉，指定這個對象上顯示的實數數字格式。選項有︰Fixed (如98.6000), Scientific (如9.8600E+01), Engineering (如98.6000E0), Standard (如98.6),和Time Stamp (如 Wed 01/Jan/2003 17:01:38)。默認設置為Standard。

X和Y標尺值采用与其附在的標度相同的數字格式。X和Y的增量標尺值使用默認數字格式，除非使用Time Stamp格式。如果X標度上的標尺1和標尺2或Y標度上的兩個標尺都使用Time Stamp格式，增量標尺值將使用Delta Time格式。

備注

輸入必須為可以轉換成Real64類型的標量或數組1D。在輸入XY Trace之前，必須"unbuild" Complex、PComplex和Spectrum數据。

通過只使用x和y值，而不是先轉換成Spectrum類型，來繪制Coord 型輸入數据圖。

使用Add Terminal [image] Data Input對象菜單選項添加軌跡，最多支持12條軌跡。

在Automatic Scaling屬性打開時(Scales欄)，如果把整個數据集合發送到顯示畫面上，程序執行速度要更快。然后，顯示畫面會自動重新定標一次。如果程序一次把一個數据點發送到顯示畫面上，顯示畫面可以在每個數字點以后自動重新定標，這會降慢程序執行速度。在這种情況下，使用Collector對象創建一個數組，然后把數組發送到顯示畫面上。

添加控制輸入

可以添加一個Title控制輸入端，把標題欄名稱設置成指定的文本值。這可以程控打印畫面時顯示的標題。

可以添加一個Traces控制輸入端。控制輸入數据必須是由多個記錄組成的數組(或如果只想控制一條軌跡，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為TraceNum的字段及一個整數值(1是第一條軌跡)。要求 TraceNum字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name

Pen

LineType

PointType

Name字段必須有一個文本值。Pen, LineType和PointType值必須是從0到 n 的整數，其中0不繪圖，n 是提供的選項數量。

可以添加一個Scales控制輸入端，控制上面列出的標度參數。控制輸入數据必須是由多個記錄組成的數組(如果只想控制一個標度，那么可以是一個記錄標量)。使用Record Constant或Build Record對象，創建由多個記錄組成的數組；每個記錄必須有下述字段︰

一個名為Scale的Text字段，取值為X, Y (或Y1), Y2或Y3。要求 Scale字段，如果省略這個字段，會發生錯誤。

一個或多個下述字段︰

Name - 在Open View中改變標度名稱。必須是一個文本值。

Min - 設置X標度的最小值。必須是一個整數值或實數值。

Max - 設置X標度的最大值。必須是一個整數值或實數值。

Mapping - 必須有一個Linear或Log文本值。

AutoScale - 控制自動定標。必須有一個On或Off的文本值。

如需進一步信息，請參閱使用記錄和使用DataSets。

以程序化方式設置和讀取標尺值

可以以程序化方式獲得和設置標尺值。為準備顯示，打開Properties窗口。為Name輸入一個值。Name值暗示聲明Object變量是顯示畫面上下文的局部變量。然后，在Markers組中打開一個設置。VEE為標尺的X位置和Y位置指配下述屬性，包括增量值。(Marker1指向下；Marker2指向上。)

Marker1X (作為Real64獲得位置)

Marker1Y (作為Real64獲得位置)

Marker2X (作為Real64獲得位置)

Marker2Y (作為Real64獲得位置)

MarkerDX (作為Real64獲得位置)

MarkerDY (作為Real64獲得位置)

Marker1 (作為Coord獲得/設置位置)

Marker2 (作為Coord獲得/設置位置)

可以使用Marker1和Marker2屬性，讀取當前標尺位置，或把標尺移動到新位置。所有其它標尺屬性都是只讀的。如果試圖把標尺移動到不在軌跡的坐標上，標尺會"咬"住軌跡上最近的點上。

在程序中，在Formula對象中輸入一個或多個表達式，設置或讀取標尺值。每個表達式必須包含顯示畫面Name和相關的標尺屬性。標尺屬性名稱不分大小寫。如果顯示畫面的Name是XY，同時打開Delta Markers，那么下述表達式將讀取提供的所有標尺值，并作為Real64標量把它們指配給變量a到f︰

a = XY.Marker1X

b = XY.Marker1Y

c = XY.Marker2X

d = XY.Marker2Y

e = XY.MarkerDX

f = XY.MarkerDY

可以把顯示畫面Name指配給一個全局變量。在Formula對象中，在程序內添加一個賦值表達式，使用Declare Variable對象聲明全局變量。例如，假設已經聲明globalXY變量為全局變量，并把其Type設為Object，那么在存在顯示畫面的上下文中，在程序中添加下面的表達式︰

Set globalXY = XY

可以從使用表達式的程序的另一個上下文中讀取顯示畫面的標尺值，如︰

a = globalXY.Marker1X

在開發程序時，您可能想包括一种方式暫停程序，以便在程序讀取值之前手動重新定位標尺。暫停程序的方式之一是在顯示畫面的序列輸出和Formula對象的序列輸入之間添加一個Confirm (OK)按鈕。您也可能想以程序化方式定位標尺。

位置

Display [image] XY Trace

另請參閱

Complex Plane, Magnitude Spectrum, Polar Plot, Strip Chart, Waveform (Time), X vs Y Plot, 默認首選項 和 對象菜單

顯示XY值, 在顯示畫面中設置標尺, 獲得和設置標尺屬性


abs(x)

返回x的絕對值的對象。

用途

使用abs(x)獲得容器中的數字的絕對值。x是任何形狀，返回的形狀相同。對Complex, PComplex和Spectrum類型，絕對值是复數的幅度；因此會返回相同形狀的Real64。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | 相同形狀的Real64
PComplex | 相同形狀的Real64
Spectrum | 相同形狀的Real64

范例

abs(-34) 返回34。

備注

結果中保留映射關系。最大的負Int32將引起錯誤。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts
Member: abs

另請參閱

Complex Parts, mag(x), Real Parts和signof(x)。


acos(x)

返回x的反余弦的對象。

用途

使用acos(x)生成x數据的反余弦，結果范圍為0 - PI。x可以是任意形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

acos(1) 返回0，Trig Mode設為Degrees。

acos((1.54308, @0)) 返回(0.9999, @1.87079)， Trig Mode設為Radians。

備注

結果中保留映射關系。把Trig Mode設為Radians之外的任何值可能會在第12個有效位以后會導致精度誤差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: acos

另請參閱

acosh(x), cos(x), sin(x), tan(x), Trig和默認首選項。


acosh(x)

返回x的雙曲線反余弦的對象。

用途

使用acosh(x)生成x數据的雙曲線反余弦。x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

acosh(1)返回0。

備注

結果中保留映射關系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: acosh

另請參閱

acos(x), cosh(x), Trig, sinh(x)和tanh(x)。


acot(x)

返回x的反余切的對象。

用途

使用acot(x)生成x數据的反余切，返回atan(1/x)。acot(0) 將返回PI/2。x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

返回值將采用當前的Trig Mode洙位。

范例

acot(1) 返回45，其中Trig Mode設為Degrees。

acot((1.31303, @PI/2)) 返回(1.00, @-1.57079)，其中Trig Mode設為Radians。

備注

結果中保留映射關系。把Trig Mode設成Radians之外的其它值可能會導致在第12個有效位之后出現精度誤差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: acot

另請參閱

acoth(x), atan2(y,x), cos(x), sin(x), tan(x), Trig和首選默認項。


acoth(x)

返回x的雙曲線反余切的對象。

用途

使用acoth(x)生成x數据的雙曲線反余切。x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

acoth(1.5) 返回0.8047。

備注

結果中保留映射關系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: acoth

另請參閱

acot(x), cosh(x), coth(x), Trig, sinh(x)和tanh(x)。


a + b (add)

a + b (加法)

在兩個運算對象上執行加法運算的對象。

用途

使用a + b把兩個容器值相加。兩個容器可以是任何類型和任何形狀。如果其中一個容器是數組，另一個數組必須是標量或相同大小和形狀的數組。結果是最高類型的容器，其形狀与運算對象相同。

如果兩個運算對象的類型都是Coord，它們必須有完全匹配的獨立變量，否則會返回錯誤信息。只能在相關(最后)變量上執行加法運算。

文本以級聯方法執行加法運算。Enums在加法中轉換成Text。注意兩個字符串相加与concat(x, y)函數不同。在concat函數中，concat("hello","there")會得到長2的一維數組["hello", "there"]。

范例

數組加標量︰ [1, 2, 3] + 3得到[4, 5, 6]。

兩個Complex標量︰(2,4) + (1,3)得到(3,7)。

兩個數組︰[1, 2, 3] + [4, 5, 6]得到[5, 7, 9]。

兩個Coord標量︰coord(1,3) + coord(1,5)得到coord(1,8)。

兩個Coord標量︰coord(1,3) + coord(2,5)得到錯誤。

兩個文本︰"hello" + "there"得到"hellothere"。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任意其它類型的映射數組)，另一個容器必須沒有映射或具有完全相同的映射。返回值的映射關系將与運算對象相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Arithmetic
Member: +

另請參閱

concat(x,y), a / b (除法), a * b (乘法),和a - b (減法)。


Ai(x)

用来计算x的Airy分数阶贝塞尔函数的对象。

用途

使用Ai(x)找到x的分数阶贝塞尔函数Airy。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

对Coord输入类型，运算在相关变量上完成。

范例

Ai(10)返回0.110475325528986。

备注

忽略运算对象上的映射关系，输出容器的映射关系与输入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: Ai

另请参阅

Bi(x), j0(x), j1(x), jn(x,n), y0(x), y1(x)和yn(x,n)。


a ~= b (almost equal to)

a ~= b (約等于)

在兩個運算對象上執行約等于運算的對象。

用途

使用a ~= b确定一個容器的值在小數點后前七位中是否等于另一個容器的值。兩個容器可以是任何類型和任何形狀。它將精确比較Integer、Enum和Text類型。如果其中一個容器是一個數組(或一個記錄)，另一個容器必須是相同大小和形狀的一個標量或一個數組(或一個記錄)。結果是值為0或1的標量Int32。如果第一個運算對象約等于第二個運算對象，那么結果值為1；否則值為0。

X ~= 0 (零)在本處沒有意義，因為零有無窮大的精度位數，沒有數量級。這要求与零進行的任何比較都要精确匹配。因此，把任何值X与0 (零)比較一直會返回0 (假)，除非X就等于0。

約等于不能執行与Device [image] Comparator相同的運算。在比較包含零的波形或數組時，應使用Comparator。Comparator可以從參考數据的幅度中導出"虛零"值。

如果兩個運算對象的類型都是Coord，其所有相關變量的小數點后前七位必須相匹配，結果才為1。如果獨立變量不匹配，那么會返回一個錯誤。Complex、PComplex和Spectrum容器的兩個部分必須大体匹配，運算結果才會返回1。Enums轉換成Text進行比較。

數組中兩個容器的對應值都是約等于時，運算才會返回1。

范例

兩個標量: 3.1234560 ~= 3.1234559返回1。

兩個標量: 3.1234560 ~= 3.1234459返回0。

一個標量和一個數組: 3.1234560 ~= [3.1234559, 3.1234562, 3.1234563]返回1。

一個標量和一個數組: 3.1234560 ~= [3.1234459, 3.1234562, 3.1234569]返回0。

兩個Complex標量: (2.12345,3.12345) ~= (2.12344,3.12345)返回0。

兩個Complex標量: (2.1234567,3.12345) ~= (2.1234566,3.12345)返回1。

兩個Coord標量: coord(1,3.123456) ~= coord(1,3.123446)返回0。

兩個Coord標量: coord(1,3.123456) ~= coord(2,3.123456)返回Values for independent variables must match。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同；否則會返回錯誤。

Complex和Polar Complex數字的"約等于"測試略有差异。對兩個實數(a和b)，"約等于"測試為︰

a - b <= a * 10E-7

但是，對兩個Complex值(a和b)，測試為︰

re(a) - re(b) <= mag(a) * 10E-7

其中︰

re(a)是a的實數部分。

re(b)是b的實數部分。

mag(a)是a的矢量幅度。

這一測試同時用于Complex和Polar Complex數字，避免与“約等于”的矩形和極坐標處理有關的任何模棱兩可情況。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Comparison
Member: ~=

另請參閱

a AND b, a == b (等于), a > b (大于), a >= b (大于等于), a < b (小于), a <= b (小于等于), NOT a, a != b (不等于), a OR b, 比較和a XOR b。

Comparator, Conditional和If/Then/Else。


a AND b

在兩個運算對象上執行AND邏輯運算的對象。

用途

使用a AND b，确定兩個容器的值是否在邏輯上都是真(非零)。兩個容器可以是任何類型和任何形狀。如果其中一個容器是一個數組，另一個容器必須是一個標量或相同大小和形狀的數組。結果是形狀与運算對象相同的Int32，值為0或1。如果兩個運算對象都不是零，那么AND的運算值為1；否則運算值為0。

如果兩個運算對象的類型都是Coord，那么其獨立變量必須完全匹配，否則會返回錯誤。AND運算中只考慮相關(最后)變量。

對Complex、PComplex和Spectrum容器，如果任意部分都不是零，那么運算對象的值為真。如果非零，Text的運算值為真。Enums在運算中會轉換成Text。

如果兩個操作數都為Boolean，結果為与操作數具有相同數据形狀的Boolean。

范例

兩個Boolean標量︰True AND False 返回False。

一個標量和一個數組: 3 AND [3, 3, 3]返回[1, 1, 1]。

一個標量和一個數組: 3 AND [-3, 0, 3]返回[1, 0, 1]。

兩個數組: [1, 2, 3] AND [0, 1, (-1)]返回[0, 1, 1]。

兩個數組: (1,@90) AND (1,@85)返回1。

兩個Complex標量: (2,3) AND (0,1)返回1。

兩個Complex標量: (0,1) AND (1,0)返回1。

兩個Complex標量: (0,0) AND (0,0)返回0。

兩個Coord標量: coord(1,3) AND coord(1,5)返回1。

兩個Coord標量: coord(1,3) AND coord(2,3)返回錯誤。

一個Text標量和一個標量數字: "too" AND 2返回1。

一個Text標量和一個標量數字: "" AND 0返回0，因為一個字符串為空，另一個不是("0")。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同。返回值的映射關系与運算對象相同，否則會返回錯誤。

注意If/Then/Else對象要求里面的表達式的解為標量或數組，要么全為0，要么全為1。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Logical
Member: AND

另請參閱

NOT a, a OR b, 比較和a XOR b。

Conditional和If/Then/Else。


Arithmetic

Function & Object Browser對話框中的Category of Operators。

用途

使用Arithmetic運算符，存取下述對象，在兩個運算對象上執行運算函數︰

a + b

a - b

a * b

a / b

a ^ b

a MOD b

a DIV b

備注

在采用兩种不同類型的二元運算中，將把兩种類型中較低的類型轉換成較高的類型。參閱幫助主題"使用二元運算符"中的類型轉換信息和類型層級。

在下面的二元運算范例中，添加一個數組和一個標量，在數組的每個要素上執行運算。得到的結果是一個大小和形狀与數組運算對象相同的數組。例如，一個標量加一個由4個要素組成的線性數組，5 + [1, 2, 3, 6]，得到由4個要素組成的線性數組[6, 7, 8, 11]。這同樣适用于指數運算，因此，2 ^ [3, 4]得到[8, 16]。

在采用兩個數組的二元運算中，要求運算對象相一致，即大小和形狀相同。得到的結果是一個大小和形狀与運算對象相同的數組。運算逐個要素完成。例如，由三個要素組成的兩個線性數組相加，得到一個長三個要素的線性數組。[1, 2, 3] + [4, 5, 6]，得到[5, 7, 9]。如果兩個數組不一致，結果會發生錯誤。

位置

Device [image] Function & Object Browser

Type: Operators
Category: Arithmetic

另請參閱

a + b (加), a / b (除), a div b (截斷除法), a ^ b (指數), a mod b (模數), a * b (乘), 和 a - b (減)。


Array

Function & Object Browser对话框上Built-in Functions的一个Category:。

用途

使用Array存取下述对象，在数组上执行各种函数：

init(x,val)

totSize(x)

rotate(x,numElem)

concat(x,y)

sum(x)

product(x)

sort(x)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Array

另请参阅

concat(x,y), init(x,val),
 product(x), rotate(x, numElem),
sort(x, 方向, 字段), sum(x)和totSize(x)。


asBoolean(x)

把x值轉換成Boolean 值的對象。x可以是任何形狀。

用途

使用asBoolean(x)把x數据轉換成數据類型asBoolean。 x可以是任何形狀，返回的形狀相同。如果x非零，asBoolean(x) 返回True，否則返回False。

允許的輸入類型 返回類型

Boolean | Boolean
UInt8 | Boolean
Int16 | Boolean
Int32 | Boolean
Int64 | Boolean
Real32 | Boolean
Real64 | Boolean
Text* | Boolean

如果x的類型是Text，它只能為"True"或"False".

范例

asBoolean(4.5) 返回 Boolean值True。

asBoolean(0) 返回 Boolean值False。

asBoolean("True") 返回 Boolean值True。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asInt32

另請參閱

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asInt64(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)


asComplex(x)

把x值轉換成Complex值的對象。

用途

使用asComplex(x)把x數据轉換成數据類型Complex。x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Complex
Int16 | Complex
Int32 | Complex
Real32 | Complex
Real64 | Complex
PComplex | Complex
Text | Complex

如果x的類型是Text，它必須包含轉換成Complex的值。

范例

asComplex(4.5) 返回Complex值(4.5, 0)。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asComplex

另請參閱

asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asCoord(x)

把x值轉換成Coord值的對象。

用途

使用asCoord(x)把x數据轉換成數据類型Coord。x的形狀必須是1D數組，返回的形狀与x相同。如果數組被映射，Coord數組將使用映射生成x值。如果數組沒有被映射，那么將從0開始創建x值，然后遞增1。

允許的輸入類型 返回類型

UInt8 | Coord
Int16 | Coord
Int32 | Coord
Real32 | Coord
Real64 | Coord

范例

asCoord([4, 5]) 返回Coord數組[(0,4), (1,5)]。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asCoord

另請參閱

asComplex(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asInt16(x)

把x值轉換成Int16值的對象。您可能還想考慮使用round(x)獲得容器的舍入整數值。x可以是任何形狀。round(x)函數把最近的整數(類型相同)返回x。分界線是是0.5，超過0.5的進一。

用途

使用asInt16(x)把x數据轉換成數据類型Int16。x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Int16
Int16 | Int16
Int32 | Int16
Real32 | Int16
Real64 | Int16
Text | Int16

如果x的類型是Text，它必須包含將轉換成Int16的值。

范例

asInt16(4.5) 返回Int16值5。

asInt16(4.25)返回Int16值4。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Type Conversion
Member: asInt16

另請參閱

asComplex(x), asCoord(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asInt32(x)

把x值轉換成Int32值的對象。您可能還想考慮使用round(x)獲得容器的舍入整數值。x可以是任何形狀。round(x)函數把最近的整數(類型相同)返回x。分界線是是0.5，超過0.5的進一。

用途

使用asInt32(x)把x數据轉換成數据類型Int32。 x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Real32 | Int32
Real64 | Int32
Text | Int32

如果x的類型是Text，它必須包含將轉換成Int32的值。

范例

asInt32(4.5)返回Int32值5。

asInt32(4.25)返回Int32值4。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asInt32

另請參閱

asComplex(x), asCoord(x), asInt16(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asInt64(x)

把x值轉換成Int64值的對象。您可能還想考慮使用round(x)獲得容器的最接近的舍入整數值。x可以是任何形狀。round(x)函數把最近的整數(類型相同)返回給x。分界線是是0.5，超過0.5的進一。

使用

使用asInt64(x)把x數据轉換成數据類型Int64。 x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Int64
Int16 | Int64
Int32 | Int64
Int64 | Int64
Real32 | Int64
Real64 | Int64
Text | Int64

如果x的類型是Text，它必須包含將轉換成Int64值。

范例

asInt64(4.5)返回Int64值5。

asInt64(4.25)返回Int64值4。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asInt32

另請參閱

asBoolean(x), asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x).


asPComplex(x)

把x值转换成PComplex值的对象。

用途

使用asPComplex(x)把x数据转换成数据类型PComplex。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | PComplex
Int16 | PComplex
Int32 | PComplex
Real32 | PComplex
Real64 | PComplex
Complex | PComplex
Text | PComplex

如果x的类型是 Text，它必须包含将转换成PComplex的值。

范例

asPComplex(4.5)返回PComplex值(4,5, @0)。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asPComplex

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asReal32(x)

把x值转换成Real32值的对象。

用途

使用asReal32(x)把x数据转换成数据类型Real32。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real32
Int16 | Real32
Int32 | Real32
Real32 | Real32
Real64 | Real32
Text | Real32

如果x的类型是 Text，它必须包含将转换成Real32的值。

范例

asReal32("3.1415") 返回Real32值3.1415

asReal32(6) = 6.0

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asReal32

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asReal64(x)

把x值转换成Real64值的对象。

用途

使用asReal64(x)把x数据转换成数据类型Real64。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Text | Text

如果x的类型是 Text，它必须包含将转换成Real64的值。

范例

asReal64("3.1415")返回Real64值3.1415

asReal64(7) = 7.0

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asReal64

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asText(x)

把x值转换成Text值的对象。

用途

使用asText(x)把x数据转换成数据类型Text。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Text
Int16 | Text
Int32 | Text
Real32 | Text
Real64 | Text
Coord | Text
Waveform | Text
Complex | Text
PComplex | Text
Spectrum | Text
Text | Text

范例

asText(3.4)返回Text值"3.4"。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asText

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x).


asUInt8(x)

把x值转换成Unsigned Int8 (字节)值的对象。您可能还想考虑使用round(x)获得容器的舍入整数值。x可以是任何形状。round(x)函数把最近的整数(类型相同)返回x。分界线是是0.5，超过0.5的进一。

用途

使用asUInt8(x)把x数据转换成数据类型UInt8。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | UInt8
Int32 | UInt8
Real32 | UInt8
Real64 | UInt8
Text | UInt8

如果x的类型是 Text，它必须包含将转换成UInt8的值。

范例

asUInt8(4.5)返回UInt8值5。

asUInt8(4.25)返回UInt8值4。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asUInt8

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asVariant(x)

把"x"转换成ActiveX Automation类型Variant的对象。保证从"x"创建的ActiveX Automation变量类型为VT_VARIANT。

用途

在把一个VEE数据容器传送到要求VT_VARIANT类型参数的ActiveX控件或服务器时，使用这个函数。

返回VEE Variant数据类型。如果这个函数的结果指配给一个记录字段或一个数组要素，那么其VT_VARIANT特点丢失。参见下面的范例。

允许的输入类型 返回类型

UInt8 | Variant
Int16 | Variant
Int32 | Variant
Real32 | Variant
Real64 | Variant
Text | Variant

范例

有效：

A = asVariant(A);
Obj.method(ByRef A);

Array = asVariant(Array);

无效：

Obj.method(ByRef asVariant(A));

Array[0] = asVariant(A);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asVariant

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asVariantBool(x)

保证从"x"创建的ActiveX Automation变量类型为VT_BOOL (Boolean)。

用途

在把一个 VEE数据容器传送到要求VT_BOOL类型参数的ActiveX控件或服务器时，使用这个函数。

返回VEE Int16数据类型，在希望是Variant Bool的数据容器上有一个"提示"标记。如果这个容器传送到ActiveX Automation Server或Control，它会转换成VT_BOOL，而不是VT_I2。只有在ActiveX Automation方法要求VT_BOOL或ByRef VT_BOOL类型的参数时，才需要这个"提示"标记。

如果这个函数的结果指配给一个记录字段或一个数组要素，那么其VT_BOOL特点丢失。参见下面的范例。

范例

有效：

A = asVariantBool(A);
Obj.method(ByRef A);

Array = asVariantBool(Array);

无效：

Obj.method(ByRef asVariantBool(A));

Array[0] = asVariantBool(A);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asVariantBool

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asVariantCurrency(x)

保证从 "x"创建的 ActiveX Automation变量类型为VT_CY (Currency)。

用途

在把一个 VEE数据容器传送到要求VT_CY类型参数的ActiveX控件或服务器时，使用这个函数。

返回VEE Real64 数据类型，在希望是Variant Currency的数据容器上有一个"提示"标记。如果这个容器传送到ActiveX Automation Server或Control，它会转换成VT_CY。只有在ActiveX Automation方法要求VT_CY或ByRef VT_CY类型的参数时，才需要这个"提示"标记。

如果这个函数的结果指配给一个记录字段或一个数组要素，那么其VT_CY特点丢失。参见下面的范例。

范例

有效：

A = asVariantCurrency(A);
Obj.method(ByRef A);

Array = asVariantCurrency(Array);

无效：

Obj.method(ByRef asVariantCurrency(A));

Array[0] = asVariantCurrency(A);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asVariantCurrency

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x).


asVariantDate(x)

保证从 "x"创建的 ActiveX Automation变量类型为VT_DATE.

用途

在把一个 VEE数据容器传送到要求VT_DATE类型参数的ActiveX控件或服务器时，使用这个函数。

返回VEE Real64 数据类型，在希望是Variant Date的数据容器上有一个"提示"标记。如果这个容器传送到ActiveX Automation Server或Control，它会转换成VT_DATE。只有在ActiveX Automation方法要求VT_DATE或ByRef VT_DATE类型的参数时，才需要这个"提示"标记。

如果这个函数的结果指配给一个记录字段或一个数组要素，那么其VT_DATE特点丢失。参见下面的范例。

范例

有效：

A = asVariantDate(A);
Obj.method(ByRef A);

Array = asVariantDate(Array);

无效：

Obj.method(ByRef asVariantDate(A));

Array[0] = asVariantDate(A);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asVariantDate

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantEmpty(x), asVariantError(x), asVariantNull(x)。


asVariantEmpty(x)

保证从"x"创建的ActiveX Automation变量类型为VT_EMPTY。

用途

在把一个 VEE数据容器传送到要求VT_EMPTY类型参数的ActiveX控件或服务器时，使用这个函数。

只能用于标量上。在与ByRef参数使用时无效。返回相同的数据类型，在希望是Variant Empty的数据容器上有一个"提示"标记。如果这个容器传送到ActiveX Automation Server或Control，它会转换成 VT_EMPTY，而不是容器的实际数据类型。只有在ActiveX Automation方法要求VT_EMPTY类型的参数时，才需要这个"提示"标记。

如果这个函数的结果指配给一个记录字段或一个数组要素，那么其VT_EMPTY 特点丢失。参见下面的范例。

范例

A = asVariantEmpty(A);
Obj.method(A);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asVariantEmpty

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantError(x), asVariantNull(x)。


asVariantError(x)

保证从"x"创建的ActiveX Automation变量类型为VT_ERROR。

用途

在把一个VEE数据容器传送到要求VT_ERROR类型参数的ActiveX控件或服务器时，使用这个函数。

返回VEE Int32数据类型，在希望是Variant Error的数据容器上有一个"提示"标记。如果这个容器传送到ActiveX Automation Server或Control，它会转换成VT_ERROR。只有在ActiveX Automation方法要求VT_ERROR或ByRef VT_ERROR类型的参数时，才需要这个"提示"标记。返回值表示错误编码(scode)。

如果这个函数的结果指配给一个记录字段或一个数组要素，那么其VT_ERROR 特点丢失。参见下面的范例。

范例

有效：

A = asVariantError(A);
Obj.method(ByRef A);

Array = asVariantError(Array);

无效：

Obj.method(ByRef asVariantError(A));

Array[0] = asVariantError(A);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asVariantError

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantNull(x)。


asVariantNull(x)

保证从"x"创建的ActiveX Automation变量类型为VT_NULL。

用途

在把一个参数传送到ActiveX控件或服务器、且希望把这个参数解释为VT_NULL时，使用这个函数。

只能用于标量上。在与ByRef参数使用时无效。返回相同的数据类型，在希望是Variant Null的数据容器上有一个"提示"标记。如果这个容器传送到 ActiveX Automation Server或Control，它会转换成 VT_NULL，而不是容器的实际数据类型。只有在ActiveX Automation方法要求VT_NULL类型的参数时，才需要这个"提示"标记。

如果这个函数的结果指配给一个记录字段或一个数组要素，那么其VT_NULL特点丢失。

范例

A = asVariantNull(A);
Obj.method(A);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: asVariantNull

另请参阅

asComplex(x), asCoord(x), asInt16(x), asInt32(x), asPComplex(x), asReal32(x), asReal64(x), asText(x), asUInt8(x), asVariant(x), asVariantBool(x), asVariantCurrency(x), asVariantDate(x), asVariantEmpty(x), asVariantError(x)。


asin(x)

返回x的反正弦的对象。

用途

使用asin(x)生成x数据的反正弦，Real值的结果范围为-PI/2到+PI/2。返回值采用当前Trig Mode单位。x可以是任意形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

asin(1) 返回90，其中Trig Mode设为Degrees。

asin((1.1752012, @90)) 返回(1, @90)，其中Trig Mode设为Degrees。

备注

结果中保留映射关系。把Trig Mode设为Radians之外的任何值可能会在第12个有效位以后会导致精度误差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: asin

另请参阅

asinh(x), cos(x), sin(x), tan(x), Trig,和默认首选项。


asinh(x)

返回x的双曲线反正弦的对象。

用途

使用asinh(x)生成x数据的双曲线反正弦。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

asinh(0) 返回0。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: asinh

另请参阅

asin(x), cosh(x), Trig, sinh(x)和tan(x)。


Assignment

一个公式类对象，允许为Local或Global变量赋值，或为部分数组或记录赋值。

用途

使用Assignment对象为Local或Global变量赋值，或改变部分数组或记录的值。Assignment对象上的Result输出端只包含Local或Global变量新赋的值，或者包含变化的部分数组或记录。例如，在使用Assignment运算符时，如a[2]=4，Result端将包含a[2] (其值为4)。它不会包含所有a。为得到所有a，添加一个名为a的输出端。

备注

在已经选择Category: Assignment时，Function & Object Browser对话框的Member列会显示各种Assignment范例。点击其中一个范例，会出现预先加载该Assignment公式的VEE对象。范例对象包括：

a[2,*,5:6,4]=b - 修改部分复杂的数组的一个Assignment对象。

a[2]=b - 修改部分数组的一个Assignment对象。

globalA=2*b+3 - 修改global/variable的一个Assignment对象 (以进行Set Variable操作)。

rec.field=b - 修改部分记录的一个Assignment对象。

rec.field[2]=b - 修改部分记录字段的一个Assignment对象。

rec[2].field=b - 修改部分记录数组的一个Assignment对象。

tmp=a, a=b, b=tmp - 交换使用局部变量的值的一个Assignment对象。

tmp=a[2], a[2]=a[3], a[3]=tmp - 交换数组中使用局部变量的值的一个Assignment对象。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Assignment

另请参阅

Function & Object Browser

改变数组中的值

使用赋值操作


atan(x)

返回x的反正切的对象。

用途

使用atan(x)生成x数据的反正切，其结果对Real值的范围是-PI/2到+PI/2。返回值采用当前的Trig Mode单位。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

atan(1) 返回45，其中Trig Mode设为Degrees。

atan((1.5574, @0)) 返回(0.999, @0)，其中Trig Mode设为Radians。

备注

结果中保留映射关系。把Trig Mode设为Radians之外的任何值可能会在第12个有效位以后会导致精度误差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: atan

另请参阅

atanh(x), atan2(y,x), cos(x), sin(x), tan(x), Trig和默认首选项。


atan2(y,x)

返回y除以x的反正切的对象。

用途

使用atan2(y,x)生成y除以x的反正切，它采用正确的符号，对Real值的范围是-PI到+PI。如果其中一个容器是一个数组，另一个容器必须是一个标量或相同大小和形状的数组。结果是最高类型的容器，其形状与运算对象相同。假设x和y采用当前的Trig Mode单位。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

atan2(1, -1) 返回135，其中Trig Mode设为Degrees。

atan2((1, 1), (5, 5)) 返回(0.19739, 0)，其中Trig Mode设为Radians。

备注

结果中保留映射关系。把Trig Mode设为Radians之外的任何值可能会在第12个有效位以后会导致精度误差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: atan2

另请参阅

atan(x), cos(x), sin(x), tan(x), Trig和默认首选项。


atanh(x)

返回x的双曲线反正切的对象。

用途

使用atanh(x)生成x数据的双曲线反正切。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

atanh(0.5) 返回0.5493。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: atanh

另请参阅

atan(x), cosh(x), sinh(x)和tanh(x)。


bartlet(x)

用来把Bartlet窗口应用到时序值的对象。

用途

使用bartlet(x)过滤x中的值，其方式与使用Bartlet函数的频谱变换对x求卷积的方式相同。由于输入序列尾部及在对周期信号取样时潜在的不连续点，这会抑制部分噪声。

输入x必须是Array 1D。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Spectrum | Spectrum

如果x是Spectrum，先使用ifft(x)把它转换成Waveform，然后应用窗口。然后再使用fft(x)，把窗口结果转换回到Spectrum类型。

范例

bartlet([1, 1, 1, 1, 1, 1, 1, 1]) 返回
[0.125, 0.375, 0.625, 0.875, 0.875, 0.625, 0.375, 0.125]。

备注

时域中的Bartlet函数表示为2*(n+0.5)/N，其中n是数组中的位置(索引)，N是数组的大小。结果是与x类型相同的数组，其映射与x相同(如有)。

如需了解旁瓣电平和相干增益，请参阅： Ziemer, Tranter和Fannin, Signals and Systems, Macmillan Publishing, New York, NY, 1983. ISBN #0-02-431650-4。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing
Member: bartlet

另请参阅

blackman(x), convolve(a,b), fft(x), hamming(x), hanning(x), ifft(x)和rect(x)。


baseName(str)

返回文件路径字符串的文件名部分的对象。

用途

使用baseName()隔离目录/文件路径末尾的文件名。

例如，如果pathStr是：

c:\Program Files\Agilent\VEE Pro 7.5\examples\apps\chaos.vee

那么baseName(pathStr)会返回chaos.vee。

前斜杠( / )和反斜杠( \ )都作为目录(文件夹)名称后面的分界符处理。如果整个pathStr只包含一个名称，那么该名称视为一个文件名。

备注

baseName()对象是使用一个输入初始化、并包含baseName()等式的Formula对象。还可以在任何其它Formula对象或表达式中输入baseName()。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: System Information
Member: baseName

另请参阅

dirName(), Formula


Bessel

Function & Object Browser对话框上Built-in Functions的一个Category(一类内置函数)。

用途

使用Bessel计算输入数据的贝塞尔函数。

i0(x)

i1(x)

j0(x)

j1(x)

jn(x,n)

k0(x)

k1(x)

y0(x)

y1(x)

yn(x,n)

Ai(x)

Bi(x)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel

另请参阅

i0(x), i1(x), j0(x), j1(x), jn(x,n), k0(x), k1(x), y0(x), y1(x), yn(x,n), Ai(x)和Bi(x)。


beta(x,y)

用来计算输入(x,y)的beta函数的对象。

用途

使用beta(x,y)在x上计算beta函数。beta函数定义为：

( gamma(x) * gamma(y) ) / gamma(x+y)

x值和y值必须是正数。

x输入可以是任何形状和大小。第二个y参数必须是同一类型，或能够转换成与x输入值相同的类型。如果两个输入都是数组，那么它们的形状和大小必须完全相同。返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

beta(3, 1) 返回0.333333333333333。

beta(8, 7) 返回4.16250416250416E-05。

beta(-1, 3) 返回错误。

备注

如果两个输入都有映射，那么映射必须相同。如果映射任一输入，返回值的映射关系与输入相同。如果两个输入都没有映射，那么输出没有映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: beta

另请参阅

comb(n,r), factorial(n), gamma(x),和perm(n,r)。


Bi(x)

用来计算第二类x的B-Airy分数阶贝塞尔函数的对象。

用途

使用Bi(x)找到第二类x的分数阶贝塞尔函数B-Airy。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

对Coord输入类型，在相关变量上完成操作。

范例

Bi(1)返回1.20742359495287。

备注

忽略运算对象上的映射关系，输出容器的映射关系与输入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: Bi

另请参阅

Ai(x), j0(x), j1(x), jn(x,n), y0(x), y1(x)和yn(x,n)。


binomial(a,b)

计算一次获得b的a个事项的组合数量的对象。

用途

使用binomial(a,b)计算一次获得b的a个事项的组合数量，使用的公式如下：

binomial(a, b) = a!/((a-b)! * b!)

!符号表示阶乘。

a可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

第二个参数b必须与a输入值类型相同，或能够转换成与a输入值相同的类型。如果两个输入都是数组，那么它们的形状和大小必须完全相同。

binomial(a,b)运算只定义给整数运算对象，因此在计算前，要把唯一类型的输入数字转换成Int32类型。

范例

binomial(10,3) 将返回120，公式如下：

10!/((10-3)!*3!) = 10!/(7!*3!) =(10*9*8)/(3*2*1) = 120

binomial(10.4,3.9) 将返回210，公式如下：

10!/((10-4)!*4!) = 10!/(6!*4!) = (10*9*8*7)/(4*3*2*1) = 210

把实数转换成Int32的规则会把10.4舍入为10，把3.9舍入为4。

备注

a和b必须都是正数，且a必须大于b。

这一函数与 comb(n,r)完全相同。

如果两个输入都有映射，那么映射必须相同。如果任一输入有映射，那么返回值的映射与输入相同。如果两个输入都没有映射，那么输出没有映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: binomial

另请参阅

beta(x,y), comb(n,r), factorial(n), gamma(x)和perm(n,r)。


bit(x,n)

返回某个比特位置中的二进制值的对象。

用途

使用bit(x,n)返回x的第n个位置的比特值，值为0或1。如果x的类型是Real32, Real64, Coord或Waveform，它在运算前转换成Int32。n必须是一个Int32类型的容器，或可以转换成Int32类型的容器，取值在0和31之间(含)。n必须是标量，或与x形状相匹配。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Inr32
Real64 | Int32
Coord | Int32
Waveform | Int32

范例

bit(9,0) 返回1，因为9的二进制值是1001，且设置了0位。

备注

返回值的映射关系与x相同。忽略n上的映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: bit

另请参阅

bits(str), Bitwise, clearBit(x,n)和setBit(x,n)。


bitAnd(x,y)

返回x和y的Bitwise AND的对象。

用途

使用bitAnd(x,y)在两个容器上执行二进制AND操作。x和y可以是任何形状。但如果这两个容器都是数组，那么其形状和大小必须相匹配。如果x或y的类型是Real32, Real64, Coord或Waveform，它们在运算前先转换成Int32。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

范例

bitAnd(5, [3, 12]) 返回[1, 4]。

备注

如果任何输入参数有映射，那么这些映射必须相同。得到的容器会保留输入容器的映射。如果只有其中一个输入有映射，那么得到的容器也有这些映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: bitAnd

另请参阅

a AND b, bit(x,n), bitCmpl(x),
 bitOr(x,y), Bitwise,
 bitXor(x,y), NOT a, a或b和a XOR b。


bitCmpl(x)

返回Bitwise 1的x的补集的对象。

用途

使用bitCmpl(x)在容器上执行二进制1的补集。如果x的类型是Real32, Real64, Coord或Waveform，在运算前它会转换成Int32。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

范例

bitCmpl(7) 返回-8。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: bitCmpl

另请参阅

a AND b, bit(x,n), bitAnd(x,y), bitOr(x,y), Bitwise, bitXor(x,y), NOT a, a OR b,和a XOR b。


bitOr(x,y)

返回x和y的Bitwise OR的对象。

用途

使用bitOr(x,y)在两个容器上执行二进制OR运算。x和y可以是任何形状。但如果这两个容器都是数组，那么其形状和大小必须匹配。如果x或y的类型是Real32, Real64, Coord或Waveform，在运算前它们必须转换成Int32。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

范例

bitOr(5, [3, 12]) 返回[7, 13]。

备注

如果任何输入参数有映射，那么这些映射必须相同。得到的容器保留输入容器的映射。如果只有其中一个输入有映射，那么得到的容器也有这些映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: bitOr

另请参阅

a AND b, bit(x,n), bitAnd(x,y), bitCmpl(x), Bitwise, bitXor(x,y), NOT a, a OR b和a XOR b。


bits(str)

返回由0和1组成的字符串的二进制值的对象。

用途

使用bits(str)返回Int32，取值为Text str中的位值，作为基数2转换成Int32。str必须是任何形状的Text容器。str可能只包含前导白色空格，然后是0和1，构成一个二进制数字。

范例

bits("011")返回3。

备注

返回值的映射与输入容器相同。最没用的位在右面，最有用的位在左面。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: bits

另请参阅

bit(x,n), Bitwise, clearBit(x,n),和setBit(x,n)。


bitShift(x,y)

为x返回把比特左移或右移y个位置的对象。

用途

使用bitShift(x,y)把容器x的比特移动y个位置。x可以是任何形状。如果x的类型是Real32, Real64, Coord或Waveform，在运算前它先转换成Int32。y必须是Int32的容器或可以转换成Int32的容器。如果y是负数，那么比特右移；否则比特左移。y必须是标量或与x的形状相匹配。如果y大于31或小于-31，那么返回值为零。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

范例

bitShift([1, 7, 7], [3, 2, (-2)])返回[8, 28, 1]。

bitShift(8,2)返回32。

bitShift(8,-2)返回2。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: bitShift

另请参阅

bit(x,n), bitAnd(x,y),
 bitOr(x,y), Bitwise,
 bitXor(x,y), clearBit(x,n),
 rotate(x, numElem)和setBit(x,n)。


Bitwise

Function & Object Browser对话框中Built-in Functions的一个Category (一类内置函数)。

用途

使用Bitwise存取下述对象，这些对象在nt16或Int32中设置、清除、存取或位移位，或在Int16s或Int32上执行二进制AND, OR和XOR运算。

bit(x,n)

bits(str)

setBit(x,n)

clearBit(x,n)

bitAnd(x,y)

bitOr(x,y)

bitXor(x,y)

bitCmpl(x)

bitShift(x,y)

备注

Bitwise菜单上的对象只对Uint8, Int16或Int32类型有意义。但为了简便易用，大多数对象接受大多数类型，在执行函数前会把自变量转换成Int32。这意味着在对象内部会截短Real32s, Real64s, Coords和Waveforms的值。

位从零开始编号。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise

另请参阅

bit(x,n), bits(str), bitAnd(x,y), bitCmpl(x),
 bitOr(x,y), bitShift(x,y),
 bitXor(x,y), clearBit(x,n),
 setBit(x,n), a AND b, NOT a, a OR b, Comparison,和a XOR b。


bitXor(x,y)

返回x和y的Bitwise XOR的对象。

用途

使用bitXor(x,y)在两个容器上执行二进制XOR (异或)运算。x和y可以是任何形状。但如果这两个容器都是数组，那么其形状和大小必须匹配。如果x或y的类型是Real32, Real64, Coord或Waveform，在bitXor()前它们必须转换成Int32。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

范例

bitXor(5, [3, 12]) 返回 [6, 9]。

备注

如果任何输入参数有映射，那么这些映射必须相同。得到的容器保留输入容器的映射。如果只有其中一个输入有映射，那么得到的容器也有这些映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: bitXor

另请参阅

a AND b, bit(x,n), bitAnd(x,y), bitCmpl(x), bitOr(x,y), Bitwise, NOT a, a OR b和a XOR b。


blackman(x)

用来对时序值应用Blackman窗口的对象。

用途

使用blackman(x)过滤x中的值，其方式与使用Blackman函数的频谱变换对x求卷积的方式相同。由于输入序列尾部及在对周期信号取样时潜在的不连续点，这会抑制部分噪声。

输入x必须是Array 1D。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Spectrum | Spectrum

如果x是Spectrum，先使用ifft(x)把它转换成Waveform，然后应用窗口。然后再使用fft(x)，把窗口结果转换回到Spectrum类型。

范例

blackman([1, 1, 1, 1, 1, 1, 1, 1]) 返回
[0.014, 0.172, 0.555, 0.938, 0.938, 0.555, 0.172, 0.014].

备注

Blackman函数在时域中表示为：

0.42 - 0.5*cos(2*PI*(n+0.5)/N) + 0.08*cos(4*PI*(n+0.5)/N)

其中n是数组中的位置(索引)，N是数组的大小。结果是与x类型相同的数组，其映射与x相同(如有)。

如需了解旁瓣电平和相干增益，请参阅： Ziemer, Tranter和Fannin, Signals and Systems, Macmillan Publishing, New York, NY, 1983. ISBN #0-02-431650-4。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing
Member: blackman

另请参阅

bartlet(x), convolve(a,b), fft(x), hamming(x), hanning(x), ifft(x)和rect(x)。


Calculus

Function & Object Browser对话框上Built-in Functions的一个Category (一类内置函数)。

用途

使用Calculus对由简单数字值组成的一维数组(整数, 实数, 波形, ...)或由二维(两个字段)坐标组成的列表求积分或导数。

integral(x)

deriv(x,1)

deriv(x,2)

deriv(x,order)

defIntegral(x,a,b)

derivAt(x,1,pt)

derivAt(x,2,pt)

derivAt(x,order,pt)

备注

积分和导数函数适用于由简单数字值组成的一维数组(整数, 实数, 波形, ...)或由代表等间隔排序数据的二维(两个字段)坐标组成的列表。对没有映射的数组，假设数据间隔相等并排序，假设各点之间的间隔dx取值为1。对映射的数组，使用等于(Xmax-Xmin)/N的间隔值dx执行运算，因此其相应地自动定标。对坐标列表，先检查独立的(第一个字段)值，确保其已经排序，且间隔相等，然后使用前面确定的间隔作为dx值，在相关的(第二个字段)值上执行运算。

如果使用没有映射的数组，但通过其它方式知道各点之间的间隔是某个值dx，那么仍可以获得正确的运算值。对积分，把结果乘以已知的dx值。对导数，把结果除以已知的dx值。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Calculus

另请参阅

defIntegral (x,a,b), deriv(x, order), derivAt(x, order,pt)和integral(x)。


ceil(x)

把x的值舍入到容器最近的整数和对象。

用途

ceil(x)函数返回大于等于x的最小整数(类型相同)，即x值舍入到下一个更大的整数，即趋向正无穷大的最近的整数。

x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

ceil([23.0, 23.1, 23.9, 23.5, (-23.5)])返回[23, 24, 24, 24, -23]。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts
Member: ceil

另请参阅

abs(x), Complex Parts, floor(x), fracPart(x), intPart(x), Real Parts和round(x)。


charToInt(a)

把输入字符串的第一个字符转换成十进制值的对象。

用途

使用charToInt(a)把ASCII输入串a的第一个字符转换成Int32类型的十进制值。支持的字符是可以转换成0-255范围内的值的字符。

范例

charToInt("A") 返回65。

charToInt("Arthur") 也 返回65。

charToInt("a") 返回97。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: charToInt

另请参阅

intToChar(a)和String。


clearBit(x,n)

返回x、其中第n位设为0的对象。

用途

使用clearBit(x,n)把容器x的某个二进制位设置为0。x可以是任何形状。如果x的类型是Real32, Real64, Coord或Waveform，它在运算前转换成Int32。n必须是一个Int32类型的容器，或可以转换成Int32类型的容器，取值在0和31之间(含)。n必须是标量，或与x形状相匹配。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

范例

clearBit(7,1)返回5，因为7的二进制是111，清除第一个位，得到101 (十进制5)。(位从0开始编号)

备注

返回值的映射关系与x参数相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: clearBit

另请参阅

bits(str), bit(x,n), Bitwise和setBit(x,n)。


clipLower (x,a)

用来把输入数据x剪切到某个最小值a的对象。

用途

使用clipLower(x,a)，把数据剪切到最小值a，即小于a的任何数据都将变成a。

x输入可以是任何大小和形状。剪切参数a的类型必须与x输入值相同，或能够转换成与x输入值相同的类型，其形状必须是Scalar或形状和大小与x相同。如果其中一个输入是Scalar，一个输入是非Scalar，那么Scalar输入作为与非Scalar输入相同形状和大小的数组处理。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Text | Text

范例

在数据上使用clipLower(x,.5)函数，其中x是数组[.1, .4, .6, .9]，返回[.5, .5, .6, .9]。

使用clipLower([.1, .4, .6, .9],[.2, .2, .7, .7])，返回[.2, .4, .7, .9]。

可以使用clipLower把Waveform值剪切到任意下限。使用Coord数组定义波形上的限制点。限制点是定义限制波形形状的线段的端点。可能只有部分这样的点。通过Build Arb Waveform对象发送Coord数组，创建点数与实际波形相同的下限波形。把这个新波形作为a输入发送到clipLower函数中。在clipLower(x,a)完成时，输入波形x的所有值将低于剪切到a输入允许最小值的下限。

备注

如果两个输入都有映射，那么映射必须相同。如果任一输入有映射，那么返回值的映射与该输入相同。如果两个输入都没有映射，那么输出没有映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Data Filtering
Member: clipLower

另请参阅

clipUpper (x,a), Build Arb Waveform,和Comparator.


clipUpper (x,a)

用来把输入数据x剪切到某个最大值a的对象。

用途

使用clipUpper(x,a)，把数据剪切到最大值a，即大于a的任何数据都将变成a。

x输入可以是任何大小和形状。剪切参数a的类型必须与x输入值相同，或能够转换成与x输入值相同的类型，其形状必须是Scalar或形状和大小与x相同。如果其中一个输入是Scalar，一个输入是非Scalar，那么Scalar输入作为与非Scalar输入相同形状和大小的数组处理。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Text | Text

范例

在数据上使用clipUpper(x,.5)函数，其中x是数组[.1, .4, .6, .9]，返回[.1, .4, .5, .5]。

使用clipUpper([.1, .4, .6, .9],[.2, .2, .5, .5]) 返回[.1, .2, .5, .5]。

可以使用clipUpper把Waveform值剪切到任意上限。使用Coord数组定义波形上的限制点。限制点是定义限制波形形状的线段的端点。可能只有部分这样的点。通过Build Arb Waveform对象发送 Coord数组，创建点数与实际波形相同的上限波形。把这个新波形作为a输入发送到clipUpper 函数中。在clipUpper(x,a)完成时，输入波形x的所有值将高于剪切到a输入允许最大值的上限。

备注

如果两个输入都有映射，那么映射必须相同。如果任一输入有映射，那么返回值的映射与该输入相同。如果两个输入都没有映射，那么输出没有映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Data Filtering
Member: clipUpper

另请参阅

clipLower (x,a), Build Arb Waveform和Comparator。


cofactor(x, row,col)

用来计算输入数组x在第r行和第c列的余因子的对象。

用途

使用cofactor(x,row,col)计算方阵x的余因子。矩阵的余因子定义为输入矩阵x的子矩阵的行列式，它通过删除第r行和第c列获得，倍数(-1)提高到(r+c)幂。

x输入的形状必须是方阵。要删除的行和列r和c的输入必须是Int32 Scalar，或能够转换成Int32类型。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Complex | Complex, Scalar形状
PComplex | PComplex, Scalar形状

方阵的行数与列数相同。

范例

cofactor(a,1,2)，其中a是数组[ [3, -1, 2], [4, 5, 6], [7, 1, 2] ]，得到34。

备注

忽略运算对象上的映射。

r和c输入的类型预计是Int32，或能够转换成该类型。矩阵的行和列编号为0到n-1。因此，在指定要使用哪一行和哪一列时要特别注意。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: cofactor

另请参阅

det(x)和minor(x,row, col).


comb(n,r)

用来计算一次获得r的n个事项的组合数量的对象。

用途

使用comb(n,r)，使用下述公式计算一次获得r的n个事项的组合数量：

comb(n, r) = n!/((n -r)! * r!)

!符号表示阶乘。

n输入可以是任何形状和大小。第二个r参数的类型必须与n输入值类型相同，或能够转换成与n输入值相同的类型。如果两个输入都是数组，那么其形状和大小必须完全相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

comb(n, r)运算只适用于整数运算对象，因此在进行计算前先把输入数字(唯一类型)转换成Int32类型。

范例

comb(10,3)将返回120，公式如下：

10!/((10-3)!*3!) = 10!/(7!*3!) = (10*9*8)/(3*2*1) = 120

comb(10.4,3.9)将返回210，公式如下：

10!/((10-4)!*4!) = 10!/(6!*4!) = (10*9*8*7)/(4*3*2*1) = 210

把实数转换成Int32的规则会把10.4强制转换成10，把3.9强制转换成4。

备注

n和r都必须是正数，n必须大于r。

如果两个输入都有映射关系，那么映射关系必须相同。如果任何一个输入有映射关系，那么返回值的映射关系必须与输入相同。如果两个输入都没有映射关系，那么输出没有映射。

这一函数与binomial(a,b)完全相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: comb

另请参阅

beta(x,y), binomial(a,b), factorial(n), gamma(x)和perm(n,r)。


逗號運算符

"," (逗號)可以作為二元運算符用于表達式中。在使用","分隔兩個表達式時，對左手的表達式求解，但丟棄結果。返回右手的表達式的結果。

用途

在Formula對象中使用逗號運算符，語法如下︰

表達式, 表達式

","保証先對左手的表達式求解，但會丟棄結果，然后返回右手的表達式的結果。

范例

UserFunc(A),A調用名為UserFunc的函數，丟棄結果，然后返回A的值。

位置

逗號運算符必須用于采取表達式的Formula對象或其它對象中。

另請參閱

三元運算符。


commandLine()

返回发起这个VEE会话使用的命令行参数的对象。

用途

返回值是一个1D Text数组。数组的索引0包含用来发起VEE会话的VEE程序名称。后续数组要素(如有)是命令行上跟在程序名称后面的参数。

在希望使用VEE命令行，把参数(选项)传送到VEE程序时，可以使用这一函数。针对VEE环境本身的选项在命令行上在前面有一个减号( - )。请参阅使用命令行选项启动Agilent VEE。VEE环境会忽略前面有两个减号的选项，用来使用commandLine()对象的VEE程序。例如：

vee.exe -maximize --radians My_Trig.vee

这个命令行使用最大化窗口启动VEE，加载程序My_Trig.vee，允许程序使用--radians选项。

备注

commandLine()对象是一个在没有输入的情况下初始化的Formula对象，其中包含commandLine()公式。还可以在任何其它Formula对象或表达式中输入commandLine()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: commandLine

另请参阅

installDir, programName, Formula


Comparison

Function & Object Browser对话框中Operators的一个Category。

用途

使用Comparison存取下述对象，在两个运算对象上执行比较运算：

a ~= b

a == b

a != b

a < b

a > b

a <= b

a >= b

备注

所有这些运算都返回一个取值为0或1的标量Int32，其分别对应于运算为真还是运算为假。

有可能两个运算对象不能比较，即两个运算对象之间的关系不是小于、大于或等于的关系，如映射关系不匹配的Coords和数组。例如，[1, 2, 6] != [2, 3, 4]为真，但两个运算对象之间的关系既不是小于，也不是大于，只是不相等。也就是说，[1, 2, 6] < [2, 3, 4]为假，[1, 2, 6] > [2, 3, 4]也为假，因为第一个数组中的每个要素与第二个数组中每个要素都不是<OR>的关系。

另外注意Comparison下的项目与菜单项Conditiona之间的区别。Comparisons是输出0或1的公式；Conditionals是If/Then/Else，有两个输出，其中一个输出激活。

注意返回值的类型是Int32，形状与运算对象相同。这与条件运算相同，如一直返回标量的==。

逻辑运算符只从字符串是否为空的角度定义给Text类型。也就是说，"zoo"AND"" (空字符串)在逻辑上为假，因为第二个字符串为空。记住，在比较Text类型与非字符串类型时，后者晋级为Text类型。这意味着"zoo" AND 0为真，因为实数0晋级为字符串"0"，另外由于两个字符串都不是空，因此AND表达式为真，返回结果1。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Comparison

另请参阅

a ~= b (约等于), a AND b, a == b (等于), a > b (大于), a >= b (大于等于), a < b (小于), a <= b (小于等于), NOT a, a != b (不等于), a OR b和a XOR b。

Comparator, Conditional和If/Then/Else。


Complex Parts

Function & Object Browser对话框中Built-in Functions的一个Category 。

用途

使用Complex Parts存取下述对象，返回Complex和PComplex容器的不同部分：

j(x)

re(x)

im(x)

mag(x)

phase(x)

conj(x)

备注

Complex Parts菜单上的对象只适用于类型Complex和PComplex。但为了使用方便，大多数对象都接受和返回大多数类型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Complex Parts

另请参阅

conj(x), im(x), j(x), mag(x), phase(x), re(x)和Real Parts。

Build Complex, Build PComplex, Complex, UnBuild Complex和UnBuild PComplex.


concat(x,y)

用来连接容器的对象。

用途

使用concat(x,y)连接两个容器。输入参数可以是任何类型和任何形状。concat(x,y)会把大于一维的数组平坦化为Array 1D，然后再把得到的1D数组连接起来。对所有类型的x和y输入，将返回最高类型的1D容器。

范例

如果x是实数Scalar容器，包含的数字为3，y是Text数组容器，包含的内容为["This", "is", "a", "test"]，那么concat(x,y)将返回一个Text数组容器["3", "This", "is", "a", "test"]。在这种情况下，在concat运算前，数字3已经转换成较高的类型Text字符串"3"。

备注

如果x值有映射关系，y可以有映射关系并采用相同的点间隔，也可以没有映射关系。结果将从Xmin映射到Xmin+dx*N，其中Xmin是x映射的最小值，dx是x中两个连续点之间的距离，N是得到的数组大小。

注意在Text输入上concat(x,y)和sum(x)函数之间的差别。concat(x,y)在所有情况下都生成一个Array 1D。sum(x)函数只是把所有文本字符串连接起来，形成一个大的输出字符串。也就是说，在x是 Scalar Text值"a"，y是 Scalar Text输入"b"时，concat(x,y)得到Array 1D ["a","b"]。而sum(["a","b"])则会返回Scalar容器，其中包含文本值"ab"。

所有空输入自动转换成取值为0的Real64标量。因此，在x为空，y是Int32标量值5时，concat(x,y)得到长为2的Array 1D，类型为Real64，取值为[0, 5]。相比之下，有两个输入(空值和Int32标量值5)的Concatenator对象将输出长为1的Int32数组，取值为[5]。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Array
Member: concat

另请参阅

sum(x)和Concatenator。


conj(x)

返回Complex数字x的复共轭的对象。

用途

使用conj(x)生成Complex数字x的复共轭。x可以是任何形状及Complex、PComplex或Spectrum类型。Complex数字的复共轭简单地颠倒虚数部分的符号。PComplex数字的复共轭简单地颠倒相位的符号。

范例

conj( (2, 3) )返回(2, -3)。

conj( (8, @45) )返回(8, @-45)，其中Trig Mode设置为Degrees。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Complex Parts
Member: conj

另请参阅

im(x), j(x), mag(x), phase(x), re(x), Real Parts, Build Complex, Default Preferences和UnBuild Complex。


convolve(a,b)

用对两个数据数组求卷积的对象。

用途

使用convolve(a,b)计算两个1D数组a和b的离散非周期卷积。结果是类型相同及大小为(Na+Nb)-1的数组，其中Na是输入数组a的大小，Nb是输入数组b的大小。

输入值a和b必须是Array 1D。a和b的大小不一定相同。得到的值没有归一化。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | 最高类型的输入
Waveform | 最高类型的输入

范例

convolve([1, 2, 3, 4, 5],[1, 1, 1]) 返回[1, 3, 6, 9, 12, 9, 5]。

备注

输入a和b必须表示等间隔数据。此外，a的任意两个值之间的间隔必须与b的任意两个值之间的间隔相同。对两个没有映射的数组，假设间隔总为1。对映射的数组，间隔是(Xmax-Xmin)/N，其中Xmax和Xmin对映，N是数组的大小。在一个输入有映射关系，而另一个数组没有映射时，没有映射的输入假设取样频率与有映射的输入相同。得到的值从未归一化为任何标度系数。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing
Member: convolve

另请参阅

fft(x)和xcorrelate (a,b)。


cos(x)

返回x的余弦的对象。

用途

使用cos(x)生成x数据的余弦。假设x采用当前Trig Mode单位。x可以是任意形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

cos([0, 180])返回[1, -1]，其中Trig Mode设置为Degrees。

cos((1, PI/4))返回(0.715684, -0.73096)，其中Trig Mode设置为Radians。

备注

结果中保留映射关系。把Trig Mode设为Radians之外的任何值可能会在第12个有效位以后会导致精度误差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: cos

另请参阅

acos(x), cosh(x), sin(x), tan(x), Trig和Default Preferences.


cosh(x)

返回x的双曲线余弦的对象。

用途

使用cosh(x)生成x数据的双曲线余弦。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

Int8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

cosh(0)返回1。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: cosh

另请参阅

acosh(x), cos(x), sinh(x)和tanh(x)。


cot(x)

返回x的余切的对象。

用途

使用cot(x)生成x数据的余切。假设x采用当前Trig Mode单位。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

cot([45, 90])返回[1, 61E-18]，其中Trig Mode设为Degrees。注意第二个数字应该是零，它低于系统精度。

cot((3, @PI/2))返回(1.0049698, @-1.57079)，其中Trig Mode设为Radians。

cot((3, @90))返回(1.0049698, @-90)，其中Trig Mode设为Degrees。

备注

结果中保留映射关系。把Trig Mode设成Radians之外的其它值可能会导致在第12个有效位之后出现精度误差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: cot

另请参阅

acot(x), atan2(y,x), cos(x), coth(x), sin(x), tan(x), Trig和默认首选项。


coth(x)

返回x的双曲线余切的对象。

用途

使用coth(x)生成x数据的双曲线余切。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

coth(0.4)返回2.631。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: coth

另请参阅

acoth(x), cot(x), sinh(x)和tanh(x)。


CreateObject(ProgID)

创建ProgID指定的ActiveX Automation对象的新实例，返回一个参考。

释放ActiveX参考

用途

使用CreateObject在程序中创建automation对象。您需要修改初始表达式，执行所需的操作。在大多数情况下，您希望在VEE控制的服务器应用的新实例中创建一个新的automation对象实例。

对象的ProgID是编写automation对象的人指配的名称(人可以阅读的字符串)。它一般是一个库或应用名称、周期和组件或对象名称。为给任何ActiveX Automation Server找到有效的ProgIDs，请咨询该服务器提供的文档。

CreateObject使用可选的第二个参数，指定实例化对象的远程主计算机(服务器)的名称。这一功能要求在客户端计算机和服务器计算机上都安装DCOM。语法如下：

createObject( ProgID [, hostName ] )

其中：

hostName的类型必须是Text，并可以指定为有效的UNC或DNS域名。有效的hostName规范的部分范例如下：

Set obj = createObject("lib.obj",
 "server")
Set obj = createObject("lib.obj", "\\\\server")
Set obj = createObject("lib.obj", "server.domain.com")
Set obj = createObject("lib.obj", "135.5.33.19")

范例

这个范例会启动Microsoft Excel的一个新实例 (即使Excel已经运行)，并把一个参考返回新的Worksheet对象：

SET excel = CreateObject ("Excel.Sheet")

释放ActiveX参考

如果VEE程序使用Automation Server (如Excel)，您可能会注意到在程序结束时，不会总是退出Excel (或其它)应用程序。在退出时或在进行File [image] New操作时，VEE会释放所有ActiveX参考。如果您还想在程序结束时释放ActiveX参考，那么必须采取部分编程操作。要求进行下述操作，以保证在其对象被删除或VEE程序结束时退出实例化Automation Server。

在Default Preferences中选择Disable Debug Features。在启用调试时，VEE保留Line Probe使用的数据和指针参考。(您需要确定哪个对您更重要：是调试和线路探测，还是在程序结束时释放ActiveX服务器)

在程序结束前，删除所有声明和未声明VEE变量。提示：在Delete Variable对象中选择All Variables。

如果对Excel电子表格作出任何改动，Excel会询问"Do you want to save changes?"。即使VEE已经释放到Excel的所有参考，Excel仍希望得到某个人的回答，然后才会退出。为避免这种情况，一种方式是在Excel中调用Quit()方法。

一种替代方案是把所有ActiveX函数放到一个单独的VEE库中。然后使用Import Library加载这些函数，使用Delete Library在不再需要时释放所有ActiveX参考。例如，您可以作为 VEE UserFunctions编写所有Excel操作，把它们存储在名为𡌃xcelFuncs.vee?#30340;库文件中。在主程序希望存取Excel电子表格时，它会对ExcelFuncs.vee进行Import Library操作，调用相应的UserFunctions处理和存储电子表格，然后对ExcelFuncs.vee进行Delete Library操作。这时，将删除到Excel Automation Server的所有参考，退出Excel。

这种方案需要额外的工作，创建和管理单独的UserFunction库。但是，您可以在启用调试和线路探测的情况下，以程序化方式退出Excel。如前所述，您仍需保存电子表格变化或调用Excel的Quit()函数，然后才能调用Delete Library。

备注

VEE必须设置成VEE 5 (或更高)执行模式，以支持ActiveX (默认首选项)。

必须把ActiveX应用的类型库提供给VEE，然后才能创建控制该应用的表达式(Device [image] ActiveX Automation References?/font>)。

VEE对在远程计算机上实例化对象使用的安全设置没有提供任何编程控制。这可以通过属于DCOM的dcomcnfg.exe程序以静态方式完成。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: ActiveX Automation
Member: CreateObject

另请参阅

参阅ActiveX范例目录中的程序范例
 Help [image] Open Example?/font>

ActiveX Automation References, 默认首选项, GetObject。


cubert(x)

返回x值的立方根的对象。

用途

使用cubert(x)生成数字x的立方根。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

对PComplex，cubert(x)定义为幅度和1/3相位的立方根。在应用这一函数前，Complex先转换成PComplex。

范例

cubert( (8, @90) )将返回(2, @30)。

cubert( (1,1) )将返回(1.08, 0.291)。

备注

结果中保护映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power
Member: cubert

另请参阅

a ^ b (指数), Power, sq(x)和sqrt(x)。


Data Filtering

Function & Object Browser对话框上Built-in Functions的一个Category。

用途

使用Data Filtering，对数据应用过滤算法，使数据平滑化。

polySmooth(x)

meanSmooth(x,numPts)

movingAvg(x,numPts)

clipUpper(x,a)

clipLower(x,a)

minIndex(x)

maxIndex(x)

minX(x)

maxX(x)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Data Filtering

另请参阅

polySmooth (x), meanSmooth (x,numPts), movingAvg (x,numPts), clipUpper (x,a), clipLower (x,a), minIndex(x), maxIndex(x), minX(x), maxX(x), Regression和Signal Processing。


defIntegral (x,a,b)

使用Simpson的 1/3规则计算位于a点和b点(含)之间输入数据值的积分的对象。

用途

使用defIntegral(x,a,b)计算a点和b点之间有序的等间隔值集合的积分的数字近似结果。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Waveform | Real64

范例

defIntegral([ 0, 1, 2, 3, 4, 4, 3, 2, 1, 0 ], 2, 5)返回10.12。

备注

defIntegral(x,a,b)函数适用于由简单的数字值组成的一维数组及代表等间隔有序数据的二维(两个字段)坐标组成的列表。对没有映射的数组，值a和b代表数组(0到N-1)中的指数。对坐标列表，值a和b代表坐标列表中第一个点和最后一个点(含)的x值之间的实数值。对映射的数组，值a和b代表Xmin映射和Xmax-dx (含)之间的实数值，其中dx是两个连续点之间的间隔：(Xmax-Xmin)/N。

对没有映射的数组，假设数据等间隔且有序，各点之间的间隔dx值是1。对映射的数组，使用间隔值dx等于(Xmax-Xmin)/N执行运算，从而相应地自动定标。对坐标列表，先检查独立(第一个字段)值，保证其有序、且等间隔，然后使用前面确定的间隔作为 dx值，在相关(第二个字段)值上执行运算。

如果使用没有映射的数组，但从其它途径知道各点之间的间隔是某个值dx，那么通过把defIntegral(x,a,b)结果乘以已知的dx值，可以获得运算使用的正确值。

在这些值代表有噪声的数据时，通过先过滤或平滑数据，通常可以改善defIntegral(x)的结果(从务实的角度看)。平滑操作会去掉叠加在底层值上的大部分不想要的噪声。范例请参阅polySmooth(x)函数和相关的平滑函数。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Calculus
Member: defIntegral

另请参阅

integral(x)


deriv(x, order)

用来使用弹性四阶(5点)多项式在所有输入数据值中计算阶order的导数的对象。

用途

使用deriv(x,order)在有序等间隔值(x)集合的所有点中计算阶order的导数的数字近似结果。结果是大小和形状与输入x相同的数组。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Waveform | Waveform

范例

deriv([0, 1, 2, 3, 3, 2, 1, 0], 1) 返回
[1.25, 0.9167, 1.083, 0.5833, -0.5833, -1.083, -0.9167, -1.25]。

备注

deriv(x,order)函数适用于由简单的数字值组成的一维数组及代表等间隔有序列数据的两维(两个字段)坐标列表。对映射的数组，得到的数组的映射关系将与x完全相同。对坐标列表，值a和b代表坐标列表中第一个点和最后一个点(含)之间的实数值。对映射的数组，值a和b代表Xmin映射和Xmax-dx (含)之间的实数值，其中dx是两个连续点之间的间隔： (Xmax-Xmin)/N。

对没有映射的数组，假设数据等间隔且有序，各点之间的间隔dx值是1。对映射的数组，使用间隔值dx等于(Xmax-Xmin)/N执行运算，从而相应地自动定标。对坐标列表，先检查独立(第一个字段)值，保证其有序、且等间隔，然后使用前面确定的间隔作为 dx值，在相关(第二个字段)值上执行运算。

如果使用没有映射的数组，但从其它途径知道各点之间的间隔是某个值dx，那么通过把deriv(x,order)结果乘以已知的dx值，可以获得运算使用的正确值。

在这些值代表有噪声的数据时，通过先过滤或平滑数据，通常可以改善deriv(x,order)的结果(从务实的角度看)。平滑操作会去掉叠加在底层值上的大部分不想要的噪声。范例请参阅polySmooth(x)函数和相关的平滑函数。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Calculus
Member: deriv

另请参阅

derivAt(x, order,pt)


derivAt(x, order,pt)

用来使用弹性四阶(5点)多项式在输入数据的pt值上计算阶order的导数的对象。

用途

使用derivAt(x,order,pt)在有序等间隔值(x)集合的某个点pt上计算阶order的导数的数字近似结果。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Real64

范例

derivAt([ 0, 1, 2, 3, 3, 2, 1, 0 ], 1, 3)返回0.5833。

Notes

derivAt(x,order,pt)函数适用于由简单的数字值组成的一维数组(整数, 实数, Waveform)及代表等间隔有序列数据的两维(两个字段)坐标列表。对没有映射的数组，值a表示数组(0到N-1)中的数组。对坐标列表，值a和b代表坐标列表中第一个点和最后一个点(含)之间的实数值。对映射的数组，值a和b代表Xmin映射和Xmax-dx (含)之间的实数值，其中dx是两个连续点之间的间隔： (Xmax-Xmin)/N。

对没有映射的数组，假设数据等间隔且有序，各点之间的间隔dx值是1。对映射的数组，使用间隔值dx等于(Xmax-Xmin)/N执行运算，从而相应地自动定标。对坐标列表，先检查独立(第一个字段)值，保证其有序、且等间隔，然后使用前面确定的间隔作为 dx值，在相关(第二个字段)值上执行运算。

如果使用没有映射的数组，但从其它途径知道各点之间的间隔是某个值dx，那么通过把derivAt(x,order,pt)结果乘以已知的dx值，可以获得运算使用的正确值。

在这些值代表有噪声的数据时，通过先过滤或平滑数据，通常可以改善derivAt(x,order,pt)的结果(从务实的角度看)。平滑操作会去掉叠加在底层值上的大部分不想要的噪声。范例请参阅polySmooth(x)函数和相关的平滑函数。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Calculus
Member: derivAt

另请参阅

deriv(x, order)


det(x)

計算一個正方形矩陣的行列式。

用途

使用det(x)計算一個正方形矩陣的行列式。x 輸入必須為正方形矩陣。正方形矩陣為行數和列數相同的方形矩陣。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Complex | Complex, Scalar in shape
PComplex | PComplex, Scalar in shape

范例

方形矩陣x [ [1, 2], [3, 4] ], det(x)返回 -2.

注釋

忽略操作數上的映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: det

另請參閱

identity(x), inverse(x), 和 transpose(x).


dirName()

dirName(str)

返回文件路径字符串的目录部分的对象。

用途

使用dirName()隔离一个目录/文件路径前面发现的目录信息。

例如，如果pathStr是：

c:\Program Files\Agilent\VEE\examples\apps\chaos.vee

那么dirName(pathStr)返回：

c:\Program Files\Agilent\VEE\examples\apps

正斜杠( / )和反斜杠( \ )都作为目录(文件夹)名称后面的定界符处理。如果整个pathStr只包含一个名称，那么这个名称视为文件名。在这种情况下，dirName()返回空字符串。

备注

dirName()对象是使用一个输入初始化、并包含dirName()函数的Formula对象。还可以在任何其它Formula对象或表达式中输入dirName()。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: System Information
Member: dirName

另请参阅

baseName(), Formula


a div b (truncated division)

a div b (截短除法)

在兩個運算對象上執行代數div (截短除法)運算的對象。

用途

使用a div b确定一個容器除盡另一個容器的倍數，即截短除法值。兩個容器可以是任何形狀。但是，如果其中一個容器是數組，另一個數組必須是標量或相同大小和形狀的數組。結果是最高類型的容器，其形狀与運算對象相同。

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

如果兩個運算對象的類型都是Coord，它們必須有完全匹配的獨立變量，否則會返回錯誤信息。只能在相關(最后)變量上執行div運算。

范例

一個標量div一個數組: 3.2 DIV [1, 2, 3, 4]返回[3, 1, 1, 0]。

一個數組div一個標量: [1, 2, 3] DIV 2返回[0, 1, 1]。

兩個標量: 12.95 DIV 4返回3。

兩個Coord標量: coord(1,3) DIV coord(1,5)返回coord(1,0)。

兩個Coord標量: coord(1,3) DIV coord(2,5)返回錯誤。

備注

如果任一容器被映射(即類型為 Waveform, Coord或任意其它類型的映射數組)，另一個容器必須沒有映射或具有完全相同的映射。返回值的映射關系將与運算對象相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Arithmetic
Member: DIV

另請參閱

a + b (加法), a / b (除法), a * b (乘法),和a - b (減法)。


a / b (divide)

a / b (除法)

在兩個運算對象上執行除法代數運算的對象。

用途

使用a / b用一個容器的值除以另一個容器的值。兩個容器可以是任何形狀。但是，如果其中一個容器是數組，另一個數組必須是標量或相同大小和形狀的數組。結果是最高類型的容器，其形狀与運算對象相同。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

如果兩個運算對象的類型都是Coord，它們必須有完全匹配的獨立變量，否則會返回錯誤信息。只能在相關(最后)變量上執行除法運算。

這個除法運算在所有數組上執行并行除法，包括矩陣。對矩陣除法，參閱函數matDivide(numer,denom)。

范例

一個標量除以一個數組: 3.0 / [1, 2, 3]返回[3, 1.5, 1]。

兩個數組: [4, 5, 6] / [1, 2, 3]返回[4, 2.5, 2]。

兩個PComplex標量: (1,@90) / (2,@30)返回(0.5, @60)，Trig Mode設置為Degrees。

兩個Coord標量: coord(1,3) / coord(1,5)返回coord(1,0.6)。

兩個Coord標量: coord(1,3) / coord(2,5)返回錯誤。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任意其它類型的映射數組)，另一個容器必須沒有映射或具有完全相同的映射。返回值的映射關系將与運算對象相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Arithmetic
Member: /

另請參閱

a + b (加法), a div b (截短除法), matDivide (numer, denom), a * b (乘法)和a - b (減法)。


dmyToDate (d,m,y)

返回把d, m和y参数值转换成日期的对象。

用途

使用dmyToDate(d,m,y)把三个值日、月、年转换成日期。d, m和y可以是任何形状。如果其中一个容器是数组，另一个数组必须是相同大小和形状的标量或数组。结果是最高类型的容器，其形状与运算对象相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

dmyToDate(25, 12, 1991)返回62.8293999G。

备注

如果任何输入参数有映射，那么这些映射必须相同。得到的容器包含输入容器的映射。如果只有其中一个输入有映射，那么得到的容器也有这些映射。

还要注意dmy指定为现代Gregorian日期。

d (天)的值必须位于1 - 31范围内。

m (月)的值必须位于1 - 12范围内。

Location

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Time & Date
Member: dmyToDate

另请参阅

hmsToHour (h,m,s), hmsToSec (h,m,s), mday(aDate), month(aDate), now(), Time & Date, wday(aDate)和year(aDate)。


a == b (equal to)

a == b (等于)

在兩個運算對象上執行等于運算的對象。

用途

使用a == b确定一個容器的值是否等于另一個容器的值。兩個容器可以是任何類型和任何形狀。如果其中一個容器是一個數組，另一個容器必須是相同大小和形狀的一個標量或一個數組。結果是值為0或1的標量Int32。如果第一個運算對象等于第二個運算對象，那么結果值為1；否則值為0。

如果兩個運算對象的類型都是Coord，其所有獨立變量和相關變量必須相匹配，結果才為1。如果獨立變量不匹配，那么會返回一個錯誤。Complex、PComplex和Spectrum容器的兩個部分必須相匹配，運算結果才會返回1。Enums轉換成Text進行比較。

數組中兩個容器的對應值都相等時，運算才會返回1。

如果兩個操作數都為Boolean，結果為与操作數具有相同數据形狀的Boolean。

范例

兩個Boolean標量︰True != False 返回False。

一個標量和一個數組: 3.0 == [3, 3, 3]返回1。

一個標量和一個數組: 3.0 == [3, 1, 3]返回0。

兩個arrays: [1, 2, 3] == [1, 2, 4]返回0。

兩個PComplex標量: (1,@90) == (1,@85)返回0。

兩個Complex標量: (2,3) == (2,4)返回0。

兩個Complex標量: (2,3) == (2,3)返回1。

兩個Coord標量: coord(1,3) == coord(1,5)返回0。

兩個Coord標量: coord(1,3) == coord(2,3)返回錯誤︰Values for independent variables must match。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Comparison
Member: ==

另請參閱

a ~= b (約等于), a AND b, a > b (大于), a >= b (大于等于), a < b (小于), a <= b (小于等于), NOT a, a != b (不等于), a OR b, Comparison, a XOR b, Comparator, Conditional和If/Then/Else。


erf(x)

用来计算输入x的误差函数的对象。

用途

使用erf(x)计算x的误差函数。erf函数定义为：

(2/SQRT(PI) ) * [ the integral of ( e^(-t^2)) * dt ]

其中对0 - x范围求积分。x输入可以是任何形状和大小。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

erf(.5)返回0.52049987781305。

备注

忽略运算对象上的映射，输出容器的映射关系与输入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: erf

另请参阅

erfc(x)。


erfc(x)

用来计算输入x的互补误差函数的对象。

用途

使用erfc(x)计算x的误差函数。erfc函数定义为：

1-(2/SQRT(PI)) * [the integral of ( e^(-t^2)) * dt]

其中对0 - x范围求积分。x输入可以是任何形状和大小。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

erfc(.5)返回0.47950012218695。

备注

忽略运算对象上的映射，输出容器的映射关系与输入相同。

如果在erf(x)中调用大的x时，会导致相对精度丢失严重，因此提供了erfc(x)函数，其会返回1.0 - erf(x)，用1.0减去结果(例如, x=5, 会丢失12个位置)。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: erfc

另请参阅

erf(x).


errorInfo()

提供了与错误输出端上捕获的最后错误有关的信息的对象。

用途

使用errorInfo()确定使用错误输出端时捕获的最后错误的错误信息。在捕获错误后，执行errorInfo()对象，创建一条记录，其中包含将在错误对话框中显示的所有信息。记录中包含下述字段：

字段名称 数据类型 描述

Number Int32标量 错误编号

Message Text标量 与这一错误有关的错误消息文本

More Text 1D数组 与这一错误有关的任何其它信息

Title Text标量 生成错误的对象标题

Type Text标量 生成错误的对象类型

备注

errorInfo()对象是一个在没有输入的情况下初始化的Formula对象，其中包含errorInfo()公式。还可以在任何其它Formula对象或表达式中输入errorInfo()。

如果没有任何错误输出到错误输出端，那么ErrorInfo创建的记录不包含任何数据。

errorInfo()只捕获运行时错误，而不捕获运行前错误，如在输入端没有连接时。

errorInfo()不提供与没有捕获的错误有关的信息 (这会生成一个错误消息对话框)。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: errorInfo

另请参阅

Error Output (对象菜单), Formula和Raise Error。


exp(x)

返回x值的指数的对象。

用途

使用exp(x)得到数字x的指数或自然对数(基数e)，即e提高到x幂。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

exp(10) 返回22.0264657948k。

exp((1,2))返回(-1.131204384, 2.471726672)。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power
Member: exp

另请参阅

exp10(x), a ^ b (指数), log(x), log10(x)和Power。


exp10(x)

返回x值的指数基数10的对象。

用途

使用exp10(x)得到数字x的常用逆对数(基数10)，即10提高到x幂。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

exp10(10)返回10G。

exp10((1, 2))返回(-4.16146837, 9.09297427)。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power
Member: exp10

另请参阅

exp(x), a ^ b (exponent), log(x), log10(x)和Power。


a ^ b (exponent)

a ^ b (指數)

在兩個運算對象上執行指數算朮運算的對象。

用途

使用a ^ b把一個數字提升為另一個數字的冪。兩個容器可以是任何類型和任何形狀。但如果其中一個容器是一個數組，另一個容器必須是相同大小和形狀的一個標量或一個數組。結果是類型最高的容器，形狀与運算對象相同。

允許的輸入類型 返回類型

UInt8 | *
Int16 | *
Int32 | *
Real32 | *
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

*是兩個運算對象中最高的類型。例如，如果數字是uint8，冪是int32，那么返回類型是int32。如果兩個類型顛倒，這一結果仍然适用。

如果兩個運算對象的類型都是Coord，其所有獨立變量和相關變量必須相匹配，否則會返回錯誤。只在相關(最后)變量上執行指數運算。

范例

一個標量上提升一個數組: 3.0 ^ [1, 2, 3]返回[3, 9, 27]。

一個數組提升一個標量: [1, 2, 3] ^ 3返回[1, 8, 27]。

兩個數組: [4, 5, 6] ^ [1, 2, 3]返回[4, 25, 216]。

兩個Complex標量: (2,3) ^ (4,5)返回(-0.753046, -0.986429)。

兩個Coord標量: coord(4,3) ^ coord(4,2)返回coord(4,9)。

兩個Coord標量: coord(1,3) ^ coord(2,5)返回錯誤。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同。返回值的映射与運算對象相同，否則會返回錯誤。

從VEE 4到VEE 5行為發生了變化。在VEE 4中，冪假設是實數類型，而不管怎樣表示數字，即-1是實數-1.0。在VEE 5中，冪假設為是整數。如果冪表示為1.，那么其作為實數識別。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Arithmetic
Member: ^

另請參閱

exp(x)和log(x).


exponential regression

指数回归

用来把指数曲线拟合到(x,y)数据的对象。

用途

使用指数回归把数据拟合到等式y = C0 + exp(C1*x)，其中x是x坐标，C0和C1是计算得出的系数。exp函数把超越数字e升为(C1*x)幂。

指数回归对象预计Coord类型的输入数组，并带有一个独立变量，即一个(x,y)对。如果输入数组的类型不是Coord，那么它会试图把输入数组转换成Coord。如果输入数据有映射(Waveform, Spectrum或映射的数组)，那么到Coord的转换使用映射信息，生成(x,y)对的x部分。如果输入数据没有映射(如一个数组)，那么会从数组中的位置默示生成(x,y)对的x部分。

Open View参数

使用open view上的Fit Type字段把回归类型变成linear, logarithmic, exponential, power curve或polynomial regression。点击这个字段，会出现由不同回归类型组成的列表。

范例

Coord转换范例请参阅Regression。

备注

与回归有关的通用注释请参阅Regression。

位置

Device [image] Regression

然后从对话框上的Fit Type字段中选择相应的Fit Type。

另请参阅

Regression, 线性回归, 对数回归, meanSmooth (x,numPts), movingAvg (x,numPts), 多项式回归, polySmooth (x), 功率曲线回归和Build Coord。


factorial(n)

用来计算输入数字n的阶乘的对象。

用途

使用factorial(n)计算自然数n的阶乘。对任何自然数n，阶乘定义为n! = (n) * (n-1) * (n-2) . . . (3) * (2) * (1)。

n输入可以是任何形状和大小。n输入不得小于零。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

factorial(n)只适用于整数运算对象，因此在进行计算前先把输入数字(唯一类型)转换成 Int32类型。

范例

factorial(6)通过乘法运算6*5*4*3*2*1得到720。

factorial(6.7)通过乘法运算 7*6*5*4*3*2*1得到5040。把实数转换成 Int32的规则把6.7强制转换成7。

备注

忽略运算对象上的映射关系，输出容器的映射与输入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: factorial

另请参阅

beta(x,y), binomial(a,b), comb(n,r), gamma(x)和perm(n,r)。


fft(x)

在输入数据上计算离散傅立叶变换的对象。

用途

使用fft(x)计算x中的值的离散傅立叶变换。结果是变换的值的一半正值。得到的数组大小是(N DIV 2)+1，其中N是输入数组的大小。

允许的输入类型 返回类型

UInt8 | Complex Array
Int16 | Complex Array
Int32 | Complex Array
Real32 | Complex Array
Real64 | Complex Array
Waveform | Waveform

输入x必须表示由有序的等间隔数据组成的数组。对非Waveform输入，输出是由Complex值组成的没有映射的数组。对Waveform输入，将从最小频率0到最大频率(1+(N DIV 2))/(Tmax-Tmin)映射输出，其中N是输入数组的大小，Tmin和Tmax是输入Waveform的映射。另外注意输出不会归一化。

范例

fft([0, 1, 2, 3, 4, 5, 6, 7])

返回[(28,0), (-4,9.657), (-4,4), (-4,1.657), (-4,0)]

备注

截短和周期：在使用离散傅立叶变换时，一个基本假设是给定的波形h(t)具有周期性，否则波形必须截短，表示为周期函数。对带限周期函数h(t)，必须在周期的整数倍上截短波形；否则得到的离散和连续傅立叶变换在旁瓣和频率泄漏方面会有相当大的差异，可能会出现急剧的不连续点。通过使用窗口，通常可以减少这些困难。如果波形没有带限，那么一般必须调节(提高)截短间隔，使用窗口[0,L]降低时域截短误差。L定义为波形的周期。

假信号：在取样间隔T太大时，会发生假信号(频率折叠)问题。在取样速率接近内奎斯特取样速率时，预计离散傅立叶变换性能会劣化。如果波形不是周期性的或没有带限，那么提高截短间隔[0,L]及降低取样间隔T可以帮助控制截短误差和假信号。

fft参考资料可以参阅：E. Oran Brigham, 快速傅立叶变换及其应用, 第二版, Prentice-Hall, Inc., Englewood Cliffs, NJ, 1988. ISBN #0-13-307505-2。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing
Member: fft

另请参阅

convolve(a,b)和ifft(x)。


floor(x)

返回把x舍入到最近的整数值的对象。

用途

x可以是任何形状。floor(x)函数返回小于等于x的最大整数(类型相同)，即x值舍入到下一个更小的整数，即趋向负无穷大的最近的整数。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

floor([23.0, 23.1, 23.9, 23.5, (-23.5)])返回[23, 23, 23, 23, -24]。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts
Member: floor

另请参阅

abs(x), ceil(x), Complex Parts, fracPart(x), intPart(x), Real Parts和round(x)。


fracPart(x)

返回x的小数部分的值的对象。

用途

使用fracPart(x)获得容器的小数部分。x可以是任何形状。fracPart(x)函数返回符号相同的x的小数部分。它返回x - intPart(x)。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

fracPart([23.0, 23.1, 23.9, 23.5, (-23.5)]) 返回
0, 0.1, 0.9, 0.5, -0.5]。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts
Member: fracPart

另请参阅

abs(x), ceil(x), Complex Parts, floor(x), intPart(x), Real Parts和round(x)。


Freq Distribution

Function & Object Browser对话框上Probability & Statistics的Category中Built-in Functions的一部分。

用途

使用Freq Distribution函数计算某个范围上的值在固定数量的子范围中的分布。这些函数的Name是：

magDist(x,from,thru,step)

logMagDist(x,from,thru,logStep)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics

另请参阅

Function & Object Browser, logMagDist (x,from,thru, logStep)和magDist(x, from,thru, step)。


gamma(x)

用来计算输入x的gamma函数的对象。

用途

使用gamma(x)计算x的gamma函数。gamma函数定义为：

(the integral of [ t^(x-1) * e^(-t) * dt ])

其中在0到无穷大范围内求积分。x输入可以是任何形状。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

gamma(8) 返回(8-1)! = 5040。

gamma(-1) 返回错误。

gamma(3.7) 返回= 4.17065178379660。

gamma(-3.7) 返回= 0.251643995902422。

备注

gamma(x)函数不适用于x的非正整数值。在x是正整数时，gamma(x)定义为(x-1)! (阶乘)。

忽略运算对象上的映射关系，输出容器的映射与输入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: gamma

另请参阅

beta(x,y), comb(n,r), factorial(n)和perm(n,r)。


Generate

Function & Object Browser对话框上Built-in Functions的一个Category。

用途

使用Generate存取下面的对象，生成由特定值数据组成的Real64一维数组。

ramp(numElem,from,thru)

logRamp(numElem,from,thru)

xramp(numElem,from,thru)

xlogRamp(numElem,from,thru)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Generate

另请参阅

logRamp (numElem, from,thru), ramp (numElem, from,thru), xlogRamp (numElem, from,thru),和xramp (numElem, from,thru).


getEnv(envStr)

VEE系统信息Built-in Functions部分，允许存取环境变量。

用途

可以使用getEnv存取VEE中环境变量的值。在选择这个函数时，将出现getEnv(envStr)对象。(envStr)表示一个字符串(Text对象)，识别正在查找的环境变量的名称。在圆括号内，输入正在查找的环境变量的字符串名称。

在getEnv(envStr)对象执行时，它将作为Text对象返回字符串指定的环境变量值。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: getEnv

另请参阅

errorInfo(), getHostname(), installDir(), whichOS()和whichVersion()


getHostname()

VEE系统信息Built-in Functions部分，允许确定VEE正在运行的主计算机的名称。

用途

可以使用getHostname()找到VEE程序正在运行的主计算机的名称。在选择getHostname函数时，将出现getHostname()对象。这个对象不要求任何参数，但在执行对象时，它会返回主计算机的名称。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: getHostname

另请参阅

errorInfo(), getEnv(envStr), installDir(), whichOS()和whichVersion()。


GetObject

GetObject(fileName, ProgID)

使用ProgID指定的对象加载fileName中保存的ActiveX Automation对象，向其返回一个参考。

用途

使用GetObject获得正在运行的程序中已经存在的一个ActiveX automation对象，或从一个文件中加载一个已有的对象。如果使用CreateObject函数通过表达式创建了一个对象，或对象创建发生在VEE程序范围之外，那么这个对象已经存在。您需要修改初始表达式，执行所需的操作。

对象的ProgID是编写automation对象的人指配的一个名称(人可以阅读的字符串)。它一般是一个库或应用名称、一个周期及一个组件或对象名称。为了找到任何ActiveX Automation Server的有效ProgIDs，应查看与该服务器一起提供的文档。ProgID参数是可选的。如果省略ProgID，VEE会使用组件对象模型(COM)库，确定哪个应用与这个文件相关。

范例

下面的范例把一个参考返回目前正在运行的Microsoft Excel程序的Application对象。Excel必须正在运行，否则这个表达式会导致错误：

SET excel = GetObject ("","Excel.Application")

下面的范例从一个文件中加载一个已有的对象。它把一个参考返回与当前正在运行的Excel程序中的d:\tmp\TestData.xlsSheet相关的对象。如果Excel没有运行，那么它会在加载对象前启动。

SET excel = GetObject ("d:\\tmp\\TestData.xls","Excel.Sheet")

备注

VEE必须设置成VEE 5 (或更高)执行模式，以支持ActiveX (默认首选项)。

必须把ActiveX应用的类型库提供给VEE，然后才能创建控制该应用的表达式 (Device [image] ActiveX Automation References?/font>)。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: ActiveX Automation
Member: GetObject

另请参阅

参阅ActiveX范例目录中的程序范例
 Help [image] Open Example?/font>

ActiveX Automation References, 默认首选项, CreateObject.


a > b (greater than)

a > b (大于)

在兩個運算對象上執行大于運算的對象。

用途

使用a > b确定一個容器的值是否大于另一個容器的值。兩個容器可以是任何形狀。

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32
Text | Int32
Enum | Int32

如果其中一個容器是一個數組，另一個容器必須是相同大小和形狀的一個標量或一個數組。結果是值為0或1的標量Int32。如果第一個運算對象大于第二個運算對象，那么結果值為1；否則值為0。

如果兩個運算對象的類型都是Coord，其獨立變量必須完全相同，才能進行這一運算；否則會返回錯誤。Enums轉換成Text進行比較。Text按ASCII單詞順序進行比較。

在比較兩個數組時，每對要素必須符合關系運算符，運算才會返回1。

范例

一個標量和一個數組: 3.0 > [1, 3, 9]返回0。

一個數組和一個標量: [5, 9, 7] > 4返回1。

兩個數組: [3, 4, 7] > [2, 3, 5]返回1。

兩個數組: [3, 4, 3] > [2, 3, 5]返回0。

兩個Coord標量: coord(1,3) > coord(1,5)返回0。

兩個Coord標量: coord(1,3) > coord(2,5)返回Values for independent variables must match。

兩個Text標量: "too" > "zoo"返回0。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Comparison
Member: >

另請參閱

a ~= b (約等于), a AND b, a == b (等于), a >= b (大于等于), a < b (小于), a <= b (小于等于), NOT a, a != b (不等于), a OR b, Comparison, a XOR b, Comparator, Conditional和If/Then/Else。


a >= b (greater than or equal to)

a >= b (大于等于)

在兩個運算對象上執行大于等于運算的對象。

用途

使用a >= b确定一個容器的值是否大于等于另一個容器的值。兩個容器可以是任何形狀。

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32
Text | Int32
Enum | Int32

如果其中一個容器是一個數組，另一個容器必須是相同大小和形狀的一個標量或一個數組。結果是值為0或1的標量Int32。如果第一個運算對象大于等于第二個運算對象，那么結果值為1；否則值為0。

如果兩個運算對象的類型都是Coord，其獨立變量必須完全相同，才能進行這一運算；否則會返回錯誤。Enums轉換成Text進行比較。 Text按ASCII單詞順序進行比較。

在兩個數組相互映射時，每個要素集必須符合關系運算符，運算才會返回1。

范例

一個標量和一個數組: 3.0 >= [1, 3, 9]返回0。

一個數組和一個標量: [4, 5, 6] >= 4返回1。

兩個數組: [3, 3, 6] >= [2, 3, 5]返回1。

兩個數組: [1, 4, 3] >= [2, 3, 5]返回0。

兩個Coord標量: coord(1,3) >= coord(1,5)返回0。

兩個Coord標量: coord(1,3) >= coord(2,5)返回Values for independent variables must match。

兩個Text標量: "too" >= "zoo"返回0。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Comparison
Member: >=

另請參閱

a ~= b (約等于), a AND b, a == b (等于), a > b (大于), a < b (小于), a <= b (小于等于), NOT a, a != b (不等于), a OR b, Comparison, a XOR b, Comparator, Conditional和If/Then/Else。


hamming(x)

用来对时序值应用Hamming窗口的对象。

用途

使用hamming(x)过滤x中的值，过滤方式与使用Hamming函数频谱变换对x求卷积的方式相同。这会抑制在取样周期性信号时由于输入序列尾部及其表示的不连续点导致的部分噪声。

输入x必须是Array 1D。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Spectrum | Spectrum

如果x是Spectrum，它先使用ifft(x)转换成Waveform，然后再应用窗口。然后再使用fft(x)把窗口结果转换回到Spectrum类型。

范例

hamming([1, 1, 1, 1, 1, 1, 1, 1])返回[0.115, 0.364, 0.716, 0.965, 0.965, 0.716, 0.364, 0.115]。

备注

Hamming函数在时域中表示为

0.54-0.46*cos(2*PI*(n+0.5)/N)

其中n是数组中的(索引)，N是数组的大小。结果是形状与x相同的数组，映射关系与x相同(如有)。

如需了解旁瓣电平和相干增益，请参阅：Ziemer, Tranter和Fannin, 信号和系统, Macmillan Publishing, New York, NY, 1983. ISBN #0-02-431650-4。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing
Member: hamming

另请参阅

bartlet(x), blackman(x), convolve(a,b), fft(x), hanning(x), ifft(x)和rect(x)。


hanning(x)

用来对时序值应用Hanning窗口的对象。

用途

使用hanning(x)过滤x中的值，过滤方式与使用Hanning函数频谱变换对x求卷积的方式相同。这会抑制在取样周期性信号时由于输入序列尾部及其表示的不连续点导致的部分噪声。

输入x必须是Array 1D。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Spectrum | Spectrum

如果x是Spectrum，它先使用ifft(x)转换成Waveform，然后再应用窗口。然后再使用fft(x)把窗口结果转换回到Spectrum类型。

范例

hanning([1, 1, 1, 1, 1, 1, 1, 1])返回[0.038, 0.309, 0.691, 0.962, 0.962, 0.691, 0.309, 0.038]。

备注

Hanning函数在时域中表示为

0.5*(1-cos(2*PI*(n+0.5)/N))

其中n是数组中的(索引)，N是数组的大小。结果是形状与x相同的数组，映射关系与x相同(如有)。

如需了解旁瓣电平和相干增益，请参阅：Ziemer, Tranter和Fannin, 信号和系统, Macmillan Publishing, New York, NY, 1983. ISBN #0-02-431650-4。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing
Member: hanning

另请参阅

bartlet(x), blackman(x), convolve(a,b), fft(x), hamming(x), ifft(x)和rect(x)。


help(topic,filename)

VEE系统信息Built-in Functions部分，允许链接到自定义帮助主题。

用途

通过使用help对象，可以链接到自定义help主题文件。语法是：

help(topic,filename)

topic - 希望链接到的help主题的名称。

filename - 包含help主题信息的filename。

在VEE程序启动及执行这个对象时，help系统将打开与指定topic相关的filename。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: help

另请参阅

installDir()


hidePanel()

隐藏使用showPanel()显示的UserFunction面板的对象。

用途

使用hidePanel()停止显示使用showPanel()显示的UserFunction面板。

Open View

必须包括文本hidePanel()。在圆括号内部输入下面的参数：

"UFname" - UserFunction的名称，在这个名称外面必须有双引号。这个参数是必填参数。

可以在hidePanel()对象中添加一个数据输入端，设置UserFunction名称，但必须用输入端名称替换"UFname"。

备注

hidePanel()对象是在没有输入的情况下初始化的、包含hidePanel("UFname")公式的Formula对象。还可以在任何其它Formula对象中输入hidePanel() (和相关参数)。

可以通过控制端输入整个hidePanel()公式。

一旦程序停止执行，将隐藏所有面板。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Panel
Member: hidePanel

另请参阅

Call, lockPosition(),
 showPanel(), panelPosition(),
 panelSize(), unlockPosition()和UserFunction。


hmsToHour (h,m,s)

返回转换成小时的参数h, m和s的值的对象。

用途

使用hmsToHour(h,m,s)把小时、分钟和秒三个值转换成小时。h, m和s可以是任何形状。如果其中一个容器是数组，另一个数组必须是或相同大小和形状的标量或数组。结果是最高类型的容器，其形状与运算对象相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

hmsToHour(1, [0, 12, 60], 36)返回[1.01, 1.21, 2.01]。

备注

如果任何输入参数有映射，那么这些映射必须相同。得到的容器包含输入容器的映射。如果只有其中一个输入有映射，那么得到的容器也有这些映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Time & Date
Member: hmsToHour

另请参阅

dmyToDate (d,m,y), hmsToSec (h,m,s), mday(aDate), month(aDate), now(), Time & Date, wday(aDate)和year(aDate)。


hmsToSec (h,m,s)

返回转换成秒的参数h, m和s的值的对象。

用途

使用hmsToSec(h,m,s)把小时、分钟和秒三个值转换成秒。h, m和s可以是任何形状。如果其中一个容器是数组，另一个数组必须是或相同大小和形状的标量或数组。结果是最高类型的容器，其形状与运算对象相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

hmsToSec(1,[2, 4, 6],3)返回[3723, 3843, 3963]。

备注

如果任何输入参数有映射，那么这些映射必须相同。得到的容器包含输入容器的映射。如果只有其中一个输入有映射，那么得到的容器也有这些映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Time & Date
Member: hmsToSec

另请参阅

dmyToDate (d,m,y), hmsToHour (h,m,s), mday(aDate), month(aDate), now(), Time & Date, wday(aDate)和year(aDate)。


Hyper Bessel

参阅帮助主题Bessel。


Hyper Trig

参阅帮助主题Trig。


i0(x)

用來計算第一類階零的x修改后的(雙曲線)貝塞爾函數的對象。

用途

使用i0(x)找到第一類階零的x修改后的(雙曲線)貝塞爾函數。x輸入可以是任何大小和形狀。對Coord輸入類型，運算在相關變量上完成。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

i0(1) 返回 1.26606587775200.

備注

忽略運算對象上的映射關系，輸出容器的映射關系与輸入相同。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Bessel
Member: i0

另請參閱

i1(x), k0(x), 和 k1(x).


i1(x)

用來計算第一類階1的x修改后的(雙曲線)貝塞爾函數的對象。

用途

使用i0(x)找到第一類階1的x修改后的(雙曲線)貝塞爾函數。x輸入可以是任何大小和形狀。對Coord輸入類型，運算在相關變量上完成。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

i1(1) 返回0.565159103992485。

備注

忽略運算對象上的映射關系，輸出容器的映射關系与輸入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: i1

另請參閱

i0(x), k0(x), 和 k1(x).


identity(x)

用来返回标识矩阵的对象。

用途

使用identity(x)返回大小与输入方阵相同的标识矩阵。x输入必须是一个方阵。方阵的行数和列数相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Complex | Complex
PComplex | PComplex

范例

如果x是一个方阵[ [1, 2], [3, 4] ]，identity(x)返回
[ [1, 0], [0, 1] ]。

如果x是复方阵[ [(1,1), (2,2)], [(3,3), (4,4)] ]，identity(x)返回[ [(1,0), (0,0)], [(0,0), (1,0)] ]。

备注

忽略运算对象上的映射关系，输出包含的映射关系与输入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: identity

另请参阅

det(x), inverse(x)和transpose(x)。


im(x)

返回复数x的虚数部分的对象。

用途

使用im(x)提取复数x的虚数部分。x可以是任何形状。(PComplex先转换成Complex。)

允许的输入类型 返回类型

UInt8 | UInt8, 零值
Int16 | Int16, 零值
Int32 | Int32, 零值
Real32 | Real32, 零值
Real64 | Real64, 零值
Coord | Coord, 零值
Waveform | Waveform, 零值
Complex | Real64, 虚数部分的值
PComplex | Real64, 虚数部分的值
Spectrum | Real64, 虚数部分的值

范例

im( (1,2) )返回2。

im( (1,@90) )，其中Trig Mode为Degrees，返回1。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Complex Parts
Member: im

另请参阅

conj(x), j(x), mag(x), phase(x), re(x), Real Parts, Build Complex和UnBuild Complex。


inDaylightSavings()

表明计算机时间是不是夏令时的一个对象。

用途

使用inDaylightSavings()确定计算机是使用夏令时还是标准时间。如果计算机当前时间是标准时间，这个对象会返回零。如果计算机当前时间是夏令时，这个对象会返回非零。

备注

inDaylightSavings()对象是在没有输入的情况下初始化的一个Formula对象，并包含inDaylightSavings()公式。还可以在任何其它Formula对象或表达式中输入inDaylightSavings()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Time & Date
Member: inDaylightSavings

另请参阅

now, Formula


init(x,val)

用来把数组初始化为某个值的对象。

用途

使用init(x,val)把输入数组x初始化为val的值。x输入可以是任何大小和形状及任何类型。对所有x输入类型，返回的输出类型相同(Error输出除外，它返回Text)。第二个val参数必须是相同类型，或能够转换成与x输入值相同的类型。

如果输入x是一个数组，那么val初始值参数可以是一个Scalar值或一个数组。如果val是一个数组，其维数和大小必须与x输入相同。也就是说，如果x是一个Array 1D，那么val可以是一个Scalar或相同大小的Array 1D。对Records，x和val的图表必须匹配。

范例

init(a,5)把输入数组初始化为5的值。

init(a,[1, 2, 3])把三个要素组成的输入数组初始化为值[1, 2, 3]。

备注

初始值的类型必须与输入数组相同，或能够转换成相同的类型。也就是说，不能把实数数组初始化为复数初始值，因为复数不能转换成实数。

输出容器上的映射与输入val相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Array
Member: init

另请参阅

ramp (numElem, from,thru), randomize (x,low,high)和Allocate Array。


installDir()

返回安装了Agilent VEE的目录路径的对象。

用途

可以使用installDir()确定计算机上安装了Agilent VEE的目录。路径从PC上的注册记录中检索得出。

备注

可以使用命令行选项-d <dirname>，指定与安装目录不同的开始目录。如果使用-d选项，installDir()会返回命令行上指定的开始目录。

installDir()对象是一个在没有输入的情况下初始化的Formula对象，其中包含installDir()公式。还可以在任何其它Formula对象或表达式中输入 installDir()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: installDir

另请参阅

errorInfo(), getEnv(envStr), getHostname(), whichVersion()和commandLine()。


integral(x)

使用Simpson 1/3法計算所有數据輸入值的積分的對象。

用途

integral(x)計算一組排序的空間均勻分布的值的不定積分的數字近似值。

允許的輸入類型 返回類型

UInt8 | Real64 (same mappings, if any)
Int16 | Real64 (same mappings, if any)
Int32 | Real64 (same mappings, if any)
Int64 | Real64(same mappings, if any)
Real32 | Real64 (same mappings, if any)
Real64 | Real64 (same mappings, if any)
Coord | Coord
Waveform | Waveform

范例

integral([ 0, 1, 2, 3, 3, 2, 1, 0 ]) 返回
[ 0, 0.5, 2, 4.5, 7.667, 10.17, 11.67, 12.17 ].

注釋

integral(x)函數可以用于簡單值的一維數組和兩維（兩個域）坐標的列表，該列表表示的是空間均勻分布且已排序的數据。對映射的數組，結果數組和x的映射關系相同。對坐標列表, 每個坐標的獨立域（第一個域）的值要与x的相應域相同。

對非映射數組，假設數据是已排序且空間均勻分布，且1被假定為點間的間距dx。對映射數組，操作中使用的間距dx等于(Xmax-Xmin)/N且自動被正确地縮放。對坐標列表，將首先檢查獨立域（第一個域）以确保它們已排序且在空間上均勻分布，然后用前面已确定的間隔作為dx在從屬點（第二個域）上操作。

如果使用非映射數組，但知道點間的間距為某dx, 那么正确的操作值就可以通過將integral(x)的結果和已知的dx相乘而獲得。

當對噪音數据操作時，integral(x)的結果通常可以通過先濾波和平滑數据來提高（實際上的）。平滑可以去除許多不想要但被添加到實際數据上的噪音。參閱polySmooth(x)函數及相關平滑函數。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Calculus
Member: integral

另請參閱

defIntegral (x,a,b).


intPart(x)

返回x的整數部分的值得對象。

用途

使用intPart(x)可獲得一個容器的整數部分。x可以為任何形狀。The intPart(x)返回數据的整數部分。如果數据小雨0，它返回ceil(x)；否則它返回floor(x)。結果与x的映射關系相同。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

intPart([23.0, 23.1, 23.9, 23.5,(-23.5)]) 返回
[23, 23, 23, 23, -23].

注釋

結果保持原有的映射關系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts
Member: intPart

另請參閱

abs(x), ceil(x), Complex Parts, floor(x), fracPart(x), Real Parts, 和 round(x).


intToChar(a)

把数字输入转换成ASCII字符的对象。

用途

使用intToChar(a)把数字输入转换成ASCII字符。这个对象先把输入转换成长整数，然后把整数转换成字符。

备注

转换成字符的取值范围是0 - 255。通过只转换32位整数输入的低阶字节，这个对象支持位于这一范围之外的输入。它忽略最上面的三个字节。

VEE使用与C和C++相同的TEXT(String)，因此intToChar(0)等同于NUL或空字符串。NUL是一个字符串终结符。例如，字符串123NUL456会生成字符串123。它忽略字符串的其余部分456。

范例

intToChar(65) 返回A。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: IntToChar

另请参阅

charToInt(a)和String。


inverse(x)

用来计算方阵倒置矩阵的对象。

用途

使用inverse(x)计算方阵x的倒置矩阵。x输入的形状必须是方阵(行数与列数相同)。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Complex | Complex
PComplex | PComplex

范例

如果x是一个方阵[ [1, 2], [3, 4] ]，inverse(x)返回
[ [-2, 1], [1.5, -0.5] ]。

备注

忽略运算对象上的映射关系，输出包含的映射关系与输入相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: inverse

另请参阅

det(x), identity(x)和transpose(x)。


isVariant(x)

查询"x"，确定其是不是从ActiveX变量创建的。

用途

如果"x"是一个数组，那么这个函数在数组容器上操作，而不是在各个数组要素上操作。例如，isVariant(A)会正常运行，而isVariant(A[0])则不能正常运行。

ActiveX数据可以声明为Variant类型，然后指配某个类型的数据。isVariant函数告诉您变量是否声明为Variant。typeName函数告诉您目前为Variant指配的数据类型。

范例

someMethod (ByRef x);

isVar = isVariant (x);

isVar变量现在包含一个零值或非零值，表明"x"是不是真正的Variant类型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: isVariant

另请参阅

isVariantBool(x), isVariantCurrency(x), isVariantDate(x), isVariantEmpty(x), isVariantError(x), isVariantNull(x), typeName(x).


isVariantBool(x)

查询"x"，确定其是不是从Boolean类型的ActiveX变量创建的。

用途

ActiveX Automation Boolean数据类型(VT_BOOL)作为Int16容器返回VEE，并带有一个"提示"，表明容器类型实际上是VT_BOOL。可以查询容器，确定其实际类型是Int16还是Boolean。

如果 "x" 是一个数组，那么这个函数在数组容器上操作，而不是在各个数组要素上操作。例如，isVariantBool(A)会正常运行，而isVariantBool(A[0])则不能正常运行。返回值是一个Int16，假时为0，真时为非零值。

范例

someMethod (ByRef x);

isBool = isVariantBool (x);

isBool变量现在包含一个零值或非零值，表明"x"是不是真正的VT_BOOL类型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: isVariantBool

另请参阅

isVariant(x), isVariantCurrency(x), isVariantDate(x), isVariantEmpty(x), isVariantError(x), isVariantNull(x), typeName(x)


isVariantCurrency(x)

查询 "x"，确定其是不是从Currency类型的ActiveX变量创建的。

用途

ActiveX Automation Currency数据类型(VT_CY)作为Real64容器返回VEE，并带有一个 "提示"，表明容器类型实际上是VT_CY。可以查询容器，确定其实际类型是Real64还是Currency。

如果 "x" 是一个数组，那么这个函数在数组容器上操作，而不是在各个数组要素上操作。例如，isVariantCurrency(A)会正常运行，而isVariantCurrency(A[0])则不能正常运行。返回值是一个Int32，假时为0，真时为非零值。

范例

someMethod (ByRef x);

isCurrency = isVariantCurrency (x);

isCurrency变量现在包含一个零值或非零值，表明 "x"是不是真正的VT_CY类型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: isVariantCurrency

另请参阅

isVariant(x), isVariantBool(x), isVariantDate(x), isVariantEmpty(x), isVariantError(x), isVariantNull(x), typeName(x)


isVariantDate(x)

查询 "x"，确定其是不是从Date类型的ActiveX变量创建的。

用途

ActiveX Automation Date数据类型(VT_DATE)作为 Real64容器返回 VEE，并带有一个 "提示"，表明容器类型实际上是VT_DATE。可以查询容器，确定其实际类型是Real64还是Date。

如果 "x" 是一个数组，那么这个函数在数组容器上操作，而不是在各个数组要素上操作。例如，isVariantDate(A)会正常运行，而isVariantDate(A[0])则不能正常运行。返回值是一个Int32，假时为 0，真时为非零值。

范例

someMethod (ByRef x);

isDate = isVariantDate (x);

isDate变量现在包含一个零值或非零值，表明 "x"是不是真正的VT_DATE类型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: isVariantDate

另请参阅

isVariant(x), isVariantBool(x), isVariantCurrency(x), isVariantEmpty(x), isVariantError(x), isVariantNull(x), typeName(x)


isVariantEmpty(x)

查询 "x"，确定其是不是从空的ActiveX变量创建的。

用途

用来确定返回的Variant是不是Empty (而不是包含空字符串的Variant)。

如果 "x" 是一个数组，那么这个函数在数组容器上操作，而不是在各个数组要素上操作。例如，isVariantEmpty(A)会正常运行，而isVariantEmpty(A[0])则不能正常运行。返回值是一个Int32，假时为 0，真时为非零值。

范例

someMethod (x);

isEmpty = isVariantEmpty (x);

isEmpty变量现在包含一个零值或非零值，表明 "x"是不是真正的空Variant。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: isVariantEmpty

另请参阅

isVariant(x), isVariantBool(x), isVariantCurrency(x), isVariantDate(x), isVariantError(x), isVariantNull(x), typeName(x)


isVariantError(x)

查询 "x"，确定其是不是从Error类型的ActiveX变量创建的。

用途

ActiveX Automation Error数据类型(VT_ERROR)作为Int32 容器返回VEE，并带有一个 "提示"，表明容器类型实际上是VT_ERROR。可以查询容器，确定其实际类型是Int32还是Error 。值代表错误编号(scode)。

如果 "x" 是一个数组，那么这个函数在数组容器上操作，而不是在各个数组要素上操作。例如，isVariantError(A)会正常运行，而isVariantError(A[0])则不能正常运行。返回值是一个Int32，假时为 0，真时为非零值。

范例

someMethod (x);

isError = isVariantError (x);

isError变量现在包含一个零值或非零值，表明 "x"是不是真正的VT_ERROR类型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: isVariantError

另请参阅

isVariant(x), isVariantBool(x), isVariantCurrency(x), isVariantDate(x), isVariantEmpty(x), isVariantNull(x), typeName(x)


isVariantNull(x)

查询 "x"，确定其是不是从包含Null的ActiveX变量创建的。

用途

用来确定返回的Variant是否包含VT_NULL (而不是Int32值0)。

如果 "x" 是一个数组，那么这个函数在数组容器上操作，而不是在各个数组要素上操作。例如，isVariantNull(A)会正常运行，而isVariantNull(A[0])则不能正常运行。返回值是一个Int32，假时为 0，真时为非零值。

范例

someMethod (x);

isNull = isVariantNull (x);

isNull变量现在包含一个零值或非零值，表明 "x"是不是真正的VT_NULL类型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: isVariantNull

另请参阅

isVariant(x), isVariantBool(x), isVariantCurrency(x), isVariantDate(x), isVariantEmpty(x), isVariantError(x), typeName(x)


j(x)

將x作為虛數部分返回一個复數的對象。

用途

用j(x)產生一個与x形狀相同的复數，x作為虛數部分，0位實數部分。返回值得形狀相同。

允許的輸入類型 返回類型

UInt8 | Complex
Int16 | Complex
Int32 | Complex
Int64 | Complex
Real32 | Complex
Real64 | Complex
Waveform | Complex

范例

j(5) 返回复數 (0,5).

備注

結果保持原映射關系。要返回一個以x作為實數部分的复數，可以使用在輸入端將real型轉為Complex型。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Complex Parts
Member: j

另請參閱

Complex Parts, conj(x), im(x), mag(x), phase(x), re(x), Real Parts, Build Complex, 和 UnBuild Complex.


j0(x)

用來計算第一類階零的x的貝塞爾函數的對象。

用途

使用j0(x)計算第一類階零的x的貝塞爾函數。 x輸入可以是任何大小和形狀。對Coord輸入類型，運算在相關變量上完成。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

j0(10) 返回 -0.245935764451348.

備注

忽略運算對象上的映射關系，輸出容器的映射關系与輸入相同

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Bessel
Member: j0

另請參閱

Ai(x), Bi(x), j1(x), jn(x,n), y0(x), y1(x), 和 yn(x,n).


j1(x)

用來計算第一類階1的x的貝塞爾函數的對象。

用途

使用j0(x)計算第一類階零的x的貝塞爾函數。 x輸入可以是任何大小和形狀。對Coord輸入類型，運算在相關變量上完成。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

j1(1) 返回 0.440050585744933.

備注

忽略運算對象上的映射關系，輸出容器的映射關系与輸入相同。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Bessel
Member: j1

另請參閱

Ai(x), Bi(x), j0(x), jn(x,n), y0(x), y1(x), 和yn(x,n).


jn(x,n)

用来计算第一类阶n的x的贝塞尔函数的对象。

用途

使用jn(x,n)找到第一类阶n的x的贝塞尔函数。x输入可以是任何大小和形状。对Coord输入类型，运算在相关变量上完成。

n参数的类型必须是Int32，或能够转换成Int32。其形状必须是Scalar，或者形状与x相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

jn(1,2)返回0.114903484931900。

备注

如果两个输入都有映射，那么映射必须相同。如果任一输入有映射，返回值的映射关系与输入相同。如果两个输入都没有映射，那么输出没有映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: jn

另请参阅

Ai(x), Bi(x), j0(x) , j1(x), y0(x), y1(x)和yn(x,n)


k0(x)

用来计算第二类阶零的x修改后的(双曲线)贝塞尔函数的对象。

用途

使用k0(x)找到第二类阶零的x修改后的(双曲线)贝塞尔函数。x输入可以是任何大小和形状。对Coord输入类型，运算在相关变量上完成。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

k0(1)返回0.421024438240708。

备注

忽略运算对象上的映射关系，输出容器的映射关系与输入相同。

x自变量必须是正值。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: k0

另请参阅

i0(x), i1(x)和k1(x)。


k1(x)

用来计算第二类阶1的x修改后的(双曲线)贝塞尔函数的对象。

用途

使用k1(x)找到第二类阶1的x修改后的(双曲线)贝塞尔函数。x输入可以是任何大小和形状。对 Coord输入类型，运算在相关变量上完成。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

k1(1)返回0.601907230197234。

备注

忽略运算对象上的映射关系，输出容器的映射关系与输入相同。

x自变量必须是正值。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: k1

另请参阅

i0(x), i1(x)和k0(x)


a < b (less than)

a < b (小于)

在兩個運算對象上執行小于運算的對象。

用途

使用a < b确定一個容器的值是否小于另一個容器的值。兩個容器可以是任何形狀。但如果其中一個容器是一個數組，另一個容器必須是相同大小和形狀的一個標量或一個數組。結果是值為0或1的標量Int32。如果第一個運算對象小于第二個運算對象，那么結果值為1；否則值為0。

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32
Text | Int32
Enum | Int32

如果兩個運算對象的類型都是Coord，其獨立變量必須完全相同，才能進行這一運算；否則會返回錯誤。Enums轉換成Text進行比較。Text按ASCII單詞順序進行比較。

在比較兩個數組時，每對要素必須符合關系運算符，運算才會返回1。

范例

一個標量和一個數組: 3.0 < [1, 3, 9]返回0。

一個數組和一個標量: [1, 2, 3] < 4返回1。

兩個數組: [1, 2, 3] < [2, 3, 5]返回1。

兩個數組: [1, 4, 3] < [2, 3, 5]返回0。

兩個Coord標量: coord(1,3) < coord(1,5)返回1。

兩個Coord標量: coord(1,3) < coord(2,5)返回Values for independent variables must match。

兩個Text標量: "too" < "zoo"返回1。

備注

如果任一容器被映射(即類型為Waveform, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Comparison
Member: <

另請參閱

a ~= b (約等于), a AND b, a == b (等于) , a > b (大于), a >= b (大于等于), a <= b (小于等于), NOT a, a != b (不等于), a OR b, Comparison, a XOR b, Comparator, Conditional和If/Then/Else。


a <= b (less than or equal to)

a <= b (小于等于)

在兩個運算對象上執行小于等于運算的對象。

用途

使用a <= b确定一個容器的值是否小于等于另一個容器的值。兩個容器可以是任何形狀。但如果其中一個容器是一個數組，另一個容器必須是相同大小和形狀的一個標量或一個數組。結果是值為0或1的標量Int32。如果第一個運算對象小于等于第二個運算對象，那么結果值為1；否則值為0。

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32
Text | Int32
Enum | Int32

如果兩個運算對象的類型都是Coord，其獨立變量必須完全相同，才能進行這一運算；否則會返回錯誤。Enums轉換成Text進行比較。Text按ASCII單詞順序進行比較。

在比較兩個數組時，每對要素必須符合關系運算符，運算才會返回1。

范例

一個標量和一個數組: 3.0 <= [1, 3, 9]返回0。

一個數組和一個標量: [1, 2, 4] <= 4返回1。

兩個數組: [1, 2, 3] <= [2, 3, 3]返回1。

兩個數組: [1, 4, 3] <= [2, 3, 5]返回0。

兩個Coord標量: coord(1,3) <= coord(1,5)返回1。

兩個Coord標量: coord(1,3) <= coord(2,5)返回Values for independent variables must match。

兩個Text標量: "too" <= "zoo"返回1。

備注

如果任一容器被映射(即類型為Waveform, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Comparison
Member: <=

另請參閱

a ~= b (約等于), a AND b, a == b (等于), a > b (大于), a >= b (大于等于), a < b (小于), NOT a, a != b (不等于), a OR b, Comparison, a XOR b, Comparator, Conditional和If/Then/Else。


Linear Regression

线性回归

用来把线性回归线拟合到(x,y)数据的对象。

用途

使用线性回归使用等式y = C0 + C1*x把直线拟合到数据中，其中x是x坐标，C0和C1是计算得出的系数。这类回归应视为通过数据拟合最佳直线。

线性回归对象预计Coord类型的输入数组，并带有一个独立变量，即一个(x,y)对。如果输入数组的类型不是Coord，那么它会试图把输入数组转换成Coord。如果输入数据有映射(Waveform, Spectrum或映射的数组)，那么到Coord的转换使用映射信息，生成(x,y)对的x部分。如果输入数据没有映射(如一个数组)，那么会从数组中的位置默示生成(x,y)对的x部分。

Open View 参数

使用 open view上的Fit Type字段把回归类型变成linear, logarithmic, exponential, power curve或polynomial regression。点击这个字段，会出现由不同回归类型组成的列表。

范例

Coord转换范例请参阅Regression。

备注

与回归有关的通用注释请参阅Regression。

位置

Device [image] Regression

然后从对话框上的Fit Type字段中选择相应的Fit Type。

另请参阅

Regression, 指数回归, 对数回归, meanSmooth (x,numPts), movingAvg (x,numPts), 多项式回归, polySmooth (x), 功率曲线回归和Build Coord.


lockPosition()

防止移动正在显示的UserFunction面板的对象。

用途

在使用showPanel()显示UserFunction面板，且已经使用unlockPosition()或已经反选Lock Panel Position属性、允许用户移动面板时，可以使用lockPosition()防止用户移动面板。

Open View

必须包括文本lockPosition()。在圆括号内部输入下面的参数：

"UFname" - UserFunction的名称，在这个名称外面必须有双引号。这个参数是必填参数。

可以在lockPosition()对象中添加一个数据输入端，设置UserFunction名称，但必须用输入端名称替换"UFname"。

备注

lockPosition()对象是在没有输入的情况下初始化的、包含lockPosition()公式的Formula对象。还可以在任何其它Formula对象或表达式中输入lockPosition()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Panel
Member: lockPosition

另请参阅

Call, hidePanel(),
 panelPosition(), panelSize(),
 showPanel(), unlockPosition()和UserFunction。


log(x)

返回x值的自然对数的对象。

用途

使用log(x)得到数字x的自然对数(基数e)。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

log([10, 2])将返回[2.302585092994, 0.693147180559945]。

log((1,2))将返回(0.804718956, 1.10714872)。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power
Member: log

另请参阅

exp(x), exp10(x), a ^ b (exponent), log10(x)和Power。


log10(x)

返回x值的常用对数的对象。

用途

使用log10(x)得到数字x的常用对数(基数10)。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

log10([10, 2])将返回[1, 0.301029995663981]。

log10((1,2))将返回[0.349485, 0.480828579]。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power
Member: log10

另请参阅

exp(x), exp10(x), a ^ b (指数), log(x)和Power。


logarithmic regression

对数回归

用来把对数曲线拟合到数据的对象。

用途

使用对数回归把数据拟合到等式：

y = C0 + C1*log(x)

其中x是x坐标，C0和C1是计算得出的系数。对数函数是自然对数。输入数据(x)必须一直大于0。

对数回归对象预计Coord类型的输入数组，并带有一个独立变量，即一个(x,y)对。如果输入数组的类型不是Coord，那么它会试图把输入数组转换成Coord。如果输入数据有映射(Spectrum或映射的数组)，那么到Coord的转换使用映射信息，生成(x,y)对的x部分。如果输入数据没有映射(如一个数组)，那么会从数组中的位置默示生成(x,y)对的x部分。

Open View参数

使用open view上的Fit Type字段把回归类型变成linear, logarithmic, exponential, power curve或polynomial regression。点击这个字段，会出现由不同回归类型组成的列表。

范例

Coord转换范例请参阅Regression。

备注

与回归有关的通用注释请参阅Regression。

这个函数不能用于没有映射的数组。没有映射的数组转换成从x=0开始的Coord，不能进行对数函数转换。同理，这个函数不能用于Waveform。

位置

Device [image] Regression

然后从对话框上的Fit Type字段中选择相应的Fit Type。

另请参阅

Regression, exponential regression, meanSmooth (x,numPts), movingAvg (x,numPts), polynomial regression, polySmooth (x), power curve regression,和Build Coord.


Logical

Function & Object Browser对话框中Operators的一个Category。

用途

使用Logical存取下述对象，在两个运算对象上执行逻辑运算：

a AND b

a OR b

a XOR b

NOT a

备注

如果满足逻辑要求，那么返回1。如果没有满足逻辑要求，那么返回0。

注意返回值的类型是Int32，形状与运算对象相同。这与条件运算相同，如一直返回标量的==。

逻辑运算符只从字符串是否为空的角度定义给Text类型。也就是说，"zoo"AND"" (空字符串)在逻辑上为假，因为第二个字符串为空。记住，在比较Text类型与非字符串类型时，后者晋级为Text类型。这意味着"zoo" AND 0为真，因为实数0晋级为字符串"0"，另外由于两个字符串都不是空，因此AND表达式为真，返回结果1。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Logical

另请参阅

a AND b, NOT a, a OR b, a XOR b, Comparison, Conditional和If/Then/Else。


logMagDist (x,from,thru, logStep)

用来计算逻辑分布一定时输入容器中数字分布的对象。

用途

使用logMagDist(x,from,thru,logStep)计算输入数组值的log10值的分布。分布在from到thru的范围内完成，步长为logStep。logStep参数是log10域中对对数值分类的子范围大小(0.2的logStep等于每10 Hz有5个子范围)。

x输入可以是任何大小，形状必须是Array。对Complex, PComplex和Spectrum类型的输入，将先计算复数的幅度，然后使用该幅度确定频率分布。

允许的输入类型 返回类型

UInt8 | Real64 Array 1D
Int16 | Real64 Array 1D
Int32 | Real64 Array 1D
Real32 | Real64 Array 1D
Real64 | Real64 Array 1D
Coord | Real64 Array 1D
Waveform | Real64 Array 1D
Complex | Real64 Array 1D
PComplex | Real64 Array 1D
Spectrum | Real64 Array 1D

由于没有为x<=0的值定义log10(x)，因此输入值应为正值。

对所有类型的输入，都返回Real64 Array 1D。每个数组要素表示将有多少个输入值落入每个分布范围内。

from, thru和logStep参数的形状必须是Scalar，类型必须是Real64，或能够转换成Real64类型。

from参数必须小于thru参数。

logStep参数必须大于零。

范例

logMagDist(x,1,100,1)，其中x是数组：

[1, 2, 3, 10, 40, 50, 100, 100 ,100]

返回数组[3, 6]。在本例中，从1到2 x 1有两个子范围。输出数组显示了有多少个输入数字落入每个子范围内。

备注

分布的子范围由下面的范围参数确定：

Range 1

Range Minimum: "from" parm

range: <= range1

Range Maximum: < "from" parm + "step" parm(range1limit)

Range 2

Range Minimum: range1limit

range: <= range2

Range Maximum: < range1limit + "step" parm (range2limit)

Range 3

Range Minimum: range2limit

range: <= range3

Range Maximum: < range2limit + "step" parm (range3limit)

Range n-1

Range Minimum: range(n-2)limit

range: <= range(n-1)

Range Maximum: <= "thru" parm

在确定范围分布前，需要先计算"from"和"thru"参数的log10。

忽略运算对象上的映射，返回值没有映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: logMagDist

另请参阅

magDist(x, from,thru, step).


logRamp (numElem, from,thru)

生成对数斜坡数组的对象。

用途

使用logRamp(numElem,from,thru)生成长度为numElem的Real64一维数组，对数值从from向thru倾斜。numElem必须是一个标量容器，其类型是Int32或能够转换成Int32，取值大于零。from和thru必须是标量容器，或能够转换成Real。如果from小于thru，那么斜率为正；否则，斜率自动为负。from和thru的值都必须大于零。

范例

logRamp(3, 1, 100)返回一个1D Array，取值为[1, 10, 100]。

备注

返回值没有映射。

生成各个值的算法是：

Y[I]=exp10(log10(from)+I*((log10(thru)-log10(from))/numElem-1))
for I=0..numElem-1

这会导致得到的数组中的最后一个要素值是thru。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Generate
Member: logRamp

另请参阅

Alloc Real64和ramp (numElem, from,thru)


mag(x)

返回一個PComplex數x的級數的對象。

用途

使用mag(x)可獲取一個PComplex數x的級數。對integer, Real, Coord, 和 Waveform類型，返回的為相同的類型和數值。 對Complex, PComplex, 和Spectrum類型， mag(x)返回一個Real型容器，其值為PComplex數的級數。(Complex會先被轉換為PComplex.)

允許的x輸入類型 返回類型

UInt8 | Uint8, 值相同
Int16 | Int16, 值相同
Int32 | Int32, 值相同
Int64 | Int64, 值相同
Real32 | Real32, 值相同
Real64 | Real64, 值相同
Coord | Coord, 值相同
Waveform | Waveform, 值相同
Complex | Real64
PComplex | Real64
Spectrum | Real64

范例

mag( (1,@45) ) 返回 1.

注釋

結果中保留映射關系。

Location

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Complex Parts
Member: mag

另請參閱

conj(x), im(x), j(x), phase(x), re(x), Real Parts, Build Complex, Default Preferences, 和 UnBuild Complex.


magDist(x, from,thru, step)

用來計算輸入容器中數字分布的對象。

用途

使用magDist(x,from,thru,step)計算輸入數組中數字的分布。分布在from到thru的范圍內完成，步長為step。step參數是數字將落入的子數組范圍的大小。

x輸入可以是任何大小。對Complex, PComplex和Spectrum類型的輸入，將先計算复數的幅度，然后使用該幅度确定頻率分布。x輸入形狀必須是Array。

允許的x輸入類型 返回類型

UInt8 | Real64 Array 1D
Int16 | Real64 Array 1D
Int32 | Real64 Array 1D
Real32 | Real64 Array 1D
Real64 | Real64 Array 1D
Coord | Real64 Array 1D
Waveform | Real64 Array 1D
Complex | Real64 Array 1D
PComplex | Real64 Array 1D
Spectrum | Real64 Array 1D

返回的數組中的每個要素表示有多少個輸入值將落到每個分布范圍中。

from, thru和step參數的形狀必須是Scalar，類型必須是Real64，或能夠轉換成Real64類型。

from參數必須小于thru參數。

step參數必須大于零。

范例

magDist(x,1,5,1)，其中x是數組array [1, 2, 3, 4, 5, 5, 3, 3, 3, 2, 2, 2]，返回數組[1, 4, 4, 3]。在本例中，從1到5 x 1有四個子范圍。輸出數組顯示了有多少個輸入數字落入每個子范圍內。

備注

分布的子范圍由下面的范圍參數确定︰

Range 1

Range Minimum: "from" parm

range: <= range1

Range Maximum: < "from" parm + "step" parm(range1limit)

Range 2

Range Minimum: range1limit

range: <= range2

Range Maximum: < range1limit + "step" parm (range2limit)

Range 3

Range Minimum: range2limit

range: <= range3

Range Maximum: < range2limit + "step" parm (range3limit)

Range n-1

Range Minimum: range(n-2)limit

range: <= range(n-1)

Range Maximum: <= "thru" parm

忽略運算對象上的映射，返回值沒有映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: magDist

另請參閱

logMagDist (x,from,thru, logStep).


matDivide (numer, denom)

这个对象将把两个矩阵A和B相除。matDivide(numer,denom)运算的代数表达式定义为A/B；但在矩阵(线性代数)中，它定义为inv(B)*A。

用途

使用matDivide(numer,denom)用一个矩阵除以另一个矩阵。假设线性系统BX=A，其中B和A矩阵已知，对矩阵X求解。在代数运算中，X求解方法是用A除以B：X = A/B。但是，在对使用线性代数矩阵规则的公式系统求解时，运算实际上是X = inv(B)*A。这一运算可以用来对n个未知数的n个等式的线性系统求解。

如果B是一个n x n矩阵(方阵)，那么线性系统BX = A是由n个未知数的n个等式组成的系统。假设B不是单数，那么存在inv(B) (B的倒数)，在BX = A的两侧都乘以inv(B)，得到X = inv(B)*A。

inv(B)*A乘法的求解方法与线性系统一定的求解方法相同。如果B不是单数，那么系统有一个唯一的解。

范例

matDivide(A,B)，其中A是一个3x1矩阵[ [8], [24], [8] ],
B是一个3x3矩阵[ [1, 1, 1], [0, 2, 3], [5, 5, 1] ]
返回一个3x1矩阵[ [0], [0], [8] ]。

备注

忽略运算对象上的映射关系，返回值没有映射关系。

matDivide(A,B)使用B的倒数；因此B必须是一个方阵。matMultiply(A,B)规则应用到inv(B) * A运算中。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: matDivide

另请参阅

a / b (除法)和matMultiply (A,B)。


matMultiply (A,B)

用来根据线性代数规则把两个矩阵乘起来的对象。

用途

使用matMultiply(A,B)把两个输入矩阵A和B乘起来。令A是一个m x p矩阵，B是一个p x n矩阵。matMultiply A和B是一个新矩阵Z，即一个m x n矩阵。注意只有在矩阵的大小是A是一个m x p矩阵、B是一个p x n矩阵时才能定义乘法(即第二个矩阵的行数等于第一个矩阵的列数)。

输入矩阵必须是矩阵形状。如果两个矩阵的类型不同，类型较低的矩阵晋级到较高的类型，返回的值是较高的类型。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Complex | Complex
PComplex | PComplex

范例

matMultiply(A,B)，其中A是一个2x1矩阵[ [3], [1] ]，B是一个1x2矩阵[2, 4]，得到一个2x2矩阵[ [6, 12], [2, 4] ]。

备注

忽略运算对象上的映射关系，返回值没有映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: matMultiply

另请参阅

matDivide (numer, denom)和a * b (乘法)。


Matrix

Function & Object Browser对话框上Built-in Functions的一个Category。

用途

使用Matrix运算，在矩阵上计算常用线性代数运算结果：

det(x)

inverse(x)

transpose(x)

identity(x)

minor(x,row,col)

cofactor(x,row,col)

matMultiply(A,B)

matDivide(numer,denom)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix

另请参阅

cofactor(x, row,col), det(x), identity(x), inverse(x), matMultiply (A,B), matDivide (numer, denom), minor(x,row, col)和transpose(x)。


max(x)

用来返回输入容器最大值的对象。

用途

使用max(x)返回容器中的最大值。

x输入可以是任何长度和形状。对Coord输入类型，操作在相关变量上完成。对Text输入类型，max(x)文本字符串是词典中排在最前面的字符串。

允许的输入类型 返回类型

UInt8 | UInt8, 形状标量
Int16 | Int16, 形状标量
Int32 | Int32, 形状标量
Int64 | Int64, 形状标量
Real32 | Real32, 形状标量
Real64 | Real64, 形状标量
Coord | Coord, 形状标量
Waveform | Real 64, 形状标量
Text | Text, 形状标量

范例

max(x)，其中x是数组[5, 34, 1, 54, 6, 2, 9, 7, 16, 42]，返回值为54。

为计算两个标量的值，使用数组构建语法，创建一个数组，在数组上调用max()。例如：

备注

忽略运算对象上的映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: max

另请参阅

maxIndex(x), maxX(x), mean(x), median(x), min(x), mode(x), rms(x), sdev(x), 和vari(x).


maxIndex(x)

返回輸入數組中最大元素的索引號的對象。

用途

使用maxIndex(x)獲得1D數組中最大元素的索引號。x必須為1D數組.

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Int64 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32
Text | Int32

范例

將maxIndex(x)用于一個數組，x為一維數組[.1, .4, .6, .9]，返回值為3因為.9 是這個數組中最大的數。

x為 ["Ken", "Sue", "Randy", "Bill", "Doug"]，maxIndex(x)返回1因為按字典順序"Sue"為最大值。

注釋

注意數組索引從0開始。

忽略運算對象上的映射。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Data Filtering
Member: maxIndex

另請參閱

max(x), maxX(x), min(x), minIndex(x), 和 minX(x).


maxX(x)

返回輸入的1D數組所映射到的數組中的最大點的x值得對象。

用途

使用maxX(x)返回一個1D (線性)數組中最大值的Xindex。x必須為1D數組。

允許的輸入類型 返回類型

UInt8 | Real64 Scalar
Int16 | Real64 Scalar
Int32 | Real64 Scalar
Int64 | Real64 Scalar
Real32 | Real64 Scalar
Real64 | Real64 Scalar
Coord | Real64 Scalar
Waveform | Real64 Scalar
Text | Real64 Scalar

如果為映射數組，返回值為輸入數据的最大y值所對應的x值。x值用數組映射關系來計算。如果數据為非映射數組， 那么返回值為數組中最大y值的索引號。也就是，它會返回數組中最大x值得位置（隱式的）。

對Coord類型，返回最大y值的獨立變量x。

這個函數只能用于映射的數据或Coord類型，因為對非映射數据它与maxIndex(x)功能相同。

范例

當x為一個有256個點并且映射到從0到20毫秒的正弦波時，maxX(x)返回.009219.

當x為非映射數組時，比如 [.1, .4, .6, .9]， maxX(x)返回3，因為 .9是這個數組中最大的元素。這和maxIndex(x)完全一致。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Data Filtering
Member: maxX

另請參閱

max(x), maxIndex(x), min(x), minIndex(x), minX(x), Get Mappings, 和 Set Mappings。


mday(aDate)

返回时间x的月份中天的对象。

用途

使用mday(x)把一定时间x转换成与月份中的天对应的1 - 31值形状相同的容器。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

mday(dmyToDate(25,12,1991))返回25，表示一个月的第25天。

备注

mday(aDate)返回1-31，而不是0-30。 这是VEE中为数不多的基于非零值的函数之一。返回值保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Time & Date
Member: mday

另请参阅

dmyToDate (d,m,y), hmsToHour (h,m,s), hmsToSec (h,m,s), month(aDate), now(), Time & Date, wday(aDate)和year(aDate)。


mean(x)

用来计算输入容器中数据的中间值的对象。

用途

使用mean(x)返回容器的中间(平均)值。输入容器中的数字相加，然后把得到的和除以输入中的单元数量。x输入可以是任何大小和形状。

允许的输入类型 返回类型

UInt8 | Real64 Scalar
Int16 | Real64 Scalar
Int32 | Real64 Scalar
Real32 | Real64 Scalar
Real64 | Real64 Scalar
Coord | Real64 Scalar
Waveform | Real64 Scalar

对Coord输入类型，将在相关变量上完成运算。

范例

如果x是数组[1, 2, 3, 11, 12, 34]，mean(x)返回10.5。

备注

忽略运算对象上的映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: mean

另请参阅

max(x), median(x), min(x), mode(x), rms(x), sdev(x)和vari(x)。


meanSmooth (x,numPts)

用来在相关数据点周围使用指定数量数据的中间值平滑输入数据、计算平滑后的数据点的对象。

用途

使用meanSmooth(x,numPts)执行与polySmooth(x)程序类似的数据平滑操作。该算法计算被平滑的点周围numPts数据点的代数中间值。例如，如果numPts是5，那么对下述点取中间值：当前点前面的两个点，当前点，当前点后面的两个点。如果numPts是偶数，那么该算法将在点数上加1，使其变成奇数。x输入的形状必须是Array 1D。

允许的x输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

Coord输入类型的独立变量必须等距，即相邻点之间的间隔x必须是常数。只能在相关变量上进行平滑操作(Coord的y数据)。

这种技术的噪声抑制功能与指定的平均运算的numPts大小有关。大的numPts值抑制噪声的能力要远远超过小的numPts值。如果用来预处理数据，通常使用这一函数，大幅度改善其它函数的结果(如deriv(x,order))。

备注

忽略输入参数上的映射关系，输出的映射关系与输入参数x相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Data Filtering
Member: meanSmooth

另请参阅

movingAvg (x,numPts), polySmooth (x), Regression类型和Signal Processing。


median(x)

用来计算输入容器中值的对象。

用途

使用median(x)返回容器的中值。x输入可以是任何大小和形状。

允许的输入类型 返回类型

UInt8 | Real64 Scalar
Int16 | Real64 Scalar
Int32 | Real64 Scalar
Real32 | Real64 Scalar
Real64 | Real64 Scalar
Coord | Real64 Scalar
Waveform | Real64 Scalar

对Coord输入类型，将在相关变量上完成运算。

范例

median([1, 2, 3, 8, 20])返回3。

median(x)，其中x是数组[1, 2, 5, 11, 12, 33]，返回8。中值是数字范围中的一个值。在数字数量为偶数时，中值计算为两个中间数的平均值。在这种情况下，中值是5和11的平均值8。

median([20, 5, 10])返回10。

备注

忽略运算对象上的映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: median

另请参阅

max(x), mean(x), min(x), mode(x), rms(x), sdev(x)和vari(x)。


min(x)

用来返回输入容器最小值的对象。

用途

使用min(x)返回容器中的最小值。x输入可以是任何长度和形状。

允许的输入类型 返回类型

UInt8 | UInt8, 形状标量
Int16 | Int16, 形状标量
Int32 | Int32, 形状标量
Int64 | Int64, 形状标量
Real32 | Real32, 形状标量
Real64 | Real64, 形状标量
Coord | Coord, 形状标量
Waveform | Real64, 形状标量
Text | Text, 形状标量

对Coord输入类型，操作在相关变量上完成。对Text输入类型，min(x)文本字符串是词典中排在最下面的字符串。

范例

min(x), 其中x是数组[5, 34, 1, 54, 6, 2, 9, 7, 16, 42]，返回值为1。

为计算两个标量的值，使用数组构建语法，创建一个数组，在数组上调用max()。例如：

备注

忽略运算对象上的映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: min

另请参阅

max(x), mean(x), median(x), minIndex(x), minX(x), mode(x), rms(x), sdev(x), 和vari(x).


minIndex(x)

返回輸入數組中最小元素的索引號的對象。

用途

使用minIndex(x)獲得1D數組中最小元素的索引號。x必須為1D數組.

允許的輸入類型 返回類型

UInt8 | Int32
Int16 | Int32
Int32 | Int32
Int64 | Int32
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32
Text | Int32

范例

當x為一維數組[.1, .4, .6, .9]，minIndex(x)返回值為0因為.1 是這個數組中最小的數。

當x為 ["Ken", "Sue", "Randy", "Bill", "Doug"]，minIndex(x)返回3因為按字典順序"Bill"為最小值。

注釋

注意數組索引從0開始。

忽略運算對象上的映射。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Data Filtering
Member: minIndex

另請參閱

max(x), maxIndex(x), maxX(x), min(x), 和 minX(x)。


minor(x,row, col)

計算矩陣x在r行和c列的子行列式的對象。

用途

使用minor(x,row,col)計算矩形輸入矩陣x的子行列式。 子行列式定義為輸入矩陣x刪除地r行和第c列后的子矩陣的子行列式。x必須為方形矩陣(有相同行的數和列數)。將被刪去的行和列r和c, 必須為Int32或可被轉為Int32型的標量。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Complex | Complex, 標量
PComplex | PComplex, 標量

范例

minor(a,1,2), a = [ [3, -1, 2], [4, 5, 6], [7, 1, 2] ],
返回 -34.

注釋

忽略運算對象上的映射。

輸入變量 r 和 c 應為Int32或可被轉換為Int32。 請在制定行數和列數時務必注意，矩陣的行和列是從0 到 n-1。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: minor

另請參閱

cofactor(x, row,col) 和 det(x)。


minX(x)

返回輸入的1D數組所映射到的數組中的最小點的x值得對象。

用途

使用minX(x)返回一個1D (線性)數組中最小值的Xindex。x必須為1D數組。

允許的輸入類型 返回類型

UInt8 | Real64 Scalar
Int16 | Real64 Scalar
Int32 | Real64 Scalar
Int64 | Real64 Scalar
Real32 | Real64 Scalar
Real64 | Real64 Scalar
Coord | Real64 Scalar
Waveform | Real64 Scalar
Text | Real64 Scalar

如果為映射數組，返回值為輸入數据的最小y值所對應的x值。x值用數組映射關系來計算。如果數据為非映射數組， 那么返回值為數組中最小y值的索引號。也就是，它會返回數組中最小x值的位置（隱式的）。

對Coord類型，返回最小y值的獨立變量x。

這個函數只能用于映射的數据或Coord類型，因為對非映射數据它与minIndex(x)功能相同。

范例

當x為一個有256個點并且映射到從0到20毫秒的正弦波時，minX(x)返回.0107.

當x為非映射數組時，比如 [.1, .4, .6, .9]， minX(x)返回 0，因為 .1是這個數組中最小的元素。這和minIndex(x)完全一致。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Data Filtering
Member: minX

另請參閱

max(x), maxIndex(x), maxX(x), min(x), minIndex(x), Get Mappings, 和 Set Mappings。


a mod b (modulo)

a mod b (模數)

對兩個運算對象執行代數模數(余數)運算的對象。

用途

使用a mod b确定兩個容器相除的余數。兩個容器可以是任何形狀。但是，如果其中一個容器是數組，另一個數組必須是標量或相同大小和形狀的數組。結果是最高類型的容器，其形狀与運算對象相同。

允許的輸入類型 返回類型

UInt8 | Highest type
Int16 | Highest type
Int32 | Highest type
Real32 | Highest type
Real64 | Highest type
Coord | Highest type
Waveform | Highest type

如果兩個運算對象的類型都是Coord，它們必須有完全匹配的獨立變量，否則會返回錯誤信息。只能在相關(最后)變量上執行模數運算。

范例

一個標量對一個數組求模: 3.2 MOD [1, 2, 3]返回[0.2, 1.2, 0.2]。

一個數組對一個標量求模: [1, 2, 3] MOD 2返回[1, 0, 1]。

兩個Coord標量: coord(1,3) MOD coord(1,5)返回coord(1,2)。

兩個Coord標量: coord(1,3) MOD coord(2,5)返回錯誤。

兩個標量: 12.95 mod 2返回0.95。

兩個標量: 12.95 mod 2.1返回0.35。

備注

如果任一容器被映射(即類型為Waveform, Coord或任意其它類型的映射數組)，另一個容器必須沒有映射或具有完全相同的映射。返回值的映射關系將与運算對象相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Arithmetic
Member: MOD

另請參閱

a + b (加法), a div b (截短除法), a / b (除法), a * b (乘法)和a - b (減法)。


mode(x)

用来计算输入容器中数据模式的对象。

用途

使用mode(x)，返回容器中的取值模式。模式值是数据中最常见的值。在双模数据(两个数字表示相同的次数)或更高的模式下，mode(x)返回数组容器中取值最低的模式。

在没有模式值的情况下(即每个数字都是唯一的)，返回输入容器中的第一个值。

x输入可以是任何长度和形状。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Real64 Scalar
Waveform | Real64 Scalar

对Coord输入类型，运算在相关变量上完成。

范例

单模: 其中x是数组[2, 1, 12, 11, 2, 33], mode(x)返回2。

双模: 其中x是数组[2, 1, 2, 12, 11, 12], mode(x)返回2。

没有模式: 其中x是数组[3, 2, 1, 11, 12, 33], mode(x)返回3。

备注

忽略运算对象上的映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: mode

另请参阅

max(x), mean(x), median(x), min(x), rms(x), sdev(x), 和vari(x).


month(aDate)

返回时间x的年份中月份的对象。

用途

使用month(aDate)把一定值x转换成与一年中的月份对应的1 - 12值形状相同的容器。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

month(dmyToDate(25,12,1991))返回12，表示一年中的第12个月。

备注

month(aDate)返回1-12，而不是0-11。这是VEE中为数不多的基于非零值的函数之一。返回值保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Time & Date
Member: month

另请参阅

dmyToDate (d,m,y), hmsToHour (h,m,s), hmsToSec (h,m,s), mday(aDate), now(), Time & Date, wday(aDate)和year(aDate)。


movingAvg (x,numPts)

用来使用相关数据点前面指定数量数据点的平均值平滑输入数据、计算平滑后的数据点的对象。

用途

使用movingAvg(x,numPts)执行与meanSmooth(x,numPts)程序类似的数据平滑操作。该算法计算numPts前面数据点的代数中间值。x输入的形状必须是Array 1D。

允许的x输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

Coord输入类型的独立变量必须等距，即相邻点之间的间隔x必须是常数。只能在相关变量上进行平滑操作(Coord的y数据)。

这种技术更多地表示数据的"历史"视图，因为对数组中的任何点，都只会从以前的点中计算平均值。而在polySmooth(x)和meanSmooth(x,numPts)中，则在有问题的点两侧的点中计算平均值。

范例

如果numPts是5，那么将使用4个前面的点和相关点的平均值，确定平滑的点应该是多少。

备注

忽略输入参数上的映射关系，输出的映射关系与输入参数x相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Data Filtering
Member: movingAvg

另请参阅

meanSmooth (x,numPts), polySmooth (x), Regression类型和Signal Processing


a * b (multiply)

在兩個運算對象上執行乘法運算的對象。

用途

使用a * b把兩個容器值相乘。兩個容器可以是任何類型和任何形狀。如果其中一個容器是數組，另一個數組必須是標量或相同大小和形狀的數組。結果是最高類型的容器，其形狀与運算對象相同。

如果兩個運算對象的類型都是Coord，它們必須有完全匹配的獨立變量，否則會返回錯誤信息。只能在相關(最后)變量上執行乘法運算。

如果其中一個容器是Text，那么另一個容器必須是Int32。Text乘法會把字符串重复Int32值給出的次數。Enums先轉換成Text，然后再執行乘法運算。

這個乘法運算在所有數組上執行并行乘法，包括矩陣。對矩陣乘法，參閱函數matMultiply(A,B)。

范例

數組乘以一個標量: [1, 2, 3] * 3返回[3, 6, 9]。

兩個數組: [4, 5, 6] * [1, 2, 3]返回[4, 10, 18]。

兩個PComplex標量: (2,@45) * (3,@90)返回(6,@135)，Trig Mode設置為Degrees。

兩個Coord標量: coord(1,3) * coord(1,5)返回coord(1,15)。

兩個Coord標量: coord(1,3) * coord(2,5)返回錯誤。

文本乘以一個標量: "hello" * 3返回"hellohellohello"。

一個Text數組乘以一個數組: ["hello", "b"] * [3, 2]返回
["hellohellohello", "bb"]。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任意其它類型的映射數組)，另一個容器必須沒有映射或具有完全相同的映射。返回值的映射關系將与運算對象相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Arithmetic
Member: *

另請參閱

a + b (加法), a / b (除法), matMultiply (A,B)和a - b (減法)。


NOT a

對一個操作數進行邏輯非操作的對象。

用途

使用NOT來計算一個容器值的邏輯非。該容器可以為任意類型和形狀。結果為一個与操作數有相同數据形狀的Int32型的數，其取值可為 0 或 1。如果操作數為false(0)，計算結果為1；否則為0。

如果操作數為布爾類型，結果就為与操作數形狀相同的布爾值。

對Coord容器，NOT只作用于從變量(最后一個)。

對Complex, PComplex, 和Spectrum 容器，如果任一部分非零,操作數為真（True）。非空的文本為真（True）。Enums會被先轉換為Text型，然后在操作。

范例

兩個Boolean標量︰NOT False 返回True。

一個標量: NOT 3返回1。

一個標量: NOT 0返回1。

一個數組: NOT [-3, 0, 3] 返回 [0, 1, 0]。。

一個PComplex標量: NOT (1,@90)返回0。

一個Complex標量: NOT (0,1) 返回0。

一個Complex標量: NOT (0,0) 返回1。

一個Coord標量: NOT coord(1,3)返回0。

一個Coord標量: NOT coord(1,0)返回1。

一個Text標量: NOT "too"返回0。

一個Text標量: NOT ""返回1。

備注

結果与操作數有相同的映射關系。

注意If/Then/Else對象要求里面的表達式的解為標量或數組，要么全為0，要么全為1。

位置

Device [image] Function & Object Browser

Type: Operators
Category: Logical
Member: NOT

另請參閱

Conditional 和 If/Then/Else。


a != b (not equal to)

a != b (不等于)

在兩個運算對象上執行不等于運算的對象

用途

使用a != b确定一個容器的值是否不等于另一個容器的值。兩個容器可以是任何類型和任何形狀。如果其中一個容器是一個數組，另一個容器必須是相同大小和形狀的一個標量或一個數組。結果是值為0或1的標量Int32。如果第一個運算對象不等于第二個運算對象，那么結果值為1；否則值為0。

如果兩個運算對象的類型都是Coord，其所有獨立變量和相關變量必須相匹配，結果才為1。如果獨立變量不匹配，那么會返回一個錯誤。Complex、PComplex和Spectrum容器的兩個部分必須相匹配，運算結果才會返回1。Enums轉換成Text進行比較。

數組中兩個容器的對應值都相等時，運算才會返回1。

如果兩個操作數都為Boolean，結果為与操作數具有相同數据形狀的Boolean。

范例

兩個Boolean標量︰True != False 返回True。

一個標量和一個數組: 3.0 == [3, 3, 3]返回0。

一個標量和一個數組: 3.0 == [3, 1, 3]返回1。

兩個arrays: [1, 2, 3] == [1, 2, 4]返回1。

兩個PComplex標量: (1,@90) == (1,@85)返回1。

兩個Complex標量: (2,3) == (2,4)返回1。

兩個Complex標量: (2,3) == (2,3)返回0。

兩個Coord標量: coord(1,3) == coord(1,5)返回1。

兩個Coord標量: coord(1,3) == coord(2,3)返回錯誤︰Values for independent variables must match。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type: Operators
Category: Comparison
Member: !=

另請參閱

a ~= b (almost equal to), a AND b, a == b (equal to), a > b (greater than), a >= b (greater than or equal to), a < b (less than), a <= b (less than or equal to), NOT a, a OR b, Comparison, a XOR b, Comparator, 和 Conditional.


now()

返回当前时间的对象。

用途

使用now()生成带有当前时间值的Real64标题容器。Real64值是UTC中给出的 00:00 hours 1 January 0001 AD(公元1年1月1日零时)以后的秒数。

范例

now()返回约62.802G。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Time & Date
Member: now

另请参阅

dmyToDate (d,m,y), hmsToHour (h,m,s), hmsToSec (h,m,s), mday(aDate), month(aDate), Time & Date, wday(aDate), 和year(aDate)。


a OR b

在兩個運算對象上執行OR邏輯運算的對象。

用途

使用a OR b，确定兩個容器的值是否在邏輯上有一個是真(非零)。兩個容器可以是任何類型和任何形狀。如果其中一個容器是一個數組，另一個容器必須是一個標量或相同大小和形狀的數組。結果是形狀与運算對象相同的Int32，值為0或1。如果兩個運算對象都不是零，那么AND的運算值為1；否則運算值為0。

如果兩個運算對象的類型都是Coord，那么其獨立變量必須完全匹配，否則會返回錯誤。AND運算中只考慮相關(最后)變量。

對Complex、PComplex和Spectrum容器，如果任意部分都不是零，那么運算對象的值為真。如果非零，Text的運算值為真。Enums在運算中會轉換成Text。

如果兩個操作數都為Boolean，結果為与操作數具有相同數据形狀的Boolean。

范例

兩個Boolean標量︰True OR False 返回False。

一個標量和一個數組: 3 OR [3, 3, 3]返回[1, 1, 1]。

一個標量和一個數組: 0 OR [-3, 0, 3]返回[1, 0, 1]。

兩個數組: [1, 0, 0] OR [0, 1, (-1)]返回[1, 1, 1]。

兩個數組: (1,@90) OR (1,@85)返回1。

兩個Complex標量: (0,0) OR (0,1)返回1。

兩個Complex標量: (0,1) OR (1,0)返回1。

兩個Complex標量: (0,0) OR (0,0)返回0。

兩個Coord標量: coord(1,3) OR coord(1,5)返回1。

兩個Coord標量: coord(1,3) OR coord(2,3)返回錯誤。

一個Text標量和一個標量數字: "too" OR  0返回1。

一個Text標量和一個標量數字: "" OR 0返回1，因為一個字符串為空，另一個不是空("0")。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同。返回值的映射關系与運算對象相同，否則會返回錯誤。

注意If/Then/Else對象要求里面的表達式的解為標量或數組，要么全為0，要么全為1。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Logical
Member: OR

另請參閱

a AND b, NOT a, Comparison, a XOR b, Conditional, 和 If/Then/Else.


ordinal(x)

返回x的序號值的對象。

用途

使用ordinal(x)獲得一個容器的序號值。x可以為任意形狀。對于整數，實數, Coord, 和 Waveform, 結果与參數的相同且映射關系相同。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Enum | Int32

對Enum, 結果為一個Int32類型的數，它与x的數据形狀相同，它的值為x在Enum中的初始序號。 根据Enum Constant而創建的Enum的序號是從0到n-1,n為該Enum中值的數量。

范例

用排序的字符串 "a", "b", "c" 創建一個Enum常數，并且選擇"a"為當前值, ordinal(x)會返回0因為選擇的是第一個值。請記住VEE從0開始計數。如果，對上述同一個Enum常數，選擇"c"為當前值，那么ordinal(x)就會返回當前選擇值的序號 2。

注釋

忽略操作數上的映射。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Real Parts
Member: ordinal

另請參閱

Complex Parts, Selection Control, 和 Real Parts。


panelPosition()

输出UserFunction面板位置的对象。

用途

在使用showPanel()显示UserFunction面板时，使用panelPosition()输出面板的位置。输出是Coord，其中包含UserFunction面板左上角的位置(如果面板上有边框和标题区，那么不包括边框和标题区)，即从工作区左上角开始的像素数量。

Open View

必须包括文本panelPosition()。在圆括号内，输入下述参数：

"UFname" - UserFunction的名称。这个名称外面必须使用双引号。这个参数是必填的参数。

可以在panelPosition()对象中添加一个数据输入端，设置UserFunction名称，但必须用输入端名称代替"UFname"。

备注

如果UserFunction没有面板视图或程序中还没有显示面板视图，panelPosition()会返回Coord (0, 53)。

如果目前没有显示UserFunction面板，panelPosition()会返回上次显示的面板位置。

panelPosition()对象是没有输入的情况下初始化的、包含panelPosition()等式的Formula对象。还可以在任何其它Formula对象或表达式中输入panelPosition()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Panel
Member: panelPosition

另请参阅

Call, hidePanel(),
 lockPosition(), panelSize(),
 showPanel(), unlockPosition(),
和UserFunction。


panelSize()

输出UserFunction面板的大小的对象。

用途

在使用showPanel()显示UserFunction面板时，使用panelSize()输出面板的大小。输出是Coord，其中包含用像素表示的UserFunction面板的大小，但不包括边框和标题区的大小(如果面板上有边框和标题区)。

Open View

必须包括文本panelSize()。在圆括号内，输入下述参数：

"UFname" - UserFunction的名称。这个名称外面必须使用双引号。这个参数是必填的参数。

可以在panelSize()对象中添加一个数据输入端，设置UserFunction名称，但必须用输入端名称代替"UFname"。

备注

如果UserFunction没有面板视图或程序中还没有显示面板视图，panelSize()会返回Coord (0, 0)。

如果目前没有显示UserFunction面板，panelSize()会返回上次显示的面板大小。

panelSize()对象是没有输入的情况下初始化的、包含panelSize()等式的Formula对象。还可以在任何其它Formula对象或表达式中输入panelSize()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Panel
Member: panelSize

另请参阅

Call, hidePanel(),
 lockPosition(), panelPosition(),
 showPanel(), unlockPosition(),和 UserFunction。


perm(n,r)

計算n個數中一次選擇r個數的排列的對象。

用途

perm(n,r)按下述公式計算n個數中一次選擇r個數的排列:

Perm(n, r) = n! / (n - r)!

符號!表示階乘。n可以為任意形狀和大小。底二個參數r必須与n的類型相同或可以轉換為n的類型。如果所有的輸入參數都為數組，那么它們的形狀和大小必須相同。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

perm(n, r)只可以用于整數操作數，所以計算前都會把所有輸入參數轉換為Int32。

范例

根据下述公式，perm(10,3) 返回 720
10!/(10-3)! = 10!/7! = 10*9*8 = 720。

根据下述公式，perm(10.4,3.9)返回 5040
10!/(10-4)! = 10!/6! = 10*9*8*7 = 5040。根据將一個實數轉換為Int32規則，10.4被轉換為10，3.9 被轉換為 4。

注釋

n和r必須為正數，且n必須比r大。如果兩個輸入都被映射，它們的映射關系必須相同。如果一個輸入是映射的，返回值就會与它有相同的映射關系。如果沒有輸入是映射的，則輸出也是非映射的。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Probability & Statistics
Member: perm

另請參閱

beta(x,y), binomial(a,b), comb(n,r), factorial(n), 和 gamma(x)。


phase(x)

返回PComplex數x的相位的對象。

用途

phase(x)用于獲得PComplex型數x的相位。x可以為任意形狀。對Complex, PComplex, 和Spectrum類型，phase(x) 返回一個Real64類型的容器，它的值是PComplex的極性相角。(Complex 會先被轉換成PComplex。)

允許的輸入類型 返回類型

UInt8 | UInt8, 0
Int16 | Int16, 0
Int32 | Int32, 0
Int64 | Int64, 0
Real32 | Real32, 0
Real64 | Real64, 0
Coord | Coord, 0
Waveform | Waveform, 0
Complex | Real64
PComplex | Reail64
Spectrum | Real64

phase(x)返回值得洙位是當前的Trig Mode。

范例

phase((1,@45)) 返回 45。

注釋

結果保留原映射關系。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Complex Parts
Member: phase

另請參閱

conj(x), im(x), j(x), mag(x), re(x), Real Parts, Build PComplex, Default Preferences, 和 UnBuild PComplex。


poly(x,vec)

poly(x,[a0, a1]), poly(x,[a0, a1, a2]), poly(x,[a0, a1, a2, a3])和poly(x,[a0, a1, ... aN])对象的总称。这些对象返回x的多项式值和vec值。

用途

使用poly(x,vec)生成x数据的多项式结果和vec系数。x可以是任何形状，返回的形状相同。vec必须是一个标量或一个一维数组。poly(x,vec)取vec的要素作为多项式系数，取x作为数据。vec从a0开始，然后是a1，依此类堆，直到vec的长度。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64

多项式公式计算：

a0 + a1*x + a2*x*x + a3*x*x*x + ...

范例

poly([10, 2], [3, 2, 4])得到[423, 23]。

备注

得到的容器中的映射关系与输入容器x相同。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power
Member: poly

另请参阅

ramp (numElem, from,thru).


多項式回歸

用來把任意度的多項式曲線擬合到(x,y)數据的對象。

用途

使用多項式回歸把數据擬合到等式
y = C0 + C1*x + C2*x^2 + ... , 其中x是x坐標，C0和C1等是計算得出的系數。多項式曲線擬合要求在回歸對象的Order輸入字段上設置多項式的度。

多項式回歸對象預計Coord類型的輸入數組，并帶有一個獨立變量，即一個(x,y)對。如果輸入數組的類型不是Coord，那么它會試圖把輸入數組轉換成Coord。如果輸入數据有映射(Waveform, Spectrum或映射的數組)，那么到Coord的轉換使用映射信息，生成(x,y)對的x部分。如果輸入數据沒有映射(如一個數組)，那么會從數組中的位置默示生成(x,y)對的x部分。

Open View Parameters

使用open view上的Fit Type字段把回歸類型變成linear, logarithmic, exponential, power curve或polynomial regression。點擊這個字段，會出現由不同回歸類型組成的列表。

Order輸入字段用來設置數据擬合的多項式順序。多項式擬合順序必須大于等于1。順序1的多項式擬合會把數据擬合成直線，結果与linear regression選項相同。

范例

Coord轉換范例請參閱Regression。

備注

与回歸有關的通用注釋請參閱Regression。

位置

Device [image] Regression

然后從對話框上的Fit Type字段中選擇相應的Fit Type。

另請參閱

Regression, 指數回歸, 線性回歸, 對數回歸, meanSmooth (x,numPts), movingAvg (x,numPts), polySmooth (x), 功率曲線回歸和Build Coord。


polySmooth (x)

使用数据多项式拟合平滑数据的对象。

用途

使用polySmooth(x)平滑数据。四阶多项式拟合到数据上，使用多项式根据曲线拟合计算新的数据点。为进行四阶曲线拟合，将使用5个点：被拟合的数据点两侧各两个，以及数据点本身，要特别注意两个端点。x输入形状必须是Array 1D。

允许的x输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

Coord输入类型的独立变量必须等距，即相邻点之间的间隔x必须是常数。只能在相关变量上进行平滑操作(Coord的y数据)。

备注

使用的方法是取一个5个要素的滑动窗口，对第四次Stirling排列多项式应用公式。参阅Francis Scheid, Schaum数字分析原理和问题概论, McGraw Hill, New York, NY, 1968. ISBN #07-055197-9。

忽略输入参数上的映射关系，输出的映射关系与输入参数x相同。

使用这一技术得到的滤波运算的?#39057;响?#26159;固定的，只抑制数据中噪声最大的部分。如果要求更多的噪声抑制能力，参阅meanSmooth(x,numPts)函数，可以使用这一函数抑制多得多的噪声。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Data Filtering
Member: polySmooth

另请参阅

meanSmooth (x,numPts), movingAvg (x,numPts), Regression 类型和Signal Processing。


Power

Function & Object Browser对话框上Built-in Functions的一个Category。

用途

使用Power存取下面的对象，执行幂函数，如平方根、平方、对数、指数和log 10。

sq(x)

sqrt(x)

cubert(x)

recip(x)

log(x)

log10(x)

exp(x)

exp10(x)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power

另请参阅

cubert(x), exp(x), exp10(x), log(x), log10(x), recip(x), sq(x), sqrt(x), a + b (加法), a / b (除法), a ^ b (指数), a * b (乘法)和a - b (减法)。


功率曲線回歸

用來把功率曲線擬合到(x,y)數据的對象。

用途

使用功率曲線回歸把數据擬合到等式y = C0 * x^C1，其中x是x坐標，C0和C1是計算得出的系數。

功率曲線回歸對象預計Coord類型的輸入數組，并帶有一個獨立變量，即一個(x,y)對。如果輸入數組的類型不是Coord，那么它會試圖把輸入數組轉換成Coord。如果輸入數据有映射(Spectrum或映射的數組)，那么到Coord的轉換使用映射信息，生成(x,y)對的x部分。如果輸入數据沒有映射(如一個數組)，那么會從數組中的位置默示生成(x,y)對的x部分。

Open View參數

使用open view上的Fit Type字段把回歸類型變成linear, logarithmic, exponential, power curve或polynomial regression。點擊這個字段，會出現由不同回歸類型組成的列表。

范例

Coord轉換范例請參閱Regression。

備注

与回歸有關的通用注釋請參閱Regression。

這個函數不能用于沒有映射的數組。沒有映射的數組轉換成從x=0開始的Coord，不能進行對數函數轉換。對數函數用于內部回歸計算中。

位置

Device [image] Regression

然后從對話框上的Fit Type字段中選擇相應的Fit Type。

另請參閱

Regression, 指數回歸, 線性回歸, 對數回歸, meanSmooth (x,numPts), movingAvg (x,numPts), 多項式回歸, polySmooth (x)和Build Coord。


Probability & Statistics

Function & Object Browser对话框上Built-in Functions的一个Category。

用途

使用Probability & Statistics函数，处理随机数字、概率和统计计算等问题。

beta(x,y)

binomial(a,b)

comb(n,r)

erf(x)

erfc(x)

factorial(n)

gamma(x)

logMagDist(x,from,thru,logStep)

magDist(x,from,thru,step)

max(x)

mean(x)

median(x)

min(x)

mode(x)

perm(n,r)

random(low,high)

randomize(x,low,high)

randomSeed(seed)

rms(x)

sdev(x)

vari(x)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics

另请参阅

beta(x,y), binomial(a,b), comb(n,r), erf(x), erfc(x), factorial(n), gamma(x), logMagDist (x,from,thru, logStep), magDist(x, from,thru, step), max(x), mean(x), median(x), min(x), mode(x), perm(n,r), random (low,high), randomize (x,low,high), randomSeed (seed), rms(x), sdev(x)和vari(x)


product(x)

用来把输入数组的所有要素乘起来的对象。

用途

使用product(x)把输入数组的所有要素乘在一起。x输入可以是任何大小和形状。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real64
Coord | Real64 scalar
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | PComplex Scalar

这个对象的输出是输入容器中包含的所有数据的代数乘积，其形状为Scalar。

范例

如果x是数组[1, 2, 3, 4]，product(x)返回24。

备注

忽略运算对象上的映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Array
Member: product

另请参阅

a * b (乘法)和sum(x)


programName()

返回目前正在执行的VEE程序名称的对象。

用途

返回目前正在执行的VEE程序的整个路径，包括名称。这个函数没有参数。

备注

programName()对象是在没有输入的情况下初始化的、包含programName()公式的对象。还可以在任何 Formula对象或表达式中输入programName()。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: System Information
Member: programName

另请参阅

installDir, commandLine, Formula


ramp (numElem, from,thru)

產生一個線性漸變數組的對象。

用途

ramp(numElem,from,thru)用于產生一個 Real64型的一維數組，其長度為numElem，其值從from到 thru(包括)線性漸變。numElem必須是標量容器，或可以轉換為Int64型且大于0的數。from 和 thru 也必須為Real64或可轉換為Real64型標量。

如果from小于thru，漸變為正。否則它自動遞減。

范例

ramp(3, 0.5, 0) 返回一個一維數組其值為 [0.5, 0.25, 0]。

ramp(5, 2, 10) 返回一個一維數組其值為 [2, 4, 6, 8, 10]。

注釋

返回值沒有映射。

產生計算結果的算法為︰

Y[I] = from + I*(thru-from/numElem-1)
for I=0..numElem-1

返回數組的最后一個元素其值為thru。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Generate
Member: ramp

另請參閱

Alloc Real64, logRamp (numElem, from,thru), 和 xramp (numElem, from,thru)。


random (low,high)

用来生成低值和高值之间的随机数字的对象。这一函数使用线性叠合算法和48位整数代数运算生成伪随机数字。

用途

使用random(low,high)生成low值和high值之间的伪随机数字。生成的数字位于包括低值、但不包括高值的间隔内，其表示为"[l h)"。l和h输入的形状必须是Scalar。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64

对位于"[l h)"范围内的所有情况，都返回一个Real64 Scalar。

这一函数只输出一个Scalar值。对数组输入使用randomize(x,low,high)函数，会生成由带标度的随机数字组成的数组。

如果l值大于h值，那么返回的随机数字范围位于间隔"(l h]"范围内。

范例

random(0,1)将生成(0.0 1.0)范围内的实数，即包括0.0，但不包括1.0。

备注

random(low,high)将返回"(0.0 1.0)"范围内的一个Real Scalar容器。

另外，每次在程序中使用时或由迭代器对象激活多次时，random(low,high)会返回一个不同的数字。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: random

另请参阅

randomize (x,low,high)和randomSeed (seed)


randomize (x,low,high)

用来随机化[low high)范围中数字输入容器值的对象。生成的数字位于包括low、但不包括high的间隔内，其表示为"[low high)"。这一函数使用线性叠合算法和48位整数代数运算生成伪随机数字。

还可以使用这一对象，随机化位于[low high]范围内的Text输入容器的字符串。

用途

对数字值：

使用randomize(x,low,high)生成low和high(即高值和低值)之间的伪随机数字。输入容器中的所有数据x都用伪随机数字重写。x输入可以是任何大小和形状。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord, 参阅下面
Waveform | Waveform
Complex | Complex
PComplex | PComplex, 参阅下面
Spectrum | Spectrum, 参阅下面

对PComplex和Spectrum类型，只有数字的幅度位于[low high)范围内。相位在(-PI to PI)范围内是随机的。对Coord类型，只能随机化相关变量。

low输入和high输入的形状必须是Scalar，类型必须可以转换成x的类型。生成的随机数字位于[low high)范围内。

如果low值大于high值，那么返回的伪随机数字范围位于间隔(low high]中。

对字符串值：

为随机化字符串，对Text数据类型的输入值使用randomize(x,low,high)。输入字符串(x输入上的数据容器)将被伪随机顺序的、位于[low high]范围内的ASCII字符组成的输出字符串所重写，其中low是low输入容器中的第一个字符，high是high输入容器的第一个字符。(注意，范围中同时包含 low和high，这与数字值不同。) 输出字符串的长度与输入字符串的长度相同。

low和high的默认值是空格(" ", ASCII 32)和鄂化符号("~", ASCII 126)。

备注
在low或high的输入数据是"" (空字符串)时，字符串使用默认值。

范例

数字范例：

如果x输入上的容器的数据类型是Real64，randomize(x,0,10)将把输入容器x的所有值随机化成(0.0 10.0)范围内的实数，即包括0.0，但不包括10.0。

字符串范例：

randomize("abcdef","a","b")可能会返回"abbaba"。

randomize("abcabcabcab","a","z")可能会返回"pterodactyl"。(只是可能!)

randomize("abcabc","","")可能会返回"Al@z~#"。(在low和high为空字符串时，将使用默认极限-- ASCII 32 - 126。)

randomize("aaaaa","go","stop")可能会返回"smjpg". (在确定范围时只使用low和high中的第一个字符。)

randomize("aaaaa","97","99")返回"99999". (low值和high值被理解为字符串，而不是ASCII十进制值。)

备注

忽略输入参数上的映射关系，输出的映射关系与输入参数x相同。

对数字x输入，randomize(x)将返回一个大小和形状与x相同，但数据在(0.0 - 1.0)内随机化的容器。

对字符串运算，输出的字符串集不能在low = ASCII 32和high = ASCII 126极限范围外定义输出的字符串集合。即随机化字符串中的输出不允许使用32以下和126以上的ASCII字符。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: randomize

另请参阅

random (low,high)和randomSeed (seed).


randomSeed (seed)

用来设置random(low,high)和randomize(x,low,high)函数初始值的对象。

用途

使用randomSeed(s)为random(low,high)和randomize(x,low,high)函数使用的线性叠合算法输入一个随机籽输入点。

籽输入s的形状必须是Scalar，类型必须是Int32或能够转换成Int32。这个函数返回的值是s籽值。

范例

randomSeed(97)初始化伪随机数字算法。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: randomSeed

另请参阅

random (low,high)和randomize (x,low,high)


re(x)

返回复数x实数部分的对象。

用途

使用re(x)提取复数x的实数部分。x可以是任何形状。

允许的输入类型 返回类型

UInt8 | UInt8, 取值相同
Int16 | Int16, 取值相同
Int32 | Int32, 取值相同
Int64 | Int64, 取值相同
Real32 | Real32, 取值相同
Real64 | Real64, 取值相同
Coord | Coord, 取值相同
Waveform | Waveform, 取值相同
Complex | Real64, 复数的实数部分值
PComplex | Real64, 复数的实数部分值
Spectrum | Real64, 复数的实数部分值

PComplex先转换成Complex。

范例

re( (1,2) )返回1。

re(1,@180)，其中Trig Mode用Degrees表示，返回-1。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Complex Parts
Member: re

另请参阅

Complex Parts, conj(x), im(x), j(x), mag(x), phase(x), 和Real Parts。

Build Complex和UnBuild Complex。


Real Parts

Function & Object Browser对话框中Built-in Functions的一个Category 。

用途

使用Real Parts存取下述对象，返回容器的不同部分：

abs(x)

signof(x)

ordinal(x)

round(x)

floor(x)

ceil(x)

intPart(x)

fracPart(x)

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts

另请参阅

abs(x), ceil(x), floor(x), fracPart(x), intPart(x), ordinal(x), round(x), signof(x)和Complex Parts。


recip(x)

返回x的倒數的對象。

用途

recip(x)用于產生一個數的倒數，即用1除以x，x可以為任何形狀，返回值的形狀与它相同。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

對于PComplex，recip(x)被定義為對幅度求倒數，相位的符號求反。Complex要先轉換為PComplex再用此函數計算。

范例

recip( (5, @45) ) 返回 (0.2, @-45)。

recip( (1,-1)) ) 返回 (0.5, 0.5)。

注釋

結果保留原映射關系。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Power
Member: recip

另請參閱

a / b (divide), Power, sq(x), 和 sqrt(x)。


rect(x)

將矩形窗應用于時間序列值的對象。

用途

rect(x)用于對 x 的值進行濾波。它等同于對 x 進行矩形函數的 spectral 變換。它可以消除一個由于輸入序列的尾部而產生的干擾和在采樣周期信號時它們所代表的潛在的不連續性。輸入參數 x 必須為1D數組。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Spectrum | Spectrum

如果x是Spectrum, 那么在窗口應用前，使用ifft(x)先把它轉換為Waveform。 對于窗口的結果也會使用fft(x)再把它轉換成 Spectrum。

范例

rect([1, 1, 1, 1, 1, 1, 1, 1]) 返回 [1, 1, 1, 1, 1, 1, 1, 1].

注釋

rect 函數把時域里的所有值都表示為1, 這里0 <= n <= N -1, n是數組里的位置（索引），N是數組的大小。結果是与x類型相同的數組，且映射關系也与x相同（如果有的話）。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Signal Processing
Member: rect

另請參閱

bartlet(x), blackman(x), convolve(a,b), fft(x), hamming(x), 和 hanning(x)。


Regression

一个菜单项。

用途

使用Regression把各类回归等式拟合到数据中。

linear

logarithmic

exponential

power curve

polynomial

备注

所有回归对象都预计Coord类型的输入数组。如果输入数组的类型不是Coord，那么它会试图把输入数组转换成Coord。Coord类型转换遵守下面的标准类型转换规则。如果输入数组没有映射，那么会从数组索引中生成默示的x参数。也就是说，回归必须在(x,y)对上完成。x值从零开始，范围直到n - 1，其中n是数据点数。如果输入数组有映射，那么生成的x数据范围将从映射的低值直到映射的高值。

回归提供拟合到选择的公式的数据数组作为输出。输出数组的点数与输入数据数组相同。它还输出一个由系数组成的数组，这些系数与为每个回归类型导出的常数对应。参阅各个回归类型，确定数据拟合到哪个公式。第三个输出是R-squared或"拟合程度"系数。其范围位于-1和1之间。-1或1表示完全拟合，-1和1之间的数字表示变化的拟合程度。

范例

有一个没有映射的数组输入[10, 20, 30, 40, 50]，其转换成Coord数组：

[ (0, 10), (1, 20), (2, 30), (3, 40), (4, 50) ].

如果输入数组是数组[1, 2, 3, 4, 5]，且其从1映射到2 (如单位为秒)，那么它将转换成Coord数组：

[ (1, 1), (1.25, 2), (1.5, 3), (1.75, 4), (2, 5) ].

位置

Device [image] Regression

另请参阅

指数回归, 线性回归, 对数回归, 多项式回归, 功率曲线回归, meanSmooth (x,numPts), movingAvg (x,numPts)和polySmooth (x)。

Properties (对象)


rms(x)

用來返回輸入容器中數据的rms (均方根)值的對象。

用途

使用rms(x)計算輸入容器的均方根值。rms值定義為[(The sum of x^2)/N]的平方根，其中N是點數。x輸入可以是任何大小和形狀。

允許的輸入類型 返回類型

UInt8 | Real64 Scalar
Int16 | Real64 Scalar
Int32 | Real64 Scalar
Real32 | Real64 Scalar
Real64 | Real64 Scalar
Coord | Real64 Scalar
Waveform | Waveform

對Coord輸入類型，在相關變量上完成運算。

范例

其中x是數組[1, 2, 3, 4, 5, 11, 12, 13, 14, 34]， rms(x)返回13.319159。

備注

忽略運算對象上的映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: rms

另請參閱

max(x), mean(x), median(x), min(x), mode(x), sdev(x)和vari(x)。


rotate(x, numElem)

用于循環移位一個數組中元素的對象。

用途

rotate(x,n)用于循環移動輸入數組x中的元素n個位置。x可以為任何大小和形狀。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum
Text | Text

輸入參數n必須為Int32類型或可以轉換為Int32型的標量。如果循環移位數n為正值，循環移位的方向為沿數組向下（向前）。比如，如果 n 是 2, 那么數組的第一個元素就會被移到第三位(x[2])，第二個元素會被移到第四位(x[3])，其他以此類推。 如果n為負值，數組元素就會往上移(向后)。

如果循環移位數大于數組中元素的個數，那么移位的次數通過用數組元素個數對循環移位次數取模來得到。比如，如果輸入數組有5個元素，但要移動13次，實際的移動次數為3(13 MOD 5 = 3)。

范例

rotate(x,5) 把輸入數組的所有元素都向右移動5個位置。

rotate(x,15), 如果輸入數組有15個元素，什么都不做因為所有元素有被移回原來的位置。

rotate([1, 2, 3, 4, 5], 1) 返回 [5, 1, 2, 3, 4].

注釋

當執行循環移位操作時，可將數組視為一個循環列表，即數組中最后一個元素与第一個元素相連。當數組元素移到數組末尾時，它就會返回到數組的開始處。比如，A為一個長度為10的數組，rotate(A,5)會將數組中的第10個數移到第五位。

忽略輸入參數的映射且輸出結果与參數x有相同的映射關系。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Array
Member: rotate

另請參閱

concat(x,y) 和 init(x,val)。


round(x)

返回x的四舍五入值的對象。

用途

使用round(x)獲得容器四舍五入到最近整數的值。x可以是任何形狀。round(x)函數返回距x最近的整數(采用相同的類型)。分界線是0.5，超過0.5的進一位。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

round([23.0, 23.1, 23.9, 23.5, (-23.5)])返回
[23, 23, 24, 24, -23]。

備注

結果中保留映射關系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts
Member: round

另請參閱

abs(x), ceil(x), Complex Parts, floor(x), fracPart(x), intPart(x)和Real Parts。


savePanelImage(UFName, fileName, numColors)

使用numColors的像素深度，把名为UFName的UserFunction的面板图像保存到文件 fileName中。

用途

使用savePanelImage(UFName, fileName, numColors)以程序化方式把一个VEE UserFunction面板绘制成标准图像文件，在报告中可以使用VEE UserFunction面板。savePanelImage函数中不支持UserObject面板。

在重复运行程序时，将重写图形文件，而不会事先通知用户，除非改变fileName。

Open View

这一函数包括三个参数；只有UFName是必填参数：

"UFName" - (必填) UserFunction标题栏的名称。这个参数是必填参数。也可以使用特殊名称"Execution Window" (输入要和这里所示的内容完全一样)代替"UFName"。在这个名称外面必须有双引号。

"fileName" (可选) 绘制的图像的目标文件名，可以包括目的驱动器和目录。在这个名称外面必须有双引号。默认文件名使用UFName的基本名称。如果UFName是Execution Window，那么默认文件名将是Execution。默认目的地是VEE默认工作目录，在标准VEE安装中是"C:\My Documents"。

fileName的文件扩展名确定输出文件的图形格式。默认的图形格式是JPEG。支持的格式包括：

.bmp - Bitmap

.jpg/.jpeg - 联合照相专家小组(JPEG)

numColors (可选) 颜色深度，指明每个像素的最大颜色数量。这个数字是2的幂数 (2, 4, 8, ... 2M)。默认值为256。

备注
numColors只适用于位图图形文件(.bmp)。如果指定的数字较小，那么会缩小得到的文件容量，降低图像的清晰度。

范例

下面的范例绘制名为my_userfunc的本地UserFunction的图像，使用可选参数的默认值编写一个文件。这个文件在VEE当前工作目录中另存为my_userfunc.jpeg。

savePanelImage("my_userfunc")

下面的范例与上一个范例类似，但表达式将在当前状态下保存Execution Window。

savePanelImage("Execution Window")

下面的范例绘制名为someUF的本地 UserFunction的图像，使用JPEG格式在目的目录d:\tmp\somedir中写入一个名为myimage.jpeg的文件。

savePanelImage("someUF", "d:/tmp/somedir/myimage.jpeg")

下面的范例绘制名为someUF的本地UserFunction的图像，使用JPEG格式在目的目录d:\tmp\somedir中写入一个名为myimage.bmp的文件。它使用每个像素16色写入文件，而不是默认的256色。

savePanelImage("someUF", "d:/tmp/somedir/myimage.bmp", 16)

下面的范例绘制导入的UserFunction named statusPanel的图像，它位于lib1库中。它使用JPEG格式在/usr/lib/veepanels目录中写入一个名为status.jpeg的文件。

savePanelImage("lib1.statusPanel", "/usr/lib/veepanels/status.jpeg")

备注

savePanelImage()函数在为三个参数中每个参数预先配置一个数据输入的Formula对象中创建。可以在任何其它Formula对象中输入savePanelImage()函数。

通过添加名为Formula的控制输入，可以以程序化方式输入整个表达式。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Panel
Member: savePanelImage

另请参阅

Call, Execution Window, hidePanel(), showPanel()和UserFunction.


sdev(x)

一個用于返回輸入容器中數据的標準偏差的對象。

用途

sdev(x)用于計算輸入容器中數据的標準偏差。sdev(x)被定義為vari(x)的平方根。輸入參數x可以為任意大小和形狀。

允許的輸入類型 返回類型

UInt8 | Real64 Scalar
Int16 | Real64 Scalar
Int32 | Real64 Scalar
Int64 | Real64 Scalar
Real32 | Real32 Scalar
Real64 | Real64 Scalar
Coord | Real64 Scalar
Waveform | Real64 Scalar

對Coord類型的輸入，操作只作用于從屬變量。

范例

x為[1, 2, 3, 4, 5, 11, 12, 13, 14, 34], sdev(x) 返回 9.50789.

注釋

結果中保留映射關系

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Probability & Statistics
Member: sdev

另請參閱

max(x), mean(x), median(x), min(x), mode(x), rms(x), 和 vari(x)。


setBit(x,n)

为x返回第n个位设为1的对象。

用途

使用setBit(x,n)把容器x的某个二进制位设为1。x可以是任何形状。如果x的类型是Real32, Real64, Coord或Waveform，那么在操作前它会转换成Int32。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

n必须是Int32类型或可以转换成Int32类型，且取值位于0 - 31(含)之间的容器。n必须是标量，或与x形状相匹配。

范例

setBit(8,0)返回9。

setBit(8.24,0.9) 也返回9。

备注

返回值的映射关系与x参数相同。

最无效的位在右面，最有效的位在左面。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bitwise
Member: setBit

另请参阅

bit(x,n), bits(str), Bitwise和clearBit(x,n)。


showPanel()

显示UserFunction面板的对象。

用途

使用showPanel()显示UserFunction面板，直到执行hidePanel()或程序运行结束。showPanel()允许在需要时启动一个状态面板。为使用showPanel()，不得在UserFunction上选择Show Panel on Execute。

Open View

存在三个版本的showPanel()对象，显示使用的语法。必须在编辑字段中包括文字showPanel()。在圆括号中，可以在任何对象中输入下述参数：

"UFname" - UserFunction的名称，在这个名称外面必须有双引号。这个参数是必填参数。

x, y - UserFunction面板左上角的位置(用像素表示)(包括存在的边框和标题栏区域)。这个参数是可选的；如果没有指定x和y坐标，那么面板显示在工作区的中心。

width, height - 面板的大小(用像素表示)。这个参数是可选的；如果指定width和height，那么必须指定x, y参数。如果没有指定width和height，那么会使用当前面板大小。width和height设置从面板视图的右侧和下侧增删空间，如果存在标题栏和边框，那么也包括标题栏和边框。

在用输入端名称替换参数时，可以在showPanel()对象中添加数据输入端，设置任何参数。

备注

showPanel()不运行UserFunction，它只显示Panel View。为查看面板，运行UserFunction，先使用showPanel()，然后调用UserFunction。

如果您只想在UserFunction运行时查看Panel View，应从UserFunction Properties窗口中选择Show Panel on Execute，而不是使用showPanel()。

showPanel()对象是在没有输入的情况下初始化的、包含showPanel(...)公式的Formula 对象。还可以在支持表达式的任何对象中输入showPanel() (和相关参数)，如Formula和Sequencer对象。

可以通过控制端输入整个showPanel()等式。

VEE没有把弹出面板的位置限定在工作区的大小，可以指定?#23631;幕外?超出看得见的窗口)的x和y。

只有在程序运行时才显示使用showPanel()显示的所有面板。

一次只能显示一个UserFunction面板拷贝。如果使用相同的UserFunction名称多次调用showPanel()，那么将显示最后调用的面板，隐藏以前调用的面板。

为查找显示的面板名称，在面板上点击鼠标右键，会弹出面板名称。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Panel
Member: showPanel

另请参阅

Call, hidePanel(),
 lockPosition(), panelPosition(),
 panelSize(), unlockPosition()和UserFunction.


Signal Processing

Function & Object Browser对话框上的一个Built-in Functions类别。

用途

使用Signal Processing，存取应用到某些函数一维数组(UInt8, Int16, Int32, Real32, Real64, Complex, PComplex, Waveform, Spectrum)及两维(两个字段)坐标列表的多个信号处理函数。

fft(x)

ifft(x)

convolve(a,b)

xcorrelate(a,b)

bartlet(x)

hamming(x)

hanning(x)

blackman(x)

rect(x)

备注

Signal Processing下的Built-in Functions适用于表示有序的、间隔相等的数据值组成的一维数组。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing

另请参阅

bartlet(x), blackman(x), convolve(a,b), fft(x), hamming(x), hanning(x), ifft(x), rect(x)和xcorrelate (a,b)。


signof(x)

返回x的符号的对象。

用途

使用signof(x)获得容器的符号。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Int32
Real64 | Int32
Coord | Int32
Waveform | Int32

返回值是-1, 0或+1，具体取决于x值是负数、是零还是正数。如果x是负数，那么返回-1；如果x是零，那么返回0；如果x是正数，那么返回+1。

范例

signof([23, 0, -1])返回[1, 0, -1]。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Real Parts
Member: signof

另请参阅

abs(x), Complex Parts和mag(x)。


sin(x)

返回x的正弦的对象。

用途

使用sin(x)，生成x的正弦数据。假设x采用当前Trig Mode单位。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

sin([0, PI/2])返回[0, 1]，其中Trig Mode设为Radians。

sin((1, @PI))返回(0.84147, @3.14159)，其中Trig Mode设为Radians。

备注

结果中保留映射关系。使用设置成Radians之外的值的Trig Mode可能会在第12个有效位以后导致精度误差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: sin

另请参阅

asin(x), cos(x), tan(x), sinh(x), Trig和默认首选项。


sinh(x)

返回x的雙曲正弦的對象。

用途

使用sin(x)，生成x的正弦數据。假設x采用當前Trig Mode洙位。x可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

sinh(1.2) 返回 1.509。

注釋

結果中保留映射關系。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Trig
Member: sinh

另請參閱

asinh(x), cosh(x), Trig, sin(x), 和 tanh(x)。


sort(x, direction, field)

sort(x, 方向, 字段)

对数据数组分类的函数(任意数据类型)。

用途

在Formula对象中使用sort函数，对输入x上的数据数组分类。它支持所有数据类型，在默认情况下，会按升序对数据分类。如果在Formula对象中使用sort，那么语法如下：

sort(x [,方向[,字段] ] )

其中:

方向(可选)指定分类方向。默认值是升序，任何非零值都表示升序。取值为0表示按降序分类。

字段(可选)指定按哪个字段对数组分类：

对实数、整数和Text数据类型，忽略这个参数。

对Complex数据类型，指定0或"real"对实数字段分类。指定1或"imag"对虚数字段分类。必须指定所有这三个参数。

对PComplex数据类型，指定0或"mag"对幅度字段分类。指定1或"phase"对相位字段分类。必须指定所有这三个参数。

对Coordinate数据类型，在默认状态下数组将根据相关字段分类(x-y对中的"y", x-y-z三元组中的"z")。指定0或"x"按x字段分类，指定1或"y"按y字段分类，依此类推。(注意对Coordinate数据类型，即使可能会改变输入端名称，但字段名称一直是x, y, z, w, v, u, t, s, r, q。)

对Record数据类型，在默认情况下将根据第一个字段对数组分类。也可以按数字(0, 1, 等等)或按名称("operator", "date", 等等)指定名称。

范例

sort(x)将以升序对实数数组x分类。

sort(x,0)将以降序对实数数组x分类。

sort(x,1,"real")或sort(x,1,0)将以升序按实数字段对Complex数组x分类。

sort(x,0,"phase")或sort(x,0,1)将以降序按相位字段对PComplex数组x分类。

sort(x,1,"A")或sort(x,1,0)将以升序按"A"字段对Coordinate数组x分类。

sort(x,1,1)将以升序按第二个字段对Record数组x分类。

备注

文本数据按标准ASCII字符代码顺序分类。因此，大写字母位于小写字母之前。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Array
Member: sort

另请参阅

Formula


sq(x)

返回x平方的對象。

用途

sq(x)計算x的平方(x乘以x)。x可以為任意形狀，返回同樣的形狀。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

sq([1, 4]) 返回 [1, 16]。

sq((1,2)) 返回复數 (-3,4)。

注釋

結果中保留映射關系。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Power
Member: sq

另請參閱

Power 和 sqrt(x)。


sqrt(x)

返回x平方根的對象。

用途

sq(x)計算x的平方根。x可以為任意形狀，返回同樣的形狀。

允許的輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

對于PComplex，sqrt(x)被定義為幅度的平方根和相位的一半。Complex型輸入要先轉換為PComplex再計算。

范例

sqrt( (16, @90) ) 返回 (4, @45)。

sqrt( (1,1) ) 返回 (1.1, 0.455)。

sqrt([4, 9, 64]) 返回 [2, 3, 8]。

注釋

結果中保留映射關系。.

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Power
Member: sqrt

另請參閱

cubert(x), a ^ b (exponent), Power, 和 sq(x)。


Statistics

参阅Probability & Statistics。


strDown(str)

把一个字符串中的所有大写字母字符变成小写字符的对象。

用途

使用strDown(str)把输入字符串str的大小写变成小写。所有大写字母字符("A" - "Z")转换成相应的小写字符("a" - "z")。非字母ASCII字符保持不变。

范例

strDown("ABCdefg%+#")返回"abcdefg%+#"

strDown("123456")返回"123456"

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strDown

另请参阅

strRev(str), strTrim (str,trimlist), strUp(str)和String。


strFromLen (str,from,len)

返回指定长度和起点的子字符串的对象。

用途

使用strFromLen(str,from,len)从输入字符串str中返回一个子字符串，开始位置是索引位置from，长度是以字节为单位的len。如果from = 0，那么子字符串从输入字符串开头开始。使用Base 0索引字符串。

备注

如果len的值小于等于0，那么会返回一个空字符串。

如果from的值大于输入字符串str的长度，那么会返回一个空字符串。

如果len的值大于输入字符串str的长度，那么返回的字符串会在输入字符串结束时停止。

如果输入字符串是一个由字符串组成的数组，那么输入数组的每个要素作为单独的字符串运算。返回值是一个字符串数组。

范例

strFromLen("Now is the time",0,6)返回"Now is"

strFromLen("Now is the time",6,9)返回" the time"

strFromLen("Now is the time",0,30)返回"Now is the time"

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strFromLen

另请参阅

strFromThru (str,from, thru), strPosChar (str,char), strPosStr (str1,str2)和String。


strFromThru (str,from, thru)

返回指定起点和终点的子字符串的对象。

用途

使用strFromThru(str,from,thru)从输入字符串str中返回一个子字符串，开始位置是索引位置from，结束位置是索引位置thru。如果from = 0，那么子字符串从输入字符串开头开始。使用Base 0索引字符串。

备注

from或thru负数值转换成0。

大于输入字符串str长度的from或thru值会转换成输入字符串中最后字符的索引位置。

如果from的值大于输入字符串str的长度或大于thru，那么会返回一个空字符串。

如果输入字符串是一个由字符串组成的数组，那么输入数组的每个要素作为单独的字符串运算。返回值是一个字符串数组。

范例

strFromThru("Now is the time",0,6)返回"Now is "

strFromThru("Now is the time",0,0)返回"N"

strFromThru("Now is the time",6,9)返回" the"

strFromThru("Now is the time",0,30)返回"Now is the time"

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strFromThru

另请参阅

strFromLen (str,from,len), strPosChar (str,char), strPosStr (str1,str2)和String。


String

Function & Object Browser对话框中Built-in Functions(内置函数)的一个Category (类别)。

用途

使用String函数对字符串数据执行下述运算：

strDown(str)

strFromLen(str,from,len)

strFromThru(str,from,thru)

strLen(str)

strPosChar(str,char)

strPosStr(str1,str2)

strRev(str)

strTrim(str)

strUp(str)

intToChar(a)

charToInt(a)

备注

所有字符串函数都能在作为字符串数组的输入上执行运算。其结果是文本或数字数组。运算在输入字符串数组的每一个要素上完成。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String

另请参阅

charToInt(a), intToChar(a), strDown(str), strFromLen (str,from,len), strFromThru (str,from, thru), strLen(str), strPosChar (str,char), strPosStr (str1,str2), strRev(str), strTrim (str,trimlist)和strUp(str)。


strLen(str)

用来确定字符串长度(单位为字节)的对象。

用途

使用strLen(str)确定输入字符串str的长度。返回值是一个Int32 Scalar，给出存在的字节数量。每个日文字符和其它16位字符算作两个字节。

备注

如果输入字符串是一个数组，那么将在输出数组中返回每个要素的长度。

范例

strLen("ABCdefg%+#") 返回10

strLen("123456") 返回6

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strLen

另请参阅

String


strPosChar (str,char)

返回字符列表char中的任何字符在输入字符串str内部的索引的对象。

用途

使用strPosChar(str,char)返回字符串列表char中的任何字符在输入字符串str内部第一次发生的索引。字符串使用Base 0索引。

备注

如果一个以上的列明字符发生一次以上，那么只返回发现的第一个列明字符的索引。

如果输入字符串str中没有找到char中列明的字符，那么会返回值-1。

如果str或char是空字符串，那么会返回值-1。

注意，字符匹配区分大小写。

如果输入字符串是一个数组，那么作为单独的字符串搜索数组的每个要素。字符串要素中的字符位置放到一个输出数组中。

范例

strPosChar("Now is the time","Nwme")返回0

strPosChar("Now is the time","nwme")返回2

strPosChar("Now is the time","x yz ")返回3

strPosChar("Now is the time","")返回-1

strPosChar("Now is the time","xyz")返回-1

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strPosChar

另请参阅

strFromLen (str,from,len), strFromThru (str,from, thru), strPosStr (str1,str2)和String。


strPosStr (str1,str2)

返回字符串str2在字符串str1内部的索引的对象。

用途

使用strPosStr(str1,str2)返回字符串str2在字符串str1内部第一次发生的索引，也就是说，str2在str1内部开始的索引位置。使用Base 0索引。

备注

如果str2在str1中发生一次以上，那么只返回第一次发生的索引。

如果在str1内部没有找到发生str2，那么会返回值-1。

如果str1或str2是空字符串，那么会返回值-1。

注意，字符匹配区分大小写。

如果输入字符串是一个数组，那么作为单独的字符串搜索数组的每个要素。字符串要素中的字符位置放到一个输出数组中。

范例

strPosStr("Now is the time","Now")返回0

strPosStr("Now is the time","is the")返回4

strPosStr("Now is the time","")返回-1

strPosStr("Now is the time","is The")返回-1

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strPosStr

另请参阅

strFromLen (str,from,len), strFromThru (str,from, thru), strPosChar (str,char)和String。


strRev(str)

用来颠倒一个字符串的顺序的对象。

用途

使用strRev(str)颠倒字符串中字符出现的顺序。

备注

如果输入字符串是一个数组，那么返回值是每个要素颠倒的一个字符串数组。

范例

strRev("ABCdefg%+#")返回"#+%gfedCBA"

strRev("123456")返回"654321"

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strRev

另请参阅

strDown(str), strTrim (str,trimlist), strUp(str)和String。


strTrim (str,trimlist)

用来从字符串前面和后面去掉空格和制表符的对象。

用途

使用strTrim(str)对象从输入字符串str中去掉前面和后面的空格和制表符。它去掉第一个非空格/非制表符前面的或最后一个非空格/非制表符后面的所有空格和制表符。在Formula对象中，完整的语法是：

strTrim(str [,trimlist] )

使用strTrim(str,trimlist)从trimlist中包含的str中去掉任何字符。注意，只有在其是str中前面的字符或后面的字符时才会去掉这些字符。

备注

通过在拥有两个输入str和trimlist的Formula对象中使用这个函数，可以把这个函数的语法扩展到strTrim(str,trimlist)中。在这种情况下，trimlist字符串中列出的任何字符，不管是前面的还是后面的，都从str输入字符中去掉。

如果输入字符串是一个数组，那么返回值是每个要素都被去掉空格和制表符的一个字符串数组。

范例

strTrim(" ABCdefg%+#")返回"ABCdefg%+#"

strTrim("eeeABCdefg%+#","eg#")返回"ABCdefg%+"

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strTrim

另请参阅

strDown(str), strRev(str), strUp(str)和String。


strUp(str)

用来把一个字符串中的所有小写字母字符变成大写字符的对象。

用途

使用strUp(str)把输入字符串str的大小写变成大写。所有小写字母字符("a" - "z")转换成相应的大写字符("A" - "Z")。非字母ASCII字符保持不变。

备注

如果输入字符串是一个数组，那么返回值是每个要素都作为单独字符串处理的一个字符串数组。

范例

strUp("ABCdefg%+#")返回"ABCDEFG%+#"

strUp("123456")返回"123456"

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: String
Member: strUp

另请参阅

strDown(str), strRev(str), strTrim (str,trimlist),和String.


a - b (subtract)

a - b (減法)

在兩個運算對象上執行減法代數運算的對象。

用途

使用a - b從另一個容器中減去一個容器的值。兩個容器可以是任何形狀，返回的形狀相同。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Coord | Coord
Waveform | Int32
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

如果其中一個容器是數組，另一個數組必須是標量或相同大小和形狀的數組。結果是最高類型的容器。

如果兩個運算對象的類型都是Coord，它們必須有完全匹配的獨立變量，否則會返回錯誤信息。只能在相關(最后)變量上執行乘法運算。

范例

數組減一個標量: [1, 2, 3] - 3返回[-2, -1, 0]。

標量減一個數組: 3 - [1, 2, 3]返回[2, 1, 0]。

兩個數組: [4, 5, 6] - [3, 2, 1]返回[1, 3, 5]。

兩個Complex標量: (2,4) - (1,3)返回(1,1)。

兩個Coord標量: coord(1,3) - coord(1,5)返回coord(1,-2)。

兩個Coord標量: coord(1,3) - coord(2,5)返回錯誤。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任意其它類型的映射數組)，另一個容器必須沒有映射或具有完全相同的映射。返回值的映射關系將与運算對象相同；否則會返回錯誤。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Arithmetic
Member: -

另請參閱

a + b (乘法), a / b (除法)和a * b (乘法)。


sum(x)

用来加总(累加)输入数组所有要素的对象。

用途

使用sum(x)把输入数组的所有要素加在一起。x输入可以是任何大小和形状。

允许输入类型 返回类型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real64
Coord | Real64 Scalar
Waveform | Real64 Scalar
Complex | Complex
PComplex | PComplex
Spectrum | PComplex
Text | Text Scalar

这个对象的输出（对数字类型）是输入容器中包含的所有数据的算术和，并且是一个Scalar。对Text类型输入，输出是一个Scalar Text容器，包含联在一起的共同构成一个大字符串的所有Text要素。

对Text字符串，sum(x)对象遵守的规则与二元运算符+相同。

范例

x是一个数组[1, 2, 3, 4]，sum(x)返回10。

x是一个数组["first", "second", "third"]，sum(x)返回"firstsecondthird"。

备注

忽略运算对象上的映射关系。

注意对文本输入，concat(x,y)和sum(x)函数之间的区别。在所有情况下，concat(x,y)都创建一个 Array 1D 。sum(x)函数则简单地连接所有文本字符串，构成一个大的输出字符串。也就是说，如果x是Scalar Text 值"a" ，y是Scalar Text 值"b"，那么concat(x,y)会得到Array 1D ["a","b"]。而sum(["a","b"])则返回Scalar容器及其中的Text 值"ab" 。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Array
Member: sum

另请参阅

a + b (加法)，concat(x,y)，和product(x)。


tan(x)

返回x的正切的对象。

用途

使用tan(x)生成x数据的正切。x可以是任何形状，返回的形状相同。x假设采用当前的Trig Mode单位。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

tan([0, 45])返回[0, 1]，其中Trig Mode设为Degrees。

tan((1, 2))返回(33.8128m, 1.01479)，其中Trig Mode设为Radians。

tan((3, @PI/2))返回(0.99505, @1.57079)，其中Trig Mode设为Radians。

备注

结果中保留映射关系。把Trig Mode设为Radians之外的任何值可能会在第12个有效位以后会导致精度误差。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: tan

See Also

atan(x), atan2(y,x), cos(x), cot(x), sin(x), tanh(x), Trig 和默认首选项。


tanh(x)

返回x的双曲线正切的对象。

用途

使用tanh(x)生成x数据的双曲线正切。x可以是任何形状，返回的形状相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform
Complex | Complex
PComplex | PComplex
Spectrum | Spectrum

范例

tanh(0.6)返回0.537。

备注

结果中保留映射关系。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig
Member: tanh

另请参阅

atanh(x), cosh(x), Trig, sinh(x)和tan(x)。


Time & Date

Function & Object Browser對話框中Built-in Functions的一個Category(類別)。

用途

使用Time & Date 存取下面的對象，執行日期和時間轉換︰

now()

wday(aDate)

mday(aDate)

month(aDate)

year(aDate)

dmyToDate(d,m,y)

hmsToSec(h,m,s)

hmsToHour(h,m,s)

備注

now()和dmyToDate(d,m,y)函數將輸出從Epoch（公元0001年1月1日零時）起經過的秒數，并作為時間存儲在UTC （通用協調時間）中。也就是說，將在您的當地時間与GMT （格林威治時間）之間應用校正。由于wday()、mday()、month()和year()函數預計輸入是UTC類型的時間（從now()、dmyToDate,()、Time Stamp 或Date Time常數），因此在進行計算前它們將先去掉校正。

hmsToSec(h,m,s)和hmsToHour(h,m,s)只轉換到增量（經過的）時間，不應用任何UTC校正。您可能會注意到，在字母畫面上顯示的其中一個函數的輸出（以某种Time格式）存在著時差，即您所在的時區与UTC 之間的時間差。您將需要在處理的字母Time Stamp 畫面上使用Delta Time選項來顯示這一信息。

位置

Device [image] Function & Object Browser

Type: Built-in Functions
Category: Time & Date

另請參閱

dmyToDate (d,m,y), hmsToHour (h,m,s), hmsToSec (h,m,s), mday(aDate), month(aDate), now(), wday(aDate), year(aDate)和 To String。


totSize(x)

返回容器总长度的Int32值的对象。

用途

在Formula对象中使用totSize(x)函数，确定输出x上的容器大小。如果x是一个标量或只有一个要素的数组，totSize(x)会返回取值1。

范例

对x= scalar: totSize(x)返回1。

对x= [1]: totSize(x)返回1。

对x= [1, 2]: totSize(x)返回2。

对x= [ [1, 2] ,[3 ,4] ]: totSize(x)返回4。

备注

totSize(x)函数执行的功能与TotSize pin in the Get Values对象相同。

这个对象不接受零要素数组。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Array
Member: totSize

另请参阅

Formula和Get Values。


transpose(x)

用來計算2D數組(矩陣)轉置矩陣的對象。

用途

使用transpose(x)返回矩陣的轉置矩陣。x輸入必須是任何二維數組，不一定是方陣。

允許的輸入類型 返回類型

UInt8 | UInt8
Int16 | Int16
Int32 | Int32
Real32 | Real32
Real64 | Real64
Complex | Complex
PComplex | PComplex
Text | Text

范例

如果x是方陣[ [1, 2], [3, 4] ]，transpose(x)返回
[ [1, 3], [2, 4] ].

如果x是矩陣[ [1, 2, 3], [4, 5, 6] ]，transpose(x)返回
[ [1, 4], [2, 5], [3, 6] ]。

備注

忽略運算對象上的映射關系，輸出容器的映射關系轉置。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Matrix
Member: transpose

另請參閱

det(x), identity(x)和inverse(x)。


三元運算符

一個對象，如果條件為真，返回一個表達式的結果；如果條件為假，則返回另一個表達式的結果。

用途

在Formula對象中使用三元運算符的語法如下︰

(條件? 表達式 : 表達式)

如果條件為真，那么返回第一個表達式的結果。

如果條件為假，那么返回第二個表達式的結果。

三元運算符必須用于Formula對象或獲取表達式的其它對象內部。

范例

如果A<10為真，(A<10 ? A*2 : A*3)返回A*2的結果；如果A<10為假，則返回A*3的結果。

備注

要求用圓括號括起來。

三元運算符可以用來設置"IF/THEN/ELSE"條件測試。其語法与C語言三元運算符相同。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Miscellaneous
Member: (a ? b : c)

另請參閱

逗號運算符, Formula, If/Then/Else和各种運算符。


Trig

Function & Object Browser对话框上Built-in Functions的一个Category。

用途

使用Trig存取下述对象，在数据上执行三角函数：

acos(x)

acosh(x)

acot(x)

acoth(x)

asin(x)

asinh(x)

atan(x)

atan2(y,x)

atanh(x)

cos(x)

cosh(x)

cot(x)

coth(x)

sin(x)

sinh(x)

tanh(x)

tan(x)

备注

所有Trig操作都以Radians进行。如果Trig Mode设为Degrees，那么所有容器必须从Degrees转换成Radians之后，才能执行函数。因此，为实现最佳性能，应使用设为Radians的Trig Mode。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Trig

另请参阅

acos(x), acosh(x), acot(x), acoth(x), asin(x), asinh(x), atan(x), atan2(y,x), atanh(x), cos(x), cosh(x), cot(x), coth(x), sin(x), sinh(x), tanh(x), tan(x)和默认首选项。


typeName(x)

返回x的數据類型的對象。

用途

使用typeName(x)報告容器中目前的數据類型。X可以是任何大小和形狀。作為文本返回下面其中一個名稱︰

VEE 6 模式 所有其他模式

Uint8 | Uint8
Int16 | Int16
Int32 | Int32
Int64 | Int64
Real32 | Real32
Real64 | Real
Complex | Complex
PComplex | PComplex
Text | Text
Enum | Enum
Coord | Coord
Waveform | Waveform
Spectrum | Spectrum
Record | Record
Object | Object

范例

x是一個Complex數組，
typeName(x)返回Complex。

備注

如果x聲明為Variant，typeName(x)會返回x內容的數据類型。例如，如果x是一個Variant，目前包含一個Int32，那么typeName(x)返回Int32。

位置

Location: Device [image] Function & Object Browser

Type: Built-in Functions
Category: Type Conversion

另請參閱

isVariant(x), isVariantBool(x), isVariantCurrency(x), isVariantDate(x), isVariantEmpty(x), isVariantError(x), isVariantNull(x)。


unlockPosition()

允許用戶移動目前正在顯示的UserFunction面板的對象。

用途

在使用showPanel()顯示UserFunction面版，且已經使用lockPosition()或已經复選Lock Panel Position屬性，以防止用戶移動面板時，使用unlockPosition()允許用戶移動面板。

Open View

必須包括文本unlockPosition()。在圓括號中，輸入下述參數︰

"UFname" 𨯅serFunction的名稱，名稱外面必須有雙引號。這個參數是必填的參數。

可以在unlockPosition()對象中添加一個數据輸入端，設置UserFunction名稱，但必須用輸入端名稱替換"UFname" 。

備注

unlockPosition()對象是在沒有輸入的情況下初始化的、包含unlockPosition()公式的Formula對象。還可以在任何其它Formula對象或表達式中輸入unlockPosition()。

位置

Device [image] Function & Object Browser

Type︰ Built-in Functions
Category︰ Panel
Member︰ unlockPosition

另請參閱

Call, hidePanel(),
 lockPosition(), panelPosition(),
 panelSize(), showPanel(),
 和
 UserFunction。


vari(x)

返回輸入容器中數据的方差的對象。.

用途

vari(x)用于計算容器中數据的方差。x可以為任意大小和形狀。

   允許的輸入類型 返回類型

UInt8 | Real64 Scalar
Int16 | Real64 Scalar
Int32 | Real64 Scalar
Int64 | Real64 Scalar
Real32 | Real64 Scalar
Real64 | Real64 Scalar
Coord | Real64 Scalar
Waveform | Real64 Scalar

對于Coord型輸入，該操作作用于從屬變量。

vari(x)被定義為︰
[The SUM of (Xi - Xmean)^2] divided by (numPts - 1)
這里 Xi洙個數据點，mean數据點的平均值，numPts是輸入數組 x 中元素的個數。

范例

數組 x 為 [1, 2, 3, 4, 5, 11, 12, 13, 14, 34]，
vari(x) 返回 90.4。

注釋

忽略操作數上的映射。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Probability & Statistics
Member: vari

另請參閱

max(x), mean(x), median(x), min(x), mode(x), rms(x), 和 sdev(x)。


wday(aDate)

返回時間x的周几的對象。

用途

使用wday(aDate)將給定時間x轉換成与值0 ?6形狀相同的容器，對應一周的工作日。0值對應周日，1對應周一，依此類推，6對應周六。x可以是任意形狀，返回的形狀相同。

允許輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Int64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

wday(dmyToDate(2,1,2003))返回4，所以Jan 2, 2003是周四。

備注

返回值中保留映射關系。

位置

Device [image] Function & Object Browser

Type: Built-in Functions

Category: Time & Date

Member: wday

另請參閱

dmyToDate (d,m,y), hmsToHour (h,m,s), hmsToSec (h,m,s), mday(aDate), month(aDate), now(), Time & Date和year(aDate).


xcorrelate (a,b)

用来交叉相关两个数据数组的对象。

用途

使用xcorrelate(a,b)计算两个1D数组a和b的离散交叉相关。结果是相同类型及大小为(Na+Nb)-1的数组，其中Na是输入数组a的大小，Nb是输入数组b的大小。

输入值a和b必须是Array 1D，其大小不一定相同。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

返回类型与输入的最高类型相同。得到的值没有归一化。

范例

xcorrelate([1, 2, 3, 4, 5],[3, 2, 1])返回[1, 4, 10, 16, 22, 22, 15]。

备注

输入a和b必须表示等间隔数据。此外，a的任意两个值之间的间隔必须与b的任意两个值之间的间隔相同。对两个没有映射的数组，假设间隔总为1。对映射的数组，间隔是(Xmax-Xmin)/N，其中Xmax和Xmin对映，N是数组的大小。在一个输入有映射关系，而另一个数组没有映射时，没有映射的输入假设取样频率与有映射的输入相同。得到的值从未归一化为任何标度系数。

注意xcorrelate(a,b)算法基本上与标准离散卷积算法完全相同，但第二个运算对象与第一个运算的对象顺序不是相反的，而卷积中则是相反的。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Signal Processing
Member: xcorrelate

另请参阅

convolve(a,b).


xlogRamp (numElem, from,thru)

生成对数斜坡数组的对象，其方式与为映射的1D Arrays的坐标转换生成x值使用的方式相同。

用途

使用xlogRamp(numElem,from,thru)生成长度为numElem的Real64一维数组，对数值从from向thru倾斜。numElem必须是一个标量容器，其类型是Int32或能够转换成Int32，取值大于零。from和thru必须是标量容器，或能够转换成Real64。如果from小于thru，那么斜率为正；否则，斜率自动为负。from和thru的值都必须大于零。

范例

xlogRamp(3, 1, 100)返回一个1D Array，取值为[1, 10, 100]。

备注

返回值没有映射。

生成各个值的算法是：

Y[I]=exp10(log10(from)+I*((log10(thru)-log10(from))/numElem))
for I=0..numElem-1

这会导致得到的数组中的最后一个要素值小于thru：

exp10(log10(thru)-log10(from)/numElem).

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Generate
Member: xlogRamp

另请参阅

Alloc Real64, logRamp (numElem, from,thru)和xramp (numElem, from,thru)。


a XOR b

在兩個運算對象上執行排除OR邏輯運算的對象。

用途

使用XOR b，确定兩個容器中一個容器、且只有一個容器的值是否在邏輯上都是真(非零)。兩個容器可以是任何類型和任何形狀。如果其中一個容器是一個數組，另一個容器必須是一個標量或相同大小和形狀的數組。結果是形狀与運算對象相同的Int32，值為0或1。如果兩個運算對象都不是零，那么XOR的運算值為1；否則運算值為0。

如果兩個運算對象的類型都是Coord，那么其獨立變量必須完全匹配，否則會返回錯誤。XOR運算中只考慮相關(最后)變量。

對Complex、PComplex和Spectrum容器，如果任意部分都不是零，那么運算對象的值為真。如果非零，Text的運算值為真。Enums在運算中會轉換成Text。

如果兩個操作數都為Boolean，結果為与操作數具有相同數据形狀的Boolean。

范例

兩個Boolean標量︰True XOR False 返回True。

一個標量和一個數組: 3 XOR [3, 3, 3]返回[0, 0, 0]。

一個標量和一個數組: 3 XOR [-3, 0, 3]返回[0, 1, 0]。

兩個數組: [1, 2, 3] XOR [0, 1, (-1)]返回[1, 0, 0]。

兩個PComplex標量: (1,@90) XOR (1,@85)返回0。

兩個Complex標量: (0,0) XOR (0,1)返回1。

兩個Complex標量: (0,1) XOR (1,0)返回0。

兩個Complex標量: (0,0) XOR (0,0)返回0。

兩個Coord標量: coord(1,3) XOR coord(1,5)返回0。

兩個Coord標量: coord(1,3) XOR coord(2,3)返回錯誤。

一個Text標量和一個標量數字: "too" XOR 0返回1。

一個Text標量和一個標量數字: "" XOR 0返回1，因為實數0晉級為"0"，這是一個非空字符串。

備注

如果任一容器被映射(即類型為Waveform, Spectrum, Coord或任何其它類型的映射數組)，另一個容器必須沒有映射，或映射完全相同。返回值的映射關系与運算對象相同，否則會返回錯誤。

注意If/Then/Else對象要求里面的表達式的解為標量或數組，要么全為0，要么全為1。

位置

Device [image] Function & Object Browser

Type:  Operators
Category: Logical
Member: XOR

另請參閱

a AND b, NOT a, a OR b, Comparison, Conditional和If/Then/Else。


xramp (numElem, from,thru)

生成一个线性斜坡数组的对象，其方式与为映射的1D Arrays (如Waveform)的坐标转换生成x值使用的方式相同。

用途

使用xramp(numElem,from,thru)生成长numElem的一个Real64一维数组，取值从from线性倾斜到thru (不含thru)。numElem必须是一个Int32类型或能够转换成Int32类型的标量容器，且取值要大于0。from和thru必须是一个Real64类型或能够转换成Real64类型的标量容器。

如果from小于thru，那么斜率为正；否则，斜率自动为负。

范例

xramp(3, 0.5, 0)返回一个一维数组，取值为
[0.5, 0.3333, 0.1667]。

xramp(5, 2, 10)返回一个一维数组，取值为
[2, 3.6, 5.2, 6.8, 8.4]。

备注

返回值没有映射关系。

生成取值的算法是：

Y[I] = from + I*(thru-from/numElem)
for I=0..numElem-1

这会导致得到的数组中最后一个要素的值一直小于thru，小于量为取样间隔大小：(thru-from)/numElem。

如果希望倾斜中包含thru值，应使用ramp(numElem,from,thru)函数。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Generate
Member: xramp

另请参阅

Alloc Real64, ramp (numElem, from,thru)和xlogRamp (numElem, from,thru)。


y0(x)

用来计算第二类阶零的x的贝塞尔函数的对象。

用途

使用y0(x)找到第二类阶零的x的贝塞尔函数。x可以是任何大小和形状。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

对Coord输入类型，运算在相关变量上完成。

范例

y0(2)返回0.510375672649745。

备注

忽略运算对象上的映射关系，输出容器的映射关系与输入相同。

x的值必须是正值。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: y0

另请参阅

Ai(x), Bi(x), j0(x), j1(x), jn(x,n), y1(x)和yn(x,n)


y1(x)

用来计算第二类阶1的x的贝塞尔函数的对象。

用途

使用y1(x)找到第二类阶1的x的贝塞尔函数。x可以是任何大小和形状。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

对Coord输入类型，运算在相关变量上完成。

范例

y1(9)返回值0.104314575196715。

备注

忽略运算对象上的映射关系，输出容器的映射关系与输入相同。

x的值必须是正值。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: y1

另请参阅

Ai(x), Bi(x), j0(x), j1(x), jn(x,n), y0(x)和yn(x,n)


year(aDate)

返回時間x的年份的對象。

用途

使用year(aDate)將給定時間x轉換成与時間x的年份值相同形狀的容器。x可以是任何形狀，返回的形狀相同。

允許輸入類型 返回類型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Int64 | Int64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

范例

year(dmyToDate(25,12,1991))返回1991。

提示

返回值中保留映射關系。

位置

Device [image] Function & Object Browser

Type: Built-in Functions

Category: Time & Date

Member: year

另請參閱

dmyToDate (d,m,y), hmsToHour (h,m,s), hmsToSec (h,m,s), mday(aDate), now(), month(aDate), Time & Date和 wday(aDate)。


yn(x,n)

用来计算第二类阶n的x的贝塞尔函数的对象。

用途

使用yn(x,n)找到第二类阶n的x的贝塞尔函数。x输入可以是任何大小和形状。

允许的输入类型 返回类型

UInt8 | Real64
Int16 | Real64
Int32 | Real64
Real32 | Real64
Real64 | Real64
Coord | Coord
Waveform | Waveform

对Coord输入类型，运算在相关变量上完成。

n参数的类型必须是Int32，或能够转换成Int32。其形状必须是Scalar，或者形状与x相同。

范例

yn(10,4)返回-0.144949511868093。

备注

如果两个输入都有映射，那么映射必须相同。如果任一输入有映射，返回值的映射关系与输入相同。如果两个输入都没有映射，那么输出没有映射。

x值必须是正值。

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Bessel
Member: yn

另请参阅

Ai(x), Bi(x), j0(x), j1(x), jn(x,n), y0(x)和y1(x)。


I/O事務匯總

表1匯總了VEE的I/O事務類型，表2匯總了VEE的I/O事務對象。

表1 I/O事務類型匯總表

操作 | 說明
WRITE | 把數据寫入對象中指定的目的地。
READ | 從對象中指定的來源中讀取數据。
EXECUTE | 執行低級命令，控制与對象有關的文件、儀器或接口。EXECUTE用來調節文件指針，關閉管道和文件，提供儀器和硬件接口低級控制功能。
WAIT | 在執行下一項事務前等待指定的秒數。 對Direct I/O對象，WAIT還可以等待某個串行輪詢響應，或等待可以訪問的VXI儀器寄存器中的某些值。
SEND | 把IEEE 488定義的總線消息(總線命令和數据)發送到GPIB接口。
READ(REQUEST) | 從另一個應用程序中讀取DDE數据。
WRITE(POKE) | 把DDE數据寫入另一個應用程序中。

表2 I/O事務對象匯總表

對象 | 支持的事務
 | EXECUTE | WAIT | READ | WRITE | SEND
To File | X | X |  | X |
From File | X | X | X |  |
To Printer |  | X |  | X |
To String |  | X |  | X |
From String |  | X | X |  |
To StdOut |  | X |  | X |
From StdIn |  | X | X |  |
To StdErr |  | X |  | X |
To/From Socket | X | X | X | X |
Direct I/O | X | X | X | X |
MultiInstrument Direct I/O | X | X | X | X |
Interface Operations | X |  |  |  | X
To/From DDE | X | X | X | X |

另請參閱

WRITE事務，READ事務，EXECUTE事務，WAIT事務，SEND事務，READ(REQUEST)事務，WRITE(POKE)事務


WRITE事務

本節在下表中描述了WRITE事務。本節開頭概括了与所有WRITE編碼對應的內容。

路徑專用行為

某些WRITE事務會表現出不同的行為方式，這要視到目的地的I/O路徑而定。為區分這些行為，本節使用下面的朮語︰

  • MS-DOS路徑是不同于儀器的任何目的地，如MS-DOS文件、字符串或打印机。

  • 直接I/O路徑是使用Direct I/O訪問的任何儀器。

适用于所有路徑的行為

除特別指明外，下表中描述的行為适用于所有路徑。

表 WRITE編碼和格式

編碼 | 格式
TEXT | DEFAULT STRING QUOTED STRING BYTE INT16 INT32 INT64 BOOLEAN OCTAL HEX REAL32 REAL64 COMPLEX PCOMPLEX COORD TIME STAMP
BYTE | Not Applicable
CASE | Not Applicable
BINARY | STRING BYTE INT16 INT32 INT64 BOOLEAN REAL32 REAL64 COMPLEX PCOMPLEX COORD
BINBLOCK | BYTE INT16 COMPLEX INT32 INT64 BOOLEAN PCOMPLEX REAL32 REAL64 COORD
CONTAINER | 不适用
STATE a | 不适用
REGISTER b | BYTE WORD16 WORD32 REAL32
MEMORY b | BYTE WORD16 WORD32 REAL32 WORD32*2 REAL64
IOCONTROL c | 不适用

a. 僅适用于Direct I/O到GPIB。

b. 僅适用于Direct I/O到VXI。

c. 僅适用于Direct I/O到GPIO。

另請參閱

TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


TEXT 編碼（write 事務）

WRITE TEXT 事務采取下面的形式︰

WRITE TEXT ExpressionList [Format]

ExpressionList 是單個表達式或逗號分隔的表達式列表。

Format 是一個可選項。它指定下表所列的格式之一。

WRITE TEXT 事務的格式

格式 | 描述
DEFAULT | 根据所寫項的數据類型，VEE 自動确定一個合适的文本表示。
STRING | 寫 Text 數据時不做任何轉換。寫數字類型的數据時， 將其作為數字精度最大的文本。
QUOTED STRING | 寫數据時与 STRING 格式相同，除了數据要被雙引號（ASCII 碼 34）。
BYTE | 將數据作為一個１０進制形式的８位的二的補碼的整數來寫。
INT16 | 將數据作為一個１０進制形式的１６位的二的補碼的整數來寫。
INT32 | 將數据作為一個１０進制形式的３２位的二的補碼的整數來寫。
INT64 | 將數据作為一個１０進制形式的６４位的二的補碼的整數來寫。
BOOLEAN | 將數据作為一個布爾常量來寫。(True or False)
OCTAL | 將數据作為一個８進制形式的３２位的二的補碼的整數來寫。
HEX | 將數据作為一個１６進制形式的３２位的二的補碼的整數來寫。
REAL32 | 將數据作為一個３２位的浮點數來寫。該數可以是包括定點１０進制和科學計數法在內的各种不同計數法。
REAL64 | 將數据作為一個６４位的浮點數來寫。該數可以是包括定點１０進制和科學計數法在內的各种不同計數法。
COMPLEX | 將數据作為一個complex類型的數來寫。該 complex 數由一對由逗號分隔的６４位浮點數來表示。第一個數表示實數部分，第二個數表示虛數部分。
PCOMPLEX | 將數据作為一個complex類型的數來寫。該 complex 數由一對由逗號分隔的６４位浮點數來表示。 第一個數代表幅度，第二個數表示相位角它的單位由該事務指定。
COORD | 寫一個由逗號分隔的一系列 64 為浮點數。它表示一個矩形坐標。
TIME STAMP | 將一個實數（比如從now()函數得到的輸出）轉變為一個具有意義格式并將其寫為年，月，日及時間的組合。

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，REAL32和REAL64格式（write事務） COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）

WRITE事務，BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）ng


DEFAULT格式 (write 事務）

WRITE TEXT (默認值)事務采取下面的形式︰

WRITE TEXT ExpressionList

ExpressionList是單個表達式或逗號分隔的表達式列表。

該事務把ExpressionList中的每個項目轉換成有意義的字符串，并寫入字符串。看一下下面所示的寫入標量變量X的簡單實例︰

  • 如果X包含文本，如︰

bird cat dog

那么不執行任何轉換，該事務寫入恰好12個字符。

  • 如果X包含一個標量Integer，如︰

8923 X的值 (十進制符號)

那么數字值轉換成文本，VEE寫入恰好4個字符。

  • 如果X包含一個標量實數，如︰

1.2345678901234567 X的值(17位標量實數值)

寫入每個有效位，直到16個有效位。最無效的位是近似值，因為VEE在內部二進制形式和十進制符號之間進行轉換。如果采用下面的事務使用這個標量實數值︰

WRITE TEXT a EOL

那么VEE寫入︰

1.234567890123457 16位值

如果數字的絕對值足夠大或足夠小，那么會使用指數符號。構成Coord、Complex和PComplex子要素的Real的行為方式相同。

如果為任何WRITE TEXT DEFAULT事務指定EOL ON，那么將在ExpressionList中最后一個字符之后寫入EOL Sequence字段中為該對象指定的字符。

另請參閱

STRING格式（write事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，REAL32和REAL64格式（write事務） COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）


STRING格式（write事務）

WRITE TEXT STRING事務采取下面的形式︰

WRITE TEXT ExpressionList STR

ExpressionList是單個表達式或逗號分隔的表達式列表。

WRITE TEXT STRING事務的行為方式基本上与WRITE TEXT (默認值)事務相同(有一個例外，參見下面的討論)。其明顯差异在于，STRING允許指定与輸出格式有關的其它細節，包括字段寬度、對齊和字符數量。

字段寬度和對齊

如果事務指定DEFAULT FIELD WIDTH，那么只寫入ExpressionList內部把項目轉換成Text得到的字符。

如果事務指定FIELD WIDTH: F，那么寫入轉換后的Text，并在寬F個字符的空格內右對齊或左對齊。

下面的事務指定在寬20個字符的字段內寫入所有字符，并且左對齊。

WRITE TEXT X STR FW:20 LJ EOL
WRITE TEXT Y STR FW:20 LJ EOL

如果X和Y有下面的值︰

bird cat dog X的Text值

12345678901234567 Y的Real值

那么VEE寫入︰

bird cat dog

12345678901234567

^ ^

VEE實際上并不會寫入脫字符(^)，這里顯示脫字符的目的是幫助您查看字段寬度。dog右面的字符和第二個7右面的字符是空格(ASCII 32十進制).

如果對齊方式變成RIGHT JUSTIFY，那么會出現下面的事務︰

WRITE TEXT X STR FW:20 RJ EOL
WRITE TEXT Y STR FW:20 RJ EOL

如果X和Y有下面的值︰

bird cat dog X的Text值

12345678901234567 Y的Real值

那么VEE寫入︰

bird cat dog

12345678901234567

^ ^

VEE實際上并不會寫入脫字符(^)，這里顯示脫字符的目的是幫助您查看字段寬度。bird左面的字符和第一個1左面的字符是空格(ASCII 32十進制)。

如果字符串的長度超過指定字段寬度，那么會輸出整個字符串。字段寬度指標不得截短寫入的字符串，因為只有MAX NUM CHARS才能截短字符。

下面的事務指定在寬4個字符的字段內寫入所有字符，并且左對齊。

WRITE TEXT X STR FW:4 LJ

如果X有下面的值︰

bird cat dog X的Text值, 12個字符

那么VEE寫入︰

bird cat dog 全部12個字符

盡管指字的字段寬度是4個字符，但該事務寫入了字符串的全部12個字符。

字符數量

如果指定ALL CHARS，那么寫入ExpressionList中每個項目轉換產生的所有字符。如果指定MAX NUM CHARS: M，那么只寫入ExpressionList中每個項目的前M個字符。

下面的事務指定在每個字符中寫入最大7個字符，字段寬度為12個字符，字段項目左對齊。

WRITE TEXT X STR:7 FW:20 LJ EOL
WRITE TEXT Y STR:7 FW:20 LJ EOL

如果X和Y有下面的值︰

bird cat dog X的Text值

12345678901234567 Y的Real值

那么VEE寫入︰

bird ca

1234567

^ ^

Y的數字值先轉換成Text，然后截短字符。MAX NUM CHARS不會舍入數字值。

VEE實際上并不會寫入脫字符(^)，這里顯示脫字符的目的是幫助您查看字段寬度。bird右面的字符和第一個1右面的字符是空格(ASCII 32十進制)。

使用Direct I/O寫入數組

把數組寫入Direct I/O路徑的WRITE TEXT STR事務會忽略Direct I/O對象的Array Separator設置。在寫入時，這些事務總是使用換行(ASCII十進制10)，分隔數組的每個要素(這是一個字符串)。這一行為与大多數儀器的需求是一致的。

備注

數組的這种特殊行為不适用于任何其它類型的事務。

另請參閱

DEFAULT格式 (write 事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，REAL32和REAL64格式（write事務） COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）


QUOTED STRING格式（write 事務）

WRITE TEXT QUOTED STRING事務采取下面的形式︰

WRITE TEXT ExpressionList QSTR

ExpressionList是單個表達式或逗號分隔的表達式列表。

一般來說，我們討論的STRING格式的行為也适用于QUOTED STRING格式。STRING与QUOTED STRING有兩個區別︰

  • 對QUOTED STRING，在字符串開頭和結尾增加一個雙引號(ASCII 34十進制)。需要先應用雙引號，然后才能添加任何填充空格，對齊指定字段寬度內部的字符串。

  • 控制字符(ASCII 0-31十進制)、換碼符及嵌入在雙引號引起來的字符串內部的字符' (ASCII 39十進制)和" (ASCII 34十進制)需要特殊對待。

字段寬度和對齊

如果指定DEFAULT FIELD WIDTH，那么只寫入ExpressionList內部把項目轉換成Text得到的且雙引號引起來的字符。

如果指定FIELD WIDTH: F，那么寫入轉換后的Text和引號，并在寬F個字符的空格內右對齊或左對齊。

下面的事務指定作為寬20個字符的字段內帶引號的字符串寫入所有字符，并且左對齊。

WRITE TEXT X QSTR FW:20 LJ EOL
WRITE TEXT Y QSTR FW:20 LJ EOL

如果X和Y有下面的值︰

bird cat dog X的Text值

12345678901234567 Y的Real值

那么VEE寫入︰

"bird cat dog"

"12345678901234567"

^ ^

VEE實際上并不會寫入脫字符 (^)，這里顯示脫字符的目的是幫助您查看字段寬度。dog"右面的字符和7"右面的字符是空格(ASCII 32十進制)。

如果對齊方式變成RIGHT JUSTIFY，那么會出現下面的事務︰

WRITE TEXT X QSTR FW:20 RJ EOL
WRITE TEXT Y QSTR FW:20 RJ EOL

如果X和Y有下面的值︰

bird cat dog X的Text值

12345678901234567 Y的Real值

那么VEE寫入︰

"bird cat dog"

"12345678901234567"

^ ^

VEE實際上并不會寫入脫字符(^)，這里顯示脫字符的目的是幫助您查看字段寬度。"bird左面的字符和"1左面的字符是空格(ASCII 32十進制)。

如果字符串的長度超過指定字段寬度，那么會輸出整個字符串。字段寬度指標不得截短寫入的字符串，因為只有MAX NUM CHARS才能截短字符。

下面的事務指定在寬4個字符的字段內寫入所有字符，并且左對齊。

WRITE TEXT X QSTR FW:4 LJ

如果X有下面的值︰

bird cat dog X的Text值, 12個字符

那么VEE寫入︰

"bird cat dog" 全部12個字符

字符數量

如果指定ALL CHARS，那么寫入ExpressionList中每個項目轉換產生的且帶有雙引號的所有字符。如果指定MAX NUM CHARS: M，那么只寫入ExpressionList中每個項目的前M個字符及周圍的雙引號。換句話說，對ExpressionList中的每個項目寫入總共M+2個字符。

下面的事務指定MAX NUM CHARS:7 (字段寬20, 左對齊)。

WRITE TEXT X QSTR:7 FW:20 LJ EOL
WRITE TEXT Y QSTR:7 FW:20 LJ EOL

如果X和Y有下面的值︰

bird cat dog X的Text值

12345678901234567 Y的Real值

那么VEE寫入︰

"bird ca"

"1234567"

^ ^

VEE實際上并不會寫入脫字符(^)，這里顯示脫字符的目的是幫助您查看字段寬度。ca"右面的字符和7"右面的字符是空格(ASCII 32十進制)。

嵌入式控制字符和換碼符

在本討論中，控制字符和換碼符具有特定的意義。控制字符是單字節數据，与ASCII字符十進制0-31之一對應。例如，換頁是ASCII 10十進制，符號<LF>表示本討論中的換頁符。字符串\n是一种人可以讀的換碼符，表示VEE識別的換頁。VEE使用換碼符在帶引號的字符串內部表示控制字符。

參見下面的換碼符圖。

換碼符 | ASCII代碼(十進制) | 意義
\n | 10 | 換行
\t | 9 | 水平制表符
\v | 11 | 垂直制表符
\b | 8 | 退格
\r | 13 | 回車
\f | 12 | 換頁
\" | 34 | 雙引號
\' | 39 | 單引號
\\ | 92 | 反斜杠
\ddd |  | ASCII字符，与三位八進制值ddd對應

考慮各种嵌入式換碼符對下面的事務的影響。

WRITE TEXT X QSTR EOL

  • 如果X的取值如下︰

bird\ncat dog

VEE把這個值寫入直接I/O路徑中︰

"bird<LF>cat dog"

其中<LF>表示單個字符換行(ASCII 10十進制)。

  • 如果X的取值如下︰

bird \"cat\" dog

VEE把這個值寫入串行接口的Direct I/O路徑中︰

"bird \"cat\" dog"

對相同的事務和數据，VEE把這個值寫入GPIB接口的直接I/O路徑中︰

"bird ""cat"" dog"

GPIB接口的這种獨特行為用來滿足IEEE 488.2的要求。

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），INTEGER格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，REAL32和REAL64格式（write事務） COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）


INTEGER格式（write 事務）

WRITE TEXT INTEGER事務采取下面的形式︰

WRITE TEXT ExpressionList INT16

WRITE TEXT ExpressionList INT32

WRITE TEXT ExpressionList INT64

ExpressionList是一個表達式或逗號分隔的表達式列表。

這一事務生成的整數類型是16位、32位或64位2的補數整數。16位整數的范圍是-32768到+32767。32位整數的范圍是-2 147 483 648到+2 147 483 647。64位整數的范圍是-9223372036854775808到+9223372036854775807。寫入的表示這些數值的字符是+-0123456789。

VEE試圖把ExpressionList中的每一項轉換成Int64, Int32或Int16數据類型，然后再把它轉換成Text，進行最后格式化。VEE遵守普通轉換規則。詳情請參閱Help => Contents and Index => Tell Me About...下面的?#25968;据類型轉換?/span>部分。

如果使用INT16、INT32或INT64格式寫入Real32︰

  • 超出Int16范圍的實數值會生成錯誤。

  • 位于Int64、Int32或Int16有效范圍內的值會進行轉換，截短Real的小數部分。

如果使用INT16、INT32或INT64格式寫入Real64︰

  • 超出Int32或Int16范圍的實數值會生成錯誤。

  • 位于Int64、 Int32或 Int16有效范圍內的值會進行轉換，截短Real的小數部分。

數字數量

如果指定DEFAULT NUM DIGITS，那么事務只寫入表達整數值要求的數字，不使用前導零。

如果指定MIN NUM DIGITS: M，事務會根据要求在輸出中填充前導零，以提供總共M個數字。

看一下下面兩個Int16或Int32事務，其在規范中的差別只在于輸出數字的數量。

WRITE TEXT X INT16 EOL default number of digits
WRITE TEXT X INT16:6 EOL six digits

或

WRITE TEXT X INT32 EOL default number of digits

WRITE TEXT X INT32:6 EOL six digits

如果X的值為︰

4567

VEE寫入︰

4567

004567

MIN NUM DIGITS永遠不會截短輸出字符串。下面的事務指字最小數字數量為1。

WRITE TEXT X INT16:1 EOL

或

WRITE TEXT X INT32:1 EOL

如果X的值為︰

12345678

VEE寫入︰

12345678 全部8個數字

符號前綴

可以作為WRITE TEXT INT事務的一部分，選擇性地指定下表中列出的其中一個符號前綴。

前綴 | 說明
/- | 正數寫入時不帶前綴，沒有+、也沒有空格。所有負數寫入時都帶前綴-。
+/- | 所有正數寫入時都帶有前綴+。所有負數寫入時都帶前綴-。
" "/- | 所有正數寫入時都帶有空格(ASCII 32十進制)前綴。所有負數寫入時都帶前綴-。

任何前綴符號不會趨向MIN NUM DIGITS進行計數。下面的事務為正數和負數指定了明确的前導符號。

WRITE TEXT X INT16:6 SIGN:"+/-" EOL
WRITE TEXT Y INT32:6 SIGN:"+/-" EOL

如果X和Y的值為︰

123 X的整數值

-123 Y的整數值

VEE寫入︰

+000123 6個數字加上符號

-000123

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），QUOTED STRING格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，REAL32和REAL64格式（write事務） COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）


OCTAL格式（wirte事務）

WRITE TEXT OCTAL事務采取下面的形式︰

   WRITE TEXT ExpressionList OCT

ExpressionList是一個表達式或逗號分隔的表達式列表。

這一事務生成的整數類型是64位2的補數整數。這些整數的范圍是-9223372036854775808到+9223372036854775807。寫入的表示這些八進制數值的唯一字符是01234567。可以指定可選的前綴，其中可以包括其它字符。

VEE試圖把使用OCTAL寫入的任何數据轉換成Int64數据類型，然后再把它轉換成Text，進行最后格式化。VEE遵守普通轉換規則。

如果使用OCTAL格式寫入Real︰

  • 超出Int164范圍的實數值會生成錯誤。

  • 位于Int64有效范圍內的值會進行轉換，截短Real的小數部分。

數字數量

DEFAULT NUM DIGITS和MIN NUM DIGITS的行為与WRITE TEXT INTEGER事務數字數量中描述的相同。

八進制前綴

可以作為WRITE TEXT OCTAL事務的一部分，指定下表中列出的其中一個符號前綴。

前綴 | 說明
NO PREFIX | VEE寫入每個八進制數值，沒有任何前綴。只有數字01234567出現在輸出中。
DEFAULT PREFIX | 對直接I/O路徑，VEE作為前綴在每個八進制數值前面加上#Q。它支持IEEE 488.2定義的非十進制數字數据格式。
PREFIX:string | VEE作為前綴在每個八進制數值前面加上string中指定的字符。

下面的事務指定了默認前綴和6個數字︰

WRITE TEXT X OCT:6 PREFIX EOL

  • 如果X的值如下︰

15 十進制值15

VEE把下述內容寫入直接I/O路徑中︰

#Q000017 6個數字加上前綴

下面的事務指定了自定義前綴和10個數字︰

WRITE TEXT X OCT:10 PREFIX:"oct>" EOL

  • 如果X的值如下︰

15 十進制Integer值15

VEE把下述內容寫入直接I/O路徑中︰

oct>000017

DEFAULT PREFIX寫入的前綴取決于目的地，但PREFIX: 字符串寫入的前綴獨立于目的地。

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， HEX 格式(write)，REAL32和REAL64格式（write事務） COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）


HEX格式(write事務)

WRITE TEXT HEX事務采取下面的形式︰

   WRITE TEXT ExpressionList HEX

這一事務寫入的整數類型是64位2的補數整數。整數范圍為--9223372036854775808到+9223372036854775807。寫入的代表這些十六進制數字的唯一字符是0123456789abcdef。可以指定可選的前綴，其中可以包括其它字符。

WRITE TEXT HEX的行為几乎与WRITE TEXT OCTAL完全相同。唯一的區別在于提供的前綴集及DEFAULT PREFIX的行為。

十六進制前綴

可以指定下面列出的前綴之一，作為WRITE TEXT HEX事務的一部分。

前綴 | 說明
NO PREFIX | VEE寫入每個十六進制數字，沒有任何前綴。輸出中只出現字符0123456789abcdef。
DEFAULT PREFIX | 對直接I/O路徑，VEE作為前綴在每個十六進制數字中增加#H。它支持IEEE 488.2定義的十六進制非十進制數字數据格式。
PREFIX:string | VEE作為前綴在每個十六進制數字中增加string中指定的字符。

下面的事務指定了默認前綴和6個位︰

WRITE TEXT X HEX:6 PREFIX EOL

如果X的值如下︰

15 十進制整數值15

VEE寫入直接I/O路徑︰

#H00000f 整整6位加前綴

下面的事務指定了自定義前綴和3個位︰

WRITE TEXT X HEX:3 PREFIX:"hex>" EOL

如果X的值如下︰

15 十進制整數值15

VEE寫入直接I/O路徑︰

hex>00f 整整3位加前綴

DEFAULT PREFIX寫入的前綴取決于目的地，而PREFIX: string寫入的前綴獨立于目的地。

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），REAL32和REAL64格式（write事務） COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）


REAL32和REAL64格式（write事務）

WRITE TEXT REAL32事務采取下面的形式︰

WRITE TEXT ExpressionList REAL32

這一事務生成的Real數字類型是32位IEEE 754浮點數字，數字范圍為︰

-3.40282347E38 到 3.40282347E38

WRITE TEXT REAL64事務采取下面的形式︰

WRITE TEXT ExpressionList REAL64

這一事務生成的Real數字類型是64位IEEE 754浮點數字，數字范圍為︰

-1.797 693 134 862 315E+308 到 1.797 693 134 862 315E+308

唯一寫入的表示這些數字的字符是
+-.0123456789E。

符號和數字

可以作為WRITE TEXT REAL事務的一部分，選擇性地指定下面的符號之一。

符號 | 說明
STANDARD | VEE自動确定是否應該使用固定點符號(要求小數點, 而不是指數)或指數符號寫入每個Real值。從不寫入非有效零。
FIXED | VEE作為固定點數字寫入每個Real值。帶有小數位的數字自動舍入，以适應NUM FRACT DIGITS指定的小數位數。根据要求添加尾部零位，提供指定的小數位數。
SCIENTIFIC | VEE使用指數符號寫入每個Real值。每個指數包括明确的符號(+或-)，并總是使用大寫E。帶有小數位的數字自動舍入，以适應NUM FRACT DIGITS指定的小數位數。根据要求添加尾部零位，提供指定的小數位數。

下面的事務指定STANDARD符號和4個有效位。

WRITE TEXT X REAL32 STD:4 EOL
WRITE TEXT Y REAL64 STD:4 EOL
WRITE TEXT Z REAL32 STD:4 EOL

If X, Y和Z有下面的值︰

1.23456E2 X的Real32值

1.23456E09 Y的Real64值

1.23 Z的Real32值

那么VEE寫入︰

123.5 根据要求舍掉尾數

1.235E+09 用指數符號表示的大數字

1.23 尾部不帶零

下面的事務指定FIXED符號和4個小數位。

WRITE TEXT X REAL64 FIX:4 EOL
WRITE TEXT Y REAL32 FIX:4 EOL
WRITE TEXT Z REAL64 FIX:4 EOL

If X, Y和Z有下面的值︰

1.2345678E2 X的Real64值

1.2345678E-09 Y的Real32值

1.23 Z的Real64值

那么VEE寫入︰

123.4568 根据要求舍入尾數

0.0000 小數舍入為零

1.2300 根据要求添加尾數零

下面的事務指定SCIENTIFIC符號和4個小數位。

WRITE TEXT X REAL32 SCI:4 EOL
WRITE TEXT Y REAL64 SCI:4 EOL
WRITE TEXT Z REAL32 SCI:4 EOL

If X, Y和Z有下面的值︰

1.2345678E2 X的Real32值

-1.2345678E-09 Y的Real64值

0 Z的Real32值

那么VEE寫入︰

1.2346E+02 指數E外加兩個帶符號的位

-1.2346E-09 根据要求舍入最后一位

0.0000E+00 根据要求填充尾數零

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，COMPLEX, PCOMPLEX和COORD格式(write 事務), TIME STAMP格式（write事務）


COMPLEX, PCOMPLEX和COORD格式(write 事務)

COMPLEX, PCOMPLEX和COORD對應擁有相同名稱的VEE多字段數据類型。這三种格式的行為非常類似。除特別注明外，本節介紹的行為适用于這三种格式。

与VEE數据類型Complex、PComplex和Coord由多個Real數字組成一樣，COMPLEX、PCOMPLEX和COORD格式在本質上是REAL64格式的复合形式。它寫入每個多字段數据類型的Real構成值，适用的輸出規則与單獨的REAL64格式化值相同。

涉及多字段格式的事務的最終輸出受到有問題的對象的Multi-Field格式設置影響。對Direct I/O對象，可以通過I/O => Instrument Manager訪問Multi-Field格式；對所有其它對象，可以通過對象菜單中的Config訪問Multi-Field格式。Multi-Field格式的兩种可能設置是︰

  • Data Only。這會作為沒有圓括號的逗號分隔的數字列表寫入多字段數据格式。

  • (...) Syntax。這會作為逗號分隔的、用圓括號划分的數字列表寫入多字段數据格式。

下面的范例將演示這些行為。

COMPLEX格式

WRITE TEXT COMPLEX事務采取下面的形式︰

WRITE TEXT ExpressionList CPX

下面的事務指明了一個固定十進制符號、明确的前導符號、由10個字符組成的字段寬度及右對齊。

WRITE TEXT X CPX FIX:3 SIGN:"+/-" FW:10 RJ EOL

  • 如果Multi-Field格式設置為(...) Syntax，X的值如下︰

( -1.23456 , 9.8 ) X的Complex值

那么VEE寫入︰

( -1.235 , +9.800)

^ ^ ^ ^

  • 如果Multi-Field格式設置為Data Only，X有相同的值，那么VEE寫入︰

-1.235, +9.800

^ ^ ^ ^

VEE實際上并不會寫入脫字符(^)，之所以顯示脫字符，是為了躍助您查看字段寬度。+左面的字符是空格(ASCII 32十進制)。

在使用(...) Syntax時，空格-逗號-空格序列把寬10個字符的字段分開，這些字段中包含著Complex數字的實數部分和虛數部分。不管是哪种Multi-Field格式，實數部分和虛數部分都有單獨的10個字符的字段。字段中不包括圓括號或分隔逗號和空格。

PCOMPLEX格式

WRITE TEXT PCOMPLEX事務采取下面的形式︰

WRITE TEXT ExpressionList PCX

PCOMPLEX格式允許指定其寫入的極坐標复數的相位單位。相位單位与Properties中的Trig Mode設置的單位無關。參閱下圖。

單位 | 說明
DEG | 度
RAD | 弧度
GRAD | 梯度

下面第一項事務的相位測量單位為度，第二項事務的相位測量單位為弧度。

WRITE TEXT X PCX:DEG STD EOL
WRITE TEXT X PCX:RAD STD EOL

如果Multi-Field格式設置為Data Only，X的值如下︰

(-1.23456, @90) X的PComplex值, 相位用度表示

那么VEE寫入︰

1.23456,-90

1.23456,-1.570796326794897

下面的事務指明了單位為弧度的相位測量、固定的十進制符號、三個小數位、明确的前沿符號、10個字符的字段寬度和右對齊。

WRITE TEXT X PCX:RAD FIX:3 SIGN:"+/-" FW:10 RJ EOL

  • 如果Multi-Field格式設置為(...) Syntax，X的值如下︰

(-1.23456 , @9.8) X的PComplex值, 角用弧度表示

那么VEE寫入︰

( +1.235 , @ +0.375)

^ ^ ^ ^

VEE歸一化所有PComplex數字，得到一個正幅度及位于+p和-p之間的相位。

  • 如果Multi-Field格式設置為Data Only，X擁有相同的值，那么VEE寫入︰

+1.235, +0.375

^ ^ ^ ^

VEE實際上并不會寫入脫字符(^)，之所以顯示脫字符，是為了躍助您查看字段寬度。-左面的字符和+左面的字符是空格(ASCII 32十進制)。

COORD格式

WRITE TEXT COORD事務采取下面的形式︰

WRITE TEXT ExpressionList COORD

COORD格式擁有COMPLEX格式所有相同的行為。唯一的區別是COORD可能會包含任意數量的字段，而COMPLEX只有兩個字段。

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，REAL32和REAL64格式（write事務）, TIME STAMP格式（write事務）


TIME STAMP格式（write事務）

WRITE TEXT TIME STAMP事務采取下面的形式︰

WRITE TEXT ExpressionList [DATE:DateSpec] [TIME:TimeSpec]

ExpressionList是單個表達式或逗號分隔的表達式列表。

DateSpec是下面預先定義的日期和時間組合之一︰

  • Date

  • Time

  • Date&Time

  • Time&Date

  • Delta Time

如果指定一項包括Date的事務，那么還可以指定Weekday DD/Month/YYYY或DD/Month/YYYY的DateSpec。

如果指定一項包括Time的事務，那么還可以指定TimeSpec。TimeSpec采用下面預先定義的時間格式組合︰

  • HH:MM (時和分)

  • HH:MM:SS (時分秒)

  • 12 HOUR

  • 24 HOUR

ExpressionList中的每個項目轉換成Real，解釋為日期和時間。這個Real數字表示自UTC公元1年1月1日凌晨起經過的秒數。這個Real數字最常見的來源是Time Stamp對象輸出。可以使用TIME STAMP格式，把這個Real數字轉換成有意義的字符串，其中包含人可以讀的日期和/或時間。

TIME STAMP支持各种寫入日期和時間的符號。如果Real變量包含下面的值︰

62806574669.31164

可以使用下面的任何Time和Date符號寫入TIME STAMP︰

符號

結果

Date with Weekday
DD/Month/YYYY

Thu 04/Apr/1999

Time with HH:MM:SS and 24 HOUR

15:44:29

Date&Time with Weekday
DD/Month/YYYY, HH:MM:SS,
and 24 HOUR

Thu 04/Apr/1999 15:44:29

Time&Date with HH:MM:SS, 24 HOUR

and Weekday DD/Month/YYYY

15:44:29 Thu 04/Apr/1999

Delta Time with HH:MM:SS

17446270:44:29

Date with Weekday
DD/Month/YYYY

Thu 04/Apr/1999

Date with DD/Month/YYYY

04/Apr/1999

Time with HH:MM:SS and 24 HOUR

15:44:29

TIME with HH:MM and 24 HOUR

15:44

TIME with HH:MM:SS and 24 Hour

15:44:29

TIME with HH:MM:SS and 12 Hour

3:44:29 PM

另請參閱

DEFAULT格式 (write 事務），STRING格式（write事務），QUOTED STRING格式（write 事務），INTEGER格式（write 事務），QUOTED STRING格式（write 事務）， OCTAL格式（wirte事務），HEX 格式(write)，REAL32和REAL64格式（write事務） COMPLEX， PCOMPLEX和COORD格式(write 事務)


BYTE編碼(write事務)

BYTE編碼(write)

BYTE事務采取下面的形式︰

WRITE BYTE ExpressionList

ExpressionList是單個表達式或逗號分隔的表達式列表。

VEE 5或以前的Execution Mode把ExpressionList中的每個項目轉換成Int16 (16位2的補數整數)，寫入最無效的8個位。VEE 6執行模式把ExpressionList中的每個項目轉換成、并寫入UInt8 (8位2的補數整數)。這是把一個字符寫入儀器的事務。ExpressionList中的每個表達式必須是一個標量。

在VEE 6或以后的Execution Mode中，取值大于256會導致錯誤。例如，在VEE 5及更低的Execution Mode中，下面的事務會產生下述字符數据輸出︰

   ABCAA

WRITE BYTE 65,66,67
WRITE BYTE 65+1024,65+2048

在VEE 6或以后的Execution Mode中，上面的第二項事務會導致錯誤。

另請參閱

WRITE事務，TEXT 編碼（write 事務），CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


CASE編碼(write事務)

CASE編碼(write)

WRITE CASE事務采取下面的形式︰

WRITE CASE ExpressionList1 OF ExpressionList2

ExpressionList是洙個表達式或逗號分隔的表達式列表。

VEE把ExpressionList1中的每個項目轉換成一個整數，并把它作為ExpressionList2中的索引使用。ExpressionList2中帶索引的項目寫入的字符串格式与WRITE TEXT (默認值)相同。

ExpressionList2中的項目索引基于零。

下面的事務說明了CASE格式的行為。

WRITE CASE 2,1 OF "Str0","Str1","Str2"
WRITE CASE X OF 1,1+A,3+A

如果變量值如下︰

2 X的Real32值

0.1 A的Real64值

VEE寫入︰

Str2Str1

3.1

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


BINARY編碼( write 事務）

WRITE BINARY事務采取下面的形式︰

WRITE BINARY ExpressionList DataType

ExpressionList是一個表達式或逗號分開的表達式列表。

DataType　是其中下面一個預先定義的VEE數据類型︰

• Boolean - 32位2的補數整數

• BYTE - 8位不帶符號的字節

• INT16 - 16位2的補數整數

• INT32 - 32位2的補數整數

• INT64 - 64位2的補數整數

• REAL32 - 32位IEEE 754浮點數字

• REAL64 - 64位IEEE 754浮點數字

• STRING - 以空字符結尾的字符串

• COMPLEX - 等于兩個REAL64

• PCOMPLEX - 等于兩個REAL64

• COORD - 等于兩個或多個REAL64

備注

VEE 5及更低的執行模式使用INT32存儲和處理所有整數值，使用Real數据類型(也稱為REAL64)存儲和處理所有實數。因此，INT16和REAL32數据類型只用于I/O操作。VEE 5及更低的執行模式在輸出事務上為儀器I/O執行下面的數据類型轉換。

INT32值逐個轉換成INT16值，輸出到儀器上。但是，由于INT16數据類型的范圍是-32768到32767，因此落在這個范圍外的值將截短到16位。

REAL64值逐個轉換成REAL32值，輸出到儀器上。但是，由于REAL32數据類型的范圍要小于REAL64數据類型，因此落在這個范圍外的值不能轉換成REAL32，會產生錯誤。

在VEE 6執行模式下，數据轉換成相應的類型，如果數据超出范圍，那么會生成錯誤。

BINARY編碼的事務把ExpressionList中指定的每個值轉換成DataType指定的VEE數据類型。然后使用指定的二進制格式寫入轉換后的每個項目。但是，由于寫入的二進制數据是計算机存儲器中的拷貝，因此其不能簡便地在不同計算机結構或硬件之間共享。

BINARY編碼數据的優勢是非常緊湊。READ BINARY事務可以讀取任何相應的WRITE BINARY數据。

BINARY編碼只寫入每個數据類型的數字部分。例如，在寫入TEXT編碼的Complex和Coord數据時可以包括的圓括號和逗號，在使用BINARY編碼時從不會寫入。

類似的，在寫入數組時，BINARY編碼不會寫入任何Array Separator。WRITE BINARY事務不允許指定EOL ON。很少需要使用BINARY事務寫入EOL，因為數字數据類型的長度是固定的，字符串用零字符結束。

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


BINBLOCK編碼(write事務)

BINBLOCK編碼

WRITE BINBLOCK事務采用下面的形式︰

WRITE BINBLOCK ExpressionList DataType

ExpressionList是洙個表達式或用逗號分隔的表達式列表。

DataType是下面預先定義的VEE數据類型之一︰

• BYTE - 8位無符號字節

• INT16 - 16位2的補數整數

• INT32 - 32位2的補數整數

• REAL32 - 32位IEEE 754浮點數

• REAL64 - 64位IEEE 754浮點數

• COMPLEX - 等于兩個REAL64

• PCOMPLEX -等于兩個REAL64

• COORD - 等于兩個或多個REAL64

BINBLOCK作為洙獨的數据碼組寫入ExpressionList中的每個項目。使用的碼組包頭取決于執行WRITE的對象類型和對象的配置。

非GPIB BINBLOCK

如果對象不是到GPIB的Direct I/O，那么WRITE BINBLOCK總是寫入一個IEEE 488.2确定長度任意碼組響應數据碼組。這一數据格式主要用來与使用Direct I/O的GPIB儀器通信，但其它對象也支持這一數据格式。

每個确定長度任意碼組采取下面的形式︰

#<Num_digits><Num_bytes><Data>

其中︰

  • #是所示的#字符。

  • <Num_digits>是一個一位(十進制符號)的ASCII字符，表明<Num_bytes>中的位數。

  • <Num_bytes>是一個多位(十進制符號)的ASCII字符列表，表明后面的<Data>中的字節數量。

  • <Data>是由任意8位數据字節組成的序列。

GPIB BINBLOCK

如果對象是到GPIB的Direct I/O，那么WRITE BINBLOCK事務的行為取決于Conformance和Binblock的Direct I/O Configuration設置；通過I/O Þ Instrument Manager菜單選項進入這些設置。

如果Conformance設置為IEEE 488.2，那么WRITE BINBLOCK總是寫入一個 IEEE 488.2确定長度任意碼組響應數据碼組。

如果Conformance設置為IEEE 488，那么使用的包頭類型取決于Binblock。Binblock可以指定IEEE 728 #A, #T或#I碼組包頭。如果Binblock是None，那么WRITE BINBLOCK寫入一個 IEEE 488.2确定長度任意碼組響應數据碼組。

IEEE 728碼組包頭采取下面的形式︰

#A<Byte_Count><Data>

#T<Byte_Count><Data>

#I<Data><END>

其中︰

  • #是所示的字符。

  • A,T, I是所示的字符。

  • <Byte_Count>由兩個字節組成，這兩個字節一起構成一個16位無符號整數，指定后面的<Data>中的字節數量。(VEE自動計算這一數字。)

  • <Data>是由任意字節組成的字節流。

  • <END>表明使用最后傳輸的數据字節聲稱EOI。

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


CONTAINER編碼（write事務）

WRITE CONTAINER事務采取下面的形式︰

WRITE CONTAINER ExpressionList

ExpressionList是洙個表達式或逗號分隔的表達式列表。

WRITE CONTAINER事務使用特殊的VEE文本表示方式寫入ExpressionList中的每個項目。

這种表示方式保留与寫入的數据類型有關的所有VEE屬性，如形狀、大小和名稱。可以使用READ CONTAINER，在不丟失信息的情況下檢索任何WRITE CONTAINER數据。

例如，下面的事務︰

WRITE CONTAINER 1.2345

寫入︰

(Real

(data 1.2345)

)

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


STATE編碼（write事務）

WRITE STATE事務采取下面的形式︰

WRITE STATE [DownloadString]

DownloadString是一個可選的字符串，如果之前在Direct I/O配置中沒有為相應的儀器指定下載字符串，那么您可以指定一個下載字符串。

Direct I/O對象使用WRITE STATE事務，把學習字符串下載到一台儀器上。這是与Direct I/O對象的每個實例相關的學習字符串。通過在Direct I/O對象菜單中點擊Upload，可以上傳這個學習字符串。在第一次選擇Upload之前，學習字符串包含空字符串。

WRITE STATE的行為受到Conformance和Download String的Direct I/O Configuration設置的影響。通過I/O => Instrument Manager菜單選項，可以進入這些設置。如果Conformance是IEEE 488，那么WRITE STATE事務寫入后面跟著學習字符串的Download String。如果Conformance是IEEE 488.2，那么會下載學習字符串，而沒有IEEE 488.2定義的任何前綴。如需与WRITE STATE事務有關的信息，請參閱使用VEE控制儀器。

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，REGISTER Encoding（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


REGISTER 編碼（write事務）

WRITE REGISTER 用來向VXI儀器的A16存儲器中寫數。

WRITE REGISTER 事務采取下面的形式︰

WRITE REG: SymbolicName ExpressionList INCR

-或-

WRITE REG: SymbolicName ExpressionList

這里:

SymbolicName是在配置VXI儀器過程中定義的名稱。這個名稱指明儀器寄存器空間內部的具体地址。WRITE REGISTER事務的具体數据類型是︰

  • BYTE - 不帶符號的8位字節

  • WORD16 - 16位2的補數整數

  • WORD32 - 32位2的補數整數

  • REAL32 - 32位IEEE 754浮點數字

  • WORD32*2 - 一個Int32的數組中的兩個相鄰的32位2的補數整數

  • REAL64 - 64位數IEEE 754浮點數字

在配置VXI儀器過程中也指定這些數据類型，這些數据類型不會出現在事務中。

ExpressionList是一個表達式或逗號分隔的表達式列表。

INCR指定從SymbolicName指定位置開始，以遞增的方式寫數組數据。從開始位置寫入數組的第一個元素，從該位置加上長度等于數据類型字節數的偏移量寫入第二個要素，依此類推，直到寫入數組的所有元素。如果在事務中沒有指定INCR，那么將從SymbolicName指定的單個位置寫入整個數組。

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），MEMORY 編碼（write事務），IOCONTROL編碼（write事務）


MEMORY 編碼（write事務）

WRITE MEMORY 用來向VXI儀器的A24或A32存儲器中寫入數据。

WRITE MEMORY 事務采取下面的形式︰

WRITE MEM: SymbolicName ExpressionList INCR

-或-

WRITE MEM: SymbolicName ExpressionList

這里:

SymbolicName是在配置VXI儀器過程中定義的名稱。這個名稱指明儀器擴展存儲器內部的具体地址 WRITE MEMORY事務的具体數据類型是:

  • BYTE - 不帶符號的8位字節

  • WORD16 - 16位2的補數整數

  • WORD32 - 32位2的補數整數

  • REAL32 - 32位IEEE 754浮點數字

  • WORD32*2 - 一個Int32的數組中的兩個相鄰的32位2的補數整數

  • REAL64 - 64位數IEEE 754浮點數字

在配置VXI儀器過程中也指定這些數据類型，這些數据類型不會出現在事務中。

ExpressionList是一個表達式或逗號分隔的表達式列表。

INCR指定從SymbolicName指定位置開始，以遞增的方式寫入數組數据。從開始位置寫入數組的第一個元素，從該位置加上長度等于數据類型字節數的偏移量處寫入第二個元素，依此類推，直到寫入數組的所有元素。如果在事務中沒有指定INCR，那么將從SymbolicName指定的單個位置寫入整個數組。

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），IOCONTROL編碼（write事務）


IOCONTROL編碼（write事務）

WRITE IOCONTROL事務采取下面的形式︰

WRITE IOCONTROL CTL ExpressionList

或

WRITE IOCONTROL PCTL ExpressionList

ExpressionList是單個表達式或逗號分隔的表達式列表。

IOCONTROL編碼僅用于Direct I/O到GPIO接口。

這一事務設置GPIO接口的控制線︰

WRITE IOCONTROL CTL a

VEE把取值a轉換成Integer。Integer值最無效的位X映射到接口的控制線上，其中X是控制線數量。

例如，HP 98622A GPIO接口使用兩條控制線︰CTL0和CTL1。

寫入的值 | CTL1 | CTL0
0 | 0 | 0
1 | 0 | 1
2 | 1 | 0
3 | 1 | 1

在上表中，1表明确認控制線，0表明清除控制線。這一事務控制著GPIO接口計算机驅動的握手線︰

WRITE IOCONTROL PCTL a

如果a的值不是零，那么設置PCTL線。如果a的值是零，那么不采取任何操作。在外設滿足握手要求時，會自動清除PCTL。

另請參閱

WRITE事務，TEXT 編碼（write 事務），BYTE編碼(write)，CASE編碼(write)，BINARY編碼(write 事務），BINBLOCK編碼(write)，CONTAINER編碼（write事務），COMPLEX, PCOMPLEX和COORD格式(write 事務)，STATE編碼（write事務），REGISTER Encoding（write事務），MEMORY 編碼（write事務）


READ事務

Read編碼和格式請參閱下表。

編碼 | 格式
TEXT | CHAR TOKEN STRING QUOTED STRING BYTE INT16 INT32 INT64 BOOLEAN OCTAL HEX REAL32 REAL64 COMPLEX PCOMPLEX COORD TIME STAMP
BINARY | STR BYTE INT16 INT32 INT64 BOOLEAN REAL32 REAL64 COMPLEX PCOMPLEX COORD
BINBLOCK | BYTE INT16 INT32 INT64 BOOLEAN REAL32 REAL64 COMPLEX PCOMPLEX COORD
CONTAINER | Not Applicable
IOSTATUS | Not Applicable
REGISTERa | BYTE WORD16 WORD32 REAL32
MEMORYa | BYTE WORD16 WORD32 WORD32*2 REAL32 REAL64

a. 僅适用于Direct I/O到VXI。

另請參閱

TEXT編碼（read事務），BINARY 編碼 (read 事務)，BINBLOCK編碼(read事務)，CONTAINER編碼( read事務），IOSTATUS編碼（read事務），REGISTER編碼（read事務），MEMORY編碼（read事務）


TEXT編碼（read事務）

READ TEXT事務可以讀取和丟棄不相關的項目，選擇性地讀取重要的項目。在大多數情況下其工作良好，但偶爾必須非常認真地分析VEE把哪些項目視為不相關項目，把哪些項目視為重要項目。

如果讀取使用VEE編寫的文本文件，只要讀取格式与寫入格式相同，那么很少會發生問題(偶爾也會有問題)。在試圖從另一個應用軟件中導入文件時，最可能發生問題。

下表以一般方式描述了READ TEXT行為。一定要閱讀下面各節的內容，了解所有可能的變化。

格式 | 說明
CHAR | 讀取任何8位字符。
TOKEN | 把相鄰的字符列表作為一個單位處理，稱為令牌。令牌使用指定的分界符分開(您可以指定分界符)。例如，在普通的書面英語中，單詞是令牌，空格是分界符。
STRING | 作為一個單位讀取8位字符列表。將讀取和聲明大多數控制字符。在已經讀取指定字符數量或在遇到換行符時，會到達字符串末尾。
QSTRING | 讀取符合IEEE 488.2任意長度字符串的8位字符列表，這個任意字符串在開頭和末尾都使用雙引號(ASCII 34)。不丟棄控制字符。換碼符擴展到相應的控制字符。在已經讀取雙引號字符(ASCII 34)時，會到達字符串的末尾。
BYTE | 讀取字符列表，把它們解釋為8位整數的十進制表示或非十進制表示。唯一視為十進制INTEGER一部分的字符是0123456789-+。VEE識別前綴0x (十六進制)及IEEE 488.2指定的所有非十進制數字格式︰#H (十六進制), #Q (八進制), #B (二進制)。
INTEGER16 | 讀取字符列表，把它們解釋為16位整數的十進制表示或非十進制表示。唯一視為十進制INTEGER一部分的字符是0123456789-+. VEE識別前綴0x (十六進制)及IEEE 488.2指定的所有非十進制數字格式︰#H (十六進制), #Q (八進制), #B (二進制)。
INTEGER32 | 讀取字符列表，把它們解釋為32位整數的十進制表示或非十進制表示。唯一視為十進制INTEGER一部分的字符是0123456789-+. VEE識別前綴0x (十六進制)及IEEE 488.2指定的所有非十進制數字格式︰#H (十六進制), #Q (八進制), #B (二進制)。
INTEGER64 | 讀取字符列表，把它們解釋為64位整數的十進制表示或非十進制表示。唯一視為十進制INTEGER一部分的字符是0123456789-+. VEE識別前綴0x (十六進制)及IEEE 488.2指定的所有非十進制數字格式︰#H (十六進制), #Q (八進制), #B (二進制)。
BOOLEAN | 讀取字符列表，把它們解釋為布爾數据。
OCTAL | 讀取字符列表，把它們解釋為整數的八進制表示。被視為OCTAL一部分的字符是01234567。VEE還識別八進制數字使用的IEEE 488.2非十進制數字前綴#Q。
HEX | 讀取字符列表，把它們解釋為整數的十六進制表示。被視為HEX一部分的唯一字符是0123456789abcdefABCDEF。字符組合0x是默認前綴；它不是數字的一部分，會讀取并忽略它。VEE還識別十六進制數字使用的0x和IEEE 488.2非十進制數字前綴#H。
REAL32 | 讀取字符列表，把它們解釋為十進制Real 32位(浮點)數字的表示。它識別所有常用符號，包括前導符號、帶符號的指數和小數點。作為REAL32一部分識別的字符是0123456789-+.Ee。 VEE還會把某些字符識別為Real數字的后綴乘數 (參閱本表)。
REAL64 | 讀取字符列表，把它們解釋為Real 64位(浮點)數字的表示。它識別所有常用符號，包括前導符號、帶符號的指數和小數點。作為REAL一部分識別的字符是0123456789-+.Ee。 VEE還會把某些字符識別為Real數字的后綴乘數 (參閱本表)。
COMPLEX | 讀取兩個REAL64的同等值，把它們解釋為复數。第一次讀取的是實數部分，第二次讀取的是虛數部分。
PCOMPLEX | 讀取兩個REAL64的同等值，把它們解釋為極坐標形式的复數。某些工程設計學科把這稱為"相量符號"。第一次讀取的數視為幅度，第二次讀取的數視為角度。可以為事務中的相位指定度量單位。
COORD | 讀取兩個或多個REAL64的同等值，把它們解釋為矩形坐標。
TIME STAMP | 讀取指定的表示日歷日期和/或周几的VEE時戳格式之一。

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），HEX 格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）

BINARY 編碼 (read 事務)，BINBLOCK編碼(read)，CONTAINER編碼（write事務），IOSTATUS編碼（read事務），REGISTER編碼（read事務），MEMORY編碼（read事務）


READ TEXT通用注釋

讀到末尾

READ TEXT格式支持選擇讀取指定數量的要素或一直讀到遇到EOF。在一個事務中，NumElements是一個表達式或逗號分隔的表達式列表，指明了VarList中每個變量的維度。

如果第一個表達式是一個星號(*)，那么事務將一直讀取數据，直到遇到EOF。只對下述命令支持讀到末尾︰

  • From File

  • From String

  • From StdIn

  • Execute Program

只有第一個維可以有一個星號，而不是一個數字。

例如，下面的事務讀取文件︰

READ TEXT a REAL ARRAY:*,10

它將一直讀取文件，直到遇到EOF，得到一個10欄的兩維數組。行數取決于文件中的數据量。讀取的數据要素總數必須能夠被已知維度的乘積整除，在本例中是10。如果不滿足這一標準，那么將發生錯誤。

每個READ的字符數量

這些READ TEXT格式支持選擇DEFAULT NUM CHARS和MAX NUM CHARS︰

  • STRING

  • INT16

  • INT32

  • INT64

  • BOOLEAN

  • OCTAL

  • HEX

  • REAL32

  • REAL64

本節討論了DEFAULT NUM CHARS和MAX NUM CHARS對這些格式的影響。

DEFAULT NUM CHARS和MAX NUM CHARS的基本區別是︰

  • DEFAULT NUM CHARS導致VEE讀取和忽略沒有作為其預計的數字或字符串的一部分出現的大多數字符。

  • MAX NUM CHARS允許一直讀到指定數量的8位字符，以建立指定類型的數字或字符串。一旦滿足READ，VEE會停止讀取字符。將讀取所有字符，VEE會試著把它們轉換成事務中指定的數据類型。

如果指定DEFAULT NUM CHARS，那么事務會讀取填充每個變量所需的多個字符。將讀取并忽略對指定數据類型沒有意義的字符。

如果指定MAX NUM CHARS，VEE不會試圖對指定數据類型沒有意義的字符分類。如果遇到沒有意義的字符，那么將讀取這些字符，以后可能會產生錯誤。

不管是哪种情況，換行和文件末尾都作為字符串或數字的終結符使用。對數字格式，將讀取和忽略任何有效字符(位)之前遇到的白空格。在讀取有效字符后，白空格或其它非數字字符會結束當前READ。這些是整体行為。如需更多信息，請參閱下面的范例。

本例將區分使用INT32格式的DEFAULT NUM CHARS和MAX NUM CHARS。假設您想讀取包含下述數据的文件︰

bird dog cat 12345 horse

不可能通過使用MAX NUM CHARS的READ TEXT INT32事務，從這些數据中提取整數12345，而不管讀取多少個字符。這是因為將一直讀取數字前面的字符bird dog cat，因此不能轉換成整數，從而會生成錯誤。

DEFAULT NUM CHARS將通過讀取并忽略bird dog cat，作為分界符處理5以后的白空格，來提取整數12345。

帶引號的字符串的影響

帶引號的字符串影響著所有I/O路徑的READ TEXT QSTR和READ TEXT TOKEN行為，及儀器或接口I/O的READ TEXT STRING行為。在本討論中，帶引號的字符串是指在開頭和結尾帶有雙引號字符、且沒有嵌入(非換碼)雙引號字符的字符集。雙引號字符是ASCII 34十進制字符。帶有雙引號影響著這些READ事務把字符分組成字符串和令牌的方式以及怎樣處理嵌入式控制字符和換碼符。

在本討論中，控制字符和換碼符有特定的含義。控制字符是与其中一個ASCII字符0-31十進制數字對應的單字節數据。例如，換行是ASCII 10十進制數据，符號<LF>在本討論中表示換行符。字符串\n是一個人可以閱讀的換碼符，代表VEE識別的換行。

在處理帶引號的字符串時，某些事務的行為取決于特定的I/O路徑。對儀器I/O之外的所有I/O路徑，READ TEXT QSTR會以特殊方式處理帶引號的字符串。對儀器I/O之外的所有I/O路徑，READ TEXT STRING不識別帶引號的字符串。

對儀器I/O，沒有READ TEXT QSTR事務。相反，READ TEXT STRING識別帶引號的字符串，相應地進行處理，因為帶引號的字符串在IEEE 488.2規范中有特定的含義。對包括儀器在內的所有I/O路徑，READ TEXT TOKEN會以特殊方式處理帶引號的字符串。在下面的討論中，我們假設I/O路徑是文件I/O。

在字符串沒有以雙引號開頭和結尾時，READ TEXT STRING事務及指定SPACE DELIM的READ TEXT TOKEN事務讀取和丟棄換行之外的控制字符。在STRING和TOKEN事務中，換行終結READ。換行符序列簡單地作為兩個字符(\和n)讀取，如\n(換行)。

在帶雙引號的字符串內部，READ TEXT QSTR和READ TEXT TOKEN將讀取引起來的所有字符(包括控制字符)，并把它們存儲在輸入變量中。將讀取嵌入的換行，象任何其它字符一樣處理，而不會終結當前READ。將讀取換碼符序列，轉換成相應的單字符。

通過使用范圍，可以最好地解釋分組效應。在本節其余部分的討論中，讀取的數据是一個文件，內容如下︰

"This is in quotes." This is not.

假設對這些事務使用From File讀取上面的文件︰

READ TEXT x QSTR

READ TEXT y QSTR

在讀取文件后，結果是︰

x = This is in quotes.

y = This is not.

雙引號被解釋為分界符，不會出現在輸入變量中。

現在，假設對這些事務使用From File讀取上面的文件︰

READ TEXT x QSTR MAXFW:4

READ TEXT y QSTR

在讀取文件后，結果是︰

x = This

y = This is not.

這里的雙引號仍作為分界符。第一個事務從雙引號讀到雙引號，把前4個字符指配給x。這會把文件的讀取指針定位在第二次發生This前面。第二項事務象以前一樣讀取相同的字符串。

然后假設對這些事務使用From File讀取上面的文件︰

READ TEXT x TOKEN

READ TEXT y QSTR

在讀取文件后，結果是︰

x = This is in quotes.

y = This is not.

這里，雙引號把整個第一句有效地放在一個令牌中。盡管默認TOKEN分界符是白空格，但帶引號的整個字符串作為單個令牌處理。此外，TOKEN讀取和丟棄雙引號字符。


CHAR 格式（read事務）

READ TEXT CHAR事務采取下面的形式︰

READ TEXT VarList CHAR:NumChar ARRAY:NumStr

VarList是單個Text變量或逗號分隔的Text變量列表。

NumChar指定必須讀取的8位字符數量，以填充VarList中每個變量的每個要素。

NumStr是單個表達式或逗號分隔的表達式列表，指明VarList中每個變量的維度。如果事務配置成讀取一個標量，那么事務中不會出現關鍵字ARRAY。

ARRAY:1是有一個要素的一維數組。VEE可以區分標量与只含有一個要素的一維數組。

在希望一次只讀取一個字符時，或需要讀取每個字符、而又不忽略任何進入的數据時，可以使用CHAR格式。

這一事務讀取兩個兩維Text數組。每個數組中的每個要素包含兩個字符。

READ TEXT X,Y CHAR:2 ARRAY:2,2

如果上面的事務讀取的文件包含下面的字符︰

<space>ABCDEFG"AB"<LF>'CD

那么變量X和Y在READ后面包含下面的值︰

X [0 0] = <space>A

X [0 1] = BC

X [1 0] = DE

X [1 1] = FG

Y [0 0] = "A

Y [0 1] = B"

Y [1 0] = <LF>'

Y [1 1] = CD

符號<space>表示單個字符空格(ASCII 32十進制)。符號<LF>表示單個字符換行(ASCII 10十進制)。在讀取空格、換行和雙引號時不需要任何特殊考慮或解釋。

另請參閱

TOKEN格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），HEX 格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


TOKEN格式（read事務）

READ TEXT TOKEN事務采取下面的形式︰

READ TEXT VarList TOKEN Delimiter ARRAY:NumElements

VarList是單個Text變量或逗號分隔的Text變量列表。

Delimiter指定結束(分隔)每個令牌的字符組合。

NumElements是單個表達式或逗號分隔的表達式列表，指明VarList中每個變量的維度。如果事務配置成讀取一個標量，那么事務中不出現ARRAY關鍵字。ARRAY:1是帶有一個要素的一維數組。VEE可以區分標量与只包含一個要素的一維數組。

TOKEN格式允許使用下面其中一個Delimiter選項定義令牌的分隔符(邊界)︰

  • SPACE DELIM

  • INCLUDE CHARS

  • EXCLUDE CHARS

下面對分隔符的討論解釋了分隔符的選擇怎樣影響讀取下面所示內容的文件( file1)︰

A phrase.
"A phrase."
Tab follows.
XOXXOOXXXOOOXXXX
XAXXBCXXXDEF

文件中只包含字母O，不包含數字零。

上面文件的前四行中，在每一行的結尾有一個看不見的換行符，在文本編輯器中它會顯示出來，如vi。

SPACE DELIM

如果使用SPACE DELIM，令牌將使用任何空白處結束。空白處包括空格、制表符、換行和文尾。這大体上与書面英文單詞對應。通過使用SPACE DELIM，可以讀取包含一段文本的文件，并分隔各個單詞。

帶雙引號的字符串進行特殊處理。帶雙引號的字符串作為一個令牌讀取，去掉雙引號。在輸出變量中返回嵌入在帶雙引號的字符串中的控制字符(ASCII 0-31十進制)。帶雙引號的字符串中嵌入的換碼符(如\n)轉換成同等的控制字符。

對雙引號的字符串的這种特殊處理只适用于SPACE DELIM事務。INCLUDE CHARS和EXCLUDE CHARS處理雙引號、換碼符和控制字符的方式与任何其它字符相同。

如果對這一事務使用SPACE DELIM讀取file1中的數据︰

READ TEXT a TOKEN ARRAY:8

變量a包含下面的值︰

a[0] = A

a[1] = phrase.

a[2] = A phrase.

a[3] = Tab

a[4] = follows

a[5] = .

a[6] = XOXXOOXXXOOOXXXX

a[7] = XAXXBCXXXDEF

INCLUDE CHARS

如果使用INCLUDE CHARS，那么可以指定READ中返回的令牌中"包括"的字符列表。這些指定的字符將是任何令牌中返回的唯一字符。指定INCLUDE字符之外的任何其它字符都會結束當前令牌。令牌中不包括結束字符，將剝离結束字符。

如果VEE對這一事務使用INCLUDE CHARS讀取file1中的數据︰

READ TEXT a TOKEN INCLUDE:"X" ARRAY:7

變量a包含下面的值︰

a[0] = X

a[1] = XX

a[2] = XXX

a[3] = XXXX

a[4] = X

a[5] = XX

a[6] = XXX

如果VEE對這一事務使用INCLUDE CHARS讀取file1中的數据︰

READ TEXT a TOKEN INCLUDE:"OXZ" ARRAY:4

變量a包含下面的值︰

a[0] = XOXXOOXXXOOOXXXX

a[1] = X

a[2] = XX

a[3] = XXX

INCLUDE列表中的第一個字符是字母O，而不是數字零。

假設要讀取包含下面的數据的文件( file2 )︰

111 222 333 444 555

如果要使用這一事務讀取file2中的數据︰

READ TEXT x,y,z TOKEN INCLUDE:"1234567890"

Text變量x, y和z將包含下面的值︰

x = 111

y = 222

z = 333

完成這一操作的另一种方式是指定一個大于1的ARRAY，把數据讀入數組中。例如，如果使用這一事務讀取上面的數据︰

READ TEXT x TOKEN INCLUDE:"1234567890" ARRAY:3

Text變量x包含下面的值︰

x[0] = 111

x[1] = 222

x[2] = 333

EXCLUDE CHARS

如果使用EXCLUDE CHARS，可以指定字符列表，其中任何一個字符都會結束當前令牌。令牌中不包括結束字符。將讀取并丟棄結束字符。

如果對這一事務使用EXCLUDE讀取file1中的數据︰

READ TEXT a TOKEN EXCLUDE:"X" ARRAY:8

變量a包含下面的值︰

a[0] = A phrase.<LF>"A phrase."<LF>Tab follows .<LF>

a[1] = O

a[2] = OO

a[3] = OOO

a[4] = <LF>

a[5] = A

a[6] = BC

a[7] = DEF<LF>

假設從儀器向VEE發送下面的數据。

++1.23++4.98++0.45++2.34++0.01++23.45++12.2++

如果VEE使用這一事務讀取上面的數据︰

READ TEXT x TOKEN EXCLUDE:"+" ARRAY:7

變量x將包含下面的值︰

x[0] = null string (empty)

x[1] = 1.23

x[2] = 4.98

x[3] = 0.45

x[4] = 2.34

x[5] = 0.01

x[6] = 23.45

盡管提供了7個"數字"，但只讀取6個數字。在這一事務結束時，VEE讀取了7個以+結束的令牌，包括在填充任何數据前結束的第一個字符。

備注

EXCLUDE CHARS的行為在VEE 5 Execution Mode和以后版本与VEE 4 Execution Mode和以前版本之間不同。如需差异介紹，請參閱READ TEXT事務。

另請參閱

CHAR 格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），HEX 格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


STRING格式（read事務）

READ TEXT STRING事務采取下面的形式︰

READ TEXT VarList STR ARRAY:NumElements

或

READ TEXT VarList STR MAXFW:NumChars ARRAY:NumElements

VarList是單個Text變量或逗號分隔的Text變量列表。

NumChars指定在構建數字時可以讀取的8位字符的最大數量。

NumElements是單個表達式或逗號分隔的表達式列表，指明VarList中每個變量的維度。如果事務配置成讀取一個標量，那么事務中不出現ARRAY關鍵字。ARRAY:1是帶有一個要素的一維數組。VEE可以區分標量与只包含一個要素的一維數組。

這一事務讀取所有進入的字符，返回字符串。它刪除前面的空格。下面的討論只适用于儀器I/O路徑，如GPIB或VXI。所有其它I/O路徑，如文件或名稱12-pipes，將不會以特殊方式處理Quoted Strings。如需与帶雙引號的字符串對READ TEXT STRING的影響有關的詳情，請參閱帶引號的字符串的影響。

控件和換碼符的影響

在本討論中，控制字符和換碼符具有特定的意義。控制字符是單字節數据，与ASCII字符十進制0-31之一對應。例如，換頁是ASCII 10十進制，符號<LF>表示本討論中的換頁符。字符串\n是一种人可以讀的換碼符，表示VEE識別的換頁。VEE使用換碼符在帶引號的字符串內部表示控制字符。

根据是否出現在帶雙引號的字符串內部，控制字符和換碼符會以不同的方式處理。

在帶雙引號的字符串外部，會讀取和丟棄換頁之外的控制字符。換頁結束當前字符串。換碼符如\n作為兩個單獨的字符讀取(\和n)。

在帶雙引號的字符串內部，會讀取控制字符和換碼符，并包括在READ返回的字符串內部。帶雙引號的字符串內部的換頁不會結束當前字符串。換碼符如\n作為同等的單個字符讀取(<LF>)，并作為控制字符包括在返回的字符串中。

假設想使用READ TEXT STRING事務讀取下面的字符串數据︰

Simple string.

Random \n % $ * 飊'

"In quotes."

"In quotes

with control."

"In quotes\nwith escape."

  • 如果使用這一事務讀取字符串數据︰

READ TEXT x STR ARRAY:5

變量x包含下面的值︰

a[0] = Simple string.

a[1] = Random \n % $ * 飊'

a[2] = In quotes.

a[3] = In quotes<LF>with control.

a[4] = In quotes<LF>with escape.

  • 如果使用這一事務讀取相同的字符串數据︰

READ TEXT x STR MAXFW:16 ARRAY:5

變量x包含下面的值︰

a[0] = Simple string.

a[1] = Random \n % $ *

a[2] = 飊'

a[3] = In quotes.

a[4] = In quotes<LF>with c

在已經讀取16個字符 (a[1])或讀取沒有引號的<LF> (a[2])時，這一事務結束當前READ。帶引號的字符串從雙引號到雙引號讀取，返回前16個分界的字符(a[4])。

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），HEX 格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


QUOTED STRING格式（read事務）

READ TEXT QUOTED STRING事務采取下面的形式︰

READ TEXT VarList QSTR ARRAY:NumElements

或

READ TEXT VarList QSTR MAXFW:NumChars ARRAY:NumElements

VarList是單個Text變量或逗號分隔的Text變量列表。

NumChars指定在試圖構建字符串時可以讀取的8位字符的最大數量。

NumElements是單個表達式或逗號分隔的表達式列表，它指定VarList中每個變量的維度。如果事務配置成讀取一個標量，那么事務中不出現ARRAY關鍵字。ARRAY:1是一個有一個要素的一維數組。VEE可以區分標量和只包含一個要素的一維數組。

這一事務讀取所有進入的字符，返回字符串。下面的討論与所有非儀器I/O路徑有關。儀器I/O路徑不實現READ TEXT QSTR事務。如需与雙引號字符串對READ TEXT STRING的影響有關的詳細信息，請參閱雙引號的影響。

另請參閱控件和換碼符的影響。

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），HEX 格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


INTEGER 格式（read事務）

READ TEXT INTEGER事務采取下面的形式︰

READ TEXT VarList INT16(或INT32, INT64) ARRAY:NumElements

或

READ TEXT VarList INT16(或INT32, INT64) MAXFW:NumChars ARRAY:NumElements

VarList是單個Integer變量或由Integer變量組成的逗號分隔的列表。

NumChars指定在構建數值時可以讀取的最大8位字符數量。

NumStr是一個表達式或逗號分隔的表達式列表，指明了VarList中每個變量的維度。如果事務配置成讀取標量，那么事務中不出現ARRAY關鍵字。ARRAY:1是有一個要素的一維數組。VEE區分標量与只包含一個要素的一維數組。

READ TEXT INT16事務把進入的字符解釋為16位2的補數整數。這些整數的有效范圍是32767到-32768。超出這一范圍的任何數字會隱藏起來，因此永久不會發生溢出情況。例如，32768解釋為-32768。

READ TEXT INT32事務把進入的字符解釋為32位2的補數整數。這些整數的有效范圍是2 147 483 647到-2 147 483 648。超出這一范圍的任何數字會隱藏起來，因此永久不會發生溢出情況。例如，2 147 483 648解釋為-2 147 483 648。

READ TEXT INT64事務把進入的字符解釋為64位2的補數整數。這些整數的有效范圍是-9223372036854775808到+9223372036854775807。超出這一范圍的任何數字會隱藏起來，因此永遠不會發生溢出情況。例如，9223372036854775808解釋為-9223372036854775808。

在開始構建數值時，VEE丟棄沒有識別為數值一部分的任何前導字符。一旦VEE開始構建數值，那么不能識別為數值一部分的任何字符都將終結該數值的READ。下表說明了識別為INT16、INT32或INT64一部分的字符組合。

符號 | 識別的字符
十進制 | 有效字符是?/span>0123456789。前導零不解釋為八進制前綴，因為其位于VEE數据輸入字段中。
VEE十六進制 | VEE把0x解釋為十六進制數值的前綴。前綴后面的有效字符是0123456789aAbBcCdDeEfF。
IEEE 488.2二進制 | VEE把#b或#B解釋為二進制數值的前綴。前綴后面的有效字符是0和1。
IEEE 488.2八進制 | VEE把#q或#Q解釋為八進制數值的前綴。前綴后面的有效字符是01234567。
IEEE 488.2十六進制 | VEE把#h或#H解釋為十六進制數值的前綴。前綴后面的有效字符是0123456789aAbBcCdDeEfF。

所有下述符號都解釋為十進制Integer值15︰

15

+15

015

0xF

0xf

#b1111

#Q17

#hF

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, REAL32和REAL64格式（read事務），HEX 格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


OCTAL格式（read事務）

READ TEXT OCTAL事務采取下面的形式︰

READ TEXT VarList OCT ARRAY:NumElements

或

READ TEXT VarList OCT MAXFW:NumChars

其中︰

ARRAY:NumElements

VarList是單個Integer變量或由Integer變量組成的逗號分隔的列表。

NumChars指定在構建數值時可以讀取的最大8位字符數量。

NumElements是一個表達式或逗號分隔的表達式列表，指明了VarList中每個變量的維度。如果事務配置成讀取標量，那么事務中不出現ARRAY關鍵字。ARRAY:1是有一個要素的一維數組。VEE區分標量与只包含一個要素的一維數組。

READ TEXT OCTAL事務把進入的字符解釋為表示64位2的補數整數的八進制數字。這些整數的有效范圍是-9223372036854775808到+9223372036854775807十進制數字。

如果事務指定MAX NUM CHARS (MAXFW)，那么讀取的八進制數值可以包含超過64位的數据。例如，假設VEE讀取下面的八進制數据︰

37723745621456724377745277234

使用下面的事務︰

READ TEXT x OCT MAXFW:32

VEE讀取八進制數据中的所有數字，但只使用最后22個數字(5621456724377745277234)為x值構建數值。這是因為每個數字与3個位對應，八進制數值必須存儲在VEE Integer中，其中包含64個位。22個八進制數字得到66位，它丟掉最有用的兩個位，以适應VEE Integer中的值。不可能發生溢出。

備注

在VEE 6&7及以前的模式中，READ TEXT OCTAL事務把進入的字符解釋為代表32位2的補數整數的八進制數字。這些整數的有效范圍是2 147 483 647到-2 147 483 648十進制數字。

如果事務指定DEFAULT NUM CHARS，它將持續讀取字符，直到構建足夠的數值，填充VarList中的每個變量。換行符不會提前結束數值構建。例如，下面的事務︰

READ TEXT x OCT ARRAY:4

把下面八進制數据的每一行解釋為相同的四個八進制數值集︰

0345 067 003<LF>0377<LF>

345 67 3 377<EOF>

345,67,3,377,45,67<EOF>

符號<LF>表示單字符換行(ASCII 10十進制)。符號<EOF>表示文件末尾條件。

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），HEX 格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


HEX 格式（read事務）

READ TEXT HEX事務采取下面的形式︰

READ TEXT VarList HEX ARRAY:NumElements

或

READ TEXT VarList HEX MAXFW:NumChars ARRAY:NumElements

VarList是單個Integer變量或由Integer變量組成的逗號分隔的列表。

NumChars指定在構建數字時可以讀取的8位字符數量。

NumElements是一個表達式或逗號分隔的表達式列表，指明了VarList中每個變量的維度。如果事務配置成讀取標量，那么事務中不出現ARRAY關鍵字。ARRAY:1是有一個要素的一維數組。VEE區分標量与只包含一個要素的一維數組。

READ TEXT HEX事務把進入的字符解釋為代表64位2的補數整數。這些整數的有效范圍是-9223372036854775808十進制到+9223372036854775807十進制。

如果事務指定MAX NUM CHARS (MAXFW)，那么十六進制數字讀取中可能包含超過64位的數据。例如，假設VEE讀取下面的十六進制數据︰

ad2469Ff725BCdef37964 十六進制數据

使用這一事務︰

READ TEXT x HEX MAXFW:32

VEE讀取十六進制數据中的所有數字，但只使用最后16個數字(9Ff725BCdef37964)，為x值構建一個數值。這是因為每個數字与4個位對應，十六進制數字必須存儲在VEE Integer中，其包含64個位。16個十六進制數字恰好得到64個位，不可能發生溢出。

備注

在VEE 6&7及以前的模式中，READ TEXT HEX事務把進入的字符解釋為代表32位2的補數整數的八進制數字。這些整數的有效范圍是2 147 483 647到-2 147 483 648十進制值。

假設VEE讀取相同的十六進制數据，但使用不同的MAX NUM CHARS，如下面的事務所示︰

READ TEXT x HEX MAXFW:3 ARRAY:7

在這种情況下，事務讀取相同的數据，把它解釋為7個Integer，每個整數由三個十六進制數字組成。

如果事務指定DEFAULT NUM CHARS，那么它將持續讀取字符，直到其構建足夠的數字，填充VarList中的每個變量。每個數字將讀取恰好8個十六進制數字。換行符將不會提前結束數字構建。

假設VEE讀取相同的十六進制數据，但使用DEFAULT NUM CHARS，如下面的事務所示︰

READ TEXT x HEX ARRAY:2

在這种情況下，事務讀取相同的數据，把它解釋為兩個Integer，每個整數由八個十六進制數字組成。不讀取最后五個數字(37946)。

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


REAL32和REAL64格式（read事務）

READ TEXT REAL32和READ TEXT REAL64事務采取下面的形式︰

READ TEXT VarList REAL32(或REAL64) ARRAY:NumElements

或

READ TEXT VarList REAL32(或REAL64) MAXFW:NumChars ARRAY:NumElements

VarList是單個Real變量或逗號分隔的Real變量列表。

NumChars指定在構建數字時可以讀取的8位字符的最大數量。

NumElements是單個表達式或逗號分隔的表達式列表，指明VarList中每個變量的維度。如果事務配置成讀取一個標量，那么事務中不出現ARRAY關鍵字。ARRAY:1是帶有一個要素的一維數組。VEE可以區分標量与只包含一個要素的一維數組。

這一事務讀取的十進制數字被解釋為VEE Real32，這是一個32位IEEE 754浮點數字。這些數字的范圍是︰

-1.175 494 35E-38

-3.402 823 47E+38

到

3.402 823 47E+38

1.175 494 35E-38

這一事務讀取的十進制數字被解釋為VEE Real64，這是一個64位IEEE 754浮點數字。這些數字的范圍是︰

-1.797 693 134 862 315E+308

-2.225 073 858 507 202E-307

到

2.225 073 858 507 202E-307

1.797 693 134 862 315E+308

如果事務指定MAX NUM CHARS (MAXFW)，那么讀取的Real數字可能包含超過17位的數据。例如，假設VEE讀取下面的實數數据︰

1.234567890123456789實數數据

使用這一事務︰

READ TEXT x REAL64 MAXFW:19

VEE讀取實數數据中的所有位，但只使用尾數中17個最有效的位，為x值構建一個數字。這是因為每個Real包含一個54位尾數，其相當于大于16個小數位，但小于17個小數位。結果，x的值為1.2345678901234567。

Text到Real轉換不能保証對最無效的位得到相同的值。比較兩個最無效的位是失策的。

假設VEE讀取相同的實數數据，但使用不同的MAX NUM CHARS，如下面的事務中︰

READ TEXT x REAL64 MAXFW:6 ARRAY:3

在這种情況下，該事務讀取相同的數据，把它解釋為3個Real數字，每個數字由6個十進制字符組成。不讀取最后兩個字符。

如果事務指定DEFAULT NUM CHARS，那么它將繼續讀取字符，直到構建足夠的數字，填充VarList中的每個變量。每個數字將讀取最多17個小數位。換行字符、空白處和其它非數字字符將在讀取17位以前結束構建數字。

READ TEXT REAL64和REAL32事務識別Real數字最常用的十進制符號，包括前導符號、小數點和帶符號的指數。字符+-.0123456789Ee被所有READ TEXT REAL事務識別為Real數字的有效部分。如果事務指定DEFAULT NUM CHARS，那么還會識別下表中顯示的后綴字符。后綴字符必須直接位于數字的最后位后面，而沒有相干的空白處。

后綴 | 乘法器
P | 1015
T | 1012
G | 109
M | 106
k or K | 103
m | 10-3
u | 10-6
n | 10-9
p | 10-12
f | 10-15

下面的Text數据代表六個實數︰

1001

+1001.

1001.0

1.001E3

+1.001E+03

1.001K

  • 如果VEE使用下面的事務讀取實數文本數据︰

READ TEXT x REAL64 ARRAY:6

那么Real變量x的每個要素包含值1001︰

  • 如果VEE使用下面的事務讀取相同的數据︰

READ TEXT x REAL64 MAXFW:20 ARRAY:6

那么Real變量x的前五個要素包含值1001，第六個要素包含值1.001。

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），HEX 格式（read事務），OCTAL格式（read事務），COMPLEX, PCOMPLEX和COORD格式（read事務）


COMPLEX, PCOMPLEX和COORD格式（read事務）

COMPLEX, PCOMPLEX和COORD對應擁有相同名稱的VEE多字段數据類型。這三种READ格式的行為非常類似。除特別注明外，本節介紹的行為适用于這三种格式。

与VEE數据類型Complex、PComplex和Coord由多個Real64數字組成一樣，COMPLEX、PCOMPLEX和COORD格式在本質上是REAL64格式的复合形式。它寫入每個多字段數据類型的Real構成值，适用的輸出規則与單獨的REAL64格式化值相同。

COMPLEX格式

READ TEXT COMPLEX事務采取下面的形式︰

READ TEXT VarList CPX ARRAY:NumElements

每個READ TEXT COMPLEX事務讀取兩個REAL格式化數字的同等值。讀取的第一個數字被理解為實數部分，讀取的第二個數字被理解為虛數部分。

PCOMPLEX格式

READ TEXT PCOMPLEX事務采取下面的形式︰

READ TEXT VarList PCX:PUnit ARRAY:NumElements

PUnit指定測量PComplex相位的角測度的單位。

每個READ TEXT PCOMPLEX事務讀取兩個 REAL格式化數字的同等值。讀取的第一個數字被理解為幅度，讀取的第二個數字被理解為相位。

如果讀取COMPLEX, PCOMPLEX或COORD格式的任何事務遇到沒有括上的圓括號，那么其會預計找到一個括上的圓括號。

假設想讀取一個文件，其中包含下面的含有圓括號的數据︰

(1.23 , 3.45 (6.78 , 9.01) (1.23 , 4.56)

如果VEE使用這一事務讀取數据︰

READ TEXT x,y CPX

那么變量x和y包含下面的Complex值︰

x = (1.23 , 3.45)

y = (1.23 , 4.56)

該事務讀取上面的6.78和9.01，找到括上的圓括號。如果數据中完全省掉圓括號，那么y的值將為(6.78 , 9.01)。

COORD格式

READ TEXT COORD事務采取下面的形式︰

READ TEXT VarList COORD:NumFields ARRAY:NumElements

VarList是單個Coord變量或逗號分隔的Coord變量列表。

NumFields是單個變量或表達式，指定每個Coord值中的矩形維度數量。為無差錯地執行READ，這個值必須是2或更大。

NumElements是單個表達式或逗號分隔的表達式列表，指定VarList中每個變量的維度。如果該事務配置成讀取一個標量，那么事務中不會單現關鍵字ARRAY。ARRAY:1是一個有一個要素的一維數組。VEE可以區分標量与只包含一個要素的一維數組。

另請參閱

CHAR 格式（read事務）, TOKEN格式（read事務）, STRING格式（read事務）, QUOTED STRING格式（read事務）, INTEGER 格式（read事務），REAL32和REAL64格式（read事務），HEX 格式（read事務），OCTAL格式（read事務）


BINARY 編碼 (read 事務)

READ BINARY事務采取下面的形式︰

READ BINARY VarList DataType ARRAY:NumElements

VarList是一個變量或逗號分開的變量列表。

DataType　是其中下面一個預先定義的VEE數据類型︰

• Boolean - 32位2的補數整數

• BYTE - 8位不帶符號的字節

• INT16 - 16位2的補數整數

• INT32 - 32位2的補數整數

• INT64 - 64位2的補數整數

• REAL32 - 32位IEEE 754浮點數字

• REAL64 - 64位IEEE 754浮點數字

• STRING - 以空字符結尾的字符串

• COMPLEX - 等于兩個REAL64

• PCOMPLEX - 等于兩個REAL64

• COORD - 等于兩個或多個REAL64

備注

VEE 5及更低的執行模式使用INT32存儲和處理所有整數值，使用Real數据類型(也稱為REAL64)存儲和處理所有實數。因此，INT16和REAL32數据類型只用于I/O操作。VEE 5及更低的執行模式在輸入事務上為儀器I/O執行下面的數据類型轉換。

在VEE 5及更低的執行模式下，從儀器上輸入的INT１６的值將逐個被轉換成INT３２的值。該轉換將INT16的值默認為帶符號數。你如果需要一個無符號的INT32的數，可以用下面的 Formula　對該數進行處理︰

BITAND(a, 0xFFFF)

在VEE 5及更低的執行模式下，從儀器上輸入的 Real32 的值將逐個被轉換成 Real64 的值。

在VEE 6執行模式下，數据轉換成相應的類型，如果數据超出范圍，那么會生成錯誤。

NumElements 是一個表達式或逗號分開的表達式列表。它指定　VarList　中每個變量的維數。 如果第一個表達式是一個星號(*), 該事務就會一直讀到 EOF 才停止。這种讀直到結束的操作只支持以下事務對象︰

  • From File

  • From String

  • From StdIn

  • Execute Program

只有第一維可以為星號而不是數字。如果一個事物被配置成讀一個標量，關鍵字 ARRAY 不會在事務中出現。 ARRAY:1 是一個只有一個元素的一維數組。在　VEE　中標量和只有一個元素的一維數組是不同的。

例如，下面的事務從一個文件讀數︰

READ BINARY a REAL64 ARRAY:*,10

它會一直讀到遇見 EOF 才停止。讀回的結果是一個有１０列的二維數組。行數取決于文件中數据的個數。讀回的數据元素的總數必須為已知各維數的乘積的倍數。本例中為 10.

READ BINARY 事務要求輸入數据的格式与同等的WRITE BINARY事務輸出的數据格式完全一致。BINARY 編碼的數据具有緊湊的優點，但是它不易于与非　VEE 的應用程序共享。

另請參閱

TEXT編碼（read事務），BINBLOCK編碼(read事務)，CONTAINER編碼( read事務），IOSTATUS編碼（read事務），REGISTER編碼（read事務），MEMORY編碼（read事務）


BINBLOCK編碼(read事務)

BINBLOCK編碼(read)

READ BINBLOCK事務采取下面的形式︰

READ BINBLOCK VarList DataType ARRAY:NumElements

VarList是洙個變量或用逗號分隔的變量列表。

DataType是下面預先定義的VEE數据類型之一︰

• BYTE - 8位無符號字節

• INT16 - 16位2的補數整數

• INT32 - 32位2的補數整數

• REAL32 - 32位 IEEE 754浮點數

• REAL64 - 64位 IEEE 754浮點數

• COMPLEX - 等于兩個REAL64

• PCOMPLEX -等于兩個REAL64

• COORD - 等于兩個或多個REAL64

NumElements是單個變量或用逗號分隔的變量列表，指明VarList中每個變量的維度。列數等于binblock包含的通道數量。行數等于每條通道的讀數。只有第一個維度可以有一個星號，而不是數字。

如果第一個表達式是星號(*)，該事務將讀取數据，直到遇到EOF。只支持使用下述命令讀到文尾︰

• From File

• From String

• From StdIn

• Execute Program

如果事務配置成讀取一維數組，那么對單個通道，單個維度代表多個行，可以有一個星號。

例如，下面的讀取文件事務︰

READ BINBLOCK a REAL64 ARRAY:*,10

將讀取文件，直到遇到EOF，得到一個10列的兩維數組。每一列表示一條儀器通道。行數取決于每條通道中的數据量。binblock包含的數据要素總數必須能夠被列數除盡，在本例中是10。

不需要指定与進入的數据格式有關的任何其它信息，因為碼組包頭包含足夠的信息。READ BINBLOCK可以使用WRITE BINBLOCK事務讀取前面介紹的任何碼組格式。

下面的事務讀取示波器提供的兩條軌跡，示波器把軌跡格式化為IEEE 488.2确定長度任意碼組響應數据︰

READ BINBLOCK a,b REAL64

另請參閱

TEXT編碼（read事務），BINARY 編碼 (read 事務)，CONTAINER編碼( read事務），IOSTATUS編碼（read事務），REGISTER編碼（read事務），MEMORY編碼（read事務）


CONTAINER編碼( read事務）

READ CONTAINER事務采取下面的形式︰

READ CONTAINER VarList

VarList是洙個變量或逗號分隔的變量列表。

READ CONTAINER事務讀取WRITE CONTAINER事務寫入的特殊文本表示方式中存儲的數据。在使用READ CONTAINER時不需要指定其它指標，如格式，因為信息是容器的一部分。

另請參閱

TEXT編碼（read事務），BINARY 編碼 (read 事務)，BINBLOCK編碼(read事務)，IOSTATUS編碼（read事務），REGISTER編碼（read事務），MEMORY編碼（read事務）


REGISTER編碼（read事務）

READ REGISTER用來從VXI儀器的A16存儲器中讀取值。

READ REGISTER事務采取下面的形式︰

READ REG: SymbolicName ExpressionList INCR ARRAY:NumElements

或

READ REG: SymbolicName ExpressionList ARRAY:NumElements

其中︰

SymbolicName是在配置VXI儀器過程中定義的名稱。這個名稱指明儀器寄存器空間內部的具体地址。READ REGISTER事務的具体數据類型是︰

BYTE - 不帶符號的8位字節

WORD16 - 16位2的補數整數

WORD32 - 32位2的補數整數

REAL32 - 32位IEEE 754浮點數字

在配置VXI儀器過程中也指定這些數据類型，這些數据類型不會出現在事務中。

ExpressionList是一個表達式或逗號分隔的表達式列表。

INCR指定從SymbolicName指定位置開始，以遞增的方式從寄存器中讀取數組數据。從開始位置讀取數組的第一個元素，從該位置加上長度等于數据類型字節數的偏置讀取第二個元素，依此類推，直到讀取數組的所有元素。如果在事務中沒有指定INCR，那么將從SymbolicName指定的單個位置讀取整個數組。

NumElements是一個表達式或逗號分隔的表達式列表，指定了VarList中每個變量的維度。如果事務配置成讀取標量，ARRAY關鍵字不會出現在事務中。ARRAY:1是有一個要素的一維數組。VEE區分標量与只包含一個要素的一維數組。

另請參閱

TEXT編碼（read事務），BINARY 編碼 (read 事務)，BINBLOCK編碼(read事務)，CONTAINER編碼( read事務），IOSTATUS編碼（read事務），MEMORY編碼（read事務）


MEMORY編碼（read事務）

READ MEMORY用來從VXI儀器的A24或A32存儲器中讀取值。

READ MEMORY事務采取下面的形式︰

READ MEM: SymbolicName ExpressionList INCR ARRAY:NumElements

或

READ MEM: SymbolicName ExpressionList ARRAY:NumElements

其中︰

SymbolicName是在配置VXI儀器過程中定義的名稱。這個名稱指明儀器擴展存儲器內部的具体地址。READ MEMORY事務的具体數据類型是︰

  • BYTE - 不帶符號的8位字節

  • WORD16 - 16位2的補數整數

  • WORD32 - 32位2的補數整數

  • REAL32 - 32位IEEE 754浮點數字

  • WORD32*2 - Int32數組相鄰要素中的兩個32位2的補數整數

  • 　REAL64 - 64位IEEE 754浮點數字

在配置VXI儀器過程中也指定這些數据類型，這些數据類型不會出現在事務中。

ExpressionList是一個表達式或逗號分隔的表達式列表。

INCR指定從SymbolicName指定位置開始，以遞增的方式從存儲位置中讀取數組數据。從開始位置讀取數組的第一個要素，從該位置加上長度等于數据類型字節數的偏置讀取第二個要素，依此類推，直到讀取數組的所有要素。如果在事務中沒有指定INCR，那么將從SymbolicName指定的單個存儲位置讀取整個數組。

NumElements是一個表達式或逗號分隔的表達式列表，指定了VarList中每個變量的維度。如果事務配置成讀取標量，ARRAY關鍵字不會出現在事務中。ARRAY:1是有一個要素的一維數組。VEE區分標量与只包含一個要素的一維數組。

另請參閱

TEXT編碼（read事務），BINARY 編碼 (read 事務)，BINBLOCK編碼(read事務)，CONTAINER編碼( read事務），IOSTATUS編碼（read事務），REGISTER編碼（read事務）


IOSTATUS編碼（read事務）

READ IOSTATUS事務采取下面的形式︰

READ IOSTATUS STS Bits VarList

或

READ IOSTATUS DATA READY VarList

VarList是洙個Integer變量或逗號分隔的Integer變量列表。

Direct I/O for GPIO接口、From StdIn和To/From Named Pipe使用READ IOSTATUS事務。

GPIO的READ IOSTATUS事務讀取接口上提供的外設狀態位。讀取的位數取決于接口的型號。它返回一個整數值，這是加權后的所有狀態位之和。

例如，HP 98622A GPIO接口支持兩條外設狀態線︰STI0和STI1。下表說明了怎樣解釋這一事務中的x值︰

READ IOSTATUS STS Bits a

讀取的值 | STI1 | STI0
0 | 0 | 0
1 | 0 | 1
2 | 1 | 0
3 | 1 | 1

READ IOSTATUS事務讀取狀態線的瞬時值；狀態線沒有以任何方式進行鎖存或緩沖。

如果有準備讀取的數据，READ IOSTATUS事務會返回Boolean YES (1)。如果不存在數据，那么返回Boolean NO (0)。可以使用READ IOSTATUS事務，避免阻塞程序執行、直到提供數据的READ。

另請參閱

TEXT編碼（read事務），BINARY 編碼 (read 事務)，BINBLOCK編碼(read事務)，CONTAINER編碼( read事務），REGISTER編碼（read事務），MEMORY編碼（read事務）


EXECUTE事務

EXECUTE事務發送低級命令，控制与某個對象有關的文件、儀器或接口。EXECUTE用來調節文件指針，清除緩沖器，提供硬件接口低級控制。下面匯總了各种EXECUTE命令。

命令 | 說明
To File, From File
REWIND | 把讀取指針(From File)或寫入指針(To File)設置在文件的開頭，不改變文件中的數据。
CLEAR | (僅适用于To File)。擦除文件中的現有數据，把寫入指針設置在文件的開頭。
CLOSE | 明确關閉文件。适用于多個流程讀寫同一個文件的情況。
DELETE | 明确刪除文件。适用于刪除臨時文件。
Interface Operations
CLEAR | 對GPIB，通過發送DCL (Device Clear)清除所有儀器。對VXI，复位接口，運行資源管理器。
TRIGGER | 對GPIB，通過發送GET (Group Execute Trigger)觸發确定收听地址的所有儀器。對VXI，觸發指定的背板觸發線或嵌入式控制器上的外部觸發器。
LOCAL | 對GPIB，釋放REN (Remote Enable)線，把儀器置于本地模式。
REMOTE | 對GPIB，确認REN (Remote Enable)線。
LOCAL LOCKOUT | 對GPIB，發送LLO (Local Lockout)消息。在發送LLO時任何遠程儀器會鎖住前面板操作。
ABORT | 通過确認IFC (Interface Clear)線，清除GPIB接口。
LOCK INTERFACE | 在共享資源的多流程系統中，令一個流程在關鍵流程中鎖定資源供自己使用，防止另一個流程使用這些資源。
UNLOCK INTERFACE | 在一個流程已經鎖定共享資源供自己使用的多流程系統中，解鎖資源，允許其它流程訪問這些資源。
Direct I/O to GPIB
CLEAR | 通過發送SDC (Selected Device Clear)，清除Direct I/O對象地址上的儀器。
TRIGGER | 通過确定收听地址及發送GET (Group Execute Trigger)，觸發Direct I/O對象地址上的儀器。
LOCAL | 把Direct I/O對象地址上的儀器置于本地狀態。
REMOTE | 把Direct I/O對象地址上的儀器置于遠程狀態。
Direct I/O to GPIO
RESET | 通過脈沖PRESET線 (Peripheral Reset)，复位与Direct I/O對象有關的GPIO接口。
基于Direct I/O到消息的VXI
CLEAR | 通過發送字串命令Clear (0xffff)，清除与Direct I/O對象有關的 VXI儀器。
TRIGGER | 通過發送字串命令Trigger (0xedff)，觸發与Direct I/O對象有關的VXI儀器。
LOCAL | 通過發送字串命令Clear Lock (0xefff)，把与Direct I/O對象有關的VXI儀器置于本地狀態。
REMOTE | 通過在遠程狀態下發送字串命令Set Lock (0xeeff)，把与Direct I/O對象有關的VXI儀器置于本地狀態。
Direct I/O到串行接口
RESET | 复位与Direct I/O對象有關的串行接口。
BREAK | 在与Direct I/O對象有關的串行接口的Data Out線上發送一個信號，具体如下︰ 邏輯High 400毫秒 邏輯Low 60毫秒
CLOSE | 關閉与Direct I/O對象有關的串行接口的連接。在下次連接時會重建連接(如有)。
Execute Program, To/From Named Pipe
CLOSE READ PIPE | 關閉与(To/From)對象有關的讀取指明管道或与(Execute Program)有關的stdin管道。
CLOSE WRITE PIPE | 關閉与(To/From)對象有關的寫入指明管道或与(Execute Program)有關的stdout管道。
To/From Socket
CLOSE | 關閉与客戶端和服務器插座的連接。為重建連接，客戶端和服務器必須重复12-accept和connect-to協議。
Direct I/O, MultiInstrument Direct I/O, GPIB, VXI, 串行和GPIO接口操作
LOCK | 在共享資源的多流程系統中，令一個流程在關鍵區段中鎖定資源供自己使用，防止另一個流程使用這些資源。
UNLOCK | 在一個流程已經鎖定共享資源供自己使用的多流程系統中，解鎖資源，允許其它流程訪問這些資源。

GPIB詳細介紹

Direct I/O to GPIB儀器和Interface Operations使用的EXECUTE命令類似，但有一些差异。

  • Direct I/O EXECUTE命令确定接收命令的儀器地址。

  • Interface Operations EXECUTE命令可能會影響已經确定收听地址的多部儀器。

下面6個表指明了Direct I/O和Interface Operations EXECUTE事務進行的确切的總線操作。

EXECUTE ABORT GPIB操作

Direct I/O | Interface Operations
無 | IFC (>=100 囪ec)
 | REN
 | ATN

EXECUTE CLEAR GPIB操作

Direct I/O | Interface Operations
ATN | ATN
MTA | DCL
UNL |
LAG |
SDC |

EXECUTE TRIGGER GPIB操作

Direct I/O | Interface Operations
ATN | ATN
MTA | GET
UNL |
LAG |
GET |

EXECUTE LOCAL GPIB操作

Direct I/O | Interface Operations
ATN | REN
MTA | ATN
UNL |
LAG |
GTL |

EXECUTE REMOTE GPIB操作

Direct I/O | Interface Operations
REN | REN
ATN | ATN
MTA |
UNL |
LAG |

EXECUTE LOCAL LOCKOUT GPIB操作

Direct I/O | Interface Operations
無 | ATN
 | LLO

VXI詳細介紹

Direct I/O to VXI儀器和Interface Operations使用的EXECUTE命令類似，但有一些差异。基于消息的VXI儀器的參考信息也适用于I-SCPI支持的基于寄存器的儀器。

  • Direct I/O EXECUTE命令尋址基于消息的VXI儀器，接收字串命令。

  • Interface Operations EXECUTE直接影響VXI接口，可能會影響接口伺服區域內部的VXI儀器。

Interface Operations對象EXECUTE TRIGGER事務采取下面的形式︰

EXECUTE TRIGGER TriggerType Expression TriggerMode

TriggerType指定EXECUTE TRIGGER事務將使用哪個觸發組。觸發組包括︰

  • TTL - 指定VXI背板上的八條TTL觸發線。

  • ECL - 指定VXI背板上的四條ECL觸發線。

  • EXT - 指定嵌入式VXI控制器上的外部觸發。

Expression求解為代表碼型的單個Integer變量，表明對某個TriggerType將觸發哪條觸發線。取值為5(用二進制表示為101)表明觸發TTL線0和2。取值為255會觸發所有八條TTL線。TriggerMode表明确認觸發線的方式︰

  • PULSE - 在不連續的時限內(与TriggerType有關)脈沖線路。

  • ON - 确認觸發線，并保持确認狀態。

  • OFF - 從以前的ON事務确認的觸發線中去掉确認。

下面的表格指明了Direct I/O和Interface Operations EXECUTE事務進行的總線操作。

EXECUTE CLEAR VXI操作

Direct I/O | Interface Operations
字串命令Clear(0xffff) | 脈沖SYSRESET線, 重新運行Resource Manager

EXECUTE TRIGGER VXI操作

Direct I/O | Interface Operations
字串命令Trigger(0xedff) | 觸發背板上的TTL或ECL觸發線或嵌入式VXI控制器上的外部觸發器。可以為每個觸發類型指定觸發哪條線。

EXECUTE LOCAL VXI操作

Direct I/O | Interface Operations
字串命令Set Lock(0xeeff) | 無

EXECUTE REMOTE VXI操作

Direct I/O | Interface Operations
字串命令Clear Lock(0xefff) | 無


WAIT事務

有四种WAIT事務類型︰

  • WAIT INTERVAL

  • WAIT SPOLL (僅适用于Direct I/O to GPIB和基于消息的VXI儀器)

  • WAIT REGISTER (僅适用于Direct I/O to VXI儀器)

  • WAIT MEMORY (僅适用于Direct I/O to VXI儀器)

WAIT INTERVAL事務等待指定的秒數，然后才執行對象的open view中列明的下一項事務。例如，這一事務等待10秒︰

WAIT INTERVAL:10

WAIT SPOLL事務采取下面的形式︰

WAIT SPOLL Expression Sense

Expression是求解得到一個整數的表達式。這個整數將作為位掩碼使用。

Sense是一個字段，可能值有兩個︰

  • ANY SET

  • ALL CLEAR

WAIT SPOLL事務一直等到相關儀器的串行輪詢響應字節滿足某個條件。通過把串行輪詢響應与指定掩碼進行位邏輯AND運算，并把得到的位与單個試驗位進行OR運算，可以試驗串行輪詢響應。在滿足下面其中一個條件時，在WAIT SPOLL后執行事務︰

  • 事務指定ANY (ANY SET)，試驗位為真(1)。

  • 事務指定CLEAR (ALL CLEAR)，試驗位為假(0)。

下面的事務說明了使用WAIT SPOLL的一种方式︰

  • WAIT SPOLL:256 ANY 一直等到設置任何位。

  • WAIT SPOLL:256 CLEAR 一直等到清除所有位。

  • WAIT SPOLL:0x40 ANY 一直等到設置第6位。

  • WAIT SPOLL:0x40 CLEAR 一直等到清除第6位。

WAIT REGISTER和WAIT MEMORY事務采取下面的形式︰

  • WAIT REG:SymbolicName MASK:Expression Sense [Expression]

  • 或

  • WAIT MEM:SymbolicName MASK:Expression Sense [Expression]

其中︰

SymbolicName是配置VXI儀器期間定義的名稱。這個名稱指的是儀器的A16或擴展存儲器內部的某個地址。

MASK:Expression是求解得到一個整數的表達式。這個整數將作為位掩碼使用。這個掩碼值的字節數取決于已經配置SymbolicName的數据類型。

Sense是一個字段，可能值有三個︰

  • ANY SET

  • ALL CLEAR

  • *EQUAL

[Expression]是求解得到一個整數的可選的比較值。只有在Sense是EQUAL時，才使用這個整數。

WAIT REGISTER或MEMORY事務一直等到從相關VXI儀器SymbolicNames指定的寄存器或存儲位置中讀取的值滿足某個條件。

在讀取的值与MASK:Expression中指定的位掩碼進行邏輯AND運算，得到試驗值。試驗值的大小取決于為指定寄存器或存儲位置配置的數据類型。在滿足下面其中一個條件時，在WAIT SPOLL之后執行事務︰

  • 事務指定ANY (ANY SET)，試驗值至少一個位為真(1)。

  • 事務指定CLEAR (ALL CLEAR)，試驗值所有位為假(0)。

  • 事務指定EQUAL，對[Expression]中指定的比較值，試驗值的位与位相等。


SEND事務

SEND事務采取下面的形式︰

SEND BusCmd

BusCmd是下表中列出的總線命令之一。

SEND事務用于Interface Operations對象內部，通過GPIB接口傳送低級總線消息。IEEE 488.1中詳細定義了這些消息。

命令 | 說明
COMMAND | 把ATN設為真，發送指定的數据字節。ATN為真表明數据表示一條總線命令。
DATA | 把ATN設為假，發送指定的數据字節。ATN為假表明數据表示儀器相關信息。
TALK | 在指定一級總線地址(0-31)上确定發話的儀器。
LISTEN | 在指定一級總線地址(0-31)上确定接听的儀器。
SECONDARY | 在TALK或LISTEN命令后面指定一個二級總線地址。二級地址一般由卡槽式儀器使用，卡槽位于一級地址，每個插件模塊位于二級地址。
UNLISTEN | 強制所有儀器停止接听，并發送UNL。
UNTALK | 強制所有儀器停止發話，并發送UNT。
MY LISTEN ADDR | 确定接听的運行VEE的計算机，發送MLA。
MY TALK ADDR | 确定發話的運行VEE的計算机，發送MTA。
MESSAGE | 發送一條多行總線消息。詳情請查閱IEEE 488.1。多行消息包括︰ DCL Device Clear SDC Selected Device Clear GET Group Execute Trigger GTL Go To Local3 LLO Local Lockout SPE Serial Poll Enable SPD Serial Poll Disable TCT Take Control


WRITE(POKE)事務

WRITE(POKE)事務与WRITE事務非常類似，但它只适用于To/From DDE對象。WRITE(POKE)的主要差异是必須指定一個項目名稱。例如︰

WRITE ITEM:"r2c3" TEXT a EOL

允許使用下面的編碼︰

  • TEXT

  • BYTE

  • CASE

  • CONTAINER

如需与這些格式有關的更具体的信息，請查閱WRITE事務。


READ(REQUEST)事務

READ(REQUEST)事務与READ事務非常類似，但它只适用于To/From DDE對象。READ(REQUEST)的主要差异是必須指定一個項目名，例如︰

READ ITEM:"r2c3" TEXT a EOL

只有VEE for Windows才支持READ(REQUEST)事務。

支持下面的編碼︰

  • TEXT

  • CONTAINER

如需与這些格式有關的更具体的信息，請參閱READ事務。


在万維网上訪問Agilent VEE Pro

VEE网站提供了許多有用的資源。如果想訪問這些网站，請參閱VEE中的Help菜單︰

Help [image] Agilent VEE on the Web

VEE Users Group (vrf)
提供了通過數千名VEE用戶互動收集的丰富信息。您可以張貼問題，搜索技巧，找到其它VEE專家用戶。

Support
提供了各种服務，可以下載驅程和產品升級程序、技朮信息和改善生產效率的其它資源。

Instrument Drivers
為下載驅程提供了各种服務。提供的驅程包括IVI Driver、惠普/安捷倫儀器使用的VXIplug&play Driver以及Panel Driver。

Education/Training
提供了与安捷倫全球教育和培訓有關的信息。

Agilent VEE Home Page
為訪問VEE新聞、信息、應用和其它支持提供了一個中心位置。

Agilent Developers Network
提供了各种服務，可以下載驅程和產品升級程序、技朮信息、白皮書和改善生產效率的其它資源。

Agilent Technologies Home Page
可以訪問安捷倫科技新聞和信息，并鏈接到提供測量和分析解決方案的其它网站。

安捷倫主頁是︰

http://www.agilent.com

VEE主頁是︰

http://www.agilent.com/find/vee


下載儀器驅程

可以從VEE支持网站中獲得免費啟動支持。

如果想訪問VEE支持网站，參閱VEE中的Help菜單︰

Web [image] Support上的Help [image] Agilent VEE

-和-

可以從下述网站中下載驅程︰http://www.agilent.com/find/adn

這是安捷倫提供的一項免費服務，用戶可以一周七天、全天24小時獲得驅程、白皮書和其它免費服務。


Call Centers

呼叫中心

指定地点为世界上主要地区提供支持。这些呼叫中心提供免费启动帮助、联机技术支持、信息和销售帮助。请拨打本地区的电话号码。

可以在下述网站中找到联系办法：

http://www.agilent.com/find/assist


關于VEE Pro RunTime產品

VEE Pro RunTime產品為運行VEE程序提供了一個環境，它与VEE Pro開發環境是分開的。用戶不能使用VEE Pro RunTime開發程序，而可以使用VEE開發環境創建、測試、調試和保存VEE程序。然后，應在將運行VEE程序的系統上安裝VEE Pro RunTime，如控制處理器或操作測試系統。運行人員可以使用VEE程序，但不能修改VEE程序。他們只在面板視圖中查看程序。

在大多數情況下，用戶開發VEE程序的目的是幫助人們測試或監測某种東西。運行VEE程序的系統一般需要与儀器交互的接口卡。盡管可以在“沒有文檔”的情況下開發VEE程序，但用戶應該知道程序在運行時的上下文中運行時要求哪些接口卡，并應為使用程序的人員提供必要的信息。(如果有与支持的接口卡有關的問題，請与安捷倫銷售代表聯系。)

除接口卡外，運行VEE程序的系統可能需要安捷倫I/O程序庫套件(第14版或更高版本)。如需与控制儀器有關的更多信息，請參閱控制儀器。

VEE Pro RunTime產品在包含VEE Pro開發環境的同一張光盤上發售。在從VEE Pro光盤上運行setup.exe時，可以選擇安裝VEE Pro RunTime或VEE Pro開發環境。

分發VEE程序

如需了解与開發要分發的VEE程序有關的技朮，請參閱How Do I … Build an Operator Interface(“我怎樣…構建操作人員界面”)標題下的 VEE Help(“VEE幫助”)。在Preparing a program for Distribution to Others(“準備程序分發給別人”)標題下，參閱Creating a Distribution Package(“創建分發軟件包”)中的內容。如需与把程序傳送到另一個系統上運行的具体信息，請參閱包括需要的全部文件。

非常重要

用來運行程序的VEE Pro RunTime版本不得低于開發程序使用的VEE版本。

安捷倫I/O程序庫版本必須兼容開發程序使用的VEE Pro開發環境版本，并兼容VEE Pro RunTime。(對VEE 7.5，需要使用安捷倫I/O程序庫套件第14版或更高版本。) 為保証這种兼容能力，應使用与VEE一起發售的安捷倫I/O程序庫。如果使用從安捷倫网站上下載的補丁程序升級VEE，一定要檢驗安捷倫I/O程序庫是否兼容。

備注

Agilent VEE Pro許可允許不受限制地安裝和分發VEE Pro RunTime及与VEE Pro產品一起提供的安捷倫I/O程序庫。在分發VEE程序時，可以在用戶所在公司的內部或外部系統上安裝VEE Pro RunTime和安捷倫I/O程序庫。

另請參閱

VEE Pro RunTime系統要求請參閱VEE Pro RunTime的系統要求。安裝說明請參閱安裝VEE Pro RunTime。配置說明請參閱配置VEE Pro RunTime。


VEE Pro RunTime系統要求

VEE Pro RunTime的最低系統要求是︰

.NET Framework 2.0

PC，采用Pentium 120 MHz處理器 (推荐采用266 MHz Pentium II或更高的處理器)

Windows 2000(SP4)或Windows XP(SP1)操作系統

Windows 2000/ Windows XP需要48 MB RAM

空閑硬盤空間︰最低70 MB (安裝MATLAB和教程時需要105 MB)

光驅

15英寸監視器800x600 SVGA (推荐采用17英寸1024x768 Ultra VGA或更大的監視器)

PC鍵盤

兩鍵鼠標 (如果有第三個按鍵，這個按鍵不使用)

希望的儀器、接口卡和需要的其它外設


安裝VEE Pro RunTime

在開發VEE程序后，您可能希望在其它系統上運行這些程序。VEE程序不是自含式.exe文件。運行VEE程序的任何系統上必須安裝一個VEE版本。當然，可以使用整個VEE Pro開發環境運行VEE程序，但VEE Pro RunTime為這些?#32431;運行?#31995;統提供了更加經濟的方案。

本文介紹了怎樣在還沒有安裝VEE的Windows系統上安裝VEE Pro RunTime。

備注

VEE Pro所有者對VEE Pro RunTime產品擁有不受限制的安裝和分發權。在分發VEE程序時，您可以在公司內部和外部的系統上安裝VEE Pro RunTime。您可能需要為程序提供安裝說明。

VEE Pro開發環境可以安裝在VEE Pro軟件許可協議和使用許可允許的系統上。

注意，您必須擁有系統管理員權限，才能在運行Windows 2000或Windows XP操作系統的計算机上安裝VEE Pro RunTime。

為開始安裝，先運行Windows，停止所有程序。把光盤插入光驅中，等待自動開始安裝。這時會發生下面其中一种情況︰

1. 監視器上出現一個屏幕，允許安裝開發環境或運行時環境。

選擇運行時環境，然后根据屏幕提示，安裝環境。

2. 光盤安裝流程沒有自動啟動。因此，您必需運行下述命令，開始安裝運行時環境︰

e:\runtime\setup.exe

上述命令假設光驅是E:驅動器。為運行這個命令，在Windows任務條中選擇Start按鈕，然后選擇Run，輸入命令。


配置VEE Pro RunTime

運行時環境是為運行程序、而不是開發程序設計的。因此，在只安裝了VEE Pro RunTime的系統上，不能存取VEE主窗口和工作空間。一般在VEE主窗口中通過菜單選擇存取的VEE環境特點必須使用不同于VEE Pro RunTime的机制進行設置。通過命令行選項可以存取兩個重要的配置區域。這些特性還作為圖標在Agilent VEE Pro 8.0 RunTime Config Start菜單組中提供。

為修改儀器配置，運行下述命令︰

veerun.exe -ioconfig

這會運行VEE Pro RunTime，打開Instrument Manager，允許用戶改變和保存I/O配置。在程序沒有嵌入式I/O配置時，這一功能非常重要。

為修改Default Preferences，運行下述命令︰

veerun.exe -prefconfig

這會運行VEE Pro RunTime，打開Default Preferences對話框，允許用戶改變和保存默認首選項。可能對RunTime用戶非常重要的部分設置包括︰

Web Server配置

執行模式 (主要用于遠程用戶函數)

在運行前檢查儀器地址

在運行前刪除變量

打印配置

顏色和字体 (如果沒有与程序一起保存的話)

備注

在同時配有VEE Pro和VEE Pro RunTime的系統上，兩個版本可以共享相同的配置設置，也可以不共享相同的配置設置。如果當前用戶設置了HOME環境變量，兩個VEE版本將在該 HOME目錄中查找配置文件。這意味著它們擁有相同的默認首選項等等。如果當前用戶沒有HOME環境變量，那么VEE Pro和VEE Pro RunTime會在不同地方存儲配置數据。在這种情況下，必須單獨設置每個版本的配置。

如果Instrument Manager或Default Preferences對話框沒有落在VEE窗口內，那么還可以使用-geometry選項，放大VEE或VEERun窗口。如需更多信息，請參閱使用命令行選項啟動Agilent VEE。


關于VEE Express 8.0

Agilent VEE Express 8.0 是 Agilent VEE Pro 8.0 的一個子集。

下表顯示了Agilent VEE Pro 8.0 和 Agilent VEE Express 8.0的區別。

Features |  | Agilent VEE Pro 8.0 | Agilent VEE Express 8.0
Interfaces | GPIB, LAN, RS-232,VXI, PXI, SCXI | 支持 | 不支持
 | USB | 支持 | 支持 (只支持已通過USB接口連接且已加電的安捷倫設)
MatlabScript 對象和 MatlabScript 引擎 |  | 支持 | 不支持
創建Agilent VEE 程序的運行版本和 Agilent VEE 對象的安全版本 |  | 支持 | 不支持
運行時動態修改儀器地址 |  | 支持 | 不支持
可調用服務器功能，即將按捷倫VEE 作為一個ActiveX Automation 服務器來調用 |  | 支持 | 不支持
遠程函數調用功能, 即調用一個運行在遠程主机上的Agilent VEE 進程中的UserFunction |  | 支持 | 不支持
其它功能 |  | 支持 | 支持

Note

Agilent VEE Express 8.0 只支持 Agilent USB 儀器。如需對其他儀器的支持，請升級到或購買Agilent VEE Pro。 注意使用Agilent VEE Express 8.0不能程序化地改變儀器屬性，如儀器地址。

Agilent VEE Express 8.0 不支持MatlabScript對象。 不能添加新的 MatlabScript 對象到一個程序或是運行一個帶有 MatlabScript對象的程序。但是打開帶有MatlabScript對象的程序。

使用VEE Express 8.0，不能把 Agilent VEE 程序，UserObjects 和 UserFunctions存為運行或安全版本，但是打開一個VEE程序的 RunTime 版本，也能將一個安全版本的UserObject 或 UserFunction導入一個VEE程序中。

如需使用 Agilent VEE Express 不支持的功能，請購買或升級到Agilent VEE Pro。


VDC數組格式

許多VEE數据容器把數据封裝在數組中。在VEE中，Build Coordinate之類的對象把您与這些數組的內部結構隔開。在VEE外面(如在Visual Basic客戶端中)，必須正确聲明和填充這些數組，以避免錯誤或混淆。

以3D Coordinates組成的VEE 1D數組為例。您會立即看到其中一個混淆來源︰"維度"一詞用來描述兩個不同的概念。對坐標，維度是一個軸(一般稱為"X", "Y"和"Z")。對數組，維度是結構索引(一般稱為"行"和"列")。在VEE中，這個數据類型是存儲位置的一個行，每個存儲位置保留一個Coordinate。假設變量名為"MyVeeData"，第一個Coordinate是MyVeeData[0]，第10個Coordinate是MyVeeData[9]，依此類推。

由于Visual Basic沒有"3D Coordinate"數据類型，因此一個存儲位置不能保留整個Coordinate。封裝來自"MyVeeData"數組的所有數据在Visual Basic中要求一個二維數組。這個數組的行表示坐標；這個數組的列表示每個坐標的三個"X,Y,Z"值。

假設變量名為"MyVbData"，第一個坐標的Z部分是MyVbData(0,2)，第10個坐標的X部分是MyVbData(9,0)，依此類推。

其它VEE數据類型使用類似的排列。在為VEE Complex數据構建一個VB數組時，MyVbData(Element, 0)是實數部分，MyVbData(Element, 1) 是虛數部分。下面概括了相應的VEE數据類型及其數組格式︰

VDC數据類型數組格式

Complex 1D數組行是复數。
第0列是實數部分。
第1列是虛數部分。

Polar Complex 1D數組行是極坐標复數。
第0列是幅度部分。
第1列是相位部分。

2D Coordinate 1D數組行是坐標。
第0列是X部分。
第1列是Y部分。

3D Coordinate 1D數組行是坐標
第0列是X部分。
第1列是Y部分。
第2列Z部分。

Coordinate 1D數組行是坐標。
第0列是X部分。
第1列是Y部分。
第N列是第N維部分。


buildRecord()

buildRecord(fieldNameTextArray, field1, field2, fieldN)

一個對象，通過在運行時指定字段名和字段值來構建記錄。

用途

使用buildRecord()構建一個直到運行時才知道字段名和字段值的記錄。第一個參數是字段名稱的字符串數組。下面的參數是每個字段的值，這些參數的數量必須与數組長度相匹配。

buildRecord()返回一個Scalar Record及指定的字段名稱和字段值。

范例

buildRecord(fieldNameList2Long, field1, field2);

builldRecord(fieldNameList8Long, field1, field2, field3... field8);

位置

Device [image] Function & Object Browser

Type:  Built-in Functions
Category: Type Conversion
Member: buildRecord

另請參閱

Build Record


.topic 0
Click the NI button to create an NI object for the instrument currently selected.
This could be an NI-DMM, NI-SWITCH, NI-FGEN, NI-DAQ, or NI-SCOPE.

.topic 0
Launches a new VEE with the sample file loaded. Since the correct instrument address
is already configured for the instrument you selected, all you have to do is press
Run.

.topic 0
Click the IVI-COM button to  create an IVI-COM object for the instrument currently selected. (If there is no IVI-COM driver for the instrument, this button remains grayed out.)

.topic 0
When the Profiler is started, it provides comparative information about the execution time of each UserObject and UserFunction. Clicking on any column label (such as Name, or Time) displays the Profiler data sorted on that field. Clicking again reverses the sort. Double-click on any UserObject or UserFunction shown in the Name field, and its view opens in the VEE workspace.

.topic 0
When this box is checked, data is written to the data file with commas as delimiters (separators) between the various Profiler data fields. Using comma delimiters makes it easier to import the data into some other applications, such as spreadsheets.  When this box is not checked, the data fields are aligned using multiple spaces.

.topic 0
Specifies the local directory that will be accessible to the remote Web browser. VEE uses the file index.html in the Root Directory as its home page. A default homepage is installed as ~installDir/www/index.html. This file can be modified and/or copied to a different Root Directory.

.topic 0
When OK is pressed, any changes to Default Preferences become valid for the current work session only. When you exit and restart VEE, the previous Default Preferences(saved in the "veerc" file) are restored.

.topic 0
The Fonts property allows you to choose the default font for any screen element in your VEE program.

.topic 0
The Program Explorer button shows or hides the Program Explorer window. The Program Explorer shows the hierarchical structure of the current VEE program.

.topic 0
The Delete Line button provides the Delete Line cursor, which you then click on the line to be deleted. (A handy shortcut to delete lines is Ctrl-Shift-Click.)

.topic 0
The Call Stack button aids debugging by displaying the hierarchy of UserObjects or UserFunctions invoked to reach the current paused UserObject or UserFunction. Clicking on any entry in the Call Stack dialog opens that UserObject or UserFunction in the VEE workspace.

.topic 0
Click the (Interface) Properties button to view specific details about the currently selected interface. Note that VEE cannot modify the hardware characteristics of an interface or alter the configuration performed by the operating system or the I/O Config utility. If you enter different values in any of the Interface Properties fields, you must use values that match an existing, configured interface.

.topic 0
Click the Save button to save the instrument configuration to disk and close the Instrument Manager. This overwrites the vee.io file with the current configuration.  If the instrument configuration is embedded in the program, a Save from the InstrumentManager is not necessary, because an embedded configuration is saved when the programis saved.

.topic 0
The Clear button resets all Profiler data values to 0 (zero).

.topic 0
The Number tab allows you to choose the default format for displaying numbers in your VEE program.

.topic 0
The Stop button stops execution of all program threads and closes any open files.  When a program is in the stopped state, pressing Step or Run/Resume restarts program execution from the beginning.

.topic 0
The Step Over button aids debugging by executing one primitive object at a time.  When a UserObject or UserFunction is encountered, it is executed in its entirety and is not opened into a detail view.

.topic 0
The Run button starts execution of all threads in a program. If your program has several threads, and you want to run only one of them, use a Start object to that thread instead of the Run button.

.topic 0
The Instrument Manager button provides the Instrument Manager dialog. This dialog provides convenient editing, viewing, and creating of I/O resources such as instrument transactions and drivers.

.topic 0
The Add To Panel button places the selected objects onto the panel view of the program.  If a panel view does not already exist, one is created. Panels are associated with the current context and can be nested.

.topic 0
Click the Add button to add an instrument to your I/O configuration. A manual Add operation is needed for instruments that are not discovered by the Find Instruments button. For example, RS-232 instruments or instruments connected via a LAN gateway.(An interface entry is automatically added when you add an instrument associated with that interface.)

.topic 0
The bottom line of the VEE window is a status message area. This status line shows various types of information, depending upon the current operation. For example, the program run state, error messages, pixel position of moved objects, and helpful hints.

.topic 0
Specifies the maximum time (in seconds) that the Web server will wait for VEE to respond.

.topic 0
When Enable Server is checked, VEE's built-in Web server is activated. The Web server allows you to monitor a VEE program from a remote Web browser.

.topic 0
The Step Out button aids debugging by executing one primitive object at a time. If the execution is in a UserObject or UserFunction, VEE completes execution of all objects in that UserObject or UserFunction.

.topic 0
The Pause button stops execution of all program threads temporarily. When a program is in the paused state, either Step or Run/Resume can be used to proceed with program execution from the point it was paused.

.topic 0
This field indicates the scope of the search. The default is the Entire Program.  If you want to limit the scope of a search, open the Find dialog from the ProgramExplorer by clicking with the right mouse button on a particular context, such as a UserFunction or UserObject.

.topic 0
The Save button writes the Profiler data to the file name specified using the Options button.

.topic 0
When instrument checking is enabled, VEE checks the configured instruments during prerun to verify that they are accessible. If an address does not respond, you are iven the opportunity to power-on the instrument, choose a different bus address, etc. When this box is not checked, disconnected or improperly configured instruments will probably cause a timeout error when the program is running.

.topic 0
The Show Execution Flow button aids debugging by highlighting the currently executing object(s) while the program is running. In the paused or error state, Show Execution Flow highlights all objects that have already executed.

.topic 0
The Copy button places a copy of the selected objects in the Paste buffer and on the Windows Clipboard.

.topic 0
When this box is checked (the default), the search traverses all levels of nested User Objects. If not checked, only the current level is searched.

.topic 0
Creates a Formula object to Set the value of the currently selected member (property).Place the Formula in a program context. It is simply a template which can be edited as desired.

.topic 0
Click the Plug&play Driver button to create a VXIplug&play driver object for the instrument currently selected. (A VXIplug&play driver is an industry standard API based upon VISA.)

.topic 0
The Settings dialog controls some of the actions performed during instrument discovery.  If Detect only is selected, the Find Instruments button simply detects whether a device is present at each bus address. If Detect, identify, and configure... is selected, the Find Instruments button also performs an identification and driver configuration for each instrument detected. If Ask before sending... is checked, a confirmation dialog is presented before *IDN? is sent to identify each instrument. If not checked, *IDN? is sent to all instruments without operator confirmation. You may want the confirmation dialog if your system contains old, non-IEEE-488.2 instruments.

.topic 0
When this box is checked, Profiler data is shown only for those UserObjects and UserFunctions that executed.

.topic 0
Specifies the file path to the http.log file. This file records all incoming requests processed by the Web server and can grow without bounds.

.topic 0
When Binary RunTime File Format is checked, .vxe files are saved using a binary formatwhich gives improved security and smaller file size. When this box is not checked, .vxe files are stored in ASCII format (similar to .vee files).

.topic 0
When this box is checked, the Find text must match the entire field of the text being searched.

.topic 0
When this box is checked, a match is reported if the Find text occurs at the end of the text being searched.

.topic 0
Specifies the number of pixels placed between objects when you perform an Edit  Align... operation. This Alignment Spacing value is used only when Space Equally is enabled.

.topic 0
The New button clears the VEE workspace. You will be prompted if there are any unsaved changes in the current program.

.topic 0
The Default Preferences button provides the Default Preferences dialog. This dialog has six tabs containing many and varied customizable VEE settings.

.topic 0
The Property buttons can be used to constrain the search according to various object properties. Once a Property is selected, specify the desired constraint in the Value column. For example, if you select Breakpoint/On, then only objects with active break points are searched.

.topic 0
This field specifies the number of digits displayed to the right of the decimal point.

.topic 0
The Trig Mode selection chooses the default trigonometric units used in the program.  Radians are VEE's default (and fastest) units.

.topic 0
When Reset is pressed, any pending changes to Default Preferences are discarded, and the previous Default Preferences (saved in the "veerc" file) are restored.

.topic 0
Specifies the magnification used when printing a VEE program. Smaller numbers create a smaller image. The value you specify might be rounded by some printer drivers.

.topic 0
The Toggle Breakpoint button aids debugging by setting or clearing execution breakpoints at the selected objects. A breakpoint on an object pauses program execution immediately before that object. Breakpoints can also be accessed in the Object Menu Properties.

.topic 0
The Start Profiling button is a toggle function that starts or stops profiling.

.topic 0
Profile data is collected whenever the Profiler is running, but the data displayed in the dialog box is not updated automatically. You must click the Refresh button to cause the Profiler to display the latest profile data.

.topic 0
The Step Into button aids debugging by executing one primitive object at a time.  When a UserObject or local or imported UserFunction is encountered, VEE puts it into its detail view and executes each object in that view.

.topic 0
This area displays the run state of the program. Indicators are: Blank, Ready (stopped), Green Arrow Running, Yellow Bars Paused, Red Bars Error

.topic 0
The Function & Object Browser button provides the Function & Object Browser dialog.  This browser provides convenient access to various math operations, objects, and properties.

.topic 0
Creates a Formula object for the currently selected function or operator.  Place the Formula in a program context. It is simply a template which can be edited as desired.

.topic 0
This field indicates if the currently loaded program has any unsaved changes (modifications).When the box is "grayed out," no unsaved changes are pending.

.topic 0
This field shows the Execution Mode of the currently loaded VEE program. ExecutionMode allows newer versions of VEE to run older VEE programs with complete backwards compatibility. The possible modes are VEE 3, VEE 4, etc. up through the current VEE version. Execution Mode is saved with the VEE program and can be changed in the Default Preferences dialog.

.topic 0
This field specifies the file name where Profiler data is saved. Click this field to bring up the Save data filename dialog box.

.topic 0
The Appearance Property Group allows you to choose the default color for any screen element in your VEE program.

.topic 0
The Object Type property constrains the search to objects of the type(s) selected in the Value list. The default is all object types. To constrain the search, click the Value button and check or uncheck the desired types. Select All and Clear All buttons are provided for convenience.

.topic 0
Creates a Formula object to Get the value of the currently selected member (property).Place the Formula in a program context. It is simply a template which can be edited as desired.

.topic 0
Click the Component Driver button to create a Component Driver object for the currently selected instrument. (A Component Driver is an efficient link to one component of an instrument's Panel Driver.)

.topic 0
Click the (Instrument) Properties button to view or modify the I/O-related properties of the currently selected instrument. The interface type determines the set of properties available. For example, RS-232 instruments have a Properties field for setting the Baud rate, while GPIB instruments have a Properties field for setting the bus address.

.topic 0
If Detect only is selected, the Find Instruments button simply detects whether a device is present at each bus address. If Detect, identify, and configure... is selected, the Find Instruments button also performs an identification and driver configuration for each instrument detected.

.topic 0
The Options button brings up the Profiler Options dialog box. These options customize the format of displayed and saved data.

.topic 0
When this box is checked, the printout includes an open view of all nested UserObjects.

.topic 0
When Print Cover Page is checked, a cover section is generated at the beginning of the printout. This default format choice can be overridden in the Print Program dialog.

.topic 0
The Open button loads a program file into the VEE workspace, replacing any existing program. You will be prompted if there are any unsaved changes in the current program.

.topic 0
The Cut button deletes the selected objects and places them in the Paste buffer and on the Windows Clipboard.

.topic 0
The Find button provides a dialog box used to search for text strings and certain object properties in your VEE program. Various search properties, such as Match Case and Object Type, can be used to constrain your searches. To limit the scope of a search, open Find from the Program Explorer by clicking a specific context with the right-hand mouse button.

.topic 0
The Configure Drivers button identifies the selected instrument and configures any available VXIplug&play and Panel Drivers for that instrument. (Only IEEE 488.2 (and most VXI) instruments can be identified.)

.topic 0
Click the Direct I/O button to create a Direct I/O object for the instrument currently selected. (A Direct I/O object allows low-level transactions with the instrument.)

.topic 0
Click the OK button to save the instrument configuration in an internal cache and close the Instrument Manager. The current configuration is used by the program, but is not yet saved to disk.

.topic 0
When Disable Debug is checked, all debugging features are disabled, giving the fastest program execution speed.

.topic 0
When Auto Line Routing is checked, the lines between objects are automatically rerouted when an object is connected, moved, or resized. Auto-routing uses only horizontal and vertical lines, and gives the same results as Edit -> Clean Up Lines. When auto-routing is off, lines are drawn directly from pin to pin, often diagonally.

.topic 0
The Profiler button provides the Profiler dialog. The Profiler provides comparative information about the execution time of each UserObject and UserFunction.

.topic 0
The Print Screen button sends the visible contents of the VEE window to a printer.  To configure the printer, use File -> Print Screen.

.topic 0
When the root node is selected, click the Find Instruments button to search for available interfaces and instruments. When a specific interface is selected, click this button to search for all instruments connected to the selected interface. The exact operations performed by the Find Instruments button are controlled by the Settings dialog.

.topic 0
The Print button brings up a standard Windows Print dialog. The Instrument Manager printout is a bitmap dump of the full Instrument List tree view.

.topic 0
This field indicates if Profiling is currently enabled. When the box is "grayed out, "profiling is stopped.

.topic 0
When this box is checked, each printout page is given a page number and other header information, and an Index is generated at the end of the printout.

.topic 0
Sets the speed at which the Data Flow markers move. Select a rate from 1 to 10. The default is 6 and the fastest is 10.

.topic 0
Save colors and fonts with program saves all the default colors and fonts in the program file that are selected in the Default Preferences dialog box. This ensures that whoever opens your program will also get all of your default colors and fonts.  If this option is not selected, only the colors and fonts explicitly set in your program are saved in your program file. This allows others using your program to retain their own default colors and fonts. If an existing program is loaded, the option is set according to how the program was saved previously.

.topic 0
This field indicates if the VEE Web Server is currently enabled. When the box is "grayed out," the Web Server is disabled. The VEE Web Server is controlled in the Default Preferences dialog.

.topic 0
Specifies the port number used by VEE's Web server. This port number must be allocated in your system's services file and must not be used by any other Web server.

.topic 0
When Delete Variables at PreRun is checked, the values stored in all variables are deleted before each program runs. Therefore, Get Variable objects will error if their values have not been properly set. When this box is not checked, Get Variable objects can access old data left from the previous program run. Such old data may or may not be valid for the new program run.

.topic 0
Save I/O configuration with program saves the veeio I/O configuration information with the program file, and not in the veeio resource file. The configuration information is specified in the Instrument Manager. If this option is not selected, the current program's configuration information is saved in the veeio file. If an existing program is loaded, the option is set according to how the program was saved previously.

.topic 0
The View Variables button displays a list of all variables that are currently defined.  Double-click a variable's name to view details such as type, shape, and data values.

.topic 0
When this box is checked, the search is constrained to exact matches of the letter-case specified in the Find line. The default is off, which treats upper-case and lower-case letters as equal.

.topic 0
Click the Remove button to delete an instrument entry from the I/O configuration.(An interface entry is automatically removed when all the instruments associated with that interface are removed.)

.topic 0
When this box is checked, a match is reported if the Find text occurs anywhere in the text being searched.

.topic 0
When this box is checked, all matches are reported for each object. The default is off, which reports only the first match found for each object.

.topic 0
Creates a Call object for the currently selected function. Place the Call in a program context. It is simply a template which can be edited as desired.

.topic 0
When this box is checked, each click of the Save button overwrites the data previously saved in the Profiler data file. When this box is not checked, each Save appends to the existing data.

.topic 0
When this box is checked, the printout includes a detailed view of each object in the program. All but the simplest objects are printed in open view form.

.topic 0
When Save is pressed, any changes to Default Preferences become valid for the curren work session and are saved in the "veerc" file. When you exit and restart VEE, the new saved Default Preferences are used. (The exact path to the "veerc" file is system dependent.)

.topic 0
When Print Header and Index Page is checked, each printout page is given a page number and other header information, and an Index is generated at the end of the printout.  This default format choice can be overridden in the Print Program dialog.

.topic 0
When Print Program Explorer is checked, the printout includes the overview information contained in the Program Explorer window. This default format choice can be overridden in the Print Program dialog.

.topic 0
The Find Results button displays the results from the most recent Find search. You can change the sorting order of a column by clicking on the column header.

.topic 0
Enter the text string you want to find in your VEE program. If you leave this line blank, the search will match any text.

.topic 0
When this box is checked, a match is reported if the Find text occurs at the beginning of the text being searched.

.topic 0
Click the Remove button to delete an instrument entry from the I/O configuration.(An interface entry is automatically removed when all the instruments associated with that interface are removed.)

.topic 0
When this box is checked, the printout includes the overview information contained in the Program Explorer window.

.topic 0
When this box is checked, a cover section is generated at the beginning of the printout.

.topic 0
When Print I/O Configuration is checked, the printout includes the expanded treeview of the I/O configuration (from the Instrument Manager). This default format choice can be overridden in the Print Program dialog.

.topic 0
The B&W Printer Darkness setting allows you to choose a shade of gray for each screen element in your VEE program. This shade of gray is used when you print the program on a non-color printer. (The settings in the Appearance Property Group are used for a color printer.)

.topic 0
The Show Data Flow button aids debugging by visually indicating the route that data takes through the program. The speed of the small square data marker is set in the Default Preferences   General tab, Debug area.

.topic 0
The Save button writes the current program to the previously specified file name.  Save uses the file shown in the VEE window title bar. If this is a New program that has not been saved previously, you will be prompted for a file name. To change filenames, use File -> Save As.

.topic 0
When this box is checked, the printout includes the expanded tree view of the I/O configuration (from the Instrument Manager).

.topic 0
If Ask before sending... is checked, a confirmation dialog is presented before *IDN? is sent to identify each instrument. If not checked, *IDN? is sent to all instruments without operator confirmation. You may want the confirmation dialog if your system contains old, non-IEEE-488.2 instruments.

.topic 0
The Paste button places a copy of the Paste buffer onto the VEE workspace. You can Paste objects that were accidentally Cut, and connections to those objects will be restored.

.topic 0
The Reset button restores the default Property/Value list, which is all object typeswith no constraints.

.topic 0
This browser presents functions and objects in a hierarchical arrangement. Choose the broad classification from the left column, the sub-category from the middle column, and the specific function or object from the right column. Then click one of the Create... buttons (or double-click the selection) to create a VEE object from your selection. Place this VEE object in a program context and edit it as desired.

.topic 0
Displays Help for the currently selected function or object (not Help about the Browser).

.topic 0
Click the Panel Driver button to create a VEE Panel Driver object for the currently selected instrument. (A Panel Driver is the full-featured graphical simulation of an instrument's front panel.)


.NET和COM

以互動方式使用.NET對象和COM對象意味著必須理順這兩种對象在存儲器中的存在方式。.NET對象裝在被管理的存儲器中，由CLR控制，在運行時可以按需移動，提高性能。COM對象裝在沒有管理的存儲器中，其指針指向存儲器中不移動的位置。

由于這兩种對象管理存儲器的方式有很大差异，因此需要一個包裝器，幫助他們進行通信。下圖說明了.NET怎樣使用包裝器，在兩個透明對象之間通信。這兩個包裝器是.NET Framework中COM互通策略的基礎。如果想深入地、可以理解地考察Runtime Callable Wrapper和COM Callable Wrapper，請參閱Mike Gunderloy在MSDN中發表的文章，題為“從.NET客戶端中調用COM組件”和“從COM組件中調用.NET組件”。


Error 300

<n>號輸入端沒有連接。

解決辦法

在三种不同的情況下可能會獲得這一錯誤信息︰

1. 數据輸入端沒有連接。

必須連接一個對象上的所有數据輸入端之后，才能運行程序。找到導致錯誤的對象(帶有紅色外框的對象)，完成必要的連接。

2. 在UserObject/UserFunction上，輸出端的一個內部端沒有連接。

在錯誤信息提到一個輸出緩沖器的輸入端時，您可能會在UserObject怯煲erFunction上得到這一信息。這表明一個輸出端的內部端沒有連接到UserObject怯煲erFunction內部的一個對象上。必須連接輸出端的所有內部端之后，才能運行程序。

為确定哪個端沒有連接，查看UserObject的open view怯煲erFunction的編輯視圖。從Properties Window中，選擇Show Terminals，查看端區域。

3. 導入UserFunction時。

如果在導入UserFunction時獲得這一信息，那么UserFunction內部的一個對象有一個輸入端沒有連接。您需要通過File [image] Open File [image] Merge Library加載UserFunction，修改UserFunction，然后保存UserFunction。打開以前的程序，運行程序；將正确導入UserFunction。


Error 810

仪器驱程错误<n>: <description>
如需进一步信息，请参阅仪器手册

解决办法

仪器已经发生错误。这个错误表明仪器错误从仪器传送到仪器驱程中，然后又传送到VEE中。

例如，错误可能类似于：
Instrument driver error 1051: Device xxx reported error nnn

"xxx" - 是为I/O [image] Instrument Manager下的仪器指配的名称

"nnn" - 是仪器中的错误信息，可以查阅仪器手册，确定实际错误。仪器手册将提供详细的信息。


Error 811

发生I/O错误或超时

解决办法

在VEE不能与仪器通信时会发生这种错误。通常可以采取下面的操作解决这个问题：

仔细检查是否插好并打开仪器。

检查电缆连接，确认电缆插牢。

确认I/O地址正确。

在使用仪器驱程时，确认为仪器指定了正确的驱程文件。

备注

如果传送大量的数据或仪器速度很慢，可以通过I/O [image] Instrument Manager提高超时值。


Error 851
主机<名称>上没有Service Manager。

解决办法

不能启动Service Manager，在下述情况下会得到这条错误信息：

1. Service机器没有启动Service Manager。

对Windows NT上运行的程序:

Service Manager是VEE安装目录下名为veesm.exe的控制台程序。从Start菜单下使用Run运行这个程序：

"C:\Program Files\Agilent\VEE 5.0\veesm.exe"

如果愿意，可以把Service Manager放在Startup组下，以在Windows开始运行时自动启动这个程序。设置快捷方式属性，以便Service Manager在运行时最小化。


Error 906
带反馈的线程要求START对象

解决办法

反馈允许设置初始值或从以前的循环迭代中存取值。

为使用反馈，必须把Start对象连接到反馈循环中的一个对象上，指明应先执行哪个对象(或子线程)。


Error 910
流程超出内存容量，立即保存程序

解决办法

立即把程序另存为不同的文件名。

对Windows NT上运行的程序：

程序已经用尽了所有可用的交换空间。

一个可能的原因是程序分配了非常大的数组或记录，并在所有结构上执行操作。在这种情况下，您可能要修改程序，只在部分结构上执行操作。

否则，您需要分配更多的交换空间，然后才能运行用完所有交换空间的VEE程序。

在Windows NT上：在My Computer上按鼠标右键，选择Properties。 选择Performance栏，选中Virtual Memory按钮，调节虚拟内存设置。


Error 935
在反馈周期内部要求Junction。

解决办法

在VEE 4 (或更高的)兼容模式下，在反馈周期内部要求一个Junction对象，而不再要求Start对象。

范例请参阅安捷伦VEE高级编程技术手册附录A。


Error 937
没有为Sample & Hold提供任何数据。

解决办法

已经到达Sample & Hold对象的XEQ端，但对象中没有包含数据，因此没有要输出的数据。改变程序，确保在执行XEQ端以前把数据发送到Sample & Hold对象。只在VEE 4 (或更高的)兼容模式下生成这一错误。


Error 938
VEE不能汇编这部分程序。

解决办法

在VEE 3.x和较老的版本中，可能会交叉迭代对象。它不定义执行对象，但会受到连接顺序影响。这也适用于在VEE 3兼容模式下运行的程序。

在VEE 4.x和较新的版本中，在兼容模式设为VEE 4 (或更高)时，只允许使用通过Junction对象交叉的循环。任何其它交叉循环都会生成这种错误。

如需更多信息，请参阅安捷伦VEE高级编程技术手册附录A。


Error 939
在线程连接到输入端时不能推送START。

解决办法

有一个UserObject或UserFunction包含Start对象，在按Start时试图运行与上下文以外生成的数据相关的线程。由于在按Start时只执行上下文内部的对象，因此数据丢失会阻止执行一个或多个对象；数据丢失会生成这种错误。只有VEE 4 (或更高的)兼容模式下才会生成这种错误。

解决方案包括：

为对象提供数据。临时断开来自UserObject或UserFunction输入端的输入，把它们连接到Constant对象或输出数据的其它对象上。或使用一个Junction提供初始值。

把其放在单独的UserObject中，让其自行运行，把试图调试的线程段分开。


Error 940
非法反馈形式。

解决办法

在没有迭代器的情况下存在反馈循环时，在VEE 4 (或更高的)兼容模式下会生成这个错误。由于没有迭代器，因此不能完成反馈循环。

可以在程序中插入一个迭代器完成循环，也可以去掉Junction对象，消除反馈。


Error 941
必须在T2之前激活T1。

解决办法

在VEE 4 (或更高的)兼容模式下，必须在下面的数据输入端(T2)之前执行Timer对象最上面的数据输入端(T1)。可以切换线路连接(在T1和T2之间)，也可以改变程序逻辑，以正确的顺序执行各端。


在 Agilent VEE 8.0 中修复的錯誤

ID | 描述 | 出錯的版本
27961 | VSE: Junction 對象在不應該的時間，傳遞了 NULL。如果它被引用為非空 non-nil, 以后的表達式會 VSE 。 | 7.52
28140 | VEE 將陷入死循環如果我們改變DropDownList中的值。 | 7.52
28234 | 在Instrument Manager 刪除儀器會產生VSE。 | 7.52
28141 | 用戶可以控制已經被鎖住的DropDownLists | 7.52
27672 | 產生VSE，如果傳入一個不是3的參數給savePanelImage。 | 7.52
28508 | 錯誤的消息代碼︰允許刪除沒有連接的儀器 。 | 7.52
28110 | 不能導入一個用日語命名的UF。 | 7.52
28362 | 雙擊XYTrace上的 "scales"控制節點會產生VSE。 | 7.52
27997 | 在動態的IO Active X 控件中無法顯示USB接口。 | 7.52
28118 | 在程序停止時，VEE 應該自動為 .NET 對象調用 Dispose。 | 7.52
28479 | 范例程序︰Games\Starveego\network 中輸出不匹配。 | 7.52
28225 | 當創建 .NET 控件的事件句柄時，彈出錯誤 401。 | 7.52
28278 | 編輯文本數組會導致VEE死机。 | 7.52
28130 | 不能在.NET operation builder中使用轉義字符。 | 7.52
28151 | 選擇或刪除多個 RecordField 數据會導致VEE停止工作。 | 7.52
28107 | 如果使用SYSTEM選項中的GetFile(path)方法，在日語環境中不能得到正确完整的文件名。 | 7.52
27776 | 運行很多次測試之后，USB儀器會超時。 | 7.52
27871 | NI DAQ驅動不能導入 Toolkit Driver Session wizard。 | 7.52
27811 | 打開一個有embedded IO的文件會導致死循環。 | 7.52
28087 | 移動List Box會改變其中的文字的格式。 | 7.52
28285 | Program Explorer 里顯示重复的變量名。 | 7.52
28235 | 在彈出的"adding instrument"對話框中，點擊取消按鈕將導致出現“unexpected error”信息框。 | 7.52
28204 | 在 formula 中把儀器的地址改為 0 不能使儀器狀態變為 "live mode off"。 | 7.52
28187 | 不該自動產生一個名字是“Result”的輸出端。 | 7.52
28295 | 在 Record 常數中用 Coord 類型的數据將產生VSE。 | 7.52
28155 | Concatenator不能整合兩個或以上的不同整形的常數。 | 7.52
27702 | 在 VEE 聯机幫助里缺少儀器的例子。 | 7.52
28089 | 如果改變了一個已聲明變量的數据類型，在關閉VEE的時候沒有提示。 | 7.52
28311 | DExplore 繼續存在即使退出VEE。 | 7.52
28049 | "Declare Variable" & Real64 的行為古怪。. | 7.52
28158 | DateTime.Compare 對象的輸入端跟formula不匹配 | 7.52
27665 | 如果在NIDAQ SCAN_Start()方法中運用异步或緩存的數据將導致VSE。 | 7.51
28457 | PageUp會在FOB中導致錯誤。 | 7.51
28379 | 顯示或是隱藏一個PRC或是DLL的函數導致VSE | 7.51
27293 | 在編輯時，.NET Op Builder 的數据類型檢查需要放松。 | 7.51
27179 | COM類型的轉換沒有運用QueryInterface。 | 7.51
27668 | 錯誤514︰在方法复原中數据溢出 | 7.51
27696 | 很多次循環之后，IVI-COM對象會轉變為一個System.__ComObject對象 | 7.51
27574 | 如果驅動的前綴跟軟件模式名字不匹配，VEE不能自動找到IVI-COM驅動。 | 7.51
27135 | VEE不能處理重疊，NI-MAX分配的儀器地址... | 7.51
27438 | Description Indicator 不清晰。 | 7.51
27126 | IVI-COM例子引入了很多無關的信息. | 7.51
27650 | 當加入一個USB或是TCPIP儀器，顯示重复的信息。 | 7.51
28268 | 當讀取文本且dimSizeBlock 為0時，在 iopath.m 的 mod zero 會導致VSE。 | 7.5
28200 | 當導入一個.NET類型的控件庫VEE產生錯誤提示。 | 7.5
27635 | 不能复制/粘貼一個NIDAQ對象。 | 7.5
27674 | LockPosition 的聯机幫助仍然指向 Lock Panel Position 屬性，已經過時了。 | 7.5
23402 | Vxipnp & DllFunc 不能完全的支持 UInt8 (被轉換為 Int16 )。 | 7.0
23296 | DynamicFindRemoteInstruments.vee范例只能查找到連接在GPIB上的儀器，找不到連接在LAN上的。 | 7.0
28333 | 在contextView.m中打印一個儀器名超過200的會導致VSE。 | 7.0
27684 | VSE當一個 VEE 彈出面板擁有焦點，一個 .NET 對話框彈出，且程序停止 - kbdFocusView = freed id from popupPanel。 | 7.0
27990 | 當 XY trace 執行后，才把它加入面板，且該 XY trace 擁有焦點時，退出VEE會產生 VSE。 | 7.0
27889 | 當取消對一個在選擇過程中出錯的對象的選擇時，會出現 VSE。比如，一個指向非法bmp / jpg的 Picture 對象。 | 7.0
27571 | 要重新啟動VEE才能看到在IO庫中做的改變 | 7.0
28421 | VEE顯示錯誤的IO錯誤信息。 | 7.0
26948 | .net改變了浮點類型錯誤控制的行為。 | 7.0
28378 | 沒有針對TCPIP和USB的儀器的SRQ或RQS方法。 | 7.0
27770 | 在一個 UO 的上級上下文不可見時 Undo 對它的 Cut 時會在 PropGrid 中出現錯誤的值。 | 7.0
23994 | 不能編輯 Real64 Input 和 Int32 Input 對象的 Value Constraint Field。 | 7.0
27656 | VSE loading corrupt save file 'Cannot create views for component' parsing viewFor/devCarrierFor dd with no NPort devId 'dd'。 | 7.0
28079 | 在UO中雙擊iconized PCall會導致VSE。 | 7.0
28030 | 在Record屬性中有重复的int16數据類型。 | 6.2
28097 | vee.io中GPIB的网關名字超過32個字節會導致VSE。 | 6.0
27998 | 在一個庫中點擊Call user function object會轉到一個錯誤的庫中。 | 6.0
27494 | VSE，在 runtime 彈出面板上的一個對象被釋放后，它的上下文菜單會發出 MENUPICKEVENT。 | 6.0
27596 | UInt8數組有時給出錯誤結果。 | 6.0
27463 | 在程序運行或是停止的狀態下，File->Create Runtime Version 應為不可用狀態。 | 6.0
27838 | VSE，UO 名字有效但卻在當NameSpace中有重复， UserObject -> "Make UserFunction"會發生 VSE。 | 5.0
27687 | VSE，當把 sort() 用于一個rec of rec of array時，會出現 Internal 'compareValues not defined for this type' | 5.0
27729 | 在暫停狀態下且有一個 PopupPanel 時，按下F1會導致 VSE， PopupPanel 不能識別 selectList。 | 5.0
27799 | VSE，當交互地刪除一個帶有 Global-Scope 的聲明變量的子 UO 的 UO 時，會出現 VSE。 | 4.0
27683 | VSE 當 veerun 停止時，釋放帶有全局 DeclVar 的子 UO 的 UO 時，會出現 VSE。 | 4.0
28411 | IODevCreate.m 有內存泄漏。 | 4.0
27544 | Veesm 不能連接一個名字以數字開頭的服務器。 | 3.0
27573 | Sequencer 變量 "thisTest" 中不存在于 EnabledIf 的表達式中（幫助文件中說存在），除非你打開再點擊“OK”。 | 3.0
27608 | VSE 在報告代碼為 950-999 的錯誤時，應該給出一些類似 “不要做這些操作”的信息。 | 3.0

VSE: VEE 嚴重錯誤。


HC_BrowserCall

为当前选择的函数创建一个Call对象。把Call放在程序上下文中。它是一个可以按需编辑的模板。


HC_BrowserFormula

为当前选择的函数创建一个Formula对象。把Formula放在程序上下文中。它是一个可以按需编辑的模板。


HC_BrowserGet

创建一个Formula对象，Get当前选择的成员的值(属性)。把Formula放在程序上下文中。它是一个可以按需编辑的模板。


HC_BrowserHelp

为当前选择的函数或对象显示Help(而不是与Browser有关的Help)。


HC_BrowserSelectArea

这个浏览器以层级排列方式显示函数和对象。从左栏中选择一个大类，从中间一栏中选择子分类，从右栏中选择具体函数或对象。然后点击其中一个Create...按钮(或双击选项)，从选项中创建一个VEE对象。把这个VEE对象放在程序上下文中，根据需要进行编辑。


HC_BrowserSet

创建一个Formula对象，Set当前选择的成员的值(属性)。把Formula放在程序上下文中。它是一个可以按需编辑的模板。


HC_FindAllMatches

在复选这个框时，将报告每个对象的所有匹配项。默认值为关闭，只报告每个对象找到的第一个匹配项。


HC_FindMatchCase

在复选这个框时，搜索限定为Find一行中指定的大小写字母都要完全匹配。默认值为关闭，即大写字母和小写字母视为相同。


HC_FindNested

在复选这个框时(默认值)，搜索会横贯所有级别的嵌套User Objects。如果没有复选这个框，那么只搜索当前级别。


HC_FindObjectType

Object Type属性把搜索范围限定在Value列表中选择的对象类型。默认值是所有对象类型。为限制搜索范围，点击Value按钮，复选或反选所需的类型。为方便起见，提供了Select All按钮和Clear All按钮。


HC_FindOtherProperty

可以使用Property按钮，根据各种对象属性限制搜索范围。一旦选择了一个Property，可以在Value栏中指定所需的限制。例如，如果选择Breakpoint/On，那么只搜索具有活动断点的对象。


HC_FindReset

Reset按钮恢复默认的Property/Value列表，这是没有任何限制的所有对象类型。


HC_FindSearchIn

这个字段表明搜索范围。默认值是Entire Program。如果想限定搜索范围，在特定上下文上按鼠标右键，如UserFunction或UserObject，从Program Explorer中打开Find对话框。


HC_FindShowBegin

在复选这个框时，如果Find文本发生在被搜索的文本开头，那么会报告匹配。


HC_FindShowContain

在复选这个框时，如果Find文本发生在被搜索的文本的任何地方，那么会报告匹配。


HC_FindShowEnd

在复选这个框时，如果Find文本发生在被搜索的文本末尾，那么会报告匹配。


HC_FindShowExact

在复选这个框时，Find文本必须与被搜索的文本的整个字段匹配。


HC_FindTarget

输入要在VEE程序中查找的文本字符串。如果这一行留为空，搜索将与任何文本相匹配。


HC_IconAddToPanel

Add To Panel按钮把选中的对象放到程序的面板视图上。如果面板视图还不存在，那么将创建一个面板视图。面板与当前上下文相关，可以嵌套面板。


HC_IconBreakpoint

Toggle Breakpoint按钮通过设置或清除选定对象上的断点，来协助进行调试。对象上的断点恰好在对象前暂停执行程序。还可以在对象菜单Properties中存取断点。


HC_IconCallStack

Call Stack按钮通过显示为到达当前暂停的UserObject或 UserFunction而调用的UserObjects或UserFunctions的层级，来协助进行调试。点击Call Stack对话框中的任何项目，可以在VEE工作空间中打开该UserObject或UserFunction。


HC_IconCopy

Copy按钮把选定的对象放在Paste缓冲器中及Windows剪切板上。


HC_IconCut

Cut按钮删除选定的对象，把它们放在Paste缓冲器中及Windows剪切板上。


HC_IconDefaultPrefs

Default Preferences按钮提供Default Preferences对话框。这个对话框有六栏，包含许多、而且是可变的定制VEE设置。


HC_IconDelLine

Delete Line按钮提供Delete Line光标，然后可以点击要删除的行。(删除多个行的快捷方式是Ctrl-Shift-Click)


HC_IconFind

Find按钮提供了一个对话框，用来在VEE程序中搜索文本字符串和特定对象属性。可以使用各种搜索属性，如Match Case和Object Type，限定搜索范围。为限定搜索范围，在某个上下文上按鼠标右键，从Program Explorer中打开Find。


HC_IconFindResults

Find Results按钮显示最近一次Find的搜索结果。通过点击栏的标题，可以改变栏的分类顺序。


HC_IconFuncBrowser

Function & Object Browser按钮提供Function & Object Browser对话框。这个浏览器可以方便地存取各种数学运算、对象和属性。


HC_IconInstrMgr

Instrument Manager按钮提供Instrument Manager对话框。这个对话框可以方便地编辑、查看和创建I/O资源，如仪器事务和驱程。


HC_IconNew

New按钮清除VEE工作空间。如果当前程序中的任何变化没有保存，系统会给出提示。


HC_IconOpen

Open按钮把一个程序文件加载到VEE工作空间中，替换任何已有的程序。如果当前程序中有任何没有保存的变化，系统会给出提示。


HC_IconPaste

Paste按钮把Paste缓冲器的一个拷贝放到VEE工作空间上。可以Paste意外Cut的任何对象，将恢复到这些对象的连接。


HC_IconPause

Pause按钮临时停止执行所有程序线程。在程序处于暂停状态时，可以使用Step或Run/Resume从暂停点继续执行程序。


HC_IconPrint

Print Screen按钮把VEE窗口中看得见的内容发送到打印机上。如果想配置打印机，可以使用File [image] Print Screen。


HC_IconProfiler

Profiler按钮提供Profiler对话框。Profiler提供与每个UserObject和UserFunction的执行时间有关的比较信息。


HC_IconProgExplorer

Program Explorer按钮显示或隐藏Program Explorer窗口。Program Explorer显示当前VEE程序的层级结构。


HC_IconRun

Run按钮开始执行程序中的所有线程。如果程序有多个线程，您只想运行其中一个线程，那么对该对象使用Start对象，而不是Run按钮。


HC_IconRunState

这个区域显示程序的运行状态。指示符包括：

空白 准备就绪(已停止)
绿箭头 正在运行
黄条 已暂停
红条 错误


HC_IconSave

Save按钮把当前程序写入前面指定的文件名中。Save使用VEE窗口标题栏中显示的文件。如果这是一个以前还没有保存的New程序，系统会提示输入一个文件名。为改变文件名，使用File [image] Save As。


HC_IconShowData

Show Data Flow按钮以可视方式表明数据通过程序所使用的路由，来协助进行调试。在Default Preferences [image] General栏Debug区域中设置小的方形数据标尺的速度。


HC_IconShowExec

Show Execution Flow按钮在程序正在运行时高亮度显示正在执行的对象，来协助进行调试。在暂停状态或错误状态下，Show Execution Flow会高亮度显示已经执行的所有对象。


HC_IconStepIn

Step Into按钮一次执行一个图元对象，来协助进行调试。在遇到UserObject或本地或导入的UserFunction时，VEE会把它放到细节视图中，在该视图中执行每个对象。


HC_IconStepOut

Step Out按钮一次执行一个图元对象，来协助进行调试。如果在UserObject或UserFunction中执行对象，VEE会执行完该UserObject or UserFunction中的所有对象。


HC_IconStepOver

Step Over按钮一次执行一个图元对象，来协助进行调试。在遇到UserObject或UserFunction时，它会整个执行，而不会在细节视图中打开。


HC_IconStop

Stop按钮停止执行所有程序线程，关闭打开的任何文件。在程序处于停止状态时，按Step或Run/Resume，从头重新开始执行程序。


HC_IconViewVars

View Variables按钮显示当前定义的所有变量的列表。双击一个变量名称，查看类型、形状和数据值等细节。


HC_InstrMgrDlgAdd

点击Add按钮，在I/O配置中添加一部仪器。对Find Instruments按钮没有发现的仪器，需要进行手动Add操作，如RS-232仪器或通过LAN网关连接的仪器。(在添加与该接口相关的仪器时，会自动添加一个接口项。)


HC_InstrMgrDlgComponent

点击Component Driver按钮，为当前选择的仪器创建一个Component Driver对象。(Component Driver可以高效地连接仪器Panel Driver的一个组件。)


HC_InstrMgrDlgConfigDrivers

Configure Drivers按钮识别选定的仪器，为该仪器配置任何可用的VXIplug&play和Panel Drivers。(只能识别IEEE 488.2仪器及大多数VXI仪器。)


HC_InstrMgrDlgDirectIO

点击Direct I/O按钮，为当前选择的仪器创建一个Direct I/O对象。(Direct I/O对象支持仪器低级事务。)


HC_InstrMgrDlgFindInstr

在选定根节点时，点击Find Instruments按钮，搜索提供的接口和仪器。在选择某个接口时，点击这个按钮，搜索连接到选定接口的所有仪器。Find Instruments按钮执行的具体操作由Settings对话框控制。


HC_InstrMgrDlgIVICOM

点击IVI-COM按钮，为当前选择的仪器创建一个IVI-COM对象。(如果仪器没有IVI-COM驱程，这个按钮一直为灰色。)


HC_InstrMgrDlgLoadSampls

启动一个新的VEE，并加载范例文件。由于已经为选择的仪器配置了正确的仪器地址，因此您只需按Run即可。


HC_InstrMgrDlgNidaq

点击NI按钮，为当前选择的仪器创建一个NI对象。这可以是NI-DMM, NI-SWITCH, NI-FGEN, NI-DAQ, NI-SCOPE或 NI-DAQmx。


HC_InstrMgrDlgOK

点击OK按钮，把仪器配置保存在内部高速缓存中，关闭Instrument Manager。程序使用当前配置，但不会保存到磁盘中。


HC_InstrMgrDlgPanel

点击Panel Driver按钮，为当前选定的仪器创建一个VEE Panel Driver对象。(Panel Driver是仪器前面板的全功能图形仿真。)


HC_InstrMgrDlgPnP

点击Plug&play Driver按钮，为当前选定的仪器创建一个tVXIplug&play驱程对象。(VXIplug&play驱程是基于VISA的行业标准API。)


HC_InstrMgrDlgPrint

Print按钮启动一个标准Windows Print对话框。Instrument Manager打印输出是整个Instrument List树型图的转储位图。


HC_InstrMgrDlgPropertiesInstr

点击(Instrument) Properties按钮，查看或修改当前选定的仪器的I/O相关属性。接口类型决定着提供的属性集。例如，RS-232仪器有一个设置波特率的Properties字段，GPIB仪器则有一个设置总线地址的Properties字段。


HC_InstrMgrDlgPropertiesIntf

点击(Interface) Properties按钮，查看与当前选定的接口有关的特定细节。

注意，VEE不能修改接口的硬件特点，或改变操作系统或I/O Config辅助工具执行的配置。如果在任何Interface Properties字段中输入不同的值，那么必须使用与配置好的现有接口匹配的值。


HC_InstrMgrDlgRemoveInstr

点击Remove按钮，从I/O配置中删除仪器项目。(在与该接口相关的所有仪器被删除时，会自动删除这个接口项目。)


HC_InstrMgrDlgRemoveIntf

点击Remove按钮，从I/O配置中删除仪器项目。(在与该接口相关的所有仪器被删除时，会自动删除这个接口项目。)


HC_InstrMgrDlgSave

点击Save按钮，把仪器配置保存到磁盘中，关闭Instrument Manager。这会用当前配置覆盖vee.io文件。

如果仪器配置嵌入到程序中，那么没有必要使用Instrument Manager中的Save，因为在保存程序时会保存嵌入式配置。


HC_InstrMgrDlgSettings

Settings对话框控制着仪器发现过程中执行的部分操作。

如果选择Detect only，那么Find Instruments按钮会检测每个总线地址上是否存在一台设备。如果选择Detect, identify, and configure...，那么Find Instruments按钮还会对检测到的每部仪器执行标识和驱程配置操作。

如果复选Ask before sending...，那么在发送*IDN?标识每部仪器前会出现一个确认对话框。如果没有复选，那么*IDN?会发送到所有仪器，而不需操作人员确认。如果系统中包含老的非IEEE-488.2仪器，应使用确认对话框。


HC_InstrMgrDlgSettingsFind

ss


HC_InstrMgrDlgSettingsId

如果复选Ask before sending...，那么在发送*IDN?标识每部仪器前会出现一个确认对话框。如果没有复选，那么*IDN?会发送到所有仪器，而不需操作人员确认。如果系统中包含老的非IEEE-488.2仪器，应使用确认对话框。


HC_PrefsAutoLineRoute

在复选Auto Line Routing时，在连接、移动或调整对象时，会自动重新路由对象之间的线。自动路由只使用横线和竖线，结果与Edit [image] Clean Up Lines相同。在自动路由关闭时，会从端到端直接画线，通常是对角线。


HC_PrefsBinaryRunTime

在复选Binary RunTime File Format时，会使用二进制格式保存.vxe文件，改善安全性，缩小文件容量。在没有复选这个框时，.vxe文件会使用ASCII格式存储(类似于.vee文件)。


HC_PrefsCheckAddrs

在启用仪器检查时，VEE会检查预运行期间配置的仪器，检验能否存取这些仪器。如果地址没有响应，那么您可以开机，选择不同的总线地址，等等。在没有复选这个框时，断开连接的仪器或配置不正确的仪器可能会在程序运行时导致超时错误。


HC_PrefsColors

Appearance Property Group允许为VEE程序中的任何屏幕单元选择默认的颜色。


HC_PrefsDelVars

在复选Delete Variables at PreRun时，在每个程序运行前，将删除所有变量中存储的值。因此，如果没有正确设置其值，那么Get Variable对象会发生错误。在没有复选这个框时，Get Variable对象可以存取上一次程序运行留下的旧数据。这些旧数据可能对新程序运行有效，也可能无效。


HC_PrefsDisableDebug

在复选Disable Debug时，所有调试功能失效，程序执行速度最快。


HC_PrefsExecMode

可以使用Execution Mode选项，强制向下兼容用老版本VEE编写的某些程序。Execution Mode与VEE程序一起存储，可以在Default Preferences对话框中改变Execution Mode。

如果设置的Execution Mode低于当前版本，那么程序不能使用较新的VEE功能。建议使用最高的Execution Mode，除非在极少数情况下较高的模式会导致程序行为以不需要的方式变化。


HC_PrefsFlowRate

设置Data Flow标尺移动的速度。可以从1 - 10中选择一个速率，默认值是6，速度最快的是10。


HC_PrefsFonts

Fonts栏允许为VEE程序中的任何屏幕单元选择默认的字体。


HC_PrefsNumberFormat

Number栏允许为VEE程序中显示数字选择默认的格式。


HC_PrefsOKButton

在按OK时，Default Preferences的任何变化只对当前工作会话有效。在退出和重启VEE时，将恢复上一个Default Preferences (保存在"veerc"文件中)。


HC_PrefsPrintCover

在复选Print Cover Page时，在打印输出开始时会生成一个封面。Print Program对话框中可以不使用这个默认格式选项。


HC_PrefsPrintDarkness

B&W Printer Darkness设置允许为VEE程序中的每个屏幕单元选择一个灰色阴影。在黑白打印机上打印程序时，将使用这个灰色阴影。(Appearance Property Group中的设置用于彩色打印机。)


HC_PrefsPrintExplorer

在复选Print Program Explorer时，打印输出包括Program Explorer窗口中包含的概况信息。Print Program对话框中可以不使用这个默认格式选项。


HC_PrefsPrintHeaderIdx

在复选Print Header and Index Page时，每张打印输出页面会分配一个页码及其它标题信息，在打印输出结束时会生成一个Index。Print Program对话框中可以不使用这个默认格式选项。


HC_PrefsPrintIOConfig

在复选Print I/O Configuration时，打印输出包括I/O配置展开的树形图 (从Instrument Manager)。Print Program对话框中可以不使用这个默认格式选项。


HC_PrefsPrintMag

在打印VEE程序时指定放大倍数。数字越小，图像越小。某些打印机驱程可能会对指定的值进行舍入。


HC_PrefsResetButton

在按Reset时，将丢弃任何未决珠Default Preferences变化，恢复以前的Default Preferences (保存在"veerc"文件中)。


HC_PrefsSaveButton

在按Save时，任何Default Preferences变化将对当前工作会话生效，并保存在"veerc"文件中。在退出和重启VEE时，将使用保存的新Default Preferences。(到"veerc"文件的具体路径取决于系统。)


HC_PrefsSpacing

在执行Edit [image] Align...操作时，指定对象之间放置的像素数量。只有在启用Space Equally时，才使用这个Alignment Spacing值。


HC_PrefsTrigMode

Trig Mode选项选择程序中使用的默认三角测量单位。弧度是VEE的自然单位(速度最快)。


HC_PrefsWebEnable

在复选Enable Server时，会激活VEE的内置Web服务器。Web服务器允许从远程Web浏览器上监测VEE程序。


HC_PrefsWebLogFile

指定到http.log文件的文件路径。这个文件记录Web服务器处理的所有进入请求，可以进行无界扩张。


HC_PrefsWebPortNum

指定VEE的Web服务器使用的端口号码。必须在系统的services文件中分配这个端口号码，任何其它Web服务器不得使用这个端口号码。


HC_PrefsWebRootDir

指定远程Web浏览器可以存取的本地目录。VEE使用Root Directory中的index.html文件作为主页。默认主页安装为~installDir/www/index.html。可以修改这个文件，和/或把这个文件复制到不同的Root Directory下。


HC_PrefsWebTimeout

指定Web服务器等待VEE响应的最大时间(单位为秒)。


HC_PrintPrgCover

在复选这个框时，在打印输出开始时会生成一个封面。


HC_PrintPrgExplorer

在复选这个框时，打印输出会包括Program Explorer窗口中包含的概况信息。


HC_PrintPrgHeaderIdx

在复选这个框时，每张打印输出页会分配一个页码及其它标题信息，在打印输出结束时会生成Index。


HC_PrintPrgIOConfig

在复选这个框时，打印输出会包括I/O配置展开的树形图(从Instrument Manager)。


HC_PrintPrgNested

在复选这个框时，打印输出会包括所有嵌套UserObjects的open view。


HC_PrintPrgObjects

在复选这个框时，打印输出会包括程序中每个对象的详细视图。除最简单的对象外，所有对象都以open view形式打印。


HC_ProfilerClear

Clear按钮把所有Profiler数据值复位成0 (零)。


HC_ProfilerCommas

在复选这个框时，数据写入数据文件中，各个Profiler数据字段之间使用逗号作为定界符(分隔符)。通过使用逗号定界符，可以更简便地把数据导入某些其它程序中，如电子表格中。在没有复选这个框时，数据字段使用多个空格对准。


HC_ProfilerFileName

这个字段指定保存Profiler数据的文件名称。点击这个字段，出现Save data filename对话框。


HC_ProfilerNumDigits

这个字段指定小数点右面显示的位数。


HC_ProfilerOnlyExecuted

在复选这个框时，只对执行的UserObjects和UserFunctions显示Profiler数据。


HC_ProfilerOptions

Options按钮调出Profiler Options对话框。这些选项定制显示和保存的数据格式。


HC_ProfilerOverwrite

在复选这个框时，每点击一下Save按钮会重写Profiler数据文件以前保存的数据。在没有复选这个框时，每次Save都会把新数据追加到现有的数据后面。


HC_ProfilerRefresh

在Profiler运行时，会收集廓线数据，但不会自动更新对话框中显示的数据。必须点击Refresh按钮，才能使Profiler显示最新的廓线数据。


HC_ProfilerResults

在启动Profiler时，它提供了与每个UserObject和UserFunction的执行时间有关的比较信息。点击任何一栏标签(如Name或Time)会显示该字段上存储的Profiler数据。再次点击会按相反顺序分类。双击Name字段中显示的任何UserObject或UserFunction及其视图，会在VEE工作空间中打开它。


HC_ProfilerSave

Save按钮把Profiler数据写入使用Options按钮指定的文件名中。


HC_ProfilerStart

Start Profiling按钮是启动或停止绘制廓线的切换功能。


HC_SaveAsDlgColorsFonts

Save colors and fonts with program把默认颜色和字体保存在Default Preferences对话框中选择的程序文件中。这保证了不管谁打开程序，都会得到默认的所有颜色和字体。如果没有选择这个选项，那么只有程序中明确设置的颜色和字体才保存在程序文件中。使用程序的其它人仍可以保留自己的默认颜色和字体。如果加载一个已有程序，那么会根据以前保存程序的方式设置选项。


HC_SaveAsDlgDeviceConfig

Save I/O configuration with program与程序文件一起保存veeio I/O配置信息，而不是保存在veeio资源文件中。配置信息在Instrument Manager中指定。如果没有选择这个选项，那么当前程序的配置信息保存在veeio文件中。如果加载一个已有程序，那么会根据以前保存程序的方式设置选项。


HC_StatusExecMode

这个字段显示当前加载的VEE程序的Execution Mode。Execution Mode允许较新版本的VEE运行较老版本的VEE程序，实现全面向下兼容能力。可能的模式有VEE 3、VEE 4等等，直到当前VEE版本。Execution Mode与VEE程序一起保存，可以在Default Preferences对话框中改变Execution Mode。


HC_StatusModified

这个字段表明当前加载的程序是否有没有保存的变化(修改)。在这个框变成"灰色"时，表明不存在没有保存的变化。


HC_StatusMsg

VEE窗口的最下面一行是状态信息区域。这个状态行显示各类信息，具体视当前操作而定，如程序运行状态、错误信息、移动的对象的像素位置及有用提示。


HC_StatusProfiler

这个字段表明目前是否启用Profiling。在这个框变成"灰色"时，会停止绘制廓线。


HC_StatusWebServer

这个字段表明目前是否启用VEE Web Server。在这个框变成"灰色"时，Web Server失效。VEE Web Server在Default Preferences对话框中控制。


GPIB 儀器屬性

對通過GPIB接口連接的儀器，下表中的屬性都可以程序化地訪問。

屬性 數据類型 描述

visaAddress | Text | 儀器的VISA型I/O地址。例如: GPIB0::23::INSTR
visaAlias | Text | 儀器的別名
enableEOI | Text | 在write事務的最后一個字節使能EOI。 零 = 使能；非零 = 不使能。缺省值為不使能。
eolSequence | Text | 在write事務的結束時發送的字符序列。缺省值為new-line字符。
interfaceType | Text | 為GPIB儀器返回"GPIB"。
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒。

對GPIB（legacy）儀器，請參閱下表

屬性 數据類型 描述

address | Text | 儀器的VEE型I/O地址。例如:723
enableEOI | Text | 在write事務的最后一個字節使能EOI。 零 = 使能；非零 = 不使能。缺省值為不使能。
eolSequence | Text | 在write事務的結束時發送的字符序列。缺省值為new-line字符。
hostname | Text | 遠程服務器主机名或IP地址。
interfaceType | Text | 為GPIB儀器返回"GPIB"。
pnpResource | Text | 儀器的VISA型I/O地址。例如: GPIB0::23::INSTR
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒。

位置

Device [image] Function & Object Browser [image] Instruments

另請參閱

Instrument Manager,GPIO 儀器屬性,串行口儀器屬性,VXI 儀器屬性,USB 儀器屬性,TCPIP 儀器屬性。


GPIO 儀器屬性

對通過GPIO接口連接的儀器，下表中的屬性都可以程序化地訪問。

屬性 數据類型 描述

address | Int32 | 儀器的VEE型I/O地址。例如 12
eolSequence | Text | 在write事務的最后一個字節使能EOI。 零 = 使能；非零 = 不使能。缺省值為不使能。
hostname | Text | 遠程服務器主机名或IP地址。
interfaceType | Text | 為GPIO儀器返回"GPIO"。
pnpResource | Text | GPIO無此項。
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒

位置

Device [image] Function & Object Browser [image] Instruments

另請參閱

Instrument Manager, GPIB 儀器屬性,串行口儀器屬性,VXI 儀器屬性,USB 儀器屬性,TCPIP 儀器屬性。


Serial 儀器屬性

對通過串行(RS-232)接口連接的儀器，下表中的屬性都可以程序化地訪問。

屬性 數据類型 描述

visaAddress | Text | 儀器的VISA型I/O地址。例如: ASRL0::INSTR
visaAlias | Text | 儀器別名。
baudRate | Int32 | RS-232接口的當前帶寬。缺省為9600.
charSize | Int32 | 每個字符幀的數据位。取值范圍為5到8。缺省為8.
EnableEOI | Text | 在write事務的最后一個字節使能EOI。 零 = 使能；非零 = 不使能。缺省值為不使能
eolSequence | Text | 在write事務的結束時發送的字符序列。缺省值為new-line字符
handshake | Text | 當前連接的同步机制。可以為None, XonXoff, RtsCts, 或 DtrDsr。缺省為None。
interfaceType | Text | 為RS-232儀器返回"Serial"。
parity | Text | 校驗位產生/檢查。可以為None, Even, Odd, Mark, 或 Space. 缺省為None。
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
stopBits |  | 串行停止位。可以為1或2。 缺省為1。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒。

對Serial（legacy）儀器，請參閱下表

屬性 數据類型 描述

address | Int32 | 儀器的VEE型I/O地址。例如: 9
baudRate | Int32 | 儀器的VISA型I/O地址。例如: ASRL0::INSTR
charSize | Int32 | 儀器的VISA型I/O地址。例如: ASRL0::INSTR
eolSequence | Text | 在write事務的結束時發送的字符序列。缺省值為new-line字符
handshake | Text | 當前連接的同步机制。可以為None, XonXoff, RtsCts, 或 DtrDsr。缺省為None。
hostname | Text | 遠程服務器主机名或IP地址。
interfaceType | Text | 為RS-232儀器返回"Serial"。
parity | Text | 校驗位產生/檢查。可以為None, Even, Odd, Mark, 或 Space. 缺省為None。
pnpResource | Text | 儀器的VISA型I/O地址。例如: ASRL0::INSTR
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒。

位置

Device [image] Function & Object Browser [image] Instruments

另請參閱

Instrument Manager,GPIO 儀器屬性,GPIB 儀器屬性,VXI 儀器屬性,USB 儀器屬性,TCPIP 儀器屬性。。


TCPIP 儀器屬性

對通過TCPIP接口連接的儀器，下表中的屬性都可以程序化地訪問。

屬性 數据類型 描述

visaAddress | Text | 儀器的VISA型I/O地址。例如: GPIB0::23::INSTR
visaAlias | Text | 儀器的別名
eolSequence | Text | 在write事務的結束時發送的字符序列。缺省值為new-line字符。
interfaceType | Text | 為GPIB儀器返回"GPIB"。
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒。

位置

Device [image] Function & Object Browser [image] Instruments

另請參閱

Instrument Manager,GPIO 儀器屬性,GPIB 儀器屬性,串行口儀器屬性,VXI 儀器屬性,USB 儀器屬性。


USB 儀器屬性

對通過USB接口連接的儀器，下表中的屬性都可以程序化地訪問。

屬性 數据類型 描述

visaAddress | Text | 儀器的VISA型I/O地址。例如: GPIB0::23::INSTR
visaAlias | Text | 儀器的別名
eolSequence | Text | 在write事務的結束時發送的字符序列。缺省值為new-line字符。
interfaceType | Text | 為GPIB儀器返回"GPIB"。
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒。

位置

Device [image] Function & Object Browser [image] Instruments

另請參閱

Instrument Manager,GPIO 儀器屬性,GPIB 儀器屬性,串行口儀器屬性,VXI 儀器屬性,USB 儀器屬性,TCPIP 儀器屬性。


VXI 儀器屬性

對通過VXI接口連接的儀器，下表中的屬性都可以程序化地訪問。

屬性 數据類型 描述

address | Text | 儀器的VEE型I/O地址。例如: 16
enableEOI | Text | 在write事務的最后一個字節使能EOI。 零 = 使能；非零 = 不使能。缺省值為不使能。
eolSequence | Text | 在write事務的結束時發送的字符序列。缺省值為new-line字符。
hostname | Text | 遠程服務器主机名或IP地址。
interfaceType | Text | 為VXI儀器返回"VXI"。
pnpResource | Text | 儀器的VISA型I/O地址。例如: VXI 0::23::INSTR
readTerm | Int32 | 用于終止read事務的字符。缺省值為new-line字符。
timeout | Real64 | 事務超時的時間，洙位為秒。缺省值為5秒。

位置

Device [image] Function & Object Browser [image] Instruments

另請參閱

Instrument Manager,GPIO 儀器屬性,GPIB 儀器屬性,串行口儀器屬性,USB 儀器屬性,TCPIP 儀器屬性。


No Help Topic Available

这个对象或对话框的Help内容还没有实现。


NotOnNet

Error

这台计算机没有连接到网络上。

我们对此带来的不便深表歉意。


Polynomial

一个菜单项。

用途

使用Polynomial存取下面的对象，从数据和系数值中生成一个Real64多项式结果。这些对象汇总为poly(x,vec)。

poly(x,[a0, a1])

poly(x,[a0, a1, a2])

poly(x,[a0, a1, a2, a3])

poly(x,[a0, a1, ... aN])

位置

Math [image] Polynomial

另请参阅

Generate和poly(x,vec)。


Agilent VEE 顏色的RGB值

可以使用下述的RGB值創建用戶位圖或匹配一個VEE的顏色，比如，匹配一個面板背景色。

下列顏色及它們的RGB值可能會在未來的VEE版本中發生變化。

Black | r:0 | g:0 | b:0
Dark Beige | r:105 | g:95 | b:80
Darkest Gray | r:96 | g:96 | b:96
Dark Gray | r:128 | g:128 | b:128
Med Dark Gray | r:160 | g:160 | b:164
Gray | r:192 | g:192 | b:192
Med Light Gray | r:208 | g:208 | b:208
Light Gray | r:224 | g:224 | b:224
Lightest Gray | r:240 | g:240 | b:240
White | r:255 | g:255 | b:255
Darkest Red | r:121 | g:0 | b:21
Dark Red | r:128 | g:0 | b:0
Med Red | r:207 | g:14 | b:48
Warning Red | r:230 | g:30 | b:30
Red | r:255 | g:0 | b:0
Light Warning Red | r:229 | g:64 | b:93
Med Light Red | r:247 | g:102 | b:129
Light Red | r:255 | g:128 | b:128
Med Pale Red | r:253 | g:164 | b:181
Pale Red | r:255 | g:197 | b:207
Darkest Orange | r:113 | g:32 | b:0
Dark Orange | r:188 | g:55 | b:0
Med Dark Orange | r:243 | g:91 | b:27
Med Orange | r:245 | g:123 | b:73
Orange | r:255 | g:128 | b:0
Golden Orange | r:239 | g:145 | b:0
Light Orange | r:255 | g:162 | b:124
Light Golden Orange | r:246 | g:191 | b:105
Pale Orange | r:252 | g:209 | b:193
Pale Golden Orange | r:253 | g:227 | b:186
Dark Brown | r:96 | g:64 | b:64
Med Brown | r:113 | g:68 | b:0
Golden Brown | r:163 | g:105 | b:0
Dark Gold | r:149 | g:108 | b:54
Brown | r:150 | g:110 | b:75
Gold | r:176 | g:145 | b:91
Beige | r:148 | g:139 | b:123
Golden Beige | r:175 | g:160 | b:126
Light Gold | r:203 | g:182 | b:128
Light Beige | r:220 | g:211 | b:184
Darkest Yellow | r:78 | g:79 | b:0
Darkest Green Yellow | r:118 | g:121 | b:0
Dark Green Yellow | r:150 | g:150 | b:0
Med Green Yellow | r:179 | g:185 | b:0
Dark Yellow | r:192 | g:192 | b:0
Med Dark Yellow | r:213 | g:213 | b:45
Med Yellow | r:234 | g:236 | b:94
Yellow | r:255 | g:255 | b:0
Light Yellow | r:255 | g:255 | b:128
Pale Yellow | r:252 | g:254 | b:185
Dark Green | r:0 | g:96 | b:0
Forest Green | r:49 | g:101 | b:1
Med Dark Green | r:0 | g:130 | b:70
Med Green | r:67 | g:142 | b:0
Green | r:0 | g:193 | b:19
Med Yellow Green | r:64 | g:229 | b:10
Yellow Green | r:128 | g:255 | b:0
Light Yellow Green | r:163 | g:242 | b:95
Light Green | r:128 | g:255 | b:128
Pale Green | r:219 | g:255 | b:184
Darkest Teal | r:0 | g:78 | b:71
Med Dark Teal | r:0 | g:107 | b:97
Dark Teal | r:0 | g:128 | b:128
Med Teal | r:0 | g:150 | b:136
Teal | r:0 | g:160 | b:160
Med Light Teal | r:0 | g:183 | b:165
Light Teal | r:0 | g:192 | b:192
Blue Gray | r:120 | g:184 | b:210
Cyan | r:0 | g:255 | b:255
Pale Cyan | r:140 | g:244 | b:234
Dark Blue | r:0 | g:0 | b:128
Med Dark Blue | r:70 | g:0 | b:240
Blue | r:0 | g:0 | b:255
Dark Sky Blue | r:51 | g:101 | b:251
Med Light Blue | r:0 | g:128 | b:255
Lavender | r:128 | g:128 | b:255
Light Blue | r:96 | g:192 | b:255
Sky Blue | r:162 | g:193 | b:254
Pale Blue | r:193 | g:206 | b:255
Light Blue Gray | r:195 | g:211 | b:219
Darkest Purple | r:80 | g:0 | b:147
Dark Purple | r:90 | g:0 | b:170
Med Purple | r:123 | g:0 | b:228
Purple | r:128 | g:0 | b:255
Violet Purple | r:146 | g:52 | b:219
Light Violet Purple | r:183 | g:96 | b:249
Med Light Purple | r:200 | g:120 | b:253
Light Purple | r:212 | g:159 | b:255
Med Pale Purple | r:227 | g:190 | b:255
Pale Purple | r:240 | g:210 | b:255
Dark Magenta | r:128 | g:0 | b:128
Dark Pink Magenta | r:181 | g:0 | b:105
Hot Pink | r:255 | g:0 | b:128
Light Pink Magenta | r:217 | g:49 | b:146
Med Magenta | r:236 | g:24 | b:200
Magenta | r:255 | g:0 | b:255
Light Magenta | r:255 | g:128 | b:255
Pink | r:255 | g:128 | b:192
Light Pink | r:243 | g:159 | b:209
Pale Pink | r:253 | g:192 | b:229


Set Last File Write Time

设置给定文件最后一次文件写入时间。

位置

System [image] File [image] Set Last File Write Time


Tab Index

Tab Index只在Panel视图上激活，允许设置Panel上Object的tab顺序。

用途

通过Properties窗口进入Tab Index，可以在Panel视图上设置Object的Tab顺序。在操作人员只有一个键盘时，这种功能特别有用。

另请参阅

面板视图导航技术

以程序化方式改变属性

编程属性


一般技巧

在開發程序時，應使用与目的系統相同(或類似的)屏幕分辨率。Panel View是不能滾動的特定尺寸的窗口(用像素數量表示)。需要确認Panel View适合目的系統的屏幕。

在創建VEE窗口前，可以指定VEE窗口尺寸。在啟動VEE時，使用命令行選項-geometry，指定Detail View的尺寸，從而在創建時指定Panel View的尺寸。如需与使用命令行選項有關的更多信息，請參閱使用命令行選項啟動Agilent VEE。

如果有多個目的系統類型，在開發程序時，應使用公分母最低的系統，以便能夠實際感受最壞情況下的分辨率(文本可讀性)、執行速度和顏色。

在程序最終成形前，在目的系統測試程序。

在為用戶提供指令時，可能存在重要的鍵盤差异。例如，Esc可能位于鍵盤上不同的位置。

不要使用二進制數据文件。把數据文件保存為ASCII。


在程序中創建UserFunction

下面的范例分步說明了怎樣創建一個簡單的UserFunction，然后在VEE程序中連接這個UserFunction。在理想情況下，UserFunction中一起使用的多個對象應執行某項任務。

1. 在Main工作區中添加一個UserFunction (Device UserFunction).，出現UserFunction編輯窗口。

2. 在UserFunction工作區中添加對象，根据需要連接對象之間的端。可以使用与“在UserObject工作區中添加對象”相同的技朮，在UserFunction中添加對象。

3. 添加并為UserFunction連接輸入端和輸出端︰

a. 把鼠標光標放在UserFunction的輸入端區域，按Ctrl+A。數据輸入端出現在編輯窗口的端區域中。

b. 在編輯窗口中，把輸入端的內部端連接到UserFunction內部的相應對象上。

c. 把鼠標光標放在UserFunction的輸出端區域，按Ctrl+A。數据輸出端出現在編輯窗口的端區域中。

d. 在編輯窗口中，把輸出端的內部端連接到UserFunction內部的相應對象上。

4. 把UserFunction標題變成描述名稱，以便能夠在程序中識別它。在UserFunction編輯窗口中雙擊標題欄。在Properties Window對話框中，輸入一個新標題。標題中不能含有空格。

5. 在程序中添加一個Call對象。在UserFunction編輯窗口的對象菜單中，點擊Generate Call。出現一個Call對象，其中包括与添加到UserFunction的對象對應的標題和端。

根据UserFunction的用途，您可能想從Generate菜單其中一個其它對象中生成UserFunction調用。

6. 把線連接到Call對象上的輸入端和輸出端。

7. 運行程序，測試UserFunction。

下例顯示了打開UserFunction編輯窗口的一個程序。

另請參閱

構建UserFunction面板

在程序中調汁煲erFunction

在程序中使用多個對象創建UserFunction

編輯UserFunction

UserFunction

從表達式中調汁煲erFunction


迭代一條記錄

Copyright (c) 1991-2007 Agilent Technologies, Inc.


To Iterate an Array

Copyright (c) 1991-2007 Agilent Technologies, Inc.


Express 歡迎

歡迎!

歡迎使用 Agilent VEE Pro 幫助。點擊上面的 Contents 或 Index 按鈕可以方便地找到您需要的內容。

現在 Agilent VEE Pro 還提供其他語言版本的幫助。您只需將安裝目錄下的vee.chm重命名為English.chm，再將您想要的本地化版本的幫助文件重命名為vee.chm就可以了。比如，將veeJapanese.chm重名為vee.chm。

Agilent VEE Pro 8.0 新增功能

在 Agilent VEE Pro 8.0中所修复的錯誤

Microsoft/MS-DOS/Windows/MS Windows/Windows NT/Excel/Word/.NET/Outlook/ActiveX/Visual Basic/Visual C# 是微軟公司在美國和/或其他國家的商標或注冊商標。

PostScript 是Adobe系統公司的商標。

MATLAB 是 MathWorks 公司的注冊商標。.

National Instruments/NI/LabVIEW/和 SCXI/是國家半導体公司的注冊商標。

PXI 是PXI系統聯盟的注冊商標。

IVI/and IVIplug&play 是IVI Foundation的注冊商標。

Pentium Intel 公司在美國的注冊商標。

Arial/和 Times New Roman/是Monotype公司在美國的注冊商標。


版本信息

下面列出了 VEE 5., 6.0, 7.0, 和 7.5 的所有新功能和改進 。詳細信息請選擇下列連接。

Version 7.5

Version 7.0

Version 6.0
Version 5.0

Agilent VEE Pro 7.5 新功能

用VEE Pro 7.0 或 7.5 保存的程序，不能裝入之前的 VEE 版本。

Excel Library Add-in

The Excel Library add-in 提供了 Microsoft Excel 和 VEE 之間的簡單連接，無需再處理 ActiveX。使用菜單和可選設置，就可以直接使用所需的 Excel。詳情請參閱 Help [image] How Do I [image] Use the VEE Excel Library。

For Each 語句

For Each 語句与 For Count 或 For Range 語句類似，它會對數組中的每一個元素執行那段語句。它可以支持多達10維的數組。詳情請參閱 For Each。

NI 數据采集支持 (PXI 和 PCI)

提供對 NI 數据采集驅動器庫的支持包括 NI-SWITCH, NI-DMM, NI-SCOPE, NI-DAQ, 和 NI-FGEN。這些支持包括對這些庫中的函數及每個函數的聯机幫助的訪問。請參閱 To/From NIDAQ。

.NET Operation Builder

使用.NET Operation Builder 你可以很容易地選擇 .NET 類型，然后再選擇方法和屬性建立 .NET 操作。該操作的形式与 To/From 事務框很類似。詳情請參閱 .NET Operation Builder。

.NET Controls

The .NET Framework 提供了很多 System.Windows.Forms assembly 中的標準控件。使用.NET Controls 功能可以很容易地使用這些控件。選擇 Device [image] Windows Forms Controls，就會出現一個控件的列表，你可以從中選擇所需的控件添加到 VEE 程序中。注意下圖所示只是控件列表的一部分。

裝入所選儀器的范例程序

選擇 Instrument Manager 中的一個儀器，然后點擊 Load Sample，就會出現一個范例程序列表。選擇一個范例后，該程序會被裝入一個新的 VEE。 儀器也會自動配置好，只要按 Run 運行該范例就行了。

文檔說明指示符

以前很難判斷一個對象是否有說明。現在只要在 Default Preferences 使能文檔說明指示符, a small red triangle appears in the upper right corner of objects that have a description.

IVI-COM 和 Instrument Manager

現在可以在 Instrument Manager 中選擇，這使得為你的程序配置和使用 IVI-COM 驅動更為容易。

詳細視圖中的新的上下文菜單 Go To Panel

在面板視圖的上下文菜單中已經有一個叫做 Go to Detail 的選項。現在，在詳細視圖的上下文菜單中新添加了一個叫做Go To Panel 的上下文菜單。

Agilent VEE Pro 7.0 新功能

Agilent VEE Pro 7.0 添加了許多新功能，比如， Property Grid 和 Microsoft Visual Studio .NET，使得 VEE Pro 7.0 存儲格式很獨特。用VEE Pro 7.0 保存的程序將無法裝入先前的VEE版本中。

Undo/Redo

Undo 是用戶最需要的功能之一。VEE 會在許多通用操作中提供對Undo 和 Redo 的支持。比如 ，剪切一條線，刪除一個終端，從面板上刪除對象， 粘貼對象，移動對象，和許多其他操作。

請參閱 Undo 和 Redo

對象屬性操作

VEE 提供了一個与 Visual Basic 所提供的非常類似的屬性編輯框 ，Properties Window， 使用它可以很容易地改變 VEE 對象的許多屬性。這個操作很簡單，而且大多數情況下，只需兩次點擊就可以完成操作。也可以同時多個對象進行操作It works when you select multiple objects (為兩個不同的對象提供了一個交叉點。)。可以在詳細視圖和面板視圖上操作。

請參閱 Properties (Object)

面板編輯特性

對面板上的視圖的對象的編輯更為容易，因為添加了如下新功能︰一個可見的网格，對象對齊功能，使用“橡皮圈”同時選擇多個對象，創建面板時撤銷某些通用操作，至于最上面，放在最下面，tab 排序，及許多其他功能。

在 Notepad 和 Description 中使用 Rich Text Format

現在編輯注釋和描述更為容易了，使用 .NET 的強大功能，已經在注釋和描述中實現了。此外，注釋和描述還可以自動識別連接，并在一個瀏覽器中打開該連接。它們都支持 undo (CTRL-Z) 和 redo (CTRL-Y) 以及其它你所熟悉的快捷鍵。可以直接從一個.rtf文件或字處理文件中剪切和粘貼到注釋和描述中。 最后，你開可以創建一個用戶模板(缺省得模板是 templates\notepad.rtf 和 templates\description.rtf)。當你創建一個新對象時，這些模板將被打開。當然，如果你不需要模板，也可以把它們刪除。

程序化地使用 .NET Assemblies

目前，已經有許多.NET 類，將來還會有更多。 有時，這些類提供的功能不能在VEE 中使用，或要求得比VEE 能提供的更多。 為了能使用這些有用的功能，VEE 7.0 提供了對 Microsoft .NET Framework Library 進行訪問的手段。這些庫包含功能強大的類，可以象在VEE 5.x 或更高版本中使用ActiveX 一樣使用它們。請參閱 DotNet 范例目錄下的范例，可以体會到 .NET Framework 帶給 VEE 的新功能。

另一個新功能是可以導入namespace。從 Device > .NET Assembly References 菜單，選擇 "Import namespaces after closing" ，選擇一個或多個 .NET Assemblies，就會提示你選擇一個或多個 namespace。也可以從 Device選擇 Import .NET Namespace。這有什么用途呢？如果沒有導入 namespace，你也許要輸入 System.IO.File.Exists()。 如果有導入了 namespace ，調用就可以寫成 File.Exists()。只是几下簡單的點擊就替代了許多地輸入。

添加了一個新的類型轉換函數 asClrType。該函數把一個VEE 數据類型轉換為一個 .NET/CLR 數据類型。所有有效的 .NET/CLR 數据類型包括所有主要的數据類型 (Boolean, Byte, SByte, Int16, Int32, Uint32, Int64, Char, Double 和Single), Decimal, DataTime, 和 String。VEE很少需要使用 asClrType 因為 VEE 會自動完成 VEE 和 .NET 之間 的數据類型轉換。有關使用 asClrType 的范例，請參閱 examples\dotnet\datetime.vee.

請參閱 Tell Me About > .NET Framework

基于 USB 的儀器的連接性

保持 VEE 對最新的 Agilent 儀器的支持以及保持 VEE 的競爭性是 Agilent 的一貫宗旨和目標。到目前為止，I/O 子系統已經提供了對多种儀器的支持，包括 Universal Serial Bus (USB)。另一個有關 USB 支持的屬性是 USB aliases。 USB aliases 用 USB 地址替換了原來的長的和古怪的地址串。

基于 LAN 的儀器的連接性

就像 USB 連接性中所描述的，對儀器的連接變得更為標準。為了适應這些變化，VEE 還是增強了對基于 LAN 的連接支持。

對 IVI-COM 驅動器的使用

IVI-COM 是儀器兼容性的最新標準，由 IVI Foundation 創建。它鼓勵儀器生產商生產可互相兼容的儀器。為了采用這些新標準，VEE 可以使用所有 Agilent IVI-COM 驅動程序和一些第三方的 IVI-COM 驅動程序。

通過查找 Primary Interop Assembly (PIA)，VEE 可以和 IVI-COM 驅動程序交互。assembly 是一個 .EXE 或 DLL 文件，它是 .NET 應用程序的基本模塊。PIA 是一個 .NET assembly ，它由基于 COM 的組件的提供商提供。既然 IVI-COM 驅動程序是一個基于 COM 的組件， VEE 就會去查找它的 PIA。一旦找到后，VEE 就可以象使用其它.NET assembly 一樣使用它了。

請參閱 What is IVI?

新的錯誤報告机制

Agilent 改變了 VEE 的錯誤報告机制。請利用這些有用的机制。詳情請參閱 Minidumps。

Agilent VEE 6.0的新功能

歡迎加入 Agilent VEE 軟件家族，6.0版。下面為所有新功能和改進功能的列表。詳情請參閱 "新功能" 或 "改進功能。" 在 Help Contents 或 Index中可以找到所有功能的說明。

新功能

多媒体教程
集成的 MATLAB Script
Callable VEE ActiveX Automation Server
新的數据類型
VEE 6 執行模式
新函數
与程序一起保存 VEE I/O Configuration File
可編程的儀器屬性
動態 I/O Automation 服務器
I/O 診斷特性
Instrument Manager 工具欄按鈕
對 VXI 64-bit 內存訪問的支持
對 PC Plug-In 卡的支持
添加了 Program Explorer 的子菜單
新的 RunTime 選項
在注冊表中保存程序設置
MAPI Email 支持
對 Microsoft 智能鼠標輪的支持

Agilent VEE (Windows) 現在提供了多媒体教程來幫助你提高效率。下面是一些簡單的步驟︰

1. 把 VEE CD 放入安裝VEE的相同的 CD 驅動器中。
2. 運行 VEE 并點擊 Welcome Window 中的 "Tutorials" 按鈕。
3. 學習列出的幫助教程。

集成的 MATLAB Script

Agilent VEE 6.0 提供了對 MATLAB 的支持。VEE 發布時帶有一個 MATLAB Script 的運行時版本。在 Device 菜單下新增加了一個 MATLAB Script 對象。所有可用的 MATLAB 函數都會列在 VEE 的 Function & Object Browser。 (VEE 不提供HP-UX上對 MATLAB 的支持。)

Callable VEE ActiveX Automation 服務器

VEE 以前的版本提供了兩种從其它開發環境執行 VEE 代碼的途徑︰C-to-VEE API 和 Callable VEE ActiveX 控件。 Agilent VEE Pro 6.0 用 ActiveX Automation 服務器替換了舊的 ActiveX Control， 這樣可以很容易地從其它編程環境比如Visual Basic 中訪問 VEE 代碼。(只對 Windows 平台提供 Callable VEE 服務器功能)

詳情請參閱 VEE CallServer 幫助。

新的數据類型

UInt8, Int16, Real32, 和 Variant 都是 Agilent VEE 6.0 的新數据類型。這些數据類型會出現在所有執行模式和事務操作中，比如，WRITE TEXT INT16。然而，新事務操作在舊的執行模式下仍將保持原來的執行方式。比如，在 VEE 5 模式下， WRITE BINARY INT16 實際執行的是 WRITE BINARY INT32 而且不會把數据轉換為Int16。在 VEE 6 模式下，WRITE BINARY INT16 就會把數据轉換為 Int16 類型。請參閱有關 Execution Mode 的幫助文件，以了解 VEE Execution Mode 會怎樣改變程序行為。

位置

Data [image] Constant [image] UInt8
Data [image] Constant [image] Int16
Data [image] Constant [image] Real32
Data [image] Allocate Array [image] UInt8
Data [image] Allocate Array [image] Int16
Data [image] Allocate Array [image] Real32

VEE 6 執行模式

Agilent VEE 6.0 在 Default Preference 對話框中新增了一個 VEE 6 執行模式。詳情請參閱与 Execution Mode 有關的幫助文件。

新函數

VEE的新數据類型 (Int16, Real32, Variant, UInt8) 幫助擴展了与 ActiveX automation 服務器的兼容性。此外，新的函數也使對其它在 VEE 中沒有對應的數据類型(比如，Currency 和 Date)的 ActiveX 數据類型的處理變得容易了。請參閱 Type Conversion 幫助文檔。下述為新添加到 Agilent VEE 6.0 中的函數。

asVariant()
asVariantBool()
asVariantCurrency()
asVariantDate()
asVariantError()
asVariantEmpty()
asVariantNull()
baseName(pathStr)
commandLine()
dirName(pathStr)
inDaylightSavings()
isVariant()
isVariantBool()
isVariantCurrency()
isVariantDate()
isVariantError()
isVariantEmpty()
isVariantNull()
programName()
typeName(x)

与程序同時保存 VEE I/O 配置文件

VEE 6.0 允許將 I/O 配置文件嵌入到程序中，而不是使用 veeio 資源文件。如要把把配置信息嵌入到程序中，必須在 Save File 對話框中選擇 “Save I/O configuration with program”選擇框。更多有關保存 I/O 配置的信息，請參閱 Instrument Manager。

位置: File Save (保存一個新文件)

File Save As (Save As)

可編程儀器屬性

Agilent VEE 6.0 新增了一個可以在運行時改變儀器參數(比如超時值)的功能。它不再使用到 Direct I/O 對象的控制輸入，并且允許用戶在運行時 Get/Set 一些儀器的參數。(雖然對控制輸入的需求在減少，VEE仍將提供對控制輸入的支持。) 可用的儀器及其屬性列在 Function and Object Browser對話框中，formulas 也可以從這些列表中產生。

有關那些可用屬性的信息，請參閱 GPIB Instrument Properties , GPIO Instrument Properties , Serial Instrument Properties , 和 VXI Instrument Properties。下面是兩個范例:

examples\InstrumentIO\ProgrammableInstrProperty1.vee

examples\InstrumentIO\ProgrammableInstrProperty2.vee

動態 I/O Automation 服務器

在 VEE 之前的版本中， VEE I/O 配置文件中的儀器總線地址是靜態的(固定的)。比如，6.0, Dynamic I/O Automation Server 允許你動態地查找和确定儀器。這就提供了更為高級的靈活性。例如，可以先找到所有儀器然后使用可編程儀器屬性來設置 Direct I/O 對象。(只提供 Windows 上的動態 I/O Automation Server的支持)

請參閱 Dynamic I/O Automation Server。

新的 I/O 診斷功能

VEE 6.0 新增了一些 I/O 診斷功能。這些功能可以被分為錯誤預防，錯誤恢复，主要為儀器的檢查。

錯誤預防

VEE 6.0 可以在 VEE 程序執行前就進行儀器檢查。要檢查儀器，請使用 File Default Preferences 并選擇 PreRun 框中的 Check Instrument Addresses。詳情請參閱e Default Preferences (在 "Debug" 組)。

錯誤恢复

當檢測到一個I/O超時錯誤時，VEE 6.0 在 VEE Run Time Error 對話框中新增了一個 Troubleshooting 按鈕。可診斷的 I/O 錯誤會導致 Error 811 - 超時或 一般 I/O 錯誤。

當因為一個不存在的接口或未占用的數据地址而引起 VEE 儀器訪問失敗，診斷功能就可以指明錯誤類型并提供一些改正錯誤的建議。

Instrument Manager 工具欄按鈕

6.0 在工具欄上新加了一個 Instrument Manager 圖標以便于更容易地訪問 Instrument Manager。當然，仍然可以從菜單中打開 Instrument Manager 對話框。

支持對 VXI 64-bit 的內存訪問

Agilent I/O 庫 G.02.02 對一些 VXI 儀器的內存空間的訪問提供 64-bit 的支持。它使得 VEE 程序可以以64-bit的單位來讀/寫內存。如果安裝了 G.02.02 (或更高) 版本，就可以使用在Advanced Instrument Properties對話框中的 A24/A32 Space 欄來使能這种訪問方式。

位置: I/O Instrument Manager

(選擇一個 VXI 儀器) Instrument Properties Advanced... A24/A32 Space tab.

PC Plug-In 卡的支持

VEE 6.0 支持有ODAA (Open Data Acquisition Association)兼容軟件驅動程序的 PC Plug-In 卡。要使用這些卡，必須先安裝硬件和軟件，然后根据生產商的指令配置子系統。在 Agilent VEE Instrument Manager 中，點擊 Find Instruments 按鈕。

如果正确配置了 PC Plug-In 卡，就可以在 Instrument Manager 中看到已配置好的子系統。選擇所需的子系統，然后點擊 PCPI Driver 按鈕，會創建一個 Formula 對象。也可以先瀏覽屬性和方法后，再從 Function & Object Browser 中創建一個 formula。

新的 Program Explorer 子菜單

Agilent VEE 6.0 為 Program Explorer 中的 Globals 新增了一個子菜單，叫做 "Generate," 它為包含 Global Variable 的操作，比如 Get, Set, 和 If/Then/Else 提供了方便的訪問方式。

新 RunTime 選項

VEE Pro RunTime 有了一個新的選擇 - enablewarnings。它可以讓用戶在 RunTime 時對程序進行檢查以保証已經有了所有需要的文件。如果沒有 -enablewarnings, RunTime 會把那些不重要的錯誤靜靜地忽略掉，比如 "Picture file is missing."之類的錯誤。

在注冊表中保存程序設置

在 VEE 4.x 和 5.0, 某些信息 (比如，Toolbar，Status bar 是否可見，等) 是保存在一個缺省配置文件(vee.rc)。在 VEE 6.0中，這些設置就不再保存在 vee.rc 文件中了。

令外，Windows 上的之前版本的 VEE 把一些設置還保存在 v.ini 文件中。VEE 也不再在MS Windows上使用 v.ini 文件了。 所有這些設置都保存在每個用戶的 Windows 注冊表中的 HKEY_CURRENT_USER\Software\Agilent\VEE 之下。

在 HP-UX 上，這些信息保存在一個名為 .vee-settings 的文件中，它位于用戶的 $HOME 目錄下。(這個文件以前叫做 .vee-history。)

保存這些程序設置無需作任何操作，因為這些設置會在 VEE 退出時自動保存。下次打開 VEE 時，它會在同樣的地方，以同樣的大小顯示，而且用戶接口選項也保持不變。

MAPI Email 的支持

VEE 6.0 新增了一個 "Send Program by Email" 文件菜單項，用于有MAPI profile 的系統。對 HP-UX 系統和沒有MAPI profile 的 PCs, VEE 不支持這項功能。

位置: File Send Program by Email

對 Microsoft 智能鼠標輪的支持

VEE 6.0 提供了對 Microsoft 智能鼠標輪的支持。如使用的是 Microsoft 智能鼠標或其兼容產品，滾動鼠標輪可以使視圖上下滾動。

改進功能

改進的安裝程序
從 Variant 到 VEE 數据類型的轉換。改進的數組操作。
改進的 Automation Server 清理
更多的圖形文件的支持
改進的 XY Marker 屬性
智能創建事務對象的端
Get 和 Set Formula 的按鈕
更新的函數
改進的 PC Execute 對象
Instrument Manager 更新
方便地改變對象的大小
更多的鍵盤快捷鍵
改進的 Sequence Line 顏色
配置存儲選項

改進的安裝程序

新的安裝程序可以使你完成一些用舊的安裝程序無法做到的一些事情。安裝完 VEE 后，你可以從控制面板上先選擇 "Add/Remove Program"，然后選擇 Agilent VEE。你會注意到一些新功能。不僅可以刪除 Agilent VEE，而且可以修改現有的安裝。這樣，你就可以安裝一些在開始時不需要的組件，比如, 非 HP 的面板驅動程序。你也可以刪除一個不再使用的組件。修复共能可以修复已安裝的 Agilent VEE。

從 Variant 到 VEE 數据類型的轉換。改進的數組操作

當從 ActiveX Automation Server (比如 Excel) 或 ActiveX 控件返回數据時, VEE 必須把這些數据轉換為 VEE 數据類型。 在 VEE 5.0, Variant 的數組被轉換為 VEE 的記錄。 在 VEE 6.0 (在 VEE 6 執行模式下),Variant 的數組會被轉換為a VEE 數組只要其中的所有元素具有相同的數据類型。(如果為混合的數据類型，与 VEE 5.0 沒有區別。)

如果所有Variant 的源 Safearray 中的所有元素的數据類型相同，從 Variant 數据類型到 VEE 數組數据類型的轉換如下。(注意︰這個功能只有在 VEE 6 執行模式下才有效。)

Variant 數組成員的類型 VEE 6.0 數据類型

VT_UI1 UInt8
VT_BOOL Int32
VT_I2 Int16
VT_UI2 Int16
VT_I4 Int32
VT_UI4 Int32
VT_R4 Real32
VT_R8 Real64
VT_DATE Real64
VT_CY Real64
VT_BSTR Text
VT_DISPATCH Object

改進的 Automation Server 清理

你也許已經注意到了，當一個 VEE 程序結束時，它使用的 Automation Server (比如 Excel), 有時不會自動退出。VEE 6.0 改進了對 ActiveX references 的處理并且會釋放所有不再需要的指針。有關影響 ActiveX references 清理的編程技巧請參閱 CreateObject 幫助文檔。

更多的圖形文件的支持

VEE 6.0 增加了在 Windows 95/98/NT 上對 JPG, WMF, 和 PNG 格式文件的只讀功能，可以讀取更多的 BMP 和 GIF 格式的文件了。請參閱 Picture 對象的幫助文檔。

改進的 XY Marker 屬性

在 VEE 6.0 中可以在任何表達式中以值的形式得到 Marker 的位置。有關該功能的詳細信息，請參閱 XY Display 幫助文檔中的 "Programmatically Setting and Reading Marker Values" 部分。一些 XY Displays 的例子是 XY Trace, Magnitude Spectrum, 和 Polar Plot。也可以參閱︰ To Get and Set Marker Properties。

智能創建事務對象的端

基于事務的對象現在可以根据事務中端的名字來自動產生輸入/輸出端。這個功能可以區分局部和全局變量，所以當是一個局部和全局變量名時，不會添加輸入/輸出端。

Get 和 Set Formula 的按鈕

現在，Function & Object Browser 支持為 ActiveX, VEE 對象, 及儀器組中的屬性創建兩种類型的 formulas。點擊不同的按鈕可以創建 "Get Property" formula 或 "Set Property" formula。

更新的函數

Agilent VEE 6.0 更新了一下函數︰

whichOS() 增加了 Windows 98 和 Windows 2000。

createObject() 增加了可選擇的主机名參數。

改進的 PC Execute 對象

現在 PC Execute 對象可以支持從一個執行程序中返回一個終止代碼，也可以使用注冊的后綴運行相關的程序。請參閱 Execute Program (PC) 幫助文檔。

Instrument Manager 更新

VEE 6.0 在 Instrument Manager 中增加了一個 "Configure Drivers" 按鈕，它簡化了對儀器驅動程序的配置。只需簡單的一個點擊，不僅可以選擇單個儀器，儀器接口卡，還可以選擇整個 I/O 配置，及配置驅動程序。更多詳情請參閱 Instrument Manager 幫助文檔。

方便地改變對象的大小

在 Agilent VEE 6.0 中，可以方便地通過拖動對象的四個角中的一個來改變對象的大小。不論在面板視圖還是在詳細視圖中都可以改變對象的大小。

缺省狀態下，對對象大小的改變限制在网格上進行，不論是在面板視圖還是在詳細視圖中。把鼠標移動到對象的角上，當鼠標變為一個雙箭頭圖標時，單擊鼠標右鍵拖動鼠標就可以任意改變對象的大小了。 如果按下shift鍵并單擊鼠標右鍵拖動鼠標就可以按网格改變對象的大小了。网格大小在詳細視圖中固定為 10 pixels，在面板視圖中缺省為也為 10 pixels。

在 VEE 5.0 中，在面板視圖中只能在网格上進行大小調整，而在詳細視圖中只能進行連續調整。

更多的鍵盤快捷鍵

為調試增加了一些新的功能鍵︰

F5 為 "Run" 或 Ctrl-G

F10 為 "Step Over"

F11 為 "Step Into"

Shift-F11 為 "Step Out"

詳細信息請參閱 Using Keyboard Shortcuts。

改進的 Sequence Line 顏色

在 Agilent VEE 6.0 中，所有連接到 sequence 輸入端的線都是 1 pixel 寬和淺灰色，這樣可以使那些真正傳輸數据的線更為醒目。(許多 VEE 程序的線都是指定順序，而不是數据。)

配置存儲選項

在 Agilent VEE 6.0 中, "Save colors/fonts with program" 和 "Save Device Configuration" 已經從 "Default Preferences" 對話框中刪除了。下面的選項則移到了 "Save File" 對話框中︰

選項

[ ] Save colors and fonts with program

[ ] Save I/O configuration with program

參閱 Save As 。

位置: File Save As?/p>

HP VEE 5.0 的新功能

感謝您使用HP VEE。這個版本中的許多功能是新開發的或從先前的版本修改而來，HP VEE Help的這個部分就是為您講述這些特點和新功能的。瀏覽以下的條目可以看到新功能的總結和与現有系統的兼容問題處理的介紹。點擊這些連接可以得到更多關于這些新功能使用的介紹。而有關這些新功能和所有HP VEE中現有功能的詳細信息，請看HP VEE Help。

HP VEE的Web站點上有支持信息，儀器驅動程序的下載指導和許多其它對用戶有幫助的資源。您可以通過 Help => HP VEE 的窗口鏈接到我們的网站。

注釋

HP VEE 3.x 之后保存文件的格式發生了變化。如果您的 HP VEE 3.x 的程序在 HP VEE 4.0 或更高版本的系統中保存過，您將不能再在 HP VEE 3.x 或更早的版本中打開了。

在 HP VEE 4.x 和 HP VEE 5.0 中保存文件的格式是相同的。然而，如果您的程序在兩個版本之間移動過，這個程序可能無法正常進行。舉例來說，如果您在 HP VEE 5.0 打開 HP VEE 4.x 的程序并使用新的功能，然后保存這個程序，您在 HP VEE 4. x還可以打開這個程序，但是，新的功能將被刪除，還有可能損壞整個程序。

ActiveX Support HP VEE for Windows 支持在裝有 Windows95/NT4.0 或更新版本的電腦上的ActiveX automation 和控件（不支持Unix）。

ActiveX automation 讓您像一個自動控制器一樣使用HP VEE。這讓您可以控制其它的諸如 Microsoft Word、Execl 以及Access 等的應用程序，比如發送數据到應用程序以產生報告的動作。對于自适應的應用程序，這個特性大大超越了我們現存的應用程序控制解決方案，例如動態數据交換（DDE）。

ActiveX controls，适用于各种供應商，利用ActiveX的自動屬性、方法和事件提供特定域服務而擴展HP VEE的功能。大多數ActiveX控制也提供一個用戶界面，讓您操縱一個類似日歷的控制來模擬基于日歷日期的事件。

監控HP VEE的Web包括一個內置的Web服務器，用來讓您通過一個使用標準HTTP協議的遠程Web瀏覽器監視一個HP VEE的應用并排除可能出現的故障。使用這個功能您可以

• 确定并排除一個運行于factory floor上的系統的故障。

• 通過HP VEE程序檢索信息。

• 監視一個測試系統

HP VEE 的對象和功能

XY顯示包含一些增強的功能讓您定義縮放比例標簽和占用的空間，以及設定數字格式。

Knob, Slider 和 Indicator 對象包含增強的功能讓您選擇對數的或線性的縮放比例，設定數字格式，以及控制tic mark標識和它們的空間。

Formula 對象現在可以接受多行的數值表達式。當您輸入一個或多個表達式的時候，您可以每行輸入一個表達式，或把表達式分割放在多個行中。

UserFunction 菜單選擇讓您自動生成從對象和函數中對 UserFunction 的調用，下列函數經常被用于調用 UserFunction ︰Call, Formula, If/Then/Else, showPanel(), and hidePanel()。

SavePanelImage 功能允許按程序复制 HP VEE UserFunction 面板到一個文件，讓您在報告中動態嵌入HP VEE 面板。

開發環境

HP VEE開發環境包含以下一些變化

• 在缺省的 Default Preferences 對話框中執行模式改為了兼容模式；模式包括VEE3，VEE4和標準。

• 選擇功能的對話框就是函數及對象瀏覽器。在UNIX中是函數瀏覽器。

• 擴展的剪貼板支持讓您從HP VEE复制對象位圖給其它的Windows應用。

• .vxe二進制文件更為精簡，RunTime 程序安全性更高。

• 對在線幫助信息的訪問更為快捷。

Instrument Manager

Instrument Manager 對話框上的按鈕標簽改變了。Configuration 區域按鈕的標簽會隨著 Instrument List 中選擇的不同而動態地發生變化。這樣會為每個選項提供更有針對性的配置信息。詳細信息請參閱 Instrument Manager。

ActiveX 的支持

HP VEE for Windows 在運行 Windows 95/NT 4.0 或更高版本的PC上支持 ActiveX automation 和 controls (不支持 UNIX)。

注釋

要使用 ActiveX 支持，HP VEE 必須在 Default Preferences 對話框中的 General 欄中被設置為 Standard 模式。該模式為所有新程序的缺省模式。請參閱 Development Environment 中 "Execution Mode" 部分，以獲得更多關于在非 Standard 模式下改變菜單，對象和函數的信息。

ActiveX Automation 可以讓你將 HP VEE 作為一個 Automation 控制器。可以控制其它應用，比如 Microsoft Word, Excel, 和 Access 以完成諸如發送數据以產生報表的操作。這將完全取代當前的對具有automation能力的應用的控制解決方案和動態數据交換。

可以從各种供貨商出得到的 ActiveX Controls 將擴展 HP VEE 的功能，因為可以通過 ActiveX automation 屬性，方法和事件提供針對域的服務。 大部分 ActiveX controls 也可以提供用戶接口以便操縱一個控件，比如操縱 Calendar 根据日歷數据開始一個事件。

推荐閱讀

Microsoft Office 97 Visual Basic Programmer's Guide
Microsoft Press, 1997
ISBN 1-57231-340-4

HP VEE 使用 Microsoft Visual Basic 的標準實現對 ActiveX 的支持。如果不熟悉 ActiveX 技朮，可以复習書中有關Object Models 和 ActiveX Controls 的章節。對這些概念的理解會有助于使用 HP VEE 的 ActiveX 功能。

閱讀 HP VEE Advanced Programming Techniques 手冊中的 "Using ActiveX Automation Objects and Controls" 可以學習如何在 HP VEE 中使用 ActiveX。可以在 \examples 目錄下發現許多新的范例程序。從 HP VEE 窗口中打開這些程序，請使用 Help => Open Example。程序位于 \ActiveXAutomation and \ActiveXControls 目錄下。

Web 監控

HP VEE 有一個內置的 Web 服務器，它允許用戶使用標準的 HTTP 協議遠程地監視和調試 HP VEE 應用程序。可以使用下面的功能︰

  • 調試一個在遠程工厂運行的系統。

  • 從HP VEE 程序中提取信息。

  • 監控一個測試系統。

在 Default Preferences 對話框中的 Web Server 欄中可以使能 Web 服務器。要使用這個功能，HP VEE 必須運行在一台連接到网絡的系統上。要從 Web 瀏覽器上遠程監控程序，必須知道系統的主机名。詳情請參閱 Default Preferences。

HP VEE對象和函數

XY Display 包括一些增強功能，這些增強功能用于定義坐標標簽和空間，以及設置數字格式。在屬性對話框可以看到這些變化。這兒只是這些變化的摘要。如果需要詳細地了解這些變化，則需要在幫助中選擇display對象，比如XY Trace。每個display對象可能包含了一些不同的設置。

  • 我們可以在屬性對話框的Colors欄中設置單個Display對象的XY顯示背景色。改變欄中的顯示區域的顏色會覆蓋Default Preferences中的默認顏色。

  • 顯示對象的詳細視圖中的有關軌跡和坐標的信息已經發生了變化。軌跡和坐標的可編輯的域變成了平的按鈕。坐標的主要點加上了標簽，而且不能在對象的詳細視圖中編輯最大/最小值。

要編輯屬性，點擊對象詳細視圖上的一個軌跡或坐標的名字會彈出一個編輯框。 或雙擊對象的標題欄使用 Properties 對話框。 你會發現軌跡和坐標不在 General 欄中了，但增加了兩個新欄 Traces 和 Scales。

軌跡的屬性從 HP VEE 4.x 開始就沒有改變過。

Scales 的屬性改變了。現在，你只能与其它屬性一起才能改變最大/最小值，兩個新增的屬性是 - Label Spacing 和 Automatic Scaling。 每個坐標的屬性都可以單獨改變。(包括新增的右坐標)

如要在主要的標志點上設置標簽空間， 點擊 Label Spacing 旁的下箭頭并選擇你的選項。對于新程序，X 坐標的默認值為每個主要的Tic，X 坐標的默認值為每兩個 Tic。對于老程序, 缺省的為 Only Max & Min 以保持与舊的顯示對象相類似的外觀。

可以在顯示對象 Properties 對話框中的的 Fonts 欄中為標簽單獨設置与對象不同的字体。在該欄中改變坐標標簽的字体會覆蓋 Default Preferences 中的缺省設置。標簽的顏色与對象文本的顏色相同，可以在 Default Preferences 對話框或對象的 Properties 對話框中設置。

Autoscale 屬性也發生了變化， 增加了一個 Automatic Scaling 模式。顯示對象詳細視圖上的 Auto Scale 按鈕是可選的。 可以在 Properties 對話框中的 General 欄的 Layout 區中將其設為可見或隱藏。可以同時設置 Automatic Scaling 模式和 X 和 Y-Main 坐標的其他屬性。當 Automatic Scaling 為 On 時，坐標會自動 "auto scales" 輸入的數据。其它 right scales (Y2 和 Y3) 与 Y-Main 保持一致。這种模式不建議用于 Strip Chart。

對于有顯示對象的老程序，Automatic Scaling 是關閉的且 Auto Scale 按鈕會出現在對象的詳細視圖中以保持与舊式顯示對象外觀的類似。加入老程序的新的顯示對象使用缺省設置，X 和 Y-Main 設為 Automatic Scaling 模式打開，但沒有 Auto Scale 按鈕。

有關 Auto Scale X, Auto Scale Y, 和 Auto Scale 的控制輸入保持不變。Scales 的控制輸入記錄可以接受一個新的被稱為 AutoScale 的文本域，它的值可以為 On 或 Off。這樣就可以動態地訪問 Automatic Scaling 了。這個功能不支持 Strip Chart。

  • 可以在 Properties 對話框中的 Number 欄下為每個坐標設置數字格式。

Marker 值的格式与它所在的坐標的數字格式相同。X 和 Y 坐標的 Delta Markers 使用在 Default Preferences 對話框中的缺省數字格式。但是，如果 X 和 Y 坐標 Marker1 和 Marker2 使用時戳格式，Delta Marker 就是用 Delta Time 格式。

  • General 欄中的 Layout 區域也發生了改變。新的選項提供了更大的靈活性來控制對象詳細視圖的外觀和安全性︰

    • 顯示 Traces Legend 會把 Trace 編輯按鈕打開和關閉。

    • 顯示 Scales Legend 會把 X 和 Y 坐標的編輯按鈕打開和關閉。

    • 顯示 Scale Labels 會把坐標標簽打開和關閉。

    • 顯示 Scroll Bars 會把滾動條打開和關閉。

    • 顯示 Auto Scale 按鈕會把 Auto Scale 按鈕打開和關閉。

    • 使能 Trace/Scale Editing 將控制 Trace 和 Scales 編輯按鈕的功能。

Knob, Slider 和 Indicator 對象

包括一些可以進行對數和線性比例縮放，設置數字格式，和控制tic mark的標記和間隔的改進。這些改進會影響 Integer/Real Knob 和 Slider, Meter, Thermometer, Fill Bar 及 Tank 對象。Color Alarm 只增加了數字格式的控制。所有這些變化都會出現在每個對象的Properties 對話框中。

• 在 General欄上的 Scale 區域中，在線性和對數縮放比例之間進行選擇。對數比例縮放不支持Integer Knob/Slider 對象。

• 在 General欄上的 Scale 區域中為tic mark設置標簽間隔。點擊Label Spacing旁的下箭頭選擇所需的選項。

• 可以把 Knob, Thermometer, Fill Bar 和 Tank 對象的 tic marks 的標簽設置為 on 和 off。以前這個功能只能支持 Slider 和 Meter 對象。

• 為Thermometer, Fill Bar, Tank, 和 Color Alarm 的 Properties 對話框增加了一個數字格式欄。現在，這些對象，比如 Knob, Slider, 和 Meter, 將會以當前的數字格式顯示它們的最大/最小值和tic 標簽。

• 詳細信息請參閱 Integer KnobInteger_Knob, Integer SliderInteger_Slid, Real KnobReal_Knob, Real SliderReal_Slider, Fill BarFill_Bar, MeterMeter, TankTank, ThermometerThermo.

Formula 對象可以接受多行的表達式。當輸入長的表達式時這個功能可以把 Formula 對象在水平和垂直方向擴展。老程序中的Formula 對象在這個版本的 HP VEE 中打開后，會具有這些新功能。當你輸入一個或多個表達式時，可用一行一個表達式，也可以把一個或多個表達式分在多行中，就像下述的范例一樣。

(a == someLongExpr

? "return someLongTrue"

: "return someLongFalse"

)

• 每行結束出都加一個回車符 (\r)；但它是不可見的。當一個 Formula 對象失去焦點時，對表達式進行語法檢查以确定它的有效性。下面兩個例子中，第一個表達式會引起語法錯誤，因為看起來一個變量名被分開了。最后的錯誤信息指向錯誤位置︰

2 * A +

3 - foo

bar - snafu

下一個例子在 foo后加了一個操作符，改正了這個問題︰

2 * A +

3 - foo -

bar - snafu

• Formula 對象的Control 輸入可以接受 Array 或 Scalar Text。

• 為了更易于編輯多行表達式，Formula 中添加了編輯功能。

• 詳細信息請參閱 FormulaFormula_Object>main。

在 UserFunction 菜單中，Generate 菜單項是層疊的，這主要是為了包括更多的選項以便可以從對象和最常用于調用 UserFunctions的函數，比如 Call, Formula, If/Then/Else, showPanel(), 和 hidePanel() 中自動產生對UserFunctions 的調用。以前，只有 Call 對象可以自動產生。其它的菜單選項可以用于產生從其他對象到 UserFunction 的調用，比如用If/Then/Else 對象引用一個Boolean 函數，或使用 showPanel() 和 hidePanel() 控制程序的外觀。其它 Generate 菜單項与此相同。

• 在 Program Explorer, 在一個UserFunction 的名字上點擊鼠標右鍵。

• 在一個 UserFunction 窗口中，使用對象菜單。

• 詳情請參閱 UserFunctionUser_Function>main.

savePanelImage() 函數動態地把一個 HP VEE UserFunction 面板复制到一個文件中。這使你可以動態地把一個HP VEE UserFunction 面板加入一個報告。UserObject 面板不支持這個功能。savePanelImage() (Device => Function & Object Browser) 位于面板類的內置函數。Formula 對象執行函數調用。savePanelImage()支持的圖形格式有 Windows Bitmap (Windows) 和 JPEG (Windows 和 UNIX)。詳細信息請參閱 savePanelImage()。

開發環境

執行模式已經在 Default Preferences 對話框的 General 欄中改為 Compatibility Mode。支持的模式有 Standard, VEE 4, VEE 3。 令外，Disable Debug Features 選擇框移到了 Debug 區域。VEE 4 和 VEE 3 模式的兼容性保持在 HP VEE 4.x 中的定義。下面將會提到，一些微小的改變不會影響到以前的程序，只要它們在最初的運行模式下執行。

這個新的 Standard 模式是 VEE 4 模式的超集，它引入了一些顯著的改變將影響到程序的兼容性。大部分的變化都可以使用ActiveX automation 功能，它們也許會hey may impact your programming techniques if you use any of the features described below - even if you do not use ActiveX. For information about ActiveX automation and controls, see ActiveX Support.

新的 HP VEE 5.0 程序會在 Standard 模式下打開。如果需要，舊的程序需要在 Default Preferences 對話框中手動地改我為新模式。當一個程序改為 Standard 模式，會發生錯誤，和以一個不再允許的事情的列表。必須修改好這些問題后，HP VEE 才能接受被轉換為Standard 模式。HP VEE 不會自己檢查和修复錯誤。下面列出了 Standard 模式兼容性改變的概述。

注釋

有關Compatibility 模式的詳細信息，可以參閱HP VEE Advanced Programming Techniques手冊的附錄 "Using the Compatibility Mode" 。如需把 HP VEE 3.x 程序改為 Standard 模式，就必須先确保它們可以在 VEE 4 模式下正确執行，然后再把它們變為Standard 模式。

Standard 模式兼容性的變化包括︰

• HP VEE 是編譯的。

• 在 Formula 對象中:

• SET 和 ByRef 是用于ActiveX automation 的關鍵字，不能用語終端的名稱。

• 為支持 ActiveX automation 提供了對新語法結構的支持，比如，excel.worksheets(1).cells(1,2) = 2。

• 輸入的沒有逗號的數組，比如 [1 2 3]，會在 Formula失去焦點時產生語法錯誤。

• 象 1 一樣的值會返回 Integer, 1.0 返回一個 Real。 先前，都只返回一個 Real。

• 為ActiveX automation 提供了兩個內置的新函數︰ CreateObject() 和 GetObject()。

• 在 PreRun 打開時( Default Preferences 中) 刪除 Variables 變量。引用 ActiveX 的全局變量不會被刪除。

• Declare Variable 對象新增了一個叫做Object for ActiveX automation 的變量類型。

• 對象變量類型可以用于 Input Terminals 作為返回類型，雖然它不能被強制。

• Device 菜單有了新的菜單項︰ActiveX Automation References，ActiveX Control References，和 ActiveX Controls。

• 全局 namespace 規則也發生了改變︰

• 局部 UserFunctions, Library 名, 全局的已聲明的和未聲明的變量，和local to library 的已聲明的和未聲明的變量都位于同一個namespace, 且必須使用唯一的名字。所以 UserFunction 和聲明的變量不能同名。

• 在一個庫中，局部 UserFunctions 和 local-to-library 聲明的變量必須位于同一個namespace, 且必須使用唯一的名字。

• To String 和 From String對象中的 READ TEXT 事務也改變了如何在使用TOKEN format with EXCLUDE CHARS時讀取指針行為。 現在，在 READ TEXT 事務后，指針前行到下一個可接受的字符，準備下一個事務。在VEE 3 和 VEE 4 模式，指針會停留在不接受的字符上。

• 在 VEE 3 和 VEE 4 模式中，一個帶有EXECUTE REWIND 事務的 To File 或 From File 對象，与另一個使用 To DataSet 或 From DataSet 的對象如果訪問同一個數据文件，會導致一些不可知的交叉，數据回被寫錯。在Standard 模式，這些不确定的交叉已經修复好 ，所以數据可以準确地寫入文件。

對所有模式都發生的改變︰

• 當打開一個老程序時，根据保存的不同，它們可能在 VEE 3 或 VEE 4 模式。有句法錯誤的表達式，比如[1 2 3] (沒有逗號) 會在程序重新裝入時被重新進行句法分析和重新修改。

• 可以接受 Formula 對象的語法，比如 lib.func(a,b) = RightHandExpr。

這种語法分析在各個模式下都是正确的，但只有在 Standard 模式下執行是正确的。( VEE 4 和 VEE 3在運行時是錯誤的。)這樣可以在修改模式時修复帶導入庫的全局 namespace 問題。.

• UNIX 程序可以放在 Standard 模式下。 這會像上面描述的那樣影響全局 namespace 。然而，ActiveX 菜單項永遠不會出現，因為它們不在UNIX 上支持該功能。一個調用支持ActiveX 的HP VEE 函數，比如，CreateObject()，的程序會發生錯誤。 Standard 模式程序帶聲明變量對象變量類型會裝入 UNIX, 但無法正常運行。

選擇函數

這個對話窗口被重新命名為Function & Object Browser(設備菜單), 它包含對ActiveX自動化和控件的支持以及對已經存在的數學函數和操作的支持。在NNIX 里面，這個對話窗口是一個函數瀏覽器，如果想得到更多的關于函數和對象，請參閱 Function and Object Browser 和VEE高級編程技朮里面的“Using ActiveX Objects and Controls”。

支持剪切板

用戶可以把Vee里面的對象剪切/拷貝/粘貼到支持圖像處理的Windows 程序。在以前只支持從Vee程序之間互相拷貝。選擇你想拷貝和剪切的對象，然后使用HP VEE Edit菜單或工具條粘貼到其他支持圖像處理的應用程序里面，這個操作同樣支持用戶對象和用戶函數。

創建保密的運行程序

這個是對于.vxe文件的。為了讓你的程序更小和更好的保密性，你可以通過File-> Save Secured RunTime Version來把程序保存成一個二進制的運行時版本。在缺省設置里面，缺省的運行時文件的設置是保存成二進制的格式，用戶可以改成ASCII格式。為了更安全，.vxe文件不能被合并到其他的程序里面，無論這個.vxe程序是否被保存成二進制格式。HP VEE 仍將導入的庫保存為.vxe 文件。

HP VEE 幫助

提供了更為便捷的信息訪問方法︰

  • 當 HP VEE 運行時，使用 F1 鍵可以很方便地打開對程序中某個對象的幫助。在詳細視圖中，點擊 F1 可以得到最后選擇的那個對象的幫助文檔。 否則，HP VEE Help Contents 窗口會出現。

  • Help 菜單中包括了許多有用的网站的連接。(只對 Windows)

  • 新的 HP VEE Help Contents 窗口中包含了到 HP VEE 范例程序的連接和說明。概括了所有与 HP VEE 一起發布的范例程序，點擊連接可以直接從幫助中打開范例程序。


概述

在VEE中，可以通過多种方式控制儀器︰

• Direct I/O對象允許通過支持的許多接口發送命令，檢索數据。

• VXIplug&play驅程可以用來調用C函數控制儀器。安捷倫科技及其它厂商在其支持的儀器提供了這些驅程。

• NI Data Acquisition庫可以用來控制連接到National Instruments PXI/PCI卡的儀器，另外還提供了某些SCXI支持。

• “Panel”驅程提供了一個簡單的用戶界面(或“前面板”)，從計算机屏幕上控制儀器。在改變VEE面板驅程中的參數時，會改變儀器的相應狀態。安捷倫科技在VEE中提供了面板驅程，涵蓋了來自不同厂商的450多种儀器。

• 可以導入I/O庫，控制PC插件電路板，然后從使用Call對象的庫中調用函數。這些庫通常作為動態鏈接庫(DLLs)提供。

面板驅程

Agilent VEE為不同儀器厂商提供了450多种面板驅程。面板驅程的工作方式是在VEE中使用顯示畫面，來控制相應物理儀器中的設置。面板驅程提供了最大的簡便易用性，節約了大多數開發時間。下圖是面板驅程范例。

帶有I/O庫的PC插件電路板

I/O庫由PC插件電路板厂商提供，其通常作為PC插件電路板的動態鏈接庫(或DLL)提供。通過使用Call對象調用庫函數，VEE可以控制PC插件電路板。下圖顯示了在VEE中提供函數的Import Library對象范例。

NI Data Acquisition庫

可以從VEE內部訪問National Instruments的Data Acquisition庫。支持的庫包括niDMM, niSWITCH, niFGEN, niSCOPE, niDQAmx和niDAQ。下圖提供了VEE中的niDMM ConfigureMeasurement事務范例。

VXIplug&play驅程

VXIplug&play驅程由儀器厂商或安捷倫科技提供。(如需安捷倫科技提供的VXIplug&play驅程列表，請參閱VEE資料或 VXIplug&play介紹。其它VXIplug&play驅程請与儀器厂商聯系。) 通過調用驅程，VEE可以使用VXIplug&play驅程控制儀器。下圖是從VEE調用VXIplug&play驅程的范例。

其它I/O功能

1 利用VEE在I/O [image] Advanced I/O子菜單中I/O的全部功能，包括︰Interface Operations, Instrument Event, Interface Event和 MultiInstrument Direct I/O。

2 可以顯示、打印或存儲總線活動，使用I/O菜單中的Bus I/O Monitor調試系統。

3 VEE包括一個ActiveX Automation服務器，以程序化方式查找儀器。

4 還可以以程序化方式在運行時改變I/O配置。

另請參閱

配置儀器，使用面板驅動程序，使用Direct I/O，使用PC插件電路板，在VEE中使用NI Data Acquisition，IVI-COM和Instrument Manager，使用VXIplug&play驅動程序，在VEE中使用ActiveX Automation


Agilent VEE中的ActiveX Automation

ActiveX Automation指VEE能夠作為Automation Server應用的Automation Controller，如MS Excel、MS Word和MS Access。下面的練習重點是在實踐中應用微軟ActiveX技朮，生成測試和測量程序報告。

另請參閱

實驗6-1: 把Agilent VEE數据發送到MS Excel

實驗6-2: 在MS Excel模板中創建Agilent VEE

實驗6-3: 使用MS Word編制Agilent VEE報告


支持的I/O接口

下表列出了支持的I/O接口。

平台 | 支持的I/O接口
Windows 2000和Windows XP | GPIB, 串行, GPIO, USB, TCP/IP, NIDAQ, VXI


Code Completion

使用Code Completion

Code Completion可以通過Code Completion窗口(如下面所示)迅速訪問有效的成員、屬性或變量。

觸發Code Completion

  • 自動觸發Code Completion

  1. 在Formula框中輸入內容時，將自動出現Code Completion窗口，列出提供的所有選項及簡要描述，這稱為Instant Completion。

Instant Completion可用的選項包括︰

        • 變量(Global, Local to Context, Local to Library)

        • VEE常數

        • 端(包括當前Formula對象的輸入端和輸出端。不包括輸出端"Result"。)

        • 內置函數

        • .NET名字空間和類

        • COM常數

  2. 在Formula對象中對象名稱后輸入一個 "."時(如OK Button, Toggle控制, .NET對象, COM對象等VEE對象)，會自動出現一個Code Completion窗口，列出該對象的所有成員或屬性。下面是Code Completion窗口范例。arraylist是一個.NET對象。Code Completion窗口中列出了arraylist 的所有成員。

在設置VEE對象(如OK按鈕, Label等等)的Declared Name屬性時，Code Completion窗口中還會列出該VEE對象的Properties。如需与Declared Name屬性有關的詳細信息，請參閱 程序屬性。

  3. 在使用'='為指明對象設置顏色屬性時，或使用'=?為預先定義為COM常數的COM對象設置值時，或使用'=?為枚舉類型的.NET對象屬性設置值時，在輸入'='后會出現Code Completion窗口，列出可用的所有選項。在下圖中，XYSin是一個指明對象。Code Completion窗口中列出了所有屬性。

在下圖中，g_ActiveMovie是一個COM對象。其屬性Appearance是一個COM常數。在輸入'='后出現Code Completion窗口。

在下圖中，Button是一個.NET對象。其屬性Anchor的類型是枚舉類型。在輸入'='后出現 Code Completion窗口及名字空間。

  • 手動觸發Code Completion

使用公式字段中的編輯光標，按"Ctrl + SPACE"觸發Code Completion窗口。Code Completion窗口列出所有可用的選項。如果目前沒有可用的選項，那么不會出現Code Completion窗口。在下圖中，如果按"Ctrl + SPACE"，那么會出現Code Completion窗口。

如果在輸入變量名稱或名字空間名稱過程中觸發Code Completion窗口，那么將列出所有可用的變量和.NET名字空間。

結束代碼

在顯示Code Completion窗口時，雙擊選項、按Tab鍵或在選中該選項時按Enter鍵，將選中結束表達式的選項。也可以在選項中手動輸入內容。在這种情況下，輸入時將高亮度顯示最近的匹配選項。在下圖中，在輸入Con時，高亮度顯示Contains。在選中選項時，將顯示選項的簡要描述。

.

備注

在默認情況下啟動VEE Code Completion。使用General欄下的File => Default Preferences會禁用VEE Code Completion。

在Default Preferences對話框中，還可以對內置函數或COM Constants啟動或禁用Code Completion支持。

另請參閱

Code Insight


Code Insight

在Formula對象中輸入函數時，Code Insight顯示一個Code Insight窗口，其中包含完整的函數原型，包括各個參數。還會為嵌套函數顯示Code Insight窗口。

觸發Code Insight

在Formula對象中函數名稱(如 VEE用戶函數、 .NET方法等的名稱)后面輸入一個開始的圓括號時，會出現一個Code Insight窗口(即黃色的工具提示)。Code Insight窗口中將列出完整的函數原型，包括返回值的圓括號。Code Insight窗口的細節程度會有所不同，如只有在.NET組件帶有自己的XML文檔文件時，才會出現.NET函數的詳細描述信息。當前參數用黑体顯示。參閱下圖︰

Code Insight窗口中顯示"2 of 9 METHOD Int32 IndexOf (System.Char value)"。

'2 of 9'表示有9种方法擁有相同的名稱"IndexOf"，這是第二种方法。如果想查看所有這9种方法，在Code Insight窗口中按UP或Down箭頭。Int32是返回值，這种方法中有一個參數。

隱去Code Insight窗口

在顯示Code Insight窗口時，在任何時候按ESC，或者輸入結束圓括號，可以隱去Code Insight窗口。在逗號上或在最左面的開始圓括號上移動光標，也可以隱去這個窗口。

如果在函數完成前隱去Code Insight窗口，希望再次看到這個窗口，那么按CTRL+SHIFT+SPACE。

備注

在默認情況下會啟動Code Insight功能。可以在General 一欄下的File [image] Default Preferences中禁用這一功能。

Code Insight支持的對象

  • .NET對象的方法

  • 局部用戶函數

  • 導入的用戶函數

  • 內置函數

  • 導入的遠程函數

  • 導入的匯編函數

  • COM對象

另請參閱

Code Completion


VEE中的關鍵字和常數

關鍵字

Keywords are reserved by Agilent VEE and cannot be used to name your objects or terminals, or used in IO transactions .

The following table lists all Keywords which cannot be used to name your objects or terminals.

AND | ASAWF | ASBOOLEAN | ASCOMPLEX | ASCOORD
ASDOUBLE | ASFS | ASINT | ASINT16 | ASINT32
ASINT64 | ASINTEGER | ASLONG | ASLONGINT | ASPCOMPLEX
ASREAL | ASREAL32 | ASREAL64 | ASSHORT | ASSPECTRUM
ASSTR | ASSTRING | ASTEXT | ASUINT8 | ASWAVEFORM
Builtin | ByRef | COORD | DIV | Main
MAXINT | MAXINT16 | MaxInt16 | MAXINT32 | MaxInt32
MAXINT64 | MaxInt64 | MaxLong | MAXLONG | MaxShort
MAXSHORT | Me | MinInt | MININT | MININT16
MinInt16 | MinInt32 | MININT32 | MinInt64 | MININT64
MOD | NOT | OR | PI | SET
XOR | XYZZY |  |  |

The following table shows all Reserved Words which cannot be used in IO transactions.

ABORT | ACK | ALL | ARRAY | BEL
BINARY | BINBLOCK | BOOL | BOOLEAN | BREAK
BS | BYTE | CAN | CASE | CHAR
CLEAR | CLOSE | CLOSEREAD | CLOSEWRITE | CMD
CMND | CONTAINER | COORD | COUNT | CPX
CR | CTL | CTS | DATA | DATAREADY
DATE | DC1 | DC2 | DC3 | DC4
DCL | DEG | DELETE | DELTIME | DLE
DMY | DSR | DTR | ECL | EM
ENQ | EOI | EOL | EOT | EQUAL
ERR | ESC | ETB | ETX | EXCLUDE
EXECUTE | EXT | FF | FIX | FS
FW | GET | GRAD | GS | GTL
H12 | H24 | HEX | HM | HMS
HT | INCLUDE | INCR | INT | INT16
INT32 | INT64 | INTERVAL | IOCONTROL | IOSTATUS
ITEM | LF | LISTEN | LJ | LLO
LOCAL | LOCALLOCKOUT | LOCK | MASK | MAXFW
MEM | MLA | MSG | MTA | NAK
NOEND | NOP | NUL | OCT | OF
OFF | ON | PASS_CONTROL | PCTL | PCX
PPC | PPU | PREFIX | PULSE | QSTR
RAD | READ | REAL | REAL32 | REAL64
REG | REMOTE | RESET | REWIND | RJ
RS | SCI | SDC | SEC | SEND
SET | SI | SIGN | SO | SOH
SPD | SPE | SPEC | SPOLL | STATE
STD | STR | STS | STX | SUB
SYN | TALK | TCT | TEXT | TIME
TOKEN | TRIGGER | TTL | UNL | UNLOCK
UNT | US | VT | WAIT | WDMY
WF | WRITE | RTS |  |

注釋

By Default True and False are considered as Boolean data. It is not recommended to use True and False as object name.

常數

The following table lists Constants in Agilent VEE and their values:

Constants | Value
MaxInt | 2147483647
MinInt | -2147483648
MaxInt16 | 32767
MinInt16 | -32768
MaxInt32 | 2147483647
MinInt32 | -2147483648
MaxInt64 | 9223372036854775807
MinInt64 | -9223372036854775808
MaxLong | 2147483647
MaxShort | 32767
PI | 3.142


NI-DAQmx

從VEE 8.0版開始，VEE支持National Instruments NIDAQmx庫。

VEE NI-DAQmx驅程的工作方式与其它VEE NIDAQ驅程類似，如NI-DMM, NI-SCOPE, NI-SWITCH, NI-FGEN和傳統NIDAQ。To/From NI-DAQmx事務對象可以訪問National Instruments NI-DAQmx Library中的大多數函數。這些事務与National Instruments NI-DAQmx C Reference Help文件中列出的函數一對一對應。按"Function Help"按鈕，同時瀏覽事務列表，用戶將被帶到該函數的幫助頁面。它假設用戶熟悉NI-DAQmx API編程，理解National Instruments DAQmx "物理信道語法"。

VEE NI-DAQmx驅程与其它VEE NIDAQ驅程有一個重大區別。其它驅程"硬鏈接到"VEE Instrument Manager中的某台設備，NI-DAQmx庫則不是。NI-DAQmx事務允許輸入NI "物理信道語法"，可以對同一個事務對象中的多個設備/端口編程。由于這一原因，為"Physical Channel"參數(如"Dev1/Line0")提供的默認值更多的是用于說明目的(告訴你正在查找哪類字符串)。用戶要足夠熟悉National Instruments DAQmx "物理信道語法"及可用的儀器，才能輸入相應的字符串。

另請參閱

To/From NIDAQ, NI-FGEN, NI-SCOPE Fetch/Read函數, 在VEE中使用NI Data Acquisition


在VISA式設備上進行標準化

安捷倫正在分期淘汰舊的不一致的I/O設備(SICL和VISA混合)，以在聲明/使用I/O設備時實現更加統一的方法(VISA)。這可以保持向下兼容能力，即使我們“鼓勵”用戶使用新式設備。

Instrument Manager將只找到ACE (Agilent Connection Expert)中設置的儀器，NIDAQ設備除外。一旦已經為ACE中的儀器完成必要的配置工作，只要儀器已經連接，那么按VEE Instrument Manager中的Find Instruments將找到這台儀器，而沒有任何進一步配置。

在默認情況下，Agilent VEE 8.0將不會在Instrument Manager中添加SICL式設備。為找到傳統設備，复選Default Preference對話框中IO欄下的Enable Pre 8.0 Legacy IO項目。

備注

在Agilent VEE 7.5中，使用Instrument Manager中的Find Instruments將一直查找Serial接口。在Agilent VEE 8.0中，只有連接一台串行設備時，才會查找Serial接口。

另請參閱

Instrument Manager