From 32e789cf43a39565a506da32f2a952c8398aa4c0 Mon Sep 17 00:00:00 2001 From: fctom1215 <fctom1215@outlook.com> Date: 星期三, 19 二月 2020 23:16:21 +0800 Subject: [PATCH] GPS信息合并到RTK中,以RTK包,发送 --- lib/src/main/cpp/master/comm_if.h | 10 +++++ lib/src/main/cpp/rtk_module/rtk.h | 1 lib/src/main/cpp/master/comm_if.cpp | 14 +++++++ Documents/模拟驾考APP内部通讯.docx | 0 lib/src/main/cpp/rtk_module/rtk.cpp | 7 ++- lib/src/main/cpp/rtk_platform/platform.cpp | 65 +++++++++++++++++++++----------- 6 files changed, 73 insertions(+), 24 deletions(-) diff --git "a/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx" "b/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx" index e23e797..67ac036 100644 --- "a/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx" +++ "b/Documents/\346\250\241\346\213\237\351\251\276\350\200\203APP\345\206\205\351\203\250\351\200\232\350\256\257.docx" Binary files differ diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp index 5e2d033..e6252c9 100644 --- a/lib/src/main/cpp/master/comm_if.cpp +++ b/lib/src/main/cpp/master/comm_if.cpp @@ -258,6 +258,20 @@ writer.Double(brief->pitch); writer.Key("roll"); writer.Double(brief->roll); + + writer.Key("sat_num"); + writer.Int(brief->sat_num); + writer.Key("latitude"); + writer.Double(brief->latitude); + writer.Key("longitude"); + writer.Double(brief->longitude); + writer.Key("altitude"); + writer.Double(brief->altitude); + writer.Key("speed"); + writer.Double(brief->speed); + writer.Key("track_ture"); + writer.Double(brief->trackTure); + writer.EndObject(); SendMsgToMainProc(ID_SM_RTK_BRIEF, sb.GetString()); diff --git a/lib/src/main/cpp/master/comm_if.h b/lib/src/main/cpp/master/comm_if.h index d6bbe84..24012d9 100644 --- a/lib/src/main/cpp/master/comm_if.h +++ b/lib/src/main/cpp/master/comm_if.h @@ -30,6 +30,7 @@ double longitude; double altitude; double speed; + double trackTure; }; struct rtkBrief { @@ -42,6 +43,13 @@ double heading; double pitch; double roll; + + int sat_num; + double latitude; + double longitude; + double altitude; + double speed; + double trackTure; }; struct carBrief { @@ -51,6 +59,8 @@ int move; double speed; double heading; + double pitch; + double roll; double main_ant[2]; int axial[2]; int left_front_tire[2]; diff --git a/lib/src/main/cpp/rtk_module/rtk.cpp b/lib/src/main/cpp/rtk_module/rtk.cpp index b19a6e8..35ee10b 100644 --- a/lib/src/main/cpp/rtk_module/rtk.cpp +++ b/lib/src/main/cpp/rtk_module/rtk.cpp @@ -153,7 +153,7 @@ for (int i = 0; i < sizeof(GPSITEMS)/ sizeof(GPSITEMS[0]); ++i) { char cmd[64]; - sprintf(cmd, "log com1 %s ontime 1\r\n", GPSITEMS[i]); + sprintf(cmd, "log com1 %s ontime %0.1f\r\n", GPSITEMS[i], 1.0/(double)freq); WriteSerialPort(RTK_MODULE_UART, cmd, strlen(cmd)); } @@ -277,7 +277,6 @@ { DEBUG("handleGPRMC num = %d", s->nmea_num); - if (s->nmea_num >= 9) { int hh = str2int(s->nmea_value[0].data, 2); int mm = str2int(s->nmea_value[0].data + 2, 2); @@ -294,6 +293,10 @@ gpsStatus.speed = speed * 1.85184; // 鑺� -> 鍏噷 + double trackTure; + str2float(&trackTure, s->nmea_value[7].data, s->nmea_value[7].length); + gpsStatus.trackTure = trackTure; + if (hh == gpsStatus.hh && mm == gpsStatus.mm && ss == gpsStatus.ss && mss == gpsStatus.mss) { // 鍚屾鐨凣GA娑堟伅涔熸敹闆嗕簡 PlatformStatusChanged(GPS_UPDATE_EVT, (uint8_t *)&gpsStatus, sizeof(gpsStatus)); diff --git a/lib/src/main/cpp/rtk_module/rtk.h b/lib/src/main/cpp/rtk_module/rtk.h index 99b0087..1f9607b 100644 --- a/lib/src/main/cpp/rtk_module/rtk.h +++ b/lib/src/main/cpp/rtk_module/rtk.h @@ -20,6 +20,7 @@ double longitude; double altitude; double speed; + double trackTure; }gpsStatus_t; typedef struct { diff --git a/lib/src/main/cpp/rtk_platform/platform.cpp b/lib/src/main/cpp/rtk_platform/platform.cpp index a5b4082..ceaa2c6 100644 --- a/lib/src/main/cpp/rtk_platform/platform.cpp +++ b/lib/src/main/cpp/rtk_platform/platform.cpp @@ -74,6 +74,9 @@ static pthread_mutex_t platform_tx_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t events_mutex = PTHREAD_MUTEX_INITIALIZER; +static struct gpsBrief gbf; +static struct rtkBrief rbf; + static void AddEvnet(uint32_t event, const uint8_t *data, int length); static struct event_t * FetchEvent(void); static void RemoveEvent(void); @@ -166,6 +169,9 @@ { DEBUG("InitPlatform"); + memset(&gbf, 0, sizeof(gbf)); + memset(&rbf, 0, sizeof(rbf)); + pthread_mutex_init(&platform_tx_mutex, NULL); pthread_mutex_init(&events_mutex, NULL); @@ -197,7 +203,7 @@ void ConfigPlatform(const rtk_platform_cfg_t *p) { - DEBUG("ConfigPlatform"); + DEBUG("閰嶇疆RTK骞冲彴璧勮"); AppTimer_delete(ReqRtkPlatformConfigTimeout); @@ -340,35 +346,50 @@ if (events & GPS_UPDATE_EVT) { DEBUG("GPS_UPDATE_EVT length %d", length); const gpsStatus_t *gps = (gpsStatus_t *)data; - struct gpsBrief brief; - brief.qf = gps->gps_status; - brief.latitude = gps->latitude; - brief.longitude = gps->longitude; - brief.altitude = gps->altitude; - brief.speed = gps->speed; - brief.sat_num = gps->satNum; - sprintf(brief.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + gps->YY, gps->MM, gps->DD, gps->hh, gps->mm, gps->ss, gps->mss); - - MA_SendGpsBrief(&brief); + gbf.qf = gps->gps_status; + gbf.latitude = gps->latitude; + gbf.longitude = gps->longitude; + gbf.altitude = gps->altitude; + gbf.speed = gps->speed; + gbf.sat_num = gps->satNum; + gbf.trackTure = gps->trackTure; + sprintf(gbf.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + gps->YY, gps->MM, gps->DD, gps->hh, gps->mm, gps->ss, gps->mss); + if (!strcmp(rbf.utc, gbf.utc)) { + rbf.sat_num = gbf.sat_num; + rbf.latitude = gbf.latitude; + rbf.longitude = gbf.longitude; + rbf.altitude = gbf.altitude; + rbf.speed = gbf.speed; + rbf.trackTure = gbf.trackTure; + MA_SendRtkBrief(&rbf); + } +// MA_SendGpsBrief(&brief); RequestRtkDownload(gps, 1); } if (events & RTK_UPDATE_EVT) { DEBUG("RTK_UPDATE_EVT length %d", length); const rtk_info *rtk = (rtk_info *)data; - struct rtkBrief brief; - brief.qf = rtk->qf; - brief.coord_x = rtk->x; - brief.coord_y = rtk->y; - brief.heading = rtk->heading; - brief.pitch = rtk->pitch; - brief.roll = rtk->roll; - brief.coord_x_dir = 'N'; - brief.coord_y_dir = 'E'; - sprintf(brief.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + rtk->YY, rtk->MM, rtk->DD, rtk->hh, rtk->mm, rtk->ss, rtk->dss); + rbf.qf = rtk->qf; + rbf.coord_x = rtk->y; + rbf.coord_y = rtk->x; + rbf.heading = rtk->heading; + rbf.pitch = rtk->pitch; + rbf.roll = rtk->roll; + rbf.coord_x_dir = 'N'; + rbf.coord_y_dir = 'E'; + sprintf(rbf.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + rtk->YY, rtk->MM, rtk->DD, rtk->hh, rtk->mm, rtk->ss, rtk->dss); + if (!strcmp(rbf.utc, gbf.utc)) { + rbf.sat_num = gbf.sat_num; + rbf.latitude = gbf.latitude; + rbf.longitude = gbf.longitude; + rbf.altitude = gbf.altitude; + rbf.speed = gbf.speed; + rbf.trackTure = gbf.trackTure; + MA_SendRtkBrief(&rbf); + } - MA_SendRtkBrief(&brief); UpdateRTKInfo(rtk); } if (events & MCU_UPDATE_EVT) { -- Gitblit v1.8.0