OxTS RT-Range data parsing utility
Project description
OxTS RT-Range data parsing utility
This simple parser is capable of parsing RT-Range Ethernet packets (NCOM and RCOM).
REQUIRES PYTHON 3.10 OR NEWER
Installation
Use pip to install
pip install rt-range
Usage
Basic parsing
from rt_range.ethernet import EthernetParser
rt_packet: bytes = ... # RT-Range Ethernet packet
# Parsing with automatic packet type identification
parsed: dict[str, ...] = EthernetParser.parse_rt_ethernet(rt_packet)
The packet type will be determined automatically.
Raises ValueError
if the bytestring is not a valid RT-Range packet.
Raises NotImplementedError
if the parser for detected type is not implemented.
Specifying packet type
from rt_range.ethernet import EthernetParser, PacketType
ncom_data: list[bytes] = ... # RT-Range Ethernet packets list
# Parsing with specified type
parsed: list[dict[str, ...]] = [
EthernetParser.parse_rt_ethernet(packet, PacketType.NCOM)
for packet in ncom_data
]
This forces the parser to use the specified packet type regardless of the packet contents. Use this only if you are sure about the packet content asit may lead to parsing errors or unexpected values in the parsing result.
Raises NotImplementedError
if the parser for detected type is not implemented.
Using Pandas
import pandas as pd
from rt_range.ethernet import EthernetParser, PacketType
range_data: list[bytes] = ... # RT-Range Ethernet packets list
# Parsing and converting to DataFrame
parsed = pd.DataFrame([
EthernetParser.parse_rt_ethernet(packet, PacketType.RCOM_extended_range)
for packet in range_data
])
The returned list of dictionaries can be easily converted to the Pandas Dataframe for further processing.
Short documentation
Class EthernetParser
- Package:
rt_range.ethernet.eth_parser
- Import:
from rt_range.ethernet import EthernetParser
- Purpose: RT-Range NCOM and RCOM packets parsing
- Members:
-
Class method
is_implemented(cls, packet_type: PacketType)
Returns
True
if the parser for the specified packet type is implemented,False
otherwise -
Class method
parse_rt_ethernet(cls, buffer: bytes, packet_type: PacketType | None = None)
Parse bytes buffer to
dict[str, ...]
-
Enum PacketType
- Package:
rt_range.ethernet.eth_parser
- Import:
from rt_range.ethernet import PacketType
- Purpose: RT-Range packets types definitions
- Members:
- NCOM
- RCOM_lane
- RCOM_extended_range
- RCOM_wrapped_NCOM
- RCOM_trigger_time
- RCOM_polygon
- RCOM_multiple_sensor_point
- Unknown
Enum SyncByte
- Package:
rt_range.ethernet.eth_parser
- Import:
from rt_range.ethernet import SyncByte
- Purpose: Sync Byte definitions for distinguishing NCOM and RCOM
- Members:
- NCOM
- RCOM
Class Packet
- Package:
rt_range.ethernet.rt_packet
- Import:
from rt_range.ethernet.rt_packet import Packet
- Purpose: RT-Range parseable Packet
- Members:
-
Method
decode(self, buffer: bytes) -> tuple[np.array, Selector]
Decodes bytes buffer with
np.dtype
tonp.array
-
Method
get(self, obj: np.array, name: str, selector: Selector)
Decodes raw value using rules defined in packet structure
-
Method
translate(self, obj: np.array, selector: Selector) -> dict[str, ...]
Translates
np.array
into a dictionary -
Method
parse(self, buffer: bytes) -> dict[str, ...]
Wrapper for decoding and translation
-
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
Built Distribution
File details
Details for the file rt_range-0.3.0.tar.gz
.
File metadata
- Download URL: rt_range-0.3.0.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e41190caf2d8ba2608508af3631e87048d82d2e4e9ddd2bbe0164f35b9bb1e1c |
|
MD5 | 44e64b864078b1d1f587645367443a3e |
|
BLAKE2b-256 | e9aba01aa898e8b0665c15ccdc75cbcfe2e60e40b30add350446759a60cf723d |
File details
Details for the file rt_range-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: rt_range-0.3.0-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85db7311eb16c34324c5f95202b697d4634912f344eb32365e83a3207d3cb66d |
|
MD5 | d61342356949ea28ad371fe298e666ab |
|
BLAKE2b-256 | 08d39e49a48ddd7e07918a3c5f70c6d530941496881c2085ff78e6e8e59be51d |