vshymanskyy / TinyGSM

A small Arduino library for GSM modules, that just works
GNU Lesser General Public License v3.0
1.93k stars 715 forks source link

SIM7600E GPS output problems #508

Closed star297 closed 3 years ago

star297 commented 3 years ago

[x] I have read the Troubleshooting section of the ReadMe

What type of issues is this?

[ ] Request to support a new module

[ ] Bug or problem compiling the library [x] Bug or issue with library functionality (ie, sending data over TCP/IP) [ ] Question or request for help

What are you working with?

Modem: SIM7600E (PCI mount) Main processor board: ESP32 TinyGSM version: Latest Code:

Scenario, steps to reproduce

GPS not outputting most values, difficult to describe, but the problem seems to occur when there's fixmode lock, then takes 4 seconds to respond with updates and the Latitude frozen with a -ve value.

You also might want to remove the '=32' part of line 438 in TinyGsmClientSIM7600.h

sendAT(GF("+CGNSSINFO=32"));

That makes the device output a NMEA line on the serial port every 32 seconds. I did remove it but the same problem. I have written my own function (not using 'String') outside the library to get all the GPS values using the

modem.getGPSraw()

which works fine as does the rest of the library.

I generally use this example to get GPS data, quite efficient and get's the values into character containers.

char GPSdata[20][16];
int t = 0, n = 0, i = 0;

String GPSin = modem.getGPSraw();

  (char*) GPSin.c_str();
  int len = GPSin.length() + 1;

  for (i = 0; i <= len; i++) {
    if (GPSin[i] != ',') {
      if (n <= 16) {
        GPSdata[n][t] = GPSin[i];
        t++;
      }
    }
    else {
      GPSdata[n][t] = '\0';
      n++; t = 0;
    }
  }

Expected result

Actual result

Debug and AT command log