活動#
介紹#
事件允許您並行運行函數。您無需按順序呼叫函數,而是可以將多個函數註冊到一個事件中,並一次觸發它們。每個註冊的函數都在其自身的線程中運行,從而使您的機器人能夠同時執行多個任務——例如在行駛過程中在螢幕上顯示數值。
若要建立和使用事件,請按以下步驟操作:
使用
Event建立事件。註冊一個函數,當廣播
Event時,透過呼叫eventobject 並將函數作為參數來觸發函數。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)
範圍 |
描述 |
|---|---|
|
先前建立的事件物件的名稱。 |
|
預先定義的函數,將在事件廣播時執行。 |
|
可選。要傳遞給回呼函數的參數元組。 |
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()
範圍 |
描述 |
|---|---|
|
先前建立的事件物件的名稱。 |
# 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()
範圍 |
描述 |
|---|---|
|
先前建立的事件物件的名稱。 |
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)