QCanBusFrame Class

QCanBusFrameは、1つの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は、読み込まれた瞬間のタイムスタンプを含む。

QCanBusFrame::FrameIdQCanBusFrame::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::FrameIdsetFrameId()、hasExtendedFrameFormat()も参照

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

フレームの型を返す。

QCanBusFrame::FrameType およびsetFrameType()も参照

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

CANがFlexible Data-RatewithBitrate Switchを使用し、ペイロードデータをより高いデータビットレートで転送する場合、true を返す。

setBitrateSwitch() およびQCanBusDevice::DataBitRateKeyも参照

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

CAN がFlexible Data-Rate を使用し、Error State Indicator が設定されている場合、true を返す。

このフラグはトランスミッターのCAN FDハードウェアによって設定され、トランスミッターのエラー状態を示します。

setErrorStateIndicator()も参照

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

CANフレームが29ビットの識別子を使用している場合、true を返す。そうでない場合、false 、11ビットの識別子を意味する。

setExtendedFrameFormat() およびframeId()も参照のこと

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

CANフレームがFlexible Data-Rateを使用しており、最大64バイトのデータが可能な場合はtrue を返し、そうでない場合は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 である場合、frameId() が11ビットより長いにもかかわらずhasExtendedFrameFormat() が設定されていない場合、またはペイロードがフレキシブル・データ・レート・モードが有効な場合は最大許容ペイロード長64バイト、無効な場合は8バイトより長い場合、false を返す。frameType() がRemoteRequestFrame であり、同時にフレキシブル・データ・レート・モードが有効になっている場合、false も返される。

そうでない場合、この関数はtrue を返す。

QByteArray QCanBusFrame::payload() const

フレームのデータペイロードを返します。

setPayload()も参照

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

Flexible Data-RateflagBitrate 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-RateflagError 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)

Flexible Data-RateフラグをisFlexibleData に設定する。これらのフレームは、サポートするコントローラでより高速に送信できる。さらに、ペイロード長の制限が64バイトに引き上げられる。

hasFlexibleDataRateFormat()も参照のこと

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

CAN フレームの識別子をnewFrameId に設定する。

CANフレーム識別子の最大サイズは11ビットで、CAN拡張フレームフォーマットに対応することで最大29ビットまで拡張することができます。11ビットを超えるサイズのnewFrameId を指定すると、CAN拡張フレームフォーマットの設定が自動的に設定されます。

フォーマットが拡張され、11ビット以下のnewFrameId が渡された場合、CAN拡張フレームフォーマットの設定は変更されない

QCanBusFrame::FrameIdframeId ()、hasExtendedFrameFormat)も参照

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

フレームのタイプをnewType に設定する。

QCanBusFrame::FrameType およびframeType()も参照のこと

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

ローカル・エコー・フラグをecho に設定します。

QCanBusDevice::ReceiveOwnKey を有効にしてCANバスフレームを送信すると、正常に送信されたフレームはすべて受信キューにエコーされ、ローカルエコーフレームとしてマークされます。したがって、QCanBusFrame::setLocalEcho は、仮想CANバスなどのアプリケーションテストにのみ使用する必要があります。

hasLocalEcho()も参照してください

void QCanBusFrame::setPayload(const QByteArray &data)

CAN フレームのペイロードとしてdata を設定する。ペイロードの最大サイズは8バイトであり、Flexible Data-Rateをサポートすることで最大64バイトまで拡張できる。data に 8 バイト以上のデータが入っている場合、自動的にFlexible Data-Rateフラグが設定される。Flexible Data-Rateは、QCanBusDevice::CanFdKey を設定することにより、QCanBusDevice で有効にする必要がある。

タイプRemoteRequestFrame (RTR)のフレームはペイロードを持たない。しかし、レスポンスの予想ペイロード長を示す必要がある。期待される長さを設定するには、応答の期待されるペイロード長と一致する長さの 偽のペイロードを設定する必要がある。これを行う1つの方法は以下のようなものである:

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

payload() とhasFlexibleDataRateFormat()も参照のこと

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

CANフレームのタイムスタンプとしてts 。通常、タイムスタンプは読み取り時に作成され、書き込み時には必要ないため、この関数は不要である。

timeStamp() およびQCanBusFrame::TimeStampも参照

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

フレームのタイムスタンプを返します。

QCanBusFrame::TimeStamp およびQCanBusFrame::setTimeStamp()も参照

QString QCanBusFrame::toString() const

CANフレームをフォーマットされた文字列として返す。

出力には、32ビットに右寄せされた16進数形式のCAN識別子、角括弧内のデータ長、16進数形式のペイロードが含まれる。

標準識別子はスペースで埋められ、拡張識別子はゼロで埋められます。

典型的な出力は以下の通り:

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

ストリーム (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.