From 27c78b3431a38878b8c8b1b81c79694cea4a2bcf Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 23 七月 2020 10:07:51 +0800
Subject: [PATCH] 20200723

---
 lib/src/main/cpp/rtk_module/rtk.cpp |  112 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 70 insertions(+), 42 deletions(-)

diff --git a/lib/src/main/cpp/rtk_module/rtk.cpp b/lib/src/main/cpp/rtk_module/rtk.cpp
index 5fc26f8..9c766f8 100644
--- a/lib/src/main/cpp/rtk_module/rtk.cpp
+++ b/lib/src/main/cpp/rtk_module/rtk.cpp
@@ -38,7 +38,7 @@
 static gpsStatus_t gpsStatus;
 
 static rtk_info CurrRTKInfo;
-
+static bool needSetPjk = false;
 static void CheckPjkParam(void);
 static void CheckPjkParamTimeout(union sigval sig);
 
@@ -84,55 +84,58 @@
 void handleRTKRebootComp(const struct nmea *s)
 {
     DEBUG("RTK Reboot complete!!");
-    SetAYFactoryParam(5);
+    CheckPjkParam();
 }
 
 void handlePJKParam(const struct nmea *s) {
 //PJK Parameter: A:6378137.000, 1/F:298.257223563, B0:0.000000deg, L0:120.000000, N0:0.000, E0:500000.000.
 //PJK Parameter: A:6378137.000, 1/F:298.257223563, B0:29.512453deg, L0:106.455336, N0:0.000, E0:0.000.
-    bool setparam = true;
-
-    const char DP1[] = "A:6378137.000";
-    const char DP2[] = "1/F:298.257223563";
-    const char DP3[] = "B0:29.512453deg";
-    const char DP4[] = "L0:106.455336";
-    const char DP5[] = "N0:0.000";
-    const char DP6[] = "E0:0.000";
+//    bool setparam = true;
+//
+//    const char DP1[] = "A:6378137.000";
+//    const char DP2[] = "1/F:298.257223563";
+//    const char DP3[] = "B0:29.512453deg";
+//    const char DP4[] = "L0:106.455336";
+//    const char DP5[] = "N0:0.000";
+//    const char DP6[] = "E0:0.000";
 
     AppTimer_delete(CheckPjkParamTimeout);
 
-    for (int i = 0; i < s->nmea_num; ++i) {
-        char out[64] = {0};
+//    for (int i = 0; i < s->nmea_num; ++i) {
+//        char out[64] = {0};
+//
+//        memcpy(out, s->nmea_value[i].data, s->nmea_value[i].length);
+//
+//        DEBUG("handlePJKParam = %s", out);
+//    }
+//
+//    if (s->nmea_num != 6) return;
+//
+//    if (memcmp(s->nmea_value[0].data, DP1, strlen(DP1))) {
+//        setparam = true;
+//    }
+//    if (memcmp(s->nmea_value[1].data, DP2, strlen(DP2))) {
+//        setparam = true;
+//    }
+//    if (memcmp(s->nmea_value[2].data, DP3, strlen(DP3))) {
+//        setparam = true;
+//    }
+//    if (memcmp(s->nmea_value[3].data, DP4, strlen(DP4))) {
+//        setparam = true;
+//    }
+//    if (memcmp(s->nmea_value[4].data, DP5, strlen(DP5))) {
+//        setparam = true;
+//    }
+//    if (memcmp(s->nmea_value[5].data, DP6, strlen(DP6))) {
+//        setparam = true;
+//    }
+//
+//    if (setparam) {
+//        SetAYFactoryParam(5);
+//    }
 
-        memcpy(out, s->nmea_value[i].data, s->nmea_value[i].length);
-
-        DEBUG("handlePJKParam = %s", out);
-    }
-
-    if (s->nmea_num != 6) return;
-
-    if (memcmp(s->nmea_value[0].data, DP1, strlen(DP1))) {
-        setparam = true;
-    }
-    if (memcmp(s->nmea_value[1].data, DP2, strlen(DP2))) {
-        setparam = true;
-    }
-    if (memcmp(s->nmea_value[2].data, DP3, strlen(DP3))) {
-        setparam = true;
-    }
-    if (memcmp(s->nmea_value[3].data, DP4, strlen(DP4))) {
-        setparam = true;
-    }
-    if (memcmp(s->nmea_value[4].data, DP5, strlen(DP5))) {
-        setparam = true;
-    }
-    if (memcmp(s->nmea_value[5].data, DP6, strlen(DP6))) {
-        setparam = true;
-    }
-
-    if (setparam) {
-        SetAYFactoryParam(5);
-    }
+    SetAYFactoryParam(5);
+    needSetPjk = true;
 }
 
 void SetAYFactoryParam(int freq)
@@ -155,8 +158,19 @@
         WriteSerialPort(RTK_MODULE_UART, cmd, strlen(cmd));
     }
 
-    WriteSerialPort(RTK_MODULE_UART, AY_PJKPARAM, strlen(AY_PJKPARAM));
+//    WriteSerialPort(RTK_MODULE_UART, AY_PJKPARAM, strlen(AY_PJKPARAM));
 //    WriteSerialPort(RTK_MODULE_UART, SAVECONFIG, strlen(SAVECONFIG));
+}
+
+void SetPjkPara(int centLon)
+{
+    char buff[64];
+
+    sprintf(buff, "set pjkpara 6378137 298.257223563 0 %d 0 500000\r\n", centLon);
+
+    WriteSerialPort(RTK_MODULE_UART, buff, strlen(buff));
+
+    DEBUG("%s", buff);
 }
 
 void GetGpsStatus(gpsStatus_t &data)
@@ -229,6 +243,8 @@
 
 void handleGPGGA(const struct nmea *s)
 {
+    static uint32_t qfCnt = 0;
+
     DEBUG("handleGPGGA num = %d", s->nmea_num);
     if (s->nmea_num >= 10) {
         gpsStatus.gps_status = str2int(s->nmea_value[5].data, s->nmea_value[5].length);
@@ -263,6 +279,18 @@
         gpsStatus.mm = mm;
         gpsStatus.ss = ss;
         gpsStatus.mss = mss;
+
+        // 璁$畻涓ぎ瀛愬崍绾�
+        int qf = str2int(s->nmea_value[5].data, s->nmea_value[5].length);
+        if (qf > 0) {
+            qfCnt++;
+            if (needSetPjk && qfCnt >= 3) {
+                needSetPjk = false;
+                SetPjkPara(((int) (lon1 / 3.0 + 0.5)) * 3);
+            }
+        } else {
+            qfCnt = 0;
+        }
     }
 }
 

--
Gitblit v1.8.0