QCanBusFrame Class
QCanBusFrame es una clase contenedora que representa una única trama CAN. Más...
| Cabecera: | #include <QCanBusFrame> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus)target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
Tipos Públicos
| class | TimeStamp |
| enum | FrameError { NoError, TransmissionTimeoutError, LostArbitrationError, ControllerError, ProtocolViolationError, …, AnyError } |
| flags | FrameErrors |
| FrameId | |
| enum | FrameType { UnknownFrame, DataFrame, ErrorFrame, RemoteRequestFrame, InvalidFrame } |
Funciones públicas
| QCanBusFrame(QCanBusFrame::FrameType type = DataFrame) | |
| QCanBusFrame(QCanBusFrame::FrameId identifier, const QByteArray &data) | |
| 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 |
No miembros relacionados
| QDataStream & | operator<<(QDataStream &out, const QCanBusFrame &frame) |
| QDataStream & | operator>>(QDataStream &in, QCanBusFrame &frame) |
Descripción detallada
QCanBusDevice puede utilizar QCanBusFrame para operaciones de lectura y escritura. Contiene el identificador de trama y la carga útil de datos. QCanBusFrame contiene la marca de tiempo del momento en que fue leído.
Véase también QCanBusFrame::FrameId, QCanBusFrame::TimeStamp, y payload().
Documentación de tipos de miembros
enum QCanBusFrame::FrameError
flags QCanBusFrame::FrameErrors
Este enum describe los posibles tipos de error.
| Constante | Valor | Descripción |
|---|---|---|
QCanBusFrame::NoError | 0 | No se ha producido ningún error. |
QCanBusFrame::TransmissionTimeoutError | (1 << 0) | La transmisión se ha interrumpido. |
QCanBusFrame::LostArbitrationError | (1 << 1) | La trama no se ha podido enviar debido a una pérdida de arbitraje en el bus. |
QCanBusFrame::ControllerError | (1 << 2) | El controlador ha encontrado un error. |
QCanBusFrame::ProtocolViolationError | (1 << 3) | Se ha producido una violación del protocolo. |
QCanBusFrame::TransceiverError | (1 << 4) | Se ha producido un error en el transceptor |
QCanBusFrame::MissingAcknowledgmentError | (1 << 5) | La transmisión no ha recibido acuse de recibo. |
QCanBusFrame::BusOffError | (1 << 6) | El bus CAN está fuera de línea. |
QCanBusFrame::BusError | (1 << 7) | Se ha producido un error en el bus CAN. |
QCanBusFrame::ControllerRestartError | (1 << 8) | El controlador se ha reiniciado. |
QCanBusFrame::UnknownError | (1 << 9) | Se ha producido un error desconocido. |
QCanBusFrame::AnyError | 0x1FFFFFFFU | Coincide con cualquier otro tipo de error. |
El tipo FrameErrors es un typedef para QFlags<FrameError>. Almacena una combinación OR de valores FrameError.
Ver también error() y setError().
[alias] QCanBusFrame::FrameId
Un tipo distinto para un identificador de trama de bus CAN con 11 o 29 bits.
Véase también frameId() y setFrameId().
enum QCanBusFrame::FrameType
Este enum describe el tipo de trama CAN.
| Constante | Valor | Descripción |
|---|---|---|
QCanBusFrame::UnknownFrame | 0x0 | El tipo de trama es desconocido. |
QCanBusFrame::DataFrame | 0x1 | Este valor representa una trama de datos. |
QCanBusFrame::ErrorFrame | 0x2 | Este valor representa una trama de error. |
QCanBusFrame::RemoteRequestFrame | 0x3 | Este valor representa una petición remota. |
QCanBusFrame::InvalidFrame | 0x4 | Este valor representa una trama no válida. Este tipo se utiliza para la notificación de errores. |
Véase también frameType() y setFrameType().
Documentación de las funciones miembro
[explicit noexcept] QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameType type = DataFrame)
Construye una trama CAN de la dirección type especificada.
Véase también QCanBusFrame::FrameType y setFrameType().
[explicit] QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameId identifier, const QByteArray &data)
Construye una trama CAN utilizando identifier como identificador de trama y data como carga útil.
Véase también QCanBusFrame::FrameId.
[constexpr noexcept] QCanBusFrame::FrameErrors QCanBusFrame::error() const
Devuelve el error de la trama de error actual. Si la trama no es ErrorFrame, esta función devuelve NoError.
Véase también QCanBusFrame::FrameError y setError().
[constexpr noexcept] QCanBusFrame::FrameId QCanBusFrame::frameId() const
Devuelve el identificador de la trama CAN. Si la trama CAN utiliza el formato de trama extendida, el identificador tiene un máximo de 29 bits; en caso contrario, 11 bits.
Si la trama es del tipo ErrorFrame, este identificador es siempre 0.
Véase también QCanBusFrame::FrameId, setFrameId(), y hasExtendedFrameFormat().
[constexpr noexcept] QCanBusFrame::FrameType QCanBusFrame::frameType() const
Devuelve el tipo del marco.
Véase también QCanBusFrame::FrameType y setFrameType().
[constexpr noexcept] bool QCanBusFrame::hasBitrateSwitch() const
Devuelve true si el CAN utiliza Flexible Data-Rate with Bitrate Switch, para transferir los datos de carga útil a una tasa de bits de datos superior.
Véase también setBitrateSwitch() y QCanBusDevice::DataBitRateKey.
[constexpr noexcept] bool QCanBusFrame::hasErrorStateIndicator() const
Devuelve true si el CAN utiliza Flexible Data-Rate con el indicador de estado de error activado.
Este indicador lo establece el hardware CAN FD del transmisor para indicar el estado de error del transmisor.
Véase también setErrorStateIndicator().
[constexpr noexcept] bool QCanBusFrame::hasExtendedFrameFormat() const
Devuelve true si la trama CAN utiliza un identificador de 29 bits; en caso contrario false, lo que implica un identificador de 11 bits.
Véase también setExtendedFrameFormat() y frameId().
[constexpr noexcept] bool QCanBusFrame::hasFlexibleDataRateFormat() const
Devuelve true si la trama CAN utiliza Flexible Data-Rate que permite hasta 64 bytes de datos, en caso contrario false, lo que implica un máximo de 8 bytes de carga útil.
Véase también setFlexibleDataRateFormat() y payload().
[constexpr noexcept] bool QCanBusFrame::hasLocalEcho() const
Devuelve true si la trama es una trama de eco local, es decir, una trama que se recibe como eco cuando la trama con el mismo contenido se ha enviado correctamente al bus CAN. Esta bandera se establece para las tramas enviadas por la propia aplicación, así como para las tramas enviadas por otras aplicaciones que se ejecutan en el mismo sistema.
QCanBusDevice::ReceiveOwnKey debe estar establecido en true para recibir tramas echo.
Véase también setLocalEcho(), QCanBusDevice::ReceiveOwnKey, y QCanBusDevice::LoopbackKey.
[noexcept] bool QCanBusFrame::isValid() const
Devuelve false si frameType() es InvalidFrame, hasExtendedFrameFormat() no está configurado aunque frameId() sea superior a 11 bits o la carga útil supere la longitud máxima permitida de 64 bytes si el modo de velocidad de datos flexible está activado u 8 bytes si está desactivado. Si frameType() es RemoteRequestFrame y el modo Flexible Data-Rate está activado al mismo tiempo, también se devuelve false.
En caso contrario, esta función devuelve true.
QByteArray QCanBusFrame::payload() const
Devuelve la carga de datos de la trama.
Véase también setPayload().
[constexpr noexcept] void QCanBusFrame::setBitrateSwitch(bool bitrateSwitch)
Establezca el indicador Flexible Data-Rate flag Bitrate Switch en bitrateSwitch. El campo de datos de las tramas con este indicador se transfiere a una velocidad de bits de datos superior.
Véase también hasBitrateSwitch() y QCanBusDevice::DataBitRateKey.
[constexpr] void QCanBusFrame::setError(QCanBusFrame::FrameErrors error)
Establece el tipo error del marco. Esta función no hace nada si frameType() no es un ErrorFrame.
Véase también QCanBusFrame::FrameError y error().
[constexpr noexcept] void QCanBusFrame::setErrorStateIndicator(bool errorStateIndicator)
Establezca el indicador Flexible Data-Rate flag Error State Indicator en errorStateIndicator.
Al enviar tramas CAN FD, el hardware CAN FD establece automáticamente este indicador. QCanBusFrame::setErrorStateIndicator() sólo debe utilizarse para pruebas de aplicaciones, por ejemplo, en buses CAN FD virtuales.
Véase también hasErrorStateIndicator().
[constexpr noexcept] void QCanBusFrame::setExtendedFrameFormat(bool isExtended)
Establece el indicador de formato de trama extendido en isExtended.
Véase también hasExtendedFrameFormat().
[constexpr noexcept] void QCanBusFrame::setFlexibleDataRateFormat(bool isFlexibleData)
Establece el indicador de velocidad de datos flexible en isFlexibleData. Estas tramas pueden enviarse utilizando una velocidad superior en los controladores compatibles. Además, el límite de longitud de la carga útil se eleva a 64 bytes.
Véase también hasFlexibleDataRateFormat().
[constexpr] void QCanBusFrame::setFrameId(QCanBusFrame::FrameId newFrameId)
Establece el identificador de la trama CAN en newFrameId.
El tamaño máximo de un identificador de trama CAN es de 11 bits, que puede ampliarse hasta 29 bits admitiendo el formato de trama CAN ampliado. La configuración del formato de trama ampliado CAN se establece automáticamente cuando se proporciona un newFrameId con más de 11 bits de tamaño.
Cuando el formato es extendido y se pasa un newFrameId con hasta 11 bits o menos, el ajuste de formato de trama extendido CAN no se cambia.
Véase también QCanBusFrame::FrameId, frameId(), y hasExtendedFrameFormat().
[constexpr noexcept] void QCanBusFrame::setFrameType(QCanBusFrame::FrameType newType)
Establece el tipo del marco en newType.
Véase también QCanBusFrame::FrameType y frameType().
[constexpr noexcept] void QCanBusFrame::setLocalEcho(bool echo)
Establezca el indicador de eco local en echo.
Cuando se envían tramas de bus CAN con QCanBusDevice::ReceiveOwnKey activado, todas las tramas enviadas con éxito se envían por eco a la cola de recepción y se marcan como tramas de eco local. Por lo tanto, QCanBusFrame::setLocalEcho sólo debe utilizarse para pruebas de aplicaciones, por ejemplo, en buses CAN virtuales.
Véase también hasLocalEcho().
void QCanBusFrame::setPayload(const QByteArray &data)
Establece data como carga útil de la trama CAN. El tamaño máximo de la carga útil es de 8 bytes, que pueden ampliarse hasta 64 bytes si se admite Flexible Data-Rate. Si data contiene más de 8 bytes, el indicador de Velocidad de Datos Flexible se activa automáticamente. Flexible Data-Rate debe activarse en QCanBusDevice configurando QCanBusDevice::CanFdKey.
Las tramas de tipo RemoteRequestFrame (RTR) no tienen carga útil. Sin embargo, deben proporcionar una indicación de la longitud de la carga útil esperada de la respuesta. Para establecer la longitud esperada es necesario establecer una carga útil falsa cuya longitud coincida con la longitud esperada de la carga útil de la respuesta. Una forma de hacerlo podría ser la siguiente:
QCanBusFrame frame(QCanBusFrame::RemoteRequestFrame); int expectedResponseLength = ...; frame.setPayload(QByteArray(expectedResponseLength, 0));
Véase también payload() y hasFlexibleDataRateFormat().
[constexpr noexcept] void QCanBusFrame::setTimeStamp(QCanBusFrame::TimeStamp ts)
Establece ts como marca de tiempo para la trama CAN. Normalmente, esta función no es necesaria, porque la marca de tiempo se crea durante la operación de lectura y no se necesita durante la operación de escritura.
Véase también timeStamp() y QCanBusFrame::TimeStamp.
[constexpr noexcept] QCanBusFrame::TimeStamp QCanBusFrame::timeStamp() const
Devuelve la marca de tiempo de la trama.
Véase también QCanBusFrame::TimeStamp y QCanBusFrame::setTimeStamp().
QString QCanBusFrame::toString() const
Devuelve la trama CAN como una cadena formateada.
La salida contiene el identificador CAN en formato hexadecimal, ajustado a la derecha a 32 bits, seguido de la longitud de los datos entre corchetes y la carga útil en formato hexadecimal.
Los identificadores estándar se rellenan con espacios mientras que los extendidos se rellenan con ceros.
Las salidas típicas son:
(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
Relacionados No miembros
QDataStream &operator<<(QDataStream &out, const QCanBusFrame &frame)
Escribe un frame en el flujo (out) y devuelve una referencia al mismo.
QDataStream &operator>>(QDataStream &in, QCanBusFrame &frame)
Lee un frame del flujo (in) y devuelve una referencia al mismo.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.