Skip to main content Skip to footer

CAN J1939 Decoder Documentation

Version: 1.0.2
Retrieved: 2025-10-09 15:15:46


CAN J1939 Decoder

The module decodes a CAN message data frame, such as produced by the CAN Raw Reader module, according to the database file specified in the Database File setting.

Note

Only J1939 DBC files are supported.

Possible errors

If the Database File can not be found, is of the wrong type or cannot be loaded, the flow will fail to start. When a CAN data frame is not a hexadecimal number the module will warn and an error will be set on the message.

Settings

Name Requirements Purpose Default
Source Property String 1-64 in length The property containing an object with the id and the data frame. data
Target Property String 1-64 in length The property to write the decoded object into. target
Database File String 1-64 in length The name of the database file.  
Byte Order   The byte order of the CAN data frame (LittleEndian or BigEndian). BigEndian

Input

The database file should either be

  • Uploaded as a resource and set as a resource on the flow.
  • Manually placed in the './data/flowresources' folder on the node where the flow will run.

The name of the database file must include the .dbc extension. The Source Property must be an object containing both id (CAN message id) and frame (CAN message data frame) as properties.

{
  "data": {
    "id": 419360256
    "frame": "8affffffffffffff"
  }
}

Output

Name Type Description
crosser.success Boolean False if an error occurred when decoding the message.
crosser.message String Contains an error message in case the decoding failed, otherwise this property is not set.
targetProperty Array An array with the message decoded to signals (objects) with name, value, unit, min, max and description.

Example

# Settings:
Source property = data
Target property = decoded
Database File = my.dbc
Byte Order = BigEndian

# MyDbc
BO_ 2566843904 Greenhouse_1: 8 Vector__XXX
 SG_ Temp1 : 8|8@1+ (1,-40) [-40|210] "deg" Vector__XXX
 SG_ Temp2 : 0|8@1+ (1,-40) [-40|210] "deg" Vector__XXX
 SG_ Temp3 : 16|16@1+ (0.03125,-273) [-273|1735] "deg" Vector__XXX
 SG_ Temp4 : 32|16@1+ (0.03125,-273) [-273|1735] "deg" Vector__XXX
 SG_ Temp5 : 48|8@1+ (1,-40) [-40|210] "deg" Vector__XXX
 SG_ Temp6 : 56|8@1+ (0.4,0) [0|100] "%" Vector__XXX

VAL_ 2566843904 Temp1 0 "Error" 1 "Unavailable" 2 "Overflow" 10 "Temperature is undefined" ;
VAL_ 2566843904 Temp2 0 "Error" 1 "Unavailable" 10 "Temperature is undefined" ;
VAL_ 2566843904 Temp3 0 "Error" 1 "Unavailable" 2 "Overflow" 10 "Temperature is undefined" ;
VAL_ 2566843904 Temp4 0 "Error" 1 "Unavailable" 10 "Temperature is undefined" ;
VAL_ 2566843904 Temp5 10 "Temperature is undefined" ;
VAL_ 2566843904 Temp6 10 "Temperature is undefined" ;

# Incoming messages:
{
  "data": {
    "id": 419360256
    "frame": "2928602200000f05"
  }
}

# Outgoing messages:
# Decoded according to the database file.
{
  "data": {
    "id": 419360256
    "frame": "2928602200000f05",
  },
  "decoded": [
    {
        "name": "Temp1",
        "value": 0,
        "unit": "deg",
        "min": -40,
        "max": 210,
        "description": "Error"
    },
    {
        "name": "Temp2",
        "value": 1,
        "unit": "deg",
        "min": -40,
        "max": 210,
        "description": "Unavailable"
    },
    {
        "name": "Temp3",
        "value": 2,
        "unit": "deg",
        "min": -273,
        "max": 1735,
        "description": "Overflow"
    },
    {
        "name": "Temp4",
        "value": -273,
        "unit": "deg",
        "min": -273,
        "max": 1735,
        "description": null
    },
    {
        "name": "Temp5",
        "value": -25,
        "unit": "deg",
        "min": -40,
        "max": 210,
        "description": null
    },
    {
        "name": "Temp6",
        "value": 2,
        "unit": "%",
        "min": 0,
        "max": 100,
        "description": null
    }
  ],
  "crosser": {
    "success": true
  }
}