版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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; /连¢?接¨®状Á¡ä态¬? int itmHandleClient =
3、 0; /客¨ª户¡ì端?句?柄À¨² int itmHandleServer = 0; /服¤t务?端?句?柄À¨² #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务?器¡Â出?错䨪:ê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("创ä¡ä建¡§组Á¨¦出?现?错䨪误¨®"+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 = "开a始º?时º¡À间?:ê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 = "状Á¡ä态¬?:êo" + SyServer.ServerState.ToString() + " " catch (Exception err) MessageBox.Show("连¢?接¨®远?程¨¬服¤t务?器¡Â出?错
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("此ä?项?为a系¦Ì统ª3保À¡ê留¢?项?:ê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("初?始º?化¡¥出?错䨪:ê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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年特色住宿服务合同
- 食品流通合同(标准版)
- 2025年中国科学院东北地理与农业生态研究所学术期刊中心工作人员招聘备考题库有答案详解
- 长沙市食品药品检验所2025年公开招聘编外合同制人员备考题库参考答案详解
- 【2025年】药品网络销售监督管理办法考核试题(附答案)
- 2025年张家港市大新镇人民医院自主招聘编外合同制卫技人员备考题库及参考答案详解
- 2025年衢州市公安局第四期面向社会公开招聘警务辅助人员备考题库完整答案详解
- 楚雄州教育体育局直属学校2025年公开选调工作人员备考题库及1套参考答案详解
- 2025年昌图辅警招聘真题及答案
- 2025年北京协和医院肿瘤内科合同制科研助理招聘备考题库及答案详解1套
- 企业安全生产法律法规知识培训课件
- 三方比价报告范文
- 【粤教版】六年级上册第三单元 第2课《 空气动力车模型》课件
- 神话故事民间故事《劈山救母》绘本课件
- 5.2.1三角函数的概念课件-高一上学期数学人教A版(2019)必修第一册
- 甲亢性心脏病估护理查房
- 临床输血管理委员会年终的工作总结
- 韦莱韬悦-东方明珠新媒体集团一体化职位职级体系方案-2018
- 电力通道维护及管理方案
- 《体育与健康》课程标准(高职)
- 走近核科学技术学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论