/// <summary> /// The main entry point for the application. /// </summary> static void Main() { OutProc outProc = new OutProc(); int result = (int)EnumResultCode.S_OK; try { outProc.CreateOpcClient(); OpcClient opcClient = outProc.OpcClient; // initialize the client instance if (!ResultCode.SUCCEEDED(opcClient.Initialize())) { opcClient = null; return; } // end if // initialize the AE client simulation result |= opcClient.InitializeAeObjects(); OpcForm opcForm = new OpcForm(outProc); System.Windows.Forms.Application.Run(opcForm); opcClient.Terminate(); opcClient = null; } catch (Exception exc) { MessageBox.Show(exc.ToString()); } // end try...catch } // end Main
public OpcForm(OutProc anOutProc) { InitializeComponent(); try { m_outProc = anOutProc; m_opcClient = m_outProc.OpcClient; m_session = m_opcClient.m_aeSession; //create the events tree TreeNode root = new TreeNode(m_session.Url + " - Event Space ", 0, 0); eventsTreeView.Nodes.Add(root); //query categories for each event type AeCategory[] categories = null; m_session.QueryAeCategories(out categories, m_QC_executionOptions); for (int i = 0; i < categories.Length; i++) { TreeNode category = new TreeNode(categories[i].Description, 1, 1); root.Nodes.Add(category); //Query categories' attributes AeAttribute[] attributes = null; categories[i].QueryAeAttributes(out attributes, m_QA_executionOptions); for (int ii = 0; ii < attributes.Length; ii++) { TreeNode attribute = new TreeNode(attributes[ii].Description, 2, 2); category.Nodes.Add(attribute); } //Query ConditionNames string[] conditionNames = null; categories[i].QueryAeConditionNames(out conditionNames, m_QCN_executionOptions); for (int ii = 0; ii < conditionNames.Length; ii++) { TreeNode conditionName = new TreeNode(conditionNames[ii], 3, 3); category.Nodes.Add(conditionName); //Query SubConditionNames string[] subConditionNames = null; categories[i].QueryAeSubConditionNames(conditionNames[ii], out subConditionNames, m_QSCN_executionOptions); for (int iii = 0; iii < subConditionNames.Length; iii++) { Console.WriteLine(" The category " + categories[ii].Description + " has for the condition " + conditionNames[ii] + " the subcondition " + subConditionNames[iii]); } } } //Query available filters EnumFilterBy availableFilters; m_session.QueryAvailableAeFilters(out availableFilters, m_AF_executionOptions); if ((availableFilters & EnumFilterBy.AREA) == EnumFilterBy.AREA) { filtersTextBox.AppendText("Filter by Area \n"); } if ((availableFilters & EnumFilterBy.CATEGORY) == EnumFilterBy.CATEGORY) { filtersTextBox.AppendText("Filter by Category \n"); } if ((availableFilters & EnumFilterBy.EVENT) == EnumFilterBy.EVENT) { filtersTextBox.AppendText("Filter by Event \n"); } if ((availableFilters & EnumFilterBy.SEVERITY) == EnumFilterBy.SEVERITY) { filtersTextBox.AppendText("Filter by Severity \n"); } if ((availableFilters & EnumFilterBy.SOURCE) == EnumFilterBy.SOURCE) { filtersTextBox.AppendText("Filter by Source \n"); } } catch (Exception exc) { MessageBox.Show(exc.ToString()); } // end try...catch } // end constructor