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

Thông số

Sự miêu tả

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

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

def main():
    # Creating the move_event Event
    move_event = Event()
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Đă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)

Thông 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.

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

def main():
    move_event = Event()
    # Register the move_square function to the move_event Event
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

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ỳ đoạn mã nào tiếp theo.

Usage:
event.broadcast()

Thông 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)

def main():
    move_event = Event()
    move_event(move_square)
    # Broadcasting the move_event Event
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

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

Thông 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)

def main():
    # 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()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)