Skip to main content

A simple and fast A2L file parser.

Project description

项目描述

xba2l是一个 A2L 文件解析工具包, 提供了兼容 ASAM MCD-2 MC 1.7.1 版本的语法分析

特色

  1. 快速的语法解析
  2. 完全用python语言编写, 适用于 python3.10 以上版本
  3. 自动编码编码

安装

pip install xba2l

快速开始

xba2l 安装完成后,新建文件 quick_start.py, 复制下面的代码并保存

import dataclasses
import json
import os
import sys


from xba2l import a2l_util
from xba2l.etc import tool

a2l_filename = input("Please input a2l filename:")
if not os.path.isfile(a2l_filename):
   print("file not exists")
else:
   err, asap2, module = a2l_util.parse_a2l(a2l_filename)
   if err is not None:
      print(err)
   else:
      # dump asap2 to console
      json.dump(
            dataclasses.asdict(
                asap2,
                dict_factory=lambda pairs: {
                    pair[0]: pair[1] for pair in pairs if pair[1] is not None and pair[0] != "elements" and not pair[0].endswith("_dict")
                },
            ),
            sys.stdout,
            indent=4,
            cls=tool.JsonEncoder,
        )         

在命令行终端运行 python3 quick_start.py,并输入文件名称,然后您将看到解析后的a2l各类节点信息输出到终端上

性能

运行下面的性能测试命令, 用你的a2l文件名称或者包含a2l文件的目录名称替代 {a2l filename}

python3 -m xba2l.performance "{a2l filename}"   

这是我的工作电脑运行结果

CPU: Intel(R) i9-13900HX 包含 Measurement

文件大小[MB] Axis Charecteristic Blob Measurement 用时[s]
4.0 312 2920 0 3151 0.4
5.7 887 3491 0 6426 0.5
8.1 16 16436 0 8919 0.8
17.6 78 26167 0 18165 1.4
21.1 3569 25909 0 19902 1.7
25.0 129 41857 0 37313 2.7
31.2 129 46976 0 41605 2.5
34.3 156 50322 0 46661 2.7

CPU: Intel(R) i9-13900HX 跳过 Measurement

文件大小[MB] Axis Charecteristic Blob Measurement 用时[s]
4.0 312 2920 0 0 0.3
5.7 887 3491 0 0 0.4
8.1 16 16436 0 0 0.7
17.6 78 26167 0 0 1.2
21.1 3569 25909 0 0 1.5
25.0 129 41857 0 0 1.9
31.2 129 46976 0 0 2.1
34.3 156 50322 0 0 2.2

使用说明

  • a2l_base.py

    class Options:
       calculate_memory_size: bool   # 是否计算解析后的数据占用内存大小,默认为 *False*
       ignore_measurements: bool     # 是否忽略 Measurement, 默认 *True*
       read_instance: bool           # 是否处理实例类变量 Instance, , 默认 *True*
    
  • a2l_util.py

    parse_a2l 函数:运行a2l文件解析,返回的数据类型请参考 a2l_lib.py 里的各种类定义

    def parse_a2l(
       fn_or_content: str | bytes, 
       encoding: str | None = None, 
       options: Options | None = None,
    ) -> tuple[Exception | None, Asap2 | None, Module | None]:
    
    1. 输入参数 fn_or_content:A2l 文件名称,或者是以及读取的 A2l 文件内容
    2. 返回参数: 运行成功的话,返回的第一个参数为 None, 后面两个是 Asap2Module 类对象;如果运行失败, 返回的第一个参数是一个 Exception 对象,用于描述失败原因
  • a2l_lib.py

    这个文件里定义了多个和 ASAM MCD-2 MC 1.7.1 标准里各个元素名称对应的类,用于描述解析结果;比如 Asap2 就是 A2L 解析后的根节点类

    class Asap2:
       asap2_version: Asap2Version  # 版本信息
       project: Project             # Project节点
       ...
    

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

xba2l-0.3.53.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

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

xba2l-0.3.53-py2.py3-none-any.whl (36.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file xba2l-0.3.53.tar.gz.

File metadata

  • Download URL: xba2l-0.3.53.tar.gz
  • Upload date:
  • Size: 38.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.9

File hashes

Hashes for xba2l-0.3.53.tar.gz
Algorithm Hash digest
SHA256 82a4f58628a117f000ee0b3c908ee67e2a4f74cbaf867a83a6a085151aaaabf2
MD5 ec52e08db9d665b03bc57b99a3282e46
BLAKE2b-256 3f7c01e2bdb271f7e5e721d3f5c4c53c05bdbfe59367b21090a85c23227fd2d2

See more details on using hashes here.

File details

Details for the file xba2l-0.3.53-py2.py3-none-any.whl.

File metadata

  • Download URL: xba2l-0.3.53-py2.py3-none-any.whl
  • Upload date:
  • Size: 36.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.9

File hashes

Hashes for xba2l-0.3.53-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a4cd678c1d227e803c0e8c45ab01fd9d1f17b72597fb73a19eaf00dbf6c97467
MD5 e7e90b2d8c7f690b7afadd372d05e54c
BLAKE2b-256 f2dfc4d2badd9d372a21badf1d2828fc8f5efa264082e9e068b6bd0a26076b2d

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