- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 22

Thema: Asuro Fernsteuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2014
    Beiträge
    17
    Erstmal danke für die vielen Erklärungen. Das hat mir wirklich viel geholfen. Aber was meinst du mit Endkennung für Strings? Sorry, ich bin Anfänger.

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Das mit den Strings ist für dein Beispiel oben nicht wichtig, aber weil du ja was lernen willst:

    http://www.walter-digital.de/c_2_auf...s/pstrings.htm
    (Es reicht erstmal, wenn du bis Bild 5-4 liest)

    In deinem Beispiel wird char msg[2]; verwendet um die Eingabe die vom Terminal empfangen wird zu speichern. msg[] bietet Platz für zwei Bytes. Eines davon (das erste mit Namen msg[0] wird für die Daten vom Terminal verwendet (ein Zeichen belegt 8 Bit und passt deshalb in Variablen vom Type char) und für die Vergleiche mit anderen Zeichen die auch 8 Bit groß sind ('w','s', 'a', 'd' und 'x').
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2014
    Beiträge
    17
    Danke. Jetzt funktioniert es. Zumindest nur ein Teil davon. Ich hab die Kontrolle gleich ganz weggelassen. Wenn ich jetzt aber eine Taste (Tastatur am PC) drücke passiert gar nichts. Und wenn ich dann nochmal eine drücke, wechselt die status LED von grün auf gelb. Danach passiert nichts mehr.

    Code:
    #include "asuro.h"
    int main(void) {
    	char msg[2];
    			{
    				SerRead("b",2,0);
    				msg[1] = '\0';
    			
    			while(1){
    				
    				if(msg[0] == 'w')
    				{
    					MotorDir(FWD,FWD);
    					MotorSpeed(255,255);
    					FrontLED(ON);
    				}
    				else if(msg[0] == 's')
    				{
    					MotorDir(RWD,RWD);
    					MotorSpeed(255,255);
    					StatusLED(RED);
    				}
    				else if(msg[0] == 'd')
    				{
    					MotorDir(FWD,FWD);
    					MotorSpeed(255,150);
    					BackLED(OFF,ON);
    				}
    				else if(msg[0] == 'a')
    				{
    					MotorDir(FWD,FWD);
    					MotorSpeed(150,255);
    					BackLED(ON,OFF);
    				}
    				else if(msg[0] == 'x')
    				{
    					MotorDir(FREE,FREE);
    					MotorSpeed(0,0);
    					BackLED(ON,ON);
    				}
    				else
    				{StatusLED(YELLOW);}
    			}
    	return 0;}
    }
    Vielleicht wisst ihr, was da los ist...

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Wie oft wird SerRead angesprochen in dein while loop? Und wie oft werden dan neue Zeichen von dein PC verbindung bekommen?

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo,

    In deinem Programm fehlt die Init() Funktion zu Beginn des Programmes. Der Aufruf der SerRead() Funktion gehört in die while Schleife, sonst wird nur einmal ein Befehl gelesen.

    Code:
    #include "asuro.h"
    
    int main(void)
    {
      char msg[2];
      Init();
    
    
      while (1)
      {
        // fuege hier deinen Code ein
      }
      return 0;
    }

Berechtigungen

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

LiFePO4 Speicher Test