- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 45

Thema: Programm Starten und Stoppen über Hyper Terminal

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.05.2007
    Alter
    35
    Beiträge
    305
    Anzeige

    E-Bike
    Hast du Valens antworten denn ausprobiert?
    Bringt ja nix wenn du schon wieder codesnippets postest.

    LG Raz

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    30
    Beiträge
    173
    Ja habe schon umgeschrieben funkt auch nicht

    Bin gerade dabei ein kürzeres Programm zu schreiben wo er nur eine Linie verfolgt aber da ist auch der selbe Fehler(mach ich deswegen weil ich nicht immer beim langen Programm schauen will )

    LG

    probieren schauen bis es auf einmal kalppt

  3. #13
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Valen hat schon recht, bei deiner Version bleibt SerRead() in einer Endlosschleife hängen solange kein Zeichen empfangen wird. Ob man wirklich mit SerRead(message,1,1); prüfen muss, ob ein neues Zeichen angekommen ist, hängt vom restlichen Programm ab. Aber so ist SerRead() auf jeden Fall keine Endlosschleife mehr.

    Ich habe dein Programm mal etwas umformatiert:

    Code:
    #include "asuro.h"
    #include "stdlib.h"
    
    int main(void)
    {
    	int x=0,LANG=0,z=0,t=0;
    	unsigned int data[2];
       char data0[5], data1[5];
    
    	Init();
    
    /*
    	x++;
    	if (x > 1000)
    		LANG++;
    	if (x > 1000)
    		x = 0;
    */
    	while( 1 )
    	{
    		char message[] = "1";
    	   SerRead(message,1,0);
    
    	   if(message[0] == 'G')
    	   {
    			FrontLED(ON);
    			{ // ein Block
    				LineData(data);
    
    	      	itoa (data[0], data0, 5);
    	      	itoa (data[1], data1, 5);
    	      	SerWrite (data0, 4);
    	      	SerWrite (" links\n\r", 8);
    	      	SerWrite (data1, 4);
    	      	SerWrite (" rechts\n\r", 9);
    
    	      	for (t=0; t < 2; t++)
    	      	{
    	         	Sleep (72);
    	      	} // for
    			} // ein Block
    
    			{ // noch ein Block
    				MotorDir(FWD,FWD);
    				MotorSpeed(110,100);
    				BackLED(OFF,OFF);
    
    				if ( data[0] < 50 )
    				{
    					MotorDir(RWD,RWD);
    					MotorSpeed(100,150);
    					BackLED(ON,OFF);
    
    					for(z=0 ; z < 40 ; z++)
    					{
    						Sleep(216);
    					} // for
    				} // if
    
    
    				if ( data[1] < 50 )
    				{
    					MotorDir(RWD,RWD);
    					MotorSpeed(100,150);
    					BackLED(OFF,ON);
    
    					for(z=0 ; z < 40 ; z++)
    					{
    						Sleep(216);
    					} // for
    				} // if
    			} // noch ein Block
    
    			if (PollSwitch() >= 1)
    			{
    				MotorDir(RWD,RWD);
    				MotorSpeed(255,255);
    				BackLED(OFF,OFF);
    				StatusLED(RED);
    
    				for(z=0 ; z < 100 ; z++)
    				{
    					Sleep(216);
    				} // for
    			} // if PollSwitch()
    		} // if(message[0] == 'G')
    
    		if(message[0] == 'S')
    		{
    			MotorDir(FREE,FREE);
    			FrontLED(OFF); //Dieser Teil müste eigentlich so funktonieren oder
    			StatusLED(OFF);
    		} // if(message[0] == 'S')
    		
    	} // while( 1 )
    	return 0;
    } //main(void)
    Ist quasi dein Programm mit geänderten Einrückungen/ Zeilenvorschüben.

    Gruß

    mic

    P.S.: Vielleicht magst du das als Basis für weitere Versuche verwenden ;)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    30
    Beiträge
    173
    Danke
    die Übersicht ist viel besser wie bei meinen CODE´s

    Ich habe es 1 zu 1 rübergeflashed aber es funkt nicht



  5. #15
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Ich habe es 1 zu 1 rübergeflashed aber es funkt nicht
    War ja zu erwarten, denn es ist dein Programm von ein paar Beiträgen weiter oben. Ich habe am Programm nichts verändert (außer der X++/LANG++ -Geschichte), also sind auch nicht die Vorschläge von Valen eingebaut.

    Mach es selbst, du bist auf dem richtigen Weg ;)

    Gruß

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

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    30
    Beiträge
    173
    Ok ich werds versuchen

    Ich habe ja auch den Willen es selber zu können

    wenn ich mir wo ein Programm rauskopiere möchte ich es verstehen

    ein kleiner Tipp wär super

    lg

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Den Tipp hast du dir selbst schon gegeben. Wenn du SerRead() mit Timeout 0 aufrufst, bleibt dein asuro hier hängen, solange er kein neues Zeichen empfängt, und kann deshalb die Liniensensoren nicht mehr auswerten:

    Code:
       /* blocking */
       else {                     // timeout ist 0
          while (i < length) {    // solange zuwenig Zeichen empfangen wurden
             if (UCSRA & 0x80)    // hat der USART ein Zeichen eingelesen?
                data[i++] = UDR;  // Zeichen in Übergabevariable kopieren
          }
       }
    (Aus der Funktion SerRead() in asuro.c)

    Deshalb lautet der Kommentar über dem Else-Zweig von "if (timeout != 0) {" auch "blocking".

    Gruß

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

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    30
    Beiträge
    173
    Ah klingt gut

    lg

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    30
    Beiträge
    173
    Ich habs jetzt so
    Code:
    SerRead(message,1,1);
    aber es hat sich leider nichts geändert


  10. #20
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Mit dem Fetzen kann man doch nichts anfangen. Poste dein komplettes Programm!

    (Manche Leute muss man wohl echt durchs Ziel schieben)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test