Kaynağa Gözat

fix(driver_radar_ars408,driver_sonar_ks136):fix an data copy error, it will lose negtive data

孙嘉城 3 yıl önce
ebeveyn
işleme
61633fcc82

+ 2 - 5
src/driver/driver_radar_continental_ARS408_SRR308/canrecv_consumer.cpp

@@ -34,12 +34,9 @@ uint32_t CANRecv_Consumer::Trans_From_CANRaw(const iv::can::canraw &xraw) //only
     this->Clear_CAN_PrivateTempVariable();
     CAN_ID = xraw.id();
     CAN_DLC = xraw.len();
-    char tempData[8];
-    int tempLen = (xraw.data().size() > 8) ? 8 : xraw.data().size();
-    strncpy(tempData,xraw.data().data(),tempLen);
-    for(int i=0;i<tempLen;i++)
+    for(int i=0;i<CAN_DLC;i++)
     {
-        CAN_data[i] = (uint8_t)tempData[i];
+        CAN_data[i] = xraw.data()[i];
     }
 
     return CAN_ID;

+ 16 - 18
src/driver/driver_ultrasonic_dauxi_KS136A/canrecv_consumer.cpp

@@ -35,12 +35,9 @@ uint32_t CANRecv_Consumer::Trans_From_CANRaw(const iv::can::canraw &xraw) //only
     this->Clear_CAN_PrivateTempVariable();
     CAN_ID = xraw.id();
     CAN_DLC = xraw.len();
-    char tempData[8];
-    int tempLen = (xraw.data().size() > 8) ? 8 : xraw.data().size();
-    strncpy(tempData,xraw.data().data(),tempLen);
-    for(int i=0;i<tempLen;i++)
+    for(int i=0;i<CAN_DLC;i++)
     {
-        CAN_data[i] = (uint8_t)tempData[i];
+        CAN_data[i] = xraw.data()[i];
     }
 
     return CAN_ID;
@@ -94,12 +91,12 @@ void CANRecv_Consumer::run()
                     sensorStatus.fill(false,NUM_OF_SENSOR_MAX);
                     tempSensorID = 0;
                 }
-//                if(tempLastResult <= 2000)
-//                    emit Enable_Ask(true,tempSensorID,2);
-//                else if(tempLastResult <= 3800)
-//                    emit Enable_Ask(true,tempSensorID,1);
-//                else
-//                    emit Enable_Ask(true,tempSensorID,0);
+                if(tempLastResult <= 2000)
+                    emit Enable_Ask(true,tempSensorID,2);
+                else if(tempLastResult <= 3800)
+                    emit Enable_Ask(true,tempSensorID,1);
+                else
+                    emit Enable_Ask(true,tempSensorID,0);
                 decodeTimer.restart();
             }
             else
@@ -108,7 +105,7 @@ void CANRecv_Consumer::run()
                 if(CAN_ID == setupConfig.sonarCAN_ID && CAN_DLC == 2)
                 {
                     tempDist = (CAN_data[0] << 8) | CAN_data[1];
-                    if(tempDist <= 0x1650 && tempDist >= 0xD0)
+                    if(tempDist <= 5720 && tempDist >= 200)
                     {
                         decodeEnableFlag = false;
                         objDist[decodeSensorID] = tempDist;
@@ -143,12 +140,13 @@ void CANRecv_Consumer::run()
                             sensorStatus.fill(false,NUM_OF_SENSOR_MAX);
                             tempSensorID = 0;
                         }
-//                        if(tempLastResult <= 2000)
-//                            emit Enable_Ask(true,tempSensorID,2);
-//                        else if(tempLastResult <= 3800)
-//                            emit Enable_Ask(true,tempSensorID,1);
-//                        else
-//                            emit Enable_Ask(true,tempSensorID,0);
+                        if(tempLastResult <= 2000)
+                            emit Enable_Ask(true,tempSensorID,2);
+                        else if(tempLastResult <= 3800)
+                            emit Enable_Ask(true,tempSensorID,1);
+                        else
+                            emit Enable_Ask(true,tempSensorID,0);
+                        std::cout<<"finish decode result:"<<QDateTime::currentMSecsSinceEpoch()<<std::endl;
                         decodeTimer.restart();
                     }
                 }

+ 4 - 2
src/driver/driver_ultrasonic_dauxi_KS136A/main.cpp

@@ -60,8 +60,10 @@ void ListenCANMsg(const char * strdata,const unsigned int nSize,const unsigned i
     }
 
     CANRecv.Produce_Elements_From_CANMsg(xmsg);
-    std::cout<<"recieve a msg:"<<QDateTime::currentMSecsSinceEpoch()<<std::endl;
-    std::cout<<(unsigned int)(xmsg.rawmsg(0).data()[1])<<std::endl;
+    if(xmsg.rawmsg(0).len() == 2)
+    {
+        std::cout<<"recieve a msg:"<<QDateTime::currentMSecsSinceEpoch()<<std::endl;
+    }
 }
 
 void ExitFunc()