Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt Modbus TCP C++
Forum Updated to NodeBB v4.3 + New Features

Qt Modbus TCP C++

Scheduled Pinned Locked Moved Unsolved General and Desktop
2 Posts 2 Posters 185 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Roman111
    wrote on 18 Aug 2023, 02:37 last edited by
    #1

    #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?

    C 1 Reply Last reply 18 Aug 2023, 04:21
    0
    • R Roman111
      18 Aug 2023, 02:37

      #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?

      C Online
      C Online
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on 18 Aug 2023, 04:21 last edited by
      #2

      @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.

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      2

      1/2

      18 Aug 2023, 02:37

      • Login

      • Login or register to search.
      1 out of 2
      • First post
        1/2
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved