QCanBusFrame Class

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

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ビット。

フレームが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-RatewithError State Indicatorを使用している場合、true を返す。

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

setErrorStateIndicator()も参照

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

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

setExtendedFrameFormat() およびframeId() も参照

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

CAN フレームがフレキシブル・データレートFlexible Data-Rate)を使用している場合は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 ビットより長いか、ペイロードが最大許容ペイロード長である 64 バイト(フレキシブル・データ・レート・モードが有効な場合は 64 バイト、無効な場合は 8 バイト)より長いが、hasExtendedFrameFormat() が設定されていない場合、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)

フレキシブル・データ・レート・フラグを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フラグが設定される。フレキシブル・データ・レートは、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 を読み取り、その参照を返します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。