/// <summary> /// Called when an asynchronous read request completes. /// </summary> private void OnReadComplete(object clientHandle, TsCDaItemValueResult[] results) { try { if (InvokeRequired) { BeginInvoke(new TsCDaReadCompleteEventHandler(OnReadComplete), new object[] { clientHandle, results }); return; } if (!mHandle_.Equals(clientHandle)) { return; } resultsCtrl_.Initialize(mSubscription_.Server, null, results); mRequest_ = null; mResults_ = results; okBtn_.Enabled = true; cancelBtn_.Enabled = true; goBtn_.Visible = true; stopBtn_.Visible = false; } catch (Exception e) { MessageBox.Show(e.Message); } }
/// <summary> /// Executes a read request for the current set if items. /// </summary> public void DoRead() { try { // read from server. TsCDaItem[] items = itemsCtrl_.GetItems(); TsCDaItemValueResult[] results = null; if (mSubscription_ != null) { if (mSynchronous_) { results = mSubscription_.Read(items); } else { results = new AsyncRequestDlg().ShowDialog(mSubscription_, items); if (results == null) { return; } } } else { // add dummy client handles to test that they get returned properly. foreach (TsCDaItem item in items) { item.ClientHandle = item.ItemName; } results = mServer_.Read(items); } // save results. mValues_ = results; backBtn_.Enabled = true; nextBtn_.Enabled = false; cancelBtn_.Visible = false; doneBtn_.Visible = true; optionsBtn_.Visible = false; itemsCtrl_.Visible = false; resultsCtrl_.Visible = true; // display results. resultsCtrl_.Initialize(mServer_, (mSubscription_ != null)?mSubscription_.Locale:mServer_.Locale, results); } catch (Exception e) { MessageBox.Show(e.Message); } }
/// <summary> /// Executes a write request for the current set if items. /// </summary> public void DoWrite() { try { // get the selected items TsCDaItemValue[] items = itemsCtrl_.GetItems(); // write to server. OpcItemResult[] results = null; if (mSubscription_ != null) { if (mSynchronous_) { results = mSubscription_.Write(items); } else { results = new AsyncRequestDlg().ShowDialog(mSubscription_, items); if (results == null) { return; } } } else { // add dummy client handles to test that they get returned properly. foreach (TsCDaItemValue item in items) { item.ClientHandle = item.ItemName; } results = mServer_.Write(items); } // create a list of item value results. ArrayList values = new ArrayList(); for (int ii = 0; ii < items.Length; ii++) { TsCDaItemValueResult value = new TsCDaItemValueResult(items[ii]); value.ItemName = results[ii].ItemName; value.ItemPath = results[ii].ItemPath; value.ClientHandle = results[ii].ClientHandle; value.ServerHandle = results[ii].ServerHandle; value.Result = results[ii].Result; value.DiagnosticInfo = results[ii].DiagnosticInfo; values.Add(value); } // save results. mValues_ = (TsCDaItemValueResult[])values.ToArray(typeof(TsCDaItemValueResult)); backBtn_.Enabled = true; nextBtn_.Enabled = false; cancelBtn_.Visible = false; doneBtn_.Visible = true; optionsBtn_.Visible = false; itemsCtrl_.Visible = false; resultsCtrl_.Visible = true; // display results. resultsCtrl_.Initialize(mServer_, (mSubscription_ != null)?mSubscription_.Locale:mServer_.Locale, mValues_); } catch (Exception e) { MessageBox.Show(e.Message); } }