AttributeRead никогда не отправляется QOpcUaNode, не может прочитать узел, но может записать - PullRequest
0 голосов
/ 21 октября 2019

Я пишу программу на Qt и использую класс QOpcUaNode. К этому моменту мне нужно было только писать на OPC, используя writeAttribute, и это работало нормально (то есть, насколько я вижу, мои узлы настроены правильно). Теперь мне также нужно прочитать информацию, хранящуюся в узлах, и я не могу заставить ее работать, всегда получая QVariant (Invalid), когда я пытаюсь отобразить атрибут, используя qDebug ()

Из чегоЯ прочитал в документации, сигнал attributeRead должен быть передан прежде, чем я смогу прочитать узел. Я попробовал две разные вещи, чтобы получить этот сигнал: readAttributes (QOpcUa :: NodeAttribute :: Value) и readValueAttribute () Вот мой код, Flow является моим QOpcUaNode *, а m_custom является членом bool моего класса и изначально установлен на false:

connect(Flow, &QOpcUaNode::attributeRead, this, &OPC_Client::custom);

qDebug() << Flow->readValueAttribute();
qDebug() << Flow->readAttributes(QOpcUa::NodeAttribute::Value);

int i(0);
while (m_custom != true) {qDebug() << i; i++;}

custom - это слот, просто выполняющий m_custom = true;Когда я компилирую и запускаю программу, как только эти строки достигнуты, значение i увеличивается и никогда не останавливается, что означает, что я предполагаю, что сигнал никогда не излучается. Сначала я попытался без цикла while, просто прочитал значение без ожидания и получил QVariant (Invalid) ...

Я пишу, используя Flow -> writeAttribute (QOpcUa :: NodeAttribute :: Value, true, QOpcUa:: Типы :: Boolean);и все работает нормально.

Может кто-нибудь помочь мне с этим, пожалуйста?

...