- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 14

Thema: Error: expected identifier before "." token

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Schau mal nach, ob katze.cpp noch ne alte falsche Version einbinded (included).
    Denn eigentlich sollte das so funktionieren.

  2. #2
    Der alte Fehler hat sich so beheben lasse. Vielen Dank!

    Allerdings binded er die übrigen Libs nicht ein, bzw. erstellt die anderen Objekte nicht.
    Auch die unter private eingeführten Vars gehen nicht:
    Code:
    
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:14: error: 'LiquidCrystal_I2C' does not name a type
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:15: error: 'Motor' does not name a type
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:16: error: 'Motor' does not name a type
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:17: error: 'Motor' does not name a type
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp: In constructor 'katze::katze(int, int, int, int, int, int)':
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:29: error: 'Wire' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:31: error: 'display' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp: In function 'void comp_reset()':
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:38: error: 'Wire' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:46: error: 'display' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp: In function 'void comp_calib()':
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:52: error: 'display' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:54: error: 'i' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:56: error: 'Wire' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:66: error: 'MsbX' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:67: error: 'LsbX' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:68: error: 'MsbY' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:69: error: 'LsbY' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:71: error: 'x' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:72: error: 'y' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:73: error: 'x_min' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:77: error: 'x_max' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:81: error: 'y_min' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:85: error: 'y_max' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:89: error: 'ml' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:90: error: 'mr' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp: In function 'void comp_tm()':
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:103: error: 'Wire' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp: In function 'double comp_r()':
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:112: error: 'Wire' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:117: error: 'MsbX' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:118: error: 'LsbX' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:119: error: 'MsbY' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:120: error: 'LsbY' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:122: error: 'x' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:123: error: 'y' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:124: error: 'x_min' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:124: error: 'x_max' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:125: error: 'y_min' was not declared in this scope
    C:\Dokumente und Einstellungen\Malte\Eigene Dateien\Arduino\libraries\katze2\katze2.cpp:125: error: 'y_max' was not declared in this scope
    Code:
    #ifndef katze2_h
    #define katze2_h
    
    
    class katze 
     {
      public:
       katze(int ml1, int ml2, int mr1, int mr2, int md1, int md2);
       void us_tm();
       int us1_r();
       int us2_r();
       double comp_r();
       void comp_tm();
       void comp_reset();
       void comp_calib();
       void ml_speed(int v, int d);
       void mr_speed(int v, int d);
       void md_speed(int v, int d);
       
      private:
       int mlp1, mlp2, mrp1, mrp2, mdp1, mdp2;  
       int x_min, x_max, y_min, y_max;
       int i;
       int MsbX,LsbX,MsbY,LsbY;
       int x,y;
     };
     
     #endif
    Code:
    #include <katze2.h>
    
    #include "Arduino.h"
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <Motor.h>
    #include <SonarSRF08.h>
    
    #define CompI2CADDR 0x30
    #define CompTakeMeasure 0x01
    #define CompSet 0x02
    #define CompReset 0x04
    
    LiquidCrystal_I2C display(0x20, 16, 2);
    Motor ml(mlp1,mlp2);
    Motor mr(mrp1,mrp2);
    Motor md(mdp1,mdp2);
    
    katze::katze(int ml1, int ml2, int mr1, int mr2, int md1, int md2)
    {
     mlp1=ml1; mlp2=ml2; mrp1=mr1; mrp2=mr2; mdp1=md1; mdp2=md2;
     pinMode(mlp1,OUTPUT); digitalWrite(mlp1,LOW);
     pinMode(mlp2,OUTPUT); digitalWrite(mlp2,LOW);
     pinMode(mrp1,OUTPUT); digitalWrite(mrp1,LOW);
     pinMode(mrp2,OUTPUT); digitalWrite(mrp2,LOW);
     pinMode(mdp1,OUTPUT); digitalWrite(mdp1,LOW);
     pinMode(mdp2,OUTPUT); digitalWrite(mdp2,LOW);
     
     Wire.begin();
      
     display.init();
     display.backlight();
     display.print("Hello, world!");
    }
    
    void comp_reset()
    {
     Wire.beginTransmission(CompI2CADDR);
     Wire.write(0x00);
     Wire.write(CompSet);
     delay(10);
     Wire.write(0x00);
     Wire.write(CompReset);
     delay(10);
     Wire.endTransmission();
     display.setCursor(0,0);
     display.print("comp reset done ");
    }
    
    void comp_calib()
    {
     display.setCursor(0,0);
     display.print("Start Calib     ");
     for(i=0;i<255;i++)
    {
      Wire.beginTransmission(CompI2CADDR); // Pollin HDMM01
      Wire.write(0x00);
      Wire.write(CompTakeMeasure);
      Wire.endTransmission();
      delay(20);
      Wire.beginTransmission(CompI2CADDR);
      Wire.write(0x01);
      Wire.requestFrom(CompI2CADDR, 4);
    
      while(Wire.available()<4);
      MsbX =Wire.read(); // obere 4 Bit X
      LsbX =Wire.read(); // untere 8 Bit X
      MsbY =Wire.read(); // obere 4 Bit Y
      LsbY =Wire.read(); // untere 8 Bit Y
      Wire.endTransmission(); // stop transmitting
      x=((MsbX&0x0f)*256)+(LsbX);
      y=((MsbY&0x0f)*256)+(LsbY);
      if(x < x_min)
       {
        x_min = x;
       }
      if(x > x_max)
       {
        x_max = x;
       }
      if(y < y_min)
       {
        y_min = y;
       }
      if(y > y_max)
       {
        y_max = y;
       } 
      ml.set_speed(1,255);
      mr.set_speed(-1,255);
      delay(100);
      ml.set_speed(0,0);
      mr.set_speed(0,0);
      
    }
    display.setCursor(0,0);
    display.print("End Calib       ");
     
    }
    
    void comp_tm()
    {
     Wire.beginTransmission(CompI2CADDR); // Pollin HDMM01
     Wire.write(0x00);
     Wire.write(CompTakeMeasure);
     Wire.endTransmission();
     delay(20);
    }
    
    double comp_r()
    {
     Wire.beginTransmission(CompI2CADDR);
     Wire.write(CompTakeMeasure);
     Wire.requestFrom(CompI2CADDR, 4);
    
    while(Wire.available()<4);
    MsbX =Wire.read(); // obere 4 Bit X
    LsbX =Wire.read(); // untere 8 Bit X
    MsbY =Wire.read(); // obere 4 Bit Y
    LsbY =Wire.read(); // untere 8 Bit Y
    Wire.endTransmission(); // stop transmitting
    x=((MsbX&0x0f)*256)+(LsbX);
    y=((MsbY&0x0f)*256)+(LsbY);
    x = map(x, x_min, x_max, -180, 180);
    y = map(y, y_min, y_max, -180, 180);
    double mygrad = atan2(x, y)*180/3.1415927410;
    if (mygrad < 0) mygrad = mygrad +360;
    
    return(mygrad);
    }

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Vorher war die Reihenfolge richtig.
    Jetzt versucht die zuerst includierte katze2.h auf Objekte zuzugreifen, die (noch) nicht definiert sind.
    Vielleicht mal die #include Befehle einzeln aus .cpp ausschneiden, in .h einfügen und kompilieren lassen?
    Dann kannst du beobachten, wie sich die Fehlermeldungen ändern. Vielleicht bringt dich das weiter...

    Achja, vor die einzelnen Methoden musst du katze:: einfügen, sonst definierst du außerhalb der Klasse. Dann sind die katze-Variablen für die Funktionen natürlich nicht sichtbar.

    Und für Bonus-Punkte in der B-Note: Klassennamen werden der Cpp-Konvention nach groß geschrieben.
    Geändert von Sisor (15.01.2014 um 17:18 Uhr)

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Ich weis ja nicht, wo die ganzen Header liegen, aber sollten sie im gleichen Projektverzeichnis sein (wie katze.h), dann werden sie mit "blabla.h" eingebunden, und nicht mit <blabla.h>

    Code:
    #include <katze2.h>
    
    #include "Arduino.h"
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <Motor.h>
    #include <SonarSRF08.h>
    mfg

  5. #5
    Vielen Dank für eure Hilfe erstmal,
    aber da sich das Problem mit den Nicht eigebundenen Libs/den nicht erstellten Objekten bisher nicht hat beheben lassen (egal ob die header in .h oder .cpp) liegen,
    binde ich sie jetzt eben direkt und einzeln ein und verzichte auf eine eigene Klasse, die alles bündeln sollte.
    Die header sind mit <bsp.h> übriegens richtig eingebunden, da sie im Libaries Ordner der Arduino ide liegen.

    vg Malte

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ja, irgendwie geht das mit dem Einbinden von Libraries aus einer header-Datei heraus nicht.
    Was es aber sollte, denn in VisualStudio oder Dev-Cpp funktioniert das tadelos.
    SCHADE. Auch um die Zeit, die man braucht, um das rauszufinden.
    Falls jemand weiss, warum der Arduino-Linker das nicht gebacken kriegt... würde mich interessieren.

Ähnliche Themen

  1. Error: expected class-name before '{' token
    Von BEADG im Forum Arduino -Plattform
    Antworten: 6
    Letzter Beitrag: 22.01.2014, 11:25
  2. expected expression befor '|=' token??
    Von DarkSoldier im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 24.12.2012, 09:55
  3. Antworten: 25
    Letzter Beitrag: 15.12.2010, 08:09
  4. AVR Studio "ISP Mode Error" beim Flashen
    Von Edi im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 18.10.2006, 21:53
  5. "ISP Mode Error" beim programmieren mit dem STK500
    Von Fakin82 im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 16.09.2006, 12:42

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress