Spec-Zone.ru › Qt

Класс QCanBusFrame

QCanBusFrame — это контейнерный класс, представляющий собой один кадр CAN. Подробнее...

Заголовок: #include <QCanBusFrame>
qmake: QT += serialbus
С момента: Qt 5.8
  • Список всех членов, включая унаследованные

Типы public

класс TimeStamp
перечисление FrameError { НетОшибки, ОшибкаТаймаутаПередачи, ОшибкаПотериАрбитража, ОшибкаКонтроллера, ОшибкаНарушенияПротокола, …, ЛюбаяОшибка }
флаги FrameErrors
перечисление FrameType { НеизвестныйКадр, КадрДанных, КадрОшибки, КадрУдаленногоЗапроса, НедействительныйКадр }

Функции public

QCanBusFrame(QCanBusFrame::FrameId identifier, const QByteArray &data)
QCanBusFrame(QCanBusFrame::FrameType type = DataFrame)
QCanBusFrame::FrameErrors error() const
QCanBusFrame::FrameId frameId() const
QCanBusFrame::FrameType frameType() const
bool hasBitrateSwitch() const
bool hasErrorStateIndicator() const
bool hasExtendedFrameFormat() const
bool hasFlexibleDataRateFormat() const
bool hasLocalEcho() const
bool isValid() const
QByteArray payload() const
void setBitrateSwitch(bool bitrateSwitch)
void setError(QCanBusFrame::FrameErrors error)
void setErrorStateIndicator(bool errorStateIndicator)
void setExtendedFrameFormat(bool isExtended)
void setFlexibleDataRateFormat(bool isFlexibleData)
void setFrameId(QCanBusFrame::FrameId newFrameId)
void setFrameType(QCanBusFrame::FrameType newType)
void setLocalEcho(bool echo)
void setPayload(const QByteArray &data)
void setTimeStamp(QCanBusFrame::TimeStamp ts)
QCanBusFrame::TimeStamp timeStamp() const
QString toString() const

Связанные нечлены

QDataStream & operator<<(QDataStream &out, const QCanBusFrame &frame)
QDataStream & operator>>(QDataStream &in, QCanBusFrame &frame)

Подробное описание

QCanBusDevice может использовать QCanBusFrame для операций чтения и записи. Он содержит идентификатор кадра и полезную нагрузку. QCanBusFrame содержит метку времени момента, когда он был прочитан.

См. также QCanBusFrame::TimeStamp.

Документация по типам членов

перечисление QCanBusFrame::FrameErrorфлаги QCanBusFrame::FrameErrors

Это перечисление описывает возможные типы ошибок.

Константа Значение Описание
QCanBusFrame::NoError 0 Ошибка не произошла.
QCanBusFrame::TransmissionTimeoutError (1 << 0) Время передачи истекло.
QCanBusFrame::LostArbitrationError (1 << 1) Кадр не мог быть отправлен из-за потери арбитража на шине.
QCanBusFrame::ControllerError (1 << 2) Контроллер обнаружил ошибку.
QCanBusFrame::ProtocolViolationError (1 << 3) Произошло нарушение протокола.
QCanBusFrame::TransceiverError (1 << 4) Произошла ошибка трансивера
QCanBusFrame::MissingAcknowledgmentError (1 << 5) Передача не получила подтверждения.
QCanBusFrame::BusOffError (1 << 6) CAN-шина отключена.
QCanBusFrame::BusError (1 << 7) Произошла ошибка CAN-шины.
QCanBusFrame::ControllerRestartError (1 << 8) Контроллер перезапустился.
QCanBusFrame::UnknownError (1 << 9) Произошла неизвестная ошибка.
QCanBusFrame::AnyError 0x1FFFFFFFU Соответствует любому другому типу ошибок.

Тип FrameErrors — это псевдоним для QFlags<FrameError>. Он хранит логическое ИЛИ комбинацию значений FrameError.

перечисление QCanBusFrame::FrameType

Это перечисление описывает тип кадра CAN.

Константа Значение Описание
QCanBusFrame::UnknownFrame 0x0 Тип кадра неизвестен.
QCanBusFrame::DataFrame 0x1 Это значение представляет собой кадр данных.
QCanBusFrame::ErrorFrame 0x2 Это значение представляет собой кадр ошибки.
QCanBusFrame::RemoteRequestFrame 0x3 Это значение представляет собой удаленный запрос.
QCanBusFrame::InvalidFrame 0x4 Это значение представляет собой недействительный кадр. Этот тип используется для отчётности об ошибках.

См. также setFrameType().

Документация по функциям-членам

QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameId identifier, const QByteArray &data)

Конструирует кадр CAN, используя identifier в качестве идентификатора кадра и data в качестве полезной нагрузки.

QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameType type = DataFrame)

Создаёт кадр CAN заданного типа type.

QCanBusFrame::FrameErrors QCanBusFrame::error() const

Возвращает код ошибки текущего кадра ошибки. Если кадр не является кадром ErrorFrame, эта функция возвращает NoError.

См. также setError().

QCanBusFrame::FrameId QCanBusFrame::frameId() const

Возвращает идентификатор кадра CAN. Если кадр CAN использует расширенный формат кадра, идентификатор имеет максимальную длину 29 бит; в противном случае 11 бит.

Если кадр имеет тип ErrorFrame, этот идентификатор всегда равен 0.

См. также setFrameId() и hasExtendedFrameFormat().

QCanBusFrame::FrameType QCanBusFrame::frameType() const

Возвращает тип кадра.

См. также setFrameType().

[since 5.9] bool QCanBusFrame::hasBitrateSwitch() const

Возвращает true, если CAN использует Flexible Data-Rate с Bitrate Switch для передачи данных полезной нагрузки с более высокой скоростью передачи данных.

Эта функция была добавлена в Qt 5.9.

См. также setBitrateSwitch() и QCanBusDevice::DataBitRateKey.

[since 5.9] bool QCanBusFrame::hasErrorStateIndicator() const

Возвращает true, если CAN использует Flexible Data-Rate с установленным Error State Indicator.

Этот флаг устанавливается аппаратным обеспечением CAN FD передатчика для указания состояния ошибки передатчика.

Эта функция была добавлена в Qt 5.9.

См. также setErrorStateIndicator().

bool QCanBusFrame::hasExtendedFrameFormat() const

Возвращает true , если кадр CAN использует 29-битный идентификатор; в противном случае false, что подразумевает 11-битный идентификатор.

См. также setExtendedFrameFormat() и frameId().

bool QCanBusFrame::hasFlexibleDataRateFormat() const

Возвращает true , если кадр CAN использует Flexible Data-Rate, который позволяет использовать до 64 байт данных, в противном случае false, что подразумевает не более 8 байт полезной нагрузки.

См. также setFlexibleDataRateFormat() и payload().

[since 5.10] bool QCanBusFrame::hasLocalEcho() const

Возвращает true , если кадр является кадром локального эха, т.е. кадром, который получен как эхо, когда кадр с тем же содержимым был успешно отправлен в шину CAN. Этот флаг устанавливается для кадров, отправленных самим приложением, а также для кадров, отправленных другими приложениями, работающими в той же системе.

QCanBusDevice::ReceiveOwnKey должен быть установлен в значение true для получения кадров эха.

Эта функция была добавлена в Qt 5.10.

См. также setLocalEcho(), QCanBusDevice::ReceiveOwnKey и QCanBusDevice::LoopbackKey.

bool QCanBusFrame::isValid() const

Возвращает false , если frameType() имеет значение InvalidFrame, hasExtendedFrameFormat() не установлен, хотя frameId() длиннее 11 бит, или полезная нагрузка длиннее максимальной допустимой длины полезной нагрузки в 64 байта, если режим Flexible Data-Rate включён, или 8 байт, если он выключен. Если frameType() имеет значение RemoteRequestFrame и в то же время включён режим Flexible Data-Rate, также возвращается false.

В противном случае эта функция возвращает true.

QByteArray QCanBusFrame::payload() const

Возвращает полезную нагрузку кадра.

См. также setPayload().

[since 5.9] void QCanBusFrame::setBitrateSwitch(bool bitrateSwitch)

Устанавливает флаг Bitrate Switch для Flexible Data-Rate в значение bitrateSwitch. Поле данных кадров с этим флагом передаётся с более высокой скоростью передачи данных.

Эта функция была добавлена в Qt 5.9.

См. также hasBitrateSwitch() и QCanBusDevice::DataBitRateKey.

void QCanBusFrame::setError(QCanBusFrame::FrameErrors error)

Устанавливает тип ошибки кадра. Эта функция ничего не делает, если frameType() не является ErrorFrame.

См. также error().

[since 5.9] void QCanBusFrame::setErrorStateIndicator(bool errorStateIndicator)

Устанавливает флаг Error State Indicator для Flexible Data-Rate в значение errorStateIndicator.

При отправке кадров CAN FD этот флаг автоматически устанавливается аппаратным обеспечением CAN FD. QCanBusFrame::setErrorStateIndicator() следует использовать только для тестирования приложений, например, на виртуальных шинах CAN FD.

Эта функция была добавлена в Qt 5.9.

См. также hasErrorStateIndicator().

void QCanBusFrame::setExtendedFrameFormat(bool isExtended)

Устанавливает флаг расширенного формата кадра в значение isExtended.

См. также hasExtendedFrameFormat().

void QCanBusFrame::setFlexibleDataRateFormat(bool isFlexibleData)

Устанавливает флаг Flexible Data-Rate в значение isFlexibleData. Эти кадры могут быть отправлены с более высокой скоростью на поддерживающих контроллерах. Кроме того, предельная длина полезной нагрузки увеличивается до 64 байт.

См. также hasFlexibleDataRateFormat().

void QCanBusFrame::setFrameId(QCanBusFrame::FrameId newFrameId)

Устанавливает идентификатор кадра CAN в значение newFrameId.

Максимальный размер идентификатора кадра CAN составляет 11 бит, который может быть расширен до 29 бит, поддерживая расширенный формат кадра CAN. Настройка расширенного формата кадра CAN автоматически устанавливается, когда newFrameId имеет размер более 11 бит.

Когда формат расширен, а newFrameId имеет размер до 11 бит или меньше, настройка расширенного формата кадра CAN не изменяется.

См. также frameId() и hasExtendedFrameFormat().

void QCanBusFrame::setFrameType(QCanBusFrame::FrameType newType)

Устанавливает тип кадра в значение newType.

См. также frameType().

[since 5.10] void QCanBusFrame::setLocalEcho(bool echo)

Устанавливает флаг Local Echo в значение echo.

При отправке кадров шины CAN с включённым QCanBusDevice::ReceiveOwnKey все успешно отправленные кадры дублируются в очередь приема и помечаются как кадры локального эха. QCanBusFrame::setLocalEcho следует использовать только для тестирования приложений, например, на виртуальных шинах CAN.

Эта функция была добавлена в Qt 5.10.

См. также hasLocalEcho().

void QCanBusFrame::setPayload(const QByteArray &data)

Устанавливает data как полезную нагрузку кадра CAN. Максимальный размер полезной нагрузки составляет 8 байт, который может быть расширен до 64 байт при поддержке Flexible Data-Rate. Если data содержит более 8 байт, флаг Flexible Data-Rate автоматически устанавливается. Flexible Data-Rate должен быть включён в QCanBusDevice путём установки QCanBusDevice::CanFdKey.

Кадры типа RemoteRequestFrame (RTR) не имеют полезной нагрузки. Однако им нужно указать ожидаемую длину полезной нагрузки ответов. Для установки ожидаемой длины необходимо установить фейковую полезную нагрузку, длина которой соответствует ожидаемой длине полезной нагрузки ответа. Один из способов сделать это:

QCanBusFrame frame(QCanBusFrame::RemoteRequestFrame);
int expectedResponseLength = ...;
frame.setPayload(QByteArray(expectedResponseLength, 0));

См. также payload() и hasFlexibleDataRateFormat().

void QCanBusFrame::setTimeStamp(QCanBusFrame::TimeStamp ts)

Устанавливает ts в качестве временной метки для кадра CAN. Обычно эта функция не нужна, потому что временная метка создаётся во время операции чтения, а не во время операции записи.

См. также timeStamp() и QCanBusFrame::TimeStamp.

END_OF_DOCUMENT_MARKER

QCanBusFrame::TimeStamp QCanBusFrame::timeStamp() const

Возвращает метку времени кадра.

См. также QCanBusFrame::TimeStamp и QCanBusFrame::setTimeStamp().

QString QCanBusFrame::toString() const

Возвращает CAN-кадр в формате форматированной строки.

Вывод содержит идентификатор CAN в шестнадцатеричном формате, выровненный вправо до 32 бит, за которым следует длина данных в квадратных скобках и полезная нагрузка в шестнадцатеричном формате.

Стандартные идентификаторы заполняются пробелами, а расширенные идентификаторы — нулями.

Типичные выводы:

(Error)                                  - error frame
     7FF   [1]  01                       - data frame with standard identifier
1FFFFFFF   [8]  01 23 45 67 89 AB CD EF  - data frame with extended identifier
     400  [10]  01 23 45 67 ... EF 01 23 - CAN FD frame
     123   [5]  Remote Request           - remote frame with standard identifier
00000234   [0]  Remote Request           - remote frame with extended identifier

Связанные нечлены

QDataStream &operator<<(QDataStream &out, const QCanBusFrame &frame)

Записывает frame в поток (out) и возвращает ссылку на него.

QDataStream &operator>>(QDataStream &in, QCanBusFrame &frame)

Считывает frame из потока (in) и возвращает ссылку на него.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qcanbusframe.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API