Hat dir diese Antwort geholfen?
Hmm, also das sieht mir doch alles etwas verwirrend aus. Mal ne kurze Zwischenfrage: Was ist der Unterschied zwischen
IF (diLiftTop) = TRUE THEN
und
IF (dibutton_TOP = TRUE) THEN
(Man achte auf die Klammersetzung)? Bist du sicher, dass da nicht vielleicht Zuweisungen passieren?
Aber mal zum eigentlichen Thema. Ich wuerde mir irgendeine Struktur machen, in der ich mir den Zustand des Fahrstuhls merke, also Stockwerk, Status der Tür. Dann eine Struktur, die die ankommenden Fahraufträge verwaltet und dem Fahrstuhl sagt, wo er als nächstes hinfahren soll. Das wäre quasi das Hauptprogramm. (Woher kriegt der Fahrstuhl bei dir eigentlich die Aufträge? Können während der Fahrt weitere Aufträge gegeben werden?)
Dann eine Funktion, die den Fahrstuhl bewegt, die dann solange je ein Stockwerk hoch- bzw. runterfahren lässt, bis das gewünschte Stockwerk erreicht ist.
void main() {
elevator.floor = 0;
elevator.doors = opened;
while( true ) {
if( newEventReceived ) {
moveTo( requestedFloor );
} else wait();
}
}
void moveTo( int floor ) {
if( elevator.doors == opened ) closeDoors();
while( elevator.floor != floor ) {
if( elevator.floor < floor ) moveUp();
else moveDown();
}
openDoors();
}
void closeDoors() {
elevator.doors = closed;
}
void openDoors() {
elevator.doors = opened;
}
void moveUp() {
elevator.floor++;
}
void moveDown() {
elevator.floor--;
}
Ist zwar kein
Basic, dürfte aber halbwegs verständlich sein. Da fehlen natürlich auch noch Abfragen nach min./max. Etage (dass er nicht in den 1189. Stock fährt wenn es nur 5 gibt und so) und es ist nicht möglich spontane Zwischenhalte einzubauen wenn spontan ein Knopf gedrückt wird. Ist aber ein Anfang und (mir jedenfalls) verständlicher als dein Ansatz.