fctom1215
2020-02-19 32e789cf43a39565a506da32f2a952c8398aa4c0
GPS信息合并到RTK中,以RTK包,发送
6个文件已修改
97 ■■■■ 已修改文件
Documents/模拟驾考APP内部通讯.docx 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/master/comm_if.cpp 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/master/comm_if.h 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/rtk_module/rtk.cpp 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/rtk_module/rtk.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/rtk_platform/platform.cpp 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Documents/Ä£Äâ¼Ý¿¼APPÄÚ²¿Í¨Ñ¶.docx
Binary files differ
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());
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];
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) {
            // åŒæ­¥çš„GGA消息也收集了
            PlatformStatusChanged(GPS_UPDATE_EVT, (uint8_t *)&gpsStatus, sizeof(gpsStatus));
lib/src/main/cpp/rtk_module/rtk.h
@@ -20,6 +20,7 @@
    double longitude;
    double altitude;
    double speed;
    double trackTure;
}gpsStatus_t;
typedef struct {
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) {