| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "calprocess.h"
- #include "logger.h"
- #include "defs.h"
- #include <QSettings>
- #include <QMetaEnum>
- CalProcess::CalProcess(QObject *parent)
- {
- // start("/home/forlinx/Desktop/workspace/TPMFM-A/extracted_params20251205.xml", NETPARSE_FIFO_PATH, CALCULATE_FIFO_PATH);
- restart();
- connect(&m_timer, &QTimer::timeout, this, [this](){
- QString state = QMetaEnum::fromType<QProcess::ProcessState>().valueToKey(m_process.state());
- QString error = QMetaEnum::fromType<QProcess::ProcessError>().valueToKey(m_process.error());
- // LOG_INFO("calculate process state: {}, {}", static_cast<int>(m_process.state()), static_cast<int>(m_process.error()));
- if(m_process.state() != QProcess::Running) {
- LOG_INFO("calculate process state: {}, error: {}", state.toStdString(), error.toStdString());
- }
- });
- m_timer.start(2000);
- }
- CalProcess::~CalProcess()
- {
- stop();
- }
- void CalProcess::start(const QString &configure)
- {
- if (m_process.state() != QProcess::NotRunning) {
- LOG_WARN("netparse is already running!");
- return;
- }
- LOG_INFO("calculate process configure: {}", configure.toStdString());
- QString program = "/usr/bin/python";
- QStringList args;
- args << "/home/forlinx/Desktop/workspace/dataParsing/formula_calculation.py";
- args << configure;
- args << NETPARSE_FIFO_PATH;
- args << CALCULATE_FIFO_PATH;
- LOG_INFO("calculate process args: {}", args.join(" ").toStdString());
- // save formula configure file path
- QSettings settings("storage/conf/settings.ini", QSettings::IniFormat);
- settings.setIniCodec("UTF-8");
- settings.beginGroup("CONFIGURE");
- settings.setValue("CALCULATE", configure);
- settings.endGroup();
- m_process.start(program, args);
- }
- void CalProcess::stop()
- {
- if (m_process.state() == QProcess::NotRunning) {
- LOG_INFO("netparse is not running!");
- return;
- }
- LOG_INFO("stopping netparse...");
- m_process.kill(); // 强制终止
- m_process.waitForFinished(); // 等待退出
- LOG_INFO("netparse stopped.");
- }
- void CalProcess::restart(const QString &configure)
- {
- stop();
- if(configure.isEmpty()) {
- QSettings settings("storage/conf/settings.ini", QSettings::IniFormat);
- settings.setIniCodec("UTF-8");
- settings.beginGroup("CONFIGURE");
- if(settings.contains("CALCULATE"))
- start(settings.value("CALCULATE").toString());
- else
- start(configure);
- settings.endGroup();
- } else {
- start(configure);
- }
- }
- bool CalProcess::isRunning()
- {
- return m_process.state() != QProcess::NotRunning;
- }
|