Zyskaj więcej dzięki VEXcode
Zalecamy przejście na nasze nowe oprogramowanie. VEXcode ma zarówno opcje blokowe, jak i tekstowe, które działają na Chromebookach, iPadach, tabletach z Androidem, Windows i Macach. Odwiedź code.vex.com , aby uzyskać więcej informacji na temat pobierania VEXcode.
Studio VEX Coding zostało przerwane i nie jest już dostępne do pobrania. Już pobrałeś? Program będzie nadal działał, ale nie będzie już obsługiwany.
Użytkownicy, którzy przechodzą na VEXcode, mogą migrować swoje projekty C++/C++ Pro do VEXcode Pro V5, postępując zgodnie z tym artykułem.

Krok 1: Rozpoznaj, czy kod blokuje, czy nie blokuje

  • Spójrz na dwa górne polecenia Motor.spin obok zielonych strzałek. Zielone strzałki wskazują polecenia nieblokujące.
  • Zwróć uwagę, że w tych komendach akcji nie ma żadnego stanu docelowego — tylko po to, aby obrócić prawy silnik do przodu, a lewy silnik do tyłu. Są to polecenia nieblokujące, które będą działać wraz z kolejnymi poleceniami programu.
  • Spójrz na polecenia Motor.rotateFor i Motor.rotateTo obok czerwonych strzałek. Czerwone strzałki wskazują polecenia blokujące.
  • Zauważ, że w tych komendach akcji znajduje się stan celu — obrót o 270 stopni lub obrót o 270 stopni. Blokują polecenia, ponieważ program zrobi to do końca, zanim przejdzie do następnego polecenia.
  • Spójrz na polecenia Motor.rotateFor i Motor.rotateTo obok zielonych strzałek.
  • Zauważ, że w tych poleceniach znajduje się parametr boolowski waitForCompletion, który jest ustawiony na wartość false. Oznacza to, że domyślne ustawienie polecenia czekania na zakończenie (jako polecenie blokujące) jest wyłączone (ustawione na wartość false), a więc teraz nie są blokowane. Program uruchomi je i przejdzie do następnego polecenia.

UWAGA: Ponownie, polecenia lewego motoru (rotateTo i rotateFor) obok dolnych zielonych strzałek są ustawione jako nie -blokowanie przez ustawienie parametru waitForCompletion na false. Ale możesz również użyć startRotateTo lub startRotateFor zamiast tych. Oba polecenia startRotate są nieblokujące i pozwalają programowi przejść do następnego polecenia przed zakończeniem.

UWAGA: Istnieje wiele innych przykładów poleceń blokujących i nieblokujących w VCS. Te przykłady zostały wybrane ze względu na ich prostotę.

UWAGA: Niektóre polecenia można łatwo rozpoznać jako blokujące lub nieblokujące na podstawie ich kodu. Na przykład Motor.startRotateTo i Motor.startRotateFor są z założenia nieblokującymi poleceniami, ponieważ działanie jest rozpoczynane, ale niekoniecznie zakończone przed przejściem programu do następnego polecenia.

Krok 2: Użyj kodu nieblokującego, aby inicjować polecenia i kontynuować

  • Spójrz na dwa nieblokujące polecenia Motor.spin obok górnych zielonych strzałek.
  • Zauważ, że polecenie LeftMotor.spin jest inicjowane, a następnie program przechodzi natychmiast do polecenia RightMotor.spin. Jest to ważne, aby oba silniki obracały się w tym samym czasie.

UWAGA: Jeśli blokowały polecenia, najpierw lewy silnik obracałby się do przodu, dopóki nie zostanie wykonany. Następnie prawy silnik obracałby się do tyłu, aż do zakończenia. Wtedy program będzie kontynuowany.

  • Spójrz na polecenia Motor.rotateFor i Motor.rotateTo obok dolnych zielonych strzałek.
  • Zwróć uwagę, że parametr boolean waitForCompletion zawarty w tych poleceniach jest ustawiony na wartość false i dlatego sprawia, że oba nie są blokujące.

Krok 3: Użyj razem kodu nieblokującego i blokującego, aby mieć równoległe procesy

  • Spójrz ponownie na polecenia Motor.rotateFor i Motor.rotateTo, które znajdują się teraz obok niebieskich strzałek. Niebieskie strzałki służą do wskazywania poleceń równoległych.
  • Zauważ, że ponieważ parametry waitForCompletion poleceń Lewego Silnika są ustawione na Fałsz, Prawy Silnik zaczyna się obracać natychmiast po Lewym Silniku. Jest to ważne, aby robot poruszał się do przodu lub do tyłu w linii prostej.

UWAGA: Powodem, dla którego polecenia lewego silnika zostały ustawione jako nieblokujące, jest to, że jego polecenia były przed polecenia. Aby para poleceń silnika działała w tym samym czasie, pierwsze z nich powinno być nieblokujące, a drugie powinno być blokujące. 

Krok 4: Użyj kodu blokującego, aby wykonywać polecenia, aż do zakończenia

  • Zauważ, że aby program zakończył się przed przejściem dalej, polecenia Prawego Silnika są blokowane.

UWAGA: Tylko polecenia blokujące prawego silnika powodują, że program czeka na zakończenie tego polecenia przed kontynuowaniem.To właśnie ta blokada pozwala programiście zobaczyć, jak robot zatrzymuje się przed przejściem do kolejnych poleceń.

Krok 5: Zrozum, jak polecenia nieblokujące i blokujące działają z innymi poleceniami

UWAGA: Polecenia Motor.spin uruchamiają lewy i prawy silnik obracają się w przeciwnych kierunkach.Zadanie uśpienia pozwala silnikom obracać się w ten sposób przez 3 sekundy, zanim oba silniki lewy i prawy zostaną zatrzymane przez polecenie Motor.stop. Następnie lewy silnik i prawy silnik obracają się do przodu o 270 stopni i hamują przed przejściem dalej, ponieważ polecenie prawego silnika jest blokowane. Następnie lewy silnik i prawy silnik obracają się całkowicie wstecz do 270 stopni i hamują przed zakończeniem programu, ponieważ polecenie prawego silnika jest blokowane.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus