VGet, VSetコマンドでSPEL+のリザルトやプロパティーにアクセスする方法
VGetコマンドとVSetコマンドは、SPEL+プログラム中のシーケンスまたはオブジェクトのプロパティーを確認したり、設定したりするのに使用することができます。
VGetコマンドは、リザルトを取り込むのに使用されます。例えば、サーチウィンドウのサイズや位置, 許容パラメーター, カメラゲイン, 指定最大領域を変更することができます。
Vision Guide 8.0のポイント クリック インタフェースからアクセスできるプロパティーやリザルトのすべては、SPEL+プログラムからもアクセスすることができます。また、中には、複数リザルトを設定したり返したりするために、VGetコマンドとVSetコマンドを使わなければアクセスできない特殊なプロパティー(SearchWin, RobotXYU, ModelWin)があります。
VGetコマンドとVSetコマンドは、共通のシンタックスを使用しています。
これらのコマンドでは、まず、シーケンス名を指定しなければなりません。さらに、ビジョンオブジェクトのプロパティーやリザルトにアクセスするため、ビジョンシーケンス名の後にビジョンオブジェクト名を続けなければなりません。
シーケンス名, オブジェクト名, プロパティー名, リザルト名を区別するのには、ピリオドを使用します。複数リザルトを使う場合は、リザルト名の後に括弧に入れたリザルト番号を追加して、指定するリザルトを選択してください。
シーケンスのプロパティーやリザルトには、次のシンタックスを使用しています。
VGet seqName.propName, var ‘put property value in variable
VSet seqName.propName, value ‘set property to value
オブジェクトのプロパティーやリザルトには、次のシンタックスを使用しています。
VGet seqName.objName.resultName, var
VGet seqName.objName.propertyName, var
VSet seqName.objName.propertyName, value
オブジェクトの複数リザルトには、次のシンタックスを使用しています。
VGet seqName.objName.resultName(resultnum), var
また、シーケンス名とオブジェクト名は、文字列変数にすることもできます。
詳細は、以下を参照してください。
シーケンス名とオブジェクト名に変数を使用する方法
VGetの使用方法
VGetコマンドは、プロパティーやリザルトを取り込み、SPEL+変数に置換します。プログラムには、VGetからの値を受け取るのに適切なデータ型の変数を供給しなければなりません。
次に示すのは、SPEL+プログラムでのVGetの使用方法の例です。
Function Inspect
' Run the vision sequence
VRun InspectPart
Integer i, numberFound
Real area
VGet inspPart.Part1.NumberFound, numberFound
For i = 1 to numberFound
' Loop through each item that was found
' Get the area of the blob result
VGet inspPart.Part1.Area(i), area
Print "Area of result ", i, " is ", area
Next i
Fend
VSetの使用方法
VSetは、ランタイムのプロパティーの値を設定します。このコマンドを使用すると、SPEL+プログラムからダイナミックにプロパティーの設定を調整できます。
ほとんどの場合では、Vision Guideウィンドウからプロパティーを設定でき、プロパティーの設定を変更せずに、SPEL+プログラムからビジョンシーケンスを実行することができますが、プログラム実行中の変更が要求される場合に、VSetコマンドを使用します。
次に示すのは、SPEL+プログラムでのVSetの使用方法の例です。1番目のVSetは、シーケンスプロパティーを設定するのに使用されていることに注意してください。2番目のVSetでは、シーケンスの実行前に、サーチウィンドウの位置とサイズを再定義するのに使用されるSearchWinというオブジェクトプロパティーを設定しています。
Function findPart
' Set camera gain for sequence "findPart"
VSet findPart.CameraContrast, 32
' Set search window for object "part"
VSet findPart.part.SearchWin, 100, 100, 50, 50
' Run the sequenced
VRun findPart
Fend