def lirepositionballast (ballast) : valeuractuelle = '' if (ballast == 0): while (len(valeuractuelle)==0): Dialoguemoteur.envoyer(1,'G') time.sleep(0.1) valeuractuelle = Dialoguemoteur.recevoir(1) if (len(valeuractuelle)==3): #on doit avoir recut 3byte commencant par 'G' if valeuractuelle[0] == 'G': valeuractuelle = valeuractuelle[1:3] else : valeuractuelle = '' else : valeuractuelle = '' valeuractuelle = ord(valeuractuelle[0])*256+ord(valeuractuelle[1]) print ("trame recue = G +"+str(valeuractuelle)) return valeuractuelle elif (ballast == 1): while (len(valeuractuelle)==0): Dialoguemoteur.envoyer(1,'J') time.sleep(0.1) valeuractuelle = Dialoguemoteur.recevoir(1) if (len(valeuractuelle)==3): #on doit avoir recut 3byte commencant par 'J' if valeuractuelle[0] == 'J': valeuractuelle = valeuractuelle[1:3] else : valeuractuelle = '' else : valeuractuelle = '' valeuractuelle = ord(valeuractuelle[0])*256+ord(valeuractuelle[1]) print ("trame recue = J +"+str(valeuractuelle)) return valeuractuelle else : print "erreur lecture position ballast" return 0
def lirepositionballast(ballast): valeuractuelle = '' if (ballast == 0): while (len(valeuractuelle) == 0): Dialoguemoteur.envoyer(1, 'G') time.sleep(0.1) valeuractuelle = Dialoguemoteur.recevoir(1) if (len(valeuractuelle) == 3): #on doit avoir recut 3byte commencant par 'G' if valeuractuelle[0] == 'G': valeuractuelle = valeuractuelle[1:3] else: valeuractuelle = '' else: valeuractuelle = '' valeuractuelle = ord(valeuractuelle[0]) * 256 + ord(valeuractuelle[1]) print("trame recue = G +" + str(valeuractuelle)) return valeuractuelle elif (ballast == 1): while (len(valeuractuelle) == 0): Dialoguemoteur.envoyer(1, 'J') time.sleep(0.1) valeuractuelle = Dialoguemoteur.recevoir(1) if (len(valeuractuelle) == 3): #on doit avoir recut 3byte commencant par 'J' if valeuractuelle[0] == 'J': valeuractuelle = valeuractuelle[1:3] else: valeuractuelle = '' else: valeuractuelle = '' valeuractuelle = ord(valeuractuelle[0]) * 256 + ord(valeuractuelle[1]) print("trame recue = J +" + str(valeuractuelle)) return valeuractuelle else: print "erreur lecture position ballast" return 0
def run(self): tmp_time0 = time.time() tmp_time1 = time.time() while not self.Terminated: # self.valeuractuelle0 = lirepositionballast(0) time.sleep(1) self.valeuractuelle1 = lirepositionballast(1) if (self.valeuractuelle0 < self.parametre0) : #avance du piston ballast0 if (((time.time()-tmp_time0) > 0.1)and (abs(self.parametre0-self.valeuractuelle0)>60)): print '#le moteur tourne depuis plus de 0.1Sec et est eloigner' if (self.vitesse0 < 245) : self.vitesse0 += 10 tramevitesse = 'K'+chr(0x00)+chr(self.vitesse0) print "#la vitesse demandee est de"+str(self.vitesse0) Dialoguemoteur.envoyer(1,tramevitesse) tmp_time0 = time.time() elif (((time.time()-tmp_time0) > 0.1) and (abs(self.parametre0-self.valeuractuelle0)<60) and (abs(self.parametre0-self.valeuractuelle0)>5)) : print'#le moteur tourne depuis plus de 0.1S et est proche' if (self.vitesse0 > 15) : self.vitesse0 -= 10 elif (self.vitesse0 == 0 ) : self.vitesse0 = 5 tramevitesse = 'K'+chr(0x00)+chr(self.vitesse0) Dialoguemoteur.envoyer(1,tramevitesse) tmp_time0 = time.time() elif (abs(self.parametre0-self.valeuractuelle0) < 5): print"#on considere qu'on a atteint la position demandee Ballast0 est corectement positionner" tramevitesse = 'K'+chr(0x00)+chr(0x00) Dialoguemoteur.envoyer(1,tramevitesse) elif (self.valeuractuelle0 > self.parametre0) : #recul du piston ballast0 if (((time.time()-tmp_time0) > 0.1)and (abs(self.parametre0-self.valeuractuelle0)>60)): if (self.vitesse0 < 245) : self.vitesse0 += 10 tramevitesse = 'K'+chr(0x01)+chr(self.vitesse0) Dialoguemoteur.envoyer(1,tramevitesse) tmp_time0 = time.time() elif (((time.time()-tmp_time0) > 0.10) and (abs(self.parametre0-self.valeuractuelle0)<60)and (abs(self.parametre0-self.valeuractuelle0)>5)) : # on se rapproche du point B # on diminue la vitesse progressivement if (self.vitesse0 > 15) : self.vitesse0 -= 10 elif (self.vitesse0 == 0 ) : self.vitesse0 = 5 tramevitesse = 'K'+chr(0x01)+chr(self.vitesse0) Dialoguemoteur.envoyer(1,tramevitesse) #on reset le compteur de temps tmp_time0 = time.time() elif (abs(self.parametre0-self.valeuractuelle0) <5): #on considere qu'on a atteint la position demandee ballast0 = ok tramevitesse = 'K'+chr(0x01)+chr(0x00) Dialoguemoteur.envoyer(1,tramevitesse) elif (self.valeuractuelle0 == self.parametre0) : #le ballast 0 est corectement positionner tramevitesse = 'K'+chr(0x00)+chr(0x00) Dialoguemoteur.envoyer(1,tramevitesse) time.sleep(2) if (self.valeuractuelle1 < self.parametre1) : print"#avance du piston ballast1" if (((time.time()-tmp_time1) > 0.1)and (abs(self.parametre1-self.valeuractuelle1)>60)): print "#le piston B1 est loin" if (self.vitesse1 < 245) : self.vitesse1 += 10 tramevitesse = 'M'+chr(0x00)+chr(self.vitesse1) print "#la vitesse demandee est de"+str(self.vitesse1) Dialoguemoteur.envoyer(1,tramevitesse) tmp_time1 = time.time() elif (((time.time()-tmp_time1) > 0.1) and (abs(self.parametre1-self.valeuractuelle1)<60) and (abs(self.parametre1-self.valeuractuelle1)>5)) : print "#le piston B1 est proche" if (self.vitesse1 > 15) : self.vitesse1 -= 10 elif (self.vitesse1 == 0 ) : self.vitesse1 = 5 tramevitesse = 'M'+chr(0x00)+chr(self.vitesse1) Dialoguemoteur.envoyer(1,tramevitesse) tmp_time1 = time.time() elif (abs(self.parametre1-self.valeuractuelle1) < 5): print"#on considere qu'on a atteint la position demandee Ballast1 est corectement positionner" tramevitesse = 'M'+chr(0x00)+chr(0x00) Dialoguemoteur.envoyer(1,tramevitesse) elif (self.valeuractuelle1 > self.parametre1) : print"#recul du piston ballast1" if (((time.time()-tmp_time1) > 0.1)and (abs(self.parametre1-self.valeuractuelle1)>60)): if (self.vitesse1 < 255) : self.vitesse1 += 10 tramevitesse = 'M'+chr(0x01)+chr(self.vitesse1) Dialoguemoteur.envoyer(1,tramevitesse) tmp_time1 = time.time() elif (((time.time()-tmp_time1) > 0.10) and (abs(self.parametre1-self.valeuractuelle1)<60)and (abs(self.parametre1-self.valeuractuelle1)>5)) : # on se rapproche du point B # on diminue la vitesse progressivement if (self.vitesse1 > 15) : self.vitesse1 -= 10 elif (self.vitesse1 == 0 ) : self.vitesse1 = 5 tramevitesse = 'M'+chr(0x01)+chr(self.vitesse1) Dialoguemoteur.envoyer(1,tramevitesse) #on reset le compteur de temps tmp_time1 = time.time() elif (abs(self.parametre1-self.valeuractuelle1) <5): #on considere qu'on a atteint la position demandee ballast1 = ok tramevitesse = 'M'+chr(0x01)+chr(0x00) Dialoguemoteur.envoyer(1,tramevitesse) elif (self.valeuractuelle1 == self.parametre1) : # tramevitesse = 'M'+chr(0x00)+chr(0x00) Dialoguemoteur.envoyer(1,tramevitesse) print "le thread est terminer correctement"
def run(self): tmp_time0 = time.time() tmp_time1 = time.time() while not self.Terminated: # self.valeuractuelle0 = lirepositionballast(0) time.sleep(1) self.valeuractuelle1 = lirepositionballast(1) if (self.valeuractuelle0 < self.parametre0): #avance du piston ballast0 if (((time.time() - tmp_time0) > 0.1) and (abs(self.parametre0 - self.valeuractuelle0) > 60)): print '#le moteur tourne depuis plus de 0.1Sec et est eloigner' if (self.vitesse0 < 245): self.vitesse0 += 10 tramevitesse = 'K' + chr(0x00) + chr(self.vitesse0) print "#la vitesse demandee est de" + str(self.vitesse0) Dialoguemoteur.envoyer(1, tramevitesse) tmp_time0 = time.time() elif (((time.time() - tmp_time0) > 0.1) and (abs(self.parametre0 - self.valeuractuelle0) < 60) and (abs(self.parametre0 - self.valeuractuelle0) > 5)): print '#le moteur tourne depuis plus de 0.1S et est proche' if (self.vitesse0 > 15): self.vitesse0 -= 10 elif (self.vitesse0 == 0): self.vitesse0 = 5 tramevitesse = 'K' + chr(0x00) + chr(self.vitesse0) Dialoguemoteur.envoyer(1, tramevitesse) tmp_time0 = time.time() elif (abs(self.parametre0 - self.valeuractuelle0) < 5): print "#on considere qu'on a atteint la position demandee Ballast0 est corectement positionner" tramevitesse = 'K' + chr(0x00) + chr(0x00) Dialoguemoteur.envoyer(1, tramevitesse) elif (self.valeuractuelle0 > self.parametre0): #recul du piston ballast0 if (((time.time() - tmp_time0) > 0.1) and (abs(self.parametre0 - self.valeuractuelle0) > 60)): if (self.vitesse0 < 245): self.vitesse0 += 10 tramevitesse = 'K' + chr(0x01) + chr(self.vitesse0) Dialoguemoteur.envoyer(1, tramevitesse) tmp_time0 = time.time() elif (((time.time() - tmp_time0) > 0.10) and (abs(self.parametre0 - self.valeuractuelle0) < 60) and (abs(self.parametre0 - self.valeuractuelle0) > 5)): # on se rapproche du point B # on diminue la vitesse progressivement if (self.vitesse0 > 15): self.vitesse0 -= 10 elif (self.vitesse0 == 0): self.vitesse0 = 5 tramevitesse = 'K' + chr(0x01) + chr(self.vitesse0) Dialoguemoteur.envoyer(1, tramevitesse) #on reset le compteur de temps tmp_time0 = time.time() elif (abs(self.parametre0 - self.valeuractuelle0) < 5): #on considere qu'on a atteint la position demandee ballast0 = ok tramevitesse = 'K' + chr(0x01) + chr(0x00) Dialoguemoteur.envoyer(1, tramevitesse) elif (self.valeuractuelle0 == self.parametre0): #le ballast 0 est corectement positionner tramevitesse = 'K' + chr(0x00) + chr(0x00) Dialoguemoteur.envoyer(1, tramevitesse) time.sleep(2) if (self.valeuractuelle1 < self.parametre1): print "#avance du piston ballast1" if (((time.time() - tmp_time1) > 0.1) and (abs(self.parametre1 - self.valeuractuelle1) > 60)): print "#le piston B1 est loin" if (self.vitesse1 < 245): self.vitesse1 += 10 tramevitesse = 'M' + chr(0x00) + chr(self.vitesse1) print "#la vitesse demandee est de" + str(self.vitesse1) Dialoguemoteur.envoyer(1, tramevitesse) tmp_time1 = time.time() elif (((time.time() - tmp_time1) > 0.1) and (abs(self.parametre1 - self.valeuractuelle1) < 60) and (abs(self.parametre1 - self.valeuractuelle1) > 5)): print "#le piston B1 est proche" if (self.vitesse1 > 15): self.vitesse1 -= 10 elif (self.vitesse1 == 0): self.vitesse1 = 5 tramevitesse = 'M' + chr(0x00) + chr(self.vitesse1) Dialoguemoteur.envoyer(1, tramevitesse) tmp_time1 = time.time() elif (abs(self.parametre1 - self.valeuractuelle1) < 5): print "#on considere qu'on a atteint la position demandee Ballast1 est corectement positionner" tramevitesse = 'M' + chr(0x00) + chr(0x00) Dialoguemoteur.envoyer(1, tramevitesse) elif (self.valeuractuelle1 > self.parametre1): print "#recul du piston ballast1" if (((time.time() - tmp_time1) > 0.1) and (abs(self.parametre1 - self.valeuractuelle1) > 60)): if (self.vitesse1 < 255): self.vitesse1 += 10 tramevitesse = 'M' + chr(0x01) + chr(self.vitesse1) Dialoguemoteur.envoyer(1, tramevitesse) tmp_time1 = time.time() elif (((time.time() - tmp_time1) > 0.10) and (abs(self.parametre1 - self.valeuractuelle1) < 60) and (abs(self.parametre1 - self.valeuractuelle1) > 5)): # on se rapproche du point B # on diminue la vitesse progressivement if (self.vitesse1 > 15): self.vitesse1 -= 10 elif (self.vitesse1 == 0): self.vitesse1 = 5 tramevitesse = 'M' + chr(0x01) + chr(self.vitesse1) Dialoguemoteur.envoyer(1, tramevitesse) #on reset le compteur de temps tmp_time1 = time.time() elif (abs(self.parametre1 - self.valeuractuelle1) < 5): #on considere qu'on a atteint la position demandee ballast1 = ok tramevitesse = 'M' + chr(0x01) + chr(0x00) Dialoguemoteur.envoyer(1, tramevitesse) elif (self.valeuractuelle1 == self.parametre1): # tramevitesse = 'M' + chr(0x00) + chr(0x00) Dialoguemoteur.envoyer(1, tramevitesse) print "le thread est terminer correctement"