Operator LinkParamTranslator

Operator Library: Parameters

此算子提供對所連接 link 的 properties 的讀取或寫入存取權。寫入存取權可能會透過寫入動作觸發次要 parameter 更新。

此算子的優點在於,它能夠透過 library Parameters 的其他算子來變更 link properties。此外,當 link parameter 變更時,您可以使用此算子來變更其他 module parameters。為此,您可以定義寫入動作。您也可以使用此算子來固定 link properties 並強制執行多個 link properties 之間的相依性。

輸出 O 的 link format 完全遵循輸入 I 的 format。Module parameters 反映了 port I 處 link properties 的當前狀態。您可以將 module parameters 從 Read(預設)變更為 Write。Read 模式表示對應的 link property 是唯讀的。透過這種方式,算子的執行表現類似於 LinkProperties 算子。如果 parameter 設定為 Write,則可以設定此 parameter。在這種情況下,parameter 值會傳播至對應的 link property。這會產生額外效果:輸出 port O 處的對應 link property 將無法再進行編輯,這對於選擇性地凍結 link properties 非常有用。此外,來自輸入連接的對應 link property 將不再傳播至 I 和 O 的 property。在 Write 模式下,即使無法編輯所連接輸入 link 的相同 property,也可以編輯 link property parameter。在這種情況下,輸入 link 上可能會顯示一個錯誤,指出附加的前置 module format 與 LinkParamTranslator 實例的 format 不符。

在 parameter WriteAction 中,您可定義當 link properties 變更時會發生什麼事。Activate parameter 會啟用在 WriteAction 中定義的寫入動作:

  • 如果 Activate 設定為 No,則具有存取旗標 Write 的 parameters 可能仍會被變更,但不會執行任何寫入動作。由於任何 link property 都是靜態 parameter,因此可能的寫入目標也必須是靜態的。
  • 如果寫入目標是本身 module 的 parameter,則定址的 module parameter 可以具有 Read 或 Write 模式。
  • 如果 parameter 具有 Read 模式,則寫入動作可用於在 link properties 上強制執行某些規則。

寫入動作由一個或多個方程式組成。如果您定義了多個方程式,請使用分號將它們分隔。在這些方程式的左側,您可定義哪一個 module 的哪一個 parameter 接收計算結果。請使用標記法 this 當參考此 module 的 parameter 時。一旦 link properties 變更(無論是由於傳入 link 的更新,還是對此 module parameter 的寫入存取),您在 parameter 中定義的方程式右側公式就會執行 WriteAction 並且結果會轉發至方程式左側指定的 parameter。與左側相同,您可以使用以下標記法來參考此 module 的 parameters this.

範例:

${this.MaxImgWidth} = (${this.MaxImgWidth} <= 1024) ? ${this.MaxImgWidth} : 1024;

公式可以參考設計中任何位置的靜態 module parameters 值。公式不僅可以包含 parameters 的值,還可以包含 parameters 的特定 properties,例如最小值、最大值、步進值或列舉項目的數值。

[提示]

公式語法:數學運算

此語法符合 GenICam API 標準 2.0 版。允許的公式元素與 GenICam 標準中定義的公式元素相同:

基本運算:
() 括號
+ - * / 加法、減法、乘法、除法
% 餘數
** 電源
& | ^ ~ 位元運算:and / or / xor / not
<> = > < <= >= 邏輯關係:不等於 / 等於 / 大於 / 小於 / 小於或等於 / 大於或等於
&& || 邏輯與 / 邏輯或
<< >> 向左位移 / 向右位移

表 54. 基本運算


條件運算子

<condition> ? <true_expr> : <false_expr>

範例:

${target.Value} = (${this.BitWidth} > 8) ? 2 : 1;

函數:
SGN(x) 傳回 x 的正負號。正數引數傳回 +1,負數引數傳回 -1。
NEG(x) 交換 x 的正負號。
ABS(x) 傳回 x 的絕對值。
SQRT(x) 傳回 x 的平方根。
TRUNC(x) 將 x 截斷,也就是傳回絕對值不大於 x 的最接近整數值。
FLOOR(x) 向下捨入,傳回不大於 x 的最大整數值。
CEIL(x) 向上捨入,傳回不小於 x 的最小整數值。
ROUND(x,precision) 將 x 四捨五入至 precision 所指定的小數位數,若剛好處於中間值則朝遠離零的方向捨入。
SIN(x) 傳回以度為單位之角度 x 的正弦值。
COS(x) 傳回以度為單位之角度 x 的餘弦值。
TAN(x) 傳回以度為單位之角度 x 的正切值。
ASIN(x) 傳回 x 的反正弦主值,以度表示。
ACOS(x) 傳回 x 的反餘弦主值,以度表示。
ATAN(x) 傳回 x 的反正切主值,以度表示。
EXP(x) 傳回 x 的自然指數函數,即 e 的 x 次方:ex。
LN(x) 傳回 x 的自然對數。自然對數是以 e 為底的對數:即自然指數函數 (exp) 的反函數。
LG(x) 傳回 x 的常用對數(以 10 為底)。
E() 傳回歐拉數(Euler's number),即 2.7182818284590451。
PI() 傳回圓周常數,即 3.1415926535897931。

表 55:函數


範例:

${target.Value} = NEG(${this.Parallelism})

[提示]

參數路徑

若要在設計中的任何位置存取運算子參數,您需要在公式中提供此參數的路徑。

若要存取運算子的參數,請使用以下結構:

PathToModule:在此處,您可以定義要存取其參數之運算子的相對路徑。該路徑相對於轉譯運算子本身所在的階層層級。您同時也需要定義所存取運算子的名稱。請使用斜線作為階層分隔符號。

Module:模組的名稱。

至於轉譯運算子實例本身的名稱,請使用名稱 this.

[重要] 保持模組的獨立性

不得定義指向高於翻譯運算子所在階層之階層層級的路徑。此規則遵循以下邏輯:階層式模組不得知悉其所實例化之環境的任何資訊,因為唯有如此,它才能被用作可自由重新定位與複製的模組。

[提示]

存取 Property

公式不僅能納入參數的值,還能納入參數的特定 Property,例如最小值、最大值或 step size:

  • ${PathToModule/Module.ParamName.From} 或 ${PathToModule/Module.ParamName.Min}:參數的最小有效值 PathToModule/Module.ParamName.
  • ${PathToModule/Module.ParamName.To} 或 ${ PathToModule/Module.ParamName.Max}:參數的最大有效值 PathToModule/Module.ParamName.
  • ${PathToModule/Module.ParamName.Inc}:參數兩個有效值之間的增量(step size) PathToModule/Module.ParamName.
  • ${PathToModule/Module.ParamName.Enum("EnumName")}:列舉名稱的整數值 EnumName.

在轉換公式中,您也可以參照全域常數。在轉換公式中參照全域常數時,需使用 :: 前綴來參照,例如 ${::DesignClock} 或 ${::MyGlobalConst}.

[提示]

寫入存取方程式的語法

您可以在參數 WriteAction 中定義寫入動作的方程式。它們具有以下語法:

在此,您可以為多個目標參數定義多個方程式。請使用分號作為各個方程式之間的分隔符號。

this 參照至翻譯運算子執行個體本身。

您可以找到關於此 Library 的一般介紹 Parameters in Library Parameters.

I/O Properties

Property Value
Operator Type O
Input Link I,影像資料輸入
Output Link O,影像資料輸出

支援的 Link 格式

Link Parameter Input Link I Output Link O
Bit Width [1, 64]1 As I
Arithmetic {Unsigned, signed} As I
Parallelism 任意 As I
Kernel Columns 任意 As I
Kernel Rows 任意 As I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D, VALT_SIGNAL} As I
Color Format 任意 As I
Color Flavor 任意 As I
Max. Img Width 任意 As I
Max. Img Height 任意 As I

1

輸入 Bit Width 的範圍是 [1, 64]。對於有號輸入,範圍是 [2, 64]。對於無號彩色輸入,範圍是 [3, 63],而對於有號彩色輸入,範圍則是 [6, 63]。

參數

Status
Type 靜態讀取(儘管 GUI 顯示為寫入)參數
Default 無
Range OK 或發生錯誤訊息

顯示錯誤狀態。如果參數 Activate 設定為 Yes,就會檢查其他模組參數。此參數會顯示此檢查的結果,也就是 OK 或出現錯誤訊息。

此參數不屬於最終 applet 的一部分。

Protocol
Type 靜態寫入參數
Default VALT_IMAGE2D
Range {VALT_IMAGE2D,VALT_LINE1D,VALT_PIXEL0D,VALT_SIGNAL}

允許存取連結 Property Protocol。可能的值為 VALT_IMAGE2D、VALT_LINE1D、VALT_PIXEL0D、VALT_SIGNAL。

ColorFormat
Type 靜態寫入參數
Default VAF_GRAY
Range {VAF_GRAY,VAF_COLOR,VAF_NONE,VAF_UNDEFINED}

允許存取連結屬性 ColorFormat。可能的值為 VAF_GRAY、VAF_COLOR、VAF_NONE、VAF_UNDEFINED。

ColorFlavor
Type 靜態寫入參數
Default FL_NONE
Range {FL_NONE,FL_RGB,FL_HSI,FL_YUV,FL_LAB,FL_XYZ,FL_HSL,FL_HSV,FL_YCrCb}

允許存取連結屬性 ColorFlavor。可能的值為 FL_NONE、 FL_RGB、FL_HSI、FL_YUV、FL_LAB、FL_XYZ、FL_HSL、FL_HSV、FL_YCrCb。

Arithmetic
Type 靜態寫入參數
Default UNSIGNED
Range {SIGNED, UNSIGNED}

允許存取連結屬性 Arithmetic。可能的值為 SIGNED 和 UNSIGNED。

BitWidth
Type 靜態寫入參數
Default 1
Range

允許存取連結屬性 BitWidth。

Parallelism
Type 靜態寫入參數
Default 1
Range

允許存取連結屬性 Parallelism。

KernelRows
Type 靜態寫入參數
Default 1
Range

允許存取連結屬性 KernelRows。

KernelColumns
Type 靜態寫入參數
Default 1
Range

允許存取連結屬性 KernelColumns。

MaxImgWidth
Type 靜態寫入參數
Default 1024
Range

允許存取連結屬性 MaxImgWidth。

MaxImgHeight
Type 靜態寫入參數
Default 1024
Range

允許存取連結屬性 MaxImgHeight。

WriteAction
Type 靜態寫入參數
Default
Range

定義在寫入存取連結屬性參數期間進行轉譯的方程式。

對於此參數,您可以使用自動完成功能和語法突顯。若要使用自動完成,請按一下 此參數在 Module Properties 對話方塊中的 Parameter Values 欄位 ,並輸入 “${”。關於自動完成 功能的更詳細說明,請參閱 'Autocompletion and Syntax Highlighting for Translator and Reference Operators'。

Activate
Type 動態寫入參數
Default 否
Range {No, Yes}

Yes = 已啟用透過 WriteAction 中的寫入方程式存取參考的參數。

No = 已停用透過寫入方程式存取參考的參數, 且參數 Status 已停用。

使用範例

以下範例顯示了 operator LinkParamTranslator 的使用方式: