QCanDbcFileParser Class
QCanDbcFileParser 类可用于解析 DBC 文件。更多内容...
| 头文件: | #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文件,对其进行解析,并输出一个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_- 原始信号值的文本描述。
以其他关键字开头的行将被直接忽略。
另请参阅 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 文件中存在此类数据,则可通过此函数访问。
这些文本描述针对特定消息中的某个信号是唯一的,因此返回的结构体包含消息唯一标识符和信号名称的信息,以及实际值的描述。
另请参阅 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 协议始终使用帧 ID 作为标识符,因此该唯一标识符的描述始终相同。
使用此方法获取QCanUniqueIdDescription 的实例,并将其传递给QCanFrameProcessor 。
另请参阅 QCanFrameProcessor::setUniqueIdDescription()。
QStringList QCanDbcFileParser::warnings() const
返回解析过程中出现的非关键问题列表。
典型的问题可能是格式错误的消息或信号描述。在这种情况下,系统会跳过格式错误的消息或信号,但文件的其余部分仍可照常处理。
© 2026 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.