Showing results for 
Search instead for 
Did you mean: 

J1939 Transport Protocol

I need to send data greater than 8 bytes over a J1939 bus. I
understand that the J1939 spec has a transport protocol. Has anyone
developed a J1939 transport protocol driver?

Thanks for the help
Eric Alexander
0 Kudos
Message 1 of 7
J1939 is one of the standard CAN (Controller Area Network) protocols. NI make s a series of CAN boards for communicating with a CAN bus and has a feature rich driver that comes with it.

If you have some other type of interface to your bus, your best place to start would the manufacturers web site to see if they some LabVIEW drivers.

I have developed (but not quite finished) a set of VI's that interface with the Softing/Vector CANCards. The currect set I have works fine for basic reading and writing to the bus.

Does this answer your question?


Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
0 Kudos
Message 2 of 7
Yes, there is a Transport protocol in J1939, it is described in detail in the J1939-21 document.
The transport protocol allows you to transfer up to 1785 bytes of data.
Now for the bad news:
The sequence is used for many things, some documented in SAE and some proprietary. The protocol sequence is standard, but many companies add security and authentication to the sequence for some actions so finding someone to share may take some effort.
There also is a case where devices may send these sequences out unsolicited, known as a Broadcast Announce Message (BAM) so you really can't make generic VI's for these very easy, because you need to understand the context the transport protocol is used for each time it is used.
0 Kudos
Message 3 of 7

MAX supports J1939 protocal.But I can not send data greater than 8 bytes.How can I resolve it?


Thanks for the help.


0 Kudos
Message 4 of 7
Hello Lujuan:

Thank you for contacting National Instruments. You cannot send larger than 8 bytes, the message has to be broken up to be sent. I hope this information helps.

Roland A.
Applications Engineer
National Instruments

Check out VI Roadshow
0 Kudos
Message 5 of 7

NI has an example provided for J1939 here somewhere that is an example of using the transport protocol defined in J1939 to send or recieve data longer than 8 bytes.  The example is based on the frame API, which precludes you from using the channel API with a CAN database on the same port. 


DMC recently developed a set of J1939 protocol drivers for LabVIEW which are based on the NI-CAN channel API.  The drivers are written in LabVIEW just like the example, but provide functions at a layer above the base CAN channel API layer.  This allows the simultaneous capture of data from both J1939 packets which are simple broadcast CAN frames, or more complex transport using BAM, including extended data frames.

0 Kudos
Message 6 of 7

Correct link for J1939 protocol drivers for LabVIEW which are based on the NI-CAN channel API. Smiley Happy

0 Kudos
Message 7 of 7