Hilfe: CPU Auslastung auf 100%

wOp

Mitglied
Zum Gruße

Vorweg erkläre ich am besten mal was ich überhaupt machen will:

Ich habe mir eine Schaltung mit 8 LEDs gebastelt, die ich per Parallel Port (LPD1) ansteuere. Dies funktioniert soweit auch wunderbar. Sprich ich kann jedes der 8 LEDs einzeln ohne Probleme ansteuern.

Hier mal der Link zum Downloaden meines Programms.

Soweit so gut! Natürlich ist das an sich nichts spektakuläres. Interessant wird es erst bei den unzähligen Schleifen die man so einbaut um ein paar nette Effekte hin zu bekommen. Beispielsweise den „Wurm“, „Night Rider“ und nicht zu vergessen das Winamp Vblink PlugIn.

Ich habe also mit dem Night Rider angefangen und eine Schleife gebastelt die auch super funktioniert. Nur leider treibt er mir die CPU-Auslastung auf 100% während die Schleife läuft, so das der Stop Button erst nach einigen Sekunden reagiert. Meine Frage also: Wie kann ich das umgehen?

Code:
Private Sub Form_Load()
'Belegung der Ausgänge
    Dim a, b As Byte
        a = 1
        b = 1
    Do While b < 9
        Ausgang(b) = a
        b = b + 1
        a = a + a
    Loop
End Sub

Public Function NightRider(ByVal i As Integer)
    Dim Start
    Start = Timer
    Do While Timer < Start + 0.1
        Out &H378, Ausgang(i)
    Loop
End Function

Private Sub tmNightRider_Timer()
tmNightRider.Interval = 1
    NightRider (1)
    NightRider (2)
    NightRider (3)
    NightRider (4)
    NightRider (5)
    NightRider (6)
    NightRider (7)
    NightRider (8)
    NightRider (7)
    NightRider (6)
    NightRider (5)
    NightRider (4)
    NightRider (3)
    NightRider (2)
End Sub

Private Sub optNightRider_Click()
    tmNightRider.Enabled = True
End Sub

Private Sub optKeine_Click()
    tmNightRider.Enabled = False
End Sub

Unter Verwendung des Moduls:

Code:
Public Declare Function Inp Lib "inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Ich betone nochmals das der Effekt wunderbar an den LEDs angezeigt wird. Sprich sie flitzen hin und her, wie man das eben von Night Rider gewohnt ist. Nur die CPU-Auslastung kann so net sein.

PS: Ich hab nen Pentium 4 mit 2400 MHz und 512 DDR-Ram, daran sollte es also nicht liegen.

Bitte um Hilfe!

motivierende Grüße

wOp
 
Zuletzt bearbeitet:
Hast du schonmal von der VB-Anweisung DoEvents gehört? Damit kann Windows auch in Schleifen immer seine eigenen Systemtasks aufrufen. Einfach in die Schleifen ein DoEvents reinschreiben (wo ist egal, du könntest dir die Punkte anhand von z.B. Tastaturabfragen, Dateizugriffen, ... ermitteln), schon steht dein Programm nicht mehr so.


Der Doc!
 
sauber!

Um ehrlich zu sein habe ich von DoEvents bislang bewußt nichts wahrgenommen. Deshalb hab ich ja den Thread auch getippt. Jedenfalls ein dickes Danke...es funktioniert anstandslos.
 

Neue Beiträge

Zurück