Skip to main content

A lightweight python library for translating UBX packets

Project description

ubxtranslator Build Status

Overview

This module provides a simple way to decode messages from uBlox GPS devices in the UBX format. Like the high accuracy NEO-M8U module that I have created, click here for more info.

This package has no dependencies! This is written in pure python using only the standard lib and supports any standard byte stream. The predefined messages are not added to the parser by default, this allows you to have tight control over what messages can be parsed.

Is this the fastest implementation of a UBX parser? Probably not. If speed is critical then you probably need to go write something in C. If you want something that is fast enough and easy to use, you are in the right place. Keep reading.

Supports Python 3.5 and up.

Quickstart

Install the package with pip
pip install ubxtranslator

Import the core module
from ubxtranslator import core

If the message class you want has already been defined, just import it. If not you will need to construct the messages and classes yourself, see the examples for more information.
from ubxtranslator import predefined

Construct the parser

parser = core.Parser([
  predefined.CLS_ACK, 
  predefined.CLS_NAV
])

Then you can use the parser to decode messages from any byte stream.
cls_name, msg_name, payload = parser.receive_from(port)

The result is a tuple that can be unpacked as shown above.
The variables cls_name and msg_name are strings, i.e. 'NAV', 'PVT'.

The payload is the namedtuple of the message and can be accessed like an object. The attributes share the names of the fields.
print(cls_name, msg_name, payload.lat, payload.lng)

Bitfields are also returned as namedtuples and can be accessed the same way.
print(payload.flags.channel)

Repeated Blocks are returned as a list of blocks, the fields within each block are also named tuples. All of the repeated blocks in the predefined messages are name RB.

for i in range(len(payload.RB)):
  print(payload.RB[i].gnssId, payload.RB[i].flags.health)

The best way to look at what fields are available is where the fields are defined. However, if you want to inspect on the fly you can either help(payload) and look at the attributes, or use the named tuple protected method payload._asdict() which will return an ordered dict of all of the attributes.

Examples

For full examples see the examples directory.

TODO's

Want to contribute? Please feel free to submit issues or pull requests. Nothing in this package is very complicated, please have a crack and help me to improve this.

  • Add more and better tests
  • Add Field type RU1_3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ubxtranslator-0.2.6.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ubxtranslator-0.2.6-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file ubxtranslator-0.2.6.tar.gz.

File metadata

  • Download URL: ubxtranslator-0.2.6.tar.gz
  • Upload date:
  • Size: 25.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for ubxtranslator-0.2.6.tar.gz
Algorithm Hash digest
SHA256 82a50c199e0b8bf1e26451a7404abd51ba0eae1f0111a5b22ab3182d08b7b910
MD5 49727a40ec67ee46af01343ca7bc6954
BLAKE2b-256 397c8ce8b99f7592752c3e711d6c16736d800e2116980aa1cd3f0d739479cda5

See more details on using hashes here.

File details

Details for the file ubxtranslator-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: ubxtranslator-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for ubxtranslator-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4c54401b4a6fb0983dc16938377c334fd5e8a3c9d12fc4d156e46963024e3431
MD5 447d916feb82d997b28376f796865d9c
BLAKE2b-256 b4bf156b4cf45b8eaa70c6a81913706e564d69fdbbefd58ce919cba470367d76

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page