Files
2023-Webservices_And_Applic…/Applications/qModMaster/forms/settingsmodbustcp.cpp

82 lines
2.0 KiB
C++

#include <QtDebug>
#include <QMessageBox>
#include "settingsmodbustcp.h"
#include "ui_settingsmodbustcp.h"
SettingsModbusTCP::SettingsModbusTCP(QWidget *parent, ModbusCommSettings * settings) :
QDialog(parent),
ui(new Ui::SettingsModbusTCP),
m_settings(settings)
{
ui->setupUi(this);
connect(ui->buttonBox,SIGNAL(accepted()),this,SLOT(changesAccepted()));
}
SettingsModbusTCP::~SettingsModbusTCP()
{
delete ui;
}
void SettingsModbusTCP::showEvent(QShowEvent * event)
{
//Load Settings
ui->leSlaveIP->setEnabled(!modbus_connected);
ui->leTCPPort->setEnabled(!modbus_connected);
if (m_settings != NULL) {
ui->leTCPPort->setText(m_settings->TCPPort());
ui->leSlaveIP->setText(m_settings->slaveIP());
}
}
void SettingsModbusTCP::changesAccepted()
{
int validation;
validation = validateInputs();
switch(validation){
case 0 : // ok
//Save Settings
if (m_settings != NULL) {
m_settings->setTCPPort(ui->leTCPPort->text());
m_settings->setSlaveIP(ui->leSlaveIP->text());
}
break;
case 1 : // wrong ip
QMessageBox::critical(NULL, "Modbus TCP Settings","Wrong IP Address.");
break;
case 2 : // wrong port
QMessageBox::critical(NULL, "Modbus TCP Settings","Wrong Port Number.");
break;
}
}
int SettingsModbusTCP::validateInputs()
{
//Strip zero's from IP
QStringList ipBytes;
bool ok;
int i, ipByte, port;
ipBytes = (ui->leSlaveIP->text()).split(".");
if (ipBytes.size() == 4){
for (i = 0; i < ipBytes.size(); i++){
ipByte = ipBytes[i].toInt(&ok);
if (!ok || ipByte > 255 )
return 1; // wrong ip
}
}
else
return 1; // wrong ip
port = (ui->leTCPPort->text()).toInt(&ok);
if (!ok || port <= 0 || port > 65535)
return 2; // wrong port
return 0; // validate ok
}