import time
import serial
from playsound import playsound



adresse1=10
adresse2=10
adresse3=10
adresse4=10
cg1=0
cg2=0
cg3=0
cg4=0
af01=0
af02=0
af03=0
af04=0
bf01=0
bf02=0
bf03=0
bf04=0
cf01=0
cf02=0
cf03=0
cf04=0
fg1=0
fg2=0
fg3=0
fg4=0
cag01=0
bb=0
bb0=0
bb1=0
y4=b'\x08'
t1=int(time.time())
t2=int(time.time())
t3=int(time.time())
t4=int(time.time())
i1=0
i2=0
i3=0
i4=0
ad=10
adresse=3
ma=1
vitesse=0
octet=0
octet0=0
cf0=0
t=int(time.time())
f0=0
f1=0
f2=0
f3=0
f4=0
f5=0
f6=0
f7=0
f8=0
af=0
af0=0
bf=0
bf0=0
f00=0
db0=0
numag=0
posag=0
cag=0
cag0=0
dt=0
db2=0
db20=0
y5=b'\x00'
detecteur1=0
detecteur2=0
detecteur3=0
detecteur4=0
detecteur5=0
detecteur6=0
detecteur7=0
detecteur8=0
ligne0="  "
cson=0


NB_CANTONS = 8
cantons = ["INCONNU"] * NB_CANTONS




# Ouverture du fichier qui contient le numéro du port COM
# Remplacer ce numéro de port COM dans le fichier  par celui de votre ARDUINO
f=open('portcom.txt', 'r')
portcom = f.read()
print("port com=",portcom)
f.close()

#Ouverture du port série avec l'Arduino Uno


try:
    ser = serial.Serial(
 port=portcom, 
 baudrate = 9600,
 parity=serial.PARITY_NONE,
 stopbits=serial.STOPBITS_ONE,
 bytesize=serial.EIGHTBITS,
 timeout=1
)
    time.sleep(2)  # temps pour reset Arduino
    print("Connexion série établie")
except serial.SerialException as e:
    print("Erreur ouverture port série :", e)
    exit(1)

print("Pour exécuter un trajet, taper 0, pour enregistrer un trajet, taper 1")
enr = int(input())
if enr==0:
    print("choix: Exécution d'un trajet")
if enr==1:
    print("choix: Enregistrement d'un trajet")
    
if enr==0:
    print("Entrer le numéro du trajet")
    ntrajet = int(input())
    print("Numéro du trajet = ",ntrajet)
    nomtrajet="trajet"+str(ntrajet)+".txt"
    nomtrajet1="trajet"+str(ntrajet)+"loco1.txt"
    nomtrajet2="trajet"+str(ntrajet)+"loco2.txt"
    nomtrajet3="trajet"+str(ntrajet)+"loco3.txt"
    nomtrajet4="trajet"+str(ntrajet)+"loco4.txt"
    nomtrajet5="trajet"+str(ntrajet)+"loco5.txt"

    print(nomtrajet)
    f=open("temp/"+nomtrajet, 'r')
    nlocos = int(f.read())
    print("nlocos=",nlocos)
    f.close()
    tableau1=[]
    f=open("temp/"+nomtrajet1, 'r')
    lecture = f.readlines()
    n1 = len(lecture)
    print("n1=",n1)
    f.close
    f=open("temp/"+nomtrajet1, 'r')
    for i in range(n1):
       ligne=f.readline()
       ligne = ligne.split(',') #en supposant que les nombres sont séparés par des ,
       # ligne est maintenant une liste
       print("i=",i,"ligne=",ligne)
       tableau1.append(ligne)
    f.close()
if enr==0 and nlocos>1:
    f=open("temp/"+nomtrajet2, 'r')
    lecture = f.readlines()
    n2 = len(lecture)
    print("n2=",n2)
    f.close()
    tableau2=[]
    f=open("temp/"+nomtrajet2, 'r')
    for i in range(n2):
        ligne=f.readline()
        ligne = ligne.split(',') #en supposant que les nombres sont séparés par des ,
        # ligne est maintenant une liste
        print("i=",i,"ligne=",ligne)
        tableau2.append(ligne)
    f.close()
if enr==0 and nlocos>2:
    f=open("temp/"+nomtrajet3, 'r')
    lecture = f.readlines()
    n3 = len(lecture)
    print("n3=",n3)
    f.close()
    tableau3=[]
    f=open("temp/"+nomtrajet3, 'r')
    for i in range(n3):
        ligne=f.readline()
        ligne = ligne.split(',') #en supposant que les nombres sont séparés par des ,
        # ligne est maintenant une liste
        print("i=",i,"ligne=",ligne)
        tableau3.append(ligne)
    f.close()
if enr==0 and nlocos>3:
    f=open("temp/"+nomtrajet4, 'r')
    lecture = f.readlines()
    n4 = len(lecture)
    print("n4=",n4)
    f.close()
    tableau4=[]
    f=open("temp/"+nomtrajet4, 'r')
    for i in range(n4):
        ligne=f.readline()
        ligne = ligne.split(',') #en supposant que les nombres sont séparés par des ,
        # ligne est maintenant une liste
        print("i=",i,"ligne=",ligne)
        tableau4.append(ligne)
    f.close()
    
# loco commande vitesse et sens de marche 
def loco_commande(adresse,ma,vitesse):
    if(ma==0) : vit=vitesse
    if(ma==1) : vit=vitesse+30
    
    y2=b'\x01'
    if adresse==1: y1=b'\x01'
    if adresse==2: y1=b'\x02'
    if adresse==3: y1=b'\x03'
    if adresse==4: y1=b'\x04'
    if adresse==5: y1=b'\x05'
    if adresse==6: y1=b'\x06'
    if adresse==7: y1=b'\x07'
    if adresse==8: y1=b'\x08'
    if adresse==9: y1=b'\x09'
    if adresse==10: y1=b'\x0A'
    if adresse==11: y1=b'\x0B'
    if adresse==12: y1=b'\x0C'
    if adresse==13: y1=b'\x0D'
    if adresse==14: y1=b'\x0E'
    if adresse==15: y1=b'\x0F'
    if adresse >15 : y1=bytes.fromhex(hex(adresse)[2::])
    if vit==0: y3=b'\x00'
    if vit==1: y3=b'\x01'
    if vit==2: y3=b'\x02'
    if vit==3: y3=b'\x03'
    if vit==4: y3=b'\x04'
    if vit==5: y3=b'\x05'
    if vit==6 : y3=b'\x06'
    if vit==7: y3=b'\x07'
    if vit==8 : y3=b'\x08'
    if vit==9: y3=b'\x09'
    if vit==10: y3=b'\x0A'
    if vit==11: y3=b'\x0B'
    if vit==12 : y3=b'\x0C'
    if vit==13: y3=b'\x0D'
    if vit==14 : y3=b'\x0E'
    if vit==15: y3=b'\x0F'
    if vit > 15: y3=bytes.fromhex(hex(vit)[2::])
    data = y1 + y2 + y3 
    ser.write(data)
    print("adresse=",adresse,"ma=",ma,"vitesse=",vitesse)
    
# loco commande des fonctions du groupe 1
def loco_fg1(adresse,fg1):
    y2=b'\x02'
    if adresse==1: y1=b'\x01'
    if adresse==2: y1=b'\x02'
    if adresse==3: y1=b'\x03'
    if adresse==4: y1=b'\x04'
    if adresse==5: y1=b'\x05'
    if adresse==6: y1=b'\x06'
    if adresse==7: y1=b'\x07'
    if adresse==8: y1=b'\x08'
    if adresse==9: y1=b'\x09'
    if adresse==10: y1=b'\x0A'
    if adresse==11: y1=b'\x0B'
    if adresse==12: y1=b'\x0C'
    if adresse==13: y1=b'\x0D'
    if adresse==14: y1=b'\x0E'
    if adresse==15: y1=b'\x0F'
    if adresse>15: y1=bytes.fromhex(hex(adresse)[2::])
    if fg1==0: y3=b'\x00'
    if fg1==1: y3=b'\x01'
    if fg1==2: y3=b'\x02'
    if fg1==4: y3=b'\x04'
    if fg1==8: y3=b'\x08'
    if fg1==9: y3=b'\x09'
    if fg1==10: y3=b'\x0A'
    if fg1==11: y3=b'\x0B'
    if fg1==12: y3=b'\x0C'
    if fg1==13: y3=b'\x0D'
    if fg1==14: y3=b'\x0E'
    if fg1==15: y3=b'\x0F'
    
    if fg1>15: y3=bytes.fromhex(hex(fg1)[2::])
    data = y1 + y2 + y3
    ser.write(data)
    
    print("adresse=",adresse,"fg1=",fg1)
    
# loco commande des fonctions du groupe 2
def loco_fg2(adresse,fg2):
    
    y2=b'\x03' # octet 2
    if adresse==1: y1=b'\x01'
    if adresse==2: y1=b'\x02'
    if adresse==3: y1=b'\x03'
    if adresse==4: y1=b'\x04'
    if adresse==5: y1=b'\x05'
    if adresse==6: y1=b'\x06'
    if adresse==7: y1=b'\x07'
    if adresse==8: y1=b'\x08'
    if adresse==9: y1=b'\x09'
    if adresse==10: y1=b'\x0A'
    if adresse==11: y1=b'\x0B'
    if adresse==12: y1=b'\x0C'
    if adresse==13: y1=b'\x0D'
    if adresse==14: y1=b'\x0E'
    if adresse==15: y1=b'\x0F'
    if adresse>15: y1=bytes.fromhex(hex(adresse)[2::])
    if fg2==0: y3=b'\x00'
    if fg2==1: y3=b'\x01'
    if fg2==2: y3=b'\x02'
    if fg2==4: y3=b'\x04'
    if fg2==8: y3=b'\x08'
    if fg2==9: y3=b'\x09'
    if fg2==10: y3=b'\x0A'
    if fg2==11: y3=b'\x0B'
    if fg2==12: y3=b'\x0C'
    if fg2==13: y3=b'\x0D'
    if fg2==14: y3=b'\x0E'
    if fg2==15: y3=b'\x0F'
    data = y1 + y2 + y3 
    ser.write(data)
    
# commande des aiguilles
def aiguilles(numag,posag):
    print("numag=",numag,"posag=",posag)
    y3=b'\x04'
    if numag==1: y4=b'\x01'
    if numag==2: y4=b'\x02'
    if numag==3: y4=b'\x03'
    if numag==4: y4=b'\x04'
    if numag==5: y4=b'\x05'
    if numag==6: y4=b'\x06'
    if numag==7: y4=b'\x07'
    if numag==8: y4=b'\x08'
    if numag==9: y4=b'\x09'
    if numag==10: y4=b'\x0A'
    if numag==11: y4=b'\x0B'
    if numag==12: y4=b'\x0C'
    if numag==13: y4=b'\x0D'
    if anumag==14: y4=b'\x0E'
    if numag==15: y4=b'\x0F'
    if numag>15: y4=bytes.fromhex(hex(adresse)[2::])
    if(posag==0) : y5=b'\x00'
    if(posag==1) : y4=b'\x01'
    data = y3 + y4 + y5 
    ser.write(data)    
    





while enr==0 and ad>0:
    if nlocos==1: ad=adresse1
    if nlocos==2: ad=adresse1+adresse2
    if nlocos==3: ad=adresse1+adresse2+adresse3
    if nlocos==4: ad=adresse1+adresse2+adresse3+adresse4

    # Rétrosignalisation

    ligne = ser.readline().decode("utf-8").strip()
    if ligne != ligne0:
        print ("retro=",ligne)
        ligne0=ligne
    if ligne=="C1:1": detecteur1=1
    if ligne=="C1:0": detecteur1=0
    if ligne=="C2:1": detecteur2=1
    if ligne=="C2:0": detecteur2=0
    if ligne=="C3:1": detecteur3=1
    if ligne=="C3:0": detecteur3=0
    if ligne=="C4:1": detecteur4=1
    if ligne=="C4:0": detecteur4=0
    if ligne=="C5:1": detecteur5=1
    if ligne=="C5:0": detecteur5=0
    if ligne=="C6:1": detecteur6=1
    if ligne=="C6:0": detecteur6=0
    if ligne=="C7:1": detecteur7=1
    if ligne=="C7:0": detecteur7=0
    if ligne=="C8:1": detecteur8=1
    if ligne=="C8:0": detecteur8=0
       
    if cg1==1 and dt1==101 and detecteur1==1 or cg1==1 and dt1==102 and detecteur2==1 or cg1==1 and dt1==103 and detecteur3==1 or cg1==1  and dt1==104 and detecteur4==1:
        cg1=0
        if adresse1>0: i1=i1+1
    if cg1==1 and dt1==105 and detecteur5==1 or cg1==1 and dt1==106 and detecteur6==1 or cg1==1 and dt1==107 and detecteur7==1 or cg1==1  and dt1==108 and detecteur8==1:
        cg1=0
        if adresse1>0: i1=i1+1    
    
    if cg1==1 and dt1<100 and int(time.time())>t1+dt1:
        cg1=0
        if adresse1>0: i1=i1+1
        
    
    if cg1==0:
        
        
        adresse1= int(tableau1[i1][0])
        ma1= int(tableau1[i1][1])
        vitesse1= int(tableau1[i1][2])
        f01= int(tableau1[i1][3])
        f11= int(tableau1[i1][4])
        f21= int(tableau1[i1][5])
        f31= int(tableau1[i1][6])
        f41= int(tableau1[i1][7])
        f51= int(tableau1[i1][8])
        f61= int(tableau1[i1][9])
        f71= int(tableau1[i1][10])
        f81= int(tableau1[i1][11])
        dt1= int(tableau1[i1][12])
        numag1= int(tableau1[i1][13])
        posag1= int(tableau1[i1][14])
        son1= int(tableau1[i1][15])
        
        t1=int(time.time())
        # commande vitesse et sens de marche loco1
        cf1 = adresse1 + ma1 + vitesse1
        if adresse1>0 and cf1 != cf01:
            adresse=adresse1
            ma=ma1
            vitesse=vitesse1
            loco_commande(adresse,ma,vitesse)
            cf01=cf1
        # loco1 commande des fonctions du groupe 1    
        af1 = adresse1 + f01 + f11 + f21 + f31 + f41
        if adresse1>0 and af1 != af01 :
            adresse=adresse1
            fg1 = 16*f01 + f11 + 2*f21 + 4*f31 + 8*f41
            loco_fg1(adresse,fg1)
            af01=af1
        # loco1 commande des fonctions du groupe 2
        bf1 = adresse1 + f51 + f61 + f71 + f81
        
        if adresse1>0 and bf1 != bf01 :
            adresse=adresse1
            fg2 =  f51 + 2*f61 + 4*f71 + 8*f81
            loco_fg2(adresse,fg2)
            bf01=bf1
            
        # commande des aiguillages    
        cag1=numag1+posag1
        if numag1>0 and cag1 != cag01 :
            numag=numag1
            posag=posag1
            aiguilles(numag,posag)
            cag01=cag1
        print("i1=",i1, "adresse1=",adresse1,"ma1=",ma1,"vitesse1=",vitesse1,"fg1=",fg1,"fg2=",fg2, "dt=", dt1)
        cg1=1

        if son1>0 and cson==0 :
            if son1==1: playsound("sons/1.wav")
            if son1==2: playsound("sons/2.wav")
            if son1==3: playsound("sons/3.wav")
            if son1==4: playsound("sons/4.wav")
            if son1==5: playsound("sons/5.wav")

            
            cson=1
        if son1==0 and cson==1: cson=0    




        

    if nlocos>1 and cg2==1 and dt2==101 and detecteur1==1 or cg2==1 and dt2==102 and detecteur2==1 or cg2==1 and dt2==103 and detecteur3==1 or cg2==1  and dt2==104 and detecteur4==1:
        if adresse2>0: i2=i2+1
        cg2=0
    
    if nlocos>1 and cg2==1 and dt2<100 and int(time.time())>t2+dt2:
        if adresse2>0: i2=i2+1
        cg2=0
    
    if nlocos>1 and cg2==0:
        adresse2= int(tableau2[i2][0])
        ma2= int(tableau2[i2][1])
        vitesse2= int(tableau2[i2][2])
        f02= int(tableau2[i2][3])
        f12= int(tableau2[i2][4])
        f22= int(tableau2[i2][5])
        f32= int(tableau2[i2][6])
        f42= int(tableau2[i2][7])
        f52= int(tableau2[i2][8])
        f62= int(tableau2[i2][9])
        f72= int(tableau2[i2][10])
        f82= int(tableau2[i2][11])
        dt2= int(tableau2[i2][12])
        numag2= int(tableau2[i2][13])
        posag2= int(tableau2[i2][14])
        t2 = int(time.time())    
        # loco2 commande vitesse et sens de marche
        cf2 = adresse2 + ma2 + vitesse2
        if nlocos>1 and adresse2>0 and cf2 != cf02 :
            adresse=adresse2
            ma=ma2
            vitesse=vitesse2
            loco_commande(adresse,ma,vitesse)
            cf02=cf2
        # loco2 commande des fonctions du groupe 1    
        af2 = adresse2 + f02 + f12 + f22 + f32 + f42
                    
        if nlocos>1 and adresse2>0 and af2 != af02 :
            adresse=adresse2
            fg1 = 16*f02 + f12 + 2*f22 + 4*f32 + 8*f42
            loco_fg1(adresse,fg1)
            af02=af2
        # loco2 commande des fonctions du groupe 2
        bf2 = adresse2 + f52 + f62 + f72 + f82
        if nlocos>1 and adresse2>0 and bf2 != bf02 :
            adresse=adresse2
            fg2 =  f52 + 2*f62 + 4*f72 + 8*f82
            loco_fg2(adresse,fg2)
            bf02=bf2
        # commande des aiguillages    
        cag2=numag2+posag2
        if nlocos>1 and numag2>0 and cag2 != cag02 :
            numag=numag2
            posag=posag2
            aiguilles(numag,posag)
            cag02=cag2

        print("i2=",i2, "adresse2=",adresse2,"ma2=",ma2,"vitesse2=",vitesse2,"fg1=",fg1,"fg2=",fg2, "dt2=", dt2)
        cg2=1

        if nlocos>2 and cg3==1 and dt3==101 and detecteur1==1 or cg3==1 and dt3==102 and detecteur2==1 or cg3==1 and dt3==103 and detecteur3==1 or cg3==1  and dt3==104 and detecteur4==1:
            cg3=0
            if adresse3>0: i3=i3+1
            
    
        if nlocos>2 and cg3==1 and dt3<100 and int(time.time())>t3+dt3:
            cg3=0
            if adresse3>0: i3=i3+1
        
    
        if nlocos>2 and cg3==0:
            adresse3= int(tableau3[i3][0])
            ma3= int(tableau3[i3][1])
            vitesse3= int(tableau3[i3][2])
            f03= int(tableau3[i3][3])
            f13= int(tableau3[i3][4])
            f23= int(tableau3[i3][5])
            f33= int(tableau3[i3][6])
            f43= int(tableau3[i3][7])
            f53= int(tableau3[i3][8])
            f63= int(tableau3[i3][9])
            f73= int(tableau3[i3][10])
            f83= int(tableau3[i3][11])
            dt3= int(tableau3[i3][12])
            numag3= int(tableau3[i3][13])
            posag3= int(tableau3[i3][14])
                
            t3=int(time.time())
        
            cf3 = adresse3 + ma3 + vitesse3
            if adresse3>0 and cf3 != cf03 :
                adresse=adresse3
                ma=ma3
                vitesse=vitesse3
                loco_commande(adresse,ma,vitesse)
                    
                cf03=cf3
                    
            af3 = adresse3 + f03 + f13 + f23 + f33 + f43
            if adresse3>0 and af3 != af03 :
                adresse=adresse3
                fg1 = 16*f03 + f13 + 2*f23 + 4*f33 + 8*f43
                loco_fg1(adresse,fg1)
                af03=af3

            bf3 = adresse3 + f53 + f63 + f73 + f83
            if adresse3>0 and bf3 != bf03 :
                adresse=adresse3
                fg2 = f53 + 2*f63 + 4*f73 + 8*f83
                loco_fg2(adresse,fg2)
                bf03=bf3
            # commande des aiguillages    
            cag3=numag3+posag3
            if numag3>0 and cag3 != cag03 :
                numag=numag3
                posag=posag3
                aiguilles(numag,posag)
                cag03=cag3

            print("i3=",i3, "adresse3=",adresse3,"ma3=",ma3,"vitesse3=",vitesse3,"fg1=",fg1,"fg2=",fg2, "dt3=", dt3)
            
            cg3=1

        if nlocos>3 and cg4==1 and dt4==101 and detecteur1==1 or cg4==1 and dt4==102 and detecteur2==1 or cg4==1 and dt4==103 and detecteur3==1 or cg4==1  and dt4==104 and detecteur4==1:
            if adresse4>0: i4=i4+1
            cg4=0
    
        if nlocos>3 and cg4==1 and dt4<100 and int(time.time())>t4+dt4:
            if adresse4>0: i4=i4+1
            cg4=0
    
        if nlocos>3 and cg4==0:
            adresse4= int(tableau4[i4][0])
            ma4= int(tableau4[i4][1])
            vitesse4= int(tableau4[i4][2])
            f04= int(tableau4[i4][3])
            f14= int(tableau4[i4][4])
            f24= int(tableau4[i4][5])
            f34= int(tableau4[i4][6])
            f44= int(tableau4[i4][7])
            f54= int(tableau4[i4][8])
            f64= int(tableau4[i4][9])
            f74= int(tableau4[i4][10])
            f84= int(tableau4[i4][11])
            dt4= int(tableau4[i4][12])
            numag4= int(tableau4[i4][13])
            posag4= int(tableau4[i4][14])
                
            t4=int(time.time())
        
            cf4 = adresse4 + ma4 + vitesse4
            if adresse4>0 and cf4 != cf04 :
                adresse=adresse4
                ma=ma4
                vitesse=vitesse4
                loco_commande(adresse,ma,vitesse)
                cf04=cf4
                    
            af4 = adresse4 + f04 + f14 + f24 + f34 + f44
            if adresse4>0 and af4 != af04 :
                adresse=adresse4
                fg1 = 16*f04 + f14 + 2*f24 + 4*f34 + 8*f44
                loco_fg1(adresse,fg1)
                af04=af4

            bf4 = adresse4 + f54 + f64 + f74 + f84 
            if adresse4>0 and bf4 != bf04 :
                adresse=adresse4
                fg2 = f54 + 2*f64 + 4*f74 + 8*f84
                loco_fg2(adresse,fg2)
                bf04=bf4
            # commande des aiguillages    
                cag4=numag4+posag4
                if numag4>0 and cag4 != cag04 :
                    numag=numag4
                    posag=posag4
                    aiguilles(numag,posag)
                    cag04=cag4

            print("i4=",i4, "adresse4=",adresse4,"ma4=",ma4,"vitesse4=",vitesse4,"fg1=",fg1,"fg2=",fg2, "dt4=", dt4)
            cg4=1
if ad==0:
    adresse=3
    ma=1
    vitesse=0
    loco_commande(adresse,ma,vitesse)
    
# Enregistrement d'un trajet

if enr==1:
    t=int(time.time())
    adresse=0
    ma=1
    vitesse=0
    f0=0
    f1=0
    f2=0
    f3=0
    f4=0
    f5=0
    f6=0
    f7=0
    f8=0
    numag=0
    posag=0
    ligne0="  "
    dt=0
    byte0 = "   "
    detecteur=0
    dec=0

if enr==1:
    fic3=open("temp/"+"temp.txt", 'w')
    print("Entrer le numéro du premier détecteur rencontré dans le trajet")
    de1 = int(input())
    print("Entrer le numéro du deuxième détecteur rencontré dans le trajet")
    de2 = int(input())
    print("Enregistrement du trajet en cours")
          
while enr==1 and  adresse<99:
    byte=ser.read(12)
    nr=len(byte)
    daa=str(byte)
    if nr>0 : print ("nr=",nr,"octet=",byte)
    if nr==1:
        x1=int(daa[2])
        if x1<=1:ma=x1
        if x1>=3: adresse=x1
        print ("ma=",ma,"adresse=",adresse)
    if nr==2:
        x1=int(daa[2])
        x2=int(daa[3])
        adresse=10*x1+x2
        print ("adresse=",adresse)
        
    if nr==3:
        x1=int(daa[2])
        x2=int(daa[3])
        x3=int(daa[4])
        data=100*x1+10*x2+x3
        print ("data=",data)
        if data>=100 and data<=128: vitesse=data-100
        if data>130 and data<147: numag=data-130
        if data==148: posag=1
        if data==149: posag=0
        if data==150: f0=1
        if data==151: f0=0
        if data==152: f1=1
        if data==153: f1=0
        if data==154: f2=1
        if data==155: f2=0
        if data==156: f3=1
        if data==157: f3=0
        if data==158: f4=1
        if data==159: f4=0
        if data==160: f5=1
        if data==161: f5=0
        if data==162: f6=1
        if data==163: f6=0
        if data==164: f7=1
        if data==165: f7=0
        if data==166: f8=1
        if data==167: f8=0
        fg1=f1+2*f2+4*f3+8*f4+16*f0
        fg2=f5+2*f6+4*f7+8*f8

    if nr==6:
        x1=int(daa[3])
        x2=int(daa[5])
        if x2==1: detecteur=x1
        print("detecteur=",detecteur)

    if nr>0 and nr<7 and byte != byte0:
        dt=int(time.time())-t
        if vitesse>0 and de1>0 and  detecteur==de1 and dec==0:
            dt=100+de1
            dec=1
            
        if vitesse>0 and de2>0 and  detecteur==de2 and dec==1:
            dt=100+de2
            dec=2
            
        
        print("adresse=",adresse,"ma=",ma,"vitesse=",vitesse,"fg1=",fg1,"fg2=",fg2,"dt=",dt)
        if adresse>0 : print(adresse,ma,vitesse,f0,f1,f2,f3,f4,f5,f6,f7,f8,dt,numag,posag,0,file=fic3)
        t=int(time.time())
        byte0=byte        
    
    
        
  
    
    
        
        
if enr==1 and adresse==99:
    fic3.close()
    print("fin de l'enregistrement")
  
if enr==1:
     tableau=[]
     f=open("temp/temp.txt", 'r')
     lecture = f.readlines()
     n = len(lecture)
     print("n=",n)
     f.close
     f=open("temp/temp.txt", 'r')
     for i in range(n):
         ligne=f.readline()
         ligne = ligne.split(' ') #en supposant que les nombres sont séparés par des espaces
         # ligne est maintenant une liste
         print("i=",i,"ligne=",ligne)
         tableau.append(ligne)
     f.close()
     f=open("temp/temp.txt", 'w')
     for i in range(n-3):
         
         dt=tableau[i+1][12]
         print(tableau[i][0],tableau[i][1],tableau[i][2],tableau[i][3],tableau[i][4],tableau[i][5],tableau[i][6],tableau[i][7],tableau[i][8],tableau[i][9],tableau[i][10],tableau[i][11],dt,tableau[i][13],tableau[i][14],0,file=f,sep=",")
     print(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,file=f,sep=",")    
         
     f.close()
     
                                                   
                                                   

    
    


print("Fin du trajet")

print ("Pour quitter le programme appuyer sur une touche")

nt = input()



        








        









