如何正确地调用没有输入参数的方法

问题描述 投票:0回答:1

Qt文档提供方法

bool QOpcUaNode::callMethod(const QString &methodNodeId, const QVector<QOpcUa::TypedVariant> &args = QVector<QOpcUa::TypedVariant>())

用于Opc Ua服务器上的调用方法。关于此方法,我有2个问题:

  1. methodNodeId到底是什么?我想这是我要调用的Node的ID,但是如果是这种情况,为什么函数不是静态的呢?

  2. 如何使用0个输入参数调用方法?尝试不指定其他参数就调用myNode->callMethod(methodNodeId)仍会返回BadTooManyArguments,但实际上没有其他方法可以看到它被使用。

qt opc-ua qtopcua
1个回答
0
投票
  1. OPC UA呼叫服务请求需要包含CallMethodRequest的数组在OPC UA规范中,CallMethod请求的定义如下:

    • objectIdNodeId)-NodeId应该是在其上调用方法的Object或ObjectType的NodeId。 ->我猜这是你的QOpcUaNode
    • methodIdNodedId)-要调用的方法的NodeId。
    • inputArguments [](BaseDataType)-输入参数值的列表。
  2. 您将必须检查您的方法定义,也许还要检查您的服务器。您不带参数的callMethod(methodId)调用就可以了。根据您调用的方法,此调用可能成功还是不成功。

无论如何,如果OPC UA服务器正在等待您未提供的某些输入参数,则发送Bad_TooManyArguments而不是Bad_ArgumentsMissing也会出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.