Как запрограммировать датчик для прерывания основного потока или программы на Python

Моя идея заключается в том, что я хочу сделать машину с датчиками для избежания препятствий, используя RasPberry Pi и Python в качестве языка программирования.

Таким образом, я хочу создать отдельную нить для датчика, чтобы следить за датчиком, а когда он обнаруживает препятствие, он должен напрямую прервать основную программу (которая дает команду движения двигателю) и позволить машине остановиться.

Если вы можете привести пример кода или просто симуляцию с помощью виртуального датчика.

Или, если есть лучшая практика, пожалуйста, совет.

1 ответ

Так как никто не смог мне помочь, и я не смог найти учебники, которые объясняют эту концепцию. наконец, я нашел способ сделать это, и я поделюсь им, чтобы другие могли использовать его с надеждой или предложить мне лучшую практику, если таковая имеется.

import time
from threading import Thread, current_thread



def monitorSensorThread(arg1):
    print "started sensor  montiring"

    while True:
        if(thereisobstacle):
            current_thread().interrupt()


def thereisobstacle():
    ## just virtual sensor to tell if there is an obstacles
    time.sleep(5)
    return True

def stopMovmentAndLookfornewdirection():
    ##the interrupt fuction
    ## in this function i will write somthing to stop the motor and look for another way
    print "stoped"


sensorThread = Thread(target=monitorSensorThread, args=(1,))
sensorThread.daemon=True
sensorThread.start()

try:

    moveforward()

except KeyboardInterrupt:
    print "the main thread interrupted"
Другие вопросы по тегам