Ciao a tutti
Vorrei creare un client per trasferire dei file di testo da un PC a una macchina utensile collegata in rete.
La macchina ha installato il server OPC , dovrei connettermi e trasmettere un semplice file di testo.
Il costruttore della macchina mi ha inviato il codice per connettersi alla macchina e le stringhe per dialogare.
Ho creato un Form con un button "Connetti"" e una finestra per sfogliare le cartelle e cercare il file da trasferire.
Una volta scelto lo invio con la stringa:
Per la connessione ho il seguente codice che mi ha dato il costruttore della macchina e l'ho inserito in un modulo di classe:codice:LoadPart(path as string, partname as string) as integerDove path è un percorso UNC (esempio: c:\xxxx, \\192.168.12.12\xxxx) da dove si trova il pezzo partname da copiare nella cartella database della macchina. La funzione ritorna un valore intero dove: 0 funzione svolta correttamente 1 la macchina è in uno stato operativo attivo, nulla di fatto 2 errore in path o partname, nulla di fatto 3 il pezzo da sovrascrivere è quello in produzione, nulla di fatto
codice:Private GuiIpAddress as string=”192.168.xxx.xxx” ‘ indirizzo ip del pc macchina in rete aziendalePrivate serverUrl as string=” opc.tcp://” & GuiIpAddress & “:51210/UA/Gui3D” Private Async Sub InitServer() Dim conf As New ApplicationConfiguration conf.ApplicationName = "Test" conf.ApplicationType = ApplicationType.Client conf.ClientConfiguration = New ClientConfiguration With {.DefaultSessionTimeout = 50000} conf.SecurityConfiguration = New SecurityConfiguration With { .ApplicationCertificate = New CertificateIdentifier With {.StoreType = "Directory", .StorePath = "%CommonApplicationData%\OPC Foundation\CertificateStores\MachineDefault", .SubjectName = "Reference Client"}, .TrustedPeerCertificates = New CertificateTrustList With {.StoreType = "Directory", .StorePath = "%CommonApplicationData%\OPC Foundation\CertificateStores\UA Applications"}, .TrustedIssuerCertificates = New CertificateTrustList With {.StoreType = "Directory", .StorePath = "%CommonApplicationData%\OPC Foundation\CertificateStores\UA Certificate Authorities"}, .RejectedCertificateStore = New CertificateTrustList With {.StoreType = "Directory", .StorePath = "%CommonApplicationData%\OPC Foundation\CertificateStores\RejectedCertificates"}, .NonceLength = 32, .AutoAcceptUntrustedCertificates = True } Await conf.Validate(ApplicationType.Client) m_configuration = conf Dim configuration As EndpointConfiguration = Opc.Ua.EndpointConfiguration.Create() configuration.OperationTimeout = 5000 Dim uri As New Uri(serverUrl) Dim selectedEndpoint As EndpointDescription = Nothing Using client As DiscoveryClient = DiscoveryClient.Create(uri, configuration) Dim endpoints As EndpointDescriptionCollection = client.GetEndpoints(Nothing) For ii As Integer = 0 To endpoints.Count - 1 Dim ep As EndpointDescription = endpoints(ii) If ep.EndpointUrl.StartsWith(uri.Scheme) Then If (ep.SecurityMode <> MessageSecurityMode.None) Then Continue For End If If (selectedEndpoint Is Nothing) Then selectedEndpoint = ep End If If (ep.SecurityLevel > selectedEndpoint.SecurityLevel) Then selectedEndpoint = ep End If End If Next If (selectedEndpoint Is Nothing And endpoints.Count > 0) Then selectedEndpoint = endpoints(0) End If End Using Dim endpointUrl As Uri = Utils.ParseUri(selectedEndpoint.EndpointUrl) If (endpointUrl IsNot Nothing And endpointUrl.Scheme = uri.Scheme) Then Dim builder As UriBuilder = New UriBuilder(endpointUrl) builder.Host = uri.DnsSafeHost builder.Port = uri.Port selectedEndpoint.EndpointUrl = builder.ToString() End If Dim endpointConfiguration As EndpointConfiguration = EndpointConfiguration.Create(m_configuration)Dim endpoint As ConfiguredEndpoint = New ConfiguredEndpoint(Nothing, selectedEndpoint, endpointConfiguration) Dim m_session As Opc.Ua.Client.Session = Await Opc.Ua.Client.Session.Create( m_configuration, endpoint, False, False, "Sessione", 60000, UserIdentity, PreferredLocales) End Sub Public Property UserIdentity As IUserIdentity = Nothing Public Property PreferredLocales As String() = Nothing Private m_configuration As ApplicationConfiguration Public Property Configuration As ApplicationConfiguration Get Return m_configuration End Get Set(value As ApplicationConfiguration) If Not Object.ReferenceEquals(m_configuration, value) Then If m_configuration IsNot Nothing Then RemoveHandler m_configuration.CertificateValidator.CertificateValidation, m_CertificateValidation End If m_configuration = value If m_configuration IsNot Nothing Then AddHandler m_configuration.CertificateValidator.CertificateValidation, m_CertificateValidation End If End If End Set End Property
Mi servirebbe aiuto per invocare la connessione e gestire la connessione dal tasto "Connetti" del form.
Grazie

Rispondi quotando