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
Eine Funktion vorher definieren ?
27.12.2015, 19:40 (Dieser Beitrag wurde zuletzt bearbeitet: 27.12.2015 19:43 von arduinofan.)
Beitrag #1
Eine Funktion vorher definieren ?
Hallo, guten Tag.

Ich möchte bitte eine Funktion aufrufen die aber erst nach dem Aufruf erstellt wurde.
Wie wird eine Function vorher declariert.

.......
test declarieren....

test();

Void Test()
.... ;

Danke.

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.12.2015, 23:41
Beitrag #2
RE: Eine Funktion vorher definieren ?
Damit kann ich nichts anfangen.

Ich möchte die Funktionen nicht immer ganz vorn ansetzen.

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 01:23
Beitrag #3
RE: Eine Funktion vorher definieren ?
(27.12.2015 23:41)arduinofan schrieb:  Damit kann ich nichts anfangen.

Ich möchte die Funktionen nicht immer ganz vorn ansetzen.

Gruss

...du kannst die Funktionen auch ohne irgend ne vorherige Deklaration nach der Loop schreiben...das mach ich immer so.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 08:48
Beitrag #4
RE: Eine Funktion vorher definieren ?
Hier geht es nur wenn ich die Funktionen alle vorn vor dem Aufruf reinsetze, dann funktioniert es.

Wenn ich es nicht mache kommt die Meldung zb Beispiel :
'WiFiStart' was not declared in this scope

Code:
#include <ESP8266WiFi.h>

const char* ssid = "SSID_OF_YOUR_NETWORK_HERE";
const char* password = "WIFI_PASSWORD_GOES_HERE";

unsigned long ulReqcount;
unsigned long ulReconncount;


// Create an instance of the server on Port 80
WiFiServer server(80);

void setup()
{
  // setup globals
  ulReqcount=0;
  ulReconncount=0;
  
  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  
  // start serial
  Serial.begin(9600);
  delay(1);
  
  // inital connect
  WiFi.mode(WIFI_STA);
  WiFiStart();
}

void WiFiStart()
{
  ulReconncount++;
  
  // Connect to 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");
  
  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop()
{
  // check if WLAN is connected
  if (WiFi.status() != WL_CONNECTED)
  {
    WiFiStart();
  }
  
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client)
  {
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  unsigned long ultimeout = millis()+250;
  while(!client.available() && (millis()<ultimeout) )
  {
    delay(1);
  }
  if(millis()>ultimeout)
  {
    Serial.println("client connection time-out!");
    return;
  }
  
  // Read the first line of the request
  String sRequest = client.readStringUntil('\r');
  //Serial.println(sRequest);
  client.flush();
  
  // stop client, if request is empty
  if(sRequest=="")
  {
    Serial.println("empty request! - stopping client");
    client.stop();
    return;
  }
  
  // get path; end of path is either space or ?
  // Syntax is e.g. GET /?pin=MOTOR1STOP HTTP/1.1
  String sPath="",sParam="", sCmd="";
  String sGetstart="GET ";
  int iStart,iEndSpace,iEndQuest;
  iStart = sRequest.indexOf(sGetstart);
  if (iStart>=0)
  {
    iStart+=+sGetstart.length();
    iEndSpace = sRequest.indexOf(" ",iStart);
    iEndQuest = sRequest.indexOf("?",iStart);
    
    // are there parameters?
    if(iEndSpace>0)
    {
      if(iEndQuest>0)
      {
        // there are parameters
        sPath  = sRequest.substring(iStart,iEndQuest);
        sParam = sRequest.substring(iEndQuest,iEndSpace);
      }
      else
      {
        // NO parameters
        sPath  = sRequest.substring(iStart,iEndSpace);
      }
    }
  }
  
  ///////////////////////////////////////////////////////////////////////////////
  // output parameters to serial, you may connect e.g. an Arduino and react on it
  ///////////////////////////////////////////////////////////////////////////////
  if(sParam.length()>0)
  {
    int iEqu=sParam.indexOf("=");
    if(iEqu>=0)
    {
      sCmd = sParam.substring(iEqu+1,sParam.length());
      Serial.println(sCmd);
    }
  }
  
  
  ///////////////////////////
  // format the html response
  ///////////////////////////
  String sResponse,sHeader;
  
  ////////////////////////////
  // 404 for non-matching path
  ////////////////////////////
  if(sPath!="/")
  {
    sResponse="<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL was not found on this server.</p></body></html>";
    
    sHeader  = "HTTP/1.1 404 Not found\r\n";
    sHeader += "Content-Length: ";
    sHeader += sResponse.length();
    sHeader += "\r\n";
    sHeader += "Content-Type: text/html\r\n";
    sHeader += "Connection: close\r\n";
    sHeader += "\r\n";
  }
  ///////////////////////
  // format the html page
  ///////////////////////
  else
  {
    ulReqcount++;
    sResponse  = "<html><head><title>Demo f&uumlr ESP8266 Steuerung</title></head><body>";
    sResponse += "<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">";
    sResponse += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">";
    sResponse += "<h1>Demo f&uumlr ESP8266 Steuerung</h1>";
    sResponse += "Funktion 1 schaltet GPIO2 und erzeugt eine serielle Ausgabe.<BR>";
    sResponse += "Funktion 2 erzeugt nur eine serielle Ausgabe.<BR>";
    sResponse += "<FONT SIZE=+1>";
    sResponse += "<p>Funktion 1 <a href=\"?pin=FUNCTION1ON\"><button>einschalten</button></a>&nbsp;<a href=\"?pin=FUNCTION1OFF\"><button>ausschalten</button></a></p>";
    sResponse += "<p>Funktion 2 <a href=\"?pin=FUNCTION2ON\"><button>einschalten</button></a>&nbsp;<a href=\"?pin=FUNCTION2OFF\"><button>ausschalten</button></a></p>";
    
    //////////////////////
    // react on parameters
    //////////////////////
    if (sCmd.length()>0)
    {
      // write received command to html page
      sResponse += "Kommando:" + sCmd + "<BR>";
      
      // switch GPIO
      if(sCmd.indexOf("FUNCTION1ON")>=0)
      {
        digitalWrite(2, 1);
      }
      else if(sCmd.indexOf("FUNCTION1OFF")>=0)
      {
        digitalWrite(2, 0);
      }
    }
    
    sResponse += "<FONT SIZE=-2>";
    sResponse += "<BR>Aufrufz&auml;hler=";
    sResponse += ulReqcount;
    sResponse += " - Verbindungsz&auml;hler=";
    sResponse += ulReconncount;
    sResponse += "<BR>";
    sResponse += "Stefan Thesen 04/2015<BR>";
    sResponse += "</body></html>";
    
    sHeader  = "HTTP/1.1 200 OK\r\n";
    sHeader += "Content-Length: ";
    sHeader += sResponse.length();
    sHeader += "\r\n";
    sHeader += "Content-Type: text/html\r\n";
    sHeader += "Connection: close\r\n";
    sHeader += "\r\n";
  }
  
  // Send the response to the client
  client.print(sHeader);
  client.print(sResponse);
  
  // and stop the client
  client.stop();
  Serial.println("Client disonnected");
}

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 09:57
Beitrag #5
RE: Eine Funktion vorher definieren ?
Hallo,

(28.12.2015 08:48)arduinofan schrieb:  Hier geht es nur wenn ich die Funktionen alle vorn vor dem Aufruf reinsetze, dann funktioniert es.

Wenn ich es nicht mache kommt die Meldung zb Beispiel :
'WiFiStart' was not declared in this scope

Code:
#include <ESP8266WiFi.h>

const char* ssid = "SSID_OF_YOUR_NETWORK_HERE";
const char* password = "WIFI_PASSWORD_GOES_HERE";

unsigned long ulReqcount;
unsigned long ulReconncount;

void WiFiStart(void);             // <--------------- Deklaration

// Create an instance of the server on Port 80
WiFiServer server(80);

void setup()
{
  // setup globals
  ulReqcount=0;

  usw. usw.

Google wirklich kaputt?
Ich habe die Deklaration oben mal reingeschrieben.

https://de.wikibooks.org/wiki/C-Programm...Funktionen

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 10:27
Beitrag #6
RE: Eine Funktion vorher definieren ?
Wie jetzt ?
Es stört diese eine Zeile oben im Sketch ?

void WiFiStart(void); // <--------------- Deklaration


Oder die Funktion selbst ?

Die eine Zeile muss halt oben vorweg, damit der Compiler weis, welche Funktionen "unterwegs" angesprochen werden.

Die Funktionen müssen irgendwo angelegt werden.
Das kann am Ende des Sketch sein, oder in einem separaten Tab.
Das kann doch kein Problem sein ?!

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 10:57
Beitrag #7
RE: Eine Funktion vorher definieren ?
nee der hat nur keine ahnung und is nich bereit sich ein zu lesen, so langsam nervts mich auch
gehe da konform mit Lötzinnerhitzer!

verweise auf literatur oder tut scheinen nicht zu wirken, sein google is wohl kaputt und löffelweise einflößen mach ich nur noch bei sexy blonden oder meinen kindern Tongue


grüße

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 11:12
Beitrag #8
RE: Eine Funktion vorher definieren ?
hihi... Der Hilgi Big Grin


ABER: Denkfehler auf meiner Seite

Libaries müssen vorweg genannt werden, klar
Funktionen natürlich nicht !

Die schreibt man ganz einfach unten drunter oder lagert sie in separate Tabs aus.
Im Loop wird die jeweilige Funktion dann ganz einfach aufgerufen, gut iss.

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Funktion mit Parameterübergabe - u8g torsten_156 8 404 22.06.2016 18:53
Letzter Beitrag: Pit
  Fehlermeldung das eine reimundko 3 309 08.06.2016 08:56
Letzter Beitrag: hotsystems
  char* inhalt in eine Datei auf SD-Karte schreiben MartinK 0 342 30.03.2016 16:42
Letzter Beitrag: MartinK
  Funktion in Loop einmalig ausführen Haustechno 4 647 09.03.2016 22:43
Letzter Beitrag: Haustechno
  HC-05 Modul auf Funktion prüfen. arduinofan 2 366 03.02.2016 19:18
Letzter Beitrag: arduinofan
  Mehrere Geräte über eine IR Fernbedienung Respun 20 2.019 07.01.2016 23:51
Letzter Beitrag: hotsystems
  Kann ich in eine For Schleife einen delay einbauen JanGamer11 6 616 05.01.2016 12:34
Letzter Beitrag: Hilgi
  fehlt mir eine Bibliothek? Baumschüler 5 508 15.12.2015 08:53
Letzter Beitrag: Baumschüler
  Ankommende Daten(Webserver) am MEGA2560 für eine Aktion auswerten ? arduinofan 0 482 11.12.2015 09:06
Letzter Beitrag: arduinofan
  Funktion/Methode mit mehr als einem Ausgangswert Marduino_UNO 18 1.270 20.10.2015 10:30
Letzter Beitrag: Marduino_UNO

Gehe zu:


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