juergenH87 / python-can-j1939

The package provides SAE J1939 support for Python developers
MIT License
94 stars 53 forks source link

SAE J1939 NMEA 2000 #21

Open jpvlerbe opened 2 years ago

jpvlerbe commented 2 years ago

First of all, nice work on this fantastic and useful package.

For my work I would like to extend the functionality to allow for decoding of NMEA2000 messages when the extended data page (here called 'Reserved') ==0 and the data page = 1 as is mentioned in https://www.vector.com/int/en/know-how/protocols/sae-j1939/#c103492 image

How would you envision an extension to tie in nicely into your work?

juergenH87 commented 2 years ago

unfortunately I do not know NMEA 2000. Are only the PGN definitions different here, or also the communication itself? Transport protocols etc.?

jpvlerbe commented 2 years ago

There is quite a bit of difference.

As far as I can tell all PGN's have the 'data page" bit == 1 so PGN > 65536. That way I think all NMEA functionality can be conditional on this datapage==1 thus not hindering other functionality (could also explicitly be activated using some optional flag) (https://www.nmea.org/Assets/20151026%20nmea%202000%20pgn_website_description_list.pdf)

Multipacket messages use the "fast packet" protocol. So buffering messages untill the message can be reconstructed is very different from J1939. As such an extension is needed. See info here: https://en.wikipedia.org/wiki/NMEA_2000#Message_format_and_parameter_group_numbers_(PGNs) https://forums.ni.com/t5/LabVIEW/How-do-I-read-the-larger-than-8-byte-messages-from-a-NMEA-2000/td-p/3132045

We use J1939 on a vehicle network. It also has a GPS which talks NMEA2000. Both are fine on the same network. We can use this wonderful package without issue, but are missing the NMEA2000 decode functionality. So I was wondering if we extend how you would do it. Extend in the package here, or defer those messages to another package etc etc...

juergenH87 commented 2 years ago

I'am sorry, but i have no time to add NMEA2000 support.

HourGlss commented 1 year ago

pynmea2 is good at decoding NMEA traffic