From 7b6dd5603277ac8fddba735c456f99d4c07e2e9b Mon Sep 17 00:00:00 2001 From: fctom1215 <fctom1215@outlook.com> Date: 星期三, 12 二月 2020 17:43:36 +0800 Subject: [PATCH] 修改了上坡起步。 --- lib/src/main/cpp/test_items/park_edge.cpp | 36 +++++++++++++++++++++++++++++------- 1 files changed, 29 insertions(+), 7 deletions(-) diff --git a/lib/src/main/cpp/test_items/park_edge.cpp b/lib/src/main/cpp/test_items/park_edge.cpp index 87993ff..105bd16 100644 --- a/lib/src/main/cpp/test_items/park_edge.cpp +++ b/lib/src/main/cpp/test_items/park_edge.cpp @@ -20,6 +20,7 @@ const int PARK_TIMEOUT = 90; const uint32_t STOP_CAR_TIME = D_SEC(2); +static bool reportExamTimeout; static uint64_t stopTimepoint = 0; static bool occurCrashRedLine1, occurCrashRedLine2; static int prevMoveStatus, storeMoveStatusBeforeStop; @@ -31,10 +32,12 @@ static bool CrashRedLine2(const Polygon *map, const car_model *car); static bool EnterParking(const Polygon *map, const car_model *car); static bool ExitParkArea(const Polygon *map, const car_model *car); +static bool ExitParkArea2(const Polygon *map, const car_model *car); void StartParkEdge(int moveStatus, const struct RtkTime *rtkTime) { occurCrashRedLine1 = occurCrashRedLine2 = false; // 杩欎釜绉戠洰瑙勫畾鐗规畩鐐癸紝鍙戠敓涓�娆℃墸10鍒嗭紝鑰屼笉鐩存帴娣樻卑 + reportExamTimeout = false; prevMoveStatus = moveStatus; parkSuccess = false; @@ -74,25 +77,23 @@ occurCrashRedLine2 = false; } - if (ExitParkArea(map, car)) { + if (ExitParkArea(map, car) || ExitParkArea2(map, car)) { if (!parkSuccess || !occurMoveBack) { // 鐩存帴椹剁娴嬭瘯鍖猴紝璁や负绉诲簱涓嶅叆 AddExamFault(21, rtkTime); DEBUG("鐩存帴椹剁娴嬭瘯鍖�,绉诲簱涓嶅叆"); - status = -1; - } else { - status = 1; } + status = 1; } if (occurMoveBack) { uint32_t tp = TimeMakeComposite(2000 + rtkTime->YY, rtkTime->MM, rtkTime->DD, rtkTime->hh, rtkTime->mm, rtkTime->ss); - if (tp - moveBackTimePoint >= PARK_TIMEOUT) { + if (!reportExamTimeout && tp - moveBackTimePoint >= PARK_TIMEOUT) { // 瓒呮椂90绉掞紝涓嶅悎鏍� AddExamFault(22, rtkTime); + reportExamTimeout = true; DEBUG("绉诲簱90绉掕秴鏃�"); - status = -1; } } @@ -129,7 +130,6 @@ // 鍋滄鍚庯紝杞﹁韩鍑虹嚎锛屼笉鍚堟牸 AddExamFault(21, rtkTime); DEBUG("绉诲簱涓嶅叆"); - status = -1; } // 鍦ㄨ繖閲屾鏌ヨ浆鍚戠伅鐘舵�� @@ -254,3 +254,25 @@ } return true; } + +static bool ExitParkArea2(const Polygon *map, const car_model *car) +{ +// 鍏ㄨ溅閮介渶涓嶅湪鍦板浘涓� + bool ret = false; + + Polygon carBody; + + carBody.num = car->bodyNum; + carBody.point = (PointF *)malloc(carBody.num * sizeof(PointF)); + for (int i = 0; i < carBody.num; ++i) { + carBody.point[i] = car->carXY[car->body[i]]; + } + + if (IntersectionOf(&carBody, map) == GM_None) { + ret = true; + } + + free(carBody.point); + + return ret; +} -- Gitblit v1.8.0