Bonjour a tous, j'ai un petit problème à résoudre et si quelqu'un pouvait m'aider ca me ferait super plaisir.
Je dispose d'une carte d'acquisition qui posède des E/S TOR et des entrées analogiques. Sur les entrées analogioques, je branches un générateur de courant et sur l'interface graphique, je dois écrire la valeur correspondante en température, débit pression ... Le problème c qu'il éxiste déjà un programme mais il ne fonctionne pas et il utilise des fonctions dont je n'ai pas encore compris le fonctionnement.
si ca peut aider quelqu'un :
______________________________________________________________
Private Sub Timer1_Timer()
Dim result As Integer
Dim i As Integer, J As Integer, d As Integer, K As Integer
Dim l As Long
Dim di_data As Long
Dim p As Integer
Dim m As Single
Static vt(15) As Variant
Dim PrevP(15) As Long
Dim Status(15) As Long
Dim Intermédiaire As Long
Dim moinsde1vot As Integer
moinsde1vot = Int(2047.5 + (2047.5 / 20 * LimiteValiditéEntréesAna))
Conf_Hydr.Mesure_Capteur_Temp.Caption = Format(TempératureEau, "#00.0") & " °C"
'Analog-Digital Input
For i = 0 To 7
' If Conf_Hydr.Timer Then
'result = AI_ReadChannel(card, i, range_value(0), d)
result = AI_ReadChannel(card_number, i, range_value(0), d)
l = d
If card_type Then
TempératureEau_Etat = True
If i = 0 And d <> 0 Then
If PrevP(i) <> -1 Then Conf_Hydr.Mesure_Capteur_Temp.Caption = Format(TempératureEau, "#00.0") & " °C"
PrevP(i) = TabTempératureEau(IndexTournant)
If d < moinsde1vot Then
TempératureEau_Etat = False
Else
TempératureEau_Etat = True
TabTempératureEau(IndexTournant) = (d - CLng(2457)) * CLng(100) / CLng(1638)
TempératureEau = CoefFiltrePremOrdre * Filtre(TabTempératureEau()) + (1 - CoefFiltrePremOrdre) * TempératureEau
Indic_Mesures.Température.Caption = Format(TempératureEau, "#00.0")
Conf_Hydr.Mesure_Capteur_Temp.Caption = Format(TempératureEau, "#00.0") & " °C"
End If
End If
If TempératureEau < 0.1 Then TempératureEau = 0
DoEvents
If i = 1 And d <> 0 Then
Vitesse_Etat = True
TabVitesse(IndexTournant) = (d - 2457) * CLng(3000) / 1638
ValVitesse = CoefFiltrePremOrdre * Filtre(TabVitesse) + (1 - CoefFiltrePremOrdre) * ValVitesse
Else
Vitesse_Etat = False
'Vitesse = 0
End If
If ValVitesse < 10 Then ValVitesse = 0
DoEvents
If i = 2 And d <> 0 Then
Débit_Etat = True
TabDébit(IndexTournant) = (d - 2457) * CLng(160) / 1638
ValDébit = CoefFiltrePremOrdre * Filtre(TabDébit) + (1 - CoefFiltrePremOrdre) * ValDébit
Else
Débit_Etat = False
End If
If ValDébit < 1 Then ValDébit = 0
DoEvents
If i = 3 And d <> 0 Then
Pression3_Etat = True
TabPression3(IndexTournant) = ((d - 2457) / 1638) - 1
Pression3 = CoefFiltrePremOrdre * Filtre(TabPression3) + (1 - CoefFiltrePremOrdre) * Pression3
Else
Pression3_Etat = False
End If ''
If Pression3 > 0 Then Pression3 = 0
DoEvents '
If i = 4 And d <> 0 Then
Pression2_Etat = True
TabPression2(IndexTournant) = (d - 2457) * 10 / 1638
Pression2 = CoefFiltrePremOrdre * Filtre(TabPression2) + (1 - CoefFiltrePremOrdre) * Pression2
Else
Pression2_Etat = False
End If
If Pression2 < 0.01 Then Pression2 = 0
DoEvents
If i = 5 And d <> 0 Then
Pression1_Etat = True
TabPression1(IndexTournant) = (d - CLng(2457)) * 10 / 1638
Pression1 = CoefFiltrePremOrdre * Filtre(TabPression1) + (1 - CoefFiltrePremOrdre) * Pression1
Else
Pression1_Etat = False
End If
If Pression1 < 0.01 Then Pression1 = 0
DoEvents
' End If
End If
Next i
TraitementCommEtCarte
RafraichissementAnalogique
End Sub
_____________________________________________________________
Public Function Filtre(Anale() As Double) As Double
Dim TabInter(31) As Double
Dim Boucle1 As Byte
Dim Boucle2 As Byte
Dim IndexMin As Byte
Dim ValInter As Double
For Boucle1 = 0 To 31
TabInter(Boucle1) = Anale(Boucle1)
Next
For Boucle1 = 0 To 30
IndexMin = Boucle1
For Boucle2 = Boucle1 + 1 To 31
If TabInter(IndexMin) < TabInter(Boucle2) Then
IndexMin = Boucle2
End If
Next
If IndexMin <> Boucle1 Then
ValInter = TabInter(Boucle1)
TabInter(Boucle1) = TabInter(IndexMin)
TabInter(IndexMin) = ValInter
End If
Next
' Conf_Hydr.List1.Clear
' For Boucle1 = 0 To 15
' Conf_Hydr.List1.AddItem TabInter(Boucle1)
' Next
Filtre = 0
For Boucle1 = 12 To 19
Filtre = Filtre + TabInter(Boucle1)
Next
Filtre = Filtre / 8
End Function
_______________________________________________________
Merci beaucoup
Sojojo