Forráskód Böngészése

change Remotectrl_stream. add frmerate.

yuchuli 4 éve
szülő
commit
59b0367872

+ 12 - 1
src/driver/driver_cloud_grpc_pc_stream/grpcpc.cpp

@@ -26,6 +26,11 @@ grpcpc::grpcpc(std::string stryamlpath)
 }
 
 
+void grpcpc::setframerate(float framerate)
+{
+    mframerate = framerate;
+}
+
 void grpcpc::threadsend(std::shared_ptr<::grpc::ClientReaderWriter<iv::queryReqStream, iv::queryReplyStream> > writer, bool *pbrun)
 {
     int nctrlsize = mvectorctrlmsgunit.size();
@@ -87,6 +92,7 @@ void grpcpc::threadsend(std::shared_ptr<::grpc::ClientReaderWriter<iv::queryReqS
 
             request.set_strquerymd5(gstrqueryMD5);
             request.set_strvin(gstrVIN);
+
 //            request.set_ntime(QDateTime::currentMSecsSinceEpoch());
             request.set_ntype(0);
 
@@ -100,7 +106,7 @@ void grpcpc::threadsend(std::shared_ptr<::grpc::ClientReaderWriter<iv::queryReqS
 
 //                    request.set_id(nctrlid);nctrlid++;
                     request.set_strctrlmd5(gstrctrlMD5);
-
+                    request.set_nsuggestframerate(mframerate);
                     request.set_xdata(pvectordata.data(),pvectordata.size());
                     request.set_bimportant(bImportant);
                     request.set_kepptime(nkeeptime);
@@ -338,3 +344,8 @@ std::string grpcpc::GetVIN()
 {
     return gstrVIN;
 }
+
+float grpcpc::getframerate()
+{
+    return mframerate;
+}

+ 4 - 1
src/driver/driver_cloud_grpc_pc_stream/grpcpc.h

@@ -73,7 +73,7 @@ private:
     std::string gstrctrlMD5 = "5d41402abc4b2a76b9719d911017c592";
 
 
-
+    float mframerate = 0.0;
 
     int gindex = 0;
 
@@ -87,6 +87,9 @@ public:
     std::string GetVIN();
     void threadsend(std::shared_ptr<::grpc::ClientReaderWriter<iv::queryReqStream, iv::queryReplyStream> > writer,bool * pbrun);
 
+    void setframerate(float framerate);
+    float getframerate();
+
 
 };
 

+ 23 - 4
src/driver/driver_cloud_grpc_server_stream/main.cpp

@@ -35,7 +35,7 @@ static pcmsgbuffer gpcmsgbuf;
 
 
 void uploadsend(::grpc::ServerReaderWriter<iv::UploadReplyStream, iv::UploadRequestStream>* stream,bool * pbrun,
-                std::string * pstrvin,std::string * pstrmd5,bool *pbUpdatemd4orvin,QMutex * pmutex)
+                std::string * pstrvin,std::string * pstrmd5,bool *pbUpdatemd4orvin,QMutex * pmutex,int * preqid,qint64 * pnsendtime,QMutex * pmutexidtime)
 {
     std::string strvin;
     std::string strmd5;
@@ -60,16 +60,23 @@ void uploadsend(::grpc::ServerReaderWriter<iv::UploadReplyStream, iv::UploadRequ
 
         int id;
         qint64 ntime;
+        float framerate;
 
         std::vector<char > xvectorctrldata;
 
-        int nres = gpcmsgbuf.getmsg(strvin,strmd5,id,ntime,&xvectorctrldata);
+        int nres = gpcmsgbuf.getmsg(strvin,strmd5,id,ntime,&xvectorctrldata,&framerate);
 
         iv::UploadReplyStream reply;
+
+        pmutexidtime->lock();
+        reply.set_nreqsendtime(*pnsendtime);
+        reply.set_nreqid(*preqid);
+        pmutexidtime->unlock();
         if(nres == 1)
         {
             reply.set_nres(nres);
             reply.set_xdata(xvectorctrldata.data(),xvectorctrldata.size());
+            reply.set_framerate(framerate);
             stream->Write(reply);
             nlastsend = xTime.elapsed();
         }
@@ -78,7 +85,9 @@ void uploadsend(::grpc::ServerReaderWriter<iv::UploadReplyStream, iv::UploadRequ
             if(abs(xTime.elapsed() - nlastsend)>1000)
             {
                 reply.set_nres(nres);
+                reply.set_framerate(0);
                 stream->Write(reply);
+
                 nlastsend = xTime.elapsed();
             }
         }
@@ -125,6 +134,7 @@ void queryctrlsend(::grpc::ServerReaderWriter<iv::queryReplyStream, iv::queryReq
         reply.set_nres(nres);
         if(nres > 0)
         {
+
             reply.set_xdata(xvectorquerydata.data(),xvectorquerydata.size());
             reply.set_id(id);
             reply.set_ntime(ntime);
@@ -158,8 +168,14 @@ class UploadServiceImpl final : public iv::UploadStream::Service {
       std::string strvin = "aaa";
       bool bUpdatemd4orvin = false;
       QMutex uploadmutex;
-      std::thread * pthread = new std::thread(uploadsend,stream,&brun,&strvin,&strctrlmd5,&bUpdatemd4orvin,&uploadmutex);
+      int reqid = -1;
+      qint64 pnsendtime = 0;
+      QMutex mutexidtime;
+      std::thread * pthread = new std::thread(uploadsend,stream,&brun,&strvin,&strctrlmd5,&bUpdatemd4orvin,&uploadmutex,
+                                              &reqid,&pnsendtime,&mutexidtime);
       std::cout<<"new connect."<<std::endl;
+
+
       while (stream->Read(&request))
       {
           std::cout<<" rec req."<<std::endl;
@@ -180,6 +196,9 @@ class UploadServiceImpl final : public iv::UploadStream::Service {
               memcpy(xvectordata.data(),request.xdata().data(),request.xdata().size());
           }
 
+          reqid = request.id();
+          pnsendtime = request.nsendtime();
+
           gcumsgbuf.addmsg(request.id(),request.ntime(),request.strvin(),request.strquerymd5(),request.strctrlmd5(),
                            &xvectordata,request.bimportant(),request.kepptime());
 //          std::cout << "收到请求,类型为" << request.askmsg() <<"\n"<<std::endl;
@@ -225,7 +244,7 @@ class UploadServiceImpl final : public iv::UploadStream::Service {
           static int tempid = 0;
           tempid++;
           int nid = gpcmsgbuf.addmsg(tempid,request.ntime(),request.strvin(),request.strctrlmd5(),&xvectordata,
-                                     request.bimportant(),request.kepptime());
+                                     request.bimportant(),request.kepptime(),request.nsuggestframerate());
 
           (void)&nid;
 

+ 4 - 2
src/driver/driver_cloud_grpc_server_stream/pcmsgbuffer.cpp

@@ -25,7 +25,7 @@ void pcmsgbuffer::run()
     }
 }
 
-unsigned int pcmsgbuffer::addmsg(int id, qint64 ntime, std::string strVIN, std::string strctrlMD5, std::vector<char> *pxdata,bool bImportant,int nkeeptime)
+unsigned int pcmsgbuffer::addmsg(int id, qint64 ntime, std::string strVIN, std::string strctrlMD5, std::vector<char> *pxdata,bool bImportant,int nkeeptime,float framerate)
 {
     unsigned int nrtn;
     mMutex.lock();
@@ -56,6 +56,7 @@ unsigned int pcmsgbuffer::addmsg(int id, qint64 ntime, std::string strVIN, std::
         cmsg.nsendid = muid;
         cmsg.mbImportant = bImportant;
         cmsg.mkeeptime = nkeeptime;
+        cmsg.framerate = framerate;
         nrtn = muid;
         muid++;
         mvectormsg.push_back(cmsg);
@@ -94,7 +95,7 @@ unsigned int pcmsgbuffer::addmsg(int id, qint64 ntime, std::string strVIN, std::
     return nrtn;
 }
 
-int pcmsgbuffer::getmsg(std::string strVIN, std::string strctrlMD5, int &id, qint64 &ntime, std::vector<char> *pxdata)
+int pcmsgbuffer::getmsg(std::string strVIN, std::string strctrlMD5, int &id, qint64 &ntime, std::vector<char> *pxdata,float * framerate)
 {
     mMutex.lock();
     iv::pcmsg * pmsg = 0;
@@ -127,6 +128,7 @@ int pcmsgbuffer::getmsg(std::string strVIN, std::string strctrlMD5, int &id, qin
 
     id = pmsg->id;
     ntime = pmsg->ntime;
+    *framerate = pmsg->framerate;
     pxdata->clear();
     int ndatasize = pmsg->xdata.size();
     pxdata->resize(ndatasize);

+ 3 - 2
src/driver/driver_cloud_grpc_server_stream/pcmsgbuffer.h

@@ -21,6 +21,7 @@ struct pcmsg
     bool mbImportant = false;
     int mkeeptime;
     bool mbhavequery = false;
+    float framerate = 0;
 };
 }
 
@@ -48,12 +49,12 @@ private:
 public:
 
     unsigned int addmsg(int id,qint64 ntime,std::string strVIN,
-                std::string strctrlMD5,std::vector<char> * pxdata,bool bImportant,int nkeeptime);
+                std::string strctrlMD5,std::vector<char> * pxdata,bool bImportant,int nkeeptime,float framerate);
 
     //if no new msg return 0
     // -2 queryMD5 error
     int getmsg(std::string strVIN,std::string strctrlMD5,int & id,qint64 & ntime,
-                std::vector<char> * pxdata);
+                std::vector<char> * pxdata,float * framerate);
 
     int querysendstate(int nsendid);
 private:

+ 6 - 3
src/tool/RemoteCtrl_Stream/RemoteCtrl_Stream.pro

@@ -46,7 +46,8 @@ SOURCES += \
     ../../driver/driver_cloud_grpc_pc_stream/uploadstreammsg.grpc.pb.cc \
     ../../include/msgtype/cloud.pb.cc \
     dialogpic.cpp \
-    ivpicsave.cpp
+    ivpicsave.cpp \
+    dialogsetframerate.cpp
 
 HEADERS += \
     ../../include/msgtype/gps.pb.h \
@@ -67,12 +68,14 @@ HEADERS += \
     ../../driver/driver_cloud_grpc_pc_stream/uploadstreammsg.grpc.pb.h \
     ../../include/msgtype/cloud.pb.h \
     dialogpic.h \
-    ivpicsave.h
+    ivpicsave.h \
+    dialogsetframerate.h
 
 FORMS += \
     dialogbigpic.ui \
     mainwindow.ui \
-    dialogpic.ui
+    dialogpic.ui \
+    dialogsetframerate.ui
 
 # Default rules for deployment.
 qnx: target.path = /tmp/$${TARGET}/bin

+ 24 - 0
src/tool/RemoteCtrl_Stream/dialogsetframerate.cpp

@@ -0,0 +1,24 @@
+#include "dialogsetframerate.h"
+#include "ui_dialogsetframerate.h"
+
+DialogSetFrameRate::DialogSetFrameRate(float * pframerate,QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::DialogSetFrameRate)
+{
+    mpframerate = pframerate;
+
+    ui->setupUi(this);
+
+    ui->lineEdit_framerate->setText(QString::number(*mpframerate));
+}
+
+DialogSetFrameRate::~DialogSetFrameRate()
+{
+    delete ui;
+}
+
+void DialogSetFrameRate::on_pushButton_set_clicked()
+{
+    *mpframerate = ui->lineEdit_framerate->text().toDouble();
+    this->accept();
+}

+ 26 - 0
src/tool/RemoteCtrl_Stream/dialogsetframerate.h

@@ -0,0 +1,26 @@
+#ifndef DIALOGSETFRAMERATE_H
+#define DIALOGSETFRAMERATE_H
+
+#include <QDialog>
+
+namespace Ui {
+class DialogSetFrameRate;
+}
+
+class DialogSetFrameRate : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit DialogSetFrameRate(float * pframerate, QWidget *parent = 0);
+    ~DialogSetFrameRate();
+
+private slots:
+    void on_pushButton_set_clicked();
+
+private:
+    Ui::DialogSetFrameRate *ui;
+    float * mpframerate;
+};
+
+#endif // DIALOGSETFRAMERATE_H

+ 55 - 0
src/tool/RemoteCtrl_Stream/dialogsetframerate.ui

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DialogSetFrameRate</class>
+ <widget class="QDialog" name="DialogSetFrameRate">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QPushButton" name="pushButton_set">
+   <property name="geometry">
+    <rect>
+     <x>130</x>
+     <y>130</y>
+     <width>89</width>
+     <height>25</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Set</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="lineEdit_framerate">
+   <property name="geometry">
+    <rect>
+     <x>170</x>
+     <y>70</y>
+     <width>161</width>
+     <height>25</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>73</y>
+     <width>111</width>
+     <height>17</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>FrameRate</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 12 - 0
src/tool/RemoteCtrl_Stream/mainwindow.cpp

@@ -839,3 +839,15 @@ void MainWindow::onCloseBigDlg()
 {
     mpbigpicdlg->setRefresh(false);
 }
+
+void MainWindow::on_actionSet_FrameRate_triggered()
+{
+    float framerate = mgrpcpc->getframerate();
+    float oldfr = framerate;
+    DialogSetFrameRate xdialog(&framerate);
+    xdialog.exec();
+    if(oldfr != framerate)
+    {
+        mgrpcpc->setframerate(framerate);
+    }
+}

+ 3 - 0
src/tool/RemoteCtrl_Stream/mainwindow.h

@@ -26,6 +26,7 @@
 
 #include "dialogpic.h"
 #include "dialogbigpic.h"
+#include "dialogsetframerate.h"
 
 #include "modulecomm.h"
 
@@ -101,6 +102,8 @@ private slots:
 
     void on_pushButton_big_clicked();
 
+    void on_actionSet_FrameRate_triggered();
+
 public:
      void resizeEvent(QResizeEvent *event);
 

+ 19 - 1
src/tool/RemoteCtrl_Stream/mainwindow.ui

@@ -486,11 +486,29 @@
      <x>0</x>
      <y>0</y>
      <width>1183</width>
-     <height>28</height>
+     <height>22</height>
     </rect>
    </property>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>Fi&amp;le</string>
+    </property>
+   </widget>
+   <widget class="QMenu" name="menuSet">
+    <property name="title">
+     <string>Set</string>
+    </property>
+    <addaction name="actionSet_FrameRate"/>
+   </widget>
+   <addaction name="menuFile"/>
+   <addaction name="menuSet"/>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
+  <action name="actionSet_FrameRate">
+   <property name="text">
+    <string>Set FrameRate</string>
+   </property>
+  </action>
  </widget>
  <resources>
   <include location="remotectrl.qrc"/>