Exemplo n.º 1
1
        private Int16 GetTagCanonicalType(string itemName)
        {
            const int ItemCanonicalDataTypeProperty = 1;

            TreeNode rootNode = uiGroupsTab_AllFoldersTreeView.SelectedNode;
            while (rootNode.Parent != null)
            {
                rootNode = rootNode.Parent;
            }

            var opcServer = Settings.OpcServers.Where(os => rootNode.FullPath == os.ServerName).Single();
            string urlstring = opcServer.URL;
            Server server = new Server(new Factory(), new URL(urlstring));
            server.Connect();

            ItemIdentifier [] itemIdentifiers = new ItemIdentifier[] {new ItemIdentifier(itemName)};
            PropertyID[] propertyIDs = new PropertyID[] { new PropertyID(ItemCanonicalDataTypeProperty) };

            var result = server.GetProperties(itemIdentifiers, propertyIDs, true);

            server.Disconnect();

            var resultType = result[0][0].Value.GetType();
            PropertyInfo nameProperty = resultType.GetProperty("Name");
            string name = nameProperty.GetValue(result[0][0].Value, null) as string;

            switch (name.ToLower())
            {
                case "string":
                case "char":
                    return 0;
                case "int16":
                case "int32":
                case "int64":
                case "uint16":
                case "uint32":
                case "uint64":
                    return 1;
                case "boolean":
                    return 2;
                case "decimal":
                case "double":
                    return 3;
                case "datetime":
                case "datetimeoffset":
                    return 4;
                default:
                    return 0;
            }
        }
Exemplo n.º 2
0
 private void Operation_1_Button_Click(object sender, EventArgs e)
 {
     SelectedOperation = 1;
     OperationWriteOPC();
     OPCServer.Disconnect();
     this.Owner.PassOperationValue(SelectedOperation);
     User_Program__ControlLogix_System_.UserInterface.Enabled = true;
     this.Close();
 }
 private void Run_Button_Click(object sender, EventArgs e)
 {
     HMI_PB_SCAN_HARDWARE_VALUE = 0;
     SetHardware_OPC();
     this.owner.PassValue(PartsNeeded_TextBox.Text);
     this.owner.PassReferenceNumber(ReferenceNumber_TextBox.Text);
     User_Program.UserProgram.Enabled = true;
     OPCServer.Disconnect();
     this.Dispose();
     this.Close();
 }
Exemplo n.º 4
0
 public void CheckTheConnectionStatus()
 {
     try
     {
         if (!_status)
         {
             if (_repConnectionWorker.IsBusy)
             {
                 _repConnectionWorker.CancelAsync();
             }
             DisplayPanelServerError.Visible = true;
             Trends.Visible       = false;
             DisplayPanel.Visible = Status;
             if (_server.IsConnected)
             {
                 _server.Disconnect();
             }
             if (!_repConnectionWorker.IsBusy)
             {
                 _repConnectionWorker.RunWorkerAsync();
             }
         }
         else if (_server.GetStatus().ServerState == serverState.running)
         {
             //Toolbar.Visible = false;
             Trends.Visible       = false;
             DisplayPanel.Visible = Status;
             OffConnectionDisplayPanelIndicator.Visible = false;
             OnConnectionDisplayPanelIndicator.Visible  = false;
             DisplayPanelServerError.Visible            = true;
             DisplayPanelServerError.Text = string.Format(@"|  Нет соединения с шахтой {0}");
             DisplayPanelServerError.Font = new Font("Segoe UI Symbo", 12F, FontStyle.Regular);
             DisplayPanel.ForeColor       = Color.PaleVioletRed;
         }
     }
     catch (Exception)
     {
         //Toolbar.Visible = false;
         Trends.Visible                             = false;
         DisplayPanel.Visible                       = Status;
         DisplayPanelServerError.Visible            = true;
         OffConnectionDisplayPanelIndicator.Visible = true;
         OnConnectionDisplayPanelIndicator.Visible  = false;
         DisplayPanelServerError.Text               = @"|  Ошибка соединения: Не удалось установить соединение с OPC-сервером";
         DisplayPanel.ForeColor                     = Color.PaleVioletRed;
         DisplayPanelServerError.Font               = new Font("Segoe UI Symbo", 12F, FontStyle.Regular);
     }
 }
Exemplo n.º 5
0
 /// <summary>
 /// Disconnect from server.
 /// </summary>
 /// <returns>Boolean flag.</returns>
 public void Disconnect()
 {
     if (IsConnected)
     {
         _server.Disconnect();
     }
 }
Exemplo n.º 6
0
 /// <summary>
 /// 断开OPC连接
 /// </summary>
 public void OPC_disconnect()
 {
     OpcGroupClasssubscription.DataChanged -= new Opc.Da.DataChangedEventHandler(this.OnDataChange); //取消回调事件
     OpcGroupClasssubscription.RemoveItems(OpcGroupClasssubscription.Items);                         //移除组内item
     //结束:释放各资源
     OpcGroupClassm_server.CancelSubscription(OpcGroupClasssubscription);                            //m_server前文已说明,通知服务器要求删除组。
     OpcGroupClasssubscription.Dispose();                                                            //强制.NET资源回收站回收该subscription的所有资源。
     OpcGroupClassm_server.Disconnect();                                                             //断开服务器连接
     //不相关的
 }
Exemplo n.º 7
0
 /// <summary>
 /// 断开与OPC服务连接,并释放资源
 /// </summary>
 public void Disconect()
 {
     itemIndexDic.Clear();
     //移除组内item
     subscription.RemoveItems(subscription.Items);
     //通知服务器要求删除组。
     m_server.CancelSubscription(subscription);
     subscription.Dispose();
     m_server.Disconnect();
 }
Exemplo n.º 8
0
 /// <summary>
 /// 断开OPC服务器连接
 /// </summary>
 private void DisConnect()
 {
     if (m_server != null)
     {
         m_subscription.RemoveItems(m_subscription.Items);
         // 结束:释放各资源
         m_server.CancelSubscription(m_subscription); // m_server前文已说明,通知服务器要求删除组。
         m_subscription.Dispose();                    // 强制.NET资源回收站回收该subscription的所有资源。
         m_server.Disconnect();                       // 断开服务器连接
     }
 }
Exemplo n.º 9
0
 /// <summary>
 /// Отключение от сервера OPC.
 /// </summary>
 public void Disconnect()
 {
     try
     {
         serverHandle.Disconnect();
         isConnected = false;
         Console.WriteLine("Disconnect succeeded");
     }
     catch (Exception exception)
     {
         Console.WriteLine("Failed to disconnect - status {0}", exception);
     }
 }
Exemplo n.º 10
0
        public override void Dispose()
        {
            if (!ServiceManager.DesignMode)
            {
                //WriteXml();

                if (_opcDaServer != null && _opcDaServer.IsConnected)
                {
                    _opcDaServer.Disconnect();
                    _opcDaServer.Dispose();
                }
            }
        }
Exemplo n.º 11
0
 private void Clear(System.Windows.Forms.TreeNode parent)
 {
     foreach (System.Windows.Forms.TreeNode parent2 in parent.Nodes)
     {
         this.Clear(parent2);
     }
     if (this.IsServerNode(parent))
     {
         Opc.Da.Server server = (Opc.Da.Server)parent.Tag;
         if (server.IsConnected)
         {
             server.Disconnect();
         }
     }
 }
Exemplo n.º 12
0
        private Connection CreateConnection(string serverUrl)
        {
            ServiceManager.LogMessage("Connecting to {0}...", serverUrl);
            URL url = new URL(serverUrl);

            Opc.Da.Server server = null;
            try
            {
                server = new Opc.Da.Server(new OpcCom.Factory(), url);
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                try
                {
                    server.Connect();
                    Opc.Da.ServerStatus serverStatus = server.GetStatus();
                    if (serverStatus.ServerState != Opc.Da.serverState.running)
                    {
                        throw new Exception(String.Format("Bad server state ({0})", serverStatus.ServerState));
                    }
                    Connection connection = new Connection(serverUrl, server);
                    server = null;
                    stopwatch.Stop();
                    ServiceManager.LogMessage("Successful created new connection {0}: {1} ({2} ms)",
                                              connection.GetUID(), serverUrl, stopwatch.ElapsedMilliseconds);
                    Counter counter = counters[serverUrl];
                    Interlocked.Increment(ref counter.numConnections);
                    return(connection);
                }
                catch (Exception ex)
                {
                    stopwatch.Stop();
                    ServiceManager.LogMessage("Failed create new connection to {0}: {1} ({2} ms)",
                                              serverUrl, ex.Message, stopwatch.ElapsedMilliseconds);
                    throw new FaultException(ex.Message, new FaultCode("E_FAIL"));
                }
            }
            finally
            {
                if (server != null)
                {
                    if (server.IsConnected)
                    {
                        server.Disconnect();
                    }
                    server.Dispose();
                }
            }
        }
Exemplo n.º 13
0
 /// <summary>
 /// Tries to disconnect to the server.
 /// </summary>
 private void DisConnect()
 {
     try
     {
         if (Server != null && Server.IsConnected)
         {
             Server.Disconnect();
         }
     }
     catch (Exception ex)
     {
         _error.Append(ex.ToString());
         if (ex.InnerException != null)
         {
             _error.Append(ex.InnerException.ToString());
         }
     }
 }
Exemplo n.º 14
0
 /// <summary>
 /// OPC断开连接
 /// </summary>
 public void mOpc_DisConn()
 {
     try
     {
         if (m_Server != null)
         {
             subscription.RemoveItems(subscription.Items);
             //结束:释放各资源
             m_Server.CancelSubscription(subscription); //m_server前文已说明,通知服务器要求删除组。
             subscription.Dispose();                    //强制.NET资源回收站回收该subscription的所有资源。
             m_Server.Disconnect();
         }
     }
     catch (Exception ex)
     {
         throw new Exception("OPC断开函数(mOpc_DisConn)异常:" + ex.ToString());
     }
 }
Exemplo n.º 15
0
 private void Disconnect(System.Windows.Forms.TreeNode node)
 {
     try
     {
         if (this.IsServerNode(node))
         {
             Opc.Da.Server server = (Opc.Da.Server)node.Tag;
             if (server.IsConnected)
             {
                 server.Disconnect();
             }
             node.Nodes.Clear();
         }
     }
     catch (System.Exception ex)
     {
         System.Windows.Forms.MessageBox.Show(ex.Message);
     }
 }
Exemplo n.º 16
0
        public override bool Uninitialize()
        {
            if (Activated && server != null)
            {
                try
                {
                    logger.Logged("Info", "Отключаемся от сервера #" + PollerId + "...", "", "");
                    Activated = false;
                    TagListBackup.Clear();
                    server.Disconnect();
                    server = null;
                }
                catch (Exception ex)
                {
                    logger.Logged("Error", "Не удалось корректно отключиться от OPC DA сервера #" + PollerId + ": " + ex.Message, "", "");
                }
            }

            return(true);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 断开OPC服务器连接
        /// </summary>
        private void DisConnect()
        {
            if (m_server != null)
            {
                m_subscription.RemoveItems(m_subscription.Items);
                // 结束:释放各资源
                m_server.CancelSubscription(m_subscription); // m_server前文已说明,通知服务器要求删除组。
                m_subscription.Dispose();                    // 强制.NET资源回收站回收该subscription的所有资源。
                m_server.Disconnect();                       // 断开服务器连接
            }

            if (null != m_timer)
            {
                m_timer.Stop();
                m_timer.Close();
                m_timer.Dispose();
            }

            m_lstItemValueResult = null;
            m_lstAckTelegram     = null;
        }
Exemplo n.º 18
0
 /// <summary>
 /// 关闭连接
 /// </summary>
 private void disConnect()
 {
     try
     {
         if (!IsConnected)
         {
             if (!Equals(null, OnLogHappened))
             {
                 OnLogHappened(this, new OpcLogEventArgs("Opc服务器已断开"));
             }
         }
         if (!Equals(this.opcServer.Subscriptions, null) && this.opcServer.Subscriptions.Count > 0)
         {
             foreach (Opc.Da.Subscription thisSubscription in this.opcServer.Subscriptions)
             {
                 thisSubscription.RemoveItems(thisSubscription.Items);
                 thisSubscription.DataChanged -= ThisSubscription_DataChanged;
                 this.opcServer.CancelSubscription(thisSubscription);
                 thisSubscription.Dispose();
             }
             this.opcServer.Subscriptions.Clear();
             opcServer.Disconnect();
             IsConnected = false;
         }
         if (!Equals(null, OnLogHappened))
         {
             OnLogHappened(this, new OpcLogEventArgs("断开Opc服务器成功"));
         }
     }
     catch (Exception ex)
     {
         IsConnected = false;
         if (!Equals(null, OnErrorHappened))
         {
             OnErrorHappened(this, new OpcErrorEventArgs(OpcResult.E_FAIL, "断开Opc服务器时出错," + ex.Message, ex));
         }
     }
 }
Exemplo n.º 19
0
        public void Work()
        {
            int i = 5;

            if (i == 1)
            {
                url    = new Opc.URL("opcda://192.168.0.4/OPC.PHDServerDA.1");
                server = new Opc.Da.Server(fact, null);
                server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));

                Opc.Da.Item[] itemCollection = new Opc.Da.Item[1];
                itemCollection[0] = new Opc.Da.Item {
                    ItemName = "RTOS.TEST.PV", MaxAge = -1
                };
                Opc.Da.ItemValueResult[] result = server.Read(itemCollection);

                Console.WriteLine(result[0].Value);
                server.Disconnect();
            }
            else if (i == 2)
            {
                url    = new Opc.URL("opcda://192.168.0.4/OPC.PHDServerDA.1");
                server = new Opc.Da.Server(fact, null);
                server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));

                groupState              = new Opc.Da.SubscriptionState();
                groupState.Name         = "Group";
                groupState.ServerHandle = null;
                groupState.ClientHandle = Guid.NewGuid().ToString();
                groupState.Active       = true;
                groupState.UpdateRate   = 1000;
                groupState.Deadband     = 0;
                groupState.Locale       = null;

                groupRead = (Opc.Da.Subscription)server.CreateSubscription(groupState);


                string[] itemName = { "RTOS.TEST.PV", "RTOR.TI1237.DACA.PV" };

                Opc.Da.Item[] items = new Opc.Da.Item[2];

                for (int j = 0; j < items.Length; j++)
                {
                    items[j] = new Opc.Da.Item();
                    items[j].ClientHandle = Guid.NewGuid().ToString();
                    items[j].ItemPath     = null;
                    items[j].ItemName     = itemName[j];
                }

                groupRead.AddItems(items);
                //groupRead.DataChanged += new Opc.Da.DataChangedEventHandler(group_DataChanged);

                Opc.Da.ItemValueResult[] results = groupRead.Read(groupRead.Items);
                foreach (ItemValueResult result in results)
                {
                    Console.WriteLine("{0},{1},{2},{3}", result.ItemName, result.Value, result.Quality, result.Timestamp);
                }
                //groupRead.DataChanged -= new Opc.Da.DataChangedEventHandler(group_DataChanged);

                groupRead.RemoveItems(groupRead.Items);
                server.CancelSubscription(groupRead);
                groupRead.Dispose();
                server.Disconnect();
            }
            else if (i == 3)
            {
                url    = new Opc.URL("opcda://192.168.0.4/OPC.PHDServerDA.1");
                server = new Opc.Da.Server(fact, null);
                server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));

                groupState              = new Opc.Da.SubscriptionState();
                groupState.Name         = "Group";
                groupState.ServerHandle = null;
                groupState.ClientHandle = Guid.NewGuid().ToString();
                groupState.Active       = true;
                groupState.UpdateRate   = 1000;
                groupState.Deadband     = 0;
                groupState.Locale       = null;

                groupWrite = (Opc.Da.Subscription)server.CreateSubscription(groupState);

                string[] itemName = { "RTOS.TEST.PV", "RTOS.TEST2.PV" };

                Opc.Da.Item[] items = new Opc.Da.Item[2];

                for (int j = 0; j < items.Length; j++)
                {
                    items[j] = new Opc.Da.Item();
                    items[j].ClientHandle = Guid.NewGuid().ToString();
                    items[j].ItemPath     = null;
                    items[j].ItemName     = itemName[j];
                }

                groupWrite.AddItems(items);

                //groupRead.DataChanged += new Opc.Da.DataChangedEventHandler(group_DataChanged);

                Opc.Da.ItemValue[] writeValues = new Opc.Da.ItemValue[groupWrite.Items.Length];
                for (int k = 0; k < groupWrite.Items.Length; k++)
                {
                    writeValues[k] = new Opc.Da.ItemValue((ItemIdentifier)groupWrite.Items[k]);
                }

                writeValues[0].Value = 5;
                writeValues[1].Value = 6;

                groupWrite.Write(writeValues);

                Console.WriteLine("Press any key to close...");
                Console.ReadLine();

                //groupRead.DataChanged -= new Opc.Da.DataChangedEventHandler(group_DataChanged);

                groupWrite.RemoveItems(groupWrite.Items);
                server.CancelSubscription(groupWrite);
                groupWrite.Dispose();
                server.Disconnect();
            }
            else if (i == 4)
            {
                url       = new Opc.URL("opchda://192.168.0.4/OPC.PHDServerHDA.1");
                serverHda = new Opc.Hda.Server(fact, null);
                serverHda.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));

                try
                {
                }
                catch (Opc.ConnectFailedException opcConnEx)
                {
                    Console.WriteLine(string.Format("Could not connect to server {0}", "OPC.PHDServerHDA.1"));
                    Console.WriteLine(opcConnEx.ToString());
                }

                Console.WriteLine("Are we connected? " + serverHda.IsConnected);

                string[] itemName = { "RTOS.TEST.PV", "RTOS.TEST2.PV" };

                Opc.Hda.Trend groupHda = new Trend(serverHda);

                groupHda.Name        = "HDA";
                groupHda.AggregateID = AggregateID.NOAGGREGATE;
                DateTime startTime = DateTime.Now.AddHours(-1);
                DateTime endTime   = DateTime.Now;
                groupHda.StartTime     = new Opc.Hda.Time(startTime);
                groupHda.EndTime       = new Opc.Hda.Time(endTime);
                groupHda.MaxValues     = 0;
                groupHda.IncludeBounds = false;

                serverHda.Trends.Add(groupHda);

                Opc.Hda.Item[] items = new Opc.Hda.Item[2];
                for (int m = 0; m < 2; m++)
                {
                    items[m]              = new Opc.Hda.Item();
                    items[m].ItemName     = itemName[m];
                    items[m].ItemPath     = null;
                    items[m].ClientHandle = Guid.NewGuid().ToString();
                }

                IdentifiedResult[] identifiedResult = serverHda.CreateItems(items);

                if (identifiedResult != null)
                {
                    foreach (IdentifiedResult item in identifiedResult)
                    {
                        if (item.ResultID.Succeeded())
                        {
                            groupHda.Items.Add(new Opc.Hda.Item(item));
                        }
                    }
                }

                Opc.Hda.ItemValueCollection[] results = groupHda.ReadRaw();

                Opc.Hda.ItemValueCollection result1 = results[0];

                foreach (Opc.Hda.ItemValue result in result1)
                {
                    Console.WriteLine("{0},{1},{2}", result.Value, result.Quality, result.Timestamp);
                }

                serverHda.Disconnect();
            }
            else if (i == 5)
            {
                url       = new Opc.URL("opchda://192.168.0.4/OPC.PHDServerHDA.1");
                serverHda = new Opc.Hda.Server(fact, null);
                serverHda.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));

                try
                {
                }
                catch (Opc.ConnectFailedException opcConnEx)
                {
                    Console.WriteLine(string.Format("Could not connect to server {0}", "OPC.PHDServerHDA.1"));
                    Console.WriteLine(opcConnEx.ToString());
                }

                Console.WriteLine("Are we connected? " + serverHda.IsConnected);

                string[] itemName = { "RTOR.TI1237.DACA.PV", "RTOS.TEST2.PV" };

                Opc.Hda.Trend groupHda = new Trend(serverHda);

                groupHda.Name        = "HDA";
                groupHda.AggregateID = AggregateID.AVERAGE;

                DateTime startTime = DateTime.Now.AddHours(-1);
                DateTime endTime   = DateTime.Now;
                //TimeSpan span = endTime.Subtract(startTime);
                //int calcInterval = ((int)span.TotalSeconds);
                //groupHda.ResampleInterval = (decimal)calcInterval;

                //DateTime startTime = new DateTime(2020, 6, 12, 9, 0, 0, 0);
                //DateTime endTime = new DateTime(2020, 6, 12, 10, 0, 0, 0);
                int calcInterval = 300;
                groupHda.ResampleInterval = (decimal)calcInterval;


                groupHda.StartTime     = new Opc.Hda.Time(startTime);
                groupHda.EndTime       = new Opc.Hda.Time(endTime);
                groupHda.MaxValues     = 0;
                groupHda.IncludeBounds = false;

                serverHda.Trends.Add(groupHda);

                Opc.Hda.Item[] items = new Opc.Hda.Item[2];
                for (int m = 0; m < 2; m++)
                {
                    items[m]              = new Opc.Hda.Item();
                    items[m].ItemName     = itemName[m];
                    items[m].ItemPath     = null;
                    items[m].ClientHandle = Guid.NewGuid().ToString();
                }

                IdentifiedResult[] identifiedResult = serverHda.CreateItems(items);

                if (identifiedResult != null)
                {
                    foreach (IdentifiedResult item in identifiedResult)
                    {
                        if (item.ResultID.Succeeded())
                        {
                            groupHda.Items.Add(new Opc.Hda.Item(item));
                        }
                    }
                }

                Opc.Hda.ItemValueCollection[] results = groupHda.ReadProcessed();

                Opc.Hda.ItemValueCollection result1 = results[0];

                foreach (Opc.Hda.ItemValue result in result1)
                {
                    Console.WriteLine("{0},{1},{2}", result.Value, result.Quality, result.Timestamp);
                }

                serverHda.Disconnect();
            }
        }
Exemplo n.º 20
0
        /*********************************************************************************************************************
        * TextBox Enter Region End
        *********************************************************************************************************************/
        #endregion

        /*********************************************************************************************************************
        *
        * Events Region End
        *
        *********************************************************************************************************************/
        #endregion

        /*********************************************************************************************************************
        *
        * User Teach Sensor End
        *
        *********************************************************************************************************************/

        private void User_Program_Teach_Senson_FormClosing(object sender, FormClosingEventArgs e)
        {
            OPCServer.Disconnect();
        }
 // OPC Server Disconnects When the Form is Closing
 private void User_Program_Select_Operation_FormClosing(object sender, FormClosingEventArgs e)
 {
     OPCServer.Disconnect();
 }
Exemplo n.º 22
0
        public string[] GetDataType(List <OPCChannelInfo> Subscribed)
        {
            string serverName = txtOPCServer.Text;
            string hostName   = txtOPCServerPath.Text;

            _server = new Server(fact, null)
            {
                Url = new URL(hostName + "/" +
                              serverName)
            };
            _server.Connect();

            SubscribedCollection = new List <string>();

            for (int i = 0; i < Subscribed.Count; i++)
            {
                SubscribedCollection.Add(Subscribed[i].channel);
            }

            if (SubscriptionOPC == null)
            {
                SubscriptionState.Name = "SubscribedGroup";

                SubscriptionOPC = (Subscription)_server.CreateSubscription(SubscriptionState);
            }
            SubscribedItems = new Item[SubscribedCollection.Count];



            for (int i = 0; i < SubscribedCollection.Count; i++)
            {
                SubscribedItems[i] = new Item
                {
                    ItemName     = SubscribedCollection[i],
                    SamplingRate = 200,
                    Active       = true,
                    ClientHandle = i
                };
            }
            ItemResult = SubscriptionOPC.AddItems(SubscribedItems);

            ItemValue[] values = _server.Read(SubscribedItems);

            int ArraySize = values.Length;

            if (values[0].Value is Array)
            {
                ArraySize = ((Array)values[0].Value).Length - 1;
            }

            string[] ReturnValues = new string[ArraySize];
            for (int i = 0; i < values.Length; i++)
            {
                if (values[i].Value is string)
                {
                    ReturnValues[i] = "String";
                }

                if (values[i].Value is bool)
                {
                    ReturnValues[i] = "Bit";
                }
                else if (values[i].Value is byte)
                {
                    ReturnValues[i] = "Byte";
                }
                else if (values[i].Value is float)
                {
                    ReturnValues[i] = "Float";
                }
                else if (values[i].Value is char)
                {
                    ReturnValues[i] = "char";
                }
                else if (values[i].Value is short)
                {
                    ReturnValues[i] = "Short";
                }
                else if (values[i].Value is int)
                {
                    ReturnValues[i] = "Int";
                }
                else if (values[i].Value is double)
                {
                    ReturnValues[i] = "Double";
                }
                else if (values[i].Value is Array)
                {
                    ReturnValues[i] = "Array";
                }
                else if (values[i].Value is uint)
                {
                    ReturnValues[i] = "UInt";
                }
                else if (values[i].Value is ushort)
                {
                    ReturnValues[i] = "UShort";
                }
                //else
                //{
                //    ReturnValues[i] = "null";
                //}
            }

            if (_server != null)
            {
                if (_server.IsConnected)
                {
                    try
                    {
                        _server.Disconnect();
                    }
                    catch
                    {
                    }
                }

                _server.Dispose();
            }
            return(ReturnValues);
        }
Exemplo n.º 23
0
        //private void AddNode(Server opcServer, TreeNode treeNode)
        //{
        //    ItemIdentifier itemId;
        //    BrowsePosition position;
        //    BrowseFilters filters = new BrowseFilters() { BrowseFilter = browseFilter.branch };
        //    if (treeNode.FullPath == opcServer.Name)
        //    {
        //        itemId = null;
        //    }
        //    else
        //    {
        //        //int serverNameLength = opcServer.Name.Length;
        //        //string itemIdentifier = treeNode.FullPath.Substring(serverNameLength + 1);
        //        itemId = new ItemIdentifier(treeNode.Name);
        //    }
        //    BrowseElement[] elements = opcServer.Browse(itemId, filters, out position);
        //    if (elements == null)
        //    {
        //        return;
        //    }
        //    foreach (var element in elements)
        //    {
        //        treeNode.Nodes.Add(element.Name).Name = element.ItemName;
        //    }
        //    //foreach (TreeNode node in treeNode.Nodes)
        //    //{
        //    //    AddNode(opcServer, node);
        //    //}
        //}
        private void UpdateFoldersTree()
        {
            uiGroupsTab_AllFoldersTreeView.Nodes.Clear();
            List<OpcServer> opcServers;

            if (uiGroupsTab_Groups.SelectedItem == null)
            {
                opcServers = Settings.OpcServers;
            }
            else
            {
                var selectedGroup = uiGroupsTab_Groups.SelectedItem as Group;
                opcServers = new List<OpcServer>();
                opcServers.Add(selectedGroup.OpcServer);
            }

            foreach (var opcServer in opcServers)
            {
                string urlstring = opcServer.URL;
                Server server = new Server(new Factory(), new URL(urlstring));
                if (opcServer.RootNode == null)
                {
                    var newNode = uiGroupsTab_AllFoldersTreeView.Nodes.Add(server.Name);
                    server.Connect();
                    //AddNode(server, newNode);
                    UpdateFolderData(newNode);
                    server.Disconnect();
                    opcServer.RootNode = newNode;
                }
                else
                {
                    uiGroupsTab_AllFoldersTreeView.Nodes.Add(opcServer.RootNode);
                }
            }

            if (uiGroupsTab_AllFoldersTreeView.Nodes != null)
            {
                foreach (TreeNode node in uiGroupsTab_AllFoldersTreeView.Nodes)
                {
                    node.Expand();
                }
            }
            UpdateFolderData(uiGroupsTab_AllFoldersTreeView.SelectedNode);
        }
Exemplo n.º 24
0
        private void UpdateFolderData(TreeNode node)
        {
            if (node == null)
            {
                uiFolderTagsBindingSource.DataSource = null;
                return;
            }

            //Add items to folder, read from OPC Server if first time
            var folderTags = node.Tag as List<BrowseElement>;
            if (folderTags == null)
            {
                TreeNode rootNode = node;
                while (rootNode.Parent != null)
                {
                    rootNode = rootNode.Parent;
                }

                var opcServer = Settings.OpcServers.Where(os => rootNode.FullPath == os.ServerName).Single();
                string urlstring = opcServer.URL;
                Server server = new Server(new Factory(), new URL(urlstring));
                server.Connect();

                BrowsePosition position;
                BrowseFilters filters = new BrowseFilters() { BrowseFilter = browseFilter.all };
                ItemIdentifier itemId = null;

                if (node.FullPath != server.Name)
                {
                    itemId = new ItemIdentifier(node.Name);
                }

                BrowseElement[] elements = server.Browse(itemId, filters, out position);
                server.Disconnect();

                var items = elements.Where(e => e.IsItem);
                if (items.Any())
                {
                    folderTags = items.ToList();
                }
                else
                {
                    folderTags = new List<BrowseElement>();
                }

                var folders = elements.Where(e => e.IsItem == false);
                if(folders.Any())
                {
                    foreach (var element in elements.Where(e => !e.IsItem))
                    {
                        node.Nodes.Add(element.Name).Name = element.ItemName;
                    }
                }

                node.Tag = folderTags;
            }

            //Exlude elements which already are in group
            folderTags = folderTags.ToList();
            var selectedGroup = uiGroupsTab_Groups.SelectedItem as Group;
            if (selectedGroup != null)
            {
                if (selectedGroup.Properties != null)
                {
                    foreach (var property in selectedGroup.Properties)
                    {
                        folderTags.RemoveAll(t => t.ItemName == property.TagName);
                    }
                }
            }

            uiFolderTagsBindingSource.DataSource = folderTags;

            //if (elements != null)
            //{
            //    var itemsIDs = new List<ItemIdentifier>();
            //    foreach (var element in elements)
            //    {
            //        itemsIDs.Add(new ItemIdentifier(element.ItemName));
            //    }

            //    var prid = new List<PropertyID>();
            //    prid.Add(new PropertyID(1));
            //    prid.Add(new PropertyID(2));

            //    var tst = server.GetProperties(itemsIDs.ToArray(), prid.ToArray(), true);
            //}
        }
 private void Cancel_Button_Click(object sender, EventArgs e)
 {
     OPCServer.Disconnect();
     User_Program.UserProgram.Enabled = true;
     this.Close();
 }
Exemplo n.º 26
0
 public void Dispose()
 {
     _server.Disconnect();
 }
Exemplo n.º 27
0
 private void Disconnect()
 {
     m_server.Disconnect();
 }