Comprehensive CAN monitor for Windows® and its add-ins: Plotter, CANdb Import, Instruments Panel, and J1939
-
jfbenitez
- Posts: 1
- Joined: Tue 13. Jan 2015, 09:41
Post
by jfbenitez » Tue 13. Jan 2015, 10:26
Hello,
I'm trying to use the "OnMessageReceived" event with J1939 symbols, but this don't work.
My program:
Code: Select all
Sub J1939Node_OnMessageReceived(node, count)
Dim RcvMsg
Set RcvMsg = CreateObject("J1939Pcan.PCANJ1939RcvMsg")
If node.Read(RcvMsg)Then
PrintToOutputWindow RcvMsg.Timestamp & ">" & count & " ID: " & RcvMsg.ID & " PGN: " & RcvMsg.PGN
If RcvMsg.PGN = 65304 Then
Dim dow, dt, mth, ye, h, mn ,s
Set dow = Signals("DayOfWeek")
Set dt = Signals("Date")
Set mth = Signals("Month")
Set ye = Signals("Year")
Set h = Signals("Hour")
Set mn = Signals("Min")
Set s = Signals("Sec")
PrintToOutputWindow dow.Value & " " & dt.Value & "/" & mth.value & "/" & ye.value & " " & h.value & ":" & mn.value & ":" & s.value
End If
Else
PrintToOutputWindow "last error: " & node.LastError
End If
End Sub
Can some one help me ?
Thanks,
Jean-Félix
-
K.Wolf
- Software Development

- Posts: 141
- Joined: Wed 22. Sep 2010, 15:37
Post
by K.Wolf » Wed 14. Jan 2015, 11:45
Hello,
at the time when the OnMessageReceived event is triggered, PCAN-Explorer has already read the received message(s) from the J1939Node's queue, since you're accessing the J1939Node object PCAN-Explorer uses internally for its own communication.
Perhaps this code could solve your problem, but it requires to run in a loop:
Code: Select all
Dim dow, dt, mth, ye, h, mn, s
Set dow = Signals("DayOfWeek")
Set dt = Signals("Date")
Set mth = Signals("Month")
Set ye = Signals("Year")
Set h = Signals("Hour")
Set mn = Signals("Min")
Set s = Signals("Sec")
Dim OldValueChangeTime
OldValueChangeTime = dow.ValueChangeTime
While True
' Wait for PGN 65304 to be received
Do While dow.ValueChangeTime = OldValueChangeTime
Wait 50
Loop
PrintToOutputWindow dow.Value & " " & dt.Value & "/" & mth.value & "/" & ye.value & " " & h.value & ":" & mn.value & ":" & s.value
OldValueChangeTime = dow.ValueChangeTime
Wend