Go Down

Topic: Fehler Meldung beim Kompilieren (Read 890 times) previous topic - next topic

Yannes

Hey ,
ich bekomme immer die Fehlermeldung
kann jemand helfen?
danke im voraus


Arduino: 1.8.5 (Windows 8.1), Board: "Arduino Nano, ATmega328P"

In file included from C:\Users\yannes\Desktop\smart_home\smart_home.ino:28:0:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src/SoftwareSerial.h:50:1: error: expected ',' or ';' before 'class'

 class SoftwareSerial : public Stream

 ^

exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.

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

DerLehmi

steht doch da:
Quote
50:1: error: expected ',' or ';' before 'class'
-->Also schau mal in Zeile 50, wo dort das beschriebene Zeichen fehlt

Am besten wäre es, Du fügst hier noch den Code ein, dann lässt sich genauer helfen. Code-Tags nicht vergessen

Yannes

#2
Dec 31, 2017, 02:11 pm Last Edit: Dec 31, 2017, 03:12 pm by uwefed Reason: add CODE TAGs </>
Hier (nicht wundern wegen denn ganzen // Zeugs ist aus einem Adventskalender)
Code: [Select]
//------------------------------------------------------------------------------------------------------------------

/**
* Tag11.ino
* Version 1.0
* Version der Firmware: V1.2b
* Aktualisierungen finden Sie unter http://www.buch.cd
*
* Sketch basiert auf der Firmware und ist eine Erweiterung der Vorlage im Verzeichnis Vorlage.
*/


//------------------------------------------------------------------------------------------------------------------

String Name="Bluething";
String Text="";    //In diesem String werden Texte zwischengespeichert
char Zeichen;      //In dieser Variable werden Zeichen zwischengespeichert

#define rxPin 11   //virtueller RX-Pin des Moduls zur Kommunikation mit dem HC-05
#define txPin 12   //virtueller TX-Pin des Moduls zur Kommunikation mit dem HC-05
#define LedPin 13  //an diesem Pin hängt die gelbe LED unten links

int led = 4;
int led2 = 5


//Initialisieren der virtuellen seriellen Schnittstelle
#include <SoftwareSerial.h>
SoftwareSerial HC05(txPin, rxPin);

//------------------------------------------------------------------------------------------------------------------

/**
* HC05 initialisieren
* Seriellen Monitor mit 57600 Baud ansprechen
* HC05 wird mit 38400 Baud angesprochen
*/
void setup()  {
 pinMode(LedPin, OUTPUT); //Pin13 als Ausgang setzen
 pinMode(led, OUTPUT);
 digitalWrite(led,LOW);
  pinMode(led2, OUTPUT);
 digitalWrite(led2,LOW);


 
 initModule();
}

//------------------------------------------------------------------------------------------------------------------

void loop() {

//Empfange zeichen vom HC-05 Modul
while(HC05.available() > 0){               // So lange etwas empfangen wird, durchlaufe die Schleife.
   Zeichen = HC05.read();                  // Speichere das empfangene Zeichen in der Variablen "Zeichen".
   Text.concat(Zeichen);                   // Füge das Zeichen an den String an, damit wir den kompletten Text erhalten.
   if (Zeichen == '\n') {                  // War das letzte Zeichen ein NL (NewLine)?
     Serial.println(Text);                 // Sende den empfangenen Text an das Modul (samt "\n")
     //Reagiere auf "Led an" bzw. "Led aus"
   
     if (Text.startsWith("licht an ")  || Text.startsWith("an")|| Text.startsWith("Licht an")){
     digitalWrite(led,HIGH);
     } else if (Text.startsWith("licht aus") || Text.startsWith("AUS") || Text.startsWith("aus")){
       digitalWrite(led,LOW);
     }else if (Text.startsWith("led an")){
       digitalWrite(led2,HIGH);
     }else if (Text.startsWith("led aus")){
       digitalWrite(led2,LOW);
     }
     Text="";
   }
}
   

}


//------------------------------------------------------------------------------------------------------------------

String auslesen(String Befehl){
 char Zeichen;                             // Jedes empfangene Zeichen kommt kurzzeitig in diese Variable.
 String result="";
 Serial.println(Befehl);                   // Schreibe den übergebenen String auf den seriellen Monitor
 HC05.println(Befehl);                     // Sende den übergebenen String an das Modul
 delay(500);
 while(HC05.available() > 0){              // So lange etwas empfangen wird, durchlaufe die Schleife.
   Zeichen = HC05.read();                  // Speichere das empfangene Zeichen in der Variablen "Zeichen".
   result.concat(Zeichen);                 // Speichere die Antwort des Moduls
 }  
 return result;                            // Übergebe die Rückantwort des Moduls
}

//------------------------------------------------------------------------------------------------------------------
const int wartezeit = 500;

//------
void initModule() {
  Serial.begin(57600);     //Baudrate für die Kommunikation mit dem seriellen Monitor
 
 Serial.println("Initialisiere...");
 Serial.println();
 
 Serial.println("Konfiguriere HC-05 Modul:");
 Serial.println();
 HC05.begin(38400);

 //Reset HC-05 -> Slave mode, Baudrate 38400, Passwort:1234, Device-Name: "hc01.com HC-05"
 Text = auslesen("AT+ORGL");
 Serial.println(Text);
 if (!Text.startsWith("OK")) {
   Serial.println("Fehler!");
   Serial.println("Steht der Jumper auf AT?");
   Serial.println("Sind alle Bluetooth-Verbindungen zum Modul getrennt?");
   Serial.println("Wechsle in den COM-Modus...");
   Serial.println();
   return;
   //while(1);    
 }
 
 //Lösche alle Devices aus der Pair-Liste
 Text = auslesen("AT+RMAAD");
 Serial.println(Text);
 if (!Text.startsWith("OK")) {
   Serial.println("Fehler!");
   while(1);    
 }
 
 //Lese die MAC-Adresse aus und bilde daraus den Bluetoothnamen
 Text = auslesen("AT+ADDR?");
 Serial.println(Text);
 Name.concat(Text.substring(Text.lastIndexOf(":")+1,Text.lastIndexOf(":")+4));
 Serial.println(Name);
 
 //Setze Bluetooth-Name auf "BluethingXXX"
 Text = auslesen("AT+NAME="+Name);
 Serial.println(Text);
 if (!Text.startsWith("OK")) {
   Serial.println("Fehler!");
   while(1);    
 }

 //Checke ob die Bautrate auf 38400 gesetzt wurde
 Text = auslesen("AT+UART?");
 Serial.println(Text);
 if (!Text.startsWith("+UART:38400,0,0")) {
   Serial.println("Fehler!");
   while(1);    
 }

 //Versionsnummer des Moduls auslesen - Keine überprüfung falls sich mal die Versionsnummer ändert...
 Text = auslesen("AT+VERSION?");
 Serial.println(Text);

 //Modul neustarten und eventuelle Verbindungen resetten
 Text = auslesen("AT+RESET");
 Serial.println(Text);
 if (!Text.startsWith("OK")) {
   Serial.println("Fehler!");
   while(1);    
 }
 delay(1000);  //So ein Reset dauert seine Zeit...

 //Bricht alle Verbindungen ab und macht das Modul in der Bluetoothumgebung sichtbar
 Text = auslesen("AT+INIT");
 Serial.println(Text);
 Text = auslesen("AT+DISC");
 Serial.println(Text);
 
 //Gibt den Status des Moduls an
 Text = auslesen("AT+STATE?");
 Serial.println(Text);
   
 Text="";
 digitalWrite(LedPin, HIGH);
 Serial.println();
 Serial.println("Konfiguration erfolgreich!");      
 Serial.println("Die gelbe Led an Pin13 sollte jetzt konstant leuchten.");
 Serial.println("Es koennen ueber die Konsole AT-Befehle an das Modul gesendet werden.");
 Serial.println("Der Bluetoothname des Moduls lautet: \""+Name+"\" , das Passwort lautet:\"1234\"");
 Serial.println("Das Modul kann jetzt auch mit einem Handy gekoppelt werden, alle empfangenen Texte werden angezeigt, alle gesendeten Befehle gehen dann direkt ans Handy (wie im COM Modus).");
 Serial.println("Sollte der String \"Led an\" oder \"Led aus\" empfangen werden, reagiert die Led an Pin13 entsprechend (egal ob vom seriellen Monitor, oder vom Handy).");
 Serial.println();
}

HotSystems

Weist du nicht was Code-Tags sind ?
Dann frag einfach nach.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

DerLehmi

Quote
Code-Tags nicht vergessen
-->Ich schreibs noch extra xD

Fehler ist hier:
Code: [Select]
int led2 = 5
-->
Code: [Select]
int led2 = 5;

Yannes


HotSystems

Ne wieß ich nicht
Ja... dachte ich mir doch.

Schaltfläche </> oben links im Editorfenster, oder "How to use this forum, please read".
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)


HotSystems

Und du kannst es auch nachträglich machen, dann wird der Thread nicht so vollgemüllt.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

postmaster-ino

Hi

Vergebene Liebesmüh' ... denke, viel mehr Posts werden kaum kommen, so nachsichtig, wie reagiert wurde.

... lasse mich aber gerne eines Besseren belehren ...

MfG

PS: Die Fehlermeldung besagt ja nur, daß ein ; erwartet wurde, statt Dessen kommt ein 'class' - wenn das class nicht ;class heißen muß, fehlt das ; in der Programm-Zeile genau davor.
Unterm Strich hat der Compiler also schon recht mit Seiner Meldung.
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

HotSystems

Hi

Vergebene Liebesmüh' ... denke, viel mehr Posts werden kaum kommen,.....
Aber Hilfe erwarten.

@Yannes
Dann mal danke für die interessante Frage.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Serenifly

#11
Dec 31, 2017, 04:35 pm Last Edit: Dec 31, 2017, 04:35 pm by Serenifly
Include Direktiven sollte man ganz nach oben setzten (da die nur den Inhalt des Headers direkt an der Stelle einfügen). Dann hat man nicht solche unleserlichen Fehlermeldungen die auf die falsche Stelle zeigen

Go Up