Bläddra i källkod

避障与不避障线路设置

wangfengjiao 3 år sedan
förälder
incheckning
5979e64220

+ 14 - 6
src/driver/driver_can_nvidia_agx/canctrl.cpp

@@ -1,7 +1,9 @@
 #include "canctrl.h"
 
+#include <memory>
+
 canctrl * gc;
-iv::canstate::canstate proCanSt;
+static iv::canstate::canstate proCanSt;
 void Listencansend0(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
 {
     iv::can::canmsg msg;
@@ -94,25 +96,31 @@ void canctrl::run()
 
             proCanSt.set_b_canstate(true);
             int nsize = proCanSt.ByteSize();
-            char * strdata = new char[proCanSt.ByteSize()];
-            if(proCanSt.SerializePartialToArray(strdata,nsize))
+            std::shared_ptr<char > strdata_ptr= std::shared_ptr<char>(new char[nsize]);
+            if(proCanSt.SerializeToArray(strdata_ptr.get(),nsize))
             {
-                iv::modulecomm::ModuleSendMsg(mpcanState,strdata,nsize);
+                iv::modulecomm::ModuleSendMsg(mpcanState,strdata_ptr.get(),nsize);
             }
-            msleep(5);
+            msleep(1);
         }
         else
         {
             proCanSt.set_b_canstate(false);
             int nsize = proCanSt.ByteSize();
             char * strdata = new char[proCanSt.ByteSize()];
-            if(proCanSt.SerializePartialToArray(strdata,nsize))
+            if(proCanSt.SerializeToArray(strdata,nsize))
             {
                 iv::modulecomm::ModuleSendMsg(mpcanState,strdata,nsize);
             }
             delete strdata;
             msleep(1);
             mpcan->mivlog->error("%s open can card fail",__func__);
+
+            if(xTime.elapsed()>1000)
+            {
+                qDebug("Not Open CANCARD exceed 1 second. so exit program.");
+                exit(-1);
+            }
         }
         mpcan->mfault->SetFaultState(0, 0, "ok");
     }

+ 3 - 4
src/driver/driver_can_nvidia_agx/main.cpp

@@ -33,7 +33,7 @@
 
 
 
-
+static canctrl * gpcanctrl;
 
 
 int main(int argc, char *argv[])
@@ -55,11 +55,10 @@ int main(int argc, char *argv[])
     std::string strmemrecv0 = xp.GetParam("canrecv0_agx","canrecv0");
     std::string strmemrecv1 = xp.GetParam("canrecv1_agx","canrecv1");
 
-    canctrl * pcanctrl = new canctrl(strmemsend0.data(),strmemsend1.data(),strmemrecv0.data(),strmemrecv1.data());
-    pcanctrl->start();
+    gpcanctrl = new canctrl(strmemsend0.data(),strmemsend1.data(),strmemrecv0.data(),strmemrecv1.data());
+    gpcanctrl->start();
 
  //   std::thread b(func);
 
-
     return a.exec();
 }