Qt文档提供方法
bool QOpcUaNode::callMethod(const QString &methodNodeId, const QVector<QOpcUa::TypedVariant> &args = QVector<QOpcUa::TypedVariant>())
用于Opc Ua服务器上的调用方法。关于此方法,我有2个问题:
methodNodeId到底是什么?我想这是我要调用的Node的ID,但是如果是这种情况,为什么函数不是静态的呢?
如何使用0个输入参数调用方法?尝试不指定其他参数就调用myNode->callMethod(methodNodeId)
仍会返回BadTooManyArguments
,但实际上没有其他方法可以看到它被使用。
OPC UA呼叫服务请求需要包含CallMethodRequest
的数组在OPC UA规范中,CallMethod请求的定义如下:
QOpcUaNode
您将必须检查您的方法定义,也许还要检查您的服务器。您不带参数的callMethod(methodId)
调用就可以了。根据您调用的方法,此调用可能成功还是不成功。
无论如何,如果OPC UA服务器正在等待您未提供的某些输入参数,则发送Bad_TooManyArguments
而不是Bad_ArgumentsMissing
也会出现问题。