Класс QCanBusFrame
QCanBusFrame — это контейнерный класс, представляющий собой отдельный кадр CAN. Подробнее...
| Заголовок: | #include <QCanBusFrame> |
| qmake: | QT += serialbus |
| С тех пор: | Qt 5.6 |
Типы
| класс | TimeStamp |
| перечисление | FrameError { NoError, TransmissionTimeoutError, LostArbitrationError, ControllerError, ..., AnyError } |
| флаги | FrameErrors |
| перечисление | FrameType { UnknownFrame, DataFrame, ErrorFrame, RemoteRequestFrame, InvalidFrame } |
Открытые функции
| QCanBusFrame(QCanBusFrame::FrameType type) | |
| QCanBusFrame(quint32 identifier = 0, const QByteArray &data = QByteArray()) | |
| QCanBusFrame::FrameErrors | error() const |
| quint32 | frameId() const |
| FrameType | frameType() const |
| bool | hasExtendedFrameFormat() const |
| bool | isValid() const |
| QByteArray | payload() const |
| void | setError(QCanBusFrame::FrameErrors error) |
| void | setExtendedFrameFormat(bool isExtended) |
| void | setFrameId(quint32 newFrameId) |
| void | setFrameType(FrameType newType) |
| void | setPayload(const QByteArray &data) |
| void | setTimeStamp(const TimeStamp &ts) |
| TimeStamp | timeStamp() 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 — это typedef для 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::FrameType type)
Создает кадр CAN указанного типа.
QCanBusFrame::QCanBusFrame(quint32 identifier = 0, const QByteArray &data = QByteArray())
Создает кадр CAN, используя identifier в качестве идентификатора кадра и data в качестве полезной нагрузки.
QCanBusFrame::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().
END_OF_DOCUMENT_MARKERbool QCanBusFrame::hasExtendedFrameFormat() const
Возвращает true если в формате кадра CAN используется 29-битный идентификатор; в противном случае false, подразумевая 11-битный идентификатор.
См. также setExtendedFrameFormat() и frameId().
bool QCanBusFrame::isValid() const
Возвращает false если тип кадра frameType() равен InvalidFrame, hasExtendedFrameFormat() не установлен, хотя frameId() длиннее 11 бит или размер полезной нагрузки превышает максимальную разрешенную длину в 64 байта.
В противном случае эта функция возвращает true.
QByteArray QCanBusFrame::payload() const
Возвращает полезную нагрузку кадра.
См. также setPayload().
void QCanBusFrame::setError(QCanBusFrame::FrameErrors error)
Устанавливает тип ошибки кадра error. Эта функция ничего не делает, если frameType() не является ErrorFrame.
См. также error().
void QCanBusFrame::setExtendedFrameFormat(bool isExtended)
Устанавливает флаг расширенного формата кадра в значение isExtended.
См. также hasExtendedFrameFormat().
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. Flexible Data-Rate должен быть включен в QCanBusDevice, установив значение QCanBusDevice::CanFdKey.
Кадры типа RemoteRequestFrame (RTR) не имеют полезной нагрузки. Однако они должны указать ожидаемый размер полезной нагрузки ответов. Чтобы установить ожидаемую длину, необходимо установить фиктивную полезную нагрузку, длина которой соответствует ожидаемой длине полезной нагрузки ответа. Один из способов сделать это показан ниже:
QCanBusFrame frame(QCanBusFrame::RemoteRequestFrame); int expectedResponseLength = ...; frame.setPayload(QByteArray(expectedResponseLength, 0));
См. также payload().
void QCanBusFrame::setTimeStamp(const TimeStamp &ts)
Устанавливает ts в качестве метки времени для кадра CAN. Как правило, эта функция не требуется, поскольку метка времени создается во время операции чтения, а не во время операции записи.
См. также timeStamp() и QCanBusFrame::TimeStamp.
TimeStamp QCanBusFrame::timeStamp() const
Возвращает метку времени кадра.
См. также QCanBusFrame::TimeStamp и QCanBusFrame::setTimeStamp().
Связанные нечленённые члены
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/archives/qt-5.6/qcanbusframe.html