Класс 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_MARKERQCanBusFrame::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