QCanFrameProcessor 类
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 |
状态 | 初步 |
此类正在开发中,可能会更改。
公共类型
(自 6.5) 结构体 | ParseResult |
枚举类 | 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 实例。需要提供以下数据:
- 一个 有效的 唯一标识符描述。使用 setUniqueIdDescription() 方法提供适当的描述。
- 至少一个消息描述。使用 addMessageDescriptions() 或 setMessageDescriptions() 方法提供消息描述。所有消息描述必须具有独特的唯一标识符。每个消息可以包含多个信号描述,但一个消息中的信号名称必须也是唯一的。
parseFrame() 方法可以用来处理传入的 QCanBusFrame。该方法返回一个包含 unique identifier 和信号值映射的 ParseResult 结构。映射的键是 signal names,值是对应的信号值。
prepareFrame() 方法可以用来生成特定唯一标识符的 QCanBusFrame 对象,使用提供的信号名称和期望的值。
在编码或解码过程中可能会出现错误。在这种情况下,可以使用 error() 和 errorString() 方法来获取错误信息。
也可能发生一些非关键问题。这些问题将被记录,但过程不会被停止。完成后,可以使用 warnings() 方法访问所有警告列表。
注意:解码或编码开始时将重置最后一个错误和错误描述,以及警告。
另请参阅QCanMessageDescription 和 QCanSignalDescription。
成员类型文档
枚举类 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 添加到现有消息描述中。
所有消息描述应该具有独特的唯一标识符。
如果某些消息描述具有重复的唯一标识符,则只会使用最后一个描述。
如果解析器已经有与相同唯一标识符的消息描述,则它将被覆盖。
另请参阅 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,其中包含信号及其值。该映射的键为信号名称,值为信号值。
如果在解码过程中发生错误,则返回一个空的 signalValues 的结果。在这些情况下,可以使用 error() 和 errorString() 方法来获取有关错误的信息。
注意: 调用此方法将清除所有之前的错误和警告。
另请参阅 addMessageDescriptions(),error(),errorString() 和 warnings()。
QCanBusFrame QCanFrameProcessor::prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues)
使用uniqueId和signalValues构建一个CAN数据帧,并返回构建的QCanBusFrame。
signalValues参数必须包含信号名作为键,和预期信号值作为值。
创建帧的过程如下
- uniqueId用于找到一个合适的消息描述。
- 如果找到消息描述,则会创建一个包含指定大小的有效载荷的QCanBusFrame。所有有效载荷的字节以及帧标识符都初始化为零。
- 使用uniqueIdDescription()将uniqueId编码到帧的适当部分(帧标识符或有效载荷)。
- 使用选定的消息描述将所有的signalValues编码到帧中。
- 那些未被唯一标识符或现有的信号描述覆盖的帧部分未被改变(因此仍然包含零)。
如果在编码过程中发生错误,则返回一个无效的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。
© 2024 The Qt Company Ltd. 本文档中包含的贡献是各自所有者的版权。本文档是在自由软件基金会发布的GNU自由文档许可版本1.3的条款下许可的。Qt及其相关标志是The Qt Company Ltd.在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自的商标所有者的财产。