连接和断开整个列表

<< 点击显示目录 >>

主页  PVI通信 > PVI帮助信息 > PVI Services > 所有列表类型的基础服务 > 用于管理通信对象的列表 > 变量收集类 >

连接和断开整个列表

和所有的列表类型一样,Connect调用连接所有的通信对象,Disconnect则断开它们。调用 Connect 方法还发出指令,为列表中的每个对象建立连接。然后 CollectionConnected 事件报告列表中哪些对象被成功连接。在另一边,CollectionError事件报告在建立连接时返回错误的对象。整个列表的连接是通过CollectionDisconnected事件和所有成功断开连接的列表来确认的。此外,集合提供了通过指令的状态直接了解单个事件的可能性。这就是在连接通信对象的列表时,每个对象的个别连接事件的报告方式。发生的错误或断开连接也是通过这种方式用单个错误或断开连接事件来报告的。

 

"集合 "例子

下面的例子将解释如何使用CPU VariableCollection对象处理一个集合。

 

// Definition of global communication objects
private Service service;
private Cpu cpu;
///</summary>
/// 创建和连接服务对象
///</summary>
private void btConnectPLC_Click(object sender, System.EventArgs e)
{
  service = new Service("Service1");
  service.Connect();
  service.Connected += new PviEventHandler(service_Connected);
}
///</summary>
/// Establish connection to CPU
///</summary>
private void service_Connected(object sender, PviEventArgs e)
{
  cpu = new Cpu(this.service,"Cpu");
  /********************/
  /* TCP/IP connection*/
  /********************/
  cpu.Connection.DeviceType = BR.AN.PviServices.DeviceType.TcpIp;
  cpu.Connection.TcpIp.SourceStation = 1;
  cpu.Connection.TcpIp.DestinationStation = 2;
  cpu.Connection.TcpIp.DestinationIpAddress = "10.43.70.202";
  // Connect Cpu object
  cpu.Connect();
  cpu.Connected += new PviEventHandler(cpu_Connected);
 
  /****************************************************************/
 /* 为VariableCollection对象(变量)添加处理程序 */ /* CPU的VariableCollection对象(变量)*/ /*。
 /* CPU的处理程序 */
  /****************************************************************/
  cpu.Variables.Uploaded += new PviEventHandler(Variables_Uploaded);
 
  // 用于通知个别事件的处理程序
  cpu.Variables.Connected += new PviEventHandler(VariableConnect);
  cpu.Variables.Disconnected += new PviEventHandler(VariableDisconnect);
 
  // 用于处理整个列表事件的处理程序
  cpu.Variables.CollectionConnected += new CollectionEventHandler(VariableCollectionConnected);
  cpu.Variables.CollectionDisconnected += new CollectionEventHandler(VariableCollectionDisconnected);
}
///</summary>
/// CPU对象连接成功
///</summary>
private void cpu_Connected(object sender, PviEventArgs e)
{
  this.tbEvents.Text += "Cpu connected.\r\n";
  this.btConnectPVs.Enabled = true;
  this.btDisconnectPVs.Enabled = true;
  this.btUploadGlobalPVs.Enabled = true;
}
///</summary>
/// 上传全局变量
///</summary>
private void btUploadGlobalPVs_Click(object sender, System.EventArgs e)
{
  this.cpu.Variables.Upload();
}
///</summary>
/// 处理Uploaded事件
///</summary>
private void Variables_Uploaded(object sender, PviEventArgs e)
{
  this.tbEvents.Text += "Global variables uploaded.\r\n\r\n";
}
///</summary>
/// Connect the entire list
///</summary>
private void btConnectPVs_Click(object sender, System.EventArgs e)
{
  this.cpu.Variables.Connect();
}
///</summary>
/// Disconnect the entire list
///</summary>
private void btDisconnectPVs_Click(object sender, System.EventArgs e)
{
  this.cpu.Variables.Disconnect();
}
///</summary>
/// 为列表中的一个变量对象处理一个连接的事件
///</summary>
private void VariableConnect(object sender, PviEventArgs e)
{
  Variable tmpVar = (Variable)sender;
  this.tbEvents.Text += String.Format("Variable \"{0}\" connected.\r\n",tmpVar.Name);
}
///</summary>
///为列表中的一个变量对象处理断开连接的事件
///</summary>
private void VariableDisconnect(object sender, PviEventArgs e)
{
  Variable tmpVar = (Variable)sender;
  this.tbEvents.Text += String.Format("Variable \"{0}\" disconnected.\r\n",tmpVar.Name);
}
///</summary>
/// 处理CollectionConnected事件
/// CollectionEventArgs类型的参数包含一个所有成功连接的对象列表
///</summary>
private void VariableCollectionConnected(object sender, CollectionEventArgs e)
{
  this.tbEvents.Text += "\r\nFollowing variables are connected:\r\n";
  // 通过对象列表运行
  foreach (Variable tmpVar in e.Objects.Values)
  {
    this.tbEvents.Text += String.Format("   \"{0}\"\r\n",tmpVar.Name);
  }
}
  ///</summary>
 /// 处理CollectionDisconnected事件
/// CollectionEventArgs类型的参数包含一个所有成功断开连接的对象列表
  ///</summary>
private void VariableCollectionDisconnected(object sender,CollectionEventArgs e)
{
  this.tbEvents.Text += "\r\nFollowing variables are disconnected:\r\n";
  // 通过对象列表运行
  foreach (Variable tmpVar in e.Objects.Values)
  {
    this.tbEvents.Text += String.Format("   \"{0}\"\r\n",tmpVar.Name);
  }
}