실#

소개#

스레드를 사용하면 로봇이 동일한 프로그램 내에서 여러 작업을 동시에 실행할 수 있습니다. 이를 통해 멀티태스킹이 가능해지며, 로봇이 동시에 독립적인 동작을 수행할 수 있습니다.

Note: You must first define a function to use it with a thread.

생성자 – 새 스레드를 생성하고 시작합니다.

  • Thread – 지정된 함수를 메인 프로그램과 병렬로 실행하는 새 스레드를 시작합니다.

작업 – 실행 중인 스레드를 제어합니다.

  • stop – 스레드를 수동으로 중지합니다. 백그라운드 동작을 중지하는 데 유용합니다.

건설자#

Thread#

Thread 스레드를 생성하고 시작합니다. 스레드를 생성할 때 이름을 지정하여 더 이상 필요하지 않을 때 중지할 수 있습니다.

용법:

my_thread = Thread(my_function)

매개변수

설명

my_thread

(선택 사항) 새 게시글의 이름입니다.

my_function

이전에 정의된 함수의 이름입니다.

참고: 함수는 호출되기 전에 반드시 정의되어 있어야 합니다.

def move_square():
    # Move in a square path
    while True:
        arm.move_inc(100, 0, 0)
        arm.move_inc(0, 100, 0)
        arm.move_inc(-100, 0, 0)
        arm.move_inc(0, 100, 0)

move_square_thread = Thread(move_square)
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)

# Run multiple threads simultaneously
def move_square():
    # Move in a square path
    while True:
        arm.move_inc(100, 0, 0)
        arm.move_inc(0, 100, 0)
        arm.move_inc(-100, 0, 0)
        arm.move_inc(0, 100, 0)

def lights():
    while True:
        # Turn on all LEDs
        signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
        wait(0.25, SECONDS)
        # Turn on just the red LED
        signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
        wait(0.25, SECONDS)

move_square_thread = Thread(move_square)
lights_thread = Thread(lights)

행동#

stop#

stop 스레드를 수동으로 중지합니다. 이는 작업이 더 이상 필요하지 않거나 프로그램에서 스레드를 재설정해야 할 때 유용합니다. 스레드가 중지되면 다시 시작할 수 없습니다. 다시 실행하려면 Thread를 사용하여 새 스레드를 생성해야 합니다.

용법:

my_thread.stop()

매개변수

설명

my_thread

이전에 시작된 스레드 객체입니다. 이는 Thread 을 사용하여 스레드를 생성할 때 할당된 이름입니다.

"""
Run multiple threads simultaneously
Move the end effector, flash lights and display the x position at once
Stop blinking after 2 seconds
"""
def lights():
    while True:
        # Turn on all LEDs
        signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
        wait(0.25, SECONDS)
        # Turn on just the red LED
        signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
        wait(0.25, SECONDS)

def display_x():
    while True:
        brain.clear_row()
        brain.set_cursor(1, 1)
        brain.print("X Position: {}".format(arm.get_x()))
        wait(50, MSEC)

lights_thread = Thread(lights)     
display_x_thread = Thread(display_x)
arm.move_to(200, 140, 210)

wait(2, SECONDS)
lights_thread.stop()