A simple and fast A2L file parser.
Project description
项目描述
xba2l是一个 A2L 文件解析工具包, 提供了兼容 ASAM MCD-2 MC 1.7.1 版本的语法分析
特色
- 快速的语法解析
- 完全用python语言编写, 适用于 python3.10 以上版本
- 自动编码编码
安装
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]:
- 输入参数 fn_or_content:A2l 文件名称,或者是以及读取的 A2l 文件内容
- 返回参数: 运行成功的话,返回的第一个参数为 None, 后面两个是 Asap2 和 Module 类对象;如果运行失败, 返回的第一个参数是一个 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82a4f58628a117f000ee0b3c908ee67e2a4f74cbaf867a83a6a085151aaaabf2
|
|
| MD5 |
ec52e08db9d665b03bc57b99a3282e46
|
|
| BLAKE2b-256 |
3f7c01e2bdb271f7e5e721d3f5c4c53c05bdbfe59367b21090a85c23227fd2d2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4cd678c1d227e803c0e8c45ab01fd9d1f17b72597fb73a19eaf00dbf6c97467
|
|
| MD5 |
e7e90b2d8c7f690b7afadd372d05e54c
|
|
| BLAKE2b-256 |
f2dfc4d2badd9d372a21badf1d2828fc8f5efa264082e9e068b6bd0a26076b2d
|