-         

Ergebnis 1 bis 7 von 7

Thema: Asuro Parse Error

  1. #1

    Asuro Parse Error

    Anzeige

    Hallo, ich bin neu hier.

    in dem Programm soll der Asuro den Lichtwert an den Computer schicken:

    Code:
    #include "asuro.h"
    #define hundert Lichtwertlinks-1000*tausender;
    #define zehn Lichtwertlinks-1000*tausender-100*hunderter;
    #define eins Lichtwertlinks-1000*tausender-100*hunderter-10*zehner;
    
    
    int main(void)
    {
    	Init();
    	unsigned int data[2];
    	unsigned int Lichtwertlinks = data[0];	
    	char tausender;
    	char hunderter;
    	char zehner;
    	char einer;
    	while(1){
    		LineData(data);
    	if (Lichtwertlinks >= 1000){
    		tausender = 1;
    	}
    	else{
    		tausender = 0;
    	}
    	if (hundert >= 900){
    		hunderter = 9;
    	}
    	else if (hundert >=800){
    		hunderter = 8;
    	}
    	else if (hundert >= 700){
    		hunderter = 7;
    	}
    	else if (hundert >= 600){
    		hunderter = 6;
    	}
    	else if (hundert >= 500){
    		hunderter = 5;
    	}
    	else if (hundert >= 400){
    		hunderter = 4;
    	}
    	else if (hundert >= 300){
    		hunderter = 3;
    	}
    	else if (hundert >= 200){
    		hunderter = 2;
    	}
    	else if (hundert >= 100){
    		hunderter = 1;
    	}
    	else {
    		hunderter = 0;
    	}
    		if (zehn >= 90){
    		zehner = 9;
    	}
    	else if (zehn >=80){
    	
    		zehner = 8;
    	}
    	else if (zehn >= 70){
    		zehner = 7;
    	}
    	else if (zehn >= 60){
    		zehner = 6;
    	}
    	else if (zehn >= 50){
    		zehner = 5;
    	}
    	else if (zehn >= 40){
    		zehner = 4;
    	}
    	else if (zehn >= 30){
    		zehner = 3;
    	}
    	else if (zehn >= 20){
    		zehner = 2;
    	}
    	else if (zehn >= 10){
    		zehn = 1;
    	}
    	else {
    		zehner = 0;
    	}
    	eins = einer;
    
    	}
    }
    Beim compilieren kommt folgendes heraus:
    test.c:24: error: parse error before ';' token
    test.c:13: warning: unused variable `hunderter'
    test.c:14: warning: unused variable `zehner'
    test.c:15: warning: unused variable `einer'
    make: *** [test.o] Error 1

    Wenn ich das ganze in for-Schleifen verpacke...

    Code:
    #include "asuro.h"
    #define hundert Lichtwertlinks-1000*tausender;
    #define zehn Lichtwertlinks-1000*tausender-100*hunderter;
    #define eins Lichtwertlinks-1000*tausender-100*hunderter-10*zehner;
    
    
    int main(void)
    {
    	Init();
    	unsigned int data[2];
    	unsigned int Lichtwertlinks = data[0];	
    	char tausender;
    	char hunderter;
    	char zehner;
    	char einer;
    	int i;
    	while(1){
    		LineData(data);
    		if (Lichtwertlinks >= 1000){
    			tausender = 1;
    		}
    	for(i=9;i>=0;i--){
    		if(hundert >= i*100){
    			hunderter = i;
    		}
    	}
    	for(i=9;i>=0;i--){
    		if(zehn >= i*10){
    			zehner = i;
    		}
    	}
    	
    	eins = einer;
    	
    
    	}
    }
    ...bekomme ich folgende Fehlermeldungen:
    test.c:23: error: parse error before ';' token
    test.c:28: error: parse error before ';' token
    test.c:14: warning: unused variable `zehner'
    test.c:15: warning: unused variable `einer'

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.783
    Blog-Einträge
    8
    Hallo

    if (hundert >= 900){

    hundert kennt der Kompiler nicht.

    Schau mal hier (und nachfolgendes):

    http://www.roboternetz.de/phpBB2/zei...=328202#328202

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Kann ich hundert nicht definieren? (z.2)

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.783
    Blog-Einträge
    8
    Ach, da oben, voll überlesen. Sorry. Deine Abfrage lautet also so:

    if (Lichtwertlinks-1000*tausender; >= 900){

    Am Ende des #define darf kein ; stehen!

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Ok,danke!

    Das Programm geht leider immer noch nicht, es kommen die gleichen Errors..

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.783
    Blog-Einträge
    8
    Es muss lauten: einer = eins;

    Code:
     #include "asuro.h"
    #define hundert Lichtwertlinks-1000*tausender
    #define zehn Lichtwertlinks-1000*tausender-100*hunderter
    #define eins Lichtwertlinks-1000*tausender-100*hunderter-10*zehner
    
    
    int main(void)
    {
       Init();
       unsigned int data[2];
       unsigned int Lichtwertlinks = data[0];
       char tausender;
       char hunderter;
       char zehner;
       char einer;
       int i;
       while(1){
          LineData(data);
          if (Lichtwertlinks >= 1000){
             tausender = 1;
          }
       for(i=9;i>=0;i--){
          if(hundert >= i*100){
             hunderter = i;
          }
       }
       for(i=9;i>=0;i--){
          if(zehn >= i*10){
             zehner = i;
          }
       }
    
       einer = eins;
    
    
       }
    }
    
    
    Besser wäre vielleicht:
    
          LineData(data);
          Lichtwertlinks = data[0];
          if (Lichtwertlinks >= 1000){
             tausender = 1;
          }
          else{
             tausender = 0;
          }

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Das stimmt, ich hätte das übersehen. Danke =)

    Jetzt kommt auch die .hex-Datei.

Berechtigungen

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