示例#1
0
        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);
        }
示例#2
0
        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();
            }
        }