Я пишу программу на 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);и все работает нормально.
Может кто-нибудь помочь мне с этим, пожалуйста?