private void CallToolStripMenuItemClick(object sender, EventArgs e) { inputArgumentsPanel.Controls.Clear(); outputArgumentsPanel.Controls.Clear(); _selectedObjectId = null; _selectedMethodId = null; if (!(_selectedTreeNode?.Tag is AttributeData attributeData)) { return; } if (!(_selectedTreeNode.Parent?.Tag is AttributeData parentAttributeData)) { return; } _selectedObjectId = parentAttributeData.NodeId; _selectedMethodId = attributeData.NodeId; ExtendedDataDescription methodReference = _applicationInstanceManager.FlatExtendedDataDescriptionDictionary[attributeData.NodeId.Identifier.ToString()]; //extract input/output descriptions DataDescription inputDataDescription = methodReference.VariableDataDescriptions.FirstOrDefault(x => x.AttributeData.BrowseName.Name == NameVariables.InputArguments); DataDescription outputDataDescription = methodReference.VariableDataDescriptions.FirstOrDefault(x => x.AttributeData.BrowseName.Name == NameVariables.OutputArguments); //get all argument information ExtensionObject[] inputExtensionObjects = (ExtensionObject[])inputDataDescription?.AttributeData.Value.Value; ExtensionObject[] outputExtensionObjects = (ExtensionObject[])outputDataDescription?.AttributeData.Value.Value; callMethodButton.Enabled = true; if (inputExtensionObjects != null) { foreach (ExtensionObject extensionObject in inputExtensionObjects) { Argument argument = (Argument)extensionObject.Body; Variant defaultValue = new Variant(TypeInfo.GetDefaultValue(argument.DataType, argument.ValueRank)); if (defaultValue.Value == null) { defaultValue.Value = ""; } AddInputArgumentUserControl(defaultValue.Value?.ToString(), argument.Description.Text, argument.Name, defaultValue.TypeInfo); } } if (outputExtensionObjects == null) { return; } foreach (ExtensionObject extensionObject in outputExtensionObjects) { Argument argument = (Argument)extensionObject.Body; Variant defaultValue = new Variant(TypeInfo.GetDefaultValue(argument.DataType, argument.ValueRank)); AddOutputArgumentUserControl(defaultValue.Value?.ToString(), argument.Description.Text, argument.Name, defaultValue.TypeInfo); } }
private void ObjectTreeViewMouseDoubleClick(object sender, MouseEventArgs e) { attributesListView.Items.Clear(); TreeNode parentNode = objectTreeView.SelectedNode; if (parentNode == null) { return; } if (!(parentNode?.Tag is AttributeData parentNodeAttributeData)) { return; } if (!_applicationInstanceManager.FlatExtendedDataDescriptionDictionary.ContainsKey(parentNodeAttributeData.NodeId.Identifier.ToString())) { return; } ExtendedDataDescription objectReference = _applicationInstanceManager.FlatExtendedDataDescriptionDictionary[parentNodeAttributeData.NodeId.Identifier.ToString()]; PopulateAttributeListView(parentNodeAttributeData); TreeNode[] browsedObjects; if (objectReference.MethodDataDescriptions != null) { browsedObjects = (from x in objectReference.MethodDataDescriptions select new TreeNode(x.DataDescription.ReferenceDescription.BrowseName.Name, 0, 0) { Name = x.DataDescription.ReferenceDescription.BrowseName.Name, Tag = x.DataDescription.AttributeData }).ToArray(); PopulateTreeNode(parentNode, browsedObjects); } if (objectReference.VariableDataDescriptions != null) { browsedObjects = (from x in objectReference.VariableDataDescriptions select new TreeNode(x.ReferenceDescription.BrowseName.Name, 1, 1) { Name = x.ReferenceDescription.BrowseName.Name, Tag = x.AttributeData }).ToArray(); PopulateTreeNode(parentNode, browsedObjects); } if (objectReference.ObjectDataDescriptions == null) { return; } browsedObjects = (from x in objectReference.ObjectDataDescriptions select new TreeNode(x.DataDescription.ReferenceDescription.BrowseName.Name, 2, 2) { Name = x.DataDescription.ReferenceDescription.BrowseName.Name, Tag = x.DataDescription.AttributeData }).ToArray(); PopulateTreeNode(parentNode, browsedObjects); }
private void Connect(bool connectToServer = false) { try { connectButton.Enabled = false; disconnectButton.Enabled = true; objectTreeView.Nodes.Clear(); objectTreeView.Enabled = false; if (!connectToServer) { _applicationInstanceManager = new ApplicationInstanceManager(ApplicationName, ApplicationUri, null, null, null, null, _globalDiscoveryServerUrls, _globalDiscoveryServerWellKnownUrls, _applicationType, true); } if (globalDiscoveryServerUseCheckBox.Checked && !connectToServer) { globalDiscoveryServerConnectionStatusPanel.BackColor = Color.Red; string gdsUserName = globalDiscoveryServerUseSecurityCheckBox.Checked ? globalDiscoveryServerUserNameTextBox.Text : null; string gdsUserPassword = globalDiscoveryServerUseSecurityCheckBox.Checked ? globalDiscoveryServerPasswordTextBox.Text : null; bool connectedToGDS = _applicationInstanceManager.ConnectToGlobalDiscoveryServer( globalDiscoveryServerDiscoveryURLTextBox.Text, gdsUserName, gdsUserPassword); if (!connectedToGDS) { Disconnect(); return; } if (registerApplicationCheckBox.Checked) { _applicationInstanceManager.RegisterApplication(); } if (requestNewCertificateCheckBox.Checked) { _applicationInstanceManager.RequestNewCertificatePullMode(); } List <ServerOnNetwork> serversOnNetwork = _applicationInstanceManager.QueryServers(); discoveredServersListView.Items.Clear(); if (serversOnNetwork == null || !serversOnNetwork.Any()) { Disconnect(); return; } ListViewItem[] discoveredServersListViewItems = (from x in serversOnNetwork select new ListViewItem(x.DiscoveryUrl)).ToArray(); discoveredServersListView.Items.AddRange(discoveredServersListViewItems); globalDiscoveryServerConnectionStatusPanel.BackColor = Color.Green; } if (!connectToServer && globalDiscoveryServerUseCheckBox.Checked) { return; } connectionStatusPanel.BackColor = Color.Red; string userName = useSecurityCheckBox.Checked ? serverUserNameTextBox.Text : null; string userPassword = useSecurityCheckBox.Checked ? serverPasswordTextBox.Text : null; bool connectedToServer = _applicationInstanceManager.ConnectToServer(serverDiscoveryURLTextBox.Text, userName, userPassword); _applicationInstanceManager.GetRootExtendedDataDescriptions(); if (!connectedToServer) { return; } List <TreeNode> browsedObjects = new List <TreeNode>(); if (_applicationInstanceManager.FlatExtendedDataDescriptionDictionary.ContainsKey(ObjectIds.ObjectsFolder.Identifier.ToString())) { ExtendedDataDescription objectReference = _applicationInstanceManager.FlatExtendedDataDescriptionDictionary[ObjectIds.ObjectsFolder.Identifier.ToString()]; browsedObjects.Add(new TreeNode() { Text = objectReference.DataDescription.AttributeData.BrowseName.Name, Tag = objectReference.DataDescription.AttributeData }); } if (_applicationInstanceManager.FlatExtendedDataDescriptionDictionary.ContainsKey(ObjectIds.TypesFolder.Identifier.ToString())) { ExtendedDataDescription typesReference = _applicationInstanceManager.FlatExtendedDataDescriptionDictionary[ObjectIds.TypesFolder.Identifier.ToString()]; browsedObjects.Add(new TreeNode() { Text = typesReference.DataDescription.AttributeData.BrowseName.Name, Tag = typesReference.DataDescription.AttributeData }); } if (_applicationInstanceManager.FlatExtendedDataDescriptionDictionary.ContainsKey(ObjectIds.ViewsFolder.Identifier.ToString())) { ExtendedDataDescription viewReference = _applicationInstanceManager.FlatExtendedDataDescriptionDictionary[ObjectIds.ViewsFolder.Identifier.ToString()]; browsedObjects.Add(new TreeNode() { Text = viewReference.DataDescription.AttributeData.BrowseName.Name, Tag = viewReference.DataDescription.AttributeData }); } objectTreeView.Enabled = true; objectTreeView.Nodes.AddRange(browsedObjects.ToArray()); connectionStatusPanel.BackColor = Color.Green; } catch (Exception exception) { Console.WriteLine(exception); Disconnect(); } }