الخيوط#

مقدمة#

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

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

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

  • 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.

# Drive forward while blinking screen
def blink_screen():
    while True:
        brain.screen.clear_screen(Color.RED)
        wait(0.5, SECONDS)
        brain.screen.clear_screen()
        wait(0.5, SECONDS)

blink_screen_thread = Thread(blink_screen)
drivetrain.drive(FORWARD)

# Run multiple threads simultaneously
# Turn right, blink screen at once
def blink_screen():
    while True:
        brain.screen.clear_screen(Color.RED)
        wait(0.5, SECONDS)
        brain.screen.clear_screen()
        wait(0.5, SECONDS)

def turning():
    drivetrain.turn(RIGHT)

blink_screen_thread = Thread(blink_screen)
turning_thread = Thread(turning)

فعل#

stop#

يُستخدم الأمر stop الترابط يدويًا، وهو أمر مفيد عندما لا تعود هناك حاجة لمهمة ما أو عندما يحتاج البرنامج إلى إعادة ضبط مؤشرات الترابط. بمجرد إيقاف مؤشر الترابط، لا يمكن إعادة تشغيله. لتشغيله مرة أخرى، يجب إنشاء مؤشر ترابط جديد باستخدام Thread.

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

my_thread.stop()

حدود

وصف

my_thread

كائن سلسلة عمليات تم تشغيلها مسبقًا. هذا هو الاسم الذي تم تعيينه عند إنشاء سلسلة العمليات باستخدام Thread.

"""
Run multiple threads simultaneously
Turn right, play a sound and display heading at once
Stop playing sounds after 2 seconds
"""
def sound():
    while True:
        brain.play_sound(SoundType.ALARM)
        wait(0.5, SECONDS)

def display_heading():
    while True:
        brain.screen.clear_row()
        brain.screen.set_cursor(1, 1)
        brain.screen.print("Heading: {}".format(brain_inertial.orientation(YAW)))
        wait(50, MSEC)

sound_thread = Thread(sound)     
display_heading_thread = Thread(display_heading)
drivetrain.turn(RIGHT)

wait(2, SECONDS)
sound_thread.stop()