QOpcUaClient Класс
QOpcUaClient позволяет взаимодействовать с сервером OPC UA. Подробнее...
| Заголовок: | #include <QOpcUaClient> |
| qmake: | QT += opcua |
| Наследует: | QObject |
Открытые типы
| перечисление | ClientError { NoError, НеверныйUrl, НетДоступа, ОшибкаПодключения, НеизвестнаяОшибка, НеподдерживаемаяИнформацияОбАвторизации } |
| перечисление | ClientState { Отключен, Подключение, Подключен, Закрытие } |
Свойства
Открытые функции
| виртуальный | ~QOpcUaClient() |
| bool | addNode(const QOpcUaAddNodeItem &nodeToAdd) |
| bool | addReference(const QOpcUaAddReferenceItem &referenceToAdd) |
| QOpcUaApplicationIdentity | applicationIdentity() const |
| const QOpcUaAuthenticationInformation & | authenticationInformation() const |
| QString | backend() const |
| void | connectToEndpoint(const QOpcUaEndpointDescription &endpoint) |
| bool | deleteNode(const QString &nodeId, bool deleteTargetReferences = true) |
| bool | deleteReference(const QOpcUaDeleteReferenceItem &referenceToDelete) |
| void | disconnectFromEndpoint() |
| QOpcUaEndpointDescription | endpoint() const |
| QOpcUaClient::ClientError | error() const |
| bool | findServers(const QUrl &url, const QStringList &localeIds = QStringList(), const QStringList &serverUris = QStringList()) |
| bool | isNamespaceAutoupdateEnabled() const |
| QStringList | namespaceArray() const |
| int | namespaceAutoupdateInterval() const |
| QOpcUaNode * | node(const QString &nodeId) |
| QOpcUaNode * | node(const QOpcUaExpandedNodeId &expandedNodeId) |
| QOpcUaPkiConfiguration | pkiConfiguration() const |
| QOpcUaQualifiedName | qualifiedNameFromNamespaceUri(const QString &namespaceUri, const QString &name, bool *ok = nullptr) const |
| bool | readNodeAttributes(const QList<QOpcUaReadItem> &nodesToRead) |
| bool | requestEndpoints(const QUrl &url) |
| QString | resolveExpandedNodeId(const QOpcUaExpandedNodeId &expandedNodeId, bool *ok = nullptr) const |
| void | setApplicationIdentity(const QOpcUaApplicationIdentity &identity) |
| void | setAuthenticationInformation(const QOpcUaAuthenticationInformation &authenticationInformation) |
| void | setNamespaceAutoupdate(bool isEnabled) |
| void | setNamespaceAutoupdateInterval(int interval) |
| void | setPkiConfiguration(const QOpcUaPkiConfiguration &config) |
| QOpcUaClient::ClientState | state() const |
| QStringList | supportedSecurityPolicies() const |
| QList<QOpcUaUserTokenPolicy::TokenType> | supportedUserTokenTypes() const |
| bool | updateNamespaceArray() |
| bool | writeNodeAttributes(const QList<QOpcUaWriteItem> &nodesToWrite) |
Сигналы
| void | addNodeFinished(QOpcUaExpandedNodeId requestedNodeId, QString assignedNodeId, QOpcUa::UaStatusCode statusCode) |
| void | addReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode) |
| void | connectError(QOpcUaErrorState *errorState) |
| void | connected() |
| void | deleteNodeFinished(QString nodeId, QOpcUa::UaStatusCode statusCode) |
| void | deleteReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode) |
| void | disconnected() |
| void | endpointsRequestFinished(QList<QOpcUaEndpointDescription> endpoints, QOpcUa::UaStatusCode statusCode, QUrl requestUrl) |
| void | errorChanged(QOpcUaClient::ClientError error) |
| void | findServersFinished(QList<QOpcUaApplicationDescription> servers, QOpcUa::UaStatusCode statusCode, QUrl requestUrl) |
| void | namespaceArrayChanged(QStringList namespaces) |
| void | namespaceArrayUpdated(QStringList namespaces) |
| void | passwordForPrivateKeyRequired(QString keyFilePath, QString *password, bool previousTryWasInvalid) |
| void | readNodeAttributesFinished(QList<QOpcUaReadResult> results, QOpcUa::UaStatusCode serviceResult) |
| void | stateChanged(QOpcUaClient::ClientState state) |
| void | writeNodeAttributesFinished(QList<QOpcUaWriteResult> results, QOpcUa::UaStatusCode serviceResult) |
Подробное описание
QOpcUaClient
QOpcUaClient реализует базовые возможности клиента для взаимодействия с устройствами и приложениями, поддерживающими OPC UA. Это включает в себя запрос списка известных серверов у сервера обнаружения, запрос списка конечных точек сервера, подключение и отключение.
После успешного подключения к серверу, QOpcUaClient позволяет получить объекты QOpcUaNode, которые обеспечивают дальнейшее взаимодействие с узлами на сервере OPC UA. Для операций, затрагивающих несколько узлов, QOpcUaClient предлагает API, поддерживающий чтение нескольких атрибутов нескольких узлов в одном запросе к серверу.
QOpcUaClient также хранит локальную копию массива имен пространств имён сервера, которая создаётся после успешного подключения. Эта информация может быть запрошена или обновлена в течение подключения. Копия массива имен пространств имён также используется для разрешения расширенных идентификаторов узлов и создания квалифицированных имён из URI пространства имён.
Обращение к узлам
Для ознакомления с узлами и идентификаторами узлов см. QOpcUaNode.
Использование
Создайте QOpcUaClient с помощью QOpcUaProvider, запросите список конечных точек от сервера с помощью requestEndpoints и вызовите connectToEndpoint(), чтобы подключиться к одной из доступных конечных точек. После установления соединения запросите объект QOpcUaNode для корневого узла.
QOpcUaProvider provider;
if (provider.availableBackends().isEmpty())
return;
QOpcUaClient *client = provider.createClient(provider.availableBackends()[0]);
if (!client)
return;
// Connect to the stateChanged signal. Compatible slots of QObjects can be used instead of a lambda.
QObject::connect(client, &QOpcUaClient::stateChanged, [client](QOpcUaClient::ClientState state) {
qDebug() << "Client state changed:" << state;
if (state == QOpcUaClient::ClientState::Connected) {
QOpcUaNode *node = client->node("ns=0;i=84");
if (node)
qDebug() << "A node object has been created";
}
});
QObject::connect(client, &QOpcUaClient::endpointsRequestFinished,
[client](QList<QOpcUaEndpointDescription> endpoints) {
qDebug() << "Endpoints returned:" << endpoints.count();
if (endpoints.size())
client->connectToEndpoint(endpoints.first()); // Connect to the first endpoint in the list
});
client->requestEndpoints(QUrl("opc.tcp://127.0.0.1:4840")); // Request a list of endpoints from the server Документация по типам членов
Перечисление QOpcUaClient::ClientError
Это перечисление определяет текущее состояние ошибки клиента.
| Постоянная | Значение | Описание |
|---|---|---|
QOpcUaClient::NoError |
0 |
Ошибка не произошла. |
QOpcUaClient::InvalidUrl |
1 |
Указанный URL для подключения неверный или подключение к этому URL не удалось. |
QOpcUaClient::AccessDenied |
2 |
Попытка подключения к серверу с использованием имени пользователя/пароля завершилась ошибкой из-за неправильных учетных данных. |
QOpcUaClient::ConnectionError |
3 |
Произошла ошибка при подключении. |
QOpcUaClient::UnknownError |
4 |
Произошла неизвестная ошибка. |
QOpcUaClient::UnsupportedAuthenticationInformation |
5 |
Не поддерживается предоставленный тип или данные информации об аутентификации. |
Перечисление QOpcUaClient::ClientState
Это перечисление определяет состояние подключения клиента.
| Постоянная | Значение | Описание |
|---|---|---|
QOpcUaClient::Disconnected |
0 |
Клиент не подключен к серверу. |
QOpcUaClient::Connecting |
1 |
Клиент в процессе подключения к серверу. |
QOpcUaClient::Connected |
2 |
Клиент подключен к серверу. |
QOpcUaClient::Closing |
3 |
Клиент подключен и запросил отключение от сервера. |
Документация по свойствам
[read-only] error : const ClientError
Указывает текущее состояние ошибки клиента.
Функции доступа:
| QOpcUaClient::ClientError | error() const |
Сигнал уведомления:
| void | errorChanged(QOpcUaClient::ClientError error) |
[read-only] state : const ClientState
Указывает текущее состояние подключения клиента.
Функции доступа:
| QOpcUaClient::ClientState | state() const |
Сигнал уведомления:
| void | stateChanged(QOpcUaClient::ClientState state) |
Документация по функциям-членам
[signal] void QOpcUaClient::addNodeFinished(QOpcUaExpandedNodeId requestedNodeId, QString assignedNodeId, QOpcUa::UaStatusCode statusCode)
Этот сигнал испускается после завершения операции addNode(). requestedNodeId — запрошенный идентификатор узла из вызова addNode(), assignedNodeId — идентификатор узла, назначенный сервером новому узлу. statusCode содержит результат операции. Если результат — Bad, assignedNodeId пуст, и ни один узел не был добавлен в адресное пространство сервера.
[signal] void QOpcUaClient::addReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)
Этот сигнал излучается после завершения операции addReference(). Значения sourceNodeId, referenceTypeId, targetNodeId и isForwardReference взяты из вызова addReference(). statusCode содержит результат операции.
[signal, since QtOpcUa 5.13] void QOpcUaClient::connectError(QOpcUaErrorState *errorState)
Этот сигнал излучается, когда во время установления соединения произошла ошибка. Параметр errorState содержит информацию об ошибке.
В случае ошибок на стороне клиента их можно проигнорировать, вызвав QOpcUaErrorState::setIgnoreError для объекта.
Во время выполнения слота, подключенного к этому сигналу, бэкенд останавливается и ожидает возвращения всех слотов. Это позволяет отобразить диалоговое окно пользователя, чтобы, например, спросить пользователя, доверять ли неизвестному сертификату, прежде чем бэкенд продолжит работу.
Эта функция была добавлена в QtOpcUa 5.13.
[signal] void QOpcUaClient::connected()
Этот сигнал излучается, когда соединение установлено.
[signal] void QOpcUaClient::deleteNodeFinished(QString nodeId, QOpcUa::UaStatusCode statusCode)
Этот сигнал излучается после завершения операции deleteNode(). nodeId — идентификатор узла из вызова deleteNode(). statusCode содержит результат операции.
[signal] void QOpcUaClient::deleteReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)
Этот сигнал излучается после завершения операции deleteReference(). Значения sourceNodeId, referenceTypeId, targetNodeId и isForwardReference взяты из вызова deleteReference(). statusCode содержит результат операции.
[signal] void QOpcUaClient::disconnected()
Этот сигнал излучается, когда соединение закрыто в результате запроса на закрытие.
[signal] void QOpcUaClient::endpointsRequestFinished(QList<QOpcUaEndpointDescription> endpoints, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)
Этот сигнал излучается после завершения операции requestEndpoints(). statusCode содержит результат операции. Если результат — Good, endpoints содержит описания всех доступных на сервере конечных точек. requestUrl содержит URL, который использовался в вызове requestEndpoints().
[signal] void QOpcUaClient::findServersFinished(QList<QOpcUaApplicationDescription> servers, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)
Этот сигнал излучается после завершения операции findServers(). statusCode содержит результат операции. Если результат — Good, servers содержит описания приложений всех серверов, известных запрошенному серверу, которые соответствуют критериям фильтра. requestUrl содержит URL, который использовался в вызове findServers().
[signal] void QOpcUaClient::namespaceArrayChanged(QStringList namespaces)
Этот сигнал излучается после изменения массива имен пространств имён. namespaces содержит содержимое таблицы имен пространств сервера. Индекс элемента в namespaces соответствует индексу пространства имён, используемому в идентификаторе узла.
См. также namespaceArrayUpdated() и updateNamespaceArray().
[signal] void QOpcUaClient::namespaceArrayUpdated(QStringList namespaces)
Этот сигнал излучается после завершения операции updateNamespaceArray. namespaces содержит содержимое таблицы имен пространств сервера. Индекс элемента в namespaces соответствует индексу пространства имён, используемому в идентификаторе узла.
Если содержимое массива имен пространств остаётся неизменным после обновления, этот сигнал всё равно излучается.
См. также namespaceArrayChanged() и updateNamespaceArray().
[signal, since QtOpcUa 5.13] void QOpcUaClient::passwordForPrivateKeyRequired(QString keyFilePath, QString *password, bool previousTryWasInvalid)
Этот сигнал излучается, когда требуется пароль для зашифрованного закрытого ключа. Параметр keyFilePath содержит путь к файлу ключа, используемому для дешифровки. Параметр previousTryWasInvalid равен true, если предыдущая попытка дешифровки ключа завершилась неудачей (неверный пароль). Параметр password указывает на QString, который должен быть заполнен фактическим паролем для ключа. В случае неудачи предыдущей попытки он содержит ранее используемый пароль.
Во время выполнения слота, подключенного к этому сигналу, бэкенд останавливается и ожидает возвращения всех слотов. Это позволяет отобразить диалоговое окно пользователя, чтобы, например, попросить пользователя ввести пароль.
Эта функция была добавлена в QtOpcUa 5.13.
[signal] void QOpcUaClient::readNodeAttributesFinished(QList<QOpcUaReadResult> results, QOpcUa::UaStatusCode serviceResult)
Этот сигнал излучается после завершения операции readNodeAttributes().
Элементы в results имеют тот же порядок, что и элементы в запросе. Для каждого запрошенного элемента в results содержится значение вместе со временем и кодом состояния. serviceResult содержит код состояния службы OPC UA Read.
См. также readNodeAttributes(), QOpcUaReadResult и QOpcUaReadItem.
[signal] void QOpcUaClient::writeNodeAttributesFinished(QList<QOpcUaWriteResult> results, QOpcUa::UaStatusCode serviceResult)
Этот сигнал излучается после завершения операции writeNodeAttributes().
Элементы в results имеют тот же порядок, что и элементы в запросе на запись. Они содержат значение, временные метки и код состояния, полученные от сервера, а также идентификатор узла, атрибут и диапазон индексов из элемента записи. Это облегчает сопоставление результата с запросом.
serviceResult — код состояния службы OPC UA Write. Если serviceResult не Good, записи в results также имеют недопустимый код состояния и не должны использоваться.
См. также writeNodeAttributes() и QOpcUaWriteResult.
[virtual] QOpcUaClient::~QOpcUaClient()
Удаляет экземпляр QOpcUaClient.
bool QOpcUaClient::addNode(const QOpcUaAddNodeItem &nodeToAdd)
Добавляет узел, описанный в nodeToAdd, на сервер.
Возвращает true , если асинхронный вызов был успешно передан.
Успешность операции возвращается в сигнале addNodeFinished().
Следующий пример кода добавляет новый узел переменной на сервер:
QOpcUaNodeCreationAttributes attributes;
attributes.setDisplayName(QOpcUaLocalizedText("en", "My new Variable node"));
attributes.setDescription(QOpcUaLocalizedText("en", "A node which has been added at runtime"));
attributes.setValue(23.0, QOpcUa::Types::Double);
attributes.setDataTypeId(QOpcUa::ns0ID(QOpcUa::NodeIds::Namespace0::Double));
attributes.setValueRank(-2); // Scalar or array
attributes.setAccessLevel(QOpcUa::AccessLevelBit::CurrentRead);
attributes.setUserAccessLevel(QOpcUa::AccessLevelBit::CurrentRead);
QOpcUaAddNodeItem item;
item.setParentNodeId(QOpcUaExpandedNodeId("ns=3;s=TestFolder"));
item.setReferenceTypeId(QOpcUa::nodeIdFromReferenceType(QOpcUa::ReferenceTypeId::Organizes));
item.setRequestedNewNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setBrowseName(QOpcUaQualifiedName(3, "MyNewVariableNode"));
item.setNodeClass(QOpcUa::NodeClass::Variable);
item.setNodeAttributes(attributes);
m_client->addNode(item); См. также deleteNode(), addNodeFinished() и QOpcUaAddNodeItem.
bool QOpcUaClient::addReference(const QOpcUaAddReferenceItem &referenceToAdd)
Добавляет ссылку, описанную в referenceToAdd, на сервер.
Возвращает true , если асинхронный вызов был успешно передан.
Успешность операции возвращается в сигнале addReferenceFinished().
Следующий пример кода добавляет ссылку на узел в папку "Объекты":
QOpcUaAddReferenceItem item;
item.setSourceNodeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::ObjectsFolder));
item.setReferenceTypeId(QOpcUa::nodeIdFromInteger(0, static_cast<quint32>(QOpcUa::ReferenceTypeId::Organizes)));
item.setIsForwardReference(true);
item.setTargetNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setTargetNodeClass(QOpcUa::NodeClass::Variable);
m_client->addReference(item); См. также deleteReference(), addReferenceFinished() и QOpcUaAddReferenceItem.
[since QtOpcUa 5.13] QOpcUaApplicationIdentity QOpcUaClient::applicationIdentity() const
Возвращает идентификатор приложения данного экземпляра QOpcUaClient.
Эта функция была добавлена в QtOpcUa 5.13.
См. также setApplicationIdentity().
const QOpcUaAuthenticationInformation &QOpcUaClient::authenticationInformation() const
Возвращает текущую информацию об аутентификации.
См. также setAuthenticationInformation().
QString QOpcUaClient::backend() const
Возвращает имя бэкенда, используемого этим экземпляром QOpcUaClient, например, "open62541".
[invokable, since QtOpcUa 5.13] void QOpcUaClient::connectToEndpoint(const QOpcUaEndpointDescription &endpoint)
Подключается к указанному в endpoint конечной точке OPC UA.
Список доступных конечных точек обычно получается с помощью вызова QOpcUaClient::requestEndpoints().
Если для конечной точки требуется аутентификация по имени пользователя, необходимо установить имя пользователя в QOpcUaAuthenticationInformation. Вызов этой функции до установки информации об аутентификации будет использовать анонимную аутентификацию.
QOpcUaAuthenticationInformation authInfo;
authInfo.setUsernameAuthentication("user", "password");
client->setAuthenticationInformation(authInfo); Примечание: Эта функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
Эта функция была добавлена в QtOpcUa 5.13.
См. также connected(), stateChanged(), setAuthenticationInformation(), и QOpcUaEndpointDescription.
bool QOpcUaClient::deleteNode(const QString &nodeId, bool deleteTargetReferences = true)
Удаляет узел с идентификатором узла nodeId с сервера. Если deleteTargetReferences равно false, удаляются только ссылки с исходным узлом nodeId. Если deleteTargetReferences равно true, удаляются также ссылки с nodeId в качестве целевого узла.
Возвращает true если асинхронный вызов был успешно передан.
Успешность операции возвращается в сигнале deleteNodeFinished().
Следующий пример кода удаляет узел и все ссылки на него с сервера:
m_client->deleteNode(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"), true); См. также addNode() и deleteNodeFinished().
bool QOpcUaClient::deleteReference(const QOpcUaDeleteReferenceItem &referenceToDelete)
Удаляет ссылку, описанную в referenceToDelete, с сервера.
Возвращает true если асинхронный вызов был успешно передан.
Успешность операции возвращается в сигнале deleteReferenceFinished().
Следующий пример кода удаляет ссылку на узел из папки "Objects":
QOpcUaDeleteReferenceItem item;
item.setSourceNodeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::ObjectsFolder));
item.setReferenceTypeId(QOpcUa::nodeIdFromInteger(0, static_cast<quint32>(QOpcUa::ReferenceTypeId::Organizes)));
item.setIsForwardReference(true);
item.setTargetNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setDeleteBidirectional(true);
m_client->deleteReference(item); См. также addReference(), deleteReferenceFinished(), и QOpcUaDeleteReferenceItem.
[invokable] void QOpcUaClient::disconnectFromEndpoint()
Отключается от сервера.
Примечание: Эта функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
См. также disconnected() и connectToEndpoint().
QOpcUaEndpointDescription QOpcUaClient::endpoint() const
Возвращает описание конечной точки, к которой в данный момент подключен клиент или была последняя подключена.
QOpcUaClient::ClientError QOpcUaClient::error() const
Возвращает текущее состояние ошибки клиента.
Примечание: Функция-геттер для свойства error.
bool QOpcUaClient::findServers(const QUrl &url, const QStringList &localeIds = QStringList(), const QStringList &serverUris = QStringList())
Инициирует асинхронный запрос FindServers для чтения списка известных серверов с сервера или сервера обнаружения по адресу url. Возвращает true если асинхронный вызов был успешно передан.
localeIds может использоваться для выбора языка названий приложений, возвращаемых запросом. Формат указан в OPC-UA часть 3, 8.4, например, "en" для английского или "de-DE" для немецкого (Германия). Если указано несколько идентификаторов языка, сервер использует первый подходящий. Если совпадений нет или localeIds пусто, сервер выбирает локаль по умолчанию.
serverUris может использоваться для ограничения результатов серверами с соответствующим applicationUri в описании приложения. Например, для поиска текущего URL сервера с applicationUri "MyPLC" можно использовать следующий вызов:
client->findServers(discoveryServerUrl, QStringList(), QStringList({"MyPLC"})); Результаты возвращаются в сигнале findServersFinished().
bool QOpcUaClient::isNamespaceAutoupdateEnabled() const
Возвращает значение, указывающее, включена ли автоматическая обновление массива пространств имён.
QStringList QOpcUaClient::namespaceArray() const
Возвращает кэшированное значение массива пространств имён.
Значение будет действительным только после того, как будет отправлен сигнал namespaceArrayUpdated().
См. также updateNamespaceArray() и namespaceArrayUpdated().
int QOpcUaClient::namespaceAutoupdateInterval() const
Возвращает текущий интервал обновления массива пространств имён.
См. также setNamespaceAutoupdateInterval(int interval).
QOpcUaNode *QOpcUaClient::node(const QString &nodeId)
Возвращает объект QOpcUaNode, связанный с узлом OPC UA, идентифицированным по nodeId. Вызывающий становится владельцем объекта узла.
Если клиент не подключен, возвращается nullptr. Бэкенды также могут возвращать nullptr в других случаях ошибок (например, для некорректного идентификатора узла).
QOpcUaNode *QOpcUaClient::node(const QOpcUaExpandedNodeId &expandedNodeId)
Возвращает объект QOpcUaNode, связанный с узлом OPC UA, идентифицированным по expandedNodeId. Вызывающий становится владельцем объекта узла.
Если узел не на подключенном сервере, пространство имен не может быть разрешено, идентификатор узла имеет неправильный формат или клиент не подключен, возвращается nullptr.
См. также updateNamespaceArray().
[since QtOpcUa 5.13] QOpcUaPkiConfiguration QOpcUaClient::pkiConfiguration() const
Возвращает конфигурацию PKI приложения данного экземпляра QOpcUaClient.
Эта функция была добавлена в QtOpcUa 5.13.
См. также setPkiConfiguration().
QOpcUaQualifiedName QOpcUaClient::qualifiedNameFromNamespaceUri(const QString &namespaceUri, const QString &name, bool *ok = nullptr) const
Попытка создать квалифицированное имя из namespaceUri и строки имени name. Возвращает получившееся квалифицированное имя. Возвращается пустое квалифицированное имя, если namespaceUri не может быть разрешен.
ok будет установлен в true если разрешение пространства имён было успешным. Если пространство имён не может быть разрешено, ok будет установлен в false.
bool QOpcUaClient::readNodeAttributes(const QList<QOpcUaReadItem> &nodesToRead)
Инициирует чтение атрибутов нескольких узлов. Для каждой записи в nodesToRead можно указать идентификатор узла, атрибут и диапазон индексов.
Возвращает true, если асинхронный запрос был успешно передан. Результаты возвращаются в сигнале readNodeAttributesFinished().
Эта функция чтения предоставляет альтернативный способ чтения атрибутов узлов, который может использоваться в сценариях, где необходимо прочитать значения большого количества атрибутов узлов на различных узлах без необходимости использования других функций API на основе QOpcUaNode, таких как мониторинг изменений значений. Все элементы чтения в запросе отправляются на сервер в одном запросе и отвечают в одном ответе, который генерирует один сигнал readNodeAttributesFinished(). Это уменьшает сетевую нагрузку и количество соединений сигнал-слот, если задействовано много различных узлов.
В следующем примере с помощью одного вызова службы считываются атрибут отображения, два диапазона индексов "0:2" и "5:7" атрибута значения одного узла и весь атрибут значения второго узла:
QList<QOpcUaReadItem> request;
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
QOpcUa::NodeAttribute::DisplayName));
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
QOpcUa::NodeAttribute::Value, "0:2"));
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
QOpcUa::NodeAttribute::Value, "5:7"));
request.push_back(QOpcUaReadItem("ns=1;s=MyScalarNode));
m_client->readNodeAttributes(request);
См. также QOpcUaReadItem и readNodeAttributesFinished().
bool QOpcUaClient::requestEndpoints(const QUrl &url)
Инициализирует асинхронный запрос на чтение списка доступных конечных точек с сервера по адресу url. Возвращает true , если асинхронный вызов был успешно выполнен.
Информация о конечных точках возвращается в сигнале endpointsRequestFinished().
QString QOpcUaClient::resolveExpandedNodeId(const QOpcUaExpandedNodeId &expandedNodeId, bool *ok = nullptr) const
Попытка разрешить expandedNodeId в строку идентификатора узла с числовым индексом пространства имен. Возвращает строку идентификатора узла, если преобразование прошло успешно.
Возвращается пустая строка, если индекс пространства имен не может быть разрешен или если часть идентификатора расширенного идентификатора узла имеет неправильный формат. ok будет установлен на true , если преобразование прошло успешно. Если расширенный идентификатор узла не удалось разрешить, ok будет установлен на false.
[since QtOpcUa 5.13] void QOpcUaClient::setApplicationIdentity(const QOpcUaApplicationIdentity &identity)
Устанавливает идентификатор приложения для этого экземпляра QOpcUaClient на identity.
Эта функция была добавлена в QtOpcUa 5.13.
См. также applicationIdentity().
void QOpcUaClient::setAuthenticationInformation(const QOpcUaAuthenticationInformation &authenticationInformation)
Устанавливает информацию об авторизации для этого клиента на authenticationInformation.
См. также authenticationInformation() и connectToEndpoint().
void QOpcUaClient::setNamespaceAutoupdate(bool isEnabled)
Включает автоматическое обновление таблицы пространства имен.
Включение этой функции автоматически сохранит локальную копию таблицы пространства имен. namespaceArrayUpdated будет выпущен, когда массив изменился. isEnabled определяет, включается или выключается автоматическое обновление.
Подписка будет создана на узле на сервере для отслеживания изменений. В случае, если сервер не поддерживает подписки, это не сработает, и isNamespaceAutoupdateEnabled вернёт false.
См. также namespaceArray() и namespaceArrayUpdated().
void QOpcUaClient::setNamespaceAutoupdateInterval(int interval)
Устанавливает интервал для подписки на таблицу пространства имен.
Подписка может быть пересмотрена сервером.
interval определяет интервал проверки изменений в миллисекундах. По умолчанию — раз в секунду.
См. также namespaceAutoupdateInterval() и QOpcUaClient::setNamespaceAutoupdate(bool isEnabled).
[since QtOpcUa 5.13] void QOpcUaClient::setPkiConfiguration(const QOpcUaPkiConfiguration &config)
Устанавливает конфигурацию PKI приложения для этого экземпляра QOpcUaClient на config.
Эта функция была добавлена в QtOpcUa 5.13.
См. также pkiConfiguration().
[since QtOpcUa 5.14] QStringList QOpcUaClient::supportedSecurityPolicies() const
Возвращает поддерживаемые политики безопасности используемого бэкенда.
Данная функция в настоящее время доступна как предварительная технология, поэтому API и функциональность, предоставляемые функцией, могут быть изменены в любое время без предварительного уведомления.
Эта функция была добавлена в QtOpcUa 5.14.
[since QtOpcUa 5.14] QList<QOpcUaUserTokenPolicy::TokenType> QOpcUaClient::supportedUserTokenTypes() const
Возвращает типы токенов пользователя, поддерживаемые используемым бэкендом.
Данная функция в настоящее время доступна как предварительная технология, поэтому API и функциональность, предоставляемые функцией, могут быть изменены в любое время без предварительного уведомления.
Эта функция была добавлена в QtOpcUa 5.14.
См. также QOpcUaUserTokenPolicy::TokenType.
bool QOpcUaClient::updateNamespaceArray()
Запрашивает обновление массива пространства имен с сервера. Возвращает true , если операция была успешно выполнена.
Сигнал namespaceArrayUpdated() генерируется после завершения операции.
См. также namespaceArray() и namespaceArrayUpdated().
bool QOpcUaClient::writeNodeAttributes(const QList<QOpcUaWriteItem> &nodesToWrite)
Инициализирует запись нескольких атрибутов разных узлов. Для каждой записи в nodesToWrite можно указать идентификатор узла, атрибут, значение, тип значения и диапазон индексов.
Возвращает true , если асинхронный запрос был успешно отправлен. Результаты возвращаются в сигнале writeNodeAttributesFinished().
Эта функция записи предоставляет альтернативный способ записи атрибутов узлов, который может использоваться в сценариях, где необходимо записать значения большого количества атрибутов узлов на различных узлах без необходимости использования других функций API на основе QOpcUaNode, таких как мониторинг изменений значений. Все элементы записи в запросе отправляются на сервер в одном запросе и отвечают в одном ответе, который генерирует один сигнал writeNodeAttributesFinished(). Это уменьшает сетевую нагрузку и количество соединений сигнал-слот, если задействовано много различных узлов.
В следующем примере в одном вызове записываются атрибуты значений двух различных узлов. У второго узла массив значений, из которого переписываются только первые два элемента:
QList<QOpcUaWriteItem> request;
request.append(QOpcUaWriteItem("ns=2;s=Demo.Static.Scalar.Double", QOpcUa::NodeAttribute::Value,
23.0, QOpcUa::Types::Double));
request.append(QOpcUaWriteItem("ns=2;s=Demo.Static.Arrays.UInt32", QOpcUa::NodeAttribute::Value,
QVariantList({0, 1, 2}), QOpcUa::Types::UInt32, "0:2"));
m_client->writeNodeAttributes(request); См. также QOpcUaWriteItem и writeNodeAttributesFinished().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qopcuaclient.html