PySide6.QtOpcUa.QOpcUaClient¶
- class QOpcUaClient¶
QOpcUaClient允许与 OPC UA 服务器进行交互。更多…概要¶
属性¶
方法¶
def
addNode()def
addReference()def
backend()def
deleteNode()def
endpoint()def
error()def
findServers()def
namespaceArray()def
node()def
registerNodes()def
state()
信号¶
def
connectError()def
connected()def
disconnected()def
errorChanged()def
stateChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QOpcUa客户端¶
QOpcUaClient实现了与支持OPC UA的设备和应用程序通信的基本客户端功能。这包括查询发现服务器以获取已知服务器、从服务器请求端点列表、连接和断开连接。成功连接到服务器后,
QOpcUaClient允许获取QOpcUaNode对象,这些对象使得与 OPC UA 服务器上的节点进行进一步交互成为可能。对于涉及多个节点的操作,QOpcUaClient提供了一个 API,支持在单个请求中读取多个节点的多个属性。QOpcUaClient还保留了服务器命名空间数组的本地副本,该副本在成功连接后创建。在连接持续期间,可以查询或更新此信息。命名空间数组的副本还用于解析扩展节点ID和从命名空间URI创建限定名称。节点寻址¶
有关节点和节点ID的介绍,请参见
QOpcUaNode。用法¶
使用
QOpcUaProvider创建一个QOpcUaClient,使用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- class ClientState¶
此枚举类型指定客户端的连接状态。
常量
描述
QOpcUaClient.Disconnected
客户端未连接到服务器。
QOpcUaClient.Connecting
客户端当前正在连接到服务器。
QOpcUaClient.Connected
客户端已连接到服务器。
QOpcUaClient.Closing
客户端已连接并请求从服务器断开连接。
- class ClientError¶
此枚举类型指定客户端的当前错误状态。
常量
描述
QOpcUaClient.NoError
没有发生错误。
QOpcUaClient.InvalidUrl
连接的URL指定错误或连接到此URL失败。
QOpcUaClient.AccessDenied
尝试使用用户名/密码连接到服务器失败,原因是凭据错误。
QOpcUaClient.ConnectionError
连接时发生错误。
QOpcUaClient.UnknownError
发生了一个未知错误。
QOpcUaClient.UnsupportedAuthenticationInformation
不支持给定的认证信息类型或数据。
注意
当使用
from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。- property errorᅟ: QOpcUaClient.ClientError¶
此属性指定客户端的当前错误状态。
- Access functions:
- property stateᅟ: QOpcUaClient.ClientState¶
此属性指定客户端的当前连接状态。
- Access functions:
- addNode(nodeToAdd)¶
- Parameters:
nodeToAdd –
QOpcUaAddNodeItem- Return type:
布尔
在服务器上添加由
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);
- addNodeFinished(requestedNodeId, assignedNodeId, statusCode)¶
- Parameters:
requestedNodeId –
QOpcUaExpandedNodeIdassignedNodeId – str
statusCode –
UaStatusCode
此信号在
addNode()操作完成后发出。requestedNodeId是addNode()调用中请求的节点ID,assignedNodeId是服务器为新节点分配的节点ID。statusCode包含操作的结果。如果结果是Bad,assignedNodeId为空,并且没有节点被添加到服务器的地址空间中。- addReference(referenceToAdd)¶
- Parameters:
referenceToAdd –
QOpcUaAddReferenceItem- Return type:
布尔
将
referenceToAdd描述的引用添加到服务器。如果异步调用已成功分发,则返回
true。操作的成功在
addReferenceFinished()信号中返回。以下示例代码将节点的引用添加到“Objects”文件夹中:
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);
- addReferenceFinished(sourceNodeId, referenceTypeId, targetNodeId, isForwardReference, statusCode)¶
- Parameters:
sourceNodeId – str
referenceTypeId – str
targetNodeId –
QOpcUaExpandedNodeIdisForwardReference – 布尔值
statusCode –
UaStatusCode
此信号在
addReference()操作完成后发出。sourceNodeId、referenceTypeId、targetNodeId和isForwardReference是来自addReference()调用的值。statusCode包含操作的结果。- applicationIdentity()¶
- Return type:
返回此
QOpcUaClient实例的应用程序标识。- authenticationInformation()¶
- Return type:
返回当前的身份验证信息。
- backend()¶
- Return type:
字符串
返回此
QOpcUaClient实例使用的后端名称,例如“open62541”。- connectError(errorState)¶
- Parameters:
errorState –
QOpcUaErrorState
当连接建立过程中发生错误时,会发出此信号。参数
errorState包含有关错误的信息。在客户端错误的情况下,可以通过在对象上调用
setIgnoreError来忽略这些错误。在执行连接到该信号的槽时,后端会停止并等待所有槽返回。这允许弹出一个用户对话框,例如在后台继续之前询问最终用户是否信任未知证书。
- connectToEndpoint(endpoint)¶
- Parameters:
endpoint –
QOpcUaEndpointDescription
连接到在
endpoint中给出的OPC UA端点。QEndpointDescription endpointDescription; ... client->connectToEndpoint(endpointDescription);
通常通过调用
requestEndpoints()来获取可用端点的列表。如果端点需要用户名认证,则必须在
QOpcUaAuthenticationInformation中至少设置一个用户名。在设置认证信息之前调用此函数将使用匿名认证。QOpcUaAuthenticationInformation authInfo; authInfo.setUsernameAuthentication("user", "password"); client->setAuthenticationInformation(authInfo);
- connected()¶
当连接已建立时,会发出此信号。
- connectionSettings()¶
- Return type:
返回此客户端的连接设置。
- deleteNode(nodeId[, deleteTargetReferences=true])¶
- Parameters:
nodeId – str
deleteTargetReferences – bool
- Return type:
布尔
从服务器删除具有节点ID
nodeId的节点。如果deleteTargetReferences为false,则仅删除源节点为nodeId的引用。如果deleteTargetReferences为true,则也会删除以nodeId为目标的引用。如果异步调用已成功分发,则返回
true。操作的成功在
deleteNodeFinished()信号中返回。以下示例代码从服务器删除一个节点及其所有引用:
m_client->deleteNode(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"), true);
- deleteNodeFinished(nodeId, statusCode)¶
- Parameters:
nodeId – str
statusCode –
UaStatusCode
此信号在
deleteNode()操作完成后发出。nodeId是来自deleteNode()调用的节点ID。statusCode包含操作的结果。- deleteReference(referenceToDelete)¶
- Parameters:
referenceToDelete –
QOpcUaDeleteReferenceItem- Return type:
布尔
从服务器删除由
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);
- deleteReferenceFinished(sourceNodeId, referenceTypeId, targetNodeId, isForwardReference, statusCode)¶
- Parameters:
sourceNodeId – str
referenceTypeId – str
targetNodeId –
QOpcUaExpandedNodeIdisForwardReference – 布尔值
statusCode –
UaStatusCode
此信号在
deleteReference()操作完成后发出。sourceNodeId、referenceTypeId、targetNodeId和isForwardReference是来自deleteReference()调用的值。statusCode包含操作的结果。- disconnectFromEndpoint()¶
从服务器断开连接。
- disconnected()¶
当连接在关闭请求后被关闭时,会发出此信号。
- endpoint()¶
- Return type:
返回客户端当前连接或最后连接的端点的描述。
- endpointsRequestFinished(endpoints, statusCode, requestUrl)¶
- Parameters:
endpoints – QOpcUaEndpointDescription 的列表
statusCode –
UaStatusCoderequestUrl –
QUrl
此信号在
requestEndpoints()操作完成后发出。statusCode包含操作的结果。如果结果是Good,endpoints包含服务器上所有可用端点的描述。requestUrl包含在requestEndpoints()调用中使用的URL。- error()¶
- Return type:
返回客户端的当前错误状态。
属性
errorᅟ的获取器。- errorChanged(error)¶
- Parameters:
错误 –
ClientError
属性
errorᅟ的通知信号。- findServers(url[, localeIds=list()[, serverUris=list()]])¶
- Parameters:
url –
QUrllocaleIds – 字符串列表
serverUris – 字符串列表
- Return type:
布尔
启动一个异步的FindServers请求,从服务器或发现服务器读取已知服务器列表,地址为
url。如果异步调用成功发送,则返回true。localeIds可用于选择请求返回的应用程序名称的语言。格式在OPC UA 1.05第3部分8.4中指定,例如“en”表示英语,或“de-DE”表示德语(德国)。如果指定了多个区域设置ID,服务器将使用第一个匹配项。如果没有匹配项或localeIds为空,服务器将选择默认区域设置。serverUris可用于将结果限制为在其应用程序描述中具有匹配的 applicationUri 的服务器。例如,要查找具有 applicationUri “MyPLC” 的服务器的当前 URL,可以使用以下调用:client->findServers(discoveryServerUrl, QStringList(), QStringList({"MyPLC"}));
结果在
findServersFinished()信号中返回。- findServersFinished(servers, statusCode, requestUrl)¶
- Parameters:
servers – QOpcUaApplicationDescription 的列表
statusCode –
UaStatusCoderequestUrl –
QUrl
此信号在
findServers()操作完成后发出。statusCode包含操作的结果。如果结果是Good,servers包含查询服务器已知的所有符合过滤条件的服务器的应用程序描述。requestUrl包含在findServers()调用中使用的URL。- isNamespaceAutoupdateEnabled()¶
- Return type:
布尔
返回是否启用了命名空间数组的自动更新。
- namespaceArray()¶
- Return type:
字符串列表
返回命名空间数组的缓存值。
该值仅在发出
namespaceArrayUpdated()信号后有效。- namespaceArrayChanged(namespaces)¶
- Parameters:
命名空间 – 字符串列表
此信号在命名空间数组更改后发出。
namespaces包含服务器命名空间表的内容。namespaces中条目的索引对应于节点ID中使用的命名空间索引。- namespaceArrayUpdated(namespaces)¶
- Parameters:
命名空间 – 字符串列表
此信号在
updateNamespaceArray操作完成后发出。namespaces包含服务器命名空间表的内容。namespaces中条目的索引对应于节点ID中使用的命名空间索引。如果命名空间数组内容在更新后保持不变,仍然会发出此信号。
- namespaceAutoupdateInterval()¶
- Return type:
整数
返回命名空间数组的当前修订更新间隔。
另请参阅
setNamespaceAutoupdateInterval(int interval)- node(expandedNodeId)¶
- Parameters:
expandedNodeId –
QOpcUaExpandedNodeId- Return type:
返回一个与由
expandedNodeId标识的OPC UA节点相关联的QOpcUaNode对象。调用者将成为节点对象的所有者。如果节点不在当前连接的服务器上,命名空间无法解析,节点ID格式错误或客户端未连接,则返回
nullptr。- node(nodeId)
- Parameters:
nodeId – str
- Return type:
返回一个与由
nodeId标识的OPC UA节点相关联的QOpcUaNode对象。调用者将成为节点对象的所有者。如果客户端未连接,则返回
nullptr。后端也可能在其他错误情况下返回nullptr(例如,对于格式错误的节点ID)。- passwordForPrivateKeyRequired(keyFilePath, password, previousTryWasInvalid)¶
- Parameters:
keyFilePath – str
password – str
previousTryWasInvalid – 布尔值
当需要加密私钥的密码时,会发出此信号。参数
keyFilePath包含所使用的密钥的文件路径。如果之前的解密尝试失败(即密码无效),则参数previousTryWasInvalid为 true。参数password指向一个 QString,必须用密钥的实际密码填充。如果之前的尝试失败,它包含之前使用的密码。在执行连接到该信号的槽时,后端会停止并等待所有槽返回。这允许弹出一个用户对话框,向最终用户询问密码。
- pkiConfiguration()¶
- Return type:
返回此
QOpcUaClient实例的应用程序PKI配置。- qualifiedNameFromNamespaceUri(namespaceUri, name[, ok=None])¶
- Parameters:
namespaceUri – str
name – str
ok – 布尔值
- Return type:
尝试从
namespaceUri和名称字符串name创建一个限定名称。返回生成的限定名称。如果无法解析namespaceUri,则返回一个空的限定名称。ok将被设置为true如果命名空间 URI 解析成功。如果命名空间 URI 无法解析,ok将被设置为false。- readHistoryData(request)¶
- Parameters:
- Return type:
启动一个或多个节点的读取原始历史记录
request。这是Qt OPC UA对OPC UA ReadHistory服务的表示,用于读取在OPC UA 1.05第4部分,5.10.3中定义的原始历史数据。开始时间戳、结束时间戳、每个节点的值数量、returnBounds 和要读取的节点可以在
QOpcUaHistoryReadRawRequest中指定。返回一个
QOpcUaHistoryReadResponse,其中包含异步请求成功分发的请求状态。结果在UaStatusCode serviceResult)信号中返回。在以下示例中,请求并打印了两个节点过去两天的历史数据。结果限制为每个节点十个值。
QOpcUaHistoryReadRawRequest request( { QOpcUaReadItem("ns=1;s=myValue1"), QOpcUaReadItem("ns=1;s=myValue2") }, QDateTime::currentDateTime(), QDateTime::currentDateTime().addDays(-2), 10, true); QOpcUaHistoryReadResponse *response = m_client->readHistoryData(request); if (response) { QObject::connect(response, &QOpcUaHistoryReadResponse::readHistoryDataFinished, [] (QList<QOpcUaHistoryData> results, QOpcUa::UaStatusCode serviceResult) { if (serviceResult != QOpcUa::UaStatusCode::Good) { qWarning() << "Fetching historical data failed with:" << serviceResult; } else { for (const auto& result : results) { qInfo() << "NodeId:" << result.nodeId(); for (const auto &dataValue : result.result()) qInfo() << "Value:" << dataValue.value(); } } }); }
- readHistoryEvents(request)¶
- Parameters:
- Return type:
使用
request中的参数为一个或多个节点ID启动读取事件历史请求。返回一个
QOpcUaHistoryReadResponse,其中包含异步请求成功分发的请求状态。结果在UaStatusCode serviceResult)信号中返回。以下示例检索过去两天内两个节点的历史事件。每次最多返回每个节点的10个事件。虽然还有更多事件符合过滤器和提供的时间范围,
hasMoreData()将为真,并且可以通过 readMoreData() 获取更多事件。QOpcUaMonitoringParameters::EventFilter filter; filter << QOpcUaSimpleAttributeOperand("Message"); filter << QOpcUaSimpleAttributeOperand("Time"); const QOpcUaHistoryReadEventRequest request({ QOpcUaReadItem("ns=2;s=EventHistorian"), QOpcUaReadItem("ns=2;s=EventHistorian2") }, QDateTime::currentDateTime().addDays(-2), QDateTime::currentDateTime(), filter, 10); // The response object must be freed by the user after all wanted data has been retrieved const auto response = opcuaClient->readHistoryEvents(request); QObject::connect(response, &QOpcUaHistoryReadResponse::readHistoryEventsFinished, this, [response](const QList<QOpcUaHistoryEvent> &results, QOpcUa::UaStatusCode serviceResult) { if (serviceResult != QOpcUa::UaStatusCode::Good) { qDebug() << "Service call failed with" << serviceResult; return; } // Print what we got so far for (const auto &result : response->events()) { qDebug() << "Results for" << result.nodeId() << result.statusCode(); for (const auto &event : result.events()) qDebug() << " Event:" << event; } if (response->hasMoreData()) response->readMoreData(); });
- readNodeAttributes(nodesToRead)¶
- Parameters:
nodesToRead – QOpcUaReadItem 的列表
- Return type:
布尔
开始读取不同节点上的多个属性。可以为
nodesToRead中的每个条目指定节点ID、属性和索引范围。如果异步请求已成功发送,则返回 true。结果将在
readNodeAttributesFinished()信号中返回。此读取函数提供了一种读取节点属性的替代方法,可用于需要读取不同节点上大量节点属性值而不需要基于
QOpcUaNode的API的其他功能(如值变化监控)的场景。请求中的所有读取项都会在单个请求中发送到服务器,并在单个响应中回答,这会生成一个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);
- readNodeAttributesFinished(results, serviceResult)¶
- Parameters:
results – QOpcUaReadResult 的列表
serviceResult –
UaStatusCode
此信号在
readNodeAttributes()操作完成后发出。results中的元素与请求中的元素顺序相同。对于每个请求的元素,results中都有一个值以及时间戳和状态码。serviceResult包含来自 OPC UA 读取服务的状态码。- registerNodes(nodesToRegister)¶
- Parameters:
nodesToRegister – 字符串列表
- Return type:
布尔
在服务器上注册
nodesToRegister中的节点ID,如果请求已成功发送,则返回true。结果将在registerNodesFinished()信号中返回。节点注册服务用于让服务器知道某个节点将被频繁访问,因此它可能会执行一些操作,比如保持与外部资源的连接打开。服务器还可能返回一个建议为数字的别名节点ID。如果使用具有长字符串标识符节点ID的节点在许多请求中,这可能会派上用场。实际的性能提升(如果有的话)取决于服务器的实现。
注册的节点ID仅保证在当前会话中有效。任何不再需要的注册应尽快取消注册,以便服务器可以释放相关的资源。
另请参阅
- registerNodesFinished(nodesToRegister, registeredNodeIds, statusCode)¶
- Parameters:
nodesToRegister – 字符串列表
registeredNodeIds – 字符串列表
statusCode –
UaStatusCode
此信号在
registerNodes()操作完成后发出。nodesToRegister包含请求中的节点ID,用于关联目的。服务器返回的节点ID在registeredNodeIds中,并且与请求中的ID顺序相同。statusCode指示操作是否成功。另请参阅
启动一个异步的
GetEndpoints请求,从服务器url读取可用端点的列表。如果异步调用已成功分派,则返回true。端点信息在
endpointsRequestFinished()信号中返回。- resolveExpandedNodeId(expandedNodeId[, ok=None])¶
- Parameters:
expandedNodeId –
QOpcUaExpandedNodeIdok – 布尔值
- Return type:
字符串
尝试将
expandedNodeId解析为带有数字命名空间索引的节点ID字符串。如果转换成功,则返回节点ID字符串。如果无法解析命名空间索引或扩展节点ID的标识符部分格式错误,则返回空字符串。
ok如果转换成功,将被设置为true。如果无法解析扩展节点ID,ok将被设置为false。- setApplicationIdentity(identity)¶
- Parameters:
设置此
QOpcUaClient实例的应用程序身份为identity。- setAuthenticationInformation(authenticationInformation)¶
- Parameters:
authenticationInformation –
QOpcUaAuthenticationInformation
将此客户端的认证信息设置为
authenticationInformation。- setConnectionSettings(connectionSettings)¶
- Parameters:
connectionSettings –
QOpcUaConnectionSettings
设置此客户端的连接设置为
connectionSettings。示例:
QOpcUaConnectionSettings settings; // Ask the server to give localized texts in german with french as fallback settings.setSessionLocaleIds({ "de", "fr" }); // We need to call some long running methods, increase the request timeout settings.setRequestTimeout(std::chrono::minutes(2)); opcuaClient->setConnectionSettings(settings);
从
connectionSettings中的值将应用于此后的任何新连接。另请参阅
- setNamespaceAutoupdate(isEnabled)¶
- Parameters:
isEnabled – 布尔值
启用命名空间表的自动更新。
启用此功能将自动更新命名空间表的本地副本。当数组更改时,将发出
namespaceArrayUpdated。isEnabled确定是否启用或禁用自动更新。将在服务器上的节点上进行订阅以跟踪更改。如果服务器不支持订阅,这将无法工作,并且
isNamespaceAutoupdateEnabled返回false。- setNamespaceAutoupdateInterval(interval)¶
- Parameters:
interval – 整数
设置命名空间表订阅的间隔。
订阅可能会被服务器修改。
interval决定了检查变化的间隔时间,单位为毫秒。默认值为每秒一次。另请参阅
namespaceAutoupdateInterval()setNamespaceAutoupdate(bool isEnabled)- setPkiConfiguration(config)¶
- Parameters:
将此
QOpcUaClient实例的应用程序PKI配置设置为config。另请参阅
- state()¶
- Return type:
属性
stateᅟ的获取器。- stateChanged(state)¶
- Parameters:
状态 –
ClientState
属性
stateᅟ的通知信号。- supportedSecurityPolicies()¶
- Return type:
字符串列表
返回所使用的后端支持的安全策略。
此功能目前作为技术预览提供,因此该功能提供的API和功能可能会随时更改,恕不另行通知。
- supportedUserTokenTypes()¶
- Return type:
返回所使用的后端支持的用户令牌类型。
此功能目前作为技术预览提供,因此该功能提供的API和功能可能会随时更改,恕不另行通知。
另请参阅
- unregisterNodes(nodesToUnregister)¶
- Parameters:
nodesToUnregister – 字符串列表
- Return type:
布尔
在服务器上注销
nodesToUnregister中的节点ID,如果请求已成功发送,则返回true。结果在unregisterNodesFinished()信号中返回。传入
nodesToUnregister的节点ID必须通过registerNodes()获得。另请参阅
- unregisterNodesFinished(nodesToUnregister, statusCode)¶
- Parameters:
nodesToUnregister – 字符串列表
statusCode –
UaStatusCode
此信号在
unregisterNodes()操作完成后发出。nodesToUnregister包含请求中的节点ID,用于关联目的。statusCode指示操作是否成功。另请参阅
- updateNamespaceArray()¶
- Return type:
布尔
请求从服务器更新命名空间数组。如果操作已成功分派,则返回
true。在操作完成后,会发出
namespaceArrayUpdated()信号。- writeNodeAttributes(nodesToWrite)¶
- Parameters:
nodesToWrite – QOpcUaWriteItem 的列表
- Return type:
布尔
开始为不同节点上的多个属性进行写入。可以为
nodesToWrite中的每个条目指定节点ID、属性、值、值类型和索引范围。如果异步请求已成功发送,则返回
true。结果将在writeNodeAttributesFinished()信号中返回。此写入函数提供了一种替代方法来写入节点的属性,可用于需要写入不同节点上大量节点属性值而不需要基于
QOpcUaNode的API的其他功能(如监控值变化)的场景。请求中的所有写入项都会在单个请求中发送到服务器,并在单个响应中回答,这会生成一个writeNodeAttributesFinished()信号。如果涉及许多不同的节点,这将减少网络开销和信号槽连接的数量。在以下示例中,两个不同节点的Values属性在一次调用中被写入。第二个节点具有一个数组值,其中只有前两个元素被覆盖:
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);
- writeNodeAttributesFinished(results, serviceResult)¶
- Parameters:
results – QOpcUaWriteResult 的列表
serviceResult –
UaStatusCode
此信号在
writeNodeAttributes()操作完成后发出。results中的元素与写入请求中的元素顺序相同。它们包含从服务器接收到的值、时间戳和状态码,以及写入项中的节点ID、属性和索引范围。这有助于将结果与请求进行匹配。serviceResult是来自OPC UA写入服务的状态代码。如果serviceResult不是Good,那么results中的条目也具有无效的状态代码,不能使用。