Pārlūkot izejas kodu

change tool/view_group_grpc. fix some problem.

yuchuli 3 gadi atpakaļ
vecāks
revīzija
9a1fe760d6

+ 28 - 0
src/tool/view_group_grpc/groupqueryclient.cpp

@@ -29,6 +29,9 @@ void groupqueryclient::run()
 
     int nid = 0;
 
+    int nconstate = 0;
+    emit updatestate(nconstate);
+
     // Container for the data we expect from the server.
     iv::group::groupReply reply;
 
@@ -65,6 +68,11 @@ void groupqueryclient::run()
                 // The actual RPC.
                 Status status = stub_->queryallgroup(&context, request, &reply);
                 if (status.ok()) {
+                    if(nconstate != 1)
+                    {
+                        nconstate = 1;
+                        emit updatestate(nconstate);
+                    }
                     std::cout<<nid<<" query successfully"<<std::endl;
                     if(reply.nres() == 1)
                     {
@@ -104,11 +112,19 @@ void groupqueryclient::run()
                                     mMutexInfo.unlock();
                                 }
 
+
+
                             }
                         }
                         }
                     }
+
                 } else {
+                    if(nconstate != 0)
+                    {
+                        nconstate = 0;
+                        emit updatestate(nconstate);
+                    }
                   std::cout << status.error_code() << ": " << status.error_message()
                             << std::endl;
                   std::cout<<"RPC failed"<<std::endl;
@@ -124,6 +140,18 @@ void groupqueryclient::run()
 
                 }
 
+                mMutexInfo.lock();
+                qint64 nowtime = QDateTime::currentMSecsSinceEpoch();
+                unsigned  int j;
+                for(j=0;j<mvectorvehinfo.size();j++)
+                {
+                    if((nowtime - mvectorvehinfo[j].mnLastUpdateTime)>1000)
+                    {
+                        mvectorvehinfo.erase(mvectorvehinfo.begin()+j);
+                    }
+                }
+                mMutexInfo.unlock();
+
 
 
 

+ 3 - 0
src/tool/view_group_grpc/groupqueryclient.h

@@ -46,9 +46,12 @@ struct  vehinfo
 
 class groupqueryclient : public QThread
 {
+    Q_OBJECT
 public:
     groupqueryclient();
 
+signals:
+    void updatestate(int state);
 private:
     void run();
 

+ 70 - 2
src/tool/view_group_grpc/mainwindow.cpp

@@ -15,6 +15,8 @@ MainWindow::MainWindow(QWidget *parent)
     mpquery = new groupqueryclient();
     mpquery->start();
 
+    connect(mpquery,SIGNAL(updatestate(int)),this,SLOT(connectstateupdate(int)));
+
     QTimer * timer = new QTimer(this);
     connect(timer,SIGNAL(timeout()),this,SLOT(onTimer()));
     timer->start(100);
@@ -27,24 +29,49 @@ MainWindow::~MainWindow()
     delete ui;
 }
 
+bool MainWindow::CheckNeedUpdateCommbo()
+{
+    if(mvectoritem.size() != minfo.size())
+    {
+        return true;
+    }
+
+    bool bCheck = false;
+    unsigned int i;
+    for(i=0;i<minfo.size();i++)
+    {
+        if(mvectoritem[i] != minfo[i].strvehid)
+        {
+            bCheck = true;
+            break;
+        }
+    }
+    return bCheck;
+}
+
 void MainWindow::onTimer()
 {
     minfo = mpquery->GetVehinfo();
 
     int noldindex = ui->comboBox->currentIndex();
 
-    if(mvectoritem.size() != minfo.size())
+
+    if(CheckNeedUpdateCommbo())
     {
+        qDebug("need update combo");
         ui->comboBox->clear();
         unsigned int i;
+        mvectoritem.clear();
         for(i=0;i<minfo.size();i++)
         {
             mvectoritem.push_back(minfo[i].strvehid);
             ui->comboBox->addItem(minfo[i].strvehid.data());
         }
+        if((noldindex>=0) &&(noldindex < minfo.size()))ui->comboBox->setCurrentIndex(noldindex);
+//        else ui->comboBox->setCurrentIndex(0);
     }
 
-    if(noldindex>=0)ui->comboBox->setCurrentIndex(noldindex);
+
 
     if(mvectoritem.size() == 0)return;
 
@@ -64,11 +91,19 @@ void MainWindow::onTimer()
             ui->plainTextEdit->setPlainText(strout.data());
         }
     }
+    else
+    {
+        ui->plainTextEdit->setPlainText("");
+    }
 
     delete output;
     strout.clear();
     output = new google::protobuf::io::StringOutputStream(&strout);
 
+    ui->lineEdit_latency->setText(QString::number(minfo[index].mvehinfo.latency()));
+    ui->lineEdit_groupid->setText(QString::number(minfo[index].mvehinfo.groupid()));
+    ui->lineEdit_intragroupid->setText(QString::number(minfo[index].mvehinfo.intragroupid()));
+
     if(minfo[index].mvehinfo.has_mbrainstate())
     {
         bool success = TextFormat::Print(*(minfo[index].mvehinfo.mutable_mbrainstate()), output);
@@ -77,6 +112,10 @@ void MainWindow::onTimer()
             ui->plainTextEdit_brainstate->setPlainText(strout.data());
         }
     }
+    else
+    {
+        ui->plainTextEdit_brainstate->setPlainText("");
+    }
 
     delete output;
     strout.clear();
@@ -90,6 +129,35 @@ void MainWindow::onTimer()
             ui->plainTextEdit_decision->setPlainText(strout.data());
         }
     }
+    else
+    {
+        ui->plainTextEdit_decision->setPlainText("");
+    }
+
+    delete output;
+    strout.clear();
+    output = new google::protobuf::io::StringOutputStream(&strout);
+
 
+    if(minfo[index].mvehinfo.has_mcarstate())
+    {
+        bool success = TextFormat::Print(*(minfo[index].mvehinfo.mutable_mcarstate()), output);
+        if(success)
+        {
+            ui->plainTextEdit_carstate->setPlainText(strout.data());
+        }
+    }
+    else
+    {
+        ui->plainTextEdit_carstate->setPlainText("");
+    }
+    delete output;
+
+}
+
+void MainWindow::connectstateupdate(int nstate)
+{
+    if(nstate == 0)setWindowTitle("View Group Message | Connecting to Server");
+    else setWindowTitle("View Group Message");
 }
 

+ 6 - 0
src/tool/view_group_grpc/mainwindow.h

@@ -17,9 +17,12 @@ public:
     MainWindow(QWidget *parent = nullptr);
     ~MainWindow();
 
+
 private slots:
     void onTimer();
 
+    void connectstateupdate(int nstate);
+
 private:
     Ui::MainWindow *ui;
 
@@ -28,5 +31,8 @@ private:
     std::vector<iv::vehinfo>  minfo;
 
     std::vector<std::string> mvectoritem;
+
+private:
+    bool CheckNeedUpdateCommbo();
 };
 #endif // MAINWINDOW_H

+ 69 - 0
src/tool/view_group_grpc/mainwindow.ui

@@ -116,6 +116,75 @@
      </rect>
     </property>
    </widget>
+   <widget class="QLabel" name="label_5">
+    <property name="geometry">
+     <rect>
+      <x>333</x>
+      <y>9</y>
+      <width>131</width>
+      <height>31</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Latency(ms):</string>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="lineEdit_latency">
+    <property name="geometry">
+     <rect>
+      <x>443</x>
+      <y>9</y>
+      <width>113</width>
+      <height>31</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="lineEdit_groupid">
+    <property name="geometry">
+     <rect>
+      <x>720</x>
+      <y>10</y>
+      <width>113</width>
+      <height>31</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLabel" name="label_6">
+    <property name="geometry">
+     <rect>
+      <x>610</x>
+      <y>10</y>
+      <width>131</width>
+      <height>31</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>groupid:</string>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="lineEdit_intragroupid">
+    <property name="geometry">
+     <rect>
+      <x>1000</x>
+      <y>10</y>
+      <width>113</width>
+      <height>31</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLabel" name="label_7">
+    <property name="geometry">
+     <rect>
+      <x>890</x>
+      <y>10</y>
+      <width>131</width>
+      <height>31</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Intragroupid:</string>
+    </property>
+   </widget>
   </widget>
   <widget class="QMenuBar" name="menubar">
    <property name="geometry">