Pop-Up Objekt nach empfangener Nachricht

Comprehensive CAN monitor for Windows® and its add-ins: Plotter, CANdb Import, Instruments Panel, and J1939
Post Reply
Misch
Posts: 4
Joined: Thu 23. Jul 2015, 07:53

Pop-Up Objekt nach empfangener Nachricht

Post by Misch » Thu 23. Jul 2015, 08:20

Hallo,

ich komme seit einiger Zeit trotz Foren lesen, Googeln etc. bei folgendem Problem nicht weiter:

Ich bekomme eine best. Can-Nachricht. Habe diese auch als Symbol definiert. Diese Nachricht wird genau einmal gesendet. Wenn sie eingetroffen ist, soll nach Möglichkeit eine Objekt-LED im Panel erscheinen(oder auch Farbwechsel):
-Nachricht noch nicht da -> LED rot
-Nachricht einmal geschickt worden -> LED grün

Die Datenbytes als Schwellwert zum Farbwechsel zu nehmen ist nicht möglich.
So etwas muss doch möglich sein :)
Wie würde ein Skript dazu aussehen?

MfG Misch

User avatar
M.Gerber
Design & Documentation
Design & Documentation
Posts: 68
Joined: Mon 13. Sep 2010, 16:34

Re: Pop-Up Objekt nach empfangener Nachricht

Post by M.Gerber » Fri 24. Jul 2015, 16:05

Hallo Misch,

in der Symboldatei können Sie eine virtuelle Variable anlegen:

Code: Select all

{VIRTUALVARS}
Var=MyMsg_Detected bit
Das entstandene Signal MyMsg_Detected ordnen Sie einer LED auf dem Instruments Panel zu.

In einem VBScript-Makro können Sie anhand der Receive-Liste sehen, ob die gewünschte Nachricht (hier das Symbol "MyMsg") eingegangen ist und setzen entsprechend den Wert von MyMsg_Detected:

Code: Select all

Option Explicit

Sub CanMessageDetect()
  Dim msg, MyMsgDet
  Set MyMsgDet = Signals("MyMsg_Detected")  ' Accessing the virtual signal
  MyMsgDet.Value = 0
  Connections.ReceiveMessages.Clear         ' Empty the receive list
  Do
    For Each msg In Connections.ReceiveMessages          ' Check through the receive list
      If not msg.Symbol Is Nothing Then                  ' Make sure, there is any message with Symbol
        If msg.Symbol = "MyMsg" Then MyMsgDet.Value = 1  ' Check if MyMsg exists in the receive list
      End If
    Next
    Wait 100  ' Avoid high CPU load
  Loop Until MyMsgDet.Value = 1
End Sub
In diesem Beispiel wird anfangs die Receive-Liste gelöscht. Wenn Sie das nicht möchten, können Sie alternativ mit der EventCount-Property für eine ReceiveMessage im Makro arbeiten.

Freundliche Grüße
Mark Gerber

Misch
Posts: 4
Joined: Thu 23. Jul 2015, 07:53

Re: Pop-Up Objekt nach empfangener Nachricht

Post by Misch » Mon 27. Jul 2015, 07:05

Super, danke für die Antwort!

MfG Misch

Post Reply