الخيوط#

مقدمة#

تتيح الخيوط البرمجية للروبوت تشغيل مهام متعددة في وقت واحد ضمن البرنامج نفسه. فهي تمكّن الروبوت من أداء مهام متعددة، مما يسمح له بتنفيذ إجراءات مستقلة في الوقت نفسه.

ملاحظة: يجب عليك أولاً تعريف دالة لاستخدامها مع سلسلة العمليات.

الدالة البانية – إنشاء وبدء سلاسل عمليات جديدة.

  • Thread – يبدأ سلسلة جديدة تقوم بتشغيل الوظيفة المحددة بالتوازي مع البرنامج الرئيسي.

الإجراء – التحكم في العمليات الجارية.

  • stop – إيقاف مؤشر الترابط يدويًا، وهو أمر مفيد لإيقاف السلوك في الخلفية.

المُنشئ#

Thread#

يقوم الأمر Thread بإنشاء وتشغيل سلسلة عمليات. عند إنشاء سلسلة عمليات، يمكنك تسميتها لإيقافها عندما لا تعود هناك حاجة إليها.

طريقة الاستخدام:

my_thread = Thread(my_function)

حدود

وصف

my_thread

اختياري. اسم للموضوع الجديد.

my_function

The name of a previously defined function.

Note: A function must always be defined before it is called.

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