c# opc客戶(hù)端開(kāi)發(fā)_第1頁(yè)
c# opc客戶(hù)端開(kāi)發(fā)_第2頁(yè)
c# opc客戶(hù)端開(kāi)發(fā)_第3頁(yè)
c# opc客戶(hù)端開(kāi)發(fā)_第4頁(yè)
c# opc客戶(hù)端開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using OPCAutomation;using System.Net;namespace Opc_Client public partial class Form1 : Form public Form1() InitializeCompone

2、nt(); #region 私?有®D變À?量¢? OPCServer SyServer; OPCGroups SyGroups; OPCGroup SyGroup; OPCItems SyItems; OPCItem SyItem; string strHostIP = string.Empty; string strHostName = string.Empty; bool opc_connected = false; /連¢?接¨®狀Á¡ä態(tài)¬? int itmHandleClient =

3、 0; /客¨ª戶(hù)¡ì端?句?柄À¨² int itmHandleServer = 0; /服¤t務(wù)?端?句?柄À¨² #endregion #region 方¤?法¤¡§ private void GetLocalServer() IPHostEntry IPHost = Dns.GetHostEntry(Dns.GetHostName(); if (IPHost.AddressList.Length > 0) strHostIP = I

4、PHost.AddressList4.ToString(); this.tboxServerIP.Text = strHostIP.ToString(); else return; IPHostEntry ipHostEntry = Dns.GetHostByAddress(strHostIP); strHostName = ipHostEntry.HostName.ToString(); try SyServer = new OPCServer(); object serverList = SyServer.GetOPCServers(strHostName); foreach (strin

5、g turn in (Array)serverList) this.cmbServerName.Items.Add(turn); cmbServerName.SelectedIndex = 0; btnConnServer.Enabled = true; catch (Exception err) MessageBox.Show("枚?舉¨´本À?地Ì?OPC服¤t務(wù)?器¡Â出?錯(cuò)䨪:êo"+err.Message,"提¬¨

6、2;示º?信?息¡é",MessageBoxButtons.OK,MessageBoxIcon.Warning); private bool CreatGroup() try SyGroups = SyServer.OPCGroups; SyGroup = SyGroups.Add("OPCDOTNETGROUP"); SetGroupProperty(); SyGroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(SyGroup_DataChange); SyG

7、roup.AsyncWriteComplete += new DIOPCGroupEvent_AsyncWriteCompleteEventHandler(SyGroup_AsyncWriteComplete); SyItems = SyGroup.OPCItems; catch (Exception err) MessageBox.Show("創(chuàng)ä¡ä建¡§組Á¨¦出?現(xiàn)?錯(cuò)䨪誤¨®"+err.Message,"提¬&#

8、168;¢示º?信?息¡é",MessageBoxButtons.OK,MessageBoxIcon.Warning); return false; return true; private void LoadDataToTree(OPCBrowser oPCBrowser, TreeNodeCollection treeNodeCollection) oPCBrowser.Organization.ToString(); oPCBrowser.ShowBranches(); foreach (object turn in oPCBrowser

9、) TreeNode node = treeNodeCollection.Add(turn.ToString(); treeView1.SelectedNode = node; oPCBrowser.MoveDown(turn.ToString(); LoadDataToTree(oPCBrowser, node.Nodes); oPCBrowser.MoveUp(); oPCBrowser.ShowLeafs(false); foreach (object turn in oPCBrowser) treeView1.SelectedNode.Nodes.Add(turn.ToString()

10、; private void RecurBrows(OPCBrowser oPCBrowser) /string i = oPCBrowser.Organization LoadDataToTree(oPCBrowser, treeView1.Nodes0.Nodes); oPCBrowser.ShowBranches(); oPCBrowser.ShowLeafs(true); foreach (object turn in oPCBrowser) listBox1.Items.Add(turn.ToString(); private void GetServerInfo() this.to

11、olStripStatusLabel1.Text = "開(kāi)a始º?時(shí)º¡À間?:êo" + SyServer.StartTime.ToString() + " " this.toolStripStatusLabel2.Text = "版ã?本À?:êo" + SyServer.MajorVersion.ToString() + "." + SyServer.MinorVersion.ToString() + "."

12、+ SyServer.BuildNumber.ToString(); private Boolean ConnectRemoteServer(string remoteServerIP, string remoteServerName) try SyServer.Connect( remoteServerName,remoteServerIP); if (SyServer.ServerState = (int)OPCServerState.OPCRunning) this.toolStripStatusLabel3.Text = "已°?連¢?接¨

13、74;到Ì?-" + SyServer.ServerName + " " else this.toolStripStatusLabel3.Text = "狀Á¡ä態(tài)¬?:êo" + SyServer.ServerState.ToString() + " " catch (Exception err) MessageBox.Show("連¢?接¨®遠(yuǎn)?程¨¬服¤t務(wù)?器¡Â出?錯(cuò)

14、䨪:êo" + err.Message, "提¬¨¢示º?信?息¡é", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; return true; private void SetGroupProperty() SyServer.OPCGroups.DefaultGroupIsActive = Convert.ToBoolean(boBox1.SelectedItem); SyServer

15、.OPCGroups.DefaultGroupDeadband = Convert.ToInt32(textBox1.Text); SyGroup.UpdateRate = Convert.ToInt32(textBox2.Text); SyGroup.IsActive = Convert.ToBoolean(comboBox2.SelectedItem); SyGroup.IsSubscribed = Convert.ToBoolean(comboBox3.SelectedItem); #endregion #region 事º?件t void SyGroup_AsyncWrite

16、Complete(int TransactionID, int NumItems, ref Array ClientHandles, ref Array Errors) this.lblState.Text = "" for (int i = 1; i <= NumItems; i+) this.lblState.Text += "Tran:êo" + TransactionID.ToString() + " CH:êo" + ClientHandles.GetValue(i).ToString() + &q

17、uot; Error:êo" + Errors.GetValue(i).ToString(); void SyGroup_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) for (int i = 1; i <= NumItems; i+) this.tboxcurrvalue.Text = ItemValues.GetValue(i).ToString

18、(); this.tboxcurrquality.Text = Qualities.GetValue(i).ToString(); this.tboxcurrtime.Text = TimeStamps.GetValue(i).ToString(); #endregion private void Form1_Load(object sender, EventArgs e) btnConnServer.Enabled = false; btnServerBrush.Enabled = false; btnsetproparty.Enabled = false; btnwritevalue.En

19、abled = false; treeView1.Nodes.Add("Root"); GetLocalServer(); /SyServer.OPCGroups.DefaultGroupIsActive = Convert.ToBoolean(boBox1.SelectedItem); private void listBox1_SelectedIndexChanged(object sender, EventArgs e) try if (itmHandleClient != 0) this.tboxcurrvalue.Text = "" this.

20、tboxcurrquality.Text = "" this.tboxcurrtime.Text = "" Array Errors; OPCItem bItem = SyItems.GetOPCItem(itmHandleServer); int temp = new int2 0, bItem.ServerHandle ; Array serverHandle = (Array)temp; SyItems.Remove(SyItems.Count, ref serverHandle, out Errors); /int cancelID; itmHa

21、ndleClient = 1234; SyItem = SyItems.AddItem(listBox1.SelectedItem.ToString(), itmHandleClient); itmHandleServer = SyItem.ServerHandle; /SyItem.Read(listBox1.SelectedItem.ToString(), out Value, out Quality, out TimeStamp); /SyGroup.AsyncRead(1, ref serverHandle, out Errors, 2016, out cancelID); catch

22、 (Exception err) itmHandleClient = 0; this.tboxcurrvalue.Text = "Error ox" this.tboxcurrquality.Text = "Error ox" this.tboxcurrtime.Text = "Error ox" MessageBox.Show("此ä?項(xiàng)?為a系¦Ì統(tǒng)ª3保À¡ê留¢?項(xiàng)?:êo"+err.Message,"提&#

23、172;¨¢示º?信?息¡é"); private void Form1_FormClosing(object sender, FormClosingEventArgs e) if (!opc_connected) return; if (SyGroup != null) SyGroup.DataChange -=new DIOPCGroupEvent_DataChangeEventHandler(SyGroup_DataChange); if (SyServer != null) SyServer.Disconnect(); SyS

24、erver = null; opc_connected = false; private void btnsetproparty_Click(object sender, EventArgs e) SetGroupProperty(); private void btnConnServer_Click(object sender, EventArgs e) try if (!ConnectRemoteServer(tboxServerIP.Text, cmbServerName.Text) return; btnsetproparty.Enabled = true; opc_connected

25、 = true; GetServerInfo(); RecurBrows(SyServer.CreateBrowser(); if (!CreatGroup() return; catch (Exception err) MessageBox.Show("初?始º?化¡¥出?錯(cuò)䨪:êo"+err.Message,"提¬¨¢示º?信?息¡é",MessageBoxButtons.OK,MessageBoxIcon.Warni

26、ng); private void btnwritevalue_Click(object sender, EventArgs e) OPCItem bItem = SyItems.GetOPCItem(itmHandleServer); int temp = new int2 0,bItem.ServerHandle ; Array serverHandle = (Array)temp; object valueTemp = new object2 "", tboxvaluewrite.Text ; Array values = (Array)valueTemp; Array Erro

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論