Go Down

Topic: Bitte um kurze Hilfe bei der Programmierung (Read 570 times) previous topic - next topic

mcGeorge

Hallo Ng,
sorry, ich bin zurerst davon ausgegangen, dass Arduino eine eigene Sprache hat, die der C/C++ angeglichen ist. Aufgrund dessen hatte ich mich gewundert, dass ich in anderen Sketchen Programmierbefehle gefunden hatte, die in der Reference-Page nicht aufgeführt wurden. Nun habe ich so nach und nach verstanden, dass es nicht ganz richtig ist.

Deshalb meine Frage: Kann mir jemand ein Buch empfehlen, in dem vordringlich die Programmierung und nicht die Technik beschrieben ist. Oder ein alternatives Buch für die C/C++ Sprache, welches aber weitgehend auf Arduino passt.

Und nun zu meiner aktuellen Frage: Ich schreibe ein umfangreiches Programm. Deshalb möchte ich es in mehrere Dateien aufteilen. Das läßt sich ja mit dem Punkt "Zusätzlichen Tab" schnell realisieren.
Nun habe ich aber das Problem gehabt, dass bei Zugriff auf bestimmte Variablen die Fehlermeldung kam, dass die Variabel in der aktuellen Datei nicht existiert. Das konnte ich mit dem Statement "extern" umgehen. Danach kam die Meldung nicht mehr. Hoffe das war richtig?
Nun ist es aber so, dass ich einen WebServer hinzuprogrammieren möchte, das heißt, dass ich in der ersten Datei die folgende Zeile habe: "EthernetClient client = server.available();" Wenn ich nun in meiner anderen Datei (Tab) auf das Objekt "client" zuzugreifen, erhalte ich die Meldung das ein Zugriff auf "client" nicht möglich ist. Das läßt sich auch nicht mit dem extern-Statement lösen.

Was muss ich machen, damit ich auf das Objekt "client" Zugriff erhalte?

Vielen Dank.


uwefed

zum Buch: http://arduino.cc/forum/index.php/topic,135161.msg1079949.html#new
Zum Fehler. ich bitte um Sketch.
Grüße Uwe

mcGeorge

Wie gewünscht einen Auszug aus meinen Sketch:

Das folgende steht in der "Humidor_1.ino":
Quote

#include <Ethernet.h>

void setup() {
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop() {

  EthernetClient client = server.available();

  if (client) {
    WebAnswer();
    delay(1);
    client.stop();
  }
}



Die Funktion WebAnswer() steht in der Datei "WebDienst.ino":
Quote

void WebAnswer() {
  boolean currentLineIsBlank = true;

  while ( client.connected() ) {
    if ( client.available() ) {
      char c = client.read();

      if (c == '\n' && currentLineIsBlank) {
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println("Connnection: close");
        client.println();
        client.println("<!DOCTYPE HTML>");
        client.println("<html><head></head><body>");

        client.print( "Sensor 1 - Temperatur:" );
        client.print( Temperatur_1 );
        client.print( " - Feuchte:" );
        client.print( Feuchte_1 );
        client.println("<br />");

       client.println("</body></html>");
        break;
      }
      if (c == '\n') {
        currentLineIsBlank = true;
      } 
      else if (c != '\r') {
        currentLineIsBlank = false;
      }
    }
  }
}



Dort entsteht folgender Fehler:
Humidor_1.cpp.o: In function `WebAnswer()':
C:\#_Elektronik\arduino-1.0.1/WebDienst.ino:7: undefined reference to `client'
C:\#_Elektronik\arduino-1.0.1/WebDienst.ino:7: undefined reference to `client'
C:\#_Elektronik\arduino-1.0.1/WebDienst.ino:8: undefined reference to `client'
C:\#_Elektronik\arduino-1.0.1/WebDienst.ino:8: undefined reference to `client'
C:\#_Elektronik\arduino-1.0.1/WebDienst.ino:11: undefined reference to `client'
Humidor_1.cpp.o:C:\#_Elektronik\arduino-1.0.1/WebDienst.ino:11: more undefined references to `client' follow

jurs


Was muss ich machen, damit ich auf das Objekt "client" Zugriff erhalte?


Die Ethernet Library im Arduino "libraries" Verzeichnis installieren.

uwefed

Ist die Ethernet-Library nicht bereits im IDE enthalten?
Grüße Uwe

mcGeorge

Danke für das Mitdenken. Habe die Lösung gefunden.

Der Geltungsbereich der Variable was das Problem. Nun habe ich die Deklaration in den Kopf gelegt und damit den Geltungsbereich projektweit. Nun klappt es!

Danke erstmal.

Go Up