QCanFrameProcessor Class
QCanFrameProcessor 类可用于对QCanBusFrame 进行解码,或将输入数据转换为QCanBusFrame ,以便发送给接收器。更多
头文件: | #include <QCanFrameProcessor> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
自 | Qt 6.5 |
状态: | 初步 |
该类正在开发中,可能会有变动。
公共类型
(since 6.5) struct | ParseResult |
enum class | Error { None, InvalidFrame, UnsupportedFrameFormat, Decoding, Encoding } |
公共函数
QCanFrameProcessor() | |
~QCanFrameProcessor() | |
void | addMessageDescriptions(const QList<QCanMessageDescription> &descriptions) |
void | clearMessageDescriptions() |
QCanFrameProcessor::Error | error() const |
QString | errorString() const |
QList<QCanMessageDescription> | messageDescriptions() const |
QCanFrameProcessor::ParseResult | parseFrame(const QCanBusFrame &frame) |
QCanBusFrame | prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues) |
void | setMessageDescriptions(const QList<QCanMessageDescription> &descriptions) |
void | setUniqueIdDescription(const QCanUniqueIdDescription &description) |
QCanUniqueIdDescription | uniqueIdDescription() const |
QStringList | warnings() const |
详细说明
QCanFrameProcessor 类对 CAN 报文描述(由QCanMessageDescription 和QCanSignalDescription 类表示)和唯一标识符描述(由QCanUniqueIdDescription 表示)进行操作。它使用这些描述对传入的QCanBusFrame 进行解码,或将用户指定的数据编码为适当的有效载荷。
在进行任何解码或编码之前,必须正确初始化 QCanFrameProcessor 实例。需要提供以下数据:
- valid 唯一标识符说明。使用setUniqueIdDescription() 方法提供适当的描述。
- 至少一个消息描述。使用addMessageDescriptions() 或setMessageDescriptions() 方法提供消息描述。所有信息描述都必须有不同的唯一标识符。每条信息可以包含多个信号描述,但一条信息中的信号名称也必须是唯一的。
parseFrame() 方法可用于处理传入的QCanBusFrame 。该方法会返回一个ParseResult 结构,其中包含unique identifier 和signal values 映射。映射的键是signal names ,映射的值是信号值。
prepareFrame() 方法可用于使用提供的信号名称和所需值,为特定的唯一标识符生成QCanBusFrame 对象。
在编码或解码过程中可能会出现错误。在这种情况下,可使用error() 和errorString() 方法获取错误信息。
一些非关键问题也可能发生。这些问题会被记录下来,但进程不会停止。进程结束后,可以使用warnings() 方法访问所有警告的列表。
注意: 一旦开始解码或编码,最后一个错误和错误描述以及警告将被重置。
另请参阅 QCanMessageDescription 和QCanSignalDescription 。
成员类型文档
enum class QCanFrameProcessor::Error
该枚举表示在对QCanBusFrame 进行编码或解码时可能出现的错误。
常量 | 值 | 说明 |
---|---|---|
QCanFrameProcessor::Error::None | 0 | 未发生错误。 |
QCanFrameProcessor::Error::InvalidFrame | 1 | 接收的帧无效,无法解析。 |
QCanFrameProcessor::Error::UnsupportedFrameFormat | 2 | 不支持接收的帧格式,无法解析。 |
QCanFrameProcessor::Error::Decoding | 3 | 解码过程中发生错误。使用errorString() 获取错误的字符串表示。 |
QCanFrameProcessor::Error::Encoding | 4 | 编码过程中发生错误。使用errorString() 获取错误的字符串表示。 |
成员函数文档
QCanFrameProcessor::QCanFrameProcessor()
创建 CAN 帧处理器。
[noexcept]
QCanFrameProcessor::~QCanFrameProcessor()
销毁该帧处理器。
void QCanFrameProcessor::addMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
将新的邮件描述descriptions 添加到可用的邮件描述中。
所有信息描述都应具有不同的唯一 ID。
如果某些消息描述有重复的唯一 ID,则只使用最后一个描述。
如果解析器已经有一个具有相同唯一 ID 的消息描述,它将被覆盖。
另请参阅 messageDescriptions()、setMessageDescriptions() 和clearMessageDescriptions()。
void QCanFrameProcessor::clearMessageDescriptions()
删除该帧处理器的所有信息描述。
另请参阅 messageDescriptions()、addMessageDescriptions() 和setMessageDescriptions()。
QCanFrameProcessor::Error QCanFrameProcessor::error() const
返回最后一个错误。
另请参阅 errorString()、prepareFrame() 和parseFrame()。
QString QCanFrameProcessor::errorString() const
返回最后一个错误的文本描述。
另请参阅 error()、prepareFrame() 和parseFrame()。
QList<QCanMessageDescription> QCanFrameProcessor::messageDescriptions() const
返回此帧处理器当前使用的所有报文描述。
另请参阅 addMessageDescriptions()、setMessageDescriptions() 和clearMessageDescriptions()。
QCanFrameProcessor::ParseResult QCanFrameProcessor::parseFrame(const QCanBusFrame &frame)
使用指定的报文描述解析帧frame 。
解析过程如下:
- uniqueIdDescription() 用于提取报文的唯一标识符。
- 提取的唯一标识符用于从所有可用的messageDescriptions() 列表中搜索合适的QCanMessageDescription 。
- 匹配的QCanMessageDescription 用于提取帧中的信号值。
该方法会返回一个QCanFrameProcessor::ParseResult ,其中包含提取的唯一标识符和一个包含信号及其值的QVariantMap 。映射的键是signal names ,映射的值是信号值。
如果在解码过程中发生错误,则会返回一个空的signalValues 结果。在这种情况下,可以使用error() 和errorString() 方法获取有关错误的信息。
注意: 调用此方法将清除所有先前的错误和警告。
另请参阅 addMessageDescriptions()、error()、errorString() 和warnings()。
QCanBusFrame QCanFrameProcessor::prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues)
使用uniqueId 和signalValues 构建 CAN 数据帧,并返回所构建的QCanBusFrame 。
signalValues 参数必须包含作为键的信号名称和作为值的预期信号值。
创建框架的过程如下:
- 使用uniqueId 查找合适的信息描述。
- 如果找到了消息描述,就会创建一个具有指定大小有效载荷的QCanBusFrame 。有效载荷的所有字节以及帧 ID 都被初始化为 0。
- uniqueIdDescription() 用于将uniqueId 编码到帧的适当部分(帧 ID 或有效载荷)。
- 选定的信息描述用于将所有signalValues 编码到帧中。
- 帧中未被唯一 id 或现有信号描述覆盖的部分将不会被触及(因此仍包含 0)。
如果在编码过程中发生错误,则会返回无效的QCanBusFrame 。在这种情况下,可以使用error() 和errorString() 方法获取错误信息。
注意: 调用此方法会清除所有之前的错误和警告。
另请参阅 addMessageDescriptions()、error()、errorString() 和warnings()。
void QCanFrameProcessor::setMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
用新的报文描述替换该帧处理器使用的当前报文描述descriptions 。
另请参阅 messageDescriptions()、addMessageDescriptions() 和clearMessageDescriptions()。
void QCanFrameProcessor::setUniqueIdDescription(const QCanUniqueIdDescription &description)
将唯一标识符描述设置为description 。
唯一标识符描述必须有效,才能对 CAN 总线帧进行编码或解码。详情请参见QCanUniqueIdDescription 类文档。
另请参阅 uniqueIdDescription() 和QCanUniqueIdDescription 。
QCanUniqueIdDescription QCanFrameProcessor::uniqueIdDescription() const
返回唯一标识符描述。
唯一标识符描述必须有效,以便对 CAN 总线帧进行编码或解码。详情请参见QCanUniqueIdDescription 类文档。
另请参阅 setUniqueIdDescription() 和QCanUniqueIdDescription 。
QStringList QCanFrameProcessor::warnings() const
返回上次编码或解码调用时产生的警告列表。
另请参阅 error()、errorString()、prepareFrame() 和parseFrame()。
© 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.