活動#

介紹#

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

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

  1. 使用 Event 建立事件。

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

  3. Broadcast an Event:

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

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

建立活動#

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

Usage:
Event()

範圍

描述

此建構函數沒有參數。

def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

# *** Creating the move_event Event ***
move_event = Event()

# Register move_square to move_event
move_event(move_square)

# Call all functions registered to move_event
move_event.broadcast()

將函數註冊到事件#

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

Usage:
event(callback, args)

範圍

描述

event

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

callback

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

args

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

def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

# Creating the move_event Event
move_event = Event()

# *** Register move_square to move_event ***
move_event(move_square)

# Call all functions registered to move_event
move_event.broadcast()

直播活動#

broadcast#

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

Usage:
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)

move_event = Event()
move_event(move_square)
# Broadcasting the move_event Event
move_event.broadcast()
optical_sensor.set_light_power(100, PERCENT)

broadcast_and_wait#

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

Usage:
event.broadcast_and_wait()

範圍

描述

event

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

def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

# 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()
optical_sensor.set_light_power(100, PERCENT)