Я пытаюсь создать скрипт на python для робота, который будет непрерывно перемещаться после получения данных на сервер.
В настоящее время я могу переместить его с помощью перенесенной функции и вызвать его на сервер в ответе JSON.
То, что я действительно хочу, это иметь что-то вроде триггера, который продолжит выполнение функции move после того, как я остановлю его.
Вот мой текущий код
#!/usr/bin/env python
import RPi.GPIO as gpio
import serial
import movement as m
import time
import requests
#ttyACM0
#ttyUSB0
arduinoSerialData = serial.Serial('/dev/ttyUSB0',9600)
global myData
myData = ""
m.stop()
#m.forward(0.5)
m.right(0.1)
def move(myData = ""):
#Start
#far
while m.farTrack() == '1101':
print ("Left")
myData = ""
m.left(0.01)
break
while m.farTrack() == '1011':
print ("Right")
myData = ""
m.right(0.01)
break
while m.farTrack() == '1110':
print ("Right")
myData = ""
m.right(0.01)
break
while m.farTrack() == '0111':
print ("Left")
myData = ""
m.left(0.01)
break
while m.farTrack() == '0011':
print ("Left")
myData = ""
m.left(0.01)
break
while m.farTrack() == '1100':
print ("Right")
myData = ""
m.right(0.01)
break
while m.farTrack() == '0110':
print ("Right")
myData = ""
m.right(0.01)
break
while m.farTrack() == '0010':
print ("Right")
myData = ""
m.right(0.01)
break
while m.farTrack() == '1111':#if counter
print ("Left")
myData = ""
m.left(0.01)
break
while m.lineTrack() == '1110':
print ("Right")
myData = ""
m.right(0.01)
break
def saveData(myData):
url = 'http://aviarthardph.net/robot/post.php'
dataw = {'tag': myData}
r = requests.post(url, data=dataw)
print r.text
print("Saving")
def main():
while(arduinoSerialData.inWaiting()>0):
global myData
myData = arduinoSerialData.readline()
print ("Tag Idendified: ", myData)
if(myData != ''):
#saveData(myData)
continue
myData = myData
while True:
r = requests.get('http://aviarthardph.net/robot/table.php?tableInfo')
data = r.json()
print(data)
if data['status'] == '0':
while True:
r = requests.get('http://aviarthardph.net/robot/table.php?tableInfo');
data = r.json()
if(data['table'] == '1' or data['table'] == 2 or data['table'] == 3 or data['table'] == 4):
if(data['movement'] == 'L'):
print ('move left')
move()
print('continue')
else:
print('move Right')
move()
else:
print ('move right')
break
print ("Identified RFID :", myData)
print("Far Track", m.farTrack())
print("Line Track", m.lineTrack())
print("\n")
#move(myData)
if __name__ == "__main__":
main()
Вывод, который я визуализирую, состоит в том, чтобы функция def move
работала непрерывно до тех пор, пока статус не изменится с 0 на 1.
JSON содержит ограничение на несколько данных, равное 10, поэтому мне нужно проверить значение каждого из них.
Большое спасибо