public override async Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation($"Worker started at: {DateTime.Now}"); StringCollection baseAddress = new StringCollection { DiscoveryEndpointUrl }; StringCollection serverCapabilities = new StringCollection { "DA" }; StringCollection discoveryUrls = new StringCollection { "opc.tcp://opc.ua.global.discovery.server:58810/UADiscovery" }; //Initialise _applicationInstanceManager = new ApplicationInstanceManager(ApplicationName, ApplicationUri, baseAddress, serverCapabilities, DiscoveryEndpointUrl, DiscoveryEndpointApplicationUri, discoveryUrls, null, _applicationType, true); try { _mainServer = new MainServer(_applicationInstanceManager); _mainServer.Start(_applicationInstanceManager.ApplicationInstance.ApplicationConfiguration); bool connected = _applicationInstanceManager.ConnectToGlobalDiscoveryServer("opc.tcp://opc.ua.global.discovery.server:58810/UADiscovery", "appadmin", "demo"); if (connected) { _applicationInstanceManager.RegisterApplication(); _applicationInstanceManager.RequestNewCertificatePullMode(); } } catch (Exception ex) { _logger.LogInformation("Exception: ", ex.StackTrace); } await base.StartAsync(cancellationToken); }
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(); } }