Qt Modbus TCP C++
-
#include <QCoreApplication>
#include <QModbusDevice>
#include <QModbusTcpClient>
#include <QVariant>
#include <iostream>
#include <QDebug>using namespace std;
int main(int argc, char *argv[]){
QCoreApplication a(argc, argv);
const QVariant adress("192.168.1.100");
qDebug() << "Start";QModbusTcpClient* m_modbusDevice = new QModbusTcpClient; // initial parameters qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkAddressParameter)); qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkPortParameter)); //set parameters m_modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter,502); // Порт Modbus на устройстве m_modbusDevice->setConnectionParameter(QModbusDevice::NetworkAddressParameter,adress); // IP-адрес устройства //check the status qDebug() << int(m_modbusDevice->state()); //check the parameters qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkAddressParameter)); qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkPortParameter)); m_modbusDevice->setTimeout(250); //let's check the status again qDebug() << int(m_modbusDevice->state()); m_modbusDevice->connectDevice(); if (m_modbusDevice->state()==QModbusDevice::ConnectedState) qDebug() << "Connect"; else qDebug() << "Disconnect"; qDebug() << int(m_modbusDevice->state()); //always status 1 (QModbusDevice::Connecting State), //need 2 (QModbusDevice::Connected State) m_modbusDevice->disconnectDevice(); qDebug() << int(m_modbusDevice->state()); if (m_modbusDevice->state()==QModbusDevice::ConnectedState) qDebug() << "Connect"; else qDebug() << "Disconnect"; return a.exec();
}
does not establish a connection...
what am I doing wrong? -
#include <QCoreApplication>
#include <QModbusDevice>
#include <QModbusTcpClient>
#include <QVariant>
#include <iostream>
#include <QDebug>using namespace std;
int main(int argc, char *argv[]){
QCoreApplication a(argc, argv);
const QVariant adress("192.168.1.100");
qDebug() << "Start";QModbusTcpClient* m_modbusDevice = new QModbusTcpClient; // initial parameters qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkAddressParameter)); qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkPortParameter)); //set parameters m_modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter,502); // Порт Modbus на устройстве m_modbusDevice->setConnectionParameter(QModbusDevice::NetworkAddressParameter,adress); // IP-адрес устройства //check the status qDebug() << int(m_modbusDevice->state()); //check the parameters qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkAddressParameter)); qDebug() << (m_modbusDevice->connectionParameter(QModbusDevice::NetworkPortParameter)); m_modbusDevice->setTimeout(250); //let's check the status again qDebug() << int(m_modbusDevice->state()); m_modbusDevice->connectDevice(); if (m_modbusDevice->state()==QModbusDevice::ConnectedState) qDebug() << "Connect"; else qDebug() << "Disconnect"; qDebug() << int(m_modbusDevice->state()); //always status 1 (QModbusDevice::Connecting State), //need 2 (QModbusDevice::Connected State) m_modbusDevice->disconnectDevice(); qDebug() << int(m_modbusDevice->state()); if (m_modbusDevice->state()==QModbusDevice::ConnectedState) qDebug() << "Connect"; else qDebug() << "Disconnect"; return a.exec();
}
does not establish a connection...
what am I doing wrong?@Roman111 said in Qt Modbus TCP C++:
what am I doing wrong?
All this stuff can only work when the Qt event loop is running (so after a.exec()) - put your stuff into a proper class and use signals/slots to do something e.g. after the device is really connected ( m_modbusDevice->connectDevice();)
And please format your code with proper <code> - tags so anyone can read you code.