Nextion CompText voorbeeld

algemene C code
Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Nextion CompText voorbeeld

Berichtdoor Dries » 15 Feb 2017, 22:36

Wie heeft dit voorbeeld als eens geprobeerd? dit voorbeeld werkt niet bij, eerste probleem is dat wanneer ik het TFT bestand in de Nextion wil kopieren, krijg ik de melding dat de ID van het scherm niet overeenkomt. ik maak dan zelf een voorbeeld met twee knoppen met dezelfde id en objectnamen voor de knoppen maar helaas dit werkt ook niet....

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nextion CompText voorbeeld

Berichtdoor nicoverduin » 15 Feb 2017, 22:52

Zet je code maar hier neer
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion CompText voorbeeld

Berichtdoor Dries » 15 Feb 2017, 23:41

cpp code
#include "Nextion.h"
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 22
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void t0PopCallback(void *ptr);
void b0PopCallback(void *ptr);
void b1PopCallback(void *ptr);

/*
* Declare a text object [page id:0,component id:1, component name: "t0"].
*/
NexText t0 = NexText(0, 1, "t0");

/*
* Declare a button object [page id:0,component id:2, component name: "b0"].
*/
NexButton b0 = NexButton(0, 2, "b0");

/*
* Declare a button object [page id:0,component id:3, component name: "b1"].
*/
NexButton b1 = NexButton(0, 3, "b1");
NexText temperature = NexText(0, 4, "t1");
char buffer[100] = {0};

/*
* Register object t0, b0, b1, to the touch event list.
*/
NexTouch *nex_listen_list[] =
{
&t0,
&b0,
&b1,
NULL
};

/*
* Text component pop callback function.
*/
void t0PopCallback(void *ptr)
{
dbSerialPrintln("t0PopCallback");
t0.setText("25");
}

/*
* Button0 component pop callback function.
* In this example,the value of the text component will plus one every time when button0 is released.
*/
void b0PopCallback(void *ptr)
{
uint16_t len;
uint16_t number;

dbSerialPrintln("b0PopCallback");

memset(buffer, 0, sizeof(buffer));
t0.getText(buffer, sizeof(buffer));

number = atoi(buffer);
number += 1;

memset(buffer, 0, sizeof(buffer));
itoa(number, buffer, 10);

t0.setText(buffer);
}

/*
* Button1 component pop callback function.
* In this example,the value of the text component will minus one every time when button1 is released.
*/
void b1PopCallback(void *ptr)
{
uint16_t len;
uint16_t number;

dbSerialPrintln("b1PopCallback");

memset(buffer, 0, sizeof(buffer));
t0.getText(buffer, sizeof(buffer));

number = atoi(buffer);
number -= 1;

memset(buffer, 0, sizeof(buffer));
itoa(number, buffer, 10);

t0.setText(buffer);
}

void setup(void)
{
Serial.begin(9600);
sensors.begin(); /* Set the baudrate which is for debug and communicate with Nextion screen. */
nexInit();

/* Register the pop event callback function of the current text component. */
t0.attachPop(t0PopCallback);

/* Register the pop event callback function of the current button0 component. */
b0.attachPop(b0PopCallback);

/* Register the pop event callback function of the current button1 component. */
b1.attachPop(b1PopCallback);

dbSerialPrintln("setup done");
}

void loop(void)
{
sensors.requestTemperatures();
float temperatuur = sensors.getTempCByIndex(0);
memset(buffer, 0, sizeof(buffer));

dtostrf(temperatuur, 3, 1, buffer);
temperature.setText(buffer);
/*
When a pop or push event occured every time,
* the corresponding component[right page id and component id] in touch event list will be asked.
*/
Serial.println(sensors.getTempCByIndex(0));
nexLoop(nex_listen_list);
}

ondertussen werkt het voorbeeld maar heb ik een ander probleempje, ik heb een vak toegevoegd om de temperatuur te laten zien in het vak t1. nu is de bedoeling om met de knoppen de grens te verhogen of te verlagen (zoals een thermostaat). als ik op de knoppen druk verhoogd of verlaagd het getal in t0 niet.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nextion CompText voorbeeld

Berichtdoor nicoverduin » 15 Feb 2017, 23:59

Heb je wel die check boxen voor events aangevinkt in de Nextion editor? Door ze aan te vinken krijg je ook events binnen. Anders niet.
En waarom moet de Nextion "luisteren" naar events in de textbox? Je hebt een pop callback voor T0 gemaakt. Als de pop events al aangezet zijn krijg je een callback als je op het textveld tikt. Was dat de bedoeling? Anders hoef je alleen maar te luisteren naar componenten die echt events gaan uitsturen. Anders is het een beetje zinloos. Verder zou ik de [ code2=cpp ] en [ /code2 ] (beide zonder de tussenliggende spaties) gebruiken om de leesbaarheid van de code te verbeteren. Dan zie je gelijk wat je af en toe CTRL-T moet doen in de Arduino IDE om je code wat te formatteren. Alles om de leesbaarheid te verbeteren. Slordige code geeft immers slechte programma's......
Tenslotte is het wel belangrijk dat die page en component ids in overeenstemming zijn met de werkelijke id's in de Nextion Editor. Die nummers zijn gekoppelt aan de interne structuur van de TFT die je in de nextion laad
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion CompText voorbeeld

Berichtdoor Dries » 16 Feb 2017, 20:14

Nico, de checkboxen waren inderdaad niet aangevinkt.
het is de bedoeling dat enkel de knoppen events uitsturen, de id's van de componenten komen overeen met de id's in de sketch.
het gekke is nu wanneer ik de regels

memset(buffer, 0, sizeof(buffer));
dtostrf(temperatuur, 3, 1, buffer);
temperature.setText(buffer);

weg haal, het originele voorbeeld wel werkt, dus wanneer er op b0 wordt gedrukt de waarde in de textbox met 1 verhoogt.
de temperatuur wordt nu niet weergegeven op de Nextion.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nextion CompText voorbeeld

Berichtdoor nicoverduin » 16 Feb 2017, 20:32

Dan heb je kennelijk nog iets niet goed zitten.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion CompText voorbeeld

Berichtdoor Dries » 16 Feb 2017, 20:59

Op de serial komen de events ook niet binnen van de knoppen

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nextion CompText voorbeeld

Berichtdoor nicoverduin » 16 Feb 2017, 21:22

En als je die statements eruit halt werkt het wel...dus?......
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion CompText voorbeeld

Berichtdoor Dries » 16 Feb 2017, 21:34

ik ben niet mee :oops:

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nextion CompText voorbeeld

Berichtdoor nicoverduin » 16 Feb 2017, 21:50

Drie statements... een of meer werken niet goed kennelijk.... ik maak gebruik van een functie dtostrf(). ... wat zijn eigenlijk de specificaties...kan ik tussen resultaten prtinten op de serial?.....dit soort vragen moet jij dus aan jezelf stellen...en dan leg ik je daarna wel uit hoe jet programma kan halveren... in code....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten