Fehlermeldung beim Compilieren

Nach Abbruch des Compilieren
kommt immer Fehlermeldung: expected '}' before '&'
Vorher wird auf einen Fehler in Datei RequestHandlersImpl.h hingewiesen.
Wo ist der Haken, habe über Google nichts konkretes gefunden.
Wer kann helfen ?
ESP8266

Der Fehler ist in Zeile 42.

eberhardpohl:
kommt immer Fehlermeldung: expected ‘}’ before ‘&’

Wer kann helfen ?

Ich wette fast jeder.
Nimm Deinen Sketch, formatiere ihn mit STRG T.
Wenn Du DANN den Fehler nicht gefunden hast, kopiere den KOMPLETTEN Sketch hierher.
Solltest Du den Fehler gefunden habe, gib bitte kurz Bescheid.

In welcher Datei Zeile 42 und was ist da falsch? Grüß Eberhard

zwieblum:
Der Fehler ist in Zeile 42.

Neneee...
Die Lösung lautet 42...
:wink:

eberhardpohl:
In welcher Datei Zeile 42 und was ist da falsch? Grüß Eberhard

42
Bitte beachte dort Einleitung - 2 Absatz - letzter Halbsatz

Verstehe ich nicht...was meinst du damit ?

eberhardpohl:
Verstehe ich nicht...was meinst du damit ?

Du verbirgst Informationen, die hier weiterhelfen könnten!
Ich habe keine Glaskugel.
Ich kenne Deinen Sketch nicht.

Und ich zitiere:
"weil die Frage zu vage gestellt war."
Das sollte eindeutig sein.
Hast Du gemacht wie ich Dir angeboten habe?
Wie ist das Ergebnis? - Sketch sehe ich hier nicht.

eberhardpohl:
In welcher Datei Zeile 42 und was ist da falsch? Grüß Eberhard

Du hast das falsch verstanden.
Du gibst null Info und erwartest, daß wir hellsehen können und wir wissen wo Du eine geschwungene Klammer vergessen hast?
Grüße Uwe

Ok. Melde mich morgen mit mehr Infos.
Dann erst mal gute Nacht....
Mfg.Eberhard

Im Anhang der Sketch und die Fehlermeldung:

/*
ESP8266 Server
ESP fungiert als Server und empfängt u.a.Temperaturwerte per URL
Temperaturwerte (z.B. Außentemperatur) wird auf angeschlossenem 
SPI-Display ausgegeben,

Parameteruebergabe-Syntax:
// http://192.168.178.250/sensor/heizung/?Aussen=1&Solar=1&Heizung=1&rssi=1
// http://192.168.178.250/sensor/sensor2/?Sensor2=1&rssi=1
Verwendetes Display:  4 Zoll Serial TFT-Farbdisplay; SPI; Auflösung 480x320 Pixel 
Temperatur wird über angeschlossenen Sensor DS18B20 ausgelesen und auf dem Display angezeigt
Temperatursensor DS18B20 an Pin D2  
*/
//#include "Free_Fonts.h" // Include the header file attached to this sketch
#include <DallasTemperature.h>  //Siehe Hinweis oben, verwendet wird https://github.com/milesburton/Arduino-Temperature-Control-Library
#include <Base64.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);

#include <XPT2046_Touchscreen.h>
#define CS_PIN  5
// MOSI=11, MISO=12, SCK=13
XPT2046_Touchscreen ts(CS_PIN);
//#define TIRQ_PIN  2
//XPT2046_Touchscreen ts(CS_PIN);  // Param 2 - NULL - No interrupts
//XPT2046_Touchscreen ts(CS_PIN, 255);  // Param 2 - 255 - No interrupts
//XPT2046_Touchscreen ts(CS_PIN, TIRQ_PIN); // Param 2 - Touch IRQ Pin - interrupt enabled polling

#include <SPI.h>
#include <TFT_eSPI.h> // Hardware-specific library
TFT_eSPI tft = TFT_eSPI();       // Invoke custom library
#define TFT_GREY 0x5AEB // New colour
uint16_t x, y;
float merketemperatur=0;
float merkeHeizungtemperatur=0;
float merkeSolartemperatur=0;
float merkeAussentemperatur=0;
float merkeRSSIClient=0;
float merkeRSSIServer=0;
float merkeSensor2=0;
int val; 
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "xxxxxxxxxxx";  //Ihr Wlan,Netz SSID eintragen
const char* pass = "xxxxxxxxxxxxx";  //Ihr Wlan,Netz Passwort eintragen
IPAddress ip(192,168,178,250);       //Feste IP des neuen Servers
IPAddress gateway(192,168,178,1);   //Gatway (IP Router eintragen)
IPAddress subnet(255,255,255,0);  //Subnet Maske eintragen

ESP8266WebServer server(80);

void handleRoot() {
//Temperatur auch bei Url-Aufruf zurückgeben
String message="*** Zentraler Server - Heizung und Solar ***\n";
message += "\n";
String tempstr= String(merketemperatur, 1); 
message += "Lokale Temperatur :          " + tempstr +" Grad\n";
tempstr = String (merkeAussentemperatur,1);
message += "Aussentemperatur :           " + tempstr +" Grad\n";  
tempstr= String(merkeHeizungtemperatur, 1); 
message += "Heizungsvorlauf :            " + tempstr +" Grad\n";
tempstr= String(merkeSolartemperatur, 1); 
message += "Solarvorlauf :               " + tempstr +" Grad\n";
tempstr = String (merkeRSSIServer,0);
message += "RSSI Server:                 " + tempstr +"  dBm\n";
tempstr = String (merkeRSSIClient,0);
message += "RSSI Client:                 " + tempstr +"  dBm\n"; 
tempstr= String(merkeSensor2, 1); 
message += "Sensor 2 :                   " + tempstr +" Grad\n";
server.send(180, "text/plain", message);
}

void handleTemperatur() {
//printUrlArg();  //fuer Debugz Zwecke

String stemp =server.arg("Aussen");
 float temperatur =    stemp.toFloat();
 if (merkeAussentemperatur!=temperatur) {
    merkeAussentemperatur=temperatur;
}
  stemp =server.arg("Solarvorlauf");
  temperatur =    stemp.toFloat();
  temperatur = temperatur + 1.2;
  if (merkeSolartemperatur!=temperatur) {
    merkeSolartemperatur=temperatur ;
}
   stemp =server.arg("Heizungsvorlauf");
  temperatur =    stemp.toFloat();
  temperatur = temperatur + 1.2;
  if (merkeHeizungtemperatur!=temperatur) {
    merkeHeizungtemperatur=temperatur;
}
String srssi =server.arg("WiFi");
  float rssi =    srssi.toFloat();
  if (merkeRSSIClient!=rssi) {
    merkeRSSIClient = rssi;
}
 
//Temperatur auch bei Url-Aufruf zurückgeben
String message="*** Zentraler Server - Heizung und Solar ***\n";
         message += "\n";
         String tempstr= String(merketemperatur, 1); 
         message += "Innen :                      " + tempstr +" Grad\n";
         tempstr= String(merkeAussentemperatur, 1); 
         message += "Aussen :                     " + tempstr +" Grad\n";
         tempstr= String(merkeSolartemperatur, 1); 
         message += "Solarvorlauf :               " + tempstr +" Grad\n";
         tempstr= String(merkeHeizungtemperatur, 1); 
         message += "Heizungsvorlauf :            " + tempstr +" Grad\n";
         tempstr = String (merkeRSSIServer,0);
         message += "RSSI Server:                 " + tempstr +"  dBm\n";
         tempstr = String (merkeRSSIClient,0);
         message += "RSSI Client:                 " + tempstr +"  dBm\n";
         tempstr= String(merkeSensor2, 1); 
         message += "Sensor 2 :                   " + tempstr +" Grad\n";
          
server.send(180, "text/plain", message);
}
 void handleSensor2() {
        String stemp =server.arg("Sensor2");
 float temperatur =    stemp.toFloat();
 if (merkeSensor2!=temperatur) {
    merkeSensor2=temperatur;
     }
     //Temperatur auch bei Url-Aufruf zurückgeben
String message="*** Zentraler Server - Heizung und Solar ***\n";
       message += "\n";
       String tempstr= String(merkeSensor2, 1); 
       message += "Sensor 2 :                   " + tempstr +" Grad\n";
          
server.send(180, "text/plain", message);
  }
void printUrlArg() {
 //Alle Parameter seriell ausgeben
String message="";
for (uint8_t i=0; i<server.args(); i++){
  message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
    }
server.send(180, "text/plain", message);
Serial.println(message);
}
 
void setup() {
tft.init();
tft.setRotation(3);

Serial.begin(9600);
tft.fillScreen(TFT_BLUE);
 tft.fillRoundRect(20, 75, 120, 80,5, TFT_GREEN); 
  tft.fillRoundRect(20, 175, 120, 80,5, TFT_BLACK); 
  tft.fillRoundRect(180, 75, 120, 80,5, TFT_MAGENTA); 
  tft.fillRoundRect(180, 175, 120, 80,5, TFT_GREY); 
   tft.fillRoundRect(340, 75, 120, 80,5, TFT_RED); 
  tft.fillRoundRect(340, 175, 120, 80,5, TFT_CYAN); 
  DS18B20.begin(); 
  
  WiFi.begin(ssid, pass);
  WiFi.config(ip, gateway, subnet);
  while (WiFi.status() != WL_CONNECTED) {
      delay(500);
     Serial.print(".");
      } 
  Serial.println("");
  Serial.print("Verbunden mit ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  server.on("/",handleRoot) ;
  server.on("/sensor/heizung/", handleTemperatur);
  server.on("/sensor/Sensor2/", handleSensor2);
  server.begin();
  Serial.println("HTTP Server wurde gestartet!");
     delay (1800);
  }
void templokalmess()
{
float temperaturLokal;
int timeout;
Serial.println("Messe ...");
timeout=30;
do {
  DS18B20.requestTemperatures();
  delay(1000); 
  temperaturLokal = DS18B20.getTempCByIndex(0);
  delay(180);
  timeout--;
  if (timeout<0) temperaturLokal=99.9;  //Wenn Sensor defekt
   }
   while (temperaturLokal == 85.0 || temperaturLokal == -127.0) ;
  //Temperatur Korrektur
  temperaturLokal = temperaturLokal - 3.96;
  if (merketemperatur!=temperaturLokal) {
      merketemperatur=temperaturLokal;
  } 
}
void dotouch()
 {
uint16_t x=0;
uint16_t y=0;
Serial.println("Enter touch");
if (tft.getTouch(&x, &y)) {
  Serial.print("x:");
  Serial.print(x);
  Serial.print(" y:");
  Serial.println(y);
tft.drawPixel(x, y, 175);
}
 }
void loop (void)
 {
    dotouch();
  server.handleClient();
  merkeRSSIServer = WiFi.RSSI();
  templokalmess();
//loop ist verkürzt, hier stehen normalerweise die Ausgabe auf dem TFT drin, aber auch ohne dieses kommt die Fehlermeldung
delay(500);  
}

Drücke + in der IDE und poste dann den Code zwischen code-Tags … wenn du nicht selber die extra } findest.

eberhardpohl:
Im Anhang der Sketch und die Fehlermeldung:

...

Hab die Code Tags hinzugefügt.
Wo ist der versprochene Anhang?
Grüße Uwe

… und das + …

(deleted)

eberhardpohl:
kommt immer Fehlermeldung: expected '}' before '&'

Also das Einzige Vorkommen von & in deinem Sketch ist die initialisierung von onwiere und in dotouch().
Wie lautet die vollständige Fehlermeldung, wenn Du in der IDE unter DATEI-VOREINSTELLUNGEN- den Haken setzt bei: "AUSFÜHRLICHE AUSGABE BEI KOMPILIERUNG" und dann erneut versuchst zu kompilieren?

Arduino: 1.8.9 (Windows 8.1), Board: "Generic ESP8266 Module, 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), no dtr (aka ck), 26 MHz, 40MHz, DIO, 512KB (FS:none OTA:~246KB), 2, nonos-sdk 2.2.1 (legacy), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

In file included from C:\Users\Pohl\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer-impl.h:29:0,

from C:\Users\Pohl\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/ESP8266WebServer.h:259,

from C:\Users\Pohl\AppData\Local\Temp\arduino_modified_sketch_255179\Server_Heizung_Sensor6_ESP12_touch_20.ino:46:

C:\Users\Pohl\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/detail/RequestHandlersImpl.h:69:28: error: expected ')' before '&' token

StaticRequestHandler(FS& fs, const char* path, const char* uri, const char* cache_header)

^

Server_Heizung_Sensor6_ESP12_touch_20:306:1: error: expected '}' at end of input

}

^

Server_Heizung_Sensor6_ESP12_touch_20:306:1: error: expected unqualified-id at end of input

Server_Heizung_Sensor6_ESP12_touch_20:306:1: error: expected '}' at end of input

exit status 1
expected '}' at end of input

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Ich bin mir eigentlich auch sicher, dass der Sketck ok ist, da er schon mal vor Monaten, wo ich ihn erstellt habe, ohne Fehler compilierbar war und er im ESP läuft.

eberhardpohl:
Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

Ich bin dann raus.
So ignorant kann man doch nicht sein! Oder was war an #15 nicht zu verstehen?
Vorher schon das STRG-T nicht umgesetzt, Codetags vergessen …

Server_Heizung_Sensor6_ESP12_touch_20:306:1: error: expected '}' at end of input
                                      ===

Dein Sketch von heute Morgen hört aber in Zeile 220 auf.

Wenn ich den gesamten Sketch poste komme ich über die Begrenzung in den Posts von > 9000 Zeichen, deshalb hatte ich aus dem Loop einiges beim Senden rausgenommen und damit die Zeilen auf 220 verkürzt, aber die Fehlermeldung nach dem Compilieren incl.des gesamten Loops mit 306 Zeilen geschickt.

Im Sketch selbst ist scheinbar kein Fehler, wie ja Peter-CAD-HST auch bestätigte.

Der Fehler entsteht eigentlich schon hier, die Fehlermeldung nach dem Abruch des Compilieren zeigt nur (warum auch immer) auf die letzte Zeile des Sketch, da ist aber kein Fehler, alle Klammer sind ok.

C:\Users\Pohl\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/detail/RequestHandlersImpl.h:69:28: error: expected ')' before '&' token

StaticRequestHandler(FS& fs, const char* path, const char* uri, const char* cache_header)

Ich hoffe ich konnte alles aufklären. Ich bin kein erfahrener Programmierer und der Umgang mit CTRL-T / Code-Tags
war mir kein Begriff. Hatte also nix mit Ignoranz sondern mit Nichtwissen zu tun.

Was können wir weiter tun ?

mfg. Eberhard