Le but de mon programme est de représenter une tension sinusoidal de 20Hz, reçu par une carte pcduino. J'ai pri une fréquence d'échantillonnage de 200Hz. J'utilise un signal d'alarme pour déclencher le timer. Alors j'arrive à tracer le bon signal, mais mon nombre de données dans le terminal et dans mon fichier texte,où j'enregistre les mesures sont différents. Plus le temps de mesure est long et plus je perd donnée. Est-ce que le "write" est mal positionné?
Merci
Voici mon programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #!/usr/bin/python # -*- coding: utf-8 -*- from pyduino import * # importe les fonctions Arduino pour Python import numpy as np import time import signal import time import datetime def handler(signum, frame): #frame : moyen de connaitre l'état d'exécution #avant que le gestionnaire #de signal a été déclenché #gestionnaire e signal peut #lire des états à l'intérieur du champ d'application qui a été #exécuté avant que le gestionnaire de signal peut lire ##ouverture et écriture du fichier## try: print" " except IOError as e: print"I/O error({0}): {1}".format(e.errno,e.strerror) signal.signal(signal.SIGALRM, handler) signal.setitimer(signal.ITIMER_REAL, 0.005, 0.005) #setitimer: (qui,seconde[intervalles] #ITIMER_REAL: décrémente l'intervalle en temps réel et fournit un signal d'alarme ##Durée de la mesure## ##temps échantillonnage pour 20Hz f=open("/home/ubuntu/data/text/TensionsA2.txt","w") # ouverture du fichier avec écrasement des données , si fichier non existant il est crée temps=6 start = time.time() while (time.time() - start) <= (temps): mesure=analogRead(A2)*3.3/4095.0 #lecture sur le pin Analogique time.sleep(0.005) f.write(str(mesure)+"\n") print mesure print "nombre de valeur"+ " "+str(temps/0.005)
Partager