ESP8266 loopt vast

Software vragen voor ESP chip familie
Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: ESP8266 loopt vast

Berichtdoor nicoverduin » 07 Feb 2017, 16:06

Zet je hele sketch hier ff neer. Ik kan niet zien hoe jij eea hebt gekopieerd.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: ESP8266 loopt vast

Berichtdoor René » 07 Feb 2017, 16:10

gehele code
cpp code
/*
* programma meet de SO pulsen van een kwh meter die de levering van zonnepanelen meet
* programma stuurt data via HTTP GET requests naar PVoutput.org service.
* programma draait op een esp8266 v1.5.0
* via een website (google.com) wordt de tijd opgehaald
*/
//#include <String.h>
//#include <string.h>
#include <ESP8266WiFi.h>

//Number of pulses, used to measure energy.
long pulseCount = 0;
//Used to measure power.
unsigned long pulseTime,lastTime;

boolean pulse = false;


//power and energy
//double power, opbrengst;
double power, opbrengst;
//Number of pulses per wh - found or set on the meter.
int ppwh = 1; //1000 pulses/kwh = 1 pulse per wh

const char* ssid = "XXXXXXXXX";
const char* password = "XXXXXXXX";
const char* host = "pvoutput.org";
const char* SystemId = "XXXXXXXX";
const char* APIKey = "XXXXXXXXXXXXXXXXXXXX";
int datum = 20170117;
unsigned long sendTime =5000; // tijd tussen verzenden data TIJDELIJK
//unsigned long sendTime =300000; // tijd tussen verzenden data
unsigned long sent = 0; // tijd tussen verzenden data
unsigned long nopowerTime = 1200000; // tijdsduur geen pulsen meer ontvangen
String dag = "01";
String maand = "01";
String jaar = "2017";
String uur = "01";
String minuut = "01";
String tijd = "00:00";

void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// KWH pulsen worden geteld via interrupt
attachInterrupt(2, onPulse, FALLING);
}


void loop() {

if (pulse) {
pulse = !pulse;
pulseCount++;
lastTime = pulseTime;
pulseTime = millis();
//Calculate power
power = (3600000.0 / (pulseTime - lastTime))/ppwh;
//Find Wh elapsed
opbrengst = (1.0*pulseCount/(ppwh));
}

if ((nopowerTime + pulseTime ) > millis()) {
if ((sent + sendTime) < millis()) {

//*******************
char tijdstring[30]; // ontvangst veld van getTime2.
//
// leg de indeling van de uren en minuten over een 6 byte veld (5 voor de tijd + 1 byte voor de terminator ('\0')
union {
struct {
char urenAlsChar[2];
char dubbelePunt;
char minutenAlsChar[2];
char terminator;
}
tijdAlsCharArray[6];
} tijdIndeling;

//
// eerst het resultaat veilig stellen. Dit omdat de char array in de functie dynamisch is en zo kan verdwijnen
//
strcpy(tijdstring, getTime()); // getTime2 geeft een pointer terug dus we kunnen die gelijk in de copy slag gebruiken
//
// nu nog ff de uren/minuten zoeken
//
char * pos = strstr(tijdstring, ":"); // we krijgen een char pointer terug waar de eerste : voorkwam in de array

if (pos != NULL) { // en die moet gevuld zijn
//
// nu 2 posities teruggaan en we hebben het begin van de uren
// deze kopieren we in de union tijdIndeling samen met de dubbele punt en minuten
//
pos = pos - 2;
strncpy(tijdIndeling, pos , 5);
//
// maak nu van uren en minuten elk een kleine char array
//
tijdIndeling.dubbelePunt = '\0';
tijdIndeling.terminator = '\0';
//
// beide kun je nu converteren in een uint8_t bijv.
//
uint8_t uren = atoi(tijdindeling.urenAlsChar);
uint8_t minuten = atoi(tijdindeling.minutenAlsChar);
} else {
//
// als je hier terecht zou komen dan heb je geen tijdstring ontvangen
//
}





//*********************

String stringOne = getTime();
dag = stringOne.substring(5,7);
maand = stringOne.substring(8,11);
jaar = stringOne.substring(12,16);
uur = stringOne.substring(17,19);
minuut = stringOne.substring(20,22);
// 1 uur tijdsverschil met gmt(wellicht gaat het mis met zomertijd moet slimmer kunnen!)
if (uur == "00") uur = "01";
else if (uur == "01") uur = "02";
else if (uur == "02") uur = "03";
else if (uur == "03") uur = "04";
else if (uur == "04") uur = "05";
else if (uur == "05") uur = "06";
else if (uur == "06") uur = "07";
else if (uur == "07") uur = "08";
else if (uur == "08") uur = "09";
else if (uur == "09") uur = "10";
else if (uur == "10") uur = "11";
else if (uur == "11") uur = "12";
else if (uur == "12") uur = "13";
else if (uur == "13") uur = "14";
else if (uur == "14") uur = "15";
else if (uur == "15") uur = "16";
else if (uur == "16") uur = "17";
else if (uur == "17") uur = "18";
else if (uur == "18") uur = "19";
else if (uur == "19") uur = "20";
else if (uur == "20") uur = "21";
else if (uur == "21") uur = "22";
else if (uur == "22") uur = "23";
else if (uur == "23") uur = "00";

tijd = (uur + ":" + minuut);

if (maand == "Jan") maand = "01";
else if (maand == "Feb") maand = "02";
else if (maand == "Mar") maand = "03";
else if (maand == "Apr") maand = "04";
else if (maand == "May") maand = "05";
else if (maand == "Jun") maand = "06";
else if (maand == "Jul") maand = "07";
else if (maand == "Aug") maand = "08";
else if (maand == "Sep") maand = "09";
else if (maand == "Oct") maand = "10";
else if (maand == "Nov") maand = "11";
else if (maand == "Dec") maand = "12";

//Serial.print("connecting to ");
//Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// We now create a URI for the request
String url = "/service/r2/addstatus.jsp?";
url += "key=";
url += APIKey;
url += "&sid=";
url += SystemId;
url += "&d=";
url += jaar;
url += maand;
url += dag;
url += "&t=";
url += tijd;
url += "&v1=";
url += opbrengst;
url += "&v2=";
url += power;
// This will send the request to the server
/* client.print(String("GET ") + url + " HTTP/1.1\r\n" + //TIJDELIJK UITGEZET
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
//Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read all the lines of the reply from server and print them to Serial
while(client.available()) {
String line = client.readStringUntil('\r');
//Serial.print(line);
}
*/ //Serial.println();
//Serial.println("closing connection");
sent = millis();
if ((pulseTime + 600000) < millis()) power = 0; // als er 10 minuten geen pulsen zijn gekomen is power 0
}
}
else {
//Serial.println("verzenden mag niet meer");
if (uur == "22") {
pulseCount = 0;
opbrengst = 0;
power = 0;
}
}
} // einde loop



char * getTime() // functie om tijd op te halen van website
{
char charArray[200]; // ff ruim genomen
charArray[0] = '\0';
uint8_t charArrayIndex = 0;
WiFiClient client;
while (!!!client.connect("www.google.com", 80)) {
Serial.println("connection failed, retrying...");
}
client.print("HEAD / HTTP/1.1\r\n\r\n");
while(!!!client.available()) {
yield();
}
while(client.available()) {
charArray[charArrayIndex] = client.read(); // lees teken in de tabel
if (charArray[charArrayIndex] == '\r' ){ // blijven lezen tot er een return komt
charArray[charArrayIndex] = '\0'; // en sluit te tekst af met een '\0'. De return halen we gelijk weg
//
// kijk of dit de datumregel is
//
char *startPositie;

startPositie = strstr(charArray, "\nDate: ");
//
// is dit is onze regel?
//
if (startPositie != NULL){
//
// yep dus skip 7 posities en we hebben het startpunt
//
startPositie = startPositie + 7; //was 7
client.stop();
return startPositie;
}
else {
// Serial.println(" niet de gewenste regel dus zet hem maar weer op 0 in else");
//
charArray[0] = '\0';
charArrayIndex = 0;
}
}
else {
charArrayIndex++;
}
}
//Serial.println("als je hier terecht komt heb je niet hetgene ontvangen wat je wilde");
client.stop();
return (char *) NULL;
}

void onPulse() { // The interrupt routine
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if (interrupt_time - last_interrupt_time > 1500) { //declare the debounce/block out interval in setup
pulse = true;
}
last_interrupt_time = interrupt_time;
}

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

Re: ESP8266 loopt vast

Berichtdoor nicoverduin » 07 Feb 2017, 16:21

Als het goed is moet deze regel
cpp code
strncpy(tijdIndeling, pos , 5);

vervangen worden door
cpp code
strncpy(tijdIndeling.tijdAlsCharArray, pos , 5);
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: ESP8266 loopt vast

Berichtdoor René » 07 Feb 2017, 16:27

Oops compiler vindt het og niet helemaal ok

Code: Alles selecteren
Arduino: 1.8.1 (Windows XP), Board:"Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 1M (512K SPIFFS), ck, Disabled, None"

C:\Arduino\arduino-1.8.1\Portable\sketchbook\zonnepaneelversie_3\zonnepaneelversie_3.ino: In function 'void loop()':

zonnepaneelversie_3:103: error: cannot convert 'loop()::<anonymous union>::<anonymous struct>*' to 'char*' for argument '1' to 'char* strncpy(char*, const char*, size_t)'

    strncpy(tijdIndeling.tijdAlsCharArray, pos , 5);

                                                  ^

zonnepaneelversie_3:106: error: 'union loop()::<anonymous>' has no member named 'dubbelePunt'

    tijdIndeling.dubbelePunt = '\0';

                 ^

zonnepaneelversie_3:107: error: 'union loop()::<anonymous>' has no member named 'terminator'

    tijdIndeling.terminator   = '\0';

                 ^

zonnepaneelversie_3:111: error: 'tijdindeling' was not declared in this scope

    uint8_t uren       = atoi(tijdindeling.urenAlsChar);

                              ^

exit status 1
cannot convert 'loop()::<anonymous union>::<anonymous struct>*' to 'char*' for argument '1' to 'char* strncpy(char*, const char*, size_t)'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

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

Re: ESP8266 loopt vast

Berichtdoor nicoverduin » 07 Feb 2017, 16:50

Zaten nog een paar kleine dingen in.

Dit compilieert wel
cpp code
#include <Arduino.h>
/*
* programma meet de SO pulsen van een kwh meter die de levering van zonnepanelen meet
* programma stuurt data via HTTP GET requests naar PVoutput.org service.
* programma draait op een esp8266 v1.5.0
* via een website (google.com) wordt de tijd opgehaald
*/
//#include <String.h>
//#include <string.h>
#include <ESP8266WiFi.h>

//Number of pulses, used to measure energy.
long pulseCount = 0;
//Used to measure power.
unsigned long pulseTime,lastTime;

boolean pulse = false;


//power and energy
//double power, opbrengst;
double power, opbrengst;
//Number of pulses per wh - found or set on the meter.
int ppwh = 1; //1000 pulses/kwh = 1 pulse per wh

const char* ssid = "XXXXXXXXX";
const char* password = "XXXXXXXX";
const char* host = "pvoutput.org";
const char* SystemId = "XXXXXXXX";
const char* APIKey = "XXXXXXXXXXXXXXXXXXXX";
int datum = 20170117;
unsigned long sendTime =5000; // tijd tussen verzenden data TIJDELIJK
//unsigned long sendTime =300000; // tijd tussen verzenden data
unsigned long sent = 0; // tijd tussen verzenden data
unsigned long nopowerTime = 1200000; // tijdsduur geen pulsen meer ontvangen
String dag = "01";
String maand = "01";
String jaar = "2017";
String uur = "01";
String minuut = "01";
String tijd = "00:00";

void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// KWH pulsen worden geteld via interrupt
attachInterrupt(2, onPulse, FALLING);
}


void loop() {

if (pulse) {
pulse = !pulse;
pulseCount++;
lastTime = pulseTime;
pulseTime = millis();
//Calculate power
power = (3600000.0 / (pulseTime - lastTime))/ppwh;
//Find Wh elapsed
opbrengst = (1.0*pulseCount/(ppwh));
}

if ((nopowerTime + pulseTime ) > millis()) {
if ((sent + sendTime) < millis()) {

//*******************
char tijdstring[30]; // ontvangst veld van getTime2.
//
// leg de indeling van de uren en minuten over een 6 byte veld (5 voor de tijd + 1 byte voor de terminator ('\0')
union {
struct {
char urenAlsChar[2];
char dubbelePunt;
char minutenAlsChar[2];
char terminator;
};
char tijdAlsCharArray[6];
} tijdIndeling;

//
// eerst het resultaat veilig stellen. Dit omdat de char array in de functie dynamisch is en zo kan verdwijnen
//
strcpy(tijdstring, getTime()); // getTime2 geeft een pointer terug dus we kunnen die gelijk in de copy slag gebruiken
//
// nu nog ff de uren/minuten zoeken
//
char * pos = strstr(tijdstring, ":"); // we krijgen een char pointer terug waar de eerste : voorkwam in de array

if (pos != NULL) { // en die moet gevuld zijn
//
// nu 2 posities teruggaan en we hebben het begin van de uren
// deze kopieren we in de union tijdIndeling samen met de dubbele punt en minuten
//
pos = pos - 2;
strncpy(tijdIndeling.tijdAlsCharArray, pos , 5);
//
// maak nu van uren en minuten elk een kleine char array
//
tijdIndeling.dubbelePunt = '\0';
tijdIndeling.terminator = '\0';
//
// beide kun je nu converteren in een uint8_t bijv.
//
uint8_t uren = atoi(tijdIndeling.urenAlsChar);
uint8_t minuten = atoi(tijdIndeling.minutenAlsChar);
} else {
//
// als je hier terecht zou komen dan heb je geen tijdstring ontvangen
//
}





//*********************

String stringOne = getTime();
dag = stringOne.substring(5,7);
maand = stringOne.substring(8,11);
jaar = stringOne.substring(12,16);
uur = stringOne.substring(17,19);
minuut = stringOne.substring(20,22);
// 1 uur tijdsverschil met gmt(wellicht gaat het mis met zomertijd moet slimmer kunnen!)
if (uur == "00") uur = "01";
else if (uur == "01") uur = "02";
else if (uur == "02") uur = "03";
else if (uur == "03") uur = "04";
else if (uur == "04") uur = "05";
else if (uur == "05") uur = "06";
else if (uur == "06") uur = "07";
else if (uur == "07") uur = "08";
else if (uur == "08") uur = "09";
else if (uur == "09") uur = "10";
else if (uur == "10") uur = "11";
else if (uur == "11") uur = "12";
else if (uur == "12") uur = "13";
else if (uur == "13") uur = "14";
else if (uur == "14") uur = "15";
else if (uur == "15") uur = "16";
else if (uur == "16") uur = "17";
else if (uur == "17") uur = "18";
else if (uur == "18") uur = "19";
else if (uur == "19") uur = "20";
else if (uur == "20") uur = "21";
else if (uur == "21") uur = "22";
else if (uur == "22") uur = "23";
else if (uur == "23") uur = "00";

tijd = (uur + ":" + minuut);

if (maand == "Jan") maand = "01";
else if (maand == "Feb") maand = "02";
else if (maand == "Mar") maand = "03";
else if (maand == "Apr") maand = "04";
else if (maand == "May") maand = "05";
else if (maand == "Jun") maand = "06";
else if (maand == "Jul") maand = "07";
else if (maand == "Aug") maand = "08";
else if (maand == "Sep") maand = "09";
else if (maand == "Oct") maand = "10";
else if (maand == "Nov") maand = "11";
else if (maand == "Dec") maand = "12";

//Serial.print("connecting to ");
//Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// We now create a URI for the request
String url = "/service/r2/addstatus.jsp?";
url += "key=";
url += APIKey;
url += "&sid=";
url += SystemId;
url += "&d=";
url += jaar;
url += maand;
url += dag;
url += "&t=";
url += tijd;
url += "&v1=";
url += opbrengst;
url += "&v2=";
url += power;
// This will send the request to the server
/* client.print(String("GET ") + url + " HTTP/1.1\r\n" + //TIJDELIJK UITGEZET
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
//Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read all the lines of the reply from server and print them to Serial
while(client.available()) {
String line = client.readStringUntil('\r');
//Serial.print(line);
}
*/ //Serial.println();
//Serial.println("closing connection");
sent = millis();
if ((pulseTime + 600000) < millis()) power = 0; // als er 10 minuten geen pulsen zijn gekomen is power 0
}
}
else {
//Serial.println("verzenden mag niet meer");
if (uur == "22") {
pulseCount = 0;
opbrengst = 0;
power = 0;
}
}
} // einde loop



char * getTime() // functie om tijd op te halen van website
{
char charArray[200]; // ff ruim genomen
charArray[0] = '\0';
uint8_t charArrayIndex = 0;
WiFiClient client;
while (!!!client.connect("www.google.com", 80)) {
Serial.println("connection failed, retrying...");
}
client.print("HEAD / HTTP/1.1\r\n\r\n");
while(!!!client.available()) {
yield();
}
while(client.available()) {
charArray[charArrayIndex] = client.read(); // lees teken in de tabel
if (charArray[charArrayIndex] == '\r' ){ // blijven lezen tot er een return komt
charArray[charArrayIndex] = '\0'; // en sluit te tekst af met een '\0'. De return halen we gelijk weg
//
// kijk of dit de datumregel is
//
char *startPositie;

startPositie = strstr(charArray, "\nDate: ");
//
// is dit is onze regel?
//
if (startPositie != NULL){
//
// yep dus skip 7 posities en we hebben het startpunt
//
startPositie = startPositie + 7; //was 7
client.stop();
return startPositie;
}
else {
// Serial.println(" niet de gewenste regel dus zet hem maar weer op 0 in else");
//
charArray[0] = '\0';
charArrayIndex = 0;
}
}
else {
charArrayIndex++;
}
}
//Serial.println("als je hier terecht komt heb je niet hetgene ontvangen wat je wilde");
client.stop();
return (char *) NULL;
}

void onPulse() { // The interrupt routine
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if (interrupt_time - last_interrupt_time > 1500) { //declare the debounce/block out interval in setup
pulse = true;
}
last_interrupt_time = interrupt_time;
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: ESP8266 loopt vast

Berichtdoor René » 07 Feb 2017, 17:17

.....Zaten nog een paar kleine dingen in....... for you a small step for me a giant leap:)

Bedankt bij mij draait het nu ook....nu kijken of ik er verder wat mee kan want het moet nog wel 1 uurtje later worden en het moet nog wel verstuurd worden....

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: ESP8266 loopt vast

Berichtdoor René » 07 Feb 2017, 23:52

helluppppp
Ik probeer om te beginnen 2 dingen:
1. te begrijpen wat er staat daartoe heb ik een verhaal over C en pointers bestudeerd
in de code staat bijv.
Code: Alles selecteren
  // maak nu van uren en minuten elk een kleine char array
   //
   tijdIndeling.dubbelePunt = '\0';
   tijdIndeling.terminator   = '\0';
   //
   // beide kun je nu converteren in een uint8_t bijv.

Ik zou na die tekst iets verwachten als
tijdIndeling.urenAlsChar= '\0'; en
tijdIndeling.urenAlsChar= '\0';


2. ik probeer te "kijken" in wat er nu in al die array's en pointers staat.
Wat ik ook probeer met Serial.println krijg ik alleen maar getallen van max 10 cijfers te zien. het lijkt op de adressen waar de waarde is opgeslagen (er zit telkens een 256 verschil tussen als ik de Array waarden opvraag met bijv Serial.println('tijdIndelig[0]); Serial.println('tijdIndelig[1]); etc
Ook als ik bijvoorbeeld naar *pos kijk zie ik alleen getallen van 10 cijfers terwijl ik verwacht het eerste cijfer van de tijd te zien. gggrrrr ik voel mij stom en toch wil ik voor dat de zon fel gaat branden een stabiel monitoring systeempje

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

Re: ESP8266 loopt vast

Berichtdoor nicoverduin » 08 Feb 2017, 00:20

Een pointer is een adres ergens in het geheugen. Dus je moet wel snappen wat er gebeurt.

Die array van zes bytes zou kunnen bevatten in tekst "23:11\0"
als losse componenten heb je dus
[2 3]
[:]
[1 1]
[\0]

In cijfers hex staat er : 32 33 3A 31 31 00

Dan zet ik op plek 6 en 3 beide '\0' waardoor het er zo uitziet

32 33 \0 31 31 \0

Nu zijn het 2 gewone char arrays met zero termination.
Als je de uren (32 33) door de atoi gooit krijg je 23 en de minuten worden 11.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: ESP8266 loopt vast

Berichtdoor nicoverduin » 08 Feb 2017, 00:25

René schreef:helluppppp
gggrrrr ik voel mij stom en toch wil ik voor dat de zon fel gaat branden een stabiel monitoring systeempje
Maak je geen zorgen.... ik leerde dit in C in 1987, in PL/1 in 1978 en in assembly in 1976....dus ik heb al een tijdje kunnen oefenen. En een groot deel van de mede forumleden kan dit ook niet volgen... Het onderwerp pointers is lastig om te begrijpen maar als het kwartje eenmaal valt.... Dan wordt je de 'eigenaar van het programma' ipv omgekeerd. :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: ESP8266 loopt vast

Berichtdoor René » 08 Feb 2017, 00:40

Ok dat begrijp ik en ik geloof het ook Nico.

overigens mooie uitleg van die omzetting naar 2 char Array's
Maar mijn grijze cellen....tja het gaat niet zo snel. Ik snap dat een array van pointers naar adressen verwijzen waar de "inhoud staat"
Wat ik wil is de inhoud van de 6 bytes array naar mijn monitor sturen met een Serial.print zodat ik kan controleren of de tijd er inderdaad in staat. Ik dacht dat dat kon met een * voor de pointer maar.....

hoe kan ik nu bijvoorbeeld de uren (char array van 2 plus een zero termination) op mijn minitor krijgen?
Ik verwacht dat Serial.println(uren[0]); het eerste cijfer van de uren geeft maar dat is niet zo. Ook Serial.println('uren[0]'); werkt niet
of Serial.println('*uren[0]); ook niet. Natuurlijk maak ik nog steeds een denkfout. maar 2017-1987 is 30 jaar... dan ben ik 98! en zijn die zonnepanelen allang weer van mijn dak af:)

VorigeVolgende

Terug naar ESP Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten