⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opcgroupreadform.cs

📁 利用OpcNet控件(包含源码)进行OPC通讯的开发样例
💻 CS
📖 第 1 页 / 共 2 页
字号:
			// 
			this.bOpcServerConnect.Location = new System.Drawing.Point(260, 56);
			this.bOpcServerConnect.Name = "bOpcServerConnect";
			this.bOpcServerConnect.Size = new System.Drawing.Size(216, 32);
			this.bOpcServerConnect.TabIndex = 111;
			this.bOpcServerConnect.Text = "Opc Server Connect";
			this.bOpcServerConnect.Click += new System.EventHandler(this.bOpcServerConnect_Click);
			// 
			// OpcGroupReadForm
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(1016, 741);
			this.Controls.Add(this.OpcItemLength);
			this.Controls.Add(this.textWriteOpcItem);
			this.Controls.Add(this.OpcItemWriteValue);
			this.Controls.Add(this.WriteOpcItem);
			this.Controls.Add(this.ReadOpcItem);
			this.Controls.Add(this.OpcItemValue5);
			this.Controls.Add(this.OpcItemValue4);
			this.Controls.Add(this.OpcItemValue3);
			this.Controls.Add(this.OpcItemValue2);
			this.Controls.Add(this.OpcItemValue1);
			this.Controls.Add(this.OpcRemoveItemName);
			this.Controls.Add(this.RemoveOpcItem);
			this.Controls.Add(this.OpcItemName);
			this.Controls.Add(this.AddOpcItem);
			this.Controls.Add(this.OpcRemoveGroupName);
			this.Controls.Add(this.RemoveOpcGroup);
			this.Controls.Add(this.OpcGroupName);
			this.Controls.Add(this.AddOpcGroup);
			this.Controls.Add(this.OpcServerDisConnect);
			this.Controls.Add(this.OpcServerRemove);
			this.Controls.Add(this.bOpcServerName);
			this.Controls.Add(this.bOpcServerConnect);
			this.Name = "OpcGroupReadForm";
			this.Text = "OpcGroupRead";
			this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
			this.Load += new System.EventHandler(this.OpcGroupReadForm_Load);
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>

		[STAThread]
		static void Main() 
		{
			Application.Run(new OpcGroupReadForm());
		}

		private void OpcGroupReadForm_Load(object sender, System.EventArgs e)
		{
		
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                      Opc Connect Server                       @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private void bOpcServerConnect_Click(object sender, System.EventArgs e)
		{
			OpcServerConnect() ;
		}

		private string tMachineString = "" ;
		private string tKEPServerExUrlString = "KEPware.KEPServerEx.V4" ;

		OpcServer tOpcServer = new OpcServer() ;

		private void OpcServerConnect()
		{
			tOpcServer.Connect( tMachineString, tKEPServerExUrlString );
			bOpcServerName.Text = tOpcServer.ServerName.ToString() ;
			OpcServerRemove.Text = tOpcServer.HostInfo.ToString() ;
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                    Opc DisConnect Server                      @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private void OpcServerDisConnect_Click(object sender, System.EventArgs e)
		{
			tOpcServer.Disconnect() ;
			OpcServerRemove.Text = "Opc Server Disconnect" ;
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                           Add Opc Group                       @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private void AddOpcGroup_Click(object sender, System.EventArgs e)
		{
			OpcAddGroup() ;
		}

		private OpcGroup tOpcGroup ;
		private string tGroupName = "thisGroup" ;
		private bool tActive = true ;
		private int tEquestedUpdateRate = 1000;
		private float tDeadBand = 0.0F ;
		private string tReturnGroupName ;

		private void OpcAddGroup()
		{
			tOpcGroup = tOpcServer.AddGroup(tGroupName, tActive, tEquestedUpdateRate, ref tDeadBand, 0, 0);
			tReturnGroupName = tOpcGroup.Name.ToString() ;
			OpcGroupName.Text = tReturnGroupName ;

			tOpcGroup.DataChanged += new DataChangeEventHandler( DataChangedHandler );
			tOpcGroup.ReadCompleted += new ReadCompleteEventHandler( ReadCompleteHandler );
			tOpcGroup.WriteCompleted += new WriteCompleteEventHandler( WriteCompleteHandler );
			tOpcGroup.AdviseIOPCDataCallback();
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                        Remove Opc Group                       @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private void RemoveOpcGroup_Click(object sender, System.EventArgs e)
		{
			tOpcGroup.Remove(true) ;
			OpcGroupName.Text = "Opc Group already Remove" ;
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                           Add Opc Item                        @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private void AddOpcItem_Click(object sender, System.EventArgs e)
		{
			OpcAddItem() ;
		}

		private System.Array tOPCItemsValueReturn = Array.CreateInstance( typeof(String), 5 ) ;
		private OPCItemDef[] tOPCItems ;
		private string tOPCItemsPath0 = "WaterMotorControl.Group02" ; 
		private string tOPCItemsName0 = "WaterMotorpictureBox1" ; 
		private string tOPCItemsPath1 = "WaterMotorControl.Group02" ; 
		private string tOPCItemsName1 = "WaterMotorpictureBox2" ; 
		private string tOPCItemsPath2 = "WaterMotorControl.Group02" ; 
		private string tOPCItemsName2 = "WaterMotorpictureBox3" ; 
		private string tOPCItemsPath3 = "WaterMotorControl.Group02" ; 
		private string tOPCItemsName3 = "WaterMotorpictureBox4" ; 
		private string tOPCItemsPath4 = "WaterMotorControl.Group02" ; 
		private string tOPCItemsName4 = "WaterMotorpictureBox5" ; 

		private System.Int32 tOpcAddItems ;
		private OPCItemResult[] tOPCItemResult ;

		private void OpcAddItem()
		{
		  tOPCItems = new OPCItemDef[5];
  		tOPCItems[0] = new OPCItemDef();
  		tOPCItems[0].HandleClient = 1001;
  		tOPCItems[0].AccessPath = tOPCItemsPath0 ; 
  		tOPCItems[0].ItemID = tOPCItemsName0; 
			tOPCItems[0].Active = true ;
			tOPCItems[0].RequestedDataType = VarEnum.VT_R8 ;

  		tOPCItems[1] = new OPCItemDef();
  		tOPCItems[1].HandleClient = 1002;
  		tOPCItems[1].AccessPath = tOPCItemsPath1 ; 
  		tOPCItems[1].ItemID = tOPCItemsName1; 
			tOPCItems[1].Active = true ;
			tOPCItems[1].RequestedDataType = VarEnum.VT_R8 ;

			tOPCItems[2] = new OPCItemDef();
  		tOPCItems[2].HandleClient = 1003;
  		tOPCItems[2].AccessPath = tOPCItemsPath2 ; 
  		tOPCItems[2].ItemID = tOPCItemsName2; 
			tOPCItems[2].Active = true ;
			tOPCItems[2].RequestedDataType = VarEnum.VT_R8 ;

  		tOPCItems[3] = new OPCItemDef();
  		tOPCItems[3].HandleClient = 1004;
  		tOPCItems[3].AccessPath = tOPCItemsPath3 ; 
  		tOPCItems[3].ItemID = tOPCItemsName3; 
			tOPCItems[3].Active = true ;
			tOPCItems[3].RequestedDataType = VarEnum.VT_R8 ;

  		tOPCItems[4] = new OPCItemDef();
  		tOPCItems[4].HandleClient = 1005;
  		tOPCItems[4].AccessPath = tOPCItemsPath4 ; 
  		tOPCItems[4].ItemID = tOPCItemsName4; 
			tOPCItems[4].Active = true ;
			tOPCItems[4].RequestedDataType = VarEnum.VT_R8 ;

			tOPCItemResult = new OPCItemResult[1];
  		tOPCItemResult[0] = new OPCItemResult();

			tOpcAddItems = tOpcGroup.AddItems(tOPCItems,out tOPCItemResult) ;
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                        Remove Opc Item                        @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private int[] tArrayHandleServer  ;
		private int[] tArrayRemoveOpcItemError  ;
		private System.Int32 tArrayRemoveOpcItemReturn ;

		private void RemoveOpcItem_Click(object sender, System.EventArgs e)
		{
		  tArrayHandleServer = new int[5];
  		tArrayHandleServer[0] = tOPCItemResult[0].HandleServer;
  		tArrayHandleServer[1] = tOPCItemResult[1].HandleServer;
  		tArrayHandleServer[2] = tOPCItemResult[2].HandleServer;
  		tArrayHandleServer[3] = tOPCItemResult[3].HandleServer;
  		tArrayHandleServer[4] = tOPCItemResult[4].HandleServer;

			tArrayRemoveOpcItemReturn = tOpcGroup.RemoveItems(tArrayHandleServer,out tArrayRemoveOpcItemError) ;
			OpcRemoveItemName.Text = tArrayRemoveOpcItemReturn.ToString() ; 
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                          Read Opc Item                        @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private void ReadOpcItem_Click(object sender, System.EventArgs e)
		{
			OpcReadOpcItem() ;
		}

		private int tCancelID ;
		private int[] tArrayError ;
		private int tRtc ;
		private int[] tItemSrvHnd = new int[5];

		private void OpcReadOpcItem()
		{
			tItemSrvHnd[0] = tOPCItemResult[0].HandleServer;
			tItemSrvHnd[1] = tOPCItemResult[1].HandleServer;
			tItemSrvHnd[2] = tOPCItemResult[2].HandleServer;
			tItemSrvHnd[3] = tOPCItemResult[3].HandleServer;
			tItemSrvHnd[4] = tOPCItemResult[4].HandleServer;
			tRtc = tOpcGroup.Read(tItemSrvHnd, 1, out tCancelID, out tArrayError ) ;  // async read
		}

		private void ReadCompleteHandler( object sender, ReadCompleteEventArgs e )
		{
			OpcItemValue1.Text = e.sts[0].DataValue.ToString();
			OpcItemValue2.Text = e.sts[1].DataValue.ToString();
			OpcItemValue3.Text = e.sts[2].DataValue.ToString();
			OpcItemValue4.Text = e.sts[3].DataValue.ToString();
			OpcItemValue5.Text = e.sts[4].DataValue.ToString();
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                      Write Opc Item                           @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private int[] tWriteItemSrvHnd = new int[1];
		private object[] tWriteArrayValue = new object[1];
		private int tWtc ;

		private void WriteOpcItem_Click(object sender, System.EventArgs e)
		{
			OpcWriteOpcItem() ;
		}

		private void OpcWriteOpcItem()
		{
		  tWriteArrayValue = new object[1];
  		tWriteArrayValue[0] = new object();
			tWriteArrayValue[0] = textWriteOpcItem.Text ;
			tWriteItemSrvHnd[0] = tOPCItemResult[0].HandleServer;
			tWtc = tOpcGroup.Write(tWriteItemSrvHnd,tWriteArrayValue, 1, out tCancelID, out tArrayError ) ;  // async read
		}

		private void WriteCompleteHandler( object sender, WriteCompleteEventArgs e )
		{
			OpcItemWriteValue.Text = e.res[0].Error.ToString() ;
		}

		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@                      Item Data Change                         @@@@@@@@@@@@@@@@@@
		// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

		private void DataChangedHandler( object sender, DataChangeEventArgs e )
		{
			OpcItemLength.Text = e.sts.Length.ToString() ;
			for( int i = 0 ; i < e.sts.Length ; i++ )
			{
				switch(e.sts[i].HandleClient)       
				{         
					case 1001:   
						OpcItemValue1.Text = e.sts[i].DataValue.ToString();
						break;                  
					case 1002:            
						OpcItemValue2.Text = e.sts[i].DataValue.ToString();
						break;                  
					case 1003:            
						OpcItemValue3.Text = e.sts[i].DataValue.ToString();
						break;                  
					case 1004:            
						OpcItemValue4.Text = e.sts[i].DataValue.ToString();
						break;                  
					case 1005:            
						OpcItemValue5.Text = e.sts[i].DataValue.ToString();
						break;                  
					default:            
						break;      
				}
			}
		}



	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -