Esempio n. 1
0
        }        //end GetConditionState

        public int InitializeAeObjects()
        {
            int connectResult = (int)EnumResultCode.E_FAIL;

            try{
                m_aeSession      = new AeSession("opcae:///Softing.OPCToolboxDemo_ServerAE.1/{2E565243-B238-11D3-842D-0008C779D775}");
                m_aeSubscription = new AeSubscription(m_aeSession);

                connectResult = m_aeSession.Connect(
                    true,
                    true,
                    null);

                m_aeSubscription.RefreshAeConditions(null);
            }
            catch (Exception exc)
            {
                GetApplication().Trace(
                    EnumTraceLevel.ERR,
                    EnumTraceGroup.USER,
                    "OpcClient::InitializeAeObjects",
                    exc.ToString());
            }                   //	end try...catch

            return(connectResult);
        }               //	end InitializeAeObjects
        /// <summary>
        /// Build AeBrowse
        /// </summary>
        /// <param name="aeSession"></param>
        public void BuildAeBrowseTree(AeSession aeSession)
        {
            if (browseTreeView.Nodes.Count > 0)
            {
                if (browseTreeView.Nodes[0].Text.Equals(aeSession.Url + AREA_SPACE))
                {
                    return;
                }
            }
            daSubscription = null;
            browseTreeView.Nodes.Clear();
            TreeNode treeRootNode = new TreeNode(aeSession.Url + AREA_SPACE, BROWSE_INDEX, BROWSE_INDEX);

            treeRootNode.Name = aeSession.Url + AREA_SPACE;
            browseTreeView.Nodes.Add(treeRootNode);
            treeRootNode.Nodes.Add(new TreeNode(""));
            treeRootNode.Tag = aeSession;

            treeRootNode      = new TreeNode(aeSession.Url + EVENT_CATEGORIES, BROWSE_INDEX, BROWSE_INDEX);
            treeRootNode.Name = aeSession.Url + EVENT_CATEGORIES;
            browseTreeView.Nodes.Add(treeRootNode);
            treeRootNode.Nodes.Add(new TreeNode(""));
            treeRootNode.Tag = aeSession;
            if (Options.SortAe)
            {
                browseTreeView.Sort();
            }
            else
            {
                browseTreeView.Sorted = false;
            }
        }
        /// <summary>
        /// Fill Browse data
        /// </summary>
        /// <param name="treeNode"></param>
        private void ExpandTreeNode(TreeNode treeNode, TreeNode rootNode)
        {
            if (rootNode == null)
            {
                return;
            }
            if (rootNode.Tag == null)
            {
                return;
            }

            this.browseTreeView.Cursor = Cursors.WaitCursor;
            if (Type.ReferenceEquals(rootNode.Tag.GetType(), typeof(DaSession)))
            {
                GetDaData(treeNode, rootNode, rootNode.Tag);
            }
            else if (Type.ReferenceEquals(rootNode.Tag.GetType(), typeof(AeSession)))
            {
                AeSession session = rootNode.Tag as AeSession;
                if (session == null || treeNode.Tag == null)
                {
                    this.browseTreeView.Cursor = Cursors.Default;
                    return;
                }
                if (treeNode == browseTreeView.Nodes[1])
                {
                    GetAeEventCategoriesData(treeNode, session);
                }
                else
                {
                    GetAeAreaSpaceData(treeNode, session);
                }
            }
            this.browseTreeView.Cursor = Cursors.Default;
        }
Esempio n. 4
0
        }               //	end ProcessCommandLine

        public void Terminate()
        {
            GetApplication().Terminate();
            m_daSession      = null;
            m_daSubscription = null;
            m_daItem         = null;
            m_aeSession      = null;
            m_aeSubscription = null;
        }               //	end Terminate
        //--
        #endregion

        #region Public Properties
        //-----------------------


        //--
        #endregion

        #region Handles
        //---------------------

        private void HandleEnableAeConditionsBySourceCompleted(
            AeSession anAeSession,
            uint executionContext,
            bool enable,
            string path,
            int result)
        {
            if (ResultCode.SUCCEEDED(result))
            {
                Console.WriteLine("Enabling conditions succeeded!");
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AeCategory"/> class.
 /// </summary>
 /// <param name="anEventType"></param>
 /// <param name="anId"></param>
 /// <param name="aDescription"></param>
 /// <param name="aSession"></param>
 internal AeCategory(
     EnumEventType anEventType,
     uint anId,
     string aDescription,
     AeSession aSession)
 {
     m_index       = ++CategoryIndex;
     m_eventType   = anEventType;
     m_Id          = anId;
     m_description = aDescription;
     m_aeSession   = aSession;
 }
        //--
        #endregion

        #region Private Members
        //---------------------

        #region Private Attributes
        //------------------------


        //--
        #endregion

        //--
        #endregion

        #region Public Methods
        //---------------------

        //--
        #endregion

        #region Public Properties
        //-----------------------


        //--
        #endregion

        #region Handles
        //---------------------

        public static void HandleQueryAeSourceConditionsCompleted(AeSession anAeSession, uint executionOptions, string sourcePath, string[] conditionNames, int result)
        {
            if (ResultCode.SUCCEEDED(result))
            {
                System.Console.WriteLine("\n Source conditions of " + sourcePath + " :");
                for (int i = 0; i < conditionNames.Length; i++)
                {
                    System.Console.WriteLine("	["+ i + "] " + conditionNames[i]);
                }
            }             //end if
            else
            {
                System.Console.WriteLine("Failed to asynchronously query the conditions of source: " + sourcePath);
            }
        }        // end HandleQueryAeSourceConditionsCompleted
Esempio n. 8
0
        /// <summary>
        /// AeSubscription Properties
        /// </summary>
        /// <param name="subscription"></param>
        internal bool AeSubscription(AeSubscription subscription)
        {
            panelBottom.Visible = true;

            this.daItem    = null;
            aeSubscription = subscription;
            daSession      = null;
            daSubscription = null;
            aeSession      = null;

            Helper.DataTypes dataTypeHelper = new DataTypes();
            this.panelBottom.Visible = true;

            //AeSubscription Buffer Time
            Helper.CustomProperties propServiceColl = new DemoClient.Helper.CustomProperties();
            Helper.CustomProperty   customProperty  = new DemoClient.Helper.CustomProperty("Buffer Time",
                                                                                           "System.String", "General", null, aeSubscription.RequestedBufferTime);
            propServiceColl.Properties.Add(customProperty);

            //AeSubscription Revised Buffer Time
            customProperty = new DemoClient.Helper.CustomProperty("Revised Buffer Time",
                                                                  "System.String", "General", null, aeSubscription.RevisedBufferTime);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            //AeSubscription Max Size
            customProperty = new DemoClient.Helper.CustomProperty("Max Size",
                                                                  "System.String", "General", null, aeSubscription.RequestedMaxSize);
            propServiceColl.Properties.Add(customProperty);

            //AeSubscription Revised Max Size
            customProperty = new DemoClient.Helper.CustomProperty("Revised Max Size",
                                                                  "System.String", "General", null, aeSubscription.RevisedMaxSize);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            this.propertyGrid.PropertySort   = PropertySort.Categorized;
            this.propertyGrid.SelectedObject = propServiceColl;
            return(true);
        }
        /// <summary>
        /// Get Ae Event Categories Data
        /// </summary>
        private void GetAeEventCategoriesData(TreeNode node, AeSession session)
        {
            node.Nodes.Clear();

            //query categories for each event type
            AeCategory[] categories = null;
            session.QueryAeCategories(out categories, executionOptions);

            for (int i = 0; i < categories.Length; i++)
            {
                TreeNode categoryNode = new TreeNode(categories[i].Description, NODE_INDEX, NODE_INDEX);
                categoryNode.Name = categories[i].Description;
                node.Nodes.Add(categoryNode);

                //Query categories' attributes
                AeAttribute[] attributes = null;
                categories[i].QueryAeAttributes(out attributes, executionOptions);

                for (int j = 0; j < attributes.Length; j++)
                {
                    TreeNode attributeNode = new TreeNode(attributes[j].Description, TAG_INDEX, TAG_INDEX);
                    attributeNode.Name = attributes[j].Description;
                    categoryNode.Nodes.Add(attributeNode);
                }

                //Query ConditionNames
                string[] conditionNames = null;
                categories[i].QueryAeConditionNames(out conditionNames, executionOptions);

                for (int j = 0; j < conditionNames.Length; j++)
                {
                    TreeNode conditionNameNode = new TreeNode(conditionNames[j], PROP_INDEX, PROP_INDEX);
                    conditionNameNode.Name = conditionNames[j];
                    categoryNode.Nodes.Add(conditionNameNode);
                }
            }
        }
Esempio n. 10
0
        /// <summary>
        /// DaSubscription Properties
        /// </summary>
        /// <param name="subscription"></param>
        internal bool DaSubscription(DaSubscription subscription)
        {
            panelBottom.Visible = true;

            this.daItem    = null;
            daSubscription = subscription;
            daSession      = null;
            aeSubscription = null;
            aeSession      = null;

            Helper.DataTypes dataTypeHelper = new DataTypes();
            this.panelBottom.Visible = true;

            //DaSubscription Name
            Helper.CustomProperties propServiceColl = new DemoClient.Helper.CustomProperties();
            Helper.CustomProperty   customProperty  = new DemoClient.Helper.CustomProperty("Name",
                                                                                           "System.String", "General", null, daSubscription.Name);
            propServiceColl.Properties.Add(customProperty);

            //DaSubscription Update Rate
            customProperty = new DemoClient.Helper.CustomProperty("Update Rate(ms)",
                                                                  "System.String", "General", null, daSubscription.RequestedUpdateRate);
            propServiceColl.Properties.Add(customProperty);

            //DaSubscription Revised Update Rate
            customProperty = new DemoClient.Helper.CustomProperty("Revised Update Rate(ms)",
                                                                  "System.String", "General", null, daSubscription.RevisedUpdateRate);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            //DaSubscription Deadband
            customProperty = new DemoClient.Helper.CustomProperty("Deadband",
                                                                  "System.String", "General", null, daSubscription.Deadband.ToString());
            propServiceColl.Properties.Add(customProperty);

            //DaSubscription Time Bias
            customProperty = new DemoClient.Helper.CustomProperty("Time Bias(min)",
                                                                  "System.String", "General", null, daSubscription.TimeBias);
            propServiceColl.Properties.Add(customProperty);

            //DaSubscription Locale Id
            ServerStatus status;

            if (ResultCode.SUCCEEDED(daSubscription.DaSession.GetStatus(out status, null)))
            {
                LocaleId.SelectedItem = daSubscription.LocaleId;
                LocaleId.LocaleIdList = status.SupportedLcIds;
                customProperty        = new DemoClient.Helper.CustomProperty("Locale Id",
                                                                             "System.String", "General", null, daSubscription.LocaleId,
                                                                             typeof(Helper.LCIDEditor), typeof(Helper.LCIDEditor));
            }
            else
            {
                customProperty = new DemoClient.Helper.CustomProperty("Locale Id",
                                                                      "System.String", "General", null, daSubscription.LocaleId);
            }
            propServiceColl.Properties.Add(customProperty);


            //DaSubscription Revised Keep Alive Time
            customProperty = new DemoClient.Helper.CustomProperty("Keep Alive Time(ms)",
                                                                  "System.String", "General", null, daSubscription.RequestedKeepAliveTime);
            propServiceColl.Properties.Add(customProperty);

            customProperty = new DemoClient.Helper.CustomProperty("Revised Keep Alive Time(ms)",
                                                                  "System.String", "General", null, daSubscription.RevisedKeepAliveTime);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            this.propertyGrid.PropertySort   = PropertySort.Categorized;
            this.propertyGrid.SelectedObject = propServiceColl;
            return(true);
        }
Esempio n. 11
0
        /// <summary>
        /// AeSession Properties
        /// </summary>
        /// <param name="session"></param>
        internal bool AeSession(AeSession session)
        {
            panelBottom.Visible = true;

            this.daItem    = null;
            daSubscription = null;
            daSession      = null;
            aeSubscription = null;
            aeSession      = session;

            Helper.DataTypes dataTypeHelper = new DataTypes();
            this.panelBottom.Visible = true;

            //AeSession URL
            Helper.CustomProperties propServiceColl = new DemoClient.Helper.CustomProperties();
            Helper.CustomProperty   customProperty  = new DemoClient.Helper.CustomProperty("URL",
                                                                                           "System.String", "General", null, aeSession.Url);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);


            //AeSession Locale Id
            ServerStatus status = null;

            if (ResultCode.SUCCEEDED(aeSession.GetStatus(out status, null)))
            {
                LocaleId.SelectedItem = aeSession.LocaleId;
                LocaleId.LocaleIdList = status.SupportedLcIds;
                customProperty        = new DemoClient.Helper.CustomProperty("Locale Id",
                                                                             "System.String", "General", null, aeSession.LocaleId,
                                                                             typeof(Helper.LCIDEditor), typeof(Helper.LCIDEditor));
            }
            else
            {
                customProperty = new DemoClient.Helper.CustomProperty("Locale Id",
                                                                      "System.String", "General", null, aeSession.LocaleId);
            }
            propServiceColl.Properties.Add(customProperty);


            //AeSession Client name
            customProperty = new DemoClient.Helper.CustomProperty("Client Name",
                                                                  "System.String", "General", null, aeSession.ClientName);
            propServiceColl.Properties.Add(customProperty);

            //AeSession Available filter criterias
            EnumFilterBy filters;

            if (ResultCode.SUCCEEDED(aeSession.QueryAvailableAeFilters(out filters, null)))
            {
                customProperty = new DemoClient.Helper.CustomProperty("Available Filter Criterias",
                                                                      "System.String", "General", null, GetFilter(filters));
            }
            else
            {
                customProperty = new DemoClient.Helper.CustomProperty("Available Filter Criterias",
                                                                      "System.String", "General", null, "");
            }
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            //AeSession Class Context
            EnumClassContext classContext = aeSession.ClassContext;

            customProperty = new DemoClient.Helper.CustomProperty("DCOM Class Context",
                                                                  typeof(EnumClassContext), "General", null, classContext);
            propServiceColl.Properties.Add(customProperty);

            if (status != null)
            {
                //AeSession Vendor info
                customProperty = new DemoClient.Helper.CustomProperty("Vendor Info",
                                                                      "System.String", "Status", null, status.VendorInfo);
                customProperty.Attributes = new Attribute[] {
                    ReadOnlyAttribute.Yes
                };
                propServiceColl.Properties.Add(customProperty);

                //AeSession Version
                customProperty = new DemoClient.Helper.CustomProperty("Version",
                                                                      "System.String", "Status", null, status.ProductVersion);
                customProperty.Attributes = new Attribute[] {
                    ReadOnlyAttribute.Yes
                };
                propServiceColl.Properties.Add(customProperty);

                //AeSession Start time
                customProperty = new DemoClient.Helper.CustomProperty("Start Time",
                                                                      "System.String", "Status", null, ValueConverter.DateTimeOptions(status.StartTime));
                customProperty.Attributes = new Attribute[] {
                    ReadOnlyAttribute.Yes
                };
                propServiceColl.Properties.Add(customProperty);

                //AeSession Current time
                customProperty = new DemoClient.Helper.CustomProperty("Current Time",
                                                                      "System.String", "Status", null, ValueConverter.DateTimeOptions(status.CurrentTime));
                customProperty.Attributes = new Attribute[] {
                    ReadOnlyAttribute.Yes
                };
                propServiceColl.Properties.Add(customProperty);

                //AeSession Last update time
                customProperty = new DemoClient.Helper.CustomProperty("Last Update Time",
                                                                      "System.String", "Status", null, ValueConverter.DateTimeOptions(status.LastUpdateTime));
                customProperty.Attributes = new Attribute[] {
                    ReadOnlyAttribute.Yes
                };
                propServiceColl.Properties.Add(customProperty);

                //AeSession Status info
                customProperty = new DemoClient.Helper.CustomProperty("Status Info",
                                                                      "System.String", "Status", null, status.StatusInfo);
                customProperty.Attributes = new Attribute[] {
                    ReadOnlyAttribute.Yes
                };
                propServiceColl.Properties.Add(customProperty);

                //AeSession Server state
                customProperty = new DemoClient.Helper.CustomProperty("Server State",
                                                                      "System.String", "Status", null, status.State);
                customProperty.Attributes = new Attribute[] {
                    ReadOnlyAttribute.Yes
                };
                propServiceColl.Properties.Add(customProperty);
            }

            this.propertyGrid.PropertySort   = PropertySort.Categorized;
            this.propertyGrid.SelectedObject = propServiceColl;
            return(true);
        }
Esempio n. 12
0
        /// <summary>
        /// Show DaItem Properties
        /// </summary>
        /// <param name="daItem"></param>
        internal bool DaItem(DaItem item)
        {
            panelBottom.Visible = true;

            this.daItem    = item;
            daSubscription = null;
            daSession      = null;
            aeSubscription = null;
            aeSession      = null;

            Helper.DataTypes dataTypeHelper = new DataTypes();
            this.panelBottom.Visible = true;

            //Item Id
            Helper.CustomProperties propServiceColl = new DemoClient.Helper.CustomProperties();
            Helper.CustomProperty   customProperty  = new DemoClient.Helper.CustomProperty("Item Id",
                                                                                           "System.String", "General", null, daItem.Id);
            propServiceColl.Properties.Add(customProperty);

            //Item Path
            customProperty = new DemoClient.Helper.CustomProperty("Item Path",
                                                                  "System.String", "General", null, daItem.Path);
            propServiceColl.Properties.Add(customProperty);

            //Requested Data Type
            string dataType = daItem.NativeDatatype.FullName;

            if (dataType.Contains("*"))
            {
                dataType = dataType.Remove(dataType.IndexOf('*'));
            }
            dataTypeHelper.Type = System.Type.GetType(dataType);
            customProperty      = new DemoClient.Helper.CustomProperty("Requested Data Type",
                                                                       dataTypeHelper.RequiredDataTypes.Values.GetType().ToString(), "General", null, dataTypeHelper.NativeDataType,
                                                                       typeof(Helper.DataTypeEditor), typeof(Helper.DataTypeEditor));
            propServiceColl.Properties.Add(customProperty);

            //Deadband
            customProperty = new DemoClient.Helper.CustomProperty("Deadband",
                                                                  "System.String", "General", null, daItem.Deadband.ToString());
            propServiceColl.Properties.Add(customProperty);

            //Native Data Type
            customProperty = new DemoClient.Helper.CustomProperty("Native Data Type",
                                                                  "System.String", "General", null, dataTypeHelper.NativeDataType);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            //Access Rights
            string strAccesRights = "";

            switch (daItem.AccessRights)
            {
            case EnumAccessRights.READABLE:
                strAccesRights = "read";
                break;

            case EnumAccessRights.READWRITEABLE:
                strAccesRights = "read and write";
                break;

            case EnumAccessRights.WRITEABLE:
                strAccesRights = "write";
                break;
            }
            customProperty = new DemoClient.Helper.CustomProperty("Acces Rights",
                                                                  "System.String", "General", null, strAccesRights);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            //Engineering Units Type
            string strEUType = "";

            switch (daItem.EUType)
            {
            case EnumEUType.ANALOG:
                strEUType = "analog";
                break;

            case EnumEUType.ENUMERATED:
                strEUType = "enumerated";
                break;

            case EnumEUType.NOENUM:
                strEUType = "no";
                break;
            }
            customProperty = new DemoClient.Helper.CustomProperty("EU Type",
                                                                  "System.String", "General", null, strEUType);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            //Engeneering Units Info
            string euInfo = "";

            if (daItem.EUInfo != null)
            {
                euInfo = daItem.EUInfo.ToString();
            }
            customProperty = new DemoClient.Helper.CustomProperty("EU Info",
                                                                  "System.String", "General", null, euInfo);
            customProperty.Attributes = new Attribute[] {
                ReadOnlyAttribute.Yes
            };
            propServiceColl.Properties.Add(customProperty);

            this.propertyGrid.SelectedObject = propServiceColl;
            return(true);
        }
        /// <summary>
        /// Get Ae AreaSpace Data
        /// </summary>
        private void GetAeAreaSpaceData(TreeNode node, AeSession session)
        {
            AddressSpaceElementBrowseOptions browseOptions = new AddressSpaceElementBrowseOptions();

            browseOptions.ElementTypeFilter = Softing.OPCToolbox.Client.EnumAddressSpaceElementType.BRANCH;

            AddressSpaceElement elem = null;

            if (!node.Equals(browseTreeView.Nodes[0]))
            {
                elem = node.Tag as AddressSpaceElement;
            }
            AddressSpaceElement[] addressSpaceElements = null;
            if (ResultCode.SUCCEEDED(session.Browse((AddressSpaceElement)elem,
                                                    browseOptions,
                                                    out addressSpaceElements,
                                                    executionOptions)))
            {
                node.Nodes.Clear();
                for (int i = 0; i < addressSpaceElements.Length; i++)
                {
                    TreeNode newNode = new TreeNode(addressSpaceElements[i].Name, NODE_INDEX, NODE_INDEX);
                    newNode.Name = addressSpaceElements[i].Name;
                    newNode.Tag  = addressSpaceElements[i];
                    node.Nodes.Add(newNode);
                    newNode.Nodes.Add(new TreeNode(""));
                    string[] conditions = null;
                    string   sourcePath = GetSourcePath(newNode);
                    if (ResultCode.SUCCEEDED(session.QueryAeSourceConditions(sourcePath, out conditions, executionOptions)))
                    {
                        for (int j = 0; j < conditions.Length; j++)
                        {
                            TreeNode conditionNode = new TreeNode(conditions[j], PROP_INDEX, PROP_INDEX);
                            conditionNode.Name = conditions[j];
                            conditionNode.Tag  = String.Empty;
                            newNode.Nodes.Add(conditionNode);
                        }
                    }
                }
            }
            AddressSpaceElementBrowseOptions browseOpt = new AddressSpaceElementBrowseOptions();

            browseOpt.ElementTypeFilter = Softing.OPCToolbox.Client.EnumAddressSpaceElementType.LEAF;
            if (ResultCode.SUCCEEDED(session.Browse((AddressSpaceElement)elem,
                                                    browseOpt,
                                                    out addressSpaceElements,
                                                    executionOptions)))
            {
                for (int i = 0; i < addressSpaceElements.Length; i++)
                {
                    TreeNode newNode = new TreeNode(addressSpaceElements[i].Name, TAG_INDEX, TAG_INDEX);
                    newNode.Name = addressSpaceElements[i].Name;
                    newNode.Tag  = addressSpaceElements[i];
                    node.Nodes.Add(newNode);
                    string[] conditions = null;
                    string   sourcePath = GetSourcePath(newNode);
                    if (ResultCode.SUCCEEDED(session.QueryAeSourceConditions(sourcePath, out conditions, executionOptions)))
                    {
                        for (int j = 0; j < conditions.Length; j++)
                        {
                            TreeNode conditionNode = new TreeNode(conditions[j], PROP_INDEX, PROP_INDEX);
                            conditionNode.Name = conditions[j];
                            conditionNode.Tag  = String.Empty;
                            newNode.Nodes.Add(conditionNode);
                        }
                    }
                }
            }
        }