variant ReadVariable (short ProcNo, char pVariableName[] );
取得した値を返却します。返却値のデータ型は、参照先のグローバル変数のデータ型と一致させてください。
ProcNo:アクセス先のプロセス番号を1~100の範囲で指定します。
pVariableName:指定プロセス上のグローバル変数名を指定します。NULL終端の文字列で指定しますので変数名をダブルクォーテーションで括るか、または文字配列変数を使用してください。構造体のメンバも指定可能です。
指定のプロセスから指定のグローバル変数の値を取得します。
プロセスから取得できるのはグローバル変数の値に限られます。ローカル変数は取得できません。
指定のプロセスがシステム上にアサインされていない場合や、指定のプロセスに指定したグローバル変数が存在しない場合はランタイムエラーとなります。
本関数の戻り値のデータ型は、必ず参照するグローバル変数と同一のデータ型としてください。異なるデータ型とした場合、正しい結果が得られません。(正しい結果が得られなくてもエラーにはならない。)
〇PCベースコントローラ
〇InterMotion
char g_VChr;
int g_VInt;
double g_VDbl;
struct tagPosAttrib {
int speed;
double pos0[MaxRobAxes];
};
tagPosAttrib g_PosAtr;
・・・・
//プロセス1上のg_VIntP1変数のデータ型はint型
//プロセス2上のg_VDblP2変数のデータ型はdouble型
//プロセス3上のg_PosAtrP3変数のデータ型はtagPosAttrib構造体と同一型
void main() {
char varName[10];
・・・・
//プロセス1のg_VIntP1変数をリードします
strcpy(varName, "g_VIntP1");
g_VInt = ReadVariable(1, "g_VIntP1");
//これもプロセス1のg_VIntP1変数をリードします
g_VInt = ReadVariable(1, varName);
//プロセス2のg_VDblP2変数をリードします
g_VDbl = ReadVariable(2, "g_VDblP2");
//プロセス3のg_PosAtrP3変数のspeedメンバをリードします
g_PosAtr.speed = ReadVariable(3, "g_PosAtrP3.speed");
//データ型が異なるため正しい結果が得られない
g_VChr/*char型*/ = ReadVariable(1, "g_VintP1"/*int型*/);
//これもデータ型が異なるとみなされます
g_VDbl/*double型*/ = ReadVariable(3, "g_PosAtrP3.speed"/*構造体メンバ*/);
・・・・
}