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::FrameId 、QCanBusFrame::TimeStamp 、およびpayload()も参照してください 。
メンバ型ドキュメント
enum QCanBusFrame::FrameError
flags 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>のtypedefです。これは、FrameError 値の OR の組み合わせを格納します。
error() およびsetError()も参照してください 。
[alias]
QCanBusFrame::FrameId
11ビットまたは29ビットのCANバスフレーム識別子。
frameId() およびsetFrameId()も参照 。
enum QCanBusFrame::FrameType
この列挙型は、CAN フレームのタイプを記述します。
定数 | 値 | 説明 |
---|---|---|
QCanBusFrame::UnknownFrame | 0x0 | フレームタイプは不明です。 |
QCanBusFrame::DataFrame | 0x1 | この値はデータフレームを表します。 |
QCanBusFrame::ErrorFrame | 0x2 | この値はエラー・フレームを表します。 |
QCanBusFrame::RemoteRequestFrame | 0x3 | この値はリモート・リクエストを表します。 |
QCanBusFrame::InvalidFrame | 0x4 | この値は無効なフレームを表します。この型はエラー報告に使用されます。 |
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 フレームを構築する。
[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-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::FrameId 、frameId ()、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.