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