Класс QCanBusFrame
QCanBusFrame — это контейнерный класс, представляющий собой один кадр CAN. Подробнее...
| Заголовок: | #include <QCanBusFrame> |
| qmake: | QT += serialbus |
| С момента: | Qt 5.8 |
Типы публичного доступа
| класс | TimeStamp |
| перечисление | FrameError { NoError, TransmissionTimeoutError, LostArbitrationError, ControllerError, ..., AnyError } |
| флаги | FrameErrors |
| перечисление | FrameType { UnknownFrame, DataFrame, ErrorFrame, RemoteRequestFrame, InvalidFrame } |
Функции публичного доступа
| QCanBusFrame(FrameType type = DataFrame) | |
| QCanBusFrame(quint32 identifier, const QByteArray &data) | |
| FrameErrors | error() const |
| quint32 | frameId() const |
| FrameType | frameType() const |
| bool | hasBitrateSwitch() const |
| bool | hasErrorStateIndicator() const |
| bool | hasExtendedFrameFormat() const |
| bool | hasFlexibleDataRateFormat() const |
| bool | isValid() const |
| QByteArray | payload() const |
| void | setBitrateSwitch(bool bitrateSwitch) |
| void | setError(FrameErrors error) |
| void | setErrorStateIndicator(bool errorStateIndicator) |
| void | setExtendedFrameFormat(bool isExtended) |
| void | setFlexibleDataRateFormat(bool isFlexibleData) |
| void | setFrameId(quint32 newFrameId) |
| void | setFrameType(FrameType newType) |
| void | setPayload(const QByteArray &data) |
| void | setTimeStamp(TimeStamp ts) |
| TimeStamp | timeStamp() const |
| QString | toString() const |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &out, const QCanBusFrame &frame) |
| QDataStream & | operator>>(QDataStream &in, QCanBusFrame &frame) |
Подробное описание
QCanBusFrame — это контейнерный класс, представляющий собой один кадр CAN.
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(FrameType type = DataFrame)
Создаёт кадр CAN указанного type.
QCanBusFrame::QCanBusFrame(quint32 identifier, const QByteArray &data)
Создаёт кадр CAN с использованием identifier в качестве идентификатора кадра и data в качестве полезной нагрузки.
FrameErrors QCanBusFrame::error() const
Возвращает код ошибки текущей кадровой ошибки. Если кадр не является кадром ErrorFrame, эта функция возвращает NoError.
См. также setError().
quint32 QCanBusFrame::frameId() const
Возвращает идентификатор кадра CAN. Если кадр CAN использует расширенный формат кадра, идентификатор имеет максимальную длину 29 бит; в противном случае 11 бит.
Если кадр типа ErrorFrame, этот ID всегда равен 0.
См. также setFrameId() и hasExtendedFrameFormat().
FrameType QCanBusFrame::frameType() const
Возвращает тип кадра.
См. также setFrameType().
bool QCanBusFrame::hasBitrateSwitch() const
Возвращает true если CAN использует Flexible Data-Rate с Bitrate Switch для передачи данных полезной нагрузки с более высокой скоростью передачи данных.
Эта функция была добавлена в Qt 5.9.
См. также setBitrateSwitch() и QCanBusDevice::DataBitRateKey.
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().
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().
void QCanBusFrame::setBitrateSwitch(bool bitrateSwitch)
Устанавливает флаг Bitrate Switch режима Flexible Data-Rate в значение bitrateSwitch. Поле данных кадров с этим флагом передается с более высокой скоростью передачи данных.
Эта функция была добавлена в Qt 5.9.
См. также hasBitrateSwitch() и QCanBusDevice::DataBitRateKey.
void QCanBusFrame::setError(FrameErrors error)
Устанавливает тип ошибки кадра. Эта функция ничего не делает, если frameType() не является ErrorFrame.
См. также error().
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(quint32 newFrameId)
Устанавливает идентификатор кадра CAN в значение newFrameId. Максимальный размер идентификатора кадра CAN составляет 11 бит, который может быть расширен до 29 бит, поддерживая расширенный формат кадра CAN. Настройка расширенного формата кадра CAN автоматически подстраивается под newFrameId.
См. также frameId() и hasExtendedFrameFormat().
void QCanBusFrame::setFrameType(FrameType newType)
Устанавливает тип кадра в значение newType.
См. также frameType().
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(TimeStamp ts)
Устанавливает ts в качестве метки времени для кадра CAN. Обычно эта функция не нужна, потому что метка времени создается во время чтения, а не во время записи.
См. также timeStamp() и QCanBusFrame::TimeStamp.
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-5.9/qcanbusframe.html