bauer65
Messages postés2Date d'inscriptionlundi 6 décembre 2010StatutMembreDernière intervention 6 décembre 2010
-
6 déc. 2010 à 17:48
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
6 déc. 2010 à 21:49
bonjour a tout le monde, je suis débutant en vb net.
sous visual basic 2005 --> smart device --> pocket pc
et je lutte sur un problème de moyenne
j'ai un timer réglable qui a chaque tick enregistre un entier dans un tableau de 10 cases.
je dois effectuer une moyenne glissante de ces valeurs entières. le code que j'ai fait ne le fais qu'une seule fois la moyenne et je ne trouve pas pourquoi
ci joint mon code
regardez au niveau de la méthode Timer1_tick et Moyenne.
en vous remerciant d'avance.
Cdlt
#################################
Public Class Form1
Dim random_temp As Integer
Dim random_pression As Integer
Dim Moy_temp As Double = 0
Dim Moy_Pression As Double = 0
Dim Moyenne_T(9) As Integer
Dim Moyenne_P(9) As Integer
Dim Tot_pression As Integer = 0
Dim somme As Integer = 0
Dim j As Integer = 0
Private Function Rand_Temp()
' Initialize the random-number generator.
Randomize()
' Generate random value between -10 and 30.
Rand_Temp = CInt(Int((30 * Rnd()) + 1))
End Function
Private Function Rand_Pression()
' Initialize the random-number generator.
Randomize()
' Generate random value between 980 and 1050.
Rand_Pression = CInt(Int((70 * Rnd()) + 980))
End Function
Public Sub Moyenne()
Dim i As Integer = 0
For i = 0 To 9
somme = somme + Moyenne_T(i)
Tot_pression = Tot_pression + Moyenne_P(i)
Next
Moy_temp = somme / 10
somme = 0
Moy_Pression = Tot_pression / 10
Tot_pression = 0
Temp_moyenne.Text = Moy_temp.ToString 'affichage T°
pression_moyenne.Text = Moy_Pression.ToString 'affichage P
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 1000
reglette.Value = 25
reglette2.Value = 1025
End Sub
Private Sub Label1_ParentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label_Tinst.ParentChanged, label_Moyenne.ParentChanged, label_Seuil.ParentChanged
End Sub
Private Sub Panel2_GotFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pression.GotFocus
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
random_temp = Rand_Temp()
random_pression = Rand_Pression()
Temp_mesure.Text = random_temp.ToString
pression_mesure.Text = random_pression.ToString
If j < 10 Then
Moyenne_T(j) = random_temp
Moyenne_P(j) = random_pression
j += 1
ElseIf (j > 10) Then
j = 0
End If
Moyenne()
If (random_temp > reglette.Value) Then
MsgBox("Le seuil de T° a été dépassé à" & Date.Now)
ElseIf (random_pression > reglette2.Value) Then
MsgBox("Le seuil de pression a été dépassé à" & Date.Now)
End If
End Sub
Private Sub Timer_Period_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer_Period.SelectedIndexChanged
Timer1.Interval = CType(Timer_Period.SelectedItem, Integer)
End Sub
Private Sub Temp_mesure_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Temp_mesure.TextChanged
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 6 déc. 2010 à 20:52
Bonsoir
ne lutte pas trop
le code que j'ai fait ne le fais qu'une seule fois la moyenne et je ne trouve pas pourquoi
tu veux après tous les 10 chiffres la moyenne soit calculée
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
random_temp = Rand_Temp()
random_pression = Rand_Pression()
Temp_mesure.Text = random_temp.ToString
pression_mesure.Text = random_pression.ToString
If j < 10 Then
Moyenne_T(j) = random_temp
Moyenne_P(j) = random_pression
j += 1
Else
Moyenne()
j = 0
End If
If (random_temp > reglette.Value) Then
MsgBox("Le seuil de T° a été dépassé à" & Date.Now)
ElseIf (random_pression > reglette2.Value) Then
MsgBox("Le seuil de pression a été dépassé à" & Date.Now)
End If
End Sub
et aussi
' Generate random value between -10 and 30.
Rand_Temp = CInt(Int((30 * Rnd()) + 1))
bauer65
Messages postés2Date d'inscriptionlundi 6 décembre 2010StatutMembreDernière intervention 6 décembre 2010 6 déc. 2010 à 21:09
En fait j'aimerais faire la moyenne glissante de la température et pression
de la manière suivante :
les 10 premiers coup de timer, on ne calcule pas de moyenne
par contre, on remplit un tableau de 10 cases
If j < 10 Then
Moyenne_T(j) = random_temp
Moyenne_P(j) = random_pression
j += 1
Else
j = 0
Au 11ème coup je calcule ma moyenne des dix dernières T° et P et je remplace ensuite le 1er element du tableau (case 0) par la T° instantanée.
For i = 0 To 9
somme = somme + Moyenne_T(i)
Tot_pression = Tot_pression + Moyenne_P(i)
Next
Moy_temp = somme / 10
Au 12 coup, on recalcule la moyenne en tenant compte de la 11éme température inscrite dans le tableau et on stocke la T instantané dans la 2° valeur du tableau (case 1).
etc.... la moyenne doit être faite a chaque entrée de température sur les 10 dernière valeurs....
Dans mon programme, tout se passe bien jusqu'au 11ème coup, après il n'y a plus de calcul de moyenne.
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 6 déc. 2010 à 21:49
après il n'y a plus de calcul de moyenne
la sub moyenne n'est pas executée
met un point d'arret à la ligne
Moyenne()
lance to prog et verifies si ça arrive
continuues pour voir si ça arrive encore une fois