Hallöle.
Seit etlichen Stunden sitze ich jetzt dran: mir stürzen die beiden Graphen (in Wirklichkeit sind es zwei, aber so wie hier gezeigt, mit einem, funktionierts schon nicht) ab.
Folgendes funktioniert "scheinbar":
void zeichneGraphenKomplett()// ****************** erste Ausgabe der kompletten Graphen *********************************************
{
int i=0;
while(i<graphZeiger)
{
Serial1.print("add 2,0,");
Serial1.print(baroGraph[i]);
Serial1.write(displayEnde,3);
i++;
}
}
Scheinbar deshalb, weil ich mit endlosen Testreihen ziemlich sicher bin, dass genau dort der Hund begraben liegt.
Hier wird erstmal der Graph bis zum "aktuellen" Punkt gezeichnet, und das klappt auch.
Jedoch wird später dann das aufgerufen:
void aktualisiereGraphen()
{
Serial1.print("add 2,0,"); // Barograph
Serial1.print(baroGraph[graphZeiger]);
Serial1.write(displayEnde,3);
}
Nun startet der Graph wieder von vorne.
Die Daten, die er ausgibt (Wert), sind aber korrekt!
Lasse ich den ersten Codeteil weg, funktionierts.
Der Graph ist 240px lang und 50 hoch, und ich hab sichergestellt, dass keine Daten kommen können, die ausserhalb der Bereiche liegen:
-baroGraph ist begrenzt auf Werte zwischen 1 und 49-> hab ich auch überprüft, indem ich mir hab das gesamte Array ausgeben lassen
-graphZeiger wir aus der aktuellen Uhrzeit so berechnet:
graphZeiger=((stunde*10)+(minute/6)) ; // Zeiger für die Arrays berechnen
Auch das funktioniert (auch überprüft).
Ich hab endlos herumprobiert-nix klappt. Hat jemand eine Idee, was ich übersehen hab?
Falls es wichtig ist: das Nextion (bzw. die Kommunikation damit) läuft mit 57600 Baud und funktioniert auch.
Im selben Bildschirm wird die Uhrzeit (mit Sekunden) ausgegeben, die kommt einwandfrei an.
Es scheint so, als würde am Schluss von zeichneGraphenKomplett() einfach nur der Graph abschmieren, und quasi neu starten (spätere Ausgaben von aktualisiereGraphen() sind ja im Prinzip korrekt- nur die Position (y=0, statt y=graphZeiger) stimmt nicht mehr.
Nach diesem "Neustart" wird der Graph übrigens dann durchaus korrekt weitergeführt.
Auch das deutet darauf hin, dass der Hund im ersten Teil begraben liegt....
Probehalber hatte ich auch versucht, den ersten Teil der Graphen mit addt() zu zeichnen, das haut auch nicht hin.
Da werden "frei erfundene Werte" (nicht nachvollziehbare, unterschiedliche) ausgegeben und der Graph schmiert genauso ab. Vor dem ersten Zeichnen wird das Array natürlich befüllt- mit lauter 5en.
Auch das haut hin (überprüft).
Irgendwas hab ich offenbar übersehen- nur was?