QCanDbcFileParser Class
QCanDbcFileParser 类可用于解析 DBC 文件。更多
Header: | #include <QCanDbcFileParser> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
自 | Qt 6.5 |
状态: | 初步 |
该类正在开发中,可能会有变动。
公共类型
enum class | Error { None, FileReading, Parsing } |
MessageValueDescriptions | |
SignalValueDescriptions | |
ValueDescriptions |
公共函数
QCanDbcFileParser() | |
~QCanDbcFileParser() | |
QCanDbcFileParser::Error | error() const |
QString | errorString() const |
QList<QCanMessageDescription> | messageDescriptions() const |
QCanDbcFileParser::MessageValueDescriptions | messageValueDescriptions() const |
bool | parse(const QString &fileName) |
bool | parse(const QStringList &fileNames) |
(since 6.7) bool | parseData(QStringView data) |
QStringList | warnings() const |
静态公共成员
QCanUniqueIdDescription | uniqueIdDescription() |
详细说明
CAN 数据库或 CAN DBC 文件是一种 ASCII 文本文件,其中包含如何解码和解释 CAN 总线原始数据的信息。有关该格式的更多详情,请参阅此处或此处。
QCanDbcFileParser 类接收输入的 DBC 文件,对其进行解析,并提供QCanMessageDescriptions 列表作为输出。这些消息描述可以转发到QCanFrameProcessor ,随后用作编码或解码QCanBusFrames 的规则。
使用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_
- 原始信号值的文字说明。
以其他关键字开头的行将被忽略。
另请参阅 QCanMessageDescription 和QCanFrameProcessor 。
成员类型文档
enum class QCanDbcFileParser::Error
该枚举表示在解析 DBC 文件时可能发生的错误。
常量 | 值 | 说明 |
---|---|---|
QCanDbcFileParser::Error::None | 0 | 未发生错误。 |
QCanDbcFileParser::Error::FileReading | 1 | 打开或读取文件时发生错误。 |
QCanDbcFileParser::Error::Parsing | 2 | 解析文件内容时发生错误。 |
[alias]
QCanDbcFileParser::MessageValueDescriptions
这是QHash<QtCanBus::UniqueId, SignalValueDescriptions>
的类型别名。
哈希值的键代表消息唯一 ID,哈希值包含相应的QCanDbcFileParser::SignalValueDescriptions 条目。
另请参阅 QCanDbcFileParser::SignalValueDescriptions 。
[alias]
QCanDbcFileParser::SignalValueDescriptions
这是QHash<QString, ValueDescriptions>
的类型别名。
散列的键代表信号名称,散列的值包含相应的QCanDbcFileParser::ValueDescriptions 条目。
另请参见 QCanDbcFileParser::ValueDescriptions 。
[alias]
QCanDbcFileParser::ValueDescriptions
这是QHash<quint32, QString>
的类型别名。
哈希值的键代表原始信号值,哈希值的值代表相应的字符串描述。
成员函数文档
QCanDbcFileParser::QCanDbcFileParser()
构造 DBC 文件分析器。
[noexcept]
QCanDbcFileParser::~QCanDbcFileParser()
销毁此 DBC 文件分析器。
QCanDbcFileParser::Error QCanDbcFileParser::error() const
返回解析过程中发生的最后一个错误。
另请参阅 errorString() 和parse()。
QString QCanDbcFileParser::errorString() const
返回解析过程中发生的最后一个错误的文本表示,如果没有错误,则返回空字符串。
另请参见 error()。
QList<QCanMessageDescription> QCanDbcFileParser::messageDescriptions() const
返回上次调用parse() 时提取的信息描述列表。
QCanDbcFileParser::MessageValueDescriptions QCanDbcFileParser::messageValueDescriptions() const
返回信号原始值的文本描述。
DBC 支持为信号原始值提供文本描述。如果解析后的 DBC 文件中存在此类数据,则可使用此函数访问。
文本描述对于特定报文中的特定信号是唯一的,因此返回的结构包含报文唯一 ID 和信号名称信息以及实际值描述。
另请参见 QCanDbcFileParser::MessageValueDescriptions,QCanDbcFileParser::SignalValueDescriptions, 和QCanDbcFileParser::ValueDescriptions 。
bool QCanDbcFileParser::parse(const QString &fileName)
解析文件fileName 。如果解析成功,则返回true
,否则返回false
。
如果解析成功,则调用messageDescriptions() 方法获取所有提取的消息描述列表。
如果解析失败,则调用error() 和errorString() 方法获取错误信息。
调用warnings() 方法获取解析过程中记录的警告列表。
注意: 该方法希望文件内容以 UTF-8 编码。如果文件的编码不同,请先解码,然后使用parseData() 提取 DBC 信息。
另请参阅 messageDescriptions()、error()、warnings() 和parseData()。
bool QCanDbcFileParser::parse(const QStringList &fileNames)
这是一个重载函数。
解析文件列表fileNames 。如果解析成功,则返回true
,否则返回false
。
如果解析成功,则调用messageDescriptions() 方法获取所有提取的消息描述列表。
解析会在第一次出错时停止。调用error() 和errorString() 方法获取错误信息。
调用warnings() 方法获取解析过程中记录的警告列表。
注意: 该方法希望文件内容以 UTF-8 编码。如果文件的编码不同,请先解码,然后使用parseData() 提取 DBC 信息。
另请参阅 messageDescriptions()、error()、warnings() 和parseData()。
[since 6.7]
bool QCanDbcFileParser::parseData(QStringView data)
解析输入数据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);
此函数在 Qt 6.7 中引入。
另请参阅 messageDescriptions()、error()、warnings() 和parse()。
[static]
QCanUniqueIdDescription QCanDbcFileParser::uniqueIdDescription()
返回唯一标识符描述。DBC 协议总是使用 Frame Id 作为标识符,因此唯一标识符描述总是相同的。
使用此方法可获得QCanUniqueIdDescription 的实例,并将其传递给QCanFrameProcessor 。
另请参阅 QCanFrameProcessor::setUniqueIdDescription()。
QStringList QCanDbcFileParser::warnings() const
返回解析过程中出现的非关键问题列表。
典型的问题可能是信息或信号描述畸形。在这种情况下,畸形报文或信号将被跳过,但文件的其他部分可以照常处理。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.