活動#

介紹#

事件允許您並行運行函數。您無需按順序呼叫函數,而是可以將多個函數註冊到一​​個事件中,並一次觸發它們。每個註冊的函數都在其自身的線程中運行,從而使您的機器人能夠同時執行多個任務——例如在行駛過程中在螢幕上顯示數值。

若要建立和使用事件,請按以下步驟操作:

  1. 使用 Event 建立事件。

  2. 註冊一個函數,當廣播 Event 時,透過呼叫 event object 並將函數作為參數來觸發函數。

  3. Broadcast an Event:

    • broadcast – 觸發事件物件中所有已註冊的函數並發運行。

    • broadcast_and_wait – 觸發事件物件中所有已註冊的函數,並等待它們完成後再繼續。

建立活動#

Event 建立一個事件對象,該對像管理在單獨執行緒中執行的函數。

用法:
Event()

參數

描述

此建構函數沒有參數。

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    # Creating the move_event Event
    move_event = Event()
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

將函數註冊到事件#

當您將一個函數註冊到某個事件時,當該事件被廣播時,該函數將在單獨的執行緒中執行。

Usage:
event(callback, args)

參數

描述

event

先前建立的事件物件的名稱。

callback

預先定義的函數,將在事件廣播時執行。

args

可選。要傳遞給回呼函數的參數元組。

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    move_event = Event()
    # Register the move_square function to the move_event Event
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

直播活動#

broadcast#

broadcast 會觸發一個事件,並在單獨的執行緒中啟動所有已註冊的函數。此方法不會暫停任何後續程式碼的執行。

用法:
event.broadcast()

參數

描述

event

先前建立的事件物件的名稱。

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    move_event = Event()
    move_event(move_square)
    # Broadcasting the move_event Event
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

broadcast_and_wait#

broadcast_and_wait 啟動一個事件,但等待所有已註冊的函數完成,然後繼續執行後續函數。

用法:
event.broadcast_and_wait()

參數

描述

event

先前建立的事件物件的名稱。

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    # Set up and call the move_square event
    move_event = Event()
    move_event(move_square)
    # Broadcast the move_event Event and wait
    move_event.broadcast_and_wait()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)