parent
02666e647b
commit
746cdcf02d
|
@ -13,6 +13,7 @@
|
|||
#include <QSerialPortInfo>
|
||||
#include <QGraphicsDropShadowEffect>
|
||||
#include <QSettings>
|
||||
#include <QFileInfo>
|
||||
|
||||
FormSerialPortSettingDialog::FormSerialPortSettingDialog(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
|
@ -101,7 +102,7 @@ void FormSerialPortSettingDialog::InitializeUi()
|
|||
ui->cb_serialport->addItem(str,parts[0].trimmed());
|
||||
}
|
||||
|
||||
ui->interval->setText("10");
|
||||
ui->interval->setText("15");
|
||||
|
||||
ui->buttonBox->clear();
|
||||
QPushButton *okButton = ui->buttonBox->addButton(QDialogButtonBox::Ok);
|
||||
|
@ -114,6 +115,113 @@ void FormSerialPortSettingDialog::InitializeUi()
|
|||
connect(okButton, &QPushButton::clicked, this, &FormSerialPortSettingDialog::onOkClicked);
|
||||
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();
|
||||
}
|
||||
|
@ -147,6 +255,7 @@ void FormSerialPortSettingDialog::onOkClicked()
|
|||
int stop = ui->cb_stop->currentData().toInt();
|
||||
int slave_id = ui->slave_id->text().toInt();
|
||||
int intervai = ui->interval->text().toInt();
|
||||
int delay = ui->delay_timeout->text().toInt();
|
||||
|
||||
pSettings->setValue("modbus/baund",baund);
|
||||
pSettings->setValue("modbus/com",com);
|
||||
|
@ -154,6 +263,7 @@ void FormSerialPortSettingDialog::onOkClicked()
|
|||
pSettings->setValue("modbus/parity",parity);
|
||||
pSettings->setValue("modbus/stop",stop);
|
||||
pSettings->setValue("modbus/interval",intervai);
|
||||
pSettings->setValue("modbus/delay",delay);
|
||||
pSettings->setValue("slaves/slave_id",slave_id);
|
||||
|
||||
accept();
|
||||
|
|
|
@ -457,16 +457,18 @@ bool MainWindow::InitializeModbus()
|
|||
QString jsonFilePath = appDir + QString::fromStdString("/emsshower.json");
|
||||
ReadConfiguration(jsonFilePath);
|
||||
|
||||
m_bInitializeModbus = true;
|
||||
//m_bInitializeModbus = true;
|
||||
switch (m_modbus_type)
|
||||
{
|
||||
case 0:
|
||||
return InitializeTcp();
|
||||
m_bInitializeModbus = InitializeTcp();
|
||||
return m_bInitializeModbus;
|
||||
break;
|
||||
|
||||
default:
|
||||
case 1:
|
||||
return InitializeRtu();
|
||||
m_bInitializeModbus = InitializeRtu();
|
||||
return m_bInitializeModbus;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -552,6 +554,15 @@ bool MainWindow::readRegister()
|
|||
uint16_t* tab_reg = new uint16_t[iterAddress->quantity];
|
||||
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);
|
||||
|
||||
QVector<uint16_t> registers;
|
||||
|
|
Loading…
Reference in New Issue