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
05.01.2019, 20:03
Beitrag #9
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Im Code steht nicht viel mehr. Außer der Ausgabe von Jahr zum seriellen Monitor und einem 1000er Delay.
Im Monitor erscheint meist 255.
Bin gerade nicht mehr am PC.
Das Nextion zeigt die aktuelle Uhrzeit und Datum mit Wochentag an. Ist auch alles über das Display einstellbar.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2019, 20:14
Beitrag #10
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Ohne weitere Information (besonders zur Hex-Folge beim Empfang) ist es unmöglich zu helfen.

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.01.2019, 08:59
Beitrag #11
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Hier mal mein Code:
Code:
int val=0;
int lichtan=0;
int jahr=0;

boolean newData = false;

void endeKennung() //wird zum abschließen eines Sendebefehls ans Nextion benötigt
{
  Serial1.write(0xff);
  Serial1.write(0xff);
  Serial1.write(0xff);
}

void setup() {
  Serial1.begin(9600);
  Serial.begin(9600);
}

void loop() {

  if (lichtan==0)
      {
      lichtan=1;
      }
      else lichtan=0;
  
  
  Serial1.print("get rtc0"); // Jahr anfordern
   endeKennung();
    
    if (Serial1.available() &&  newData == false)
      {
         jahr = Serial1.read();
         newData = true;
      }

  if (newData == true)
      {
      Serial.print(" I received:");
      Serial.print(jahr,HEX);
      Serial.println();
      newData = false;
      }
    
  val=(millis() / 1000);
  Serial.print("Licht an: ");
  Serial.print(lichtan);
  Serial.println();
  
  Serial1.print("temp.val="); //Legt fest wo hin geschrieben werden soll. In dem Fall an Nummernfeld temp.val am Nextion
  Serial1.print(val); // Wert aus val wird übertragen an temp.val
  endeKennung();
  Serial1.print("lichtaktiv.val="); //Legt fest wo hin geschrieben werden soll. In dem Fall an Checkbox lichtaktiv.val am Nextion
  Serial1.print(lichtan); // Wert aus val wird übertragen an lichtaktiv.val
  endeKennung();

  delay(1000);

Als Ausgabe am SeriellenMonitor kommt:
Code:
Licht an: 1
I received:71
Licht an: 0
I received:E3
Licht an: 1
I received:7
Licht an: 0
I received:0
Licht an: 1
I received:0
Licht an: 0
I received:FF
Licht an: 1
I received:FF
Licht an: 0
I received:FF
Licht an: 1
I received:71
Licht an: 0
I received:E3
Licht an: 1
I received:7

Das senden zum Display funktioniert.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2019, 11:48
Beitrag #12
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Also kommt (hex): 71 E3 07 00 00 FF FF FF. Das sieht doch gut aus.

0x71 = Kennung für numerische Daten
0xFF 0xFF 0xFF = Endekennung
E3 = 227 Dez
227+7*256 = 2019 <== Stimmt doch
Oder wenn Du die Zahl von hinten in 4 Byte einliest und diese als unsigned long ausliest:
0x000007E3 = 2019 Dez.

Die Rechenvorschrift hatte ich Dir bereits in #6 gepostet. Es ist sinnvoll, sich die Antworten, die Du bekommst, auch anzuschauen. Wenn Du konkrete Einzelheiten nicht verstehst, kannst Du konkret fragen.

Auf diesem Weg kannst Du alle Zahlen der rtc im Nextion auslesen.

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.01.2019, 12:37 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2019 12:46 von MarkoM.)
Beitrag #13
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
OK, jetzt weiß ich wie sich das zusammen setzt.
Wie schaffe ich es nur die 4 Blöcke zwischen 71 und FF FF FF auszulesen und dann daraus die Zahl zu ermitteln. OK irgendwie mit unsigned long aber wie?
Ich habe mir wohl wirklich zu viel zugetraut.

Für mich ist das totales Neuland. Sorry

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2019, 13:52
Beitrag #14
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Ungetestet (ich habe gerade kein Nextion verfügbar):
Code:
union  puffer{
    long l;
    byte arr[4];
};

void endeKennung() //wird zum abschließen eines Sendebefehls ans Nextion benötigt
{
  Serial1.write(0xff);
  Serial1.write(0xff);
  Serial1.write(0xff);
}

// return -1 wenn nichts da, sonst die Zahl
long getZahl() {
  static puffer p;
  static byte idx;
  static byte anzFF;
  static bool inLesen = false;
  byte b;
  if (Serial1.available()) {
    b = Serial1.read();
    if (!inLesen) {
        if (b == 0x71) { // Anfang gefunden
        inLesen = true;
        idx = 3;
        anzFF = 0;
        return -1L;
      }
    }  
    else {
      if (b == 0xFF) { // Endeanteil
        anzFF++;
        if (anzFF == 3) { // fertig
          inLesen = false;
          return p.l;
        }  
        else return -1L; // in Endebearbeitung
      }
      else {
        p.arr[idx--] = b; // Zahlanteil schreiben
        return -1L;
      }
    }  
  }
  else return -1L;  // nichts da
}

void setup() {
  // ...
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial1.print("get rtc0"); // Jahr anfordern
  endeKennung();
}

void loop() {
long zahl;
  
  zahl = getZahl();
  if (zahl != -1L) Serial.println(zahl);
}

So ungefähr sollte es funktionieren. Die 0x71 erkennen, dort geht es los. Die Zahl ist immer 4 Byte lang, danach kommt 3 mal 0xFF.

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.01.2019, 14:16
Beitrag #15
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Danke Tommy für Deine Bemühungen.
Da kommt jetzt leider -486080512 bei raus.

wenn ich Serial1.print("get rtc0") mit in loop packe kommen sogar unterschiedliche Werte dabei raus.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2019, 15:03
Beitrag #16
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Ok, denkfehler von mir. Wenn man nicht testen kann, macht man halt schnell Fehler.
Code:
// return -1 wenn nichts da, sonst die Zahl
long getZahl() {
  static puffer p;
  static byte idx;
  static byte anzFF;
  static bool inLesen = false;
  byte b;
  if (Serial1.available()) {
    b = Serial1.read();
    if (!inLesen) {
        if (b == 0x71) { // Anfang gefunden
        inLesen = true;
        idx = 0;
        anzFF = 0;
        return -1L;
      }
    }  
    else {
      if (b == 0xFF) { // Endeanteil
        anzFF++;
        if (anzFF == 3) { // fertig
          inLesen = false;
          return p.l;
        }  
        else return -1L; // in Endebearbeitung
      }
      else {
        p.arr[idx++] = b; // Zahlanteil schreiben
        return -1L;
      }
    }  
  }
  else return -1L;  // nichts da
}
Die Bytes müssen in der anderen Reihenfolge rein.

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
  Probleme mit Blinklicht auf bestimmte Zeit Prospekteur 15 270 20.10.2019 17:08
Letzter Beitrag: Tommy56
  Nextion und die Probleme mit Arduino.... alpenpower 7 294 17.10.2019 13:51
Letzter Beitrag: Tommy56
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 323 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
  LED-Symbol auf Nextion-TFT darstellen? alpenpower 4 472 16.09.2019 07:00
Letzter Beitrag: alpenpower
  Aktivierung nur in einer bestimmten Zeit Prospekteur 48 1.959 14.09.2019 12:57
Letzter Beitrag: MicroBahner
  delay Zeit falsch golex 9 1.174 24.05.2019 21:18
Letzter Beitrag: GuaAck
  Keypad auslesen Dieter_T 10 1.328 11.02.2019 20:46
Letzter Beitrag: Dieter_T
  2 Pt1000 über externen AD wandler auslesen Noob63 16 2.344 15.11.2018 20:10
Letzter Beitrag: ardu_arne
  mcp2515 CAN BUS nur eine ID auslesen Golf_Cabrio 6 1.568 24.10.2018 20:51
Letzter Beitrag: Golf_Cabrio
  Schleife bei Zeit x abbrechen BitsAndBytes 7 1.459 23.09.2018 00:30
Letzter Beitrag: BitsAndBytes

Gehe zu:


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