| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #include "netparseprocess.h"
- #include "logger.h"
- #include "defs.h"
- #include <QSettings>
- #include <QMetaEnum>
- NetParseProcess::NetParseProcess(QObject *parent)
- : QObject{parent}
- {
- restart();
- connect(&m_process, &QProcess::stateChanged, this, [this](QProcess::ProcessState newState){
- QString state = QMetaEnum::fromType<QProcess::ProcessState>().valueToKey(newState);
- QString error = QMetaEnum::fromType<QProcess::ProcessError>().valueToKey(m_process.error());
- LOG_INFO("netparse process state: {}, {}", state.toStdString(), error.toStdString());
- });
- // connect(&m_process, &QProcess::readyReadStandardOutput, this, [this](){
- // QByteArray output = m_process.readAllStandardOutput();
- // LOG_INFO(output.data());
- // });
- }
- NetParseProcess::~NetParseProcess()
- {
- stop();
- }
- void NetParseProcess::start(const QString &configure)
- {
- if (m_process.state() != QProcess::NotRunning) {
- LOG_WARN("netparse is already running!");
- return;
- }
- LOG_INFO("netparse process configure: {}", configure.toStdString());
- QString program = "/usr/bin/python";
- QStringList args;
- args << "/home/forlinx/Desktop/workspace/TPMFM-A/capture_mul.py";
- args << configure;
- args << NETPARSE_FIFO_PATH;
- LOG_INFO("netparse process args: {}", args.join(" ").toStdString());
- // save netparse configure file path
- QSettings settings("storage/conf/settings.ini", QSettings::IniFormat);
- settings.setIniCodec("UTF-8");
- settings.beginGroup("CONFIGURE");
- settings.setValue("NETPARSE", configure);
- settings.endGroup();
- m_process.start(program, args);
- }
- void NetParseProcess::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 NetParseProcess::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("NETPARSE"))
- start(settings.value("NETPARSE").toString());
- settings.endGroup();
- } else {
- start(configure);
- }
-
- }
- bool NetParseProcess::isRunning()
- {
- return m_process.state() != QProcess::NotRunning;
- }
|