QCanFrameProcessor 类

QCanFrameProcessor 类可用于解码 QCanBusFrame 或将输入数据转换为准备发送给接收器的 QCanBusFrame更多...

头文件 #include <QCanFrameProcessor>
CMakefind_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmakeQT += serialbus
Qt 6.5
状态初步

此类正在开发中,可能会更改。

公共类型

(自 6.5) 结构体ParseResult
枚举类Error { None, InvalidFrame, UnsupportedFrameFormat, Decoding, Encoding }

公共函数

QCanFrameProcessor()
~QCanFrameProcessor()
voidaddMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
voidclearMessageDescriptions()
QCanFrameProcessor::Errorerror() const
QStringerrorString() const
QList<QCanMessageDescription>messageDescriptions() const
QCanFrameProcessor::ParseResultparseFrame(const QCanBusFrame &frame)
QCanBusFrameprepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues)
voidsetMessageDescriptions(const QList<QCanMessageDescription> &descriptions)
voidsetUniqueIdDescription(const QCanUniqueIdDescription &description)
QCanUniqueIdDescriptionuniqueIdDescription() const
QStringListwarnings() const

详细说明

QCanFrameProcessor 类操作 CAN 消息描述(由 QCanMessageDescriptionQCanSignalDescription 类表示)和唯一标识符描述(由 QCanUniqueIdDescription 表示)。它使用描述来解码传入的 QCanBusFrame 或将用户指定的数据编码到适当的负载。

在进行任何解码或编码之前,必须正确初始化 QCanFrameProcessor 实例。需要提供以下数据:

  • 一个 有效的 唯一标识符描述。使用 setUniqueIdDescription() 方法提供适当的描述。
  • 至少一个消息描述。使用 addMessageDescriptions() 或 setMessageDescriptions() 方法提供消息描述。所有消息描述必须具有独特的唯一标识符。每个消息可以包含多个信号描述,但一个消息中的信号名称必须是唯一的。

parseFrame() 方法可以用来处理传入的 QCanBusFrame。该方法返回一个包含 unique identifier 和信号值映射的 ParseResult 结构。映射的键是 signal names,值是对应的信号值。

prepareFrame() 方法可以用来生成特定唯一标识符的 QCanBusFrame 对象,使用提供的信号名称和期望的值。

在编码或解码过程中可能会出现错误。在这种情况下,可以使用 error() 和 errorString() 方法来获取错误信息。

也可能发生一些非关键问题。这些问题将被记录,但过程不会被停止。完成后,可以使用 warnings() 方法访问所有警告列表。

注意:解码或编码开始时将重置最后一个错误和错误描述,以及警告。

另请参阅QCanMessageDescriptionQCanSignalDescription

成员类型文档

枚举类 QCanFrameProcessor::Error

此枚举表示在编码或解码 QCanBusFrame 时可能发生的错误。

常量描述
QCanFrameProcessor::Error::None0未发生错误。
QCanFrameProcessor::Error::InvalidFrame1接收到的帧无效,无法解析。
QCanFrameProcessor::Error::UnsupportedFrameFormat2接收到的帧格式不受支持,无法解析。
QCanFrameProcessor::Error::Decoding3解析时发生错误。使用 errorString() 获取错误的字符串表示形式。
QCanFrameProcessor::Error::Encoding4编码时发生错误。使用 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

解析过程如下

  1. 使用 uniqueIdDescription() 提取消息的唯一标识符。
  2. 使用提取的唯一标识符从所有可用的 messageDescriptions 列表中搜索合适的 QCanMessageDescription
  3. 使用匹配的 QCanMessageDescription 从帧中提取信号值。

此方法返回一个 QCanFrameProcessor::ParseResult,其中包含提取的唯一标识符以及一个 QVariantMap,其中包含信号及其值。该映射的键为信号名称,值为信号值。

如果在解码过程中发生错误,则返回一个空的 signalValues 的结果。在这些情况下,可以使用 error() 和 errorString() 方法来获取有关错误的信息。

注意: 调用此方法将清除所有之前的错误和警告。

另请参阅 addMessageDescriptions(),error(),errorString() 和 warnings()。

QCanBusFrame QCanFrameProcessor::prepareFrame(QtCanBus::UniqueId uniqueId, const QVariantMap &signalValues)

使用uniqueIdsignalValues构建一个CAN数据帧,并返回构建的QCanBusFrame

signalValues参数必须包含信号名作为键,和预期信号值作为值。

创建帧的过程如下

  1. uniqueId用于找到一个合适的消息描述。
  2. 如果找到消息描述,则会创建一个包含指定大小的有效载荷的QCanBusFrame。所有有效载荷的字节以及帧标识符都初始化为零。
  3. 使用uniqueIdDescription()将uniqueId编码到帧的适当部分(帧标识符或有效载荷)。
  4. 使用选定的消息描述将所有的signalValues编码到帧中。
  5. 那些未被唯一标识符或现有的信号描述覆盖的帧部分未被改变(因此仍然包含零)。

如果在编码过程中发生错误,则返回一个无效的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.在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自的商标所有者的财产。