连接 QML 类型

连接到服务器。 更多信息...

导入语句import QtOpcUa
自从QtOpcUa 5.12

属性

信号

方法

详细描述

主要的 API 使用后端来建立连接。在尝试任何连接之前,必须设置后端。

import QtOpcUa as QtOpcUa

QtOpcUa.Connection {
    backend: "open62541"
}

Component.onCompleted: {
    connection.connectToEndpoint("opc.tcp://127.0.0.1:43344");
}

属性文档

authenticationInformation : AuthenticationInformation

将认证信息设置为此连接。必须在调用 connectToEndpoint 之前设置认证信息。如果没有设置认证信息,将使用匿名模式。它对当前连接没有影响。如果客户端断开连接并重新连接,将使用新的凭据。在设置 backend 之前读取和写入此属性,写入会被忽略,读取返回无效的 AuthenticationInformation


availableBackends : stringlist [只读]

作为列表返回所有可用后端的名称。在选择连接时使用。

另请参阅 Connection::backend


backend : string

设置用于连接到服务器的后端。在尝试任何连接之前必须设置。

另请参阅Connection::availableBackends


connected : bool [只读]

连接的状态。当存在连接时,为true,否则为false


connection : QOpcUaClient

此属性仅用于从C++中注入连接。在连接设置复杂的情况下,可以使用C++处理所有详细信息。连接建立后,可以使用此属性将其传递给QML。客户端的所有权会转移到QML。

class MyClass : public QObject {
    Q_OBJECT
    Q_PROPERTY(QOpcUaClient* connection READ connection NOTIFY connectionChanged)

public:
    MyClass (QObject* parent = nullptr);
    QOpcUaClient *connection() const;

signals:
    void connectionChanged(QOpcUaClient *);

在客户端设置完成时发出信号 connectionChanged,下面的QML代码将使用此连接。

import QtOpcUa as QtOpcUa

MyClass {
    id: myclass
}

QtOpcUa.Connection {
    connection: myclass.connection
 }

currentEndpoint : QOpcUaEndpointDescription

连接的服务器的端点描述。如果连接尚未建立,则返回空端点描述。


defaultConnection : bool

将其设为默认连接。通常每个节点都需要指定一个连接才能使用。如果此属性设置为true,则在没有设置连接的所有情况下都将使用此连接。已建立的连接不受影响。如果多个连接上将defaultConnection设置为true,则最后一个被使用。

QtOpcUa.Connection {
    ...
    defaultConnection: true
    ...
}

另请参阅节点


namespaces : stringlist [只读]

连接的服务器上注册的所有命名空间URI的字符串列表。


supportedSecurityPolicies : stringlist

包含支持的安全策略的字符串列表

此属性目前作为技术预览提供,因此API和提供的功能可能会在任何时候更改,恕不另行通知。


supportedUserTokenTypes : array[tokenTypes]

所有支持的用户令牌类型的用户令牌策略类型数组。

此属性目前作为技术预览提供,因此API和提供的功能可能会在任何时候更改,恕不另行通知。


信号文档

nodeChanged()

当底层节点发生变化时发出。这发生在NodeId的命名空间或标识符更改时。

注意:相应的事件处理函数是onNodeChanged


readNodeAttributesFinished(readResults)

当使用readNodeAttributes()启动的读取请求完成后发出。参数readResults是包含从服务器请求的值的ReadResult条目数组。

connection.onReadNodeAttributesFinished(results) {
    for (var i = 0; results.length; i++) {
        if (results[i].status.isGood) {
            console.log(results[i].value);
        } else {
            // handle error
        }
    }
}

注意:相应的事件处理函数是onReadNodeAttributesFinished

另请参阅readNodeAttributes() 和 ReadResult


writeNodeAttributesFinished(writeResults)

当使用writeNodeAttributes()启动的写入请求完成后发出。参数writeResults是包含从服务器请求的值的WriteResult条目数组。

for (var i = 0; i < writeResults.length; i++) {
    console.log(writeResults[i].nodeId);
    console.log(writeResults[i].namespaceName);
    console.log(writeResults[i].attribute);

    if (writeResults[i].status.isBad) {
        // value was not written
    }
}

注意:相应的事件处理函数是onWriteNodeAttributesFinished

另请参阅writeNodeAttributes() 和 WriteResult


方法文档

connectToEndpoint(endpointDescription)

连接到用endpointDescription指定的端点。

另请参阅 端点描述.


disconnectFromEndpoint()

断开已建立的连接。


readNodeAttributes(要读取的值)

此函数用于一次性从服务器读取多个值。如果读取请求成功派发,则返回 true

要读取的值 参数必须是一个 ReadItem 条目的 JavaScript 数组。

// List of items to read
var readItemList = [];
// Item to be added to the list of items to be read
var readItem;

// Prepare an item to be read

// Create a new read item and fill properties
readItem = QtOpcUa.ReadItem.create();
readItem.ns = "http://qt-project.org";
readItem.nodeId = "s=Demo.Static.Scalar.Double";
readItem.attribute = QtOpcUa.Constants.NodeAttribute.DisplayName;

// Add the prepared item to the list of items to be read
readItemList.push(readItem);

// Add further items
[...]

if (!connection.readNodeAttributes(readItemList)) {
    // handle error
}

读取请求的结果通过信号 readNodeAttributesFinished() 提供。

另请参阅 readNodeAttributesFinished() 和 ReadItem


writeNodeAttributes(要写入的值)

此函数用于一次性将多个值写入到服务器。如果写入请求成功派发,则返回 true

要写入的值 参数必须是一个 WriteItem 条目的 JavaScript 数组。

// List of items to write
var writeItemList = [];
// Item to be added to the list of items to be written
var writeItem;

// Prepare an item to be written

// Create a new write item and fill properties
writeItem = QtOpcUa.WriteItem.create();
writeItem.ns = "http://qt-project.org";
writeItem.nodeId = "s=Demo.Static.Scalar.Double";
writeItem.attribute = QtOpcUa.Constants.NodeAttribute.Value;
writeItem.value = 32.1;
writeItem.valueType = QtOpcUa.Constants.Double;

// Add the prepared item to the list of items to be written
writeItemList.push(writeItem);

// Add further items
[...]

if (!connection.writeNodeAttributes(writeItemList)) {
    // handle error
}

写入请求的结果通过信号 Connection::writeNodeAttributesFinished() 提供。

另请参阅 Connection::writeNodeAttributesFinished() 和 WriteItem


© 2024 Qt 公司有限公司。包含在此处的文档贡献是相应所有者的版权。本文件提供的文档 根据 GNU 自由文档许可证版本 1.3 授权,由自由软件基金会发布。Qt 和相关标志是芬兰以及/或其他国家的 Qt 公司的商标。所有其他商标均为各自所有者的财产。