Как запрограммировать датчик для прерывания основного потока или программы на 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"