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-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