SoftwareSerial mit GPS NEO

Hallo

Ich habe Probleme mit dem GPS Signal

hier mein Code:

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

TinyGPSPlus gps;                          
SoftwareSerial gpsPort(2, 0);             

void setup()
{
  Serial.begin(115200);
  gpsPort.begin(9600); 
  Serial.println("");
  delay(1000);
  Serial.println("Setup durch");
}

void loop()
{                                           
  while (gpsPort.available() > 0)                
    { 
      if (gps.encode(gpsPort.read()))             
      {                                             
      Serial.print("Position = ");
      Serial.print(gps.location.lat(), 6);
      Serial.print(",");
      Serial.println(gps.location.lng(), 6);
      delay(2000);
      } 
    }                     
}

Ich verwende einen ESP8266, weil später noch eine WLAN anbindung und mehr reinkommen soll.

funktioniert auch alles super, nur ich möchte in der Loop auch noch was anderes machen
wie Tastenabfrage , Display ansteuern , GPS ein/ausschalten

sobald ich aber zu dem Code im Loop vorher oder nachher noch was reinschreiben mit einer
Delay von >100ms dann geht die SS übergabe nicht mehr

kann ich den gpsPort abschalten und ihn wieder neu einschalten.

Das Problem ist das ja der GPS ( NEO 6 ) selbstständig jede sekunde Daten sendet,
ich aber den kompletten Datenstrom erwischen muss

wäre cool wenn mir einer einen Tipp geben kann

Da hilft nur der Standardtipp: Verzichte auf delay().

danke für den vorschlag
aber selbst ohne delay geht es nicht
weil die anderen routinen auch zeit benötigen

schnuller:
aber selbst ohne delay geht es nicht
weil die anderen routinen auch zeit benötigen

Das wären ja sehr lange routinen…

Packe alles in einzelne Funktionen und fange mit dem neo6 an.

Abstrakt:
void loop(void)
{
neo6();
for (int i=1; i<3, i++)
{
if (i==1) { machwas(); }
if (i==2) { machwas_anderes(); }
if (i==3) { rechne_was_aus();}
}}

und so weiter.
Dann hast Du bei jedem Durchlauf neo6 drin aber nur eine weitere Funktion.
Macht sich zum debugen schön, weil nur eine Zeile auskommentiert werden muss um einen ganzen Funktionsaufruf/block auszusperren.