目錄
- EnumParamReference
- EnumParamTranslator
- EnumVariable
- FloatFieldParamReference
- FloatParamReference
- FloatParamTranslator
- FloatVariable
- IntFieldParamReference
- IntParamReference
- IntParamTranslator
- IntVariable
- IntFieldVariable
- LinkProperties
- LinkParamTranslator
- StringParamReference
- ResourceReference
- IntParamSelector
- FloatParamSelector
![]()
函式庫 Parameters為 設計階段及執行階段的設計參數化提供了幾項主要優勢:
- 它允許設定通往特定參數的路徑,這些參數可能深層 嵌入於層級結構之中。 如此一來,即使是位於受保護 層級方塊中的參數(或位於其他 受保護層級方塊內嵌的受保護層級方塊中的參數),也能在執行期間進行設定與重設,因為其 參數化介面已在層級結構中提升至一個 不受存取限制的層級。
- 您可以在設計中設定參數網和/或參數鏈, 藉此將一個參數值傳遞給其他各種運算子。 透過這種方式, 您可以簡化最終小程式的參數化:最終使用者可以, 例如,僅需設定一個參數一次,而此寫入過程將觸發設計中其他 各項參數據此自動設定,無需任何進一步的 使用者互動。
- 透過該函式庫的轉換運算子,您不僅可以傳遞 參數值,還能讓設計根據各項參數的當前 值計算出新值,並將結果寫入設計中任何 位置的其他參數。 公式由您自行定義。這些 公式的語法符合GenICam 標準(GenICam API 2.0 版),並於 下文進行說明。
參數函式庫的好處在於,您可以建立 設計中參數值之間的連結(網路或鏈),而無需實際觸及 設計的資料流結構。
「函式庫參數」包含七個參考 運算子與四個轉換運算子。請參閱下方,進一步了解這兩類 運算子的相關資訊。
You find example designs using the operators of the Parameters Library in your VisualApplets installation: <installation_directory>\VisualApplets\Examples\AdvancedVAFunctions\Parameters Library.
************************************************************
參考運算子
「參數」函式庫中的 「參照」運算子,可將運算子 參數與參照運算子的地圖參數「值」(或 「欄位」)建立一對一的對應關係。您可於「參照」參數中指定 被參照的參數(路徑與名稱)。
您可以在設計 層級結構中定義一個目標位置,使被參照的參數在此處可見且可存取。該目標由 兩個參數定義:「DisplayHierarchy」和「DisplayName」。在「DisplayHierarchy」 中,您指定一個位於與參照運算子本身 相同流程內的層級方塊。 在參數「DisplayName」中,您可設定目標參數的名稱。若 「DisplayHierarchy」與「DisplayName」皆已設定,則由 「DisplayName」所定義的參數,將可在「DisplayHierarchy」所指向的層級方塊中使用。 若「DisplayName」為空,則不會建立任何參數。若「DisplayName」已設定,但 「DisplayHierarchy」為空,則由「DisplayName」定義的參數將被新增至 父層級結構(即參考運算子本身所在的 層級方塊中)。
這讓您能夠將設計中的 參數,設定為在您所希望的任何層級(該設計的)上皆可使用。例如,您 可以將受保護層級方塊內模組的參數,設定為 可直接在受保護層級方塊本身的屬性下方進行參數化。
已映射的參數本身亦可被引用。 因此,您可以在引用運算子中引用參數 Value的內容,或引用您在參數「DisplayName」和「DisplayHierarchy」中 所定義的參數。這 在由其他 受保護的層級方塊所構成的受保護層級方塊中,尤為重要。
![]() |
所有連接的參數會同時更新 |
|---|---|
|
若其中一個相連的參數發生變更(被引用參數、地圖 參數「值」,或目標參數),則所有其他相連的 參數中的值也會隨之變更。 |
要設定地圖參數,您只需按照以下 2 至 3 個步驟操作:
- 實作一個參考運算子。
- 定義一個來源參數(例如,一個位於 層級結構深處的參數)。此時,來源參數的值會 立即反映在參考運算子實例的映射參數中。
- (可選)定義第二個地圖參數的名稱與位置(目標層級方塊的 路徑及參數名稱)。
所有地圖參數在環境中均被視為一般參數。您可以 透過Framegrabber API 或Framegrabber SDK 工具(microDiagnostics 及 microDisplay)以與存取「原始」操作員參數相同的方式來存取這些參數。
每個參考運算子的實例,皆可建立設計中 任何參數的值與參考運算子實例的映射參數(參數 值)之間的一對一對應關係。
參考運算子所支援的資料類型:
要建立地圖參數,您首先需要建立一個參考運算子的實例。 針對每種可能的資料類型,您都有一種可用的參考運算子:
| 運算子名稱 | 此運算子所支援的資料類型 |
|---|---|
| IntParamReference | 整數 (VA_SINT, VA_UINT) |
| EnumParamReference | 枚舉 (VA_ENUM) |
| FloatParamReference | 浮點數 (VA_DOUBLE) |
| IntFieldParamReference | 整數欄位 (VA_SINTFIELD、VA_UINTFIELD) |
| FloatFieldParamReference | 浮點數陣列 (VA_DOUBLEFIELD) |
| StringParamReference | 字串 (VA_STRING, VA_FILENAME, VA_METADATA) |
| ResourceReference | 整數 (VA_SINT, VA_UINT) |
表 48. 參考運算子所支援的資料類型
使用參考運算子建立地圖值的程序:
-
為您所需資料型的實例化運算子建立實例。
-
雙擊參考運算子實例,以開啟其模組 屬性。

-
在「參數參考」中,請指定 您希望參考運算子實例連線至的 來源參數。
在以下範例中,一個名為 「參考運算子範例」的 IntParamReference運算子實例,連接至 模組 Buffer 中的參數YLength。 在此範例中,兩個模組 (「參考運算子範例」與 「Buffer」)皆位於同一層級。
被引用參數的路徑:

參照參數:

![]() |
參照語法 |
|---|---|
|
語法如下:
![]()
<Path> is the relative path to the hierarchical level where the referenced module "Module" is located. Use a slash as separator between different hierarchical levels. Define the path as relative path from the hierarchical level the reference operator instance is located in. <Module> is the name of the module (operator instance or hierarchical box) that contains the referenced parameter. <ParamName> is the actual name of the referenced parameter. If <Path> starts with a slash, the path is interpreted as absolute path
starting from design level (e.g., 您也可以使用 |
-
將「啟用」參數設定為「是」。
-
點擊 「套用」。所引用的 參數的值會顯示在「參數值」 欄位中(即「地圖參數」)。
在我們的範例中,運算子Buffer中的參數YLength 的值,現在也已可在參考運算子實例的參數 Value中取得:

透過您所引用的 運算子中的參數Value,您可以執行許多操作。
例如,您可以將參數 Value中所含的值,在設計中的任何位置提供給另一個模組(運算子 實例或階層式方塊)使用。操作方法如下:
-
定義一個全新的參數名稱,該參數應與參數Value 具有相同的 值。您可透過 參照運算子的DisplayName參數 來進行此設定。您在定義名稱時完全具有自由度。
-
請在您的設計中定義將承載此新參數的模組。 您可透過參考運算子的 「DisplayHierarchy」參數來進行此設定。
![]() |
設定顯示目標路徑的語法 |
|---|---|
|
若要讓新參數顯示在設計的另一處,您 需要在參數DisplayHierarchy 中指定將包含該新 參數的階層式方塊的路徑。 語法如下:
![]()
<Path> is the relative path from process level to the hierarchical level of the design where the <Hierarchical Box> is located that is to receive the new parameter. Thus, parameter DisplayHierarchy can only address hierarchical boxes within the same process. Use a slash as separator between different hierarchical levels. <HierarchicalBox> is the name of the hierarchical box that is to receive the new map parameter. 範例: |
在我們的範例中, 參考運算子實例的參數Value已連接至模組 ModuleWithConnectedParameter中的新參數 ConnectionToYLengthInModuleBuffer:

若將「Activate」參數設定為「Yes」,則在 點擊 「套用」 按鈕後,新參數將在 已連接的模組中顯示 並帶有正確的值:

因此,模組 ModuleWithConnectedParameter的新參數 ConnectionToYLengthInModuleBuffer的值 與模組 Buffer 的參數YLength的值相同。
此映射作業由參考運算子實例執行。
若這三個模組中的任何一個,其關聯參數被重設,該值 也會在所有其他模組中被重設:

層級式方框:
「參數」函式庫中的 參考運算子,可讓您將設計中的某個參數 在您所希望的任何層級(設計的)上提供使用。這在 您希望於執行時對深層嵌套於 受保護的層級方塊內的參數進行參數化時特別有用(也就是說,如果您希望將它們 作為動態寫入參數使用)。為了便於對階層 方塊進行參數化,階層方塊現在可以攜帶參數(作為 該階層方塊自身「屬性」中的參數)。
「參考運算子」允許將路徑從 階層式方塊的表面(參見 階層式方塊的「屬性」)設定至可能深層嵌套的特定參數。 如此一來,即使是 位於受保護層級方塊中的參數(或位於 其他受保護層級方塊所嵌套的受保護層級方塊中的參數),也能在執行期間進行設定與重設, 因為其參數化介面已在層級結構中上移至一個 不受存取限制的層級。
已映射的參數本身也可以被引用。因此,您可以在引用運算子中引用 參數Value(或 Field)的內容,或是引用 您在參數的 DisplayName和 DisplayHierarchy參數中定義的 參數。當受保護的層級方塊是由其他 受保護的層級方塊所建構時,這點 尤為重要。
在我們的範例中,這表示您可以參考模組 ReferenceOperatorExample中的參數 Value,以及模組 ModuleWithConnectedParameter 中的參數 ConnectionToYLengthInModuleBuffer。
參照參數 參照的值 運算子實例ReferenceOperatorExample:

參照模組 ModuleWithConnectedParameter 的參數 ConnectionToYLengthInModuleBuffer:

![]() |
請勿建立參考迴圈 |
|---|---|
|
請務必避免實作參考迴圈,例如: ModuleA.Value 參考 ModuleB.Value,以及 ModuleB.Value 參考 ModuleA.Value。 |
透過六種可用的參照運算子,提供了所有可 作為受保護層級框中參數值出現的資料類型。
************************************************************
翻譯運算子
參數函式庫中的轉換運算子,允許透過轉換方式存取 一個或多個其他運算子的參數。
進行計算時,您需定義公式。這些公式的語法符合 GenICam API 2.0 版本,相關說明如下。
讀取操作:
在參數ReadAction 中,您可定義當對 轉換運算子的參數Value進行讀取存取時, 會發生什麼情況。
與參考運算子相比,其中一項主要差異在於轉換 運算子並非單純儲存一個值。相反地,參數 Value的值是根據一個公式計算得出的。這個 公式由您在參數ReadAction 中定義。
一旦對參數 Value 進行讀取存取,您在 ReadAction中定義的公式便會執行,而結果會 傳送給請求該值的元件。

該公式可在設計中的任何位置包含運算子參數的值。一旦 其中一個值發生變化,轉換運算子參數 Value的計算結果便會產生新的結果(與 先前持有的參數Value的值不同)。
該公式不僅能納入參數的數值,還能納入參數的 特定屬性,例如最小值、最大值、步長,或是 枚舉項的數值。
寫入動作
在WriteAction 參數中,您可定義在對 轉換運算子的Value參數進行寫入存取時, 會發生什麼情況。
與參考運算子不同,您並非單純將 參數Value的值轉發給設計中的另一個參數。 相反地,參數Value的值將用於執行 您在轉換運算子的 WriteAction參數中定義的一組寫入動作。 寫入 動作由一個或多個方程式組成。透過這些方程式的左邊, 您可以定義由哪個運算子的哪個參數接收計算結果。若 您定義了多個方程式,請使用分號將各方程式分隔開來。
一旦對參數 Value 進行寫入存取,您在參數WriteAction中定義的 方程式右側的公式便會 被執行,而結果將傳遞至方程式左側 所指定的參數。
該公式可參照設計中任何位置的運算子參數值。一旦 其中任一值發生變更,當您 將該值重新寫入「值」 參數時,計算結果將會有所不同。
該公式不僅能納入參數的數值,還能納入參數的 特定屬性,例如最小值、最大值、步長,或是 枚舉項的數值。
資料類型:
您所選的運算子會決定其參數 Value 的資料類型,例如:
運算子IntParamTranslator→ 整數值
運算子FloatParamTranslator-> 浮點數 整數 值
運算子EnumParamTranslator→ 一個 枚舉的值
然而,儘管運算子定義了其參數 Value 的類型,但並未限制在寫入或讀取操作期間 所存取之參數的資料類型。 例如,運算子 IntParamTranslator定義其參數 Value的類型為整數;但該運算子中 所定義的公式仍可包含對(例如)double 類型參數的存取。
數值範圍計算公式
您也可以加入公式,用以計算參數 Value 的當前數值範圍。您可在 參數RangeFrom、 RangeTo 以及 RangeIncrement(步長)中定義相應的公式。
這些公式可在設計的任何位置包含模組參數的數值, 以及這些參數的特定屬性,例如最小值、最大值、 步長,或枚舉項的數值。
![]() |
轉譯 Operator 參數的語法 | ||
|---|---|---|---|
|
此語法符合GenICam API 2.0 版標準。允許的 公式元素與GenICam 標準中定義的公式元素完全相同。詳細說明請參閱 FloatParamTranslator及 IntParamTranslator運算子的個別文件。 參數路徑 若要在設計中的任何位置存取運算子參數,您需要在 公式中提供該參數的路徑。 若要存取運算子的參數,請使用以下語法:
![]()
存取參數屬性 這些公式不僅能納入參數的數值,還能 納入參數的特定屬性,例如最小值、最大值或步長 等:
寫入存取公式的語法 在
![]()
在此處,您可以針對多個目標參數定義多個方程式。請使用 分號作為各方程式之間的分隔符號。
WriteAction 方程式範例:
![]()
範例:
![]()
讀取存取方程式的語法 在
![]()
ReadAction 方程式範例:
![]()
全域常數 在轉換公式中,您也可以引用全域常數。全域常數可透過
在轉換公式中使用 :: 字首,例如
|
引用全域常數
除了存取模組參數及其屬性外,轉換 公式亦可參照全域常數。全域常數提供全系統通用的 數值,可用於參數轉換表達式中。
在翻譯公式中,您可以使用 :: 前綴。其
一般語法如下: ${::ConstantName},例如
${::DesignClock} 或 ${::ConstantName}
以下標準 全域常數預設可供在轉換公式中使用:
-
${::DesignClock}– 當前設計時脈頻率(以 MHz 為單位) -
${::DesignClock.Min}– 最小有效時鐘值 -
${::DesignClock.Max}– 最大有效時鐘值
當 Value 是靜態的,您可以透過設定
來建立使用者自訂的全域常數 DisplayHierarchy 模組參數
至 :: 表格中顯示 IntVariable,
FloatVariable,
IntParamTranslator,或
FloatParamTranslator 運算子。這會建立一個全域常數,供翻譯公式使用。
您可以透過以下方式存取它: ${::myGlobalConst}.
營運商清單
以下清單彙整了所有「函式庫參數」的運算子
| 運算子名稱 | 簡短說明 | 推出版本 | |
|---|---|---|---|
| EnumParamReference |
根據資料型別為 VA_ENUM 的參考參數,產生對應的映射參數。 |
Version 3.0.1 | |
| EnumParamTranslator |
產生類型為 VA_ENUM 的轉換後地圖參數。 使用類型為 VA_ENUM 的參數,在其他模組中建立多個轉換後的地圖參數。 |
Version 3.0.1 | |
| EnumVariable |
建立一個軟體變數。 |
版本 3.1 | |
| FloatFieldParamReference |
根據類型為 VA_DOUBLEFIELD 的參考參數,產生一個地圖參數。 |
Version 3.0.1 | |
| FloatParamReference |
根據類型為 VA_DOUBLE 的參考參數,產生一個映射參數。 |
Version 3.0.1 | |
| FloatParamTranslator |
產生類型為 VA_DOUBLE 的轉換後地圖參數。 使用類型為 VA_DOUBLE 的參數,在其他模組中建立多個轉換後的地圖參數。 |
Version 3.0.1 | |
| FloatVariable |
建立一個軟體變數。 |
版本 3.1 | |
| IntFieldParamReference |
根據類型為 VA_SINTFIELD 或 VA_UINTFIELD 的參考參數,產生一個映射參數。 |
Version 3.0.1 | |
| IntParamReference |
根據類型為 VA_SINT、VA_UINT 或 VA_ENUM 的參考參數,產生一個 Int64 映射參數。 |
Version 3.0.1 | |
| IntParamTranslator |
產生類型為 VA_SINT 的轉換後地圖參數。 使用類型為 VA_SINT 的參數,在其他模組中建立多個轉換後的地圖參數。 |
Version 3.0.1 | |
| IntVariable |
建立一個軟體變數。 |
版本 3.1 | |
| IntFieldVariable |
此運算子會產生一個軟體變數欄位。 |
版本 3.5 | |
| LinkProperties |
允許存取已連線連結的屬性。 |
Version 3.0.1 | |
| LinkParamTranslator |
此運算子可讀取或寫入已連線連結的屬性,並能 執行寫入操作。 |
版本 3.3.0 | |
| StringParamReference |
根據類型為 VA_STRING、VA_FILENAME 或 VA_METADATA 的參考參數,產生一個地圖參數(字串)。 |
Version 3.0.1 | |
| ResourceReference |
此運算子會根據裝置資源映射的參考,產生一個 (int) 類型的地圖參數。 |
版本 3.3.0 | |
| IntParamSelector |
此運算子會產生一個 Int64 映射參數,該參數可在 數個參考參數(類型為 VA_SINT、VA_UINT 或 VA_ENUM)之間切換。 |
版本 3.3.0 | |
| FloatParamSelector |
This operator generates a map parameter which can be switched between several referenced parameters of type VA_DOUBLE. |
版本 3.3.0 | |
表 49. 函式庫參數的運算子

![[注意]](../common/images/admon/note.png)


![[提示]](../common/images/admon/tip.png)

![[重要]](../common/images/admon/important.png)





上一頁

