Bonjour
Je fais l'acquisition d'un signal AC en continu avec une carte pci et j'affiche le signal sur un oscilloscope virtuel.
Pour ça j'utilise un backgroundworker. Le problème est que ça me pompe 100% des ressources CPU.
Est-ce un problème dans ma maniere d'utiliser la BGW ?
Et l'appel
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 PrivateSub BackgroundWorker9_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker9.DoWork Dim worker9 As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker) AddHandler BackgroundWorker9.DoWork, AddressOf oscillo1 EndSub PrivateSub backgroundWorker9_RunWorkerCompleted(ByVal sender AsObject, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker9.RunWorkerCompleted Try U1.PlotY(Waveforms) 'Affiche la courbe sur l'oscillo my_niScope.Abort() Catch ex As Exception EndTry EndSub PrivateSub oscillo1(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Dim numOfSamples AsInteger Dim Waveform_Info() As niScopeWfmInfo my_niScope.ActualRecordLength(numOfSamples) 'get record length ReDim Waveforms(numOfSamples - 1) 'initialize result arrays Waveforms and WfmInfo ReDim Waveform_Info(numOfSamples - 1) my_niScope.Read("0", 1, 10000, Waveforms, Waveform_Info) 'Realise la lecture du signal 'End If EndSub
se fait dans un timer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PrivateSub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed BackgroundWorker9.RunWorkerAsync() end sub
Je précise que les softs pour tester la carte font la meme chose sans
pomper toutes les ressources.
Ou bien c'est ma fonction qui veut ça et je peux rien n'y faire ?
Merci
Partager