<< Click to Display Table of Contents >> Navigation: Arbeiten mit CanEasy > Automatisierung mit CanEasy > VBA > Tutorials > Ereignisse-Tutorial > Ereignis-Beispiel: Signalwertänderung |
Nachfolgendes Tutorial zeigt, wie die Änderung eines Signalwertes erkannt wird. Es basiert auf der im Tutorial erstellen Datenbasis.
Legen Sie nun mit Neu ein neues VBA-Projekt an. Speichern Sie das Projekt unter dem Namen "Signalwertänderung".
Legen Sie anschließend im VBA-Editor ein Klassenmodul an. Ändern Sie den Namen des Klassenmoduls in "Gaspedal"
Geben Sie den folgenden Code ein:
Public WithEvents Sig as Signal
Public Sub Assign(oSig as Signal) Set Sig = oSig Sig.DataChangeEvents = True End Sub |
Mit Sig.DataChangeEvents = True teilen Sie der COM-Schnittstelle mit, dass das Ereignis ausgelöst werden soll.
Wählen Sie anschließend Sig in der linken Auswahlliste und OnChange in der rechten um den Rumpf für die Ereignisbehandlungsroutine zu erzeugen:
Fügen Sie anschließend in der erstellten Routine Sig_OnChanged den folgenden Code hinzu:
Private Sub Sig_OnChanged Debug.Print "Signalwert geändert" End Sub |
Geben Sie nun den angezeigten Code im Modul Standard ein.
Public Pedal As Gaspedal
Sub SetzeSignalWert(oSig as Signal, fValue as Double) oSig.ValuePhys = fValue End Sub
Sub Testdurchlauf() Dim Steuergeraet As ControlUnit Set Pedal = New Gaspedal
Set Steuergeraet = Database.Busses("CAN1").ControlUnits("ECU1") Pedal.Assign Steuergeraet.Messages("MSG1").Signals("SIG1")
StartSimulation 'Simulation starten SetzeSignalWert Pedal.Sig, 30 'Gas geben CanEasyApplication.Sleep 7000 '7 Sekunden warten SetzeSignalWert Pedal.Sig, 60 'Noch mehr Gas geben StopSimulation 'Simulation beenden End Sub |
Wichtig ist hier, dass Sie eine Instanz der Klasse Gaspedal mit dem Schlüsselwort New anlegen.
Drücken Sie anschließend Strg-G um den Direktbereich einzublenden und führen Sie die Funktion Testdurchlauf aus. Die Anweisungen in der Ereignisbehandlungsroutine werden ausgeführt und im Fenster Direktbereich angezeigt (es erscheint zweimal die Meldung "Signalwert geändert").