Procházet zdrojové kódy

change pilot_apollo_bridge_gui. for use gui to control apollo system.

yuchuli před 1 měsícem
rodič
revize
7cfe716b7c

+ 3 - 1
src/apollo/code/apollocontroller_shenlanfd/apollocontroller_shenlanfd.pro

@@ -79,5 +79,7 @@ LIBS += -L/usr/local/lib/ -lbvar
 
 LIBS += -L/opt/apollo/neo/lib/3rd-protobuf -lprotobuf
 
-LIBS += -L$$PWD -lshenlanfd
+
+LIBS += /opt/apollo/neo/lib/catarc/libshenlanfd.so
+#LIBS += -L$$PWD -lshenlanfd
 

+ 11 - 0
src/apollo/code/launch/apollochassis.launch

@@ -0,0 +1,11 @@
+<cyber>
+    <module>
+        <name>apollochassis</name>
+        <dag_conf></dag_conf>
+        <type>binary</type>
+        <process_name>
+            apollochassis
+        </process_name>
+        <exception_handler>respawn</exception_handler>
+    </module>
+</cyber>

+ 11 - 0
src/apollo/code/launch/apollodriver_hcp2.launch

@@ -0,0 +1,11 @@
+<cyber>
+    <module>
+        <name>apollodriver_hcp2</name>
+        <dag_conf></dag_conf>
+        <type>binary</type>
+        <process_name>
+            apollodriver_hcp2
+        </process_name>
+        <exception_handler>respawn</exception_handler>
+    </module>
+</cyber>

+ 11 - 0
src/apollo/code/launch/apollodriver_nvcan.launch

@@ -0,0 +1,11 @@
+<cyber>
+    <module>
+        <name>apollodriver_nvcan</name>
+        <dag_conf></dag_conf>
+        <type>binary</type>
+        <process_name>
+            apollodriver_nvcan
+        </process_name>
+        <exception_handler>respawn</exception_handler>
+    </module>
+</cyber>

+ 1 - 1
src/apollo/code/pilot_apollo_bridge_gui/centerview.cpp

@@ -1,7 +1,7 @@
 #include "centerview.h"
 
 
-std::string gCompClass[] = {"ADC Launch"};
+std::string gCompClass[] = {"Launch"};
 
 CenterView::CenterView(QTabWidget * pTab,ProgMon * pPM)
 {

+ 2 - 2
src/apollo/code/pilot_apollo_bridge_gui/groupunit.cpp

@@ -106,12 +106,12 @@ void GroupUnit::CreateTitle()
     int nHgt = 30;
 
     pLA = new QLabel(mpGroup);
-    pLA->setText("Module");
+    pLA->setText("Launch");
     pLA->setGeometry(nXPos,nYPos,190,nHgt);
     nXPos = nXPos + 200;
 
     pLA = new QLabel(mpGroup);
-    pLA->setText("Args");
+    pLA->setText("Module");
     pLA->setGeometry(nXPos,nYPos,290,nHgt);
     nXPos = nXPos + 300;
 

+ 25 - 1
src/apollo/code/pilot_apollo_bridge_gui/mainwindow.cpp

@@ -33,7 +33,7 @@ MainWindow::MainWindow(QWidget *parent)
     connect(&mProcStopMonitor,SIGNAL(finished(int)),this,SLOT(onProcessFinished(int)));
 
 
-    std::string strxmlpath = "";
+    std::string strxmlpath = "/apollo_workspace/code/xml/pilotlaunch.xml";
 
     //从配置文件中读取当前系统包含的所有模块信息-tjc
     mPM = new ProgMon(strxmlpath.data());
@@ -50,6 +50,9 @@ MainWindow::MainWindow(QWidget *parent)
 
     CenterView * pcv = new CenterView(p,mPM);
     mpCV = pcv;
+    connect(pcv,SIGNAL(ProgClick(ProgUnit*,ProgramViewUnit * ,bool)),this,SLOT(onProgClick(ProgUnit*,ProgramViewUnit * ,bool)));
+
+    mPM->start();
 
     setWindowTitle("Pilot Apollo Bridge GUI");
 }
@@ -204,6 +207,27 @@ void MainWindow::resizeEvent(QResizeEvent *event)
 }
 
 
+void MainWindow::onProgClick(ProgUnit *pu,ProgramViewUnit * pvu, bool bClick)
+{
+    qDebug(" %s click is  data is %d",pu->strlaunch,bClick);
+
+    pu->mbautostart = false; //if click,not need auto start.
+    if(bClick == true)
+    {
+        mPM->StartProc(pu);
+//        mPM->restartProc(pu);
+//        mPM->restartProc(pu);
+//        mPM->restartProc(pu);
+
+    }
+    else
+    {
+        mPM->StopProc(pu);
+
+    }
+}
+
+
 
 
 

+ 4 - 0
src/apollo/code/pilot_apollo_bridge_gui/mainwindow.h

@@ -39,6 +39,10 @@ private slots:
 
     void on_pushButton_StopApollo_clicked();
 
+private slots:
+
+     void onProgClick(ProgUnit * pu,ProgramViewUnit * pvu,bool bClick);
+
 private:
     Ui::MainWindow *ui;
 

+ 4 - 4
src/apollo/code/pilot_apollo_bridge_gui/procmemstat.cpp

@@ -121,7 +121,7 @@ void ProcMemStat::UpdateCPUMemStat(QString & strInfo)
     strInfo = strInfo + QString("CPU: Used ") + QString::number(fcputotal,'f',3)
             +QString(" Irq Used : ")+ QString::number(firqtotal,'f',3)
             +QString(" Core Count: ")+QString::number(ncpunum)+QString("\n");
-    std::cout<<"  CPU: Used "<<fcputotal<<" Irq used: "<<firqtotal<<"  Core Count: "<<ncpunum<<std::endl;
+//    std::cout<<"  CPU: Used "<<fcputotal<<" Irq used: "<<firqtotal<<"  Core Count: "<<ncpunum<<std::endl;
 
     unsigned int i;
     for(i=0;i<ncpunum;i++)
@@ -129,7 +129,7 @@ void ProcMemStat::UpdateCPUMemStat(QString & strInfo)
         strInfo = strInfo + QString("      core ")+QString::number(i)
                 +QString("  Used: ")+ QString::number(fVectorCPU[i],'f',3)
                 +QString(" Irq used: ") + QString::number(fVectorIrq[i],'f',3)+QString("\n");
-        std::cout<<"        core "<<i<<" Used: "<<fVectorCPU[i]<<" Irq used: "<<fVectorIrq[i]<<std::endl;
+//        std::cout<<"        core "<<i<<" Used: "<<fVectorCPU[i]<<" Irq used: "<<fVectorIrq[i]<<std::endl;
     }
 
     QFile xFileMem;
@@ -147,7 +147,7 @@ void ProcMemStat::UpdateCPUMemStat(QString & strInfo)
             {
                 qint64 memtotal = QString(baitem[1]).toLongLong()/1024;
                 strInfo = strInfo + QString("Mem Total: ") + QString::number(memtotal)+ QString(" MB\n");
-                std::cout<<"    Mem Total "<< memtotal<<" MB"<<std::endl;
+//                std::cout<<"    Mem Total "<< memtotal<<" MB"<<std::endl;
             }
             strline = QString(xlist.at(1));
             baitem = strline.split(QRegExp("[\t ,;]+"));
@@ -155,7 +155,7 @@ void ProcMemStat::UpdateCPUMemStat(QString & strInfo)
             {
                 qint64 memfree = QString(baitem[1]).toLongLong()/1024;
                 strInfo = strInfo + QString("Mem Free: ") + QString::number(memfree)+ QString(" MB\n");
-                std::cout<<"    Mem Free "<< memfree<<" MB"<<std::endl;
+ //               std::cout<<"    Mem Free "<< memfree<<" MB"<<std::endl;
             }
         }
 

+ 31 - 57
src/apollo/code/pilot_apollo_bridge_gui/progmon.cpp

@@ -126,11 +126,13 @@ std::vector<ProgUnit> ProgMon::loadprogunit(std::string path)
         QDomElement e = n.toElement(); // 尝试将节点转换为元素
         std::string name = e.nodeName().toStdString();
 
-        if(name == "module")
+        if(name == "launch")
         {
-            std::string appname = e.attribute("app","").toStdString();
+
+ //           std::cout<<" have a launch"<<std::endl;
+            std::string launchname = e.attribute("launch","").toStdString();
             std::string strdir = e.attribute("dir","").toStdString();
-            std::string strargs = e.attribute("args","").toStdString();
+            std::string strmodulename = e.attribute("moudulename","").toStdString();
             std::string strbstart = e.attribute("autostart","false").toStdString();
             std::string strgroup = e.attribute("group","unknown").toStdString();
             std::string strsavestd = e.attribute("savestd","false").toStdString();
@@ -139,8 +141,8 @@ std::vector<ProgUnit> ProgMon::loadprogunit(std::string path)
             if(strbstart == "true")x.mbautostart = true;
             else x.mbautostart = false;
             x.strappdir = strdir;
-            x.strappname = appname;
-            x.strargs = strargs;
+            x.strlaunch = launchname;
+            x.strmodulename = strmodulename;
             x.strgroup = strgroup;
             x.mProcess = 0;
             x.mbSavestdout = false;
@@ -148,7 +150,7 @@ std::vector<ProgUnit> ProgMon::loadprogunit(std::string path)
 
 
 
-            if(x.strappname.length() > 0)
+            if(x.strlaunch.length() > 0)
             {
                 x.strcmd = x.strappdir;
                 if(x.strcmd.length()<1)
@@ -162,12 +164,12 @@ std::vector<ProgUnit> ProgMon::loadprogunit(std::string path)
                         x.strcmd.append("/");
                     }
                 }
-                x.strcmd.append(x.strappname);
-                if(x.strargs.length() > 0)
-                {
-                    x.strcmd.append(" ");
-                    x.strcmd.append(x.strargs);
-                }
+                x.strcmd.append(x.strlaunch);
+//                if(x.strargs.length() > 0)
+//                {
+//                    x.strcmd.append(" ");
+//                    x.strcmd.append(x.strargs);
+//                }
 
 
                 xvectorprog.push_back(x);
@@ -296,7 +298,7 @@ void ProgMon::onProcessErrorStarted(QProcess::ProcessError error){
                 //未知错误 启动失败
                 code = 0x0002;
             }
-            desc = mvectorprog.at(i).strappname + ":FailedToStart";
+            desc = mvectorprog.at(i).strlaunch + ":FailedToStart";
             //记录故障状态,模块启动失败
  //           ivfault->SetFaultState(2,code,desc.c_str());
         }
@@ -360,7 +362,7 @@ void ProgMon::onProcessEnd()
 
             if(mbquit)
             {
-                std::cout<<"Program "<<pu->strappname<<" quit."<<std::endl;
+                std::cout<<"Program "<<pu->strlaunch<<" quit."<<std::endl;
                 break;
             }
 
@@ -471,7 +473,7 @@ ProgUnit * ProgMon::FindProcByName(std::string strappname, std::string strargs)
         ProgUnit * putem = &mvectorprog.at(i);
         if(strargs.size()<1)
         {
-            if(strappname == putem->strappname)
+            if(strappname == putem->strlaunch)
             {
                 pu = putem;
                 break;
@@ -479,7 +481,7 @@ ProgUnit * ProgMon::FindProcByName(std::string strappname, std::string strargs)
         }
         else
         {
-            if((strappname == putem->strappname)&&(strargs == putem->strargs))
+            if((strappname == putem->strlaunch)&&(strargs == putem->strmodulename))
             {
                 pu = putem;
                 break;
@@ -524,24 +526,12 @@ void ProgMon::StartProc(ProgUnit *pu)
 {
     if(pu->mbRun)
     {
-        qDebug("process %s is running. not need start.",pu->strappname.data());
+        qDebug("process %s is running. not need start.",pu->strlaunch.data());
         return;
     }
     pu->mProcess = new QProcess(this);
 
-
-    connect(pu->mProcess,SIGNAL(started()),this,SLOT(onProcessStarted()));
-    connect(pu->mProcess,SIGNAL(finished(int)),this,SLOT(onProcessEnd()));
-//    connect(pu->mProcess,SIGNAL(readyRead()),this,SLOT(onChRead()));
-    connect(pu->mProcess,SIGNAL(readyReadStandardOutput()),this,SLOT(onReadStandardOutput()));
-    connect(pu->mProcess,SIGNAL(readyReadStandardError()),this,SLOT(onReadStandardError()));
-
-
-    connect(pu->mProcess,SIGNAL(error(QProcess::ProcessError)),this,SLOT(onProcessErrorStarted(QProcess::ProcessError)));
-
-
-
-    pu->mProcess->start(pu->strcmd.data());
+    pu->mProcess->start("cyber_launch",QStringList() << "start"<<pu->strcmd.data());
     pu->state = 1;
 
 
@@ -563,29 +553,13 @@ void ProgMon::StopProc(ProgUnit *pu)
 {
     if(pu == 0)return;
     if(pu->mProcess == 0)return;
-    if(!pu->mbRun)
-    {
-        qDebug("process %s is not running. not need stop.",pu->strappname.data());
-        return;
-    }
-    pu->mProcess->terminate();
-    std::this_thread::sleep_for(std::chrono::milliseconds(300));
-    pu->mProcess->kill();
-
-    if(!checkStartState(pu)){
-        return;
-    }
-
-    //modify tjc
-    //发送dbus信号使程序退出
-    QDBusMessage msg = QDBusMessage::createSignal("/catarc/adc",  "adciv.sys.stop.interface", pu->strappname.data());
-    QDBusConnection::sessionBus().send(msg);
-//    ivlog->info("dispatch %s exit", pu->strappname.c_str());
-    pu->state = 0;
-    emit checkExit(pu);
+    std::cout<<" stop launch "<<pu->strcmd<<std::endl;
+    pu->mProcess = new QProcess(this);
+    pu->mProcess->start("cyber_launch",QStringList() << "stop"<<pu->strcmd.data());
 }
 
 void ProgMon::ForceStopProc(ProgUnit *pu){
+    std::cout<<" force stop."<<std::endl;
     if(pu == 0)return;
     if(pu->mProcess == 0)return;
     pu->mProcess->kill();
@@ -597,7 +571,7 @@ void ProgMon::ForceStopProc(ProgUnit *pu){
 
     //modify tjc
     //发送dbus信号使程序退出
-    QDBusMessage msg = QDBusMessage::createSignal("/catarc/adc",  "adciv.sys.stop.interface", pu->strappname.data());
+    QDBusMessage msg = QDBusMessage::createSignal("/catarc/adc",  "adciv.sys.stop.interface", pu->strlaunch.data());
     QDBusConnection::sessionBus().send(msg);
 //    ivlog->info("dispatch %s exit", pu->strappname.c_str());
     pu->state = 0;
@@ -744,8 +718,8 @@ void ProgMon::threaderrout()
                     ProgUnit *pu = &(mvectorprog.at(j));
                     if(xvectorerrout[i].mpProc == pu->mProcess)
                     {
-                        strappname =  pu->strappname;
-                        strarg = pu->strargs;
+                        strappname =  pu->strlaunch;
+                        strarg = pu->strmodulename;
                         bFind = true;
                         break;
                     }
@@ -861,8 +835,8 @@ void ProgMon::threadstdout()
                     ProgUnit *pu = &(mvectorprog.at(j));
                     if(xvectorstdout[i].mpProc == pu->mProcess)
                     {
-                        strappname =  pu->strappname;
-                        strarg = pu->strargs;
+                        strappname =  pu->strlaunch;
+                        strarg = pu->strmodulename;
                         bFind = true;
                         bSave = pu->mbSavestdout;
                         break;
@@ -939,8 +913,8 @@ void ProgMon::LogError(QProcess *proc, QByteArray &ba)
         ProgUnit *pu = &(mvectorprog.at(i));
         if(proc == pu->mProcess)
         {
-            strappname =  pu->strappname;
-            strarg = pu->strargs;
+            strappname =  pu->strlaunch;
+            strarg = pu->strmodulename;
             bFind = true;
             break;
         }

+ 6 - 6
src/apollo/code/pilot_apollo_bridge_gui/programviewunit.cpp

@@ -9,16 +9,16 @@ ProgramViewUnit::ProgramViewUnit(QGroupBox * pGroup,ProgUnit * pu, int x,int y)
     int nXPos = x;
     int nHgt = 30;
     pLabel = new QLabel(pGroup);
-    pLabel->setText(pu->strappname.data());
-    pLabel->setGeometry(nXPos,y,190,nHgt);
-    nXPos = nXPos + 200;
+    pLabel->setText(pu->strlaunch.data());
+    pLabel->setGeometry(nXPos,y,290,nHgt);
+    nXPos = nXPos + 300;
 
 
     pLE = new QLineEdit(pGroup);
-    pLE->setText(pu->strargs.data());
+    pLE->setText(pu->strmodulename.data());
     pLE->setReadOnly(true);
-    pLE->setGeometry(nXPos,y,290,nHgt);
-    nXPos = nXPos + 300;
+    pLE->setGeometry(nXPos,y,190,nHgt);
+    nXPos = nXPos + 200;
 
     pswitch = new SwitchButton(pGroup);
     pswitch->setGeometry(nXPos,y,90,nHgt);

+ 4 - 4
src/apollo/code/pilot_apollo_bridge_gui/progunit.h

@@ -16,12 +16,12 @@ class ProgUnit
 {
 public:
 
-    /* App Name */
-    std::string strappname;
+    /* Launch Name */
+    std::string strlaunch;
     /* App Directory */
     std::string strappdir;
-    /* App Arg */
-    std::string strargs;
+    /* App modulename */
+    std::string strmodulename;
     /* Is Auto Start */
     bool mbautostart;
     /* App Execution Command */

+ 7 - 0
src/apollo/code/xml/pilotlaunch.xml

@@ -0,0 +1,7 @@
+<xml>
+ <setting defaultpath="/apollo_workspace/code/launch"/>
+ <launch autostart="false" dir="" module="apollocontroller_shenlanfd" launch="apollocontroller_shenlanfd.launch" group="Launch"/>
+ <launch autostart="false" dir="" module="apollochassis" launch="apollochassis.launch" group="Launch"/>
+ <launch autostart="false" dir="" module="apollodriver_hcp2" launch="apollodriver_hcp2.launch" group="Launch"/>
+ <launch autostart="false" dir="" module="apollodriver_nvcan" launch="apollodriver_nvcan.launch" group="Launch"/>
+</xml>

+ 1 - 1
src/tool/IVSysMan/mainwindow.cpp

@@ -81,7 +81,7 @@ MainWindow::MainWindow(QWidget *parent) :
 
     QTimer * timer = new QTimer(this);
     connect(timer,SIGNAL(timeout()),this,SLOT(onTimerState()));
-    timer->start(1000);
+//    timer->start(1000);
 
     QTimer * timer2 = new QTimer(this);
     connect(timer2,SIGNAL(timeout()),this,SLOT(onTimerTestChangeXML()));