Nextio Fehler ?

Hallo
bei

#include "NexButton.h"
#include "NexText.h"

NexButton b0 = NexButton(0, 2, "b0");
NexButton b1 = NexButton(0, 3, "b1");
NexButton b2 = NexButton(0, 4, "b2");
NexButton b3 = NexButton(0, 5, "b3");

char buffer[10] = {0};

NexTouch *nex_Listen_List[] =
{
  &b0,
  &b1,
  &b2,
  &b3,
  NULL
};

/**
   Button to return the response.

   @param ptr - the parameter was transmitted to pop event function pointer.

*/
void b0PopCallback(void *ptr)
{
  dbSerial.print("Button 0");
  NexButton *btn = (NexButton *)ptr;
  memset(buffer, 0, sizeof(buffer));
  btn->getText(buffer, sizeof(buffer));
  if (strcmp(buffer, "ON"))
  {
    digitalWrite(9, HIGH);
    strcpy(buffer, "ON");
  }
  else
  {
    digitalWrite(9, LOW);
    strcpy(buffer, "OFF");
  }
  btn->setText(buffer);

}

/**
   Button to return the response.

   @param ptr - the parameter was transmitted to pop event function pointer.

*/
void b1PopCallback(void *ptr)
{
  NexButton *btn = (NexButton *)ptr;
  memset(buffer, 0, sizeof(buffer));
  btn->getText(buffer, sizeof(buffer));
  if (strcmp(buffer, "ON"))
  {
    digitalWrite(10, HIGH);
    strcpy(buffer, "ON");
  }
  else
  {
    digitalWrite(10, LOW);
    strcpy(buffer, "OFF");
  }
  btn->setText(buffer);

}
/**
   Button to return the response.

   @param ptr - the parameter was transmitted to pop event function pointer.

*/
void b2PopCallback(void *ptr)
{
  NexButton *btn = (NexButton *)ptr;
  memset(buffer, 0, sizeof(buffer));
  btn->getText(buffer, sizeof(buffer));
  if (strcmp(buffer, "ON"))
  {
    digitalWrite(11, HIGH);
    strcpy(buffer, "ON");

  }
  else
  {
    digitalWrite(11, LOW);
    strcpy(buffer, "OFF");
  }
  btn->setText(buffer);

}
/**
   Button to return the response.

   @param ptr - the parameter was transmitted to pop event function pointer.

*/
void b3PopCallback(void *ptr)
{
  NexButton *btn = (NexButton *)ptr;
  memset(buffer, 0, sizeof(buffer));
  btn->getText(buffer, sizeof(buffer));
  if (strcmp(buffer, "ON"))
  {
    digitalWrite(12, HIGH);
    strcpy(buffer, "ON");
  }
  else
  {
    digitalWrite(12, LOW);
    strcpy(buffer, "OFF");
  }
  btn->setText(buffer);

}

void setup(void)
{
 // Serial.begin(9600);
  nexInit();
  b0.attachPop(b0PopCallback, &b0);
  b1.attachPop(b1PopCallback, &b1);
  b2.attachPop(b2PopCallback, &b2);
  b3.attachPop(b3PopCallback, &b3);
  //setting port OUTPUT
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  //initializing  port
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
}

void loop(void)
{
  nexLoop(nex_Listen_List);
}

bekomme ich

recvRetCommandFinished err
recvRetCommandFinished err

im Seriellen Monitor, was zur Hölle ist da los ?

ok der Fehler muss irgendwo in der Libary sein

mit den Uno geht es , mit dem mega (Serial2) nicht

Schau mal in Deine NexConfig.h wie da die Schnittstellen eingestellt sind.

Auf dem UNO läuft es meist über Softserial ansonsten über Serial (ungünstig)

Gruß Tommy

da steht :

/** 
 * Define DEBUG_SERIAL_ENABLE to enable debug serial. 
 * Comment it to disable debug serial. 
 */
#define DEBUG_SERIAL_ENABLE

/**
 * Define dbSerial for the output of debug messages. 
 */
#define dbSerial Serial

/**
 * Define nexSerial for communicate with Nextion touch panel. 
 */
#define nexSerial Serial2


#ifdef DEBUG_SERIAL_ENABLE
#define dbSerialPrint(a)    dbSerial.print(a)
#define dbSerialPrintln(a)  dbSerial.println(a)
#define dbSerialBegin(a)    dbSerial.begin(a)
#else
#define dbSerialPrint(a)    do{}while(0)
#define dbSerialPrintln(a)  do{}while(0)
#define dbSerialBegin(a)    do{}while(0)
#endif

/**
 * @}
 */

#endif /* #ifndef __NEXCONFIG_H__ */

müsste also richtig sein, das Display ist an D16/TX2 und D17/RX2 angeschlossen ich habe den Eindruck dass dort zu schnell o. zu langsam gesende b.z.w. empfangen wird da ab und zu irgendwelche Zeichen kommen

anstelle von
// Serial.begin(9600);
solltest Du wohl dann schreiben
nexSerial.begin(9600);

Wenn Du das Nextion mit der originalen Baudrate betreibst.

Gruß Tommy

nein das hilft auch nicht ....

über den seriellen Monitor kommt folgendes

15:28:49
Error reading temperature!
schliessen
2
Reed=1
Timer =1

15:28:50
Error reading temperature!
[2103:0,2,bSetup] Button gedrückt
recvRetCommandFinished err diese meldung stammt von nexHardware.h scheint sich um timeout zu Handeln
schliessen
2
Reed=1
Timer =1

das Nextion ist fest auf 9600 eingestellt und die Funktion nexInit() setzt dbSerial (Serial0) und nexSerial (serial2) auf 9600

bin aber nicht der einzige der damit wohl Probleme hat

Wenn Der Code aber auf dem UNO läuft, kann es nicht in der Lib liegen.

Willst Du die Temperatur die nicht gemessen wird, zum Nextion senden? Was steht denn da in der Variable drin?

Dein if (strcmp(buffer, "ON")) ist übrigens auch falsch. strcmp liefert 0 zurück, wenn beide gleich sind und 0 ist false.

Gruß Tommy

mom das war ein anderes Script

beim geposteten Sript kommt nur die Fehlermeldung, bei beiden versuchen ist der code identisch dann kann der fehler ja nur noch in der Hardware liegen und das der Mega def. ist glaube ich eher weniger

ok muss ich jetzt nicht verstehen Serial1 geht wunder

Kontaktprobleme auf dem Steckbrett oder der Verbindung zum Nextion?

Gruß Tommy

wohl eher auf der shild

Hm ok die 1. Seite wird angezeigt die 2. Auch nur kommen dann werden dann die Buttons von einer ganz anderen Seite ausgelöst .....

Seite 2 hat Button bBack2 es kommt aber bBack1 von der logisch nä. Seite

  1. Seite ist der Homescreen 2. Seite ist die Auswahl was eingestellt werden soll 3. Seite währe die Einstellung der Uhr , von der Seite kommen die Buttons wenn ich noch in der Auswahl bin ....

sehr merkwürdig da der Code schon sehr umfangreich ist will ich den hier nicht unbeding im vollem Umfang posten hat jmd event. einen Tip wodrann das jetzt wieder liegen kann , ich dreh hier noch am Rad immer ist irgenwas mit den scheiss kram

Der Fehler dazu kann auch in der Programmierung auf dem Nextion liegen. Die läßt sich hier aber schlecht darstellen.
Prüfe alle Schreibweisen in beiden Teilen peinlich genau. Hast Du bei den Buttons die Eventhandler im Nextion richtig geschrieben?

Hier müssen 2 Programme, die Du geschrieben hast, einander verstehen, da genügt ein falsches Zeichen, dass es schief geht.

Du kannst das Nextionprogramm doch auch im Nextioneditor testen. Tut es da das, was Du geplant hast? Auch wieder alle Bezeichnungen genau prüfen.

Gruß Tommy

ok jetzt geht die "Screens" waren wohl nicht in der richtigen Reihenfolge ......

wie kann ich eine Zahl 00 bis 59 in string umwandeln ?

Zahl = 10

itoa(zahl,aus,10) scheint nicht zu gehen da kommt ein "" raus also nichts

die zahl soll mittel

bStunde.setText(); als Button angezeigt werden

itoa ist schon richtig. Wie ist aus deklariert?

Gruß Tommy

Hallo,
könnte sein, das Deine Button´s auf vscope=global stehen?
Wenn der Button nur für eine Seite stehen soll, dann setz den mal auf vscope=local.

Ich halte es für "einfacher" das Nextion ohne- Lib zu nutzen, nur so am Rande.
Gruß und Spaß
Andreas

Hartig_jue:
itoa(zahl,aus,10) scheint nicht zu gehen da kommt ein "" raus also nichts

Das muss gehen wenn der Puffer groß genug ist

Hallo,
"wie kann ich eine Zahl 00 bis 59 in string umwandeln ?"

Geht die Zahl vom Arduino zum Nextion- oder vom Nextion zum Arduino?
Gruß und Spaß
Andreas

SkobyMobil:
Ich halte es für "einfacher" das Nextion ohne- Lib zu nutzen, nur so am Rande.

Ich auch, ich hatte nur bisher viel zu wenig Zeit, das Ding zu benutzen.
Es ist ja eigentlich nur eine einfache serielle Kommunikation mit bestimmten Regeln.

Gruß Tommy