QCanBusFrame Class

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

Header: #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()도 참조하세요 .

멤버 유형 문서

열거형 QCanBusFrame::FrameError
플래그 QCanBusFrame::FrameErrors

이 열거형은 가능한 에러 유형을 설명합니다.

Constant설명
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 프레임의 유형을 설명합니다.

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

frameType() 및 setFrameType()도 참조하세요 .

멤버 함수 문서

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

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

QCanBusFrame::FrameTypesetFrameType()도 참조하세요 .

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

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

QCanBusFrame::FrameId도 참조하세요 .

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

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

QCanBusFrame::FrameErrorsetError()도 참조하세요 .

[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::FrameTypesetFrameType()도 참조하세요 .

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

CAN이 더 높은 데이터 비트 전송률로 페이로드 데이터를 전송하기 위해 비트 전송률 스위치가 있는 유연한 데이터 전송률을 사용하는 경우 true 을 반환합니다.

setBitrateSwitch() 및 QCanBusDevice::DataBitRateKey도 참조하세요 .

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

CAN이 오류 상태 표시기가 설정된 유연한 데이터 전송률을 사용하는 경우 true 을 반환합니다.

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

setErrorStateIndicator()도 참조하세요 .

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

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

setExtendedFrameFormat() 및 frameId()도 참조하세요 .

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

CAN 프레임이 최대 64바이트의 데이터 바이트를 허용하는 유연한 데이터 전송률을 사용하는 경우 true 을 반환하고, 그렇지 않으면 최대 8바이트의 페이로드를 의미하는 false 을 반환합니다.

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, hasExtendedFrameFormat()가 설정되지 않았지만 frameId()가 11비트보다 길거나 유연한 데이터 전송률 모드가 활성화된 경우 페이로드가 최대 허용 페이로드 길이인 64바이트, 비활성화된 경우 8바이트보다 긴 경우 false 를 반환합니다. frameType ()가 RemoteRequestFrame 이고 동시에 유연한 데이터 전송률 모드가 활성화된 경우 false 도 반환됩니다.

그렇지 않으면 이 함수는 true 을 반환합니다.

QByteArray QCanBusFrame::payload() const

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

setPayload()도 참조하세요 .

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

유연한 데이터 전송률 플래그 비트레이트 전환 플래그를 bitrateSwitch 로 설정합니다. 이 플래그가 있는 프레임의 데이터 필드는 더 높은 데이터 비트레이트로 전송됩니다.

hasBitrateSwitch() 및 QCanBusDevice::DataBitRateKey참조하세요 .

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

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

QCanBusFrame::FrameErrorerror()도 참조하세요 .

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

유연한 데이터 전송률 플래그 오류 상태 표시기 플래그를 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비트까지 확장할 수 있습니다. CAN 확장 프레임 포맷 설정은 크기가 11비트 이상인 newFrameId 이 주어지면 자동으로 설정됩니다.

포맷이 확장되어 최대 11비트 이하의 newFrameId 을 전달하면 CAN 확장 프레임 포맷 설정은 변경되지 않습니다.

QCanBusFrame::FrameId, frameId() 및 hasExtendedFrameFormat()도 참조하세요 .

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

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

QCanBusFrame::FrameTypeframeType()도 참조하세요 .

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

로컬 에코 플래그를 echo 로 설정합니다.

QCanBusDevice::ReceiveOwnKey 을 활성화한 상태에서 CAN 버스 프레임을 전송하면 성공적으로 전송된 모든 프레임이 수신 대기열에 에코되고 로컬 에코 프레임으로 표시됩니다. 따라서 QCanBusFrame::setLocalEcho 은 가상 CAN 버스와 같은 애플리케이션 테스트에만 사용해야 합니다.

hasLocalEcho()도 참조하세요 .

void QCanBusFrame::setPayload(const QByteArray &data)

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

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::TimeStampQCanBusFrame::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 을 읽고 이에 대한 참조를 반환합니다.

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