cela fait quelques semaines que je découvre python , et j'aurais quelques questions:
1° je suis sous python 2.7 , faut il passer sous python 3 ? j'aurais tendance à dire oui mais...(je n'ai qu'un script de fait pour le moment donc pas trop dure à réécrire au besoin)
2° pour les fonction ; def():
au début j'utilisais
Code : Tout sélectionner
def a04(self):
        scale=2
        return self.read_register(0,0,4)/scaleCode : Tout sélectionner
def a44(self):
        d = dict();
        d['name']="Tex"
        d['v'] = self.read_register(4,0,4)/2
        return dbon la je sent que ça va etre compliquer à expliquer
-au demarage , je demande les valeurs que je veux. pour avoir une reference pour comparer plus tard.
ce code va bien tant que ma fonction envoie juste sa valeur ,
Code : Tout sélectionner
try:
    last_rec= {}
    last_rec["a40004"] = p4.a40004()#sys_state
    last_rec["a40014"] = p4.a40014()#p4_state
    last_rec["a44"] = p4.a44()#Tex
    last_rec["a04"] = p4.a04()#P4 T
    last_rec["a14"] = p4.a14()#Flue gas temperature
    last_rec["a34"] = p4.a34()#Residual oxygen content
except IOError:
    print("Failed to read from instrument")Code : Tout sélectionner
while True:
    Val_40004=p4.40004()
    while Val_40004 != last_rec.get("40004"):
       print time.strftime("%H:%M:%S"), 'state change de:', last_rec.get("40004"), 'a:', p4.40004()
       last_rec["state"] = p4.40004()vous me direz avec raison
ben.... j'ai envie déjà rien que pour apprendre
Code : Tout sélectionner
 while True:
        Val_a40004=p4.a40004()
        while Val_a40004 != last_rec.get("a40004"):#sys state
            con = mdb.connect(host="localhost",user="chris",passwd="1709",db="froling");
            try:
                cur = con.cursor()
                cur.execute("""INSERT INTO samples(nom , valeur) VALUES(%s , %s)""", ('sys_state', p4.a40004()))
                con.commit()
            finally:
                if con:
                    con.close()
            last_rec["a40004"] = p4.a40004()et dans le code ça donnerait quelque chose commedef mysql():
con = mdb.connect(host="localhost",user="chris",passwd="1709",db="froling");
try:
cur = con.cursor()
cur.execute("""INSERT INTO nom renvoyer par la fonction( valeur) VALUES(%s)""", (valeur renoyer par la fonction)
con.commit()
finally:
if con:
con.close()
Val_a40004=p4.a40004()
while Val_a40004 != last_rec.get("a40004"):#sys state
mysql()
last_rec["a40004"] = p4.a40004()
mouwais là je sent que ça devient flou la haut
en gros comment lire une valeur renvoyer par une fonction qui est dans une list ou dico , qui lui méme et dans un dico
1 je lance le script
2 je lis les valeur et leur nom que je mets dans un dico avant le while (faut bien une valeur de départ pour comparer)
3 while true (le loop ou y a tout les loops de comparaison)
4 je demande la valeur actuelle
5 le loop de comparaison de la valeur actuelle et celle du point 2
6 comme les valeur sont != on envoie ça chez mysql avec comme table le nom renvoyer par ma fonction et ça valeur
7 on remet la new valeur dans l'ancien valeur à comparer
8 on passe au loop suivant.
bon je ne sais pas si j'ai été super claire dans mes explications
bien sure dans la base chaque valeur à logger devra avoir sa table avec timestamp et valeur et nom plus une table "sample" avec timestamp,nom,valeur ou on envoie toutes les valeur à logger. à moin que vous me disiez non fait une seul table pour toutes les valeurs logger.