Эх сурвалжийг харах

change RemoteCtrl_Thread_plugin.

yuchuli 3 жил өмнө
parent
commit
23766b4dda

+ 2 - 2
src/plugin/common/mainwindow_plugin.cpp

@@ -34,10 +34,10 @@ void MainWindow_plugin::onPlugMsg(const char *strdata, const unsigned int nSize,
     (void)dt;
     (void)strmemname;
     iv::plugin::plugmsg xplugmsg;
-//    std::cout<<"onPlugMsg"<<std::endl;
+    std::cout<<"onPlugMsg"<<std::endl;
     if(xplugmsg.ParseFromArray(strdata,nSize))
     {
-//        std::cout<<"signal "<<std::endl;
+        std::cout<<"signal "<<std::endl;
         mMutexPlug.lock();
         mplugmsg.CopyFrom(xplugmsg);
         mMutexPlug.unlock();

+ 22 - 5
src/plugin/common/pluginapp.cpp

@@ -25,11 +25,9 @@ pluginapp::pluginapp(WId parentwinid, QString cid,QString strappname,const char
    xarg.push_back(QString::number(parentwinid));
    xarg.push_back(cid);
    mproc->start(strapppath,xarg);
-
-
-
 }
 
+
 pluginapp::~pluginapp()
 {
     iv::modulecomm::Unregister(mpa);
@@ -52,7 +50,7 @@ void pluginapp::SetAttr(const char *strattr, const char *strvalue, const int nva
 
     if(mbStarted == false)
     {
-        std::cout<<"push to vector"<<std::endl;
+//        std::cout<<"push to vector"<<std::endl;
         mvectormsg.push_back(xmsg);
         return;
     }
@@ -76,27 +74,46 @@ void pluginapp::onReadStandardOut()
     std::cout<<ba.data()<<std::endl;
 }
 
+void pluginapp::onReadStandarError()
+{
+    QProcess * proc = (QProcess *)sender();
+    QByteArray ba = proc->readAllStandardOutput();
+    std::cerr<<ba.data()<<std::endl;
+}
+
 void pluginapp::onProcStarted()
 {
     mpTimer = new QTimer(this);
     connect(mpTimer,SIGNAL(timeout()),this,SLOT(onTimer()));
     mpTimer->start(1000);
 
+    emit signalProcStarted();
+
     std::cout<<"started."<<std::endl;
 
 }
 
+void pluginapp::onProcStoped()
+{
+    emit signalProcStoped();
+}
+
 void pluginapp::onTimer()
 {
+    static int nCount = 0;
+    nCount++;
+    if(nCount <1)return;
+
     mpTimer->stop();
     mbStarted = true;
     if(mvectormsg.size()>0)
     {
-        std::cout<<"write msg"<<std::endl;
+//        std::cout<<"write msg"<<std::endl;
         unsigned int i;
         for(i=0;i<mvectormsg.size();i++)
         {
             SetAttr(mvectormsg[i].strattr().data(),mvectormsg[i].strvalue().data(),mvectormsg[i].strvalue().size());
+            QThread::msleep(1);
         }
         mvectormsg.clear();
     }

+ 7 - 0
src/plugin/common/pluginapp.h

@@ -22,9 +22,16 @@ private:
 
     std::vector<iv::plugin::plugmsg> mvectormsg;
 
+signals:
+    void signalProcStarted();
+    void signalProcStoped();
+
 private slots:
     void onReadStandardOut();
+    void onReadStandarError();
     void onProcStarted();
+    void onProcStoped();
+
     void onTimer();
 
 

+ 28 - 8
src/plugin/plugin_fourpicshow/main.cpp

@@ -1,21 +1,41 @@
 #include "mainwindow.h"
 
 #include <QApplication>
+#include <QWindow>
 
 int main(int argc, char *argv[])
 {
     if(argc == 3)
-     {
-        qDebug("argc == 3");
-         QApplication a(argc, argv);
+    {
+        QApplication a(argc, argv);
+        QString strcid = argv[2];
+        MainWindow w(strcid);
+        WId wid = WId(QString(argv[1]).toInt());//通过参数列表获取父进程窗口的WinId
+        if(wid == 0)
+        {
+            w.show();
+        }
+        else
+        {
+            QWindow *window = QWindow::fromWinId(wid);//获取父进程窗口
 
-         QString strcid = argv[2];
-         MainWindow w(strcid);
-         w.show();//最后调用show,提前调用qt会为其生成窗口控件,这样就会和你原本想要嵌入进的父进程界面产生冲突
+            if(window == NULL)
+            {
+                w.show();
+            }
+            else
+            {
+                w.setProperty("_q_embedded_native_parent_handle", QVariant(wid));//设置属性,这句是必须的
+                w.winId();//必须调用一次,生成winId
+                w.windowHandle()->setParent(window);//设置父窗口
+                w.show();//最后调用show,提前调用qt会为其生成窗口控件,这样就会和你原本想要嵌入进的父进程界面产生冲突
+                fprintf(stderr, "%lld", w.winId());//写入标准错误输出,stderr能立即输出,stdout则不行
+            }
+        }
 
+        return a.exec();
+    }
 
-         return a.exec();
-     }
     QApplication a(argc, argv);
     MainWindow w("");
     w.show();

+ 8 - 12
src/plugin/plugin_fourpicshow/mainwindow.cpp

@@ -8,25 +8,21 @@ MainWindow::MainWindow(QString strcid,QWidget *parent)
     ui->setupUi(this);
     MainWindow_plugin::Init(strcid,"plugin_fourpicshow");
 
-    mppicshowCenter = new pluginapp(this->winId(),"four_front","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
+    mppicshowCenter = new pluginapp(this->winId(),"four_front","plugin_picshow");//,"/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
     mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
 
-    mppicshowLeft = new pluginapp(this->winId(),"four_left","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
+
+    mppicshowLeft = new pluginapp(this->winId(),"four_left","plugin_picshow");//,"/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
     mppicshowLeft->SetAttr("rawpicmsgname","picleft",strnlen("picleft",256));
-    mppicshowLeft->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
-    mppicshowLeft->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
 
-    mppicshowRight = new pluginapp(this->winId(),"four_right","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
+
+    mppicshowRight = new pluginapp(this->winId(),"four_right","plugin_picshow");//,"/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
     mppicshowRight->SetAttr("rawpicmsgname","picright",strnlen("picright",256));
-    mppicshowRight->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
-    mppicshowRight->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
 
-    mppicshowRear = new pluginapp(this->winId(),"four_rear","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
+
+    mppicshowRear = new pluginapp(this->winId(),"four_rear","plugin_picshow");//,"/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
     mppicshowRear->SetAttr("rawpicmsgname","picright",strnlen("picright",256));
-    mppicshowRear->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
-    mppicshowRear->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
+
 
 }
 

+ 29 - 22
src/plugin/plugin_picshow/main.cpp

@@ -7,29 +7,36 @@
 int main(int argc, char *argv[])
 {
     if(argc == 3)
-     {
-        qDebug("argc == 3");
-         QApplication a(argc, argv);
+    {
+        QApplication a(argc, argv);
+        QString strcid = argv[2];
+        MainWindow w(strcid);
+        WId wid = WId(QString(argv[1]).toInt());//通过参数列表获取父进程窗口的WinId
+        if(wid == 0)
+        {
+            w.show();
+        }
+        else
+        {
+            QWindow *window = QWindow::fromWinId(wid);//获取父进程窗口
+
+            if(window == NULL)
+            {
+                w.show();
+            }
+            else
+            {
+                w.setProperty("_q_embedded_native_parent_handle", QVariant(wid));//设置属性,这句是必须的
+                w.winId();//必须调用一次,生成winId
+                w.windowHandle()->setParent(window);//设置父窗口
+                w.show();//最后调用show,提前调用qt会为其生成窗口控件,这样就会和你原本想要嵌入进的父进程界面产生冲突
+                fprintf(stderr, "%lld", w.winId());//写入标准错误输出,stderr能立即输出,stdout则不行
+            }
+        }
+
+        return a.exec();
+    }
 
-         QString strcid = argv[2];
-         MainWindow w(strcid);
-//         w.show();
-         //end
-
-         WId wid = WId(QString(argv[1]).toInt());//通过参数列表获取父进程窗口的WinId
-         QWindow *window = QWindow::fromWinId(wid);//获取父进程窗口
-
-         w.setProperty("_q_embedded_native_parent_handle", QVariant(wid));//设置属性,这句是必须的
-
-         w.winId();//必须调用一次,生成winId
-         w.windowHandle()->setParent(window);//设置父窗口
-         w.show();//最后调用show,提前调用qt会为其生成窗口控件,这样就会和你原本想要嵌入进的父进程界面产生冲突
-//         w.setGeometry(100,30,600,600);
-
-         fprintf(stderr, "%lld", w.winId());//写入标准错误输出,stderr能立即输出,stdout则不行
-
-         return a.exec();
-     }
     QApplication a(argc, argv);
     MainWindow w("");
     w.show();

+ 1 - 1
src/plugin/plugin_picshow/mainwindow.cpp

@@ -110,7 +110,7 @@ void MainWindow::ProcPlugMsg(iv::plugin::plugmsg & xplugmsg)
 
     if(xplugmsg.strattr() == "rawpicmsgname")
     {
- //       std::cout<<"rawpic msg"<<std::endl;
+        std::cout<<"rawpic msg name:"<<xplugmsg.strvalue()<<std::endl;
         if(xplugmsg.strvalue() != mstrrawpicmsgname)
         {
             mstrrawpicmsgname = xplugmsg.strvalue();

+ 28 - 8
src/plugin/plugin_threepicshow/main.cpp

@@ -1,21 +1,41 @@
 #include "mainwindow.h"
 
 #include <QApplication>
+#include <QWindow>
 
 int main(int argc, char *argv[])
 {
     if(argc == 3)
-     {
-        qDebug("argc == 3");
-         QApplication a(argc, argv);
+    {
+        QApplication a(argc, argv);
+        QString strcid = argv[2];
+        MainWindow w(strcid);
+        WId wid = WId(QString(argv[1]).toInt());//通过参数列表获取父进程窗口的WinId
+        if(wid == 0)
+        {
+            w.show();
+        }
+        else
+        {
+            QWindow *window = QWindow::fromWinId(wid);//获取父进程窗口
 
-         QString strcid = argv[2];
-         MainWindow w(strcid);
-         w.show();//最后调用show,提前调用qt会为其生成窗口控件,这样就会和你原本想要嵌入进的父进程界面产生冲突
+            if(window == NULL)
+            {
+                w.show();
+            }
+            else
+            {
+                w.setProperty("_q_embedded_native_parent_handle", QVariant(wid));//设置属性,这句是必须的
+                w.winId();//必须调用一次,生成winId
+                w.windowHandle()->setParent(window);//设置父窗口
+                w.show();//最后调用show,提前调用qt会为其生成窗口控件,这样就会和你原本想要嵌入进的父进程界面产生冲突
+                fprintf(stderr, "%lld", w.winId());//写入标准错误输出,stderr能立即输出,stdout则不行
+            }
+        }
 
+        return a.exec();
+    }
 
-         return a.exec();
-     }
     QApplication a(argc, argv);
     MainWindow w("");
     w.show();

+ 5 - 9
src/plugin/plugin_threepicshow/mainwindow.cpp

@@ -8,20 +8,16 @@ MainWindow::MainWindow(QString strcid,QWidget *parent)
     ui->setupUi(this);
     MainWindow_plugin::Init(strcid,"plugin_threepicshow");
 
-    mppicshowCenter = new pluginapp(this->winId(),"big_center","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
+    mppicshowCenter = new pluginapp(this->winId(),"big_center","plugin_picshow");//,"/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
     mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
 
-    mppicshowLeft = new pluginapp(this->winId(),"big_left","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
+
+    mppicshowLeft = new pluginapp(this->winId(),"big_left","plugin_picshow");//,"/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
     mppicshowLeft->SetAttr("rawpicmsgname","picleft",strnlen("picleft",256));
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
 
-    mppicshowRight = new pluginapp(this->winId(),"big_right","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
+    mppicshowRight = new pluginapp(this->winId(),"big_right","plugin_picshow");//,"/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
     mppicshowRight->SetAttr("rawpicmsgname","picright",strnlen("picright",256));
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
-    mppicshowCenter->SetAttr("rawpicmsgname","picfront",strnlen("picfront",256));
+
 
 }
 

+ 10 - 0
src/tool/RemoteCtrl_Thread_plugin/main.cpp

@@ -15,6 +15,11 @@ std::string gstrmem_pic[CAMERA_NUM];
 std::string gstryaml_path;
 std::string gstrjoy_path;
 
+std::string gstrbaidupath;
+std::string gstrpicshowpath;
+std::string gstrthreepicshowpath;
+std::string gstrfourpicshowpath;
+
 std::vector<iv::pos_def> gvectorpos;
 
 
@@ -68,6 +73,11 @@ int main(int argc, char *argv[])
     gstrjoy_path = xp.GetParam("joypath","/dev/input/js0");
     gstryaml_path = xp.GetParam("yamlpath","./driver_cloud_grpc_pc.yaml");
 
+    gstrbaidupath = xp.GetParam("baidumapapp","");
+    gstrpicshowpath = xp.GetParam("picshowapp","");
+    gstrthreepicshowpath = xp.GetParam("threepicshow","");
+    gstrfourpicshowpath = xp.GetParam("fourpicshow","") ;
+
     LoadPos("pos.txt");
 
     MainWindow w;

+ 17 - 12
src/tool/RemoteCtrl_Thread_plugin/mainwindow.cpp

@@ -20,6 +20,11 @@ extern std::string gstrmem_pic[CAMERA_NUM];
 extern std::vector<iv::pos_def> gvectorpos;
 extern std::string gstryaml_path;
 
+extern std::string gstrbaidupath;
+extern std::string gstrpicshowpath;
+extern std::string gstrthreepicshowpath;
+extern std::string gstrfourpicshowpath;
+
 class xodrobj
 {
 public:
@@ -191,8 +196,8 @@ MainWindow::MainWindow(QWidget *parent)
 
 
 
-    mpbaiduapp = new pluginapp(this->winId(),"baidu","baidumapshow","/home/yuchuli/qt/modularization/src/plugin/build-baidumapshow-Debug");
-    mppicshow = new pluginapp(this->winId(),"main","plugin_picshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_picshow-Debug");
+    mpbaiduapp = new pluginapp(this->winId(),"baidu","baidumapshow",gstrbaidupath.data());//,"/home/yuchuli/qt/modularization/src/plugin/build-baidumapshow-Debug");
+    mppicshow = new pluginapp(this->winId(),"main","plugin_picshow",gstrpicshowpath.data());
 
     mppicshow->SetAttr("rawpicmsgname",gstrmem_pic[0].data(),gstrmem_pic[0].size());
 
@@ -265,11 +270,11 @@ void MainWindow::resizeEvent(QResizeEvent *event)
 
  //   mmyview->setGeometry(10+sizemain.width()/2+10,10,sizemain.width()/2-30,sizemain.height()*3/5);
 
-    mppicshow->SetGeometry(10+sizemain.width()/2+10,10,sizemain.width()/2-30,sizemain.height()*3/5);
+    mppicshow->SetGeometry(10+sizemain.width()/2+10,30,sizemain.width()/2-30,sizemain.height()*3/5);
 
-    ui->lineEdit_lat->setGeometry(sizemain.width()-100,10,90,30);
-    ui->lineEdit_lon->setGeometry(sizemain.width()-100,50,90,30);
-    ui->pushButton_test->setGeometry(sizemain.width()-100,90,90,30);
+//    ui->lineEdit_lat->setGeometry(sizemain.width()-100,10,90,30);
+//    ui->lineEdit_lon->setGeometry(sizemain.width()-100,50,90,30);
+//    ui->pushButton_test->setGeometry(sizemain.width()-100,90,90,30);
 
 //    mpWheel->setGeometry(sizemain.width()/2 + 20,10,200,200);
 
@@ -345,11 +350,11 @@ void MainWindow::resizeEvent(QResizeEvent *event)
 
 void MainWindow::on_pushButton_test_clicked()
 {
-    double flat = ui->lineEdit_lat->text().toDouble();
-    double flon = ui->lineEdit_lon->text().toDouble();
+//    double flat = ui->lineEdit_lat->text().toDouble();
+//    double flon = ui->lineEdit_lon->text().toDouble();
 
-    char strscript[256];
-    snprintf(strscript,255,"theLocation(%11.7f,%11.7f);",flon,flat);
+//    char strscript[256];
+//    snprintf(strscript,255,"theLocation(%11.7f,%11.7f);",flon,flat);
 
 }
 
@@ -786,7 +791,7 @@ void MainWindow::on_radioButton_picright_clicked()
 
 void MainWindow::on_pushButton_AllPic_clicked()
 {
-    pluginapp * pa  = new pluginapp(this->winId(),"main","plugin_fourpicshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_fourpicshow-Debug");
+    pluginapp * pa  = new pluginapp(0,"main","plugin_fourpicshow",gstrfourpicshowpath.data());
 
 }
 
@@ -827,7 +832,7 @@ void MainWindow::saveavi(int index)
 
 void MainWindow::on_pushButton_big_clicked()
 {
-    pluginapp * pa  = new pluginapp(this->winId(),"main","plugin_threepicshow","/home/yuchuli/qt/modularization/src/plugin/build-plugin_threepicshow-Debug");
+    pluginapp * pa  = new pluginapp(0,"main","plugin_threepicshow",gstrthreepicshowpath.data());
 
     return;
 

+ 0 - 33
src/tool/RemoteCtrl_Thread_plugin/mainwindow.ui

@@ -18,39 +18,6 @@
     <normaloff>:/remotectrl.png</normaloff>:/remotectrl.png</iconset>
   </property>
   <widget class="QWidget" name="centralwidget">
-   <widget class="QLineEdit" name="lineEdit_lat">
-    <property name="geometry">
-     <rect>
-      <x>940</x>
-      <y>50</y>
-      <width>113</width>
-      <height>25</height>
-     </rect>
-    </property>
-   </widget>
-   <widget class="QLineEdit" name="lineEdit_lon">
-    <property name="geometry">
-     <rect>
-      <x>940</x>
-      <y>110</y>
-      <width>113</width>
-      <height>25</height>
-     </rect>
-    </property>
-   </widget>
-   <widget class="QPushButton" name="pushButton_test">
-    <property name="geometry">
-     <rect>
-      <x>950</x>
-      <y>190</y>
-      <width>89</width>
-      <height>25</height>
-     </rect>
-    </property>
-    <property name="text">
-     <string>Test</string>
-    </property>
-   </widget>
    <widget class="QGroupBox" name="groupBox_rem">
     <property name="geometry">
      <rect>