QOpcUaGdsClient Class

Erledigt die Kommunikation mit dem GDS-Server. Mehr...

Kopfzeile: #include <QOpcUaGdsClient>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpcUa)
target_link_libraries(mytarget PRIVATE Qt6::OpcUa)
qmake: QT += opcua
Erbt: QObject

Öffentliche Typen

enum class Error { NoError, InvalidBackend, InvalidEndpoint, ConnectionError, DirectoryNodeNotFound, …, FailedToGetCertificate }
enum class State { Idle, BackendInstantiated, Connecting, Connected, RegisteringApplication, …, Error }

Öffentliche Funktionen

QOpcUaGdsClient(QObject *parent = nullptr)
virtual ~QOpcUaGdsClient()
QString applicationId() const
const QOpcUaApplicationIdentity &applicationIdentity() const
const QOpcUaApplicationRecordDataType &applicationRecord() const
const QString &backend() const
int certificateCheckInterval() const
const QOpcUaX509DistinguishedName &distinguishedNameCertificateSigningRequestPreset() const
const QString &dnsCertificateSigningRequestPreset() const
const QOpcUaEndpointDescription &endpoint() const
QOpcUaGdsClient::Error error() const
const QOpcUaPkiConfiguration &pkiConfiguration() const
void setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)
void setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)
void setBackend(const QString &backend)
void setCertificateCheckInterval(int interval)
void setCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns)
void setEndpoint(const QOpcUaEndpointDescription &endpoint)
void setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)
void setTrustListUpdateInterval(int interval)
void start()
QOpcUaGdsClient::State state() const
int trustListUpdateInterval() const
void unregisterApplication()

Signale

void applicationRegistered()
void authenticationRequired(QOpcUaAuthenticationInformation &authInfo)
void certificateGroupsReceived(QStringList certificateGroups)
void certificateUpdateRequired()
void certificateUpdated()
void errorChanged(QOpcUaGdsClient::Error error)
void stateChanged(QOpcUaGdsClient::State state)
void trustListUpdated()
void unregistered()

Detaillierte Beschreibung

Diese Klasse ist derzeit als Technologievorschau verfügbar. Daher können die API und die von der Klasse bereitgestellten Funktionen jederzeit ohne vorherige Ankündigung geändert werden.

Diese Klasse führt alle Schritte aus, die für die Kommunikation mit einem GDS-Server erforderlich sind. Ausgestattet mit Informationen über die Anwendung übernimmt sie die Registrierung beim Server und die Verwaltung von Schlüsseln/Zertifikaten.

Nur wenige Details müssen bekannt sein, um an einem gesicherten Netzwerk teilnehmen zu können.

Für die erstmalige Registrierung sind administrative Rechte erforderlich, wobei Benutzername und Passwort zur Authentifizierung verwendet werden. Alle weiteren Authentifizierungen sind anwendungsbasiert, wobei das zuerst erhaltene Zertifikat verwendet wird.

In der Erwartung, dass der gesamte Prozess erfolgreich verläuft, müssen Sie auf das Signal applicationRegistered warten.

Die meisten der Setup-Strukturen müssen die gleichen sein wie für die Verbindung mit QOpcUaClient und können gemeinsam genutzt werden.

Einrichten eines GDS-Clients:

QOpcUaGdsClient c;// Für den Fall, dass die Anmeldedaten benötigt werdenQObject::connect(&c, &QOpcUaGdsClient::authenticationRequired, [&](QOpcUaAuthenticationInformation &authInfo) { authInfo.setUsernameAuthentication("root", "secret"); });// Erfolg abwartenQObject::connect(&c, &QOpcUaGdsClient::applicationRegistered, [&]() {    qDebug() << "Application" << c.applicationId() << "registered";
}); c.setBackend(...); c.setEndpoint(...); c.setApplicationIdentity(...); c.setPkiConfiguration(...); c.setApplicationRecord(...); c.setCertificateSigningRequestPresets(...); c.start();

Dokumentation der Mitgliedstypen

enum class QOpcUaGdsClient::Error

Diese Aufzählung wird verwendet, um Fehler anzugeben, die während des Registrierungsprozesses auftreten können.

KonstanteWertBeschreibung
QOpcUaGdsClient::Error::NoError0Alles ist in Ordnung
QOpcUaGdsClient::Error::InvalidBackend1Das Backend konnte nicht instanziiert werden. Der angegebene Backend-String stimmt mit keinem Backend überein oder das Laden des Plugins ist fehlgeschlagen.
QOpcUaGdsClient::Error::InvalidEndpoint2Der angegebene Endpunkt ist nicht gültig.
QOpcUaGdsClient::Error::ConnectionError3Die Verbindung zum Server-Endpunkt ist fehlgeschlagen.
QOpcUaGdsClient::Error::DirectoryNodeNotFound4Der Verzeichnisknoten auf dem Server konnte nicht aufgelöst werden.
QOpcUaGdsClient::Error::FailedToRegisterApplication5Die Registrierung der Anwendung war nicht erfolgreich.
QOpcUaGdsClient::Error::FailedToUnregisterApplication6Die Deregistrierung der Anwendung war nicht erfolgreich.
QOpcUaGdsClient::Error::FailedToGetCertificateStatus7Der Status des aktuellen Zertifikats konnte nicht abgefragt werden.
QOpcUaGdsClient::Error::FailedToGetCertificate8Ein Zertifikat konnte nicht vom Server abgerufen werden.

enum class QOpcUaGdsClient::State

Dieses Enum wird verwendet, um den aktuellen Status der Registrierung des GDS-Clients anzugeben.

KonstanteWertBeschreibung
QOpcUaGdsClient::State::Idle0Der Client wurde noch nicht gestartet.
QOpcUaGdsClient::State::BackendInstantiated1Das Backend wurde instanziiert
QOpcUaGdsClient::State::Connecting2Es wird eine Verbindung zum Server hergestellt
QOpcUaGdsClient::State::Connected3Die Verbindung mit dem Server-Endpunkt war erfolgreich.
QOpcUaGdsClient::State::RegisteringApplication4Die Anwendung wird gerade beim Server registriert.
QOpcUaGdsClient::State::ApplicationRegistered5Die Registrierung der Anwendung beim Server war erfolgreich.
QOpcUaGdsClient::State::Error6Ein Fehler ist aufgetreten. Siehe den Rückgabewert von error() und die Terminalausgabe für weitere Details.

Dokumentation der Mitgliedsfunktionen

QOpcUaGdsClient::QOpcUaGdsClient(QObject *parent = nullptr)

Konstruiert einen GDS-Client mit parent als übergeordnetem Objekt.

[virtual noexcept] QOpcUaGdsClient::~QOpcUaGdsClient()

Zerstört einen GDS-Client.

QString QOpcUaGdsClient::applicationId() const

Gibt die vom Server zugewiesene Anwendungs-ID zurück.

Dies ist eine Abkürzung, um die Anwendungs-ID aus den Anwendungsdatensätzen zu erhalten.

Siehe auch applicationRecord().

const QOpcUaApplicationIdentity &QOpcUaGdsClient::applicationIdentity() const

Gibt die aktuelle applicationIdentity zurück.

Siehe auch setApplicationIdentity().

const QOpcUaApplicationRecordDataType &QOpcUaGdsClient::applicationRecord() const

Liefert die Anwendungsdatensätze zurück, die vom Client verwendet werden.

Siehe auch setApplicationRecord().

[signal] void QOpcUaGdsClient::applicationRegistered()

Dieses Signal wird ausgegeben, wenn eine Anwendung erfolgreich registriert wurde.

[signal] void QOpcUaGdsClient::authenticationRequired(QOpcUaAuthenticationInformation &authInfo)

Dieses Signal wird ausgegeben, wenn der GDS-Client versucht, sich zum ersten Mal bei einem Server zu authentifizieren, der administrative Rechte erfordert.

authInfo muss mit gültigen Authentifizierungsinformationen gefüllt werden. Dieser Slot darf nicht über Threadgrenzen hinweg verwendet werden.

const QString &QOpcUaGdsClient::backend() const

Gibt die aktuelle Backend-Einstellung zurück.

Wenn das Backend nach dem Start des Clients geändert wurde, wird die geänderte Einstellung zurückgegeben, nicht aber die tatsächlich verwendete Instanz.

Siehe auch setBackend().

int QOpcUaGdsClient::certificateCheckInterval() const

Gibt das Intervall in Millisekunden für die Überprüfung der Gültigkeit des Client-Zertifikats zurück.

Siehe auch setCertificateCheckInterval().

[signal] void QOpcUaGdsClient::certificateGroupsReceived(QStringList certificateGroups)

Dieses Signal wird ausgegeben, wenn der GDS-Client eine neue Liste von certificateGroups für diese Anwendung erhält.

[signal] void QOpcUaGdsClient::certificateUpdateRequired()

Dieses Signal wird ausgegeben, wenn der GDS-Client feststellt, dass eine Aktualisierung des aktuell verwendeten Zertifikats erforderlich ist.

Dies kann durch den Server verursacht werden, der den Client zur Aktualisierung des Zertifikats auffordert, wenn das Fälligkeitsdatum des Zertifikats erreicht ist oder wenn das Zertifikat selbstsigniert ist.

Die Aktualisierung des Zertifikats wird automatisch durchgeführt. Dieses Signal dient nur zur Information, dass eine Aktualisierung ansteht.

[signal] void QOpcUaGdsClient::certificateUpdated()

Dieses Signal wird ausgegeben, wenn der GDS-Client ein neues Zertifikat erhalten hat, das auf der Festplatte gespeichert wurde.

const QOpcUaX509DistinguishedName &QOpcUaGdsClient::distinguishedNameCertificateSigningRequestPreset() const

Gibt den für Zertifikatsignierungsanfragen voreingestellten Distinguished Name zurück.

const QString &QOpcUaGdsClient::dnsCertificateSigningRequestPreset() const

Gibt die DNS-Voreinstellung für Zertifikatsignierungsanfragen zurück.

const QOpcUaEndpointDescription &QOpcUaGdsClient::endpoint() const

Gibt die aktuelle Endpunkteinstellung zurück.

Wenn der Endpunkt nach dem Start des Clients geändert wurde, wird die geänderte Einstellung zurückgegeben, nicht aber der tatsächlich verwendete Endpunkt.

Siehe auch setEndpoint().

QOpcUaGdsClient::Error QOpcUaGdsClient::error() const

Gibt den aktuellen Fehlerstatus zurück.

[signal] void QOpcUaGdsClient::errorChanged(QOpcUaGdsClient::Error error)

Dieses Signal wird ausgegeben, wenn ein error aufgetreten ist.

const QOpcUaPkiConfiguration &QOpcUaGdsClient::pkiConfiguration() const

Gibt die aktuelle pkiConfiguration zurück.

Siehe auch setPkiConfiguration().

void QOpcUaGdsClient::setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)

Legt die Anwendungsidentität appIdentity fest, die vom Client verwendet werden soll.

Diese Identität wird verwendet, um sich beim GDS-Server zu registrieren. Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden. Eine nachträgliche Änderung dieser Einstellung hat keine Auswirkung.

Siehe auch applicationIdentity().

void QOpcUaGdsClient::setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)

Legt die vom Client zu verwendenden Anwendungssatzdaten appRecord fest.

Diese Daten werden verwendet, um sich beim GDS-Server zu registrieren. Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden.

Die meisten Daten sind dieselben wie in der Anwendungsidentität. Nach der Registrierung kann die zugewiesene Anwendungs-ID abgefragt werden.

Siehe auch applicationRecord() und setApplicationIdentity.

void QOpcUaGdsClient::setBackend(const QString &backend)

Setzt das vom Client zu verwendende Backend für die Kommunikation mit dem Server auf backend.

Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden. Eine nachträgliche Änderung dieser Einstellung hat keine Auswirkungen.

Siehe auch backend(), QOpcUaProvider::availableBackends(), und start().

void QOpcUaGdsClient::setCertificateCheckInterval(int interval)

Legt das Intervall in Millisekunden für die Überprüfung der Gültigkeit des Client-Zertifikats auf interval fest.

Siehe auch certificateCheckInterval().

void QOpcUaGdsClient::setCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns)

Legt die Voreinstellungen für Zertifikatsignierungsanforderungen fest; den Distinguished Name dn und die DNS-Zeichenfolge dns.

Bei der Erstellung einer Zertifikatsignierungsanforderung werden einige zusätzliche Informationen benötigt, die nicht von der Anwendungsidentität bereitgestellt werden.

Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden.

Siehe auch setApplicationIdentity().

void QOpcUaGdsClient::setEndpoint(const QOpcUaEndpointDescription &endpoint)

Setzt den Endpunkt, der vom Client für die Kommunikation mit dem Server verwendet werden soll, auf endpoint.

Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden. Eine nachträgliche Änderung dieser Einstellung hat keine Auswirkung.

Die Kommunikation mit einem GDS-Server ist nur über einen verschlüsselten Endpunkt möglich. Die Verwendung eines unverschlüsselten Endpunktes wird fehlschlagen.

Siehe auch endpoint().

void QOpcUaGdsClient::setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)

Legt die PKI-Konfiguration pkiConfig fest, die vom Client verwendet werden soll.

Alle Zertifikate, Schlüssel und Vertrauenslisten werden von den angegebenen Orten verwendet oder dort gespeichert. Um das vom GDS erhaltene Zertifikat zu verwenden, muss die gleiche Konfiguration mit QOpcUaClient verwendet werden.

Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden. Eine nachträgliche Änderung dieser Einstellung hat keine Auswirkung.

Siehe auch pkiConfiguration().

void QOpcUaGdsClient::setTrustListUpdateInterval(int interval)

Legt das Intervall in Millisekunden für die Aktualisierung der Vertrauensliste vom Server auf interval fest.

Siehe auch trustListUpdateInterval().

void QOpcUaGdsClient::start()

Startet den Client-Prozess.

Nachdem alle Informationen eingerichtet wurden, kann der Client gestartet werden.

QOpcUaGdsClient::State QOpcUaGdsClient::state() const

Gibt den aktuellen Zustand des Clients zurück.

[signal] void QOpcUaGdsClient::stateChanged(QOpcUaGdsClient::State state)

Dieses Signal wird ausgesendet, wenn sich der interne Zustand des Clients ändert. Die state zeigt den neuen Zustand an.

int QOpcUaGdsClient::trustListUpdateInterval() const

Gibt das Intervall in Millisekunden für die Aktualisierung der Vertrauensliste vom Server zurück.

Siehe auch setTrustListUpdateInterval().

[signal] void QOpcUaGdsClient::trustListUpdated()

Dieses Signal wird ausgegeben, wenn der GDS-Client eine neue Vertrauensliste vom Server erhalten und auf der Festplatte gespeichert hat.

void QOpcUaGdsClient::unregisterApplication()

Deregistriert eine Anwendung vom Server.

Diese Funktion kann verwendet werden, wenn eine Anwendung dauerhaft aus dem Netz entfernt werden soll. Sie muss nicht beim Neustart oder Herunterfahren aufgerufen werden.

[signal] void QOpcUaGdsClient::unregistered()

Dieses Signal wird ausgegeben, wenn der GDS-Client die Registrierung der Anwendung aufgehoben hat.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.