Auf dieser Seite

QOpcUaGdsClient Class

Übernimmt 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 von: 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()

Ausführliche Beschreibung

Diese Klasse ist derzeit als Technology Preview verfügbar. Daher können sich die von der Klasse bereitgestellte API und die Funktionen jederzeit ohne vorherige Ankündigung ändern.

Diese Klasse übernimmt alle Schritte, die für die Kommunikation mit einem GDS-Server erforderlich sind. Anhand der bereitgestellten Informationen über die Anwendung führt sie die Registrierung beim Server durch und verwaltet Schlüssel und Zertifikate.

Es müssen nur wenige Details bekannt sein, um an einem gesicherten Netzwerk teilzunehmen.

Die erstmalige Registrierung erfordert Administratorrechte sowie die Authentifizierung mittels Benutzername und Passwort. Alle weiteren Authentifizierungen erfolgen anwendungsbasiert unter Verwendung des zuvor erhaltenen Zertifikats.

Wenn der gesamte Vorgang erfolgreich verläuft, müssen Sie auf das Signal „ applicationRegistered “ warten.

Die meisten Einrichtungsstrukturen müssen mit denen für die anschließende Verbindung mit „ QOpcUaClient “ übereinstimmen und können gemeinsam genutzt werden.

Einrichten eines GDS-Clients:

QOpcUaGdsClient c;

// Falls Anmeldedaten benötigt werden
QObject::connect(&c, &QOpcUaGdsClient::authenticationRequired, [&](QOpcUaAuthenticationInformation&authInfo) {
        authInfo.setUsernameAuthentication("root", "secret");
 });

// Auf Erfolg warten
QObject::connect(&c, &QOpcUaGdsClient::applicationRegistered, [&]() {
    qDebug() << "Application" << c.applicationId() << "registered";
});

c.setBackend(...);
c.setEndpoint(...);
c.setApplicationIdentity(...);
c.setPkiConfiguration(...);
c.setApplicationRecord(...);
c.setCertificateSigningRequestPresets(...);
c.start();

Dokumentation zu Mitgliedstypen

enum class QOpcUaGdsClient::Error

Diese Enumeration dient zur Angabe von Fehlern, die während des Registrierungsvorgangs auftreten können.

KonstanteWertBeschreibung
QOpcUaGdsClient::Error::NoError0Alles in Ordnung
QOpcUaGdsClient::Error::InvalidBackend1Das Backend konnte nicht instanziiert werden. Die angegebene Backend-Zeichenkette stimmt mit keinem Backend überein oder das Laden des Plugins ist fehlgeschlagen.
QOpcUaGdsClient::Error::InvalidEndpoint2Der angegebene Endpunkt ist ungü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 Abmeldung der Anwendung war nicht erfolgreich.
QOpcUaGdsClient::Error::FailedToGetCertificateStatus7Der Status des aktuellen Zertifikats konnte nicht abgerufen werden.
QOpcUaGdsClient::Error::FailedToGetCertificate8Es konnte kein Zertifikat vom Server abgerufen werden.

enum class QOpcUaGdsClient::State

Diese Enumeration dient dazu, 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 zum Server-Endpunkt wurde erfolgreich hergestellt.
QOpcUaGdsClient::State::RegisteringApplication4Die Anwendung wird beim Server registriert.
QOpcUaGdsClient::State::ApplicationRegistered5Die Registrierung der Anwendung beim Server war erfolgreich.
QOpcUaGdsClient::State::Error6Es ist ein Fehler aufgetreten. Weitere Details finden Sie im Rückgabewert von ` error()` und in der Terminalausgabe.

Dokumentation der Mitgliedsfunktionen

QOpcUaGdsClient::QOpcUaGdsClient(QObject *parent = nullptr)

Erstellt einen GDS-Client mit „ parent “ als übergeordnetem Objekt.

[virtual noexcept] QOpcUaGdsClient::~QOpcUaGdsClient()

Löst einen GDS-Client auf.

QString QOpcUaGdsClient::applicationId() const

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

Dies ist eine Abkürzung, um die Anwendungs-ID aus den Anwendungsdatensatzdaten abzurufen.

Siehe auch ` applicationRecord()`.

const QOpcUaApplicationIdentity &QOpcUaGdsClient::applicationIdentity() const

Gibt die aktuelle applicationIdentity zurück.

Siehe auch ` setApplicationIdentity()`.

const QOpcUaApplicationRecordDataType &QOpcUaGdsClient::applicationRecord() const

Gibt die vom Client verwendeten Anwendungsdatensatzdaten zurück.

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, eine erstmalige Authentifizierung bei einem Server durchzuführen, für die Administratorrechte erforderlich sind.

authInfo Muss mit gültigen Authentifizierungsdaten gefüllt werden. Dieser Slot darf nicht über Thread-Grenzen hinweg verwendet werden.

const QString &QOpcUaGdsClient::backend() const

Gibt die aktuelle Backend-Einstellung zurück.

Wurde das Backend nach dem Start des Clients geändert, wird die geänderte Einstellung zurückgegeben, jedoch nicht 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 ausgelöst, wenn der GDS-Client eine neue Liste von „ certificateGroups “ für diese Anwendung empfängt.

[signal] void QOpcUaGdsClient::certificateUpdateRequired()

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

Dies kann dadurch verursacht werden, dass der Server den Client auffordert, das Zertifikat zu aktualisieren, wenn das Ablaufdatum des Zertifikats erreicht ist oder wenn es sich um ein selbstsigniertes Zertifikat handelt.

Die Zertifikatsaktualisierung erfolgt automatisch. Dieses Signal dient lediglich zu Informationszwecken und weist darauf hin, dass eine Aktualisierung bevorsteht.

[signal] void QOpcUaGdsClient::certificateUpdated()

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

const QOpcUaX509DistinguishedName &QOpcUaGdsClient::distinguishedNameCertificateSigningRequestPreset() const

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

const QString &QOpcUaGdsClient::dnsCertificateSigningRequestPreset() const

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

const QOpcUaEndpointDescription &QOpcUaGdsClient::endpoint() const

Gibt die aktuelle Endpunktkonfiguration zurück.

Wurde der Endpunkt nach dem Start des Clients geändert, wird die geänderte Einstellung zurückgegeben, nicht jedoch 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 vom Client zu verwendende Anwendungsidentität „ appIdentity “ fest.

Diese Identität wird zur Registrierung beim GDS-Server verwendet. Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden. Eine nachträgliche Änderung dieser Einstellung hat keine Auswirkungen.

Siehe auch applicationIdentity().

void QOpcUaGdsClient::setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)

Legt die vom Client zu verwendenden Anwendungsdatensätze „ appRecord “ fest.

Diese Daten werden für die Registrierung beim GDS-Server verwendet. Diese Funktion muss vor dem Start des GDS-Clients aufgerufen werden.

Die meisten Daten entsprechen denen der Anwendungsidentität. Nach der Registrierung kann die zugewiesene Anwendungs-ID abgerufen werden.

Siehe auch applicationRecord() und setApplicationIdentity.

void QOpcUaGdsClient::setBackend(const QString &backend)

Legt das Backend fest, das der Client für die Kommunikation mit dem Server unter backend verwenden soll.

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 fest, in dem die Gültigkeit des Client-Zertifikats gegenüber interval überprüft wird.

Siehe auch certificateCheckInterval().

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

Legt die Voreinstellungen für Zertifikatssignierungsanfragen fest: den Distinguished Name „ dn “ und die DNS-Zeichenkette „ dns “.

Beim Erstellen einer Zertifikatssignierungsanforderung werden einige zusätzliche Informationen benötigt, die von der Anwendungsidentität nicht bereitgestellt werden.

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

Siehe auch setApplicationIdentity().

void QOpcUaGdsClient::setEndpoint(const QOpcUaEndpointDescription &endpoint)

Legt den Endpunkt fest, über den der Client mit dem Server kommunizieren soll: endpoint.

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

Die Kommunikation mit einem GDS-Server ist nur über einen verschlüsselten Endpunkt möglich. Die Verwendung eines unverschlüsselten Endpunkts schlägt fehl.

Siehe auch endpoint().

void QOpcUaGdsClient::setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)

Legt das vom Client zu verwendende PKI-Konfigurations pkiConfig fest.

Alle Zertifikate, Schlüssel und Vertrauenslisten werden von den angegebenen Speicherorten verwendet bzw. dort gespeichert. Um das vom GDS erhaltene Zertifikat zu verwenden, muss dieselbe Konfiguration unter „ QOpcUaClient “ verwendet werden.

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

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 Client-Status zurück.

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

Dieses Signal wird ausgegeben, wenn sich der interne Zustand des Clients ändert. Die „ state “ gibt den neuen Zustand an.

int QOpcUaGdsClient::trustListUpdateInterval() const

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

Siehe auch ` setTrustListUpdateInterval()`.

[signal] void QOpcUaGdsClient::trustListUpdated()

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

void QOpcUaGdsClient::unregisterApplication()

Hebt die Registrierung einer Anwendung auf dem Server auf.

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

[signal] void QOpcUaGdsClient::unregistered()

Dieses Signal wird ausgesendet, wenn der GDS-Client die Anwendung abgemeldet hat.

© 2026 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.