Sự kiện#

Giới thiệu#

Sự kiện cho phép bạn chạy các hàm song song. Thay vì gọi các hàm tuần tự, bạn có thể đăng ký nhiều hàm vào một sự kiện và kích hoạt tất cả chúng cùng một lúc. Mỗi hàm được đăng ký sẽ chạy trong luồng riêng của nó, cho phép robot của bạn thực hiện nhiều tác vụ đồng thời — chẳng hạn như hiển thị các giá trị trên màn hình trong khi đang di chuyển.

Để tạo và sử dụng Sự kiện, hãy làm theo các bước sau theo đúng thứ tự:

  1. Tạo sự kiện với Event.

  2. Đăng ký một hàm để kích hoạt khi Sự kiện Event được phát sóng bằng cách gọi đối tượng sự kiệnevent với hàm làm đối số.

  3. Broadcast an Event:

    • broadcast – Kích hoạt tất cả các chức năng đã đăng ký trong một đối tượng sự kiện để chạy đồng thời.

    • broadcast_and_wait – Kích hoạt tất cả các hàm đã đăng ký trong một đối tượng sự kiện và chờ chúng hoàn thành trước khi tiếp tục.

Tạo sự kiện#

Sự kiện Event tạo ra một đối tượng sự kiện quản lý việc thực thi hàm trong các luồng riêng biệt.

Usage:
Event()

Tham số

Sự miêu tả

Hàm tạo này không có tham số.

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()

Đăng ký các hàm vào một sự kiện#

Khi bạn đăng ký một hàm cho một sự kiện, hàm đó sẽ được thực thi trong một luồng riêng biệt khi sự kiện được phát đi.

Usage:
event(callback, args)

Tham số

Sự miêu tả

event

Tên của đối tượng sự kiện đã được tạo trước đó.

callback

Một hàm đã được định nghĩa trước đó để thực thi khi sự kiện được phát đi.

args

Tùy chọn. Một tuple đối số để truyền cho hàm gọi lại.

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()

Phát sóng một sự kiện#

broadcast#

Lệnh broadcast kích hoạt một sự kiện, khởi chạy tất cả các hàm đã đăng ký trong các luồng riêng biệt. Phương thức này không tạm dừng việc thực thi bất kỳ hàm nào tiếp theo.

Usage:
event.broadcast()

Tham số

Sự miêu tả

event

Tên của đối tượng sự kiện đã được tạo trước đó.

# 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 bắt đầu một sự kiện nhưng chờ tất cả các hàm đã đăng ký hoàn thành trước khi tiếp tục với các hàm tiếp theo.

Usage:
event.broadcast_and_wait()

Tham số

Sự miêu tả

event

Tên của đối tượng sự kiện đã được tạo trước đó.

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)