/// <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;
            }
        }
        }         // end HandleDataChanged

        public static void HandleSubscriptionReadCompleted(
            DaSubscription daSubscription,
            uint executionContext,
            DaItem[] items,
            ValueQT[] values,
            int[] results,
            int result)
        {
            if (ResultCode.SUCCEEDED(result))
            {
                System.Console.WriteLine(daSubscription + " asynchronous read succeeded! ");

                for (int i = 0; i < values.Length; i++)
                {
                    if (ResultCode.SUCCEEDED(results[i]))
                    {
                        System.Console.WriteLine(String.Format("{0,-19} {1} {2,-50} ", items[i].Id, "-", values[i].ToString()));
                    }
                    else
                    {
                        System.Console.WriteLine(" Item read failed!" + items[i].Id + " [ResultID: " + results[i] + " ]");
                    }
                }
            }
            else
            {
                System.Console.WriteLine(" Subscription asynchronous read failed! Result: " + result);
            }
        }         // end HandleSubscriptionReadComplete
Example #3
0
        public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Subscription))
            {
                return(TestResult.ParameterMissing("Subscription"));
            }

            DaSubscription subscription = GetProperty(Subscription) as DaSubscription;

            if (subscription == null)
            {
                return(TestResult.ParameterInvalid("Subscription"));
            }

            try
            {
                int result = subscription.Refresh(MaxAge, new ExecutionOptions());

                if (ResultCode.SUCCEEDED(result))
                {
                    return(TestResult.Success());
                }
                else
                {
                    EnumResultCode resCode = (EnumResultCode)Enum.Parse(typeof(EnumResultCode), result.ToString());

                    return(TestResult.Failed(string.Format("Call returned: {0}  ({1})", resCode.ToString(), result)));
                }
            }
            catch (Exception ex)
            {
                return(new TestResult(ex));
            }
        }
Example #4
0
 /// <summary>
 /// Delete selected DaItems
 /// </summary>
 private void DeleteSelectedDaItems()
 {
     if (itemsListView.SelectedItems.Count > 0)
     {
         while (itemsListView.SelectedItems.Count > 0)
         {
             ListViewItem selectedItem = itemsListView.SelectedItems[0];
             if (selectedItem == null)
             {
                 continue;
             }
             if (selectedItem.Tag == null)
             {
                 continue;
             }
             DaItem daItem = selectedItem.Tag as DaItem;
             if (daItem == null)
             {
                 continue;
             }
             daItem.StateChangeCompleted -= new Softing.OPCToolbox.Client.StateChangeEventHandler(item_StateChangeCompleted);
             DaSubscription subscription = daItem.DaSubscription;
             if (subscription == null)
             {
                 continue;
             }
             if (ResultCode.SUCCEEDED(daItem.Disconnect(null)))
             {
                 subscription.RemoveDaItem(daItem);
                 selectedItem.Remove();
             }
         }
     }
 }
 private void ControlSubscription_DataChange(DaSubscription aDaSubscription, DaItem[] changedItems, ValueQT[] newValues,
                                             int[] results)
 {
     try
     {
         int             count        = changedItems.Length;
         ControlDaItem[] controlItems = new ControlDaItem[count];
         for (int i = 0; i < count; i++)
         {
             if (this.Contains(changedItems[i]))
             {
                 int index = this.IndexOf(changedItems[i]);
                 ((DaItem)this[index]).ValueQT = newValues[i];
                 if (null != ListChanged)
                 {
                     ListChanged(this, new ListChangedEventArgs(ListChangedType.ItemChanged, i));
                 }         //	end if
             }             //	end if
             controlItems[i] = (ControlDaItem)changedItems[i];
         }                 //	end for
         this.OnDataChange((ControlDaSubscription)aDaSubscription, controlItems, newValues, results);
     }
     catch (Exception exc)
     {
         m_instance.Trace(EnumTraceLevel.ERR, EnumTraceGroup.CLIENT, "DataControl.DataControl_DataChange", exc.Message);
     }
 }
        /// <summary>
        /// Build DaBrowse
        /// </summary>
        /// <param name="daSession"></param>
        public void BuildDaBrowseTree(DaSession daSession, DaSubscription subsciption)
        {
            daSubscription = subsciption;
            ShowProperContextMenu(browseTreeView.SelectedNode);
            if (browseTreeView.Nodes.Count > 0)
            {
                if (browseTreeView.Nodes[0].Text.Equals(daSession.Url))
                {
                    return;
                }
            }
            browseTreeView.Nodes.Clear();
            TreeNode treeRootNode = new TreeNode(daSession.Url, BROWSE_INDEX, BROWSE_INDEX);

            treeRootNode.Name = daSession.Url;
            DaAddressSpaceElement daAddressSpaceElement = new DaAddressSpaceElement();

            daAddressSpaceElement.Session = daSession;
            daRootSpaceElem = daAddressSpaceElement;
            browseTreeView.Nodes.Add(treeRootNode);
            treeRootNode.Nodes.Add(new TreeNode(""));
            treeRootNode.Tag = daSession;
            if (Options.SortDa)
            {
                browseTreeView.Sort();
            }
            else
            {
                browseTreeView.Sorted = false;
            }
        }
Example #7
0
        public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Url))
            {
                return(TestResult.ParameterMissing("Url"));
            }
            try
            {
                ExecutionOptions executionOptions = new ExecutionOptions(EnumExecutionType.SYNCHRONOUS, 0);
                for (uint sessionCnt = 0; sessionCnt < SessionsCount; sessionCnt++)
                {
                    DaSession session = new DaSession(ExpandProperty(Url));

                    for (uint subscriptionCnt = 0; subscriptionCnt < SubscriptionsCount; subscriptionCnt++)
                    {
                        DaSubscription subscription = new DaSubscription(SubscriptionRate, session);

                        for (uint itemCnt = 0; itemCnt < ItemsCount; itemCnt++)
                        {
                            string itemID = "Test Folder.TestItems_0.TV_" + itemCnt.ToString();
                            DaItem item   = new DaItem("item", subscription);
                        }
                    }
                    session.Connect(true, true, executionOptions);
                }
            }
            catch (Exception ex)
            {
                if (ExpectedSuccess)
                {
                    return(new TestResult(ex));
                }
            }
            return(TestResult.Success());
        }
        }         // end HandleSubscriptionReadComplete

        public static void HandleSubscriptionWriteCompleted(
            DaSubscription daSubscription,
            uint executionContext,
            DaItem[] items,
            ValueQT[] values,
            int[] results,
            int result)
        {
            if (ResultCode.SUCCEEDED(result))
            {
                System.Console.WriteLine(daSubscription + " asynchronous write succeeded! ");
                for (int i = 0; i < items.Length; i++)
                {
                    if (ResultCode.SUCCEEDED(results[i]))
                    {
                        System.Console.WriteLine(" " + items[i].Id);
                    }
                    else
                    {
                        System.Console.WriteLine(" aSubscription asynchronous write failed! " + items[i].Id + " [ResultID: " + results[i] + " ]");
                    }
                }
            }
            else
            {
                System.Console.WriteLine(" Subscription asynchronous write failed! Result: " + result);
            }
        }         // end HandleSubscriptionWriteCompleted
Example #9
0
        }               //	end InitializeAeObjects

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

            try{
                m_daSession      = new DaSession("opcda:///Softing.OPCToolboxDemo_ServerDA.1/{2E565242-B238-11D3-842D-0008C779D775}");
                m_daSubscription = new DaSubscription(1000, m_daSession);
                m_daItem         = new DaItem("maths.sin", m_daSubscription);

                connectResult = m_daSession.Connect(
                    true,
                    false,
                    null);
            }
            catch (Exception exc)
            {
                GetApplication().Trace(
                    EnumTraceLevel.ERR,
                    EnumTraceGroup.USER,
                    "OpcClient::InitializaDaObjects",
                    exc.ToString());
            }                   //	end try...catch

            return(connectResult);
        }               //	end InitializeDaObjects
        public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Subscription))
            {
                return(TestResult.ParameterMissing("Subscription"));
            }

            DaSubscription subscription = GetProperty(Subscription) as DaSubscription;

            if (subscription == null)
            {
                return(TestResult.ParameterInvalid("Subscription"));
            }

            try
            {
                int result = subscription.Disconnect(new ExecutionOptions());

                subscription.DaSession.RemoveDaSubscription(subscription);
            }
            catch (Exception ex)
            {
                return(new TestResult(ex));
            }

            UnsetProperty(Subscription);

            return(TestResult.Success());
        }
Example #11
0
        /// <summary>
        /// Add items to the list
        /// </summary>
        public void ShowItems(DaSubscription anDaSubscription, DaItem[] items, ShownItems cond, DaSession[] sessions)
        {
            try
            {
                this.SuspendLayout();
                itemsListView.Items.Clear();
                switch (cond)
                {
                case ShownItems.All:
                    ShowAllItems(sessions);
                    break;

                case ShownItems.Session:
                    ShowSessionItems(sessions);
                    break;

                case ShownItems.Subscription:
                    ShowSubscriptionItems(anDaSubscription, items);
                    break;
                }
                if (itemsListView.Items.Count > 0)
                {
                    this.Enabled = true;
                }
                else
                {
                    this.Enabled = false;
                }
                this.ResumeLayout();
            }
            catch { }
        }
Example #12
0
 /// <summary>
 /// Show subscription items
 /// </summary>
 /// <param name="anDaSubscription"></param>
 /// <param name="items"></param>
 private void ShowSubscriptionItems(DaSubscription anDaSubscription, DaItem[] items)
 {
     if (items == null)
     {
         items = anDaSubscription.ItemList;
     }
     ValueQT[] itemValues;
     int[]     results;
     if (ResultCode.SUCCEEDED(anDaSubscription.Read(0, items, out itemValues, out results, null)))
     {
         for (int i = 0; i < items.Length; i++)
         {
             string error;
             anDaSubscription.DaSession.GetErrorString(results[i], out error, null);
             if (ResultCode.SUCCEEDED(results[i]))
             {
                 AddListViewItem(items[i], itemValues[i]);
             }
             else
             {
                 AddListViewItem(items[i], items[i].ValueQT);
             }
         }
     }
     else
     {
         foreach (DaItem item in items)
         {
             AddListViewItem(item, item.ValueQT);
         }
     }
 }
        }         // end HandleDataChanged

        public static void HandleSubscriptionReadCompleted(
            DaSubscription daSubscription,
            uint executionContext,
            DaItem[] items,
            ValueQT[] values,
            int[] results,
            int result)
        {
            FileStream   fs           = new FileStream("C:\\ClientService.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter streamWriter = new StreamWriter(fs);

            streamWriter.BaseStream.Seek(0, SeekOrigin.End);
            if (ResultCode.SUCCEEDED(result))
            {
                streamWriter.WriteLine(daSubscription + " asynchronous read succeeded! ");

                for (int i = 0; i < values.Length; i++)
                {
                    if (ResultCode.SUCCEEDED(results[i]))
                    {
                        streamWriter.WriteLine(String.Format("{0,-19} {1} {2,-50} ", items[i].Id, "-", values[i].ToString()));
                    }
                    else
                    {
                        streamWriter.WriteLine(" Item read failed!" + items[i].Id + " [ResultID: " + results[i] + " ]");
                    }
                }
            }
            else
            {
                streamWriter.WriteLine(" Subscription asynchronous read failed! Result: " + result);
            }
            streamWriter.Flush();
            streamWriter.Close();
        }         // end HandleSubscriptionReadComplete
        }         // end HandleStateChanged

        public static void HandleDataChanged(
            DaSubscription daSubscription,
            DaItem[] items,
            ValueQT[] values,
            int[] results)
        {
            FileStream   fs           = new FileStream("C:\\ClientService.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter streamWriter = new StreamWriter(fs);

            streamWriter.BaseStream.Seek(0, SeekOrigin.End);
            streamWriter.WriteLine();
            streamWriter.WriteLine(daSubscription);
            for (int i = 0; i < items.Length; i++)
            {
                if (ResultCode.SUCCEEDED(results[i]))
                {
                    streamWriter.WriteLine(String.Format("{0,-19} {1} {2,-50} ", items[i].Id, "-", values[i].ToString()));
                }
                else
                {
                    streamWriter.WriteLine("Receiving item value failed! " + " Item: " + items[i].Id);
                }
            }
            streamWriter.WriteLine();
            streamWriter.Flush();
            streamWriter.Close();
        }         // end HandleDataChanged
        public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Session))
            {
                return(TestResult.ParameterMissing("Session"));
            }

            DaSession session = GetProperty(Session) as DaSession;

            if (session == null)
            {
                return(TestResult.ParameterInvalid("Session"));
            }

            try
            {
                DaSubscription subscription = new DaSubscription(UpdateRate, session);

                if (!subscription.Valid)
                {
                    return(TestResult.Failed("DaSubscription not Valid"));
                }

                if (RequestedKeepAliveTime.HasValue)
                {
                    subscription.RequestedKeepAliveTime = RequestedKeepAliveTime.Value;
                }

                // set the global property anyhow.
                SetProperty(Property, subscription);

                if (Connect)
                {
                    int result = subscription.Connect(Deep, Active, null);

                    if (ResultCode.FAILED(result))
                    {
                        EnumResultCode resCode = (EnumResultCode)Enum.Parse(typeof(EnumResultCode), result.ToString());

                        return(TestResult.Failed(string.Format("Call returned: {0}  ({1})", resCode.ToString(), result)));
                    }
                }

                if (Deadband.HasValue)
                {
                    subscription.Deadband = Deadband.Value;
                }
            }
            catch (Exception ex)
            {
                if (ExpectedSuccess)
                {
                    return(new TestResult(ex));
                }
            }

            return(TestResult.Success());
        }
Example #16
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
Example #17
0
        public static int GeSubscriptionSleepTime(DaSubscription subscription)
        {
            int max = subscription.RevisedUpdateRate > subscription.RevisedKeepAliveTime ?
                      (int)subscription.RevisedUpdateRate : (int)subscription.RevisedKeepAliveTime;

            int subscriptionSleep = max + (int)subscription.RevisedUpdateRate;

            return(subscriptionSleep);
        }
Example #18
0
        void subscription_WriteCompleted(DaSubscription aDaSubscription, uint executionContext, DaItem[] items, ValueQT[] values, int[] results, int result)
        {
            if (executionContext == m_asyncExecutionContext)
            {
                m_asyncResults = results;
                m_asyncResult  = result;

                m_waitHandle.Set();
            }
        }
Example #19
0
        }        // end PrintDaSession

        public void PrintDaSubscription(DaSubscription subscription)
        {
            System.Console.WriteLine("Subscription's Attributes:");
            System.Console.WriteLine("	Name: "+ subscription.Name);
            System.Console.WriteLine("	RequestedUpdateRate: "+ subscription.RequestedUpdateRate);
            System.Console.WriteLine("	RevisedUpdateRate: "+ subscription.RevisedUpdateRate);
            System.Console.WriteLine("	Deadband: "+ subscription.Deadband);
            System.Console.WriteLine("	TimeBias: "+ subscription.TimeBias);
            System.Console.WriteLine("	RequestedKeepAliveTime: "+ subscription.RequestedKeepAliveTime);
            System.Console.WriteLine("	RevisedKeepAliveTime: "+ subscription.RevisedKeepAliveTime);
            System.Console.WriteLine("	LocaleID: "+ subscription.LocaleId);
            System.Console.WriteLine();
        }         //end PrintDaSubscription
Example #20
0
 /// <summary>
 /// Delete all subscription Da items
 /// </summary>
 /// <param name="daSubscription"></param>
 public void DeleteDaItems(DaSubscription daSubscription)
 {
     foreach (DaItem daItem in daSubscription.ItemList)
     {
         daItem.StateChangeCompleted -= new Softing.OPCToolbox.Client.StateChangeEventHandler(item_StateChangeCompleted);
         ListViewItem listViewItem = new ListViewItem(daItem.Id);
         if (itemsListView.Items.Contains(listViewItem))
         {
             daItem.Disconnect(null);
             itemsListView.Items.Remove(listViewItem);
         }
     }
 }
Example #21
0
        /// <summary>
        /// Display the item new properties
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="executionContext"></param>
        /// <param name="whatAttributes"></param>
        /// <param name="results"></param>
        /// <param name="result"></param>
        void DaSubscription_SetDaItemAttributesToServerCompleted(DaSubscription aDaSubscription, uint executionContext, DaItem[] items, EnumObjectAttribute[] whatAttributes, int[] results, int result)
        {
            if (this.InvokeRequired)
            {
                Softing.OPCToolbox.Client.SetDaItemAttributesToServerEventHandler callback = new Softing.OPCToolbox.Client.SetDaItemAttributesToServerEventHandler(DaSubscription_SetDaItemAttributesToServerCompleted);
                this.Invoke(callback, new object[] { aDaSubscription, executionContext, items, whatAttributes, results, result });
                return;
            }

            if (ResultCode.SUCCEEDED(result))
            {
                for (int i = 0; i < items.Length; i++)
                {
                    if (ResultCode.SUCCEEDED(results[i]))
                    {
                        DaItem item = items[i];
                        foreach (EnumObjectAttribute objAttrib in whatAttributes)
                        {
                            if (objAttrib == EnumObjectAttribute.DAITEM_ID ||
                                objAttrib == EnumObjectAttribute.DAITEM_ALL)
                            {
                                //find the element and reset the ID
                                foreach (ListViewItem listViewItem in itemsListView.Items)
                                {
                                    if (listViewItem == null)
                                    {
                                        continue;
                                    }
                                    if (listViewItem.Tag == null)
                                    {
                                        return;
                                    }
                                    DaItem daItem = listViewItem.Tag as DaItem;
                                    if (daItem == null)
                                    {
                                        continue;
                                    }
                                    if (daItem == item)
                                    {
                                        listViewItem.Text = item.Id;
                                        SetItemImage(daItem.CurrentState, listViewItem);
                                        item.DaSubscription.SetDaItemAttributesToServerCompleted -= new SetDaItemAttributesToServerEventHandler(DaSubscription_SetDaItemAttributesToServerCompleted);
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public static void HandleDataChanged(
            DaSubscription daSubscription,
            DaItem[] items,
            ValueQT[] values,
            int[] results)
        {
            MyDaSubscription mySub = daSubscription as MyDaSubscription;

            lock (CountDataChanges.s_locker)
            {
                CountDataChanges.s_dataChangesPerSubscription[mySub.m_subscriptionId] += items.Length;
                CountDataChanges.s_counts += items.Length;
            }
        }
Example #23
0
 /// <summary>
 /// Update list view items if are an item form the collection
 /// </summary>
 /// <param name="aDaSubscription"></param>
 /// <param name="items"></param>
 /// <param name="values"></param>
 /// <param name="results"></param>
 public void DataChanged(DaSubscription aDaSubscription, DaItem[] items, ValueQT[] values, int[] results)
 {
     foreach (ListViewItem listViewItem in itemsListView.Items)
     {
         if (listViewItem == null)
         {
             continue;
         }
         if (listViewItem.Tag == null)
         {
             continue;
         }
         DaItem daItem = listViewItem.Tag as DaItem;
         if (daItem == null)
         {
             continue;
         }
         string itemText = listViewItem.Text;
         for (int i = 0; i < items.Length; i++)
         {
             if (daItem == items[i])
             {
                 if (ResultCode.SUCCEEDED(results[i]))
                 {
                     listViewItem.SubItems.Clear();
                     listViewItem.Text = itemText;
                     listViewItem.Tag  = daItem;
                     if (daItem.AccessRights != EnumAccessRights.WRITEABLE && values[i] != null)
                     {
                         listViewItem.SubItems.Add(ValueConverter.ArrayToString(values[i]));
                         listViewItem.SubItems.Add(values[i].Quality.ToString());
                         listViewItem.SubItems.Add(ValueConverter.DateTimeOptions(values[i].TimeStamp));
                     }
                     else
                     {
                         listViewItem.SubItems.Add("");
                         listViewItem.SubItems.Add("");
                         listViewItem.SubItems.Add("");
                     }
                     listViewItem.SubItems.Add(daItem.DaSubscription.DaSession.Url);
                     listViewItem.SubItems.Add(daItem.DaSubscription.Name);
                 }
             }
         }
     }
 }
Example #24
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);
        }
        public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Subscription))
            {
                return(TestResult.ParameterMissing("Subscription"));
            }

            DaSubscription subscription = GetProperty(Subscription) as DaSubscription;

            if (subscription == null)
            {
                return(TestResult.ParameterInvalid("Subscription"));
            }

            try
            {
                if (!subscription.Valid)
                {
                    return(TestResult.Failed("DaSubscription not Valid"));
                }

                if (UpdateRate.HasValue)
                {
                    subscription.RequestedUpdateRate = UpdateRate.Value;
                }

                if (RequestedKeepAliveTime.HasValue)
                {
                    subscription.RequestedKeepAliveTime = RequestedKeepAliveTime.Value;
                }

                if (Deadband.HasValue)
                {
                    subscription.Deadband = Deadband.Value;
                }
            }
            catch (Exception ex)
            {
                return(new TestResult(ex));
            }

            return(TestResult.Success());
        }
Example #26
0
        void subscription_DataChanged(DaSubscription aDaSubscription, DaItem[] items, ValueQT[] values, int[] results)
        {
            //check for keep alive notifications
            if (items == null)
            {
                return;
            }
            if (items.Length == 0)
            {
                return;
            }
            if (items[0] == null)
            {
                return;
            }

            m_bReceived = true;
            m_dataChanges.Add(new DaSubscriptionDataChange(items, values, results));
        }
        }         // end HandleStateChanged

        public static void HandleDataChanged(
            DaSubscription daSubscription,
            DaItem[] items,
            ValueQT[] values,
            int[] results)
        {
            System.Console.WriteLine();
            System.Console.WriteLine(daSubscription);
            for (int i = 0; i < items.Length; i++)
            {
                if (ResultCode.SUCCEEDED(results[i]))
                {
                    System.Console.WriteLine(String.Format("{0,-19} {1} {2,-50} ", items[i].Id, "-", values[i].ToString()));
                }
                else
                {
                    System.Console.WriteLine("Receiving item value failed! " + " Item: " + items[i].Id);
                }
            }
            System.Console.WriteLine();
        }         // end HandleDataChanged
Example #28
0
        public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Subscription))
            {
                return(TestResult.ParameterMissing("Subscription"));
            }

            DaSubscription subscription = GetProperty(Subscription) as DaSubscription;

            if (subscription == null)
            {
                return(TestResult.ParameterInvalid("Subscription"));
            }

            DataChangedEventHandler handler = new DataChangedEventHandler(subscription_DataChanged);

            subscription.DataChanged += handler;

            int  waitTime  = WaitTime.HasValue ? WaitTime.Value : GeSubscriptionSleepTime(subscription);
            bool bOverWait = false;

            System.Threading.Thread.Sleep(waitTime);

            if (ExpectValues && !m_bReceived)                   //if expecting notifications and we don't have any, then wait some more
            {
                System.Threading.Thread.Sleep(waitTime);
                bOverWait = true;
            }

            subscription.DataChanged -= handler;

            if (m_bReceived)
            {
                if (!ExpectValues)
                {
                    return(new DaSubscriptionWaitForNotifTestResult(TestResults.Failed, m_dataChanges, "Received unexpected data changes"));
                }

                if (bOverWait)
                {
                    return(new DaSubscriptionWaitForNotifTestResult(TestResults.Warning, m_dataChanges, "Notifications received late"));
                }
                else
                {
                    string details = "Notifications per second ";
                    Int32  sum     = 0;
                    for (UInt32 i = 0; i < m_dataChanges.Count; i++)
                    {
                        sum += m_dataChanges.ToArray()[i].ItemIDs.Length;
                    }

                    details += sum * 1000 / waitTime;
                    return(new DaSubscriptionWaitForNotifTestResult(TestResults.Success, m_dataChanges, details));
                }
            }
            else
            {
                if (ExpectValues)
                {
                    return(TestResult.Failed("Didn't receive expected data changes"));
                }

                return(TestResult.Success());
            }
        }
Example #29
0
        public static int GeSubscriptionSleepTime(DaSubscription subscription)
        {
            uint subscriptionSleep = subscription.RevisedUpdateRate;

            return(2 * (int)subscriptionSleep);
        }
Example #30
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);
        }