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