parent
02666e647b
commit
746cdcf02d
|
@ -13,6 +13,7 @@
|
||||||
#include <QSerialPortInfo>
|
#include <QSerialPortInfo>
|
||||||
#include <QGraphicsDropShadowEffect>
|
#include <QGraphicsDropShadowEffect>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QFileInfo>
|
||||||
|
|
||||||
FormSerialPortSettingDialog::FormSerialPortSettingDialog(QWidget *parent)
|
FormSerialPortSettingDialog::FormSerialPortSettingDialog(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
|
@ -101,7 +102,7 @@ void FormSerialPortSettingDialog::InitializeUi()
|
||||||
ui->cb_serialport->addItem(str,parts[0].trimmed());
|
ui->cb_serialport->addItem(str,parts[0].trimmed());
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->interval->setText("10");
|
ui->interval->setText("15");
|
||||||
|
|
||||||
ui->buttonBox->clear();
|
ui->buttonBox->clear();
|
||||||
QPushButton *okButton = ui->buttonBox->addButton(QDialogButtonBox::Ok);
|
QPushButton *okButton = ui->buttonBox->addButton(QDialogButtonBox::Ok);
|
||||||
|
@ -114,6 +115,113 @@ void FormSerialPortSettingDialog::InitializeUi()
|
||||||
connect(okButton, &QPushButton::clicked, this, &FormSerialPortSettingDialog::onOkClicked);
|
connect(okButton, &QPushButton::clicked, this, &FormSerialPortSettingDialog::onOkClicked);
|
||||||
connect(cancelButton, &QPushButton::clicked, this, &FormSerialPortSettingDialog::onCancelClicked);
|
connect(cancelButton, &QPushButton::clicked, this, &FormSerialPortSettingDialog::onCancelClicked);
|
||||||
|
|
||||||
|
//恢复原配置
|
||||||
|
QString appDir = QCoreApplication::applicationDirPath();
|
||||||
|
QString iniFilePath = appDir + QString::fromStdString("/emsshower.ini");
|
||||||
|
|
||||||
|
QFileInfo checkFile(iniFilePath);
|
||||||
|
|
||||||
|
// 文件已存在且是普通文件
|
||||||
|
if (checkFile.exists() && checkFile.isFile())
|
||||||
|
{
|
||||||
|
QSettings* pSettings = new QSettings(iniFilePath, QSettings::IniFormat,this);
|
||||||
|
|
||||||
|
int baund = pSettings->value("modbus/baund",9600).toInt();
|
||||||
|
QString tmp = QString("%1").arg(baund);
|
||||||
|
|
||||||
|
int targetIndex = ui->cb_baund->findText(tmp); // 精确匹配
|
||||||
|
if (targetIndex != -1)
|
||||||
|
{
|
||||||
|
ui->cb_baund->setCurrentIndex(targetIndex); // 自动触发滚动定位[3](@ref)
|
||||||
|
// 强制更新视图(适用于隐藏后重新显示)
|
||||||
|
//ui->cb_baund->showPopup();
|
||||||
|
//ui->cb_baund->hidePopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString com = pSettings->value("modbus/com","COM1").toString();
|
||||||
|
for(int i=0; i<ui->cb_serialport->count(); ++i)
|
||||||
|
{
|
||||||
|
if(ui->cb_serialport->itemText(i).contains(com+" -"))
|
||||||
|
{
|
||||||
|
ui->cb_serialport->setCurrentIndex(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int data = pSettings->value("modbus/data",8).toInt();
|
||||||
|
tmp = QString("%1").arg(data);
|
||||||
|
|
||||||
|
targetIndex = ui->cb_data->findText(tmp); // 精确匹配
|
||||||
|
if (targetIndex != -1)
|
||||||
|
{
|
||||||
|
ui->cb_data->setCurrentIndex(targetIndex); // 自动触发滚动定位[3](@ref)
|
||||||
|
// 强制更新视图(适用于隐藏后重新显示)
|
||||||
|
// ui->cb_data->showPopup();
|
||||||
|
//ui->cb_data->hidePopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
int parity = pSettings->value("modbus/parity",0).toInt();
|
||||||
|
|
||||||
|
if (parity == 0)
|
||||||
|
tmp = "NoParity";
|
||||||
|
else if(parity == 2)
|
||||||
|
tmp = "Even";
|
||||||
|
else if(parity == 3)
|
||||||
|
tmp = "Odd";
|
||||||
|
else
|
||||||
|
tmp = "NoParity";
|
||||||
|
|
||||||
|
targetIndex = ui->cb_parity->findText(tmp); // 精确匹配
|
||||||
|
if (targetIndex != -1)
|
||||||
|
{
|
||||||
|
ui->cb_parity->setCurrentIndex(targetIndex); // 自动触发滚动定位[3](@ref)
|
||||||
|
// 强制更新视图(适用于隐藏后重新显示)
|
||||||
|
//ui->cb_parity->showPopup();
|
||||||
|
//ui->cb_parity->hidePopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
int stop = pSettings->value("modbus/stop",1).toInt();
|
||||||
|
tmp = QString("%1").arg(stop);
|
||||||
|
|
||||||
|
targetIndex = ui->cb_stop->findText(tmp); // 精确匹配
|
||||||
|
if (targetIndex != -1)
|
||||||
|
{
|
||||||
|
ui->cb_stop->setCurrentIndex(targetIndex); // 自动触发滚动定位[3](@ref)
|
||||||
|
// 强制更新视图(适用于隐藏后重新显示)
|
||||||
|
//ui->cb_stop->showPopup();
|
||||||
|
//ui->cb_stop->hidePopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
int interval = pSettings->value("modbus/interval",15).toInt();
|
||||||
|
tmp = QString("%1").arg(interval);
|
||||||
|
ui->interval->setText(tmp);
|
||||||
|
|
||||||
|
int slave_id = pSettings->value("slaves/slave_id",1).toInt();
|
||||||
|
tmp = QString("%1").arg(slave_id);
|
||||||
|
ui->slave_id->setText(tmp);
|
||||||
|
|
||||||
|
int delay = pSettings->value("modbus/delay",1000).toInt();
|
||||||
|
tmp = QString("%1").arg(delay);
|
||||||
|
ui->delay_timeout->setText(tmp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QSettings* pSettings = new QSettings(iniFilePath, QSettings::IniFormat,this);
|
||||||
|
|
||||||
|
pSettings->setValue("modbus/baund",9600);
|
||||||
|
pSettings->setValue("modbus/com","COM1");
|
||||||
|
pSettings->setValue("modbus/data",8);
|
||||||
|
pSettings->setValue("modbus/parity",0);
|
||||||
|
pSettings->setValue("modbus/stop",1);
|
||||||
|
pSettings->setValue("modbus/interval",15);
|
||||||
|
pSettings->setValue("modbus/delay",1000);
|
||||||
|
pSettings->setValue("slaves/slave_id",1);
|
||||||
|
|
||||||
|
pSettings->setValue("version/ver","1_0_0");
|
||||||
|
pSettings->setValue("modbus/type",1);
|
||||||
|
|
||||||
|
pSettings->setValue("modbus/ip","127.0.0.1");
|
||||||
|
pSettings->setValue("modbus/port",502);
|
||||||
|
}
|
||||||
// 恢复默认光标
|
// 恢复默认光标
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
}
|
}
|
||||||
|
@ -147,6 +255,7 @@ void FormSerialPortSettingDialog::onOkClicked()
|
||||||
int stop = ui->cb_stop->currentData().toInt();
|
int stop = ui->cb_stop->currentData().toInt();
|
||||||
int slave_id = ui->slave_id->text().toInt();
|
int slave_id = ui->slave_id->text().toInt();
|
||||||
int intervai = ui->interval->text().toInt();
|
int intervai = ui->interval->text().toInt();
|
||||||
|
int delay = ui->delay_timeout->text().toInt();
|
||||||
|
|
||||||
pSettings->setValue("modbus/baund",baund);
|
pSettings->setValue("modbus/baund",baund);
|
||||||
pSettings->setValue("modbus/com",com);
|
pSettings->setValue("modbus/com",com);
|
||||||
|
@ -154,6 +263,7 @@ void FormSerialPortSettingDialog::onOkClicked()
|
||||||
pSettings->setValue("modbus/parity",parity);
|
pSettings->setValue("modbus/parity",parity);
|
||||||
pSettings->setValue("modbus/stop",stop);
|
pSettings->setValue("modbus/stop",stop);
|
||||||
pSettings->setValue("modbus/interval",intervai);
|
pSettings->setValue("modbus/interval",intervai);
|
||||||
|
pSettings->setValue("modbus/delay",delay);
|
||||||
pSettings->setValue("slaves/slave_id",slave_id);
|
pSettings->setValue("slaves/slave_id",slave_id);
|
||||||
|
|
||||||
accept();
|
accept();
|
||||||
|
|
|
@ -457,16 +457,18 @@ bool MainWindow::InitializeModbus()
|
||||||
QString jsonFilePath = appDir + QString::fromStdString("/emsshower.json");
|
QString jsonFilePath = appDir + QString::fromStdString("/emsshower.json");
|
||||||
ReadConfiguration(jsonFilePath);
|
ReadConfiguration(jsonFilePath);
|
||||||
|
|
||||||
m_bInitializeModbus = true;
|
//m_bInitializeModbus = true;
|
||||||
switch (m_modbus_type)
|
switch (m_modbus_type)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return InitializeTcp();
|
m_bInitializeModbus = InitializeTcp();
|
||||||
|
return m_bInitializeModbus;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
case 1:
|
case 1:
|
||||||
return InitializeRtu();
|
m_bInitializeModbus = InitializeRtu();
|
||||||
|
return m_bInitializeModbus;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -552,6 +554,15 @@ bool MainWindow::readRegister()
|
||||||
uint16_t* tab_reg = new uint16_t[iterAddress->quantity];
|
uint16_t* tab_reg = new uint16_t[iterAddress->quantity];
|
||||||
int regs = modbus_read_registers(m_pModbus, iterAddress->start_addr, iterAddress->quantity, tab_reg);
|
int regs = modbus_read_registers(m_pModbus, iterAddress->start_addr, iterAddress->quantity, tab_reg);
|
||||||
|
|
||||||
|
|
||||||
|
if (regs <= 0)
|
||||||
|
{
|
||||||
|
QString s = QString(tr("Failed to read registers from address %1")).arg(iterAddress->start_addr);
|
||||||
|
ui->statusbar->showMessage(s);
|
||||||
|
delete []tab_reg;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
assert(regs>0);
|
assert(regs>0);
|
||||||
|
|
||||||
QVector<uint16_t> registers;
|
QVector<uint16_t> registers;
|
||||||
|
|
Loading…
Reference in New Issue