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::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 の組み合わせを格納します。
[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 フレームを構築する。
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::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-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::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フラグが設定される。フレキシブル・データ・レートは、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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。