이 페이지에서

QCanBusFrame Class

QCanBusFrame은 단일 CAN 프레임을 나타내는 컨테이너 클래스입니다. 더 보기...

헤더: #include <QCanBusFrame>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus

공개 유형

class TimeStamp
enum FrameError { NoError, TransmissionTimeoutError, LostArbitrationError, ControllerError, ProtocolViolationError, …, AnyError }
flags FrameErrors
FrameId
enum FrameType { UnknownFrame, DataFrame, ErrorFrame, RemoteRequestFrame, InvalidFrame }

공개 함수

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
QDataStream &operator<<(QDataStream &out, const QCanBusFrame &frame)
QDataStream &operator>>(QDataStream &in, QCanBusFrame &frame)

상세 설명

QCanBusDevice QCanBusFrame을 사용하여 읽기 및 쓰기 작업을 수행할 수 있습니다. 여기에는 프레임 식별자와 데이터 페이로드가 포함됩니다. QCanBusFrame에는 읽힌 시점의 타임스탬프가 포함됩니다.

QCanBusFrame::FrameId, QCanBusFrame::TimeStamp 및 payload()도 참조하십시오 .

멤버 유형 문서

enum QCanBusFrame::FrameError
flags QCanBusFrame::FrameErrors

이 열거형은 발생할 수 있는 오류 유형을 설명합니다.

상수값설명
QCanBusFrame::NoError0오류가 발생하지 않았습니다.
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::AnyError0x1FFFFFFFU다른 모든 오류 유형과 일치합니다.

FrameErrors 유형은 QFlags<FrameError>에 대한 typedef입니다. 이 유형은 FrameError 값들의 OR 조합을 저장합니다.

error() 및 setError()도 참조하십시오 .

[alias] QCanBusFrame::FrameId

11비트 또는 29비트인 CAN 버스 프레임 식별자를 위한 별도의 유형입니다.

frameId() 및 setFrameId()도 참조하십시오 .

enum QCanBusFrame::FrameType

이 열거형은 CAN 프레임의 유형을 나타냅니다.

상수값설명
QCanBusFrame::UnknownFrame0x0프레임 유형이 알 수 없음입니다.
QCanBusFrame::DataFrame0x1이 값은 데이터 프레임을 나타냅니다.
QCanBusFrame::ErrorFrame0x2이 값은 오류 프레임입니다.
QCanBusFrame::RemoteRequestFrame0x3이 값은 원격 요청을 나타냅니다.
QCanBusFrame::InvalidFrame0x4이 값은 유효하지 않은 프레임을 나타냅니다. 이 유형은 오류 보고에 사용됩니다.

frameType() 및 setFrameType()도 참조하십시오 .

멤버 함수 설명서

[explicit noexcept] QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameType type = DataFrame)

지정된 type 의 CAN 프레임을 생성합니다.

QCanBusFrame::FrameType 및 setFrameType()도 참조하십시오 .

[explicit] QCanBusFrame::QCanBusFrame(QCanBusFrame::FrameId identifier, const QByteArray &data)

identifier 를 프레임 식별자로, data 를 페이로드로 사용하여 CAN 프레임을 생성합니다.

QCanBusFrame::FrameId도 참조하십시오 .

[constexpr noexcept] QCanBusFrame::FrameErrors QCanBusFrame::error() const

현재 오류 프레임의 오류를 반환합니다. 해당 프레임이 ` ErrorFrame`가 아닌 경우, 이 함수는 ` NoError`를 반환합니다.

QCanBusFrame::FrameError 및 setError()도 참조하십시오 .

[constexpr noexcept] QCanBusFrame::FrameId QCanBusFrame::frameId() const

CAN 프레임 식별자를 반환합니다. CAN 프레임이 확장 프레임 형식을 사용하는 경우, 식별자의 최대 길이는 29비트이며, 그렇지 않은 경우 11비트입니다.

프레임이 ErrorFrame 유형인 경우, 이 ID는 항상 0입니다.

QCanBusFrame::FrameId, setFrameId(), hasExtendedFrameFormat()도 참조하십시오 .

[constexpr noexcept] QCanBusFrame::FrameType QCanBusFrame::frameType() const

프레임의 유형을 반환합니다.

QCanBusFrame::FrameType 및 setFrameType()도 참조하십시오 .

[constexpr noexcept] bool QCanBusFrame::hasBitrateSwitch() const

CAN이 비트레이트 전환 기능이 있는 유연한 데이터 전송 속도(Flexible Data-Rate)를 사용하여 페이로드 데이터를 더 높은 데이터 비트레이트로 전송하는 경우, true 를 반환합니다.

setBitrateSwitch() 및 QCanBusDevice::DataBitRateKey도 참조하십시오 .

[constexpr noexcept] bool QCanBusFrame::hasErrorStateIndicator() const

CAN이 오류 상태 표시기가 설정된 유연한 데이터 전송 속도(Flexible Data-Rate )를 사용하는 경우 ` true `를 반환합니다.

이 플래그는 송신기의 CAN FD 하드웨어에 의해 설정되어 송신기의 오류 상태를 나타냅니다.

setErrorStateIndicator()도 참조하십시오 .

[constexpr noexcept] bool QCanBusFrame::hasExtendedFrameFormat() const

CAN 프레임이 29비트 식별자를 사용하는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환하며, 이는 11비트 식별자를 의미합니다.

setExtendedFrameFormat() 및 frameId()도 참조하십시오 .

[constexpr noexcept] bool QCanBusFrame::hasFlexibleDataRateFormat() const

CAN 프레임이 최대 64바이트의 데이터를 허용하는 유연한 데이터 전송 속도(Flexible Data-Rate )를 사용하는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환하며, 이는 페이로드가 최대 8바이트임을 의미합니다.

setFlexibleDataRateFormat() 및 payload()도 참조하십시오 .

[constexpr noexcept] bool QCanBusFrame::hasLocalEcho() const

프레임이 로컬 에코 프레임, 즉 동일한 내용을 가진 프레임이 CAN 버스로 성공적으로 전송된 후 에코로 수신된 프레임인 경우, ` true `을 반환합니다. 이 플래그는 애플리케이션 자체에서 전송한 프레임뿐만 아니라 동일한 시스템에서 실행 중인 다른 애플리케이션이 전송한 프레임에 대해서도 설정됩니다.

QCanBusDevice::ReceiveOwnKey 에코 프레임을 수신하려면 이 플래그를 true로 설정해야 합니다.

setLocalEcho(), QCanBusDevice::ReceiveOwnKey 및 QCanBusDevice::LoopbackKey도 참조하십시오 .

[noexcept] bool QCanBusFrame::isValid() const

frameType()의 값이 InvalidFrame 인 경우, frameId()의 길이가 11비트보다 길음에도 불구하고 hasExtendedFrameFormat()가 설정되지 않은 경우, 또는 유연한 데이터 전송률(Flexible Data-Rate) 모드가 활성화된 경우 허용되는 최대 페이로드 길이인 64바이트를 초과하거나, 비활성화된 경우 8바이트를 초과하는 페이로드가 있는 경우 false 를 반환합니다. frameType()의 값이 RemoteRequestFrame 이고, 동시에 Flexible Data-Rate 모드가 활성화된 경우 false 도 반환됩니다.

그렇지 않은 경우 이 함수는 ` true`를 반환합니다.

QByteArray QCanBusFrame::payload() const

프레임의 데이터 페이로드를 반환합니다.

setPayload()도 참조하십시오 .

[constexpr noexcept] void QCanBusFrame::setBitrateSwitch(bool bitrateSwitch)

유연한 데이터 전송률(Flexible Data-Rate ) 플래그인 비트레이트 전환(Bitrate Switch ) 플래그를 bitrateSwitch 로 설정하십시오. 이 플래그가 설정된 프레임의 데이터 필드는 더 높은 데이터 비트레이트로 전송됩니다.

hasBitrateSwitch() 및 QCanBusDevice::DataBitRateKey도 참조하십시오 .

[constexpr] void QCanBusFrame::setError(QCanBusFrame::FrameErrors error)

프레임의 ` error ` 유형을 설정합니다. ` frameType()`가 ` ErrorFrame`가 아닌 경우, 이 함수는 아무 작업도 수행하지 않습니다.

QCanBusFrame::FrameError 및 error()항목도 참조하십시오 .

[constexpr noexcept] void QCanBusFrame::setErrorStateIndicator(bool errorStateIndicator)

‘유연한 데이터 전송률(Flexible Data-Rate) ’ 플래그의 오류 상태 표시기(Error State Indicator ) 플래그를 ‘ errorStateIndicator ’로 설정하십시오.

CAN FD 프레임을 전송할 때 이 플래그는 CAN FD 하드웨어에 의해 자동으로 설정됩니다. ` QCanBusFrame::setErrorStateIndicator() `는 가상 CAN FD 버스 등에서 애플리케이션 테스트를 수행할 때에만 사용해야 합니다.

hasErrorStateIndicator()항목도 참조하십시오 .

[constexpr noexcept] void QCanBusFrame::setExtendedFrameFormat(bool isExtended)

확장 프레임 형식 플래그를 isExtended 로 설정합니다.

hasExtendedFrameFormat()도 참조하십시오 .

[constexpr noexcept] void QCanBusFrame::setFlexibleDataRateFormat(bool isFlexibleData)

유연한 데이터 전송 속도 플래그를 ‘ isFlexibleData ’로 설정합니다. 이를 통해 해당 프레임은 이를 지원하는 컨트롤러에서 더 빠른 속도로 전송될 수 있습니다. 또한 페이로드 길이 제한이 64바이트로 늘어납니다.

hasFlexibleDataRateFormat()도 참조하십시오 .

[constexpr] void QCanBusFrame::setFrameId(QCanBusFrame::FrameId newFrameId)

CAN 프레임의 식별자를 newFrameId 로 설정합니다.

CAN 프레임 식별자의 최대 크기는 11비트이며, CAN 확장 프레임 형식을 지원함으로써 최대 29비트까지 확장할 수 있습니다. 11비트보다 큰 크기의 newFrameId 가 지정되면 CAN 확장 프레임 형식 설정이 자동으로 적용됩니다.

형식이 확장된 상태에서 11비트 이하의 newFrameId 가 전달되면, CAN 확장 프레임 형식 설정은 변경 되지 않습니다.

QCanBusFrame::FrameId, frameId() 및 hasExtendedFrameFormat()도 참조하십시오 .

[constexpr noexcept] void QCanBusFrame::setFrameType(QCanBusFrame::FrameType newType)

프레임의 유형을 ‘ newType ’로 설정합니다.

QCanBusFrame::FrameType 및 frameType()도 참조하십시오 .

[constexpr noexcept] void QCanBusFrame::setLocalEcho(bool echo)

Local Echo 플래그를 ‘ echo ’로 설정합니다.

QCanBusDevice::ReceiveOwnKey 가 활성화된 상태에서 CAN 버스 프레임을 전송할 때, 성공적으로 전송된 모든 프레임은 수신 큐로 에코 처리되며 로컬 에코 프레임으로 표시됩니다. 따라서 QCanBusFrame::setLocalEcho 는 가상 CAN 버스 등 애플리케이션 테스트 용도로만 사용해야 합니다.

hasLocalEcho()도 참조하십시오 .

void QCanBusFrame::setPayload(const QByteArray &data)

data 를 CAN 프레임의 페이로드로 설정합니다. 페이로드의 최대 크기는 8바이트이며, 유연한 데이터 전송률(Flexible Data-Rate)을 지원함으로써 최대 64바이트까지 확장할 수 있습니다. data 에 8바이트 이상의 데이터가 포함될 경우, 유연한 데이터 전송률 플래그가 자동으로 설정됩니다. QCanBusDevice 에서 유연한 데이터 전송률(Flexible Data-Rate)을 활성화하려면 QCanBusDevice::CanFdKey 을 설정해야 합니다.

RemoteRequestFrame (RTR) 유형의 프레임에는 페이로드가 없습니다. 그러나 응답에서 예상되는 페이로드 길이에 대한 정보를 제공해야 합니다. 예상 길이를 설정하려면 응답의 예상 페이로드 길이와 일치하는 가짜 페이로드를 설정해야 합니다. 이를 수행하는 한 가지 방법은 다음과 같습니다:

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

payload() 및 hasFlexibleDataRateFormat()도 참조하십시오 .

[constexpr noexcept] void QCanBusFrame::setTimeStamp(QCanBusFrame::TimeStamp ts)

ts 를 CAN 프레임의 타임스탬프로 설정합니다. 일반적으로 이 함수는 필요하지 않습니다. 타임스탬프는 읽기 작업 중에 생성되며, 쓰기 작업 중에는 필요하지 않기 때문입니다.

timeStamp() 및 QCanBusFrame::TimeStamp도 참조하십시오 .

[constexpr noexcept] QCanBusFrame::TimeStamp QCanBusFrame::timeStamp() const

프레임의 타임스탬프를 반환합니다.

QCanBusFrame::TimeStamp 및 QCanBusFrame::setTimeStamp()도 참조하십시오 .

QString QCanBusFrame::toString() const

CAN 프레임을 형식화된 문자열로 반환합니다.

출력 결과에는 32비트로 오른쪽 정렬된 16진수 형식의 CAN 식별자가 포함되며, 그 뒤에 대괄호로 묶인 데이터 길이와 16진수 형식의 페이로드가 이어집니다.

표준 식별자는 공백으로 채워지고, 확장 식별자는 0으로 채워집니다.

일반적인 출력 예시는 다음과 같습니다:

(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)

스트림(out)에 ` frame `를 기록하고, 이에 대한 참조를 반환합니다.

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

스트림(in)에서 ` frame `를 읽어와 해당 객체에 대한 참조를 반환합니다.

© 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.