From 4581cc42ba485366603ca8e3f61183f6a50ad72f Mon Sep 17 00:00:00 2001 From: fctom1215 <fctom1215@outlook.com> Date: 星期五, 21 二月 2020 17:18:30 +0800 Subject: [PATCH] GPS信息合并到RTK中,以RTK包,发送 --- lib/src/main/cpp/master/comm_if.h | 1 lib/src/main/cpp/driver_test.cpp | 17 ++++++++ lib/src/main/cpp/mcu/mcu_if.h | 1 lib/src/main/cpp/master/comm_if.cpp | 48 ++++++++++++++++++++++++ lib/src/main/cpp/test_items/comm_test.cpp | 2 lib/src/main/cpp/driver_test.h | 2 + lib/src/main/cpp/mcu/mcu_if.cpp | 8 ++++ 7 files changed, 77 insertions(+), 2 deletions(-) diff --git a/lib/src/main/cpp/driver_test.cpp b/lib/src/main/cpp/driver_test.cpp index 4c7cf51..a78aa18 100644 --- a/lib/src/main/cpp/driver_test.cpp +++ b/lib/src/main/cpp/driver_test.cpp @@ -359,14 +359,17 @@ { bool err = false; - DEBUG("StartDriverExam %d", start); if (start == 0) { + DEBUG("-------------缁撴潫鑰冭瘯----------------"); + CurrExamMapIndex = -1; TestStart = false; CommTestStart(false); MA_SendExamStatus(0, 0); return; } + + DEBUG("+++++++++++++++寮�濮嬭�冭瘯++++++++++++++++++++"); if (MapNum == 0) { err = true; @@ -977,6 +980,18 @@ double tx = carModel->carDesc[i].distance*sin(toRadians(azimuth)); double ty = carModel->carDesc[i].distance*cos(toRadians(azimuth)); +// double qrx = carModel->carDesc[i].distance * sin(toRadians(carModel->carDesc[i].angle)); +// double qry = carModel->carDesc[i].distance * cos(toRadians(carModel->carDesc[i].angle)) * cos(toRadians(pitch)); +// +// double projDis = sqrt(pow(qrx, 2) + pow(pry, 2)); +// double projAng; +// +// if (fabs(qry) <= EPSILON) { +// projAng = 90; +// } else { +// projAng = toDegree(atan(qrx / qry)); +// } + carModel->carXY[i].X = (tx)*cos(toRadians(carModel->carDesc[i].angle)) - (ty)*sin(toRadians(carModel->carDesc[i].angle)) + main_ant.X; carModel->carXY[i].Y = (tx)*sin(toRadians(carModel->carDesc[i].angle)) + diff --git a/lib/src/main/cpp/driver_test.h b/lib/src/main/cpp/driver_test.h index 1e66de9..356f30f 100644 --- a/lib/src/main/cpp/driver_test.h +++ b/lib/src/main/cpp/driver_test.h @@ -87,9 +87,11 @@ void FindSensorCfg(int func, int &gpio, bool &lvl); void StartDriverExam(int start); +void StartMapExam(int map_id, int exam); void GetRtkClock(struct RtkTime *s); void UpdateRTKInfo(const rtk_info *s); void AddExamFault(int wrong, const struct RtkTime *rtkTime); car_model_cache_t *GetCarModelCache(int node); +void SystemShutdown(int event, int timeout); #endif //RTKDRIVERTEST_DRIVER_TEST_H diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp index e6252c9..c4bc105 100644 --- a/lib/src/main/cpp/master/comm_if.cpp +++ b/lib/src/main/cpp/master/comm_if.cpp @@ -45,12 +45,14 @@ #define ID_SM_RTK_BRIEF 0x000B #define ID_SM_EXAM_BRIEF 0x000C #define ID_SM_ENTER_MAP 0x000D +#define ID_MS_EXAM_MAP 0x800D #define ID_SM_CAR 0x000E #define ID_SM_RTCM_IND 0x000F #define ID_SM_DEBUG_INFO 0x0010 #define ID_MS_FILE 0x8100 #define ID_MS_READ_CARD 0x800F #define ID_SM_PUT_CARD 0x000F +#define ID_MS_SYS_SHUTDOWN 0x8010 #define MA_OUT_GPS_BRIEF 0x0001 #define MA_OUT_RTK_BRIEF 0x0002 @@ -706,6 +708,19 @@ } break; } + case ID_MS_EXAM_MAP: { + Document doc; + doc.Parse(value); + if (!doc.HasParseError()) { + if (doc.HasMember("map_id") && doc.HasMember("exam")) { + Value& s = doc["map_id"]; + Value& s2 = doc["exam"]; + + StartMapExam(s.GetInt(), s2.GetInt()); + } + } + break; + } case ID_MS_IND_ONOFF: { Document doc; doc.Parse(value); @@ -723,6 +738,24 @@ ReadCard(); break; } + case ID_MS_SYS_SHUTDOWN: { + Document doc; + doc.Parse(value); + if (!doc.HasParseError()) { + int event = 0, timeout = 15; + + if (doc.HasMember("event")) { + Value& s = doc["event"]; + event = s.GetInt(); + } + if (doc.HasMember("timeout")) { + Value& s = doc["timeout"]; + timeout = s.GetInt(); + } + SystemShutdown(event, timeout); + } + break; + } default:break; } } @@ -738,3 +771,18 @@ break; } } + +void MA_EnterMap(int map_id, int enter) +{ + StringBuffer sb; + Writer<StringBuffer> writer(sb); + + writer.StartObject(); + writer.Key("map_id"); + writer.Int(map_id); + writer.Key("enter"); + writer.Int(enter); + writer.EndObject(); + + SendMsgToMainProc(ID_SM_ENTER_MAP, sb.GetString()); +} diff --git a/lib/src/main/cpp/master/comm_if.h b/lib/src/main/cpp/master/comm_if.h index 24012d9..0c5da32 100644 --- a/lib/src/main/cpp/master/comm_if.h +++ b/lib/src/main/cpp/master/comm_if.h @@ -93,5 +93,6 @@ void MA_SendExamWrong(vector<ExamFault> &ExamFaultList); void MA_SendRtcmInd(int length); void MA_SendDebugInfo(const char *str, ...); +void MA_EnterMap(int map_id, int enter); #endif //MYAPPLICATION2_COMM_IF_H diff --git a/lib/src/main/cpp/mcu/mcu_if.cpp b/lib/src/main/cpp/mcu/mcu_if.cpp index d9bb96a..4682904 100644 --- a/lib/src/main/cpp/mcu/mcu_if.cpp +++ b/lib/src/main/cpp/mcu/mcu_if.cpp @@ -45,6 +45,7 @@ #define ID_CM_RTK_DATA 0x0008 #define ID_CM_READ_RFCARD 0x0009 #define ID_MC_RFCARD_RSP 0x8009 +#define ID_CM_SHUTDOWN 0x0020 static parse_status_t parse_status; @@ -514,3 +515,10 @@ AppTimer_add(ReadCardTimeout, D_SEC(3)); SendMcuCommand(ID_CM_READ_RFCARD, NULL, 0); } + +void ShutdownInd(int timeout) +{ + uint8_t v = timeout; + + SendMcuCommand(ID_CM_SHUTDOWN, &v, 1); +} diff --git a/lib/src/main/cpp/mcu/mcu_if.h b/lib/src/main/cpp/mcu/mcu_if.h index b4cd426..86613ca 100644 --- a/lib/src/main/cpp/mcu/mcu_if.h +++ b/lib/src/main/cpp/mcu/mcu_if.h @@ -16,5 +16,6 @@ void UploadDfuFileEnd(void); void UploadDfuFile(const uint8_t *file, int length); void ReadCard(void); +void ShutdownInd(int timeout); #endif //RTKDRIVERTEST_MCU_IF_H diff --git a/lib/src/main/cpp/test_items/comm_test.cpp b/lib/src/main/cpp/test_items/comm_test.cpp index 3ca6c44..f715788 100644 --- a/lib/src/main/cpp/test_items/comm_test.cpp +++ b/lib/src/main/cpp/test_items/comm_test.cpp @@ -33,7 +33,7 @@ if (CheckSensorX(SEATBELT) == 0) { struct RtkTime rt; GetRtkClock(&rt); - AddExamFault(1, &rt); +// AddExamFault(1, &rt); } } } -- Gitblit v1.8.0