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

Qt 如何正确调用没有输入参数的方法,qt,opc-ua,qtopcua,Qt,Opc Ua,Qtopcua,Qt文档提供了该方法 bool QOpcUaNode::callMethod(const QString &methodNodeId, const QVector<QOpcUa::TypedVariant> &args = QVector<QOpcUa::TypedVariant>()) boolqopcuanode::callMethod(constqstring&methodNodeId,constqvector&args=QVector()) 用

Qt文档提供了该方法

bool QOpcUaNode::callMethod(const QString &methodNodeId, const QVector<QOpcUa::TypedVariant> &args = QVector<QOpcUa::TypedVariant>())
boolqopcuanode::callMethod(constqstring&methodNodeId,constqvector&args=QVector())
用于在Opc Ua服务器上调用方法。关于此方法,我有两个问题:

  • methodNodeId到底是什么?我想象它是我想要调用的节点的Id,但是如果是这样,为什么函数不是静态的呢

  • 如何使用0个输入参数调用方法?尝试调用
    myNode->callMethod(methodNodeId)
    而不指定进一步的参数仍然会返回
    BadTooManyArguments
    ,但实际上我没有其他方法可以看到它被使用

  • OPC UA呼叫服务请求需要包含
    CallMethodRequest
    调用方法请求在OPC UA规范中定义如下:

    • objectId(NodeId)-NodeId应为调用方法的对象或ObjectType的NodeId。->我猜这是你的
      QOpcUaNode
    • methodId(NodeId)-要调用的方法的NodeId
    • 输入参数[](BaseDataType)-输入参数值列表
  • 您必须检查您的方法定义,可能还需要检查您的服务器。不带参数的
    callMethod(methodId)
    调用没有问题。根据调用的方法,此调用可能成功或失败

  • 无论如何,如果您的OPC UA服务器正在等待您未提供的某些输入参数,则它在发送
    Bad\u TooManyArguments
    而不是
    Bad\u ArgumentsMissing
    时也可能出现问题