INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Zeit vom Nextion Enhanced mit Arduino auslesen
31.01.2019, 18:24
Beitrag #25
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
(31.01.2019 18:04)Tommy56 schrieb:  Ich vermute, dass bei einem Reset des Arduino nicht automatisch auch ein Reset des Nextion erfolgt.
Du liest dann irgendwas. Es kommt ja auch nicht die Meldung "Beginn Zahlenfolge gefunden" (0x71). Nach einem Reset solltest Du im Setup erst mal alles lesen, was noch in der Queue steht.
Code:
char c;
while (Serial1.available()) c = Serial1.read();

Gruß Tommy

Leider kein Erfolg.
Habe es mal so eingegeben:
Code:
void setup()
{
    Serial.begin(9600);
    Serial1.begin(9600);
    while (Serial1.available())
    {
      c = Serial1.read();
      Serial1.print(c);
    }
}


Ausgabe:

Code:
18:20:24.728 -> get rtc0
18:20:24.762 -> 26
18:20:24.762 -> RTC0 = 1546
18:20:24.762 -> get rtc1
18:20:24.762 -> 255
18:20:24.762 -> RTC1 = 1546
18:20:24.796 -> get rtc2
18:20:24.796 -> 255
18:20:24.796 -> RTC2 = 1546
18:20:24.830 -> get rtc3
18:20:24.830 -> 255
18:20:24.830 -> RTC3 = 1546
18:20:24.864 -> get rtc4
18:20:24.864 -> 113
18:20:24.864 -> Beginn Zahlenfolge gefunden
18:20:24.898 -> 1
18:20:24.898 -> 0
18:20:24.898 -> 0
18:20:24.898 -> 0
18:20:24.898 -> 255
18:20:24.898 -> 255
18:20:24.932 -> 255
18:20:24.932 -> RTC4 = 1

Also keine Änderung. Scheinbar kommen ja auch keine Daten vom Nextion.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2019, 18:40
Beitrag #26
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Da musst Du jetzt diesen Fall mit seriellen Ausgaben durchleuchten. Das kann man nicht mehr aus der Ferne machen.
Eigentlich sollte er ja überhaupt keinen RTC0-Wert liefern, wenn er den Start (0x71) nicht gefunden hat.
Das musst Du jetzt direkt am System herausfinden.

Wie / Wo ist inLesen deklariert? Das muss bei einem Neustart false sein.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 17:25
Beitrag #27
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
So, jetzt habe ich das Abfragen der aktuellen Zeit und der Schaltzeiten gelöst. Es wurden wohl über die Serielle Schnittstelle zu viele Daten gesendet.
Jetzt möchte ich die Time.lib mit den ausgelesenen Daten füttern.
Einfach mit get RTC funktioniert das mit dem Nextion ja leider nicht.

Wie bekomme ich die aktuelle Stunde, Minute, Sekunde in die Time.lib.

So könnte ich die aktuelle Uhrzeit nur z.B. alle 12h vom Nextion abrufen und dann die Zeitenschaltung mit der Lib versuchen.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 17:28
Beitrag #28
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Welche Time-Lib verwendest Du? Es gibt mehrere. Link bitte.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 17:37
Beitrag #29
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
(02.02.2019 17:28)Tommy56 schrieb:  Welche Time-Lib verwendest Du? Es gibt mehrere. Link bitte.

Gruß Tommy
Wollte es mal mit der, von Dir vorgeschlagenen, versuchen.
https://github.com/PaulStoffregen/Time

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 18:03 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2019 18:04 von Tommy56.)
Beitrag #30
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Mit der Lib geht es gut.
Du brauchst eine Funktion, die die Zeit vom Nextion holt und diese in einen time_t (Sekunden seit 1.1.1970 = UNIX-Time) umrechnet und zurück gibt.
Also so was:
Code:
/****************************
Das ist in der TimeLib.h definiert
typedef struct  {
  uint8_t Second;
  uint8_t Minute;
  uint8_t Hour;
  uint8_t Wday;   // day of week, sunday is day 1
  uint8_t Day;
  uint8_t Month;
  uint8_t Year;   // offset from 1970;
} tmElements_t, TimeElements, *tmElementsPtr_t;
**********************************/
// Holt die Zeit vom Nextion und gibt sie als time_t (UNIXZeit) zurück
// im Fehlerfall sollte 0 zurück gegeben werden.
time_t syncWithNextion() {
tmElements_t tm;
// Hole Jahr
tm.Year = Jahr;
// Weiter für die anderen Zeitbestandteile Wday brauchst Du nicht zu setzen

return makeTime(tm); // convert time elements into time_t
}

Dann kannst Du im Setup schreiben (und brauchst Dich nicht weiter darum zu kümmern):
Code:
setSyncProvider(syncWithNextion);
setSyncInterval(6 * 3600L);  // z.B. 6 Stunden

Der Code ist ungetestet und nur als Anregung gedacht. Schaue Dir auch die Beispiele der Lib an.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.02.2019, 11:07
Beitrag #31
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Hallo Tommy,
ich bin schon wieder am verzweifeln.
Kann es sein, das setSyncProvider im Setup keinen längeren Code akzeptiert?
Wenn ich es so mache,
Code:
static bool uhrempf = false;
void setup()
{
    Serial.begin(9600);
    Serial1.begin(115200);
    Serial1.print("page home");
    Serial1.write(NexT,3);
    while (!Serial);
    setSyncProvider(syncWithNextion);
}    
void loop()
{
if (uhrempf)
  {
    Serial.print("Uhrzeit wurde empfangen");
    //setSyncProvider(syncWithNextion);
  }
.......
Ausgabe im Monitor nur: 10:32:29.405 -> get nex_rtc0
Danach passiert nichts mehr.

Änder ich den Code in:
Code:
void setup()
{
    Serial.begin(9600);
    Serial1.begin(115200);
    Serial1.print("page home");
    Serial1.write(NexT,3);
    while (!Serial);
    //setSyncProvider(syncWithNextion);
    
}    

void loop()
{
if (!uhrempf)
  {
    if (!rtc0get) Serial.println("Uhrzeit wird empfangen");
    setSyncProvider(syncWithNextion);
  }
.........
bekomme ich folgendes:
Code:
10:49:38.226 -> Uhrzeit wird empfangen
10:49:38.259 -> get nex_rtc0
10:49:38.495 -> Beginn Zahlenfolge gefunden
10:49:38.702 -> Ende gefunden
10:49:38.702 -> RTC0 = 2019
10:49:38.736 -> get nex_rtc1
10:49:38.736 -> Beginn Zahlenfolge gefunden
10:49:38.770 -> Ende gefunden
10:49:38.770 -> RTC1 = 2
10:49:38.804 -> get nex_rtc2
10:49:38.804 -> Beginn Zahlenfolge gefunden
10:49:38.838 -> Ende gefunden
10:49:38.838 -> RTC2 = 6
10:49:38.872 -> get nex_rtc3
10:49:38.872 -> Beginn Zahlenfolge gefunden
10:49:38.906 -> Ende gefunden
10:49:38.940 -> RTC3 = 10
10:49:38.940 -> get nex_rtc4
10:49:38.940 -> Beginn Zahlenfolge gefunden
10:49:38.974 -> Ende gefunden
10:49:39.008 -> RTC4 = 49
10:49:39.008 -> get nex_rtc5
10:49:39.008 -> Beginn Zahlenfolge gefunden
10:49:39.041 -> Ende gefunden
10:49:39.076 -> RTC5 = 41
10:49:39.076 -> ------------------Datum Uhrzeit empfangen------------------
Also genau das, was passieren sollte.
Wenn ich dann den setSyncInterval mit 10 Sekunden im Setup hinzfüge wird die Uhrzeit auch nicht alle 10 Sekunden aktualisiert. Im Seriellen Monitor wird zumindest nichts angezeigt.
Hier noch mein Code zum synchronisieren. Musste es leider mit vielen if´s machen. anders kam die serielle Kommunikation durcheinander.
Code:
time_t syncWithNextion()
{
  if (!rtc0get)
     {
     if (!getrtc)
        {
        getrtc = true;
        Serial.println("get nex_rtc0");
        Serial1.print("get rtc0");
        Serial1.write(NexT,3);
        }
     datenangefordert = 1;
     nex_rtc0 = getZahl();
     if (nex_rtc0 != -1L)
        {
        Serial.print("RTC0 = ");
        Serial.println(nex_rtc0);
        datenangefordert = 0;
        rtc0get = true;
        getrtc = false;
        }
     }
  if ((!rtc1get) && (rtc0get))
     {
     if (!getrtc)
        {
        getrtc = true;
        Serial.println("get nex_rtc1");
        Serial1.print("get rtc1");
        Serial1.write(NexT,3);
        }
     datenangefordert = 1;
     nex_rtc1 = getZahl();
     if (nex_rtc1 != -1L)
        {
        Serial.print("RTC1 = ");
        Serial.println(nex_rtc1);
        datenangefordert = 0;
        rtc1get = true;
        getrtc = false;
        }
     }
  if ((!rtc2get) && (rtc1get))
     {          
     if (!getrtc)
        {
        getrtc = true;
        Serial.println("get nex_rtc2");
        Serial1.print("get rtc2");
        Serial1.write(NexT,3);
        }
     datenangefordert = 1;
     nex_rtc2 = getZahl();
     if (nex_rtc2 != -1L)
        {
        Serial.print("RTC2 = ");
        Serial.println(nex_rtc2);
        datenangefordert = 0;
        rtc2get = true;
        getrtc = false;
        }
     }

  if ((!rtc3get) && (rtc2get))
     {
     if (!getrtc)
        {
        getrtc = true;
        Serial.println("get nex_rtc3");
        Serial1.print("get rtc3");
        Serial1.write(NexT,3);
        }
     datenangefordert = 1;
     nex_rtc3 = getZahl();
     if (nex_rtc3 != -1L)
        {
        Serial.print("RTC3 = ");
        Serial.println(nex_rtc3);
        datenangefordert = 0;
        rtc3get = true;
        getrtc = false;
        }
     }
  if ((!rtc4get) && (rtc3get))
     {
     if (!getrtc)
        {
        getrtc = true;
        Serial.println("get nex_rtc4");
        Serial1.print("get rtc4");
        Serial1.write(NexT,3);
        }
     datenangefordert = 1;
     nex_rtc4 = getZahl();
     if (nex_rtc4 != -1L)
        {
        Serial.print("RTC4 = ");
        Serial.println(nex_rtc4);
        datenangefordert = 0;
        rtc4get = true;
        getrtc = false;
        }
     }
  if ((!rtc5get) && (rtc4get))
     {
     if (!getrtc)
        {
        getrtc = true;
        Serial.println("get nex_rtc5");
        Serial1.print("get rtc5");
        Serial1.write(NexT,3);
        }
     datenangefordert = 1;
     nex_rtc5 = getZahl();
     if (nex_rtc5 != -1L)
        {
        Serial.print("RTC5 = ");
        Serial.println(nex_rtc5);
        datenangefordert = 0;
        rtc5get = true;
        getrtc = false;
        }
     }
if (rtc5get && !getrtc)
   {
   tmElements_t tm;    
   tm.Year = (nex_rtc0-1970);
   tm.Month = nex_rtc1;
   tm.Day = nex_rtc2;
   tm.Hour = nex_rtc3;
   tm.Minute = nex_rtc4;
   tm.Second = nex_rtc5;
   rtc0get = false;
   rtc1get = false;
   rtc2get = false;
   rtc3get = false;
   rtc4get = false;
   rtc5get = false;
   uhrempf = true;
   Serial.println("------------------Datum Uhrzeit empfangen------------------");
   return makeTime(tm); // convert time elements into time_t
   }
}
Hast Du zufällig noch einen Lösungsvorschlag?

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.02.2019, 11:17
Beitrag #32
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Einfach machen, was ich Dir geschrieben habe und alles lesen.
SetSyncProvider gehört ins setup.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  delay Zeit falsch golex 9 942 24.05.2019 21:18
Letzter Beitrag: GuaAck
  Keypad auslesen Dieter_T 10 1.112 11.02.2019 20:46
Letzter Beitrag: Dieter_T
  2 Pt1000 über externen AD wandler auslesen Noob63 16 1.970 15.11.2018 20:10
Letzter Beitrag: ardu_arne
  mcp2515 CAN BUS nur eine ID auslesen Golf_Cabrio 6 1.328 24.10.2018 20:51
Letzter Beitrag: Golf_Cabrio
  Schleife bei Zeit x abbrechen BitsAndBytes 7 1.286 23.09.2018 00:30
Letzter Beitrag: BitsAndBytes
  Sensor mit 10 Hz auslesen Olafson Larson 7 1.325 05.07.2018 15:59
Letzter Beitrag: Tommy56
  Zeit-Server-Problem 182 19 3.626 07.06.2018 21:42
Letzter Beitrag: ardu_arne
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 2.883 05.04.2018 10:54
Letzter Beitrag: amithlon
Star BME680 IAQ Wert auslesen Bitklopfer 9 7.089 18.03.2018 02:33
Letzter Beitrag: Wampo
  Serial auslesen > 64 Byte uk1408 18 3.273 09.03.2018 16:05
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste