pcsdk之订阅数据
1. 对于数据,总希望能够在对应状态发生变化的时候,C#端能自动获取,而非人为手动触发,例如下图的a100数据,数据改变时,C#端能自动获取最新状态。
2. 对于以上需求,可以通过EventHandler来处理。即当有事件发生时,触发相关代码。
3. 代码如下
private void subscribe_value()
{
rd = controller.Rapid.GetRapidData("T_ROB1", "Module1", "a100");
rd.ValueChanged += new EventHandler<DataValueChangedEventArgs>(rd_ValueChanged);
//添加对模块Module1下的a100数据的订阅,若数据状态发生变化,触发rd_ValueChanged
}
private void rd_ValueChanged(object sender, DataValueChangedEventArgs e)
{
this.Invoke(new EventHandler(UpdateGUI), sender, e);
}
private void UpdateGUI(object sender, System.EventArgs e)
{
Num nTemp = (Num)this.rd.Value;
this.textBox1.Text = nTemp.Value.ToString();
}
4. 使用pcsdk,在C#与机器人建立连接后,执行subscribe_value(),添加订阅。此时只有在变量a100的值发生变化,触发对应事件