From aef1984ccc48e81ab238d889327f85867ca0a973 Mon Sep 17 00:00:00 2001 From: fctom1215 <fctom1215@outlook.com> Date: 星期三, 25 三月 2020 22:51:59 +0800 Subject: [PATCH] 修改加减挡操作. --- lib/src/main/cpp/native-lib.cpp | 2 lib/src/main/cpp/test_items2/operate_gear.h | 2 lib/src/main/cpp/test_items2/road_exam.cpp | 2 lib/src/main/cpp/test_items2/operate_gear.cpp | 91 +++++++++++++++++++++------------------------ 4 files changed, 46 insertions(+), 51 deletions(-) diff --git a/lib/src/main/cpp/native-lib.cpp b/lib/src/main/cpp/native-lib.cpp index 34720a2..ba7cd20 100644 --- a/lib/src/main/cpp/native-lib.cpp +++ b/lib/src/main/cpp/native-lib.cpp @@ -26,7 +26,7 @@ const int RTK_PLATFORM_PORT = 12125; const uint8_t phone[] = {0x20,0x19,0x10,0x15,0x00,0x00,0x00,0x01}; -const char *VIRTUAL_RTK_IP = "192.168.16.100"; +const char *VIRTUAL_RTK_IP = "192.168.3.52"; const int VIRTUAL_RTK_PORT = 9001; static pthread_mutex_t tts_mutex = PTHREAD_MUTEX_INITIALIZER; diff --git a/lib/src/main/cpp/test_items2/operate_gear.cpp b/lib/src/main/cpp/test_items2/operate_gear.cpp index b0cc48c..16f9000 100644 --- a/lib/src/main/cpp/test_items2/operate_gear.cpp +++ b/lib/src/main/cpp/test_items2/operate_gear.cpp @@ -11,33 +11,39 @@ #define DEBUG(fmt, args...) LOGD("<operate_gear> <%s>: " fmt, __func__, ##args) +static struct RtkTime currRtkTime; + +static const int MAX_READ_GEAR = 6; + static int opGear; static bool testing; static int examTtsSeq = 0; static int expectGear; static int upDownShift; -static bool checkError; +static int readGearCnt; static int opCnt = 0; enum { - START_GEAR, - WAIT_TTS_END, - TTS_END, - WAITE_CHECK, - CHECKED + SEND_OP_INS, + CHECK_OP }; static void CheckGear(union sigval sig); -void StartOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList) { +void StartOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const struct RtkTime *rtkTime) { if (index == -1) return; + DEBUG("寮�濮嬪姞鍑忔尅鎿嶄綔"); testing = true; - opGear = START_GEAR; - checkError = false; + opGear = SEND_OP_INS; + readGearCnt = 0; upDownShift = 0; opCnt = 0; + currRtkTime = *rtkTime; + + AppTimer_delete(CheckGear); + AppTimer_add(CheckGear, 100); } void TerminateOperateGearExam(void) @@ -45,22 +51,19 @@ AppTimer_delete(CheckGear); } -int ExecuteOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const car_model *car, - LIST_CAR_MODEL &CarModelList, double speed, int moveDirect, const struct RtkTime *rtkTime) { - DEBUG("opGear %d", opGear); +static void CheckGear(union sigval sig) { + AppTimer_delete(CheckGear); - if (opGear == START_GEAR) { - int currGear = ReadCarStatus(GEAR); - switch (currGear) { + if (opGear == SEND_OP_INS) { + readGearCnt++; + switch (ReadCarStatus(GEAR)) { case GEAR_1: { - opGear = WAIT_TTS_END; upDownShift = 1; expectGear = GEAR_2; examTtsSeq = PlayTTS("璇峰姞鍒颁簩鎸�"); break; } case GEAR_2: { - opGear = WAIT_TTS_END; if (upDownShift == 0) { upDownShift = 1; expectGear = GEAR_3; @@ -77,7 +80,6 @@ break; } case GEAR_3: { - opGear = WAIT_TTS_END; if (upDownShift == 0) { upDownShift = -1; expectGear = GEAR_2; @@ -94,7 +96,6 @@ break; } case GEAR_4: { - opGear = WAIT_TTS_END; if (upDownShift == 0) { upDownShift = -1; expectGear = GEAR_3; @@ -111,7 +112,6 @@ break; } case GEAR_5: { - opGear = WAIT_TTS_END; upDownShift = -1; expectGear = GEAR_4; examTtsSeq = PlayTTS("璇峰噺鍒板洓鎸�"); @@ -119,51 +119,46 @@ } default: // 鏈鍒版湁鏁堟尅浣嶏紝缁х画灏濊瘯 + if (readGearCnt > MAX_READ_GEAR) { + DEBUG("鎬绘槸璇诲埌绌烘尅鎴栨棤鏁堟尅浣�"); + AddExamFault(31, &currRtkTime); + testing = false; + } else { + AppTimer_add(CheckGear, 500); + } break; } - } else if (opGear == WAIT_TTS_END) { - - } else if (opGear == TTS_END) { + } else { + DEBUG("妫�娴嬫尅浣� %d", expectGear); opCnt++; - opGear = WAITE_CHECK; - checkError = false; - AppTimer_delete(CheckGear); - AppTimer_add(CheckGear, D_SEC(5)); - } else if (opGear == CHECKED) { - if (checkError) { + // 妫�鏌ユ尅浣� + if (ReadCarStatus(GEAR) != expectGear) { // 鏈寜鎸囦护鎿嶄綔鎸′綅锛屼笉鍚堟牸 DEBUG("鏈寜鎸囦护鎿嶄綔鎸′綅"); - AddExamFault(31, rtkTime); - } + AddExamFault(31, &currRtkTime); - if (opCnt < 2) { - opGear = START_GEAR; + testing = false; + } else if (opCnt < 2) { + opGear = SEND_OP_INS; + AppTimer_add(CheckGear, 500); } else { testing = false; } } +} +int ExecuteOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const car_model *car, + LIST_CAR_MODEL &CarModelList, double speed, int moveDirect, const struct RtkTime *rtkTime) { + currRtkTime = *rtkTime; return testing ? index : -1; } void OperateGearTTSDone(int id) { - DEBUG("OperateGearTTSDone %d", id); + DEBUG("鍗囬檷鎸℃寚浠ゅ彂鍑哄畬姣� %d", id); // 绛夎闊虫挱鎶ュ畬姣曞悗璁℃椂 if (id == examTtsSeq) { - opGear = TTS_END; + opGear = CHECK_OP; + AppTimer_add(CheckGear, D_SEC(7)); } -} - -static void CheckGear(union sigval sig) -{ - AppTimer_delete(CheckGear); - - DEBUG("妫�娴嬫尅浣� %d", expectGear); - // 妫�鏌ユ尅浣� - if (ReadCarStatus(GEAR) != expectGear) { - // 涓嶆墽琛屾寚瀹氭尅浣嶏紝涓嶅悎鏍� - checkError = true; - } - opGear = CHECKED; } diff --git a/lib/src/main/cpp/test_items2/operate_gear.h b/lib/src/main/cpp/test_items2/operate_gear.h index 9db3a44..a254549 100644 --- a/lib/src/main/cpp/test_items2/operate_gear.h +++ b/lib/src/main/cpp/test_items2/operate_gear.h @@ -7,7 +7,7 @@ #include "../driver_test.h" -void StartOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList); +void StartOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const struct RtkTime *rtkTime); int ExecuteOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const car_model *car, LIST_CAR_MODEL &CarModelList, double speed, int moveDirect, const struct RtkTime *rtkTime); void OperateGearTTSDone(int id); diff --git a/lib/src/main/cpp/test_items2/road_exam.cpp b/lib/src/main/cpp/test_items2/road_exam.cpp index 6c9e1a6..e48b855 100644 --- a/lib/src/main/cpp/test_items2/road_exam.cpp +++ b/lib/src/main/cpp/test_items2/road_exam.cpp @@ -518,7 +518,7 @@ } else if (RoadMapList[currExamMapIndex].type == STOP_CAR_MAP) { StartStopCarExam(currExamMapIndex, RoadMapList); } else if (RoadMapList[currExamMapIndex].type == OP_GEAER_MAP) { - StartOperateGearExam(currExamMapIndex, RoadMapList); + StartOperateGearExam(currExamMapIndex, RoadMapList, rtkTime); } } } else if (startCar == START_CAR_DONE) { -- Gitblit v1.8.0