public void ChangeItem(AeCondition condition, string state) { ListViewItem item = new ListViewItem(state); item.Tag = condition; conditionlistView.Items.Add(item); item.SubItems.Add(condition.SourcePath); item.SubItems.Add(condition.ConditionName); item.SubItems.Add(condition.Severity.ToString()); item.SubItems.Add(condition.Message); item.SubItems.Add(condition.OccurenceTime.ToString("hh:mm:ss.fff")); item.SubItems.Add(condition.ActorId); item.SubItems.Add(condition.SubConditionName); }
private void acknowledgeToolStripMenuItem_Click(object sender, EventArgs e) { try { conditionsListView.Cursor = Cursors.WaitCursor; foreach (ListViewItem item in conditionsListView.SelectedItems) { AeCondition condition = item.Tag as AeCondition; int[] results = null; condition.AeSession.AcknowledgeAeConditions(Environment.UserName, AECONDITION, new AeCondition[] { condition }, out results, null); } } catch { } finally { conditionsListView.Cursor = Cursors.Default; } }
} // end BuildEventCategories public int InitializeConditions() { try { condition1 = new AeCondition(); condition2 = new AeCondition(); eventAttributes1 = new ArrayList(); eventAttributes1.Add(1); eventAttributes2 = new ArrayList(); eventAttributes2.Add(2); condition1.Category = _timeSlot; condition1.Definition = _timeSlot.GetConditionDefinition(COND_NAME_BETWEEN_MULTIPLE); condition1.Name = COND_NAME_BETWEEN_MULTIPLE; condition1.SourcePath = "computer/clock/time slot 1"; condition1.Quality = EnumQuality.GOOD; condition1.EventAttributes = eventAttributes1; condition1.UserData = 1; condition2.Category = _timeSlot; condition2.Name = COND_NAME_BETWEEN_SINGLE; condition2.Definition = _timeSlot.GetConditionDefinition(COND_NAME_BETWEEN_SINGLE); condition2.SourcePath = "computer/clock/time slot 1"; condition2.Quality = EnumQuality.GOOD; condition2.EventAttributes = eventAttributes2; condition2.UserData = 2; } catch (Exception exc) { Trace( EnumTraceLevel.ERR, EnumTraceGroup.USER1, "OpcServer:initializeConditions", exc.ToString()); return((int)EnumResultCode.E_FAIL); } // end try...catch return((int)EnumResultCode.S_OK); } // end InitializeConditions
//-- #endregion #region Public Properties //----------------------- //-- #endregion #region Handles //----------------------- private void HandleAeConditionsChanged(AeSubscription anAeSubscription, AeCondition[] conditions) { if (m_opcForm.conditionlistView.InvokeRequired) { RemoveItemsFromListView riflw = new RemoveItemsFromListView(m_opcForm.RemoveItems); m_opcForm.conditionlistView.BeginInvoke(riflw, null); } else { m_opcForm.conditionlistView.Items.Clear(); } string state = String.Empty; for (int i = 0; i < conditions.Length; i++) { AeCondition condition = conditions[i]; state = GetState(condition.State); if (m_opcForm.conditionlistView.InvokeRequired) { ChangeConditionListView cclw = new ChangeConditionListView(m_opcForm.ChangeItem); m_opcForm.conditionlistView.BeginInvoke(cclw, new object[] { condition, state }); } else { ListViewItem item = new ListViewItem(state); item.Tag = condition; m_opcForm.conditionlistView.Items.Add(item); item.SubItems.Add(condition.SourcePath); item.SubItems.Add(condition.ConditionName); item.SubItems.Add(condition.Severity.ToString()); item.SubItems.Add(condition.Message); item.SubItems.Add(condition.OccurenceTime.ToString("hh:mm:ss.fff")); item.SubItems.Add(condition.ActorId); item.SubItems.Add(condition.SubConditionName); state = String.Empty; } } //end for System.Diagnostics.Debug.WriteLine("The conditions list has changed "); }
private void GetConditionStateButtonOnClick(object sender, System.EventArgs e) { if (conditionlistView.SelectedItems.Count != 0) { AeCondition condition = ((AeCondition)conditionlistView.SelectedItems[0].Tag); AeConditionState conditionState = null; this.conditionStateRichTextBox.Text = null; int res = m_session.GetAeConditionState(condition.SourcePath, condition.ConditionName, null, out conditionState, m_executionOptions); if (ResultCode.SUCCEEDED(res) && (m_executionOptions.ExecutionType == EnumExecutionType.SYNCHRONOUS)) { this.conditionStateRichTextBox.Text += " Source Path: " + condition.SourcePath + "\n"; this.conditionStateRichTextBox.Text += " Condition Name: " + condition.ConditionName + "\n"; this.conditionStateRichTextBox.Text += " State: " + GetState(conditionState.State) + "\n"; this.conditionStateRichTextBox.Text += " Quality: " + conditionState.Quality + "\n"; this.conditionStateRichTextBox.Text += " Active Time: " + conditionState.ConditionActiveTime + "\n"; this.conditionStateRichTextBox.Text += " Inactive Time: " + conditionState.ConditionInactiveTime + "\n"; this.conditionStateRichTextBox.Text += " AcknowledgeTime: " + conditionState.ConditionAckTime + "\n"; this.conditionStateRichTextBox.Text += " AcknowledgerComment: " + conditionState.AcknowledgerComment + "\n"; this.conditionStateRichTextBox.Text += " AcknowledgerID: " + conditionState.AcknowledgerId + "\n"; this.conditionStateRichTextBox.Text += " Active subcondition time: " + conditionState.SubConditionActiveTime + "\n"; this.conditionStateRichTextBox.Text += " Active subcondition name: " + conditionState.ActiveSubConditionName + "\n"; this.conditionStateRichTextBox.Text += " Active subcondition definition: " + conditionState.ActiveSubConditionDefinition + "\n"; this.conditionStateRichTextBox.Text += " Active subcondition description: " + conditionState.ActiveSubConditionDescription + "\n"; this.conditionStateRichTextBox.Text += " Active subcondition severity: " + conditionState.ActiveSubConditionSeverity + "\n"; this.conditionStateRichTextBox.Text += " Number of subconditions: " + conditionState.SubConditionsNames.Length + "\n"; for (int i = 0; i < conditionState.SubConditionsNames.Length; i++) { this.conditionStateRichTextBox.Text += " Subcondition name: "+ conditionState.SubConditionsNames[i] + "\n"; this.conditionStateRichTextBox.Text += " Subcondition definition: "+ conditionState.SubConditionsDefinitions[i] + "\n"; this.conditionStateRichTextBox.Text += " Subcondition description: "+ conditionState.SubConditionsDescriptions[i] + "\n"; this.conditionStateRichTextBox.Text += " Subcondition severity: "+ conditionState.SubConditionsSeverities[i] + "\n"; } //end for } //end if } else { MessageBox.Show(" Select a condition in the condition list ! ", "Select condition"); } //ens if ... else }
/// <summary> /// Add Condition /// </summary> /// <param name="condition"></param> /// <param name="subsciption"></param> private void AddCondition(AeCondition condition, AeSubscription subsciption) { try { ListViewItem item = new ListViewItem(condition.SourcePath); item.ImageIndex = SetConditionImage(condition.State); condition.AeSession = subsciption.AeSession; item.Tag = condition; item.SubItems.Add(condition.ConditionName); item.SubItems.Add(condition.Severity.ToString()); item.SubItems.Add(condition.Message); item.SubItems.Add(ValueConverter.DateTimeOptions(condition.OccurenceTime)); item.SubItems.Add(condition.ActorId); item.SubItems.Add(condition.SubConditionName); item.SubItems.Add(subsciption.AeSession.Url); item.SubItems.Add(SUBSCRIPTION); conditionsListView.Items.Add(item); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
} // end BuildAddressSpace public void FireSimulationEvents() { String message = null; AeCondition condition1 = new AeCondition(); condition1.Category = m_timeSlotCategory; condition1.Name = Console.COND_NAME_BETWEEN_SINGLE; condition1.Definition = m_timeSlotCategory.GetConditionDefinition(Console.COND_NAME_BETWEEN_SINGLE); condition1.SourcePath = "clock.time slot 1"; condition1.Quality = EnumQuality.GOOD; condition1.UserData = 1; AeCondition condition2 = new AeCondition(); condition2.Category = m_timeSlotCategory; condition2.Name = Console.COND_NAME_BETWEEN_MULTIPLE; condition2.Definition = m_timeSlotCategory.GetConditionDefinition(Console.COND_NAME_BETWEEN_MULTIPLE); condition2.SourcePath = "clock.time slot 2"; condition2.Quality = EnumQuality.GOOD; condition2.UserData = 1; if (m_second != DateTime.Now.Second) { ArrayList conditionList = new ArrayList(); ArrayList eventAttributes = new ArrayList(); switch (DateTime.Now.Second) { case 10: eventAttributes.Add(DateTime.Now.Second); condition1.Severity = 510; message = "between [10,50]"; condition1.Message = message; condition1.AckRequired = true; condition1.EventAttributes = eventAttributes; condition1.ChangeMask = (Byte)(EnumConditionChange.ACTIVE_STATE | EnumConditionChange.SEVERITY | EnumConditionChange.MESSAGE | EnumConditionChange.ATTRIBUTE); condition1.StateChange = EnumConditionState.ACTIVE; conditionList.Add(condition1); condition2.Severity = 500; message = "between [10,30]"; condition2.Message = message; condition2.AckRequired = true; condition2.ActiveSubConditionName = "[10,30]"; condition2.EventAttributes = eventAttributes; condition2.ChangeMask = (Byte)(EnumConditionChange.ACTIVE_STATE | EnumConditionChange.SEVERITY | EnumConditionChange.MESSAGE | EnumConditionChange.SUBCONDITION | EnumConditionChange.ATTRIBUTE); condition2.StateChange = EnumConditionState.ACTIVE; conditionList.Add(condition2); break; case 30: eventAttributes.Add(DateTime.Now.Second); condition2.Severity = 540; message = "between [30,50]"; condition2.Message = message; condition2.AckRequired = true; condition2.ActiveSubConditionName = "[30,50]"; condition2.EventAttributes = eventAttributes; condition2.ChangeMask = (Byte)(EnumConditionChange.ACTIVE_STATE | EnumConditionChange.SEVERITY | EnumConditionChange.MESSAGE | EnumConditionChange.SUBCONDITION | EnumConditionChange.ATTRIBUTE); condition2.StateChange = EnumConditionState.ACTIVE; conditionList.Add(condition2); break; case 50: eventAttributes.Add(DateTime.Now.Second); condition1.Severity = 1; message = "not between [10,50]"; condition1.Message = message; condition1.AckRequired = false; condition1.EventAttributes = eventAttributes; condition1.ChangeMask = (Byte)(EnumConditionChange.ACTIVE_STATE | EnumConditionChange.SEVERITY | EnumConditionChange.MESSAGE | EnumConditionChange.ATTRIBUTE); condition1.StateChange = EnumConditionState.NO; conditionList.Add(condition1); condition2.Severity = 1; message = "not between [10,50]"; condition2.Message = message; condition2.AckRequired = false; condition2.EventAttributes = eventAttributes; condition2.ChangeMask = (Byte)(EnumConditionChange.ACTIVE_STATE | EnumConditionChange.SEVERITY | EnumConditionChange.MESSAGE | EnumConditionChange.SUBCONDITION | EnumConditionChange.ATTRIBUTE); condition2.StateChange = EnumConditionState.NO; conditionList.Add(condition2); break; default: break; } // end switch if (conditionList.Count > 0) { Application.Instance.ChangeConditions(conditionList); } // end if // simple events if (m_second != DateTime.Now.Second) { AeEvent secondEvent = new AeEvent(EnumEventType.SIMPLE, "time.local", Console.CATEGORY_ID_TIME_TICK); ArrayList attributeValues = new ArrayList(); attributeValues.Add(DateTime.Now.Hour); attributeValues.Add(DateTime.Now.Minute); attributeValues.Add(DateTime.Now.Second); m_second = (Byte)DateTime.Now.Second; secondEvent.Severity = 50; secondEvent.ActorId = "opcUser"; message = "Second Changed"; secondEvent.Message = message; secondEvent.AttributeValueList = attributeValues; secondEvent.Fire(); } if (m_minute != DateTime.Now.Minute) { AeEvent minuteEvent = new AeEvent(EnumEventType.SIMPLE, "time.local", Console.CATEGORY_ID_TIME_TICK); ArrayList attributeValues = new ArrayList(3); attributeValues.Add(DateTime.Now.Hour); attributeValues.Add(DateTime.Now.Minute); attributeValues.Add(DateTime.Now.Second); m_minute = (Byte)DateTime.Now.Minute; minuteEvent.Severity = 900; minuteEvent.ActorId = "opcUser"; message = "Minute Changed"; minuteEvent.Message = message; minuteEvent.AttributeValueList = attributeValues; minuteEvent.Fire(); } } if (System.Console.KeyAvailable) { ArrayList attributeValues = new ArrayList(1); ConsoleKeyInfo keyInfo = System.Console.ReadKey(); attributeValues.Add((Byte)keyInfo.KeyChar); char charPressed = keyInfo.KeyChar; AeEvent keyEvent = new AeEvent(EnumEventType.TRACKING, "keyboard.key", Console.CATEGORY_ID_KEY_HIT); keyEvent.Severity = 600; message = "key hit : "; message += charPressed.ToString(); keyEvent.Message = message; keyEvent.AttributeValueList = attributeValues; keyEvent.Fire(); //writing to keyboard.key DA Variable ValueQT value = new ValueQT((Byte)keyInfo.KeyChar, EnumQuality.GOOD, DateTime.Now); if (m_keyElement != null) { m_keyElement.ValueChanged(value); } } } // end FireEvents