PLCの変数の値が変化したらイベントを起こすようにします
PLCとPCでイベントを起こしたい変数をタグデータリンクしておきます(ここでは設定方法は説明していません)
フォームにはVariableCompoletをVariableCompolet1というインスタンス名で貼って置きます
VariableCompoletはSysmacGatewayを操作するコンポーネントで、SysmacGatewayのメモリの値が変化することでイベントが起きます

以下サンプルコードはC#で書いてあります
フォームの作成(ボタンの配置など)は省略しているので適宜ボタンなどは配置してください
button7をクリックして、ActiveプロパティをTrueにした後に、Windowsのハンドルとイベントを起こす変数をセットします
変数は「aaaa」という名前のBOOL型の変数がPLCにあるとします
private void button7_Click(object sender, EventArgs e)
{
try
{
variableCompolet1.Active = true;
variableCompolet1.WindowHandle = this.Handle;
variableCompolet1.SetEvent("aaaa", 1);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
variableCompolet1.Active = true;
variableCompolet1.WindowHandle = this.Handle;
variableCompolet1.SetEvent("aaaa", 1);
5行目 ActiveをTrueにしてコンポーネントを有効にします
6行目 アプリケーションのハンドル(this.Handle)をCompoletのWindowHandleにセットします
7行目 変数名aaaaのイベントIDを1にセットします
variableCompolet1のChangedイベントにvariableCompolet1_Changedを生成します
上記SetEventをセットした変数が変化するとvariableCompolet1_Changedが実行されます
private void variableCompolet1_Changed(object sender, EventArgs e)
{
int eventID;
string variableName;
try
{
variableCompolet1.ReciveEvent(out variableName, out eventID, 0);
object ret = variableCompolet1.ReadVariable(variableName);
Console.WriteLine(variableName + " = " + ret.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private void variableCompolet1_Changed(object sender, EventArgs e)
SetEvent("aaaa", 1)でセットした変数aaaaが変化したらChangedイベントが発生します
variableCompolet1.ReciveEvent(out variableName, out eventID, 0);
object ret = variableCompolet1.ReadVariable(variableName);
8行目 ReciveEventで変化した変数名とイベントIDを取得します
9行目 ReadVariableで取得した変数名の値を読み出します
ヘルプにはWindowsメッセージでは複数のイベントが同時に上がる場合、イベントがまとめられることがあるとの記載があります
詳しくはVariableCompoletのChangedイベントのヘルプを見てください