|
@@ -0,0 +1,86 @@
|
|
|
|
|
+#include "netparseprocess.h"
|
|
|
|
|
+#include "logger.h"
|
|
|
|
|
+#include "defs.h"
|
|
|
|
|
+
|
|
|
|
|
+#include <QSettings>
|
|
|
|
|
+#include <QMetaEnum>
|
|
|
|
|
+
|
|
|
|
|
+NetParseProcess::NetParseProcess(QObject *parent)
|
|
|
|
|
+ : QObject{parent}
|
|
|
|
|
+{
|
|
|
|
|
+ QSettings settings("storage/conf/settings.ini", QSettings::IniFormat);
|
|
|
|
|
+ settings.setIniCodec("UTF-8");
|
|
|
|
|
+ settings.beginGroup("CONFIGURE");
|
|
|
|
|
+ if(settings.contains("NETPARSE"))
|
|
|
|
|
+ start(settings.value("NETPARSE").toString(), NETPARSE_FIFO_PATH);
|
|
|
|
|
+ settings.endGroup();
|
|
|
|
|
+
|
|
|
|
|
+ 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("netparse process state: {}, {}", static_cast<int>(m_process.state()), static_cast<int>(m_process.error()));
|
|
|
|
|
+ LOG_INFO("netparse process state: {}, error: {}", state.toStdString(), error.toStdString());
|
|
|
|
|
+ });
|
|
|
|
|
+ m_timer.start(2000);
|
|
|
|
|
+
|
|
|
|
|
+ // 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, const QString &fifo)
|
|
|
|
|
+{
|
|
|
|
|
+ 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 << fifo;
|
|
|
|
|
+
|
|
|
|
|
+ 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_WARN("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, const QString &fifo)
|
|
|
|
|
+{
|
|
|
|
|
+ stop();
|
|
|
|
|
+ start(configure, fifo);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+bool NetParseProcess::isRunning()
|
|
|
|
|
+{
|
|
|
|
|
+ return m_process.state() != QProcess::NotRunning;
|
|
|
|
|
+}
|