en to de translation catalogue (23 entries)

note: type: Title-text
en: Remote control #2
de: Fernsteuerung 2

note: type: Resume-text
en: Remote control a robot using an information exchange post, so it will pass over the 6 blue waypoints.
de: Benutzen Sie einen Infoserver, um den Roboter fernzusteuern (Fortsetzung).

note: type: ScriptName-text
en: remote
de: Steuerung2

note: type: \b; header
en: Exercise
de: Übung

note: type: Plain text
en: Remote control a robot using an <a object|exchange>information exchange post</a>, so it will pass over the 6 blue waypoints.
    The main actors of this exercise are:
de: Steuern Sie einen Roboter mittels eines <a object|exchange>Infoservers</a> so fern, dass er alle 6 blauen Wegpunkte passiert.
    Die Hauptakteure dieser Übung sind:

note: type: Bullet: '1)'
en: A <a object|botgr>wheeled grabber</a> robot without an energy cell. This is the master you have to program.
de: Ein <a object|botgr>Radtransporter</a> ohne Batterie. Dies ist der Master (dt.: Herr, Meister), den Sie programmieren müssen.

note: type: Bullet: '2)'
en: An <a object|exchange>information exchange post</a> that receives information from the master and then transmits it to the slave.
de: Ein <a object|exchange>Infoserver</a>, der Informationen vom Master empfängt und zum Slave (dt.: Sklave) weiterleitet.

note: type: Bullet: '3)'
en: A <a object|bottr>practice bot</a> which waits for orders from the exchange post. This robot has already been programmed.
de: Ein <a object|bottr>Übungsroboter</a>, der auf Befehle vom Infoserver wartet. Dieser Roboter ist schon programmiert.

note: type: Plain text
en: An information exchange post stores "name/value" couples. To control the "slave" robot we use two couples:
de: Ein Infoserver speichert "Name/Wert"-Paare. Für die Steuerung des "Slave"-Roboters benutzen wir 2 verschiedene Paare:

note: type: Bullet: '1)'
en: name="order", value=order number
de: Name="order", Wert=Befehlsnummer

note: type: Bullet: '2)'
en: nom="param", valuer=parameter  for the operation
de: Name="param", Wert=Parameter für den Befehl

note: type: Plain text
en: Order  #1 means "move" and order #2 means "turn". The parameter is the distance to move or the turning angle. For example to make the slave move 20 meters write:
    <c/><s/>	<a cbot|send>send</a>("order",  1, 100);  // order "move"
de: Befehl Nr. 1 bedeutet "move" und Befehl Nr. 2 bedeutet "turn". Der Parameter ist entweder die Entfernung, die zurückzulegen ist, oder ein Winkel. Um den Slave beispielsweise um 20 Meter nach vorn fahren zu lassen, tun Sie folgendes:
    <c/><s/>	<a cbot|send>send</a>("order",  1, 100);  // Befehl "move"

note: type: Source code
en: 	<a cbot|send>send</a>("param", 20, 100);  // distance 20 meters
de: 	<a cbot|send>send</a>("param", 20, 100);  // Entfernung: 20 Meter

note: type: Plain text
en: These two instruction send following 2 pieces of information to the exchange post:
    <c/>    order=1
        param=20
de: Diese beiden Anweisungen senden 2 Informationen zum Infoserver:
    <c/>    order=1
        param=20

note: type: Plain text
en: The slave robot waits for an order and executes it. Once the order has been executed by the slave, it removes the order from the exchange post. Once an order has been sent, the master must wait for the slave finishing the order before sending the next order. This is done by testing if the order is still inside the exchange post. Just write:
    <c/><s/>	while ( <a cbot|testinfo>testinfo</a>("order", 100) )  // wait for end of work
de: Der Slave-Roboter wartet auf einen Befehl und führt ihn dann aus. Sobald der Befehl vollständig abgearbeitet wurde, entfernt er ihn vom Infoserver. Nachdem er einen Befehl gesendet hat, muss der Master darauf warten, dass der Slave ihn ausgeführt hat. Erst dann darf der nächste Befehl gesendet werden. Dies wird erreicht, indem geprüft wird, ob der Befehl noch im Infoserver vorliegt:
    <c/><s/>	<a cbot|while>while</a> ( <a cbot|testinfo>testinfo</a>("order", 100) )

note: type: Source code
en: 	{
    		wait(1);
    	}
de: 	{ // wartet bis Befehl ausgeführt
    		<a cbot|wait>wait</a>(1);
    	}

note: type: Plain text
en: As we must give more than one order its most convenient to write a <a cbot|function>function</a> <code>SendToPost</code>, that sends the order and wait for its completion:
    <c/><s/>void object::SendToPost(float order, float param)
de: Da wir mehrere Befehle geben müssen, ist es sinnvoll, eine <a cbot|function>Funktion</a> <code>SendToPost</code> zu schreiben, die den Befehl sendet und auf das Ende seiner Ausführung wartet:
    <c/><s/>void object::SendToPost(<a cbot|type>float</a> order, <a cbot|type>float</a> param)

note: type: Source code
en: {
    	send("param", param, 100);  // send the parameter
    	send("order", order, 100);  // send the order
    
    	while ( testinfo("order", 100) )  // wait for end of work
    	{
    		wait(1);
    	}
    }
de: {
    	send("param", param, 100);  // Parameter senden
    	send("order", order, 100);  // Befehl senden
    
    	<a cbot|while>while</a> ( <a cbot|testinfo>testinfo</a>("order", 100) )
    	{ // wartet bis Befehl ausgeführt
    		<a cbot|wait>wait</a>(1);
    	}
    }

note: type: Plain text
en: To move forward by 20 meters, you must write in the main program:
    <c/><s/>	SendToPost(1, 20);  // move(20);
de: Für eine Bewegung um 20m nach vorn schreiben Sie folgendes ins Hauptprogramm:
    <c/><s/>	SendToPost(1, 20);  // move(20);

note: type: Plain text
en: This is the route the robot must travel through:
de: Den Weg, den der Roboter nehmen muss, sehen Sie hier:

note: type: Plain text
en: It's up to you to finish the programming.
de: Es ist nun Ihre Aufgabe, die Programmierung abzuschließen.

note: type: \t; header
en: See also
de: Siehe auch

note: type: Plain text
en: <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
de: Die <a cbot>CBOT-Sprache</a>, die <a cbot|type>Variablentypen</a> und die <a cbot|category>Kategorien</a>.
