PySide6.QtSerialBus.QCanDbcFileParser

class QCanDbcFileParser

QCanDbcFileParser 类可用于解析 DBC 文件。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

CAN数据库或CAN DBC文件是一个ASCII文本文件,其中包含有关如何解码和解释原始CAN总线数据的信息。有关该格式的更多详细信息可以在这里这里找到。

QCanDbcFileParser 类接收输入的 DBC 文件,解析它,并提供一系列 QCanMessageDescription 作为输出。这些消息描述可以转发给 QCanFrameProcessor,并随后用作编码或解码 QCanBusFrame 的规则。

使用parse()的重载之一来指定将要处理的文件或文件列表。如果解析成功完成,两个重载都返回true,否则返回false

调用error()方法来获取解析过程中发生的错误。如果解析成功完成,此方法将返回None。否则,您可以使用errorString()方法来获取错误的字符串表示。

在解析过程中,可能会出现一些非关键问题。这些问题将被记录,但解析过程不会中止。解析完成后,您可以使用warnings()方法获取这些问题的完整列表。

如果解析成功完成,调用messageDescriptions()以获取上次parse()调用期间提取的消息描述列表。调用messageValueDescriptions()以获取信号原始值的文本描述(如果可用)。

使用静态函数 uniqueIdDescription() 来获取 DBC 格式的 QCanUniqueIdDescription

QCanDbcFileParser fileParser;
const bool result = fileParser.parse(u"path/to/file.dbc"_s);
// Check result, call error() and warnings() if needed

// Prepare a QCanFrameProcessor to decode or encode DBC frames
QCanFrameProcessor frameProcessor;
frameProcessor.setUniqueIdDescription(QCanDbcFileParser::uniqueIdDescription());
frameProcessor.setMessageDescriptions(fileParser.messageDescriptions());

注意

解析器是有状态的,这意味着一旦开始下一次解析,所有结果(如提取的消息描述、错误代码或警告)都将被重置。

支持的关键词

当前实现仅支持DBC文件中可以找到的关键字的一个子集:

  • BO_ - 消息描述。

  • SG_ - 信号描述。

  • SIG_VALTYPE_ - 信号类型描述。

  • SG_MUL_VAL_ - 扩展的多路复用描述。

  • CM_ - 注释(仅用于消息和信号描述)。

  • VAL_ - 原始信号值的文本描述。

以其他关键字开头的行将被简单地忽略。

class Error

此枚举表示在解析DBC文件期间可能发生的错误。

常量

描述

QCanDbcFileParser.Error.None

没有发生错误。

QCanDbcFileParser.Error.FileReading

打开或读取文件时发生错误。

QCanDbcFileParser.Error.Parsing

解析文件内容时发生错误。

__init__()

构建一个DBC文件解析器。

error()
Return type:

错误

返回解析过程中发生的最后一个错误。

另请参阅

errorString() parse()

errorString()
Return type:

字符串

返回解析过程中发生的最后一个错误的文本表示,如果没有错误则返回空字符串。

另请参阅

error()

messageDescriptions()
Return type:

QCanMessageDescription的列表

返回在上一次parse()调用期间提取的消息描述列表。

另请参阅

parse() error()

messageValueDescriptions()
Return type:

字典的键类型为 .QtCanBus.UniqueId,值类型为 QString。

返回信号原始值的文本描述。

DBC支持提供文本描述来表示原始信号值。如果在解析的DBC文件中存在此类数据,可以使用此函数进行访问。

文本描述对于特定消息中的某个信号是唯一的,因此返回的结构包含有关消息唯一ID和信号名称的信息,以及实际的值描述。

parse(fileName)
Parameters:

fileName – str

Return type:

布尔

解析文件 fileName。如果解析成功完成,则返回 true,否则返回 false

如果解析成功完成,调用 messageDescriptions() 方法以获取所有提取的消息描述列表。

如果解析失败,调用 error()errorString() 方法来获取错误信息。

调用warnings()方法以获取在解析过程中记录的警告列表。

注意

此方法期望文件内容以UTF-8编码。如果文件使用不同的编码,请先解码,然后使用parseData()来提取DBC信息。

parse(fileNames)
Parameters:

fileNames – 字符串列表

Return type:

布尔

这是一个重载函数。

解析文件列表 fileNames。如果解析成功完成,则返回 true,否则返回 false

如果解析成功完成,调用messageDescriptions()方法以获取所有提取的消息描述列表。

解析在第一个错误处停止。调用 error()errorString() 方法以获取有关错误的信息。

调用warnings()方法以获取在解析过程中记录的警告列表。

注意

此方法期望文件内容以UTF-8编码。如果文件使用不同的编码,请先解码,然后使用parseData()来提取DBC信息。

parseData(data)
Parameters:

data – 字符串

Return type:

布尔

解析输入数据 data 并返回 true 如果解析成功完成,否则返回 false

如果解析成功完成,调用 messageDescriptions() 方法以获取所有提取的消息描述列表。

如果解析失败,调用 error()errorString() 方法来获取错误信息。

调用warnings()方法以获取在解析过程中记录的警告列表。

该方法期望data是一个有效的DBC文件内容,并已正确转换为QStringView。

当输入文件的编码与UTF-8不同时,使用此方法。

// Read the data from a DBC file with custom encoding
const QByteArray initialData = ...;
// Convert to UTF-16 using QStringDecoder or some other way
const QString decodedData = ...;
QCanDbcFileParser parser;
const bool result = parser.parseData(decodedData);
static uniqueIdDescription()
Return type:

QCanUniqueIdDescription

返回一个唯一标识符描述。DBC协议始终使用帧ID作为标识符,因此唯一标识符描述始终相同。

使用此方法获取QCanUniqueIdDescription的实例并将其传递给QCanFrameProcessor

warnings()
Return type:

字符串列表

返回解析过程中发生的非关键问题列表。

一个典型的问题可能是格式错误的消息或信号描述。在这种情况下,格式错误的消息或信号会被跳过,但文件的其余部分可以照常处理。

另请参阅

error() parse()