События#

Введение#

События позволяют выполнять функции параллельно. Вместо последовательного вызова функций можно зарегистрировать несколько функций в одном событии и запустить их все одновременно. Каждая зарегистрированная функция выполняется в собственном потоке, что позволяет роботу выполнять несколько задач одновременно — например, отображать значения на экране во время движения.

Для создания и последующего использования события выполните следующие действия в указанном порядке:

  1. Создайте событие с Event.

  2. Зарегистрируйте функцию, которая будет запускаться при трансляции события Event путем вызова объекта event object с функцией в качестве аргумента.

  3. Broadcast an Event:

    • broadcast – Запускает все зарегистрированные функции в объекте события для одновременного выполнения.

    • broadcast_and_wait – Запускает все зарегистрированные функции в объекте события и ожидает их завершения, прежде чем продолжить.

Создать событие#

Событие Event создает объект события, который управляет выполнением функции в отдельных потоках.

Usage:
Event()

Параметр

Описание

Этот конструктор не имеет параметров.

def move_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

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

# Register move_square to move_event
move_event(move_y)

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

Регистрация функций для мероприятия#

При регистрации функции для события она будет выполняться в отдельном потоке после трансляции события.

Usage:
event(callback, args)

Параметр

Описание

event

Имя ранее созданного объекта события.

callback

Заранее определенная функция, которая будет выполнена при трансляции события.

args

Optional. A tuple of arguments to pass to the callback function.

def move_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

# Creating the move_event Event
move_event = Event()

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

# 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_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

move_event = Event()
move_event(move_y)
# Broadcasting the move_event Event
move_event.broadcast()
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)

broadcast_and_wait#

broadcast_and_wait запускает событие, но ожидает завершения всех зарегистрированных функций, прежде чем продолжить выполнение последующих функций.

Usage:
event.broadcast_and_wait()

Параметр

Описание

event

Имя ранее созданного объекта события.

def move_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

# Set up and call the move_square event
move_event = Event()
move_event(move_y)
# Broadcast the move_event Event and wait
move_event.broadcast_and_wait()
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)