K8055 "acquerir une tension tous les 0.1s"

bonjour,

je voudrais acquerir une tension par le port d’entrée analogique A1, et afficher celle ci dans la cellule (1,1) et tous les 0.1s reactualiser cette valeur en la placant dans la ligne du dessous.

exemple : j’acqueris une tension croissante de 1V tous les 0.1s

A   

1 0V

2 1V

3 2V

4 3V

voilà et en plus afficher le temps écouler depuis le debut de l’acquisiton

exemple : j’acqueris toujours une tension croissante de 1V tous les 0.1s

    A            B

1 0V 0s

2 1V 0.1s

3 2V 0.2s

4 3V 0.3s

5 4V 0.4s

6 5V 0.5s

voilà et ainsi de suite jusqu’a ce que je coupe l’acquisiton par un bouton arrêt.

Je n’arrive pas à mettre en place un timer et a réaliser tous ceci.

Si quelqu’un pouvait m’aider ! :blush:

merci d’avance

Nono88

PS: voila mon premier test ce programme actualise 500 fois la valeur du port analogique(1) dans la même case (mais sur mon programme definitif il faut que tous les 0.1s on écrivent la nouvelle valeur dans la ligne suivante)

Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long
Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) As Long


Public Sub deb() ' le bouton "deb" active la carte
    Dim h As Long
    h = OpenDevice(0)
End Sub

Public Sub StartClick() ' le bouton "start" lance l'acquisition  
    Dim Data As Long
    Dim i As Long
    
    For i = 1 To 500
        Data = ReadAnalogChannel(1)
        ActiveSheet.Cells(5, 1) = Data
    Next i
End Sub

voilà tous merci d’avance a ceux qui m’aideront ce programme n’est pas dur normalement mais je ne m’y connait pas de trop en programmation

Nono

If I understand right, this is what you want Excel to do:

This is the macro with timer:

[code]Private Declare Function SetTimer Lib “user32” ( _
ByVal HWnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib “user32” ( _
ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function OpenDevice Lib “k8055d.dll” (ByVal CardAddress As Long) As Long
Private Declare Function CloseDevice Lib “k8055d.dll” ()
Private Declare Function ReadAnalogChannel Lib “k8055d.dll” (ByVal Channel As Long) As Long
Dim i As Long
Dim Data As Long
Dim TimerID As Long
Dim TimerSeconds As Single

Sub Button1_Click()
Dim h As Long
h = OpenDevice(0)
If h = 0 Then
i = 1
ActiveSheet.Cells(1, 4) = “Card connected”
TimerSeconds = 0.1 ’ the timer interval is now 0.1 sec.
TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
Else
ActiveSheet.Cells(1, 4) = “Card not found”
End If

End Sub

Sub Button2_Click()
On Error Resume Next
CloseDevice
KillTimer 0&, TimerID
End Sub

Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)
On Error Resume Next
Data = ReadAnalogChannel(1)
ActiveSheet.Cells(i, 1) = i
ActiveSheet.Cells(i, 2) = Data * 5 / 255
ActiveSheet.Cells(i, 3) = (i - 1) * 0.1 & “s”
i = i + 1
End Sub[/code]