kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Experimente zu Skript und Funk für COACH 2.2

  • Ausgehend von dem letzten Projekt "coach2.2_06_funk_PA7_plus5Volt" werden zunächst ohne Einführung neuer Header-Dateien Experimente zu Funkübertragung und Skripten durchgeführt.

Senden und Empfangen

  • Bislang wurde das "Pollin-Evaluationsboard" als Empfangsstation verwendet.
  • Durch Verwendung des Funk- und RS232-Teile eines COACH2.2-Boards soll nun über das Hyperterminal Kommunikation in beide Richtungen möglich werden.
1. Von Vehikel an Station senden
experiment01_station_an_vehikel.zip - Projekt-Download.
    while(true)
    {
        funk.sendeText("Sensorwert:\n");
        for(pause=0;pause<5000000;pause++);
    }

Code 0-1: Wesentlicher Code bei Vehikel

    while(true)
    {
        text = funk.empfangeText();
        rs232.sendeText(text); 
        rs232.sendeText("\n\r"); 
    }

Code 0-2: Wesentlicher Code bei Station

2. Beliebige Textzeile von Station an Vehikel senden und von dort wieder zurück
experiment02_befehl_quittieren.zip - Projekt-Download
        while(true)
    {
             text = funk.empfangeText();
             rs232.sendeText("Es wurde folgender Text empfangen:\n\r+++");
             rs232.sendeText(text);
             rs232.sendeText("+++\n\r");
             rs232.sendeText("Dieser wird gleich zurückgesendet.\n\r");
             for(pause=0;pause<5000000;pause++);
             funk.sendeText(text);
    }

Code 0-3: Wesentlicher Code bei Vehikel

        while(true)
    {
            for(pause = 0;pause<5000000;pause++);
            rs232.sendeText("Geben Sie eine Textzeile ein (Quittieren mit #):\n\r"); 
            text = rs232.holeText(true); 
            rs232.sendeText("Es wird nun folgender Text per Funk gesendet:\n\r+++"); 
            rs232.sendeText(text); 
            rs232.sendeText("+++\n\r"); 
            funk.sendeText(text);
            text = funk.empfangeText();
            rs232.sendeText("Das Vehikel hat folgendes empfangen:\n\r+++"); 
            rs232.sendeText(text); 
            rs232.sendeText("+++\n\r"); 
    }

Code 0-4: Wesentlicher Code bei Station

3. Übertragung eines rudimentären Skripts
experiment03_skript.zip - Projekt-Download
class Befehle
{
    private:
        unsigned long pause;
    public:
        void tudies()
        {
            rs232.sendeText("Tue dies.\n\r");
            funk.sendeText("Tue dies.");
            for(pause=0;pause<50000;pause++);
        }    
        void tudas()
        {
            rs232.sendeText("Tue das.\n\r");
            funk.sendeText("Tue das.");
            for(pause=0;pause<50000;pause++);
        }    
        void tujenes()
        {
            rs232.sendeText("Tue jenes.\n\r");
            funk.sendeText("Tue jenes.");
            for(pause=0;pause<50000;pause++);
        }    
};
...
int main(void)
{
...
    Befehle befehle;
    void (Befehle::*zeiger[3])(void) = {
                                         &Befehle::tudies,  
                                         &Befehle::tudas,
                                         &Befehle::tujenes,
                                       };    
...
    while(true)
    {
        //Skript empfangen
        text = funk.empfangeText();
        rs232.sendeText("Es wurde folgender Text empfangen:\n\r+++");
        rs232.sendeText(text);
        rs232.sendeText("+++\n\r");
        rs232.sendeText("Dieser wird gleich zurückgesendet.\n\r");
        for(pause=0;pause<5000000;pause++);
        funk.sendeText(text);
        //Skript 10 mal durcharbeiten:
        for(ii=0;ii<10;ii++)
        {
            rs232.sendeText("Durchlauf Nr.");
            rs232.sendeInteger(ii);
            rs232.sendeText("des Skripts:\n\r");
            funk.sendeText("Nächster Durchlauf des Skripts");
            kk=0;
            while(text[kk]!=';')
            {
               (befehle.*(zeiger[text[kk]-65]))();                
               kk++;
            }
            for(pause=0;pause<5000000;pause++);
        }
        funk.sendeText("????????????????");
    }
...

Code 0-5: Wesentlicher Code bei Vehikel

    while(true)
    {
        for(pause = 0;pause<5000000;pause++);
        rs232.sendeText("Geben Sie eine Skriptzeile ein (Quittieren mit #):\n\r"); 
        rs232.sendeText("Beispiel:ABABBCCA;\n\r"); 
        text = rs232.holeText(true); 
        rs232.sendeText("Es wird nun folgender Text per Funk gesendet:\n\r+++"); 
        rs232.sendeText(text); 
        rs232.sendeText("+++\n\r"); 
        rs232.sendeText("Das Vehikel zeigt an, wenn es bereit ist,\n\r"); 
        rs232.sendeText("das nächste Skript zu verarbeiten.\n\r"); 
        funk.sendeText(text);
        //Auf Rücksendung des Skripts warten:
        text = funk.empfangeText();
        rs232.sendeText("Das Vehikel hat folgendes empfangen:\n\r+++"); 
        rs232.sendeText(text); 
        rs232.sendeText("+++\n\r"); 
        //Auf Abschluß der Abarbeitung des Skripts warten:
        while(text[0]!='?')
        {
            text = funk.empfangeText();
            rs232.sendeText(text); 
            rs232.sendeText("\r"); 
        }
    }

Code 0-6: Wesentlicher Code bei Station