-
Adding proprietary NMEA extensions appears to have been broken with 1.0.43. How I added my messages:#nmea/nmea.py:
from pynmeagps import *
get_dict = nmeatypes_get.NMEA_PAYLOADS_GET
msgids = nmeatypes_core.NMEA_MSGIDS_PROP
msgids["MYMSG"] = "My Special Message"
get_dict["MYMSG"] = {
"data": IN,
}
# nmea/__init__.py:
from .nmea import * In a Python shell:
What I see with 1.0.41:
What I see with 1.0.42:
With qlxnmea==1.0.42 Environment: Debian bookworm
I believe this was introduced by the addition of a default NMEA message type in 126dae2 |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 8 replies
-
nmea.zip |
Beta Was this translation helpful? Give feedback.
-
Hi @nmichaels, I can see how the changes in v1.0.41 & v1.0.42 would have affected your code. In v1.0.41 a change was introduced to allow pynmeagps to parse any unknown (but structurally valid) NMEA sentence to a nominal In v1.0.42 I basically split out the proprietary message definitions to a separate file So, to take your example, it is now possible to parse any 'unknown' sentence like (remember - a valid NMEA sentence must start with "$" (0x24) and end with "\r\n" (0x0D0A)) from pynmeagps import NMEAReader
msg = NMEAReader.parse(b"$PMYMSG,0*01\r\n")
print(msg)
print(msg.field_01)
msg = NMEAReader.parse(b"$PMYMSG2,0,THISFIELD,THATFIELD,2,3,4,5,*10\r\n")
print(msg)
print(msg.field_03)
But I'm not sure your code was ever an intended use case for pynmeagps. You appear to be trying to dynamically create new 'proprietary' NMEA sentence types and then parse them - I'm not clear what you would be looking to achieve by doing this? If you can help me understand the objective here, I can evaluate whether it's best accomodated as a change to pynmeagps, or a change to your own code. Thanks |
Beta Was this translation helpful? Give feedback.
-
Whoops, there's the zip file with the files actually in it. I didn't change the files though; weird that you couldn't reproduce without changes. Anyway, it sounds like you do see what's going on so I'll explain my use case. First, why I'm doing this: I'm developing a device that spits out NMEA in its normal course of operation, and I want to include some debug information in-band. This lets me use a single parser for all the messages which simplifies my test scripts. So to do that, I added some proprietary NMEA sentences and a separate package that depends on pynmeagps. My scripts can just install Do you have any suggestions? |
Beta Was this translation helpful? Give feedback.
That did meet my needs, thanks! Sorry it took so long for me to get back to this, but I wanted to test it thoroughly before answering.