Experimente zu Skript und Funk für COACH 2.2
|
Senden und Empfangen
|
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-Downloadwhile(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-Downloadclass 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