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)/scale
Code : Tout sélectionner
def a44(self):
d = dict();
d['name']="Tex"
d['v'] = self.read_register(4,0,4)/2
return d
bon 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 "mais pkoi tu veux que ta fonction renvoie nom+valeur puisque tu connais déja son nom comme ta demander sa valeur!!! "
ben.... j'ai envie déjà rien que pour apprendre et surtout au lieu d'avoir dans mon script pour chaque valeur que je voudrais logger ->
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.