Bonjour, voici mon probleme.
J'ai une interface avec des voyants (recopies de bits) et des textbox qui doivent afficher des mesures de delai a chaque fois qu'elles se produisent (toutes les 3-5 secondes). J'ai une fonction qui fait la mesure de delai et marche tres bien. Les voyant sont programmés dans un timer pour etre rafraichi tout le temps, et dans ce timer je veux également mettre l'affichage du delai : delai2 = delais() (delai2 est le nom du text box et delais() la fonction qui retourne cette valeur). Le souci c'est qu'il attend la mesure de delai pour passer a la suite du code. Ducoup le programme et les voyants sont gelés. Si vous pouviez modifier mon code avec les delegate ce serait sympa pour une execution asynchrone.
PrivateSub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Dim readData2() AsBoolean
readData2 = myDigitalReader2.ReadSingleSampleMultiLine()
Babord.Value = readData2(6) babord et tribord sont des voyants affecté a des bits
Tribord.Value = readData2(5)
.........
delai2.Text = delais() voila le probleme
EndSub
mesure du delai ok
PrivateFunction delais()
Dim max AsDouble = 0.3
Dim min AsDouble = 0.001
Dim valeurDelai2 AsString
myTask = New Task
firstEdge = CITwoEdgeSeparationFirstEdge.Rising
secondEdge = CITwoEdgeSeparationSecondEdge.Rising
myTask.CIChannels.CreateTwoEdgeSeparationChannel("Dev2/ctr2", "", min, _
max, firstEdge, secondEdge, CITwoEdgeSeparationUnits.Seconds)
counterInReader = New CounterReader(myTask.Stream)
Dim data AsDouble = counterInReader.ReadSingleSampleDouble()
valeurDelai2 = data.ToString
Return valeurDelai2
EndFunction
Partager