- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: M128 - Bug in Serial_IRQ_Info

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523

    M128 - Bug in Serial_IRQ_Info

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    nicht nur ich scheine das Problem zu haben, dass die Funktion Serial_IRQ_Info, die eigentlich die Anzahl der auf der Seriellen Schnittstelle empfangenen Zeichen zurückgeben soll, einen Bug hat.
    Genaueres dazu gibt es hier im Forum.
    Kurze Version: Die Methode verzählt sich beim Rechnen mit dem Buffer und liefert deswgen total falsche Ergebnisse...

    Hat jemand eine Idee wie ich den folgenden Code ohne die Benutzung dieser Methode effektiv gestalten könnte?
    Code:
    void task_Commands(void)
    {
        byte count;
        count = Serial_IRQ_Info(0,RS232_FIFO_RECV);
        print("Count: ");  printInteger(count); //Hier hat man dann gesehen, dass ständig Zahlen über 200 kamen, nachdem der Roboter erst mal einen Befehl erhalten hat. Danach hat er jegliche Befehle ignoriert, da ja count auch auf < 200 geprüft wird...
        if(count > 0 && count < 200)  //Diese 200 hier war auch schon der Versuch eines Fehlerbehebens, bevor ich wusste was wirklich passiert...
        {
            do
            {
                unsigned char tmp;
                tmp = Serial_ReadExt(0);
                if (tmp =='#')
                {
                    Thread_Delay(1);
                    counter = 0;
                }
                if(tmp == '*')
                {
                    count = 0;
                }
                text[counter] = tmp;
                text[counter + 1] = 0;
                counter++;
                if(count > 0)
                    count--;
            } while(count > 0 && count < 200); //Diese 200 hier war auch schon der Versuch eines Fehlerbehebens, bevor ich wusste was wirklich passiert...
            byte cmd;
            cmd = getCommand();
            if(cmd)
            {
                switch(cmd)
                {
                    //Auswertung von CMD, für das Problem nicht so wichtig...
                }
                cmd= 0;
            }
        }
    }
    Kann mir bitte jemand helfen? =)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Hmmm...Also ich habe diese Abfrage count < 200 nochmal rausgenommen und jetzt scheint erst mal alles zu klappen...
    Count wird wieder richtig ausgelesen und alles klappt.
    Jemand eine Idee warum?

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Vielleicht musst du den Vergleich && durch || ersetzten.
    Nichts existiert durch sich allein!
    Bild hier  

Berechtigungen

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

12V Akku bauen