/// <summary>
        /// Create server handles for new items.
        /// </summary>
        private void DoAddItems()
        {
            // get set of items from control.
            OpcItem[] items = itemsCtrl_.GetItemIDs(false);

            if (items == null)
            {
                return;
            }

            // assign unique client handles.
            foreach (OpcItem item in items)
            {
                item.ClientHandle = Guid.NewGuid().ToString();
            }

            // create item handles on server.
            mResults_ = mServer_.CreateItems(items);
        }
예제 #2
0
        /// <summary>
        /// Runs all test cases and displays the results.
        /// </summary>
        private void Run()
        {
            TsCHdaItem[] items = null;

            try
            {
                // clear existing results.
                resultsLv_.Items.Clear();

                // free the existing dataset.
                if (mDataset_ != null)
                {
                    mDataset_.Dispose();
                    mDataset_ = null;
                }

                // load the dataset.
                TestData[] tests = LoadDataSet();

                if (tests == null)
                {
                    return;
                }

                // create the item.
                OpcItemResult[] results = mServer_.CreateItems(new OpcItem[] { new OpcItem(mItemId_) });

                if (results == null || results.Length != 1)
                {
                    //throw new InvalidResponseException();
                }

                // return items.
                items = new TsCHdaItem[] { new TsCHdaItem(results[0]) };

                // execute test cases.
                foreach (TestData test in tests)
                {
                    ExecuteTest(test, items);
                }

                // adjust columns.
                AdjustColumns();

                // scroll to the first failed result.
                for (int ii = 0; ii < resultsLv_.Items.Count; ii++)
                {
                    if (resultsLv_.Items[ii].ForeColor == Color.Red)
                    {
                        resultsLv_.EnsureVisible(ii);
                        break;
                    }
                }
            }
            finally
            {
                if (items != null)
                {
                    try   { mServer_.ReleaseItems(items); }
                    catch {}
                }
            }
        }