1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| msg = None
def demarrer():
global msg
msg = str(1)
def arreter():
global msg
msg = str(4)
def devier_a_gauche():
global msg
msg = str(2)
def devier_a_droite():
global msg
msg = str(3)
HOST = sys.argv[-1] if len(sys.argv) > 1 else '192.168.43.199'
PORT = utils.PORT
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
print('\nConnected to {}:{}'.format(HOST, PORT))
print("Type message, enter to send. 'q' to quit")
class Attente:
def __init__(self):
self.q = Queue()
def produce(self):
global msg
self.q.put(msg)
if (not(self.q.put(msg) == None)):
print('msg in queue', self.q.put(msg))
else:
self.q.put_nowait(msg)
sleep(1)
class ThreadCommunication(threading.Thread):
"""objet thread gérant la communication"""
def __init__(self, sock, prod):
threading.Thread.__init__(self)
self.connexion = sock # réf. du socket de connexion
self.prod = prod
def communication(self):
msg = self.prod.q.get()
if (not(msg == None)):
print('msg receved', msg)
else:
self.prod.q.get_nowait()
utils.send_msg(sock, msg)
msgFromArduino = utils.recv_msg(sock)
msgFromArduino = msgFromArduino.split(':')[1].split(';')
print(msgFromArduino)
if (not(len(msgFromArduino) < 6)):
data1 = msgFromArduino[0]
data2 = msgFromArduino[1]
data3 = msgFromArduino[2]
data4 = msgFromArduino[3]
data5 = msgFromArduino[4]
start_time = time.time()
secondes = time.time() - start_time
Distance_ultrason.append(data1)
vitesse_droite.append(data2)
vitesse_gauche.append(data3)
Latitude.append(data4)
Longitude.append(data5)
temps.append(round(secondes, 2))
now = datetime.datetime.now()
c = open('fichierrobot_car_' + '_' + str(now.strftime("%Y-%m-%d-%H-%M")) + '.csv', "w")
c = csv.writer(c, delimiter="\t")
c.writerow (("Distance_ultrason","vitesse_droite","vitesse_gauche","Latitude","Longitude","temps"))
fin1, fin2 = len(Distance_ultrason), len(vitesse_droite)
if fin1 == fin2:
for i in range (fin1):
c.writerow((Distance_ultrason[i],vitesse_droite[i],vitesse_gauche[i],Latitude[i],Longitude[i],temps[i]))
return vitesse_droite, vitesse_gauche, temps
p = Attente()
thrd = ThreadCommunication(sock, p)
t1 = Thread(target=p.produce)
t2 = Thread(target=thrd.communication)
t1.start()
t2.start()
t1.join()
t2.join() |
Partager