PySide6.QtSerialBus.QCanDbcFileParser¶
- class QCanDbcFileParser¶
QCanDbcFileParser
类可用于解析 DBC 文件。更多…概要¶
方法¶
def
__init__()
def
error()
def
errorString()
def
parse()
def
parseData()
def
warnings()
静态函数¶
注意
本文档可能包含从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文件解析器。
返回解析过程中发生的最后一个错误。
另请参阅
- errorString()¶
- Return type:
字符串
返回解析过程中发生的最后一个错误的文本表示,如果没有错误则返回空字符串。
另请参阅
- messageDescriptions()¶
- Return type:
返回在上一次
parse()
调用期间提取的消息描述列表。- 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:
返回一个唯一标识符描述。DBC协议始终使用帧ID作为标识符,因此唯一标识符描述始终相同。
使用此方法获取
QCanUniqueIdDescription
的实例并将其传递给QCanFrameProcessor
。- warnings()¶
- Return type:
字符串列表
返回解析过程中发生的非关键问题列表。
一个典型的问题可能是格式错误的消息或信号描述。在这种情况下,格式错误的消息或信号会被跳过,但文件的其余部分可以照常处理。