活动#

介绍#

Events allow you to run functions in parallel. Instead of calling functions sequentially, you can register multiple functions to an event and trigger them all at once. Each registered function runs in its own thread, enabling your robot to perform multiple tasks simultaneously—like displaying values on the screen while driving.

要创建和使用事件,请按以下步骤操作:

  1. Create the event with Event.

  2. Register a function to trigger when the Event is broadcast using event.

  3. Broadcast an Event:

    • broadcast – Triggers all registered functions in an event object to run concurrently.

    • broadcast_and_wait – Triggers all registered functions in an event object and waits for them to finish before continuing.

创建活动#

Event creates an event object that manages function execution in separate threads.

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 triggers an event, starting all registered functions in separate threads. This method does not pause execution of any subsequent functions.

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 starts an event but waits for all registered functions to finish before continuing with subsequent functions.

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)