版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年小學(xué)英語(yǔ)五年級(jí)上冊(cè)閩教版(三起)(2024)教學(xué)設(shè)計(jì)合集
- 第十課《頭飾設(shè)計(jì)》教學(xué)設(shè)計(jì)
- 小學(xué)科學(xué)教科版四年級(jí)上冊(cè):8.設(shè)計(jì)制作小車(chē)(二)-教學(xué)設(shè)計(jì)
- 2024智慧城市數(shù)據(jù)分類(lèi)標(biāo)準(zhǔn)規(guī)范
- 2023年抖音直播資金籌措計(jì)劃書(shū)
- 滬教版化學(xué)九年級(jí)下冊(cè) 第9章 化學(xué)與社會(huì)發(fā)展 第3節(jié) 環(huán)境污染的防治教案()
- 第三章 活動(dòng)2 創(chuàng)作三維作品 再現(xiàn)活字印刷 第一課時(shí) 教案
- 嶺南版小學(xué)四年級(jí)美術(shù)上冊(cè)《鹽的妙用》名師教案
- 跳躍說(shuō)課(教案) 體育三年級(jí)下冊(cè)
- 冀教版數(shù)學(xué)七年級(jí)上冊(cè) 1.11 有理數(shù)的混合運(yùn)算教案
- CRP臨床意義-ppt課件
- 小學(xué)一至六年級(jí)《體育與健康》健康課教案
- 新譯林版六年級(jí)上冊(cè)英語(yǔ)知識(shí)點(diǎn)歸納總結(jié)
- 初中人音版音樂(lè)八年級(jí)下冊(cè)第二單元搖籃曲(17張)ppt課件
- 2022年《初中英語(yǔ)課程標(biāo)準(zhǔn)》解讀之寫(xiě)作教學(xué)
- 看字讀顏色--ppt課件
- 裝配工藝模板
- 5 電子計(jì)算機(jī)與多媒體 (4)
- 二年級(jí)拼音漢字連線(xiàn)題整理
- 門(mén)式起重機(jī)軌道基礎(chǔ)施工方案(最終)
- 反循環(huán)鉆孔灌注樁施工方案
評(píng)論
0/150
提交評(píng)論