sakura12345
级别: 正式会员
精华主题: 0
发帖数量: 34 个
工控威望: 92 点
下载积分: 732 分
在线时间: 25(小时)
注册时间: 2018-07-25
最后登录: 2018-12-21
查看sakura12345的 主题 / 回贴
楼主  发表于: 2018-11-13 16:42
c#写opc服务器,有点问题,多点指教
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using OPCAutomation;
using System.Net;

namespace OPC通讯
{
    public partial class Form1 : Form
    {
        #region 私有变量
        OPCServer myOPCServer;//OPC服务器变量声明
        OPCGroups myOPCGroups;//OPC服务器组集合
        OPCGroup myOPCGroup;//OPCGroups 是OPCGroup对象的集合,外加创建,移除,管理他们的方法。
        OPCItems myOPCItems;//OPCItems OPCItems OPCItem对象的集合这是OPCgroup对象的默认属性。
        OPCItem myOPCItem;
        string strHostIP = "";
        string strHostName = "";
        bool opc_connected = false;
        int itmHandleClient = 0;//客户端句柄
        int itmHandleServer = 0;//服务端句柄
        #endregion
        public Form1()
        {
            InitializeComponent();
        }
        #region 加载Form1_Load
        private void Form1_Load(object sender, EventArgs e)
        {
            //获取本地计算机IP、计算机名称
            IPHostEntry IPHost = Dns.Resolve(Environment.MachineName);
            if (IPHost.AddressList.Length > 0)
            {
                strHostIP = IPHost.AddressList[0].ToString();
                textBox1.Text = strHostIP;
            }
            else
            {
                return;
            }

            //通过IP来获取计算机名称,可用在局域网内
            IPHostEntry ipHostEntry = Dns.GetHostByAddress(strHostIP);
            strHostName = ipHostEntry.HostName.ToString();

            //获取本地计算机上的OPCServerName
            try
            {
                myOPCServer = new OPCServer();
                object serverList = myOPCServer.GetOPCServers(strHostName);
                foreach (string turn in (Array)serverList)
                {
                    comboBox1.Items.Add(turn);
                }
                comboBox1.SelectedIndex = 0;
              button1.Enabled = true;
            }
            catch (Exception err)
            {
                MessageBox.Show("枚举本地OPC服务器出错:" + err.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        #endregion
        #region 建立连接
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (!ConnectRemoteServer(textBox1.Text, comboBox1.Text))
                {
                    return;
                }
                btnSetGroupPro.Enabled = true;
                opc_connected = true;
                GetServerInfo();
                RecurBrowse(myOPCServer.CreateBrowser());
                if (!CreateGroup())
                {
                    return;
                }
              
            }
            catch (Exception err)
            {
                MessageBox.Show("初始化出错:" + err.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }
[ 此帖被sakura12345在2018-11-13 17:01重新编辑 ]
不小心遇见你
自动项目、PLC、视觉、通讯等工控软件开发QQ3515716
级别: 工控侠客

精华主题: 3 篇
发帖数量: 2049 个
工控威望: 2966 点
下载积分: 25191 分
在线时间: 1437(小时)
注册时间: 2014-01-05
最后登录: 2024-11-26
查看不小心遇见你的 主题 / 回贴
1楼  发表于: 2018-11-13 21:28
你这哪是服务器 你这是客户端
项目、视觉、通讯QQ3515716