- 12V Akku mit 280 Ah bauen         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 32 von 32

Thema: Odometrie Problem [Hirn Fatal ERROR]

  1. #31
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128
    Anzeige

    Praxistest und DIY Projekte
    ok, danke, ich bin mir zwar nicht sicher ob ich das verstanden habe,
    aber die "x=data[1]" habe ich rausgekürzt undüberall wo x verwendet wurde direkt durch "data[1]" ersetzt.
    hier der code:
    Code:
    #include "asuro.h" // Odometrie test
    unsigned int data[2];
    unsigned char s[5] = "thze\0";
    
    	void PrintCharR()
    	   {
    			unsigned char einer, zehner, huni, tausend;
    		  
    			tausend = data[1]/1000;
    			huni    = (data[1]-(tausend*1000))/100;
    			zehner  = (data[1]-(tausend*1000 + huni*100))/10;
    			einer   = (data[1]-(tausend*1000 + huni*100 + zehner*10))/10;
    				
    			s[0]=tausend+'0';
    			s[1]=huni+'0';
    			s[2]=zehner+'0';
    			s[3]=einer+'0';
    		  
    			SerWrite(s,5);
    	   }
    
    int main(void)
    {
    	Init();
    
    	int i=0;
    	
    	while(1)
    	{ 								
    		OdometrieData(data); // aktuelle "Position der Odometrie einlesen
    		
    		SerWrite("Rechte Odometrie testen: ",24); //Wert der rechten Odometrie Senden
    		PrintCharR(data[1]);
    		SerWrite("\r\n\n",3);
    		
    		for (i=0; i<400; i++) 		//1 sec pause zwischen jedem erscheinen des odo-wertes
    			{
    				Sleep(72);
    			}
    	}
    	return 0;
    	
    }
    nun nochmals ein paar fragen, damit ich die funktionen allgemein verstehen:

    Code:
    void PrintCharR()
    hier in den klammer muss nicht zwingend etwas drinn stehen??
    muss die funktion zwingend mit "void" deklariert werden?

    Code:
    PrintCharR(data[1]);
    zu was dient das "data[1]" in den klammern??

    allgemein:
    könnte mir jemand anhand von meinem beispiel versuchen zu erklären, wie der syntax einer funktion... funktioniert??

    wäre no1. thx gruß listner

  2. #32
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    ganz grob: zu erst wird die funktion deklariert. 3 beispiele:
    Code:
    void funktionsname(void){verschiedene aktionen};
    // diese funktion gibt keinen wert zurück (Beispiel MotorDir();) und benötigt keine werte (Beispiel Init();).
    
    int funktionsname(char wert){verschiedene aktionen; return x;}
    //diese funktion gibt einen integer zurück (beispiel PollSwitch) und braucht einen wert um zu arbeiten (beispiel FrontLed();)
    
    char funktionsname(char wert1, char wert2){verschiedene aktionen; return x}
    //diese funktion gibt einen wert zurück und braucht zwei werte (Beispiel MotorSpeed();)
    anstelle von "verschiedene aktionen" steht der eigentliche inhalt der funktion. hier dürfen dei übegebenen werte (in den beispielen wert, wert1, wert2) verwendet werden. bei funktionen mit rückgabe muss ein wert mit return zurückgegeben werden, dieser kann dann so verarbeitet werden wie zB der Wert von PollSwitch.

    um die funktion dann aufzurufen, geht folgendes:
    Code:
    //funktion mit rückgabe, aber ohne übergabe:
    variable = funktionsname();
    
    //funktion ohne rückgabe, aber mit übergabe:
    funktionsname(a,b);
    
    //funktion mit rückgabe und mit übergabe:
    variable = funktionsname(a);
    ein komplettes beispiel: wir wollen zwei zahlen addieren. die zahlen werden übergeben und das ergebnis zurückgegeben:

    Code:
    //funktionsdeklaration:
    int addieren(wert1, wert2){
      int ergebnis = 0;
      ergebnis = wert1 + wert2;
      return ergebnis;
    }
    
    //jetzt ist die funktion definiert und darf in der main-funktion aufgerufen werden. dazu muss sie ÜBER der main funktion im quelltext stehen.
    
    [...]
    erstersummand = 4;
    zweitersummand = 8;
    summe = addieren(erstersummand, zweitersummand);
    [...]
    jetzt enthält "summe" den von addieren() zurückgegebenen wert.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

LiFePO4 Speicher Test