Pages: [1]   Go Down
Author Topic: Bitte um kurze Hilfe bei der Programmierung  (Read 462 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 2
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20187
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 2
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Germany S-H
Offline Offline
Edison Member
*
Karma: 117
Posts: 2439
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Die Ethernet Library im Arduino "libraries" Verzeichnis installieren.
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20187
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 2
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Pages: [1]   Go Up
Jump to: