ID : 5491
TrackBufferIndexes
構文
TrackBufferIndexes (コンベア番号 [, 対象データ[, ユーザデータ]])
指定項目
- コンベア番号
-
使用するコンベア番号(1~16)を整数型データで指定します。
(Ver.1.11.*以前はコンベア1、コンベア2のみ指定可能です。) - 対象データ
-
取得するデータを整数型データで指定します。省略可能です。省略すると"-1"を指定したことになります。
設定値 内容 -1 すべてのデータが対象。 1 「TrackTargetPos」でトラッキング対象ワークに設定したデータが対象。
「TrackTargetPos」の第4引数のモード1を有効にして、トラッキング対象ワークのデータを
トラッキングバッファに残した状態で実行する必要があります。2 設定値"1"で対象となるデータを除いた、すべてのデータが対象。この項目はVer.2.0.*から使用可能です。 3 ワークの現在位置がトラッキング範囲上流限界よりも上流にあるデータが対象。
この項目はVer.2.0.*から使用可能です。4 ワークの現在位置がトラッキング範囲上流限界よりも下流にあるデータが対象。
この項目はVer.2.0.*から使用可能です。5 ワークの現在位置がトラッキング範囲下流限界よりも上流にあるデータが対象。
この項目はVer.2.0.*から使用可能です。6 ワークの現在位置がトラッキング範囲下流限界よりも下流にあるデータが対象。
この項目はVer.2.0.*から使用可能です。7 ワークの現在位置がトラッキング範囲内にあるデータが対象。
この項目はVer.2.0.*から使用可能です。 - ユーザデータ
- 整数型データで指定します。負の値を指定した場合は、ユーザデータの判定をしません。
省略可能です。省略した場合は"-1"を指定したことになります。この項目はVer.2.0.*から使用可能です。
戻り値
指定した対象データ、およびユーザデータに該当するデータのインデックス番号を返します。
バリアント(Variant)型データの1次配列で返します。各インデックス番号は整数型データです。
トラッキングバッファが空の場合は、「VarType」コマンドの値が"VT_NULL(0)"になるバリアント(Variant)型データを返します。
対象データ | ユーザデータ | 戻り値 |
---|---|---|
指定 | 省略または負の値 | ユーザデータを問わず、指定した対象データのインデックス番号を返す。 |
指定 | 指定 | 指定したユーザデータに属する、指定した対象データのインデックス番号を返す。 |
省略(-1) | 省略または負の値 | トラッキングバッファ内の全てのデータのインデックス番号を返す。 |
省略(-1) | 指定 | 指定したユーザデータに属するトラッキングバッファ内の全てのデータのインデックス番号を返す。 |
解説
トラッキングバッファに保存されているデータの中から、指定した対象データ、およびユーザデータに該当するデータのインデックス番号だけを抽出し、配列にして返します。
取得したインデックス番号を用いて、トラッキングバッファデータを指定し、TrackBufferReadによりデータの参照を行います。
関連項目
TrackBufferDelete、 TrackBufferRead、 TrackTargetPos、 TrackTargetRelease、 コンベアトラッキング用コマンド、 円形トラッキング用コマンド
注意事項
コンベアおよび円形トラッキング専用のコマンドです。
用例
Sub Main
' 全てのデータのインデックス番号を抽出
Dim vIndex as Variant
vIndex = TrackBufferIndexes(1, -1)
Dim idx as long
For idx = LBound(vIndex) To UBound(vIndex)
' インデックス番号を用いて、トラッキングバッファより指定されたデータを取得
Dim vVal as Variant
vVal = TrackBufferRead(1, vIndex(idx), -1)
' データ出力
PrintDbg "enc=" & vVal(0), _
"x=" & vVal(1), _
"y=" & vVal(2), _
"z=" & vVal(3), _
"rx=" & vVal(4), _
"ry=" & vVal(5), _
"rz=" & vVal(6)
Next
End sub
下に要素が空かどうかで処理を分ける例を示します。
#include "variant.h"
Sub Main
' 全てのデータのインデックス番号を抽出
Dim vIndex as Variant
vIndex = TrackBufferIndexes(1, -1)
If VarType(vIndex) = VT_EMPTY then
' 要素が空の場合の処理
'・・・
ElseIf VarType(vIndex) And VT_ARRAY then
' 要素が空でない(要素が配列になっている)場合の処理
If ( UBound( vIndex ) <> -1 ) then
' 要素の数がゼロでないことを確認してデータ読み出し
' インデックス番号を用いて、トラッキングバッファより指定されたデータを取得
Dim vVal as Variant
vVal = TrackBufferRead(1, UBound( vIndex ), -1)
'・・・
End If
'・・・
End If
End Sub
ID : 5491