Benang#
Perkenalan#
Thread memungkinkan robot untuk menjalankan banyak tugas secara bersamaan dalam program yang sama. Ini memungkinkan multitasking, sehingga robot dapat melakukan tindakan independen pada waktu yang bersamaan.
Catatan: Anda harus mendefinisikan fungsi terlebih dahulu untuk menggunakannya dengan thread.
Konstruktor – Membuat dan memulai thread baru.
Thread– Memulai thread baru yang menjalankan fungsi yang ditentukan secara paralel dengan program utama.
Aksi – Mengontrol thread yang sedang berjalan.
stop– Menghentikan thread secara manual, berguna untuk menghentikan perilaku latar belakang.
Konstruktor#
Thread#
Thread membuat dan memulai sebuah thread. Saat Anda membuat sebuah thread, Anda dapat memberinya nama untuk menghentikannya ketika tidak lagi dibutuhkan.
Penggunaan:
my_thread = Thread(my_function)
Parameter |
Keterangan |
|---|---|
|
Opsional. Nama untuk thread baru. |
|
Nama dari fungsi yang telah didefinisikan sebelumnya. |
Catatan: Suatu fungsi harus *selalu didefinisikan sebelum dipanggil.
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)
Tindakan#
stop#
stop menghentikan thread secara manual, yang berguna ketika suatu tugas tidak lagi diperlukan atau ketika suatu program perlu mengatur ulang thread. Setelah thread dihentikan, thread tersebut tidak dapat dimulai ulang. Untuk menjalankannya lagi, Anda harus membuat thread baru menggunakan Thread.
Penggunaan:
my_thread.stop()
Parameter |
Keterangan |
|---|---|
|
Objek thread yang sebelumnya telah dimulai. Ini adalah nama yang diberikan saat thread dibuat menggunakan |
"""
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()