QCanBusDevice Class

QCanBusDeviceクラスは、CANバスのインターフェース・クラスです。詳細...

Header: #include <QCanBusDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Inherits: QObject

パブリック型

struct Filter
enum CanBusDeviceState { UnconnectedState, ConnectingState, ConnectedState, ClosingState }
enum CanBusError { NoError, ReadError, WriteError, ConnectionError, ConfigurationError, …, TimeoutError }
enum class CanBusStatus { Unknown, Good, Warning, Error, BusOff }
enum ConfigurationKey { RawFilterKey, ErrorFilterKey, LoopbackKey, ReceiveOwnKey, BitRateKey, …, UserKey }
enum Direction { Input, Output, AllDirections }
flags Directions

パブリック関数

QCanBusDevice(QObject *parent = nullptr)
virtual QCanBusDevice::CanBusStatus busStatus()
void clear(QCanBusDevice::Directions direction = Direction::AllDirections)
QList<QCanBusDevice::ConfigurationKey> configurationKeys() const
QVariant configurationParameter(QCanBusDevice::ConfigurationKey key) const
bool connectDevice()
(since 6.2) virtual QCanBusDeviceInfo deviceInfo() const
void disconnectDevice()
QCanBusDevice::CanBusError error() const
QString errorString() const
qint64 framesAvailable() const
qint64 framesToWrite() const
virtual bool hasBusStatus() const
virtual QString interpretErrorFrame(const QCanBusFrame &frame) = 0
QList<QCanBusFrame> readAllFrames()
QCanBusFrame readFrame()
virtual void resetController()
virtual void setConfigurationParameter(QCanBusDevice::ConfigurationKey key, const QVariant &value)
QCanBusDevice::CanBusDeviceState state() const
virtual bool waitForFramesReceived(int msecs)
virtual bool waitForFramesWritten(int msecs)
virtual bool writeFrame(const QCanBusFrame &frame) = 0

シグナル

void errorOccurred(QCanBusDevice::CanBusError)
void framesReceived()
void framesWritten(qint64 framesCount)
void stateChanged(QCanBusDevice::CanBusDeviceState state)

保護された関数

void clearError()
virtual void close() = 0
QCanBusFrame dequeueOutgoingFrame()
void enqueueOutgoingFrame(const QCanBusFrame &newFrame)
void enqueueReceivedFrames(const QList<QCanBusFrame> &newFrames)
bool hasOutgoingFrames() const
virtual bool open() = 0
void setError(const QString &errorText, QCanBusDevice::CanBusError errorId)
void setState(QCanBusDevice::CanBusDeviceState newState)

詳細説明

QCanBusDeviceは、ユーザーに便利なAPIを提供するCANプラグインと通信します。CANプラグインはオブジェクト生成時に指定する必要があります。

メンバー型ドキュメント

enum QCanBusDevice::CanBusDeviceState

この列挙型は、可能なすべてのデバイス状態を記述します。

定数説明
QCanBusDevice::UnconnectedState0デバイスは切断されている。
QCanBusDevice::ConnectingState1デバイスは接続中です。
QCanBusDevice::ConnectedState2デバイスがCANバスに接続されている。
QCanBusDevice::ClosingState3デバイスが閉じている。

enum QCanBusDevice::CanBusError

この列挙型は、考えられるすべてのエラー状態を記述しています。

定数説明
QCanBusDevice::NoError0エラーは発生していない。
QCanBusDevice::ReadError1読み取り中にエラーが発生した。
QCanBusDevice::WriteError2書き込み操作中にエラーが発生しました。
QCanBusDevice::ConnectionError3プラグインを開こうとしてエラーが発生しました。
QCanBusDevice::ConfigurationError4設定パラメータを設定しようとしたときにエラーが発生しました。
QCanBusDevice::UnknownError5不明なエラーが発生した。
QCanBusDevice::OperationError6デバイスが許可されていない状態で操作を試みました。この列挙は Qt 5.14 で導入されました。
QCanBusDevice::TimeoutError7フレームの書き込みまたは受信の待機中にタイムアウトが発生しました。この列挙はQt 5.14で導入されました。

enum class QCanBusDevice::CanBusStatus

このenumは、可能なCANバスのステータス値を記述します。

定数説明
QCanBusDevice::CanBusStatus::Unknown0CANバスのステータスが不明(CANプラグインでサポートされていないなど)。
QCanBusDevice::CanBusStatus::Good1CANコントローラーは完全に動作可能です。
QCanBusDevice::CanBusStatus::Warning2CANコントローラーが警告ステータス
QCanBusDevice::CanBusStatus::Error3CANコントローラーがエラー状態 (CANフレームが送信されていない)
QCanBusDevice::CanBusStatus::BusOff4CANコントローラーがバスオフ状態 (CANバスから切断されている)

enum QCanBusDevice::ConfigurationKey

この列挙型には、CANバス接続のコンフィギュレーションオプションが記述されています。

定数説明
QCanBusDevice::RawFilterKey0このコンフィギュレーションは、現在のデバイスが受け入れるCANバスフレームのタイプを決定します。期待される値はQList<QCanBusDevice::Filter> です。空のリストを渡すと、デフォルト・フィルターを含め、以前に設定されたフィルターがすべてクリアされます。詳細については、QCanBusDevice::Filter を参照してください。
QCanBusDevice::ErrorFilterKey1このキーは、現在の接続を介して転送されるべきエラーのタイプを定義します。関連する値はQCanBusFrame::FrameErrors 型でなければならない。
QCanBusDevice::LoopbackKey2このキーは、CANバスデバイスがループバックモードで動作するかどうかを定義します。ループバックとは、CANバス上でCANフレームが送信されるたびに、このCANデバイスに接続されているすべてのアプリケーションに、このフレームのローカルエコーが送信されることを意味します。このキーの値はbool です。
QCanBusDevice::ReceiveOwnKey3このキーは、このCANデバイスが自身の送信フレームを受信するかどうかを定義します。これは、送信に成功したかどうかを確認するために使用できます。このキーの値はbool です。
QCanBusDevice::BitRateKey4このキーは、CANビットレートをビット/秒で定義する。CAN FDでは、QCanBusFrame::hasBitrateSwitch() が設定されている場合、ペイロードをより高いデータビットレートで送信することができる。この場合、QCanBusDevice::BitRateKey は CAN ID のアービトレーション・フェーズでのみ使用されます。以下も参照。QCanBusDevice::DataBitRateKey
QCanBusDevice::CanFdKey5このキーは、CAN FD フレームの送受信を有効にするかどうかを定義します。このキーの期待値はbool である。
QCanBusDevice::DataBitRateKey6このキーは、CAN FDのペイロードビットレート(ビット/秒)を定義します。CAN FD では、公称ビットレートでの調停フェーズが終了した後、QCanBusFrame::hasBitrateSwitch() フラグを持つフレームのペイロードを、より高いデータビットレートで送信することができます。このenum値はQt 5.9で導入されました。参照QCanBusDevice::BitRateKey
QCanBusDevice::ProtocolKey7このキーにより、別のプロトコルを指定することができます。今のところ、このパラメータは SocketCAN プラグインでのみ設定・使用できます。この enum 値は Qt 5.14 で導入されました。
QCanBusDevice::UserKey30このキーは、カスタムキーの開始範囲を定義します。最も一般的な目的は、プラットフォーム固有の設定オプションを許可することです。

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

enum QCanBusDevice::Direction
flags QCanBusDevice::Directions

この列挙型は、可能なデータ転送方向を記述します。

定数説明
QCanBusDevice::Input1入力方向。
QCanBusDevice::Output2出力方向。
QCanBusDevice::AllDirectionsInput | Output入力と出力の両方向。

Direction型はQFlags<Direction>のtypedefである。Direction値のORの組み合わせを格納する。

メンバー関数ドキュメント

[explicit] QCanBusDevice::QCanBusDevice(QObject *parent = nullptr)

指定されたparent でシリアルバスデバイスを構築する。

[virtual] QCanBusDevice::CanBusStatus QCanBusDevice::busStatus()

現在のCANバスのステータスを返す。ステータスを要求できない場合、QCanBusDevice::UnknownStatusが返されます。

注意: この関数は、すべてのCANプラグインで実装されているわけではありません。詳細については、プラグインのヘルプページを参照してください。実行時に関数hasBusStatus() を使用すると、使用するCANプラグインがCANバスステータスの要求をサポートしているかどうかをチェックできます。

hasBusStatus() およびresetController()も参照

void QCanBusDevice::clear(QCanBusDevice::Directions direction = Direction::AllDirections)

direction に応じて、デバイスの入力バッファまたは出力バッファをクリアする。

この関数は、QCanBusDevice バッファに対してのみ動作します。CANドライバまたはCANハードウェア層にすでに書き込まれているフレーム、またはこれらの層からまだ読み込まれていないフレームは、この関数ではクリアされません。

注意: 出力バッファのクリアは、バッファリングされたデバイスに対してのみ可能です。

framesAvailable()、readFrame()、framesToWrite()、writeFrame()も参照

[protected] void QCanBusDevice::clearError()

最後のデバイス・エラーに関するエラー ID と人間が読み取り可能な説明をクリアします。

CANバス実装では、この関数を使用してデバイスのエラー状態を更新する必要があります。

error()、errorOccurred()、setError()も参照

[pure virtual protected] void QCanBusDevice::close()

この関数は、CANバス接続を閉じる役割を果たします。実装では、インスタンスのstate() がQCanBusDevice::UnconnectedState に設定されていることを確認する必要があります。

この関数の最も重要なタスクは、CANデバイスへのソケットをクローズし、QCanBusDevice::setState() を呼び出すことである。

disconnectDevice()も参照のこと

QList<QCanBusDevice::ConfigurationKey> QCanBusDevice::configurationKeys() const

CAN バス接続で使用されるキーのリストを返す。

キーの意味はConfigurationKey と同じである。 キーが明示的に指定されていない場合は、該当するキーのプラットフォームのデフォルト設定が使用される。

QVariant QCanBusDevice::configurationParameter(QCanBusDevice::ConfigurationKey key) const

ConfigurationKey key に割り当てられている現在の値を返す;そうでない場合は無効なQVariant を返す。

setConfigurationParameter() およびconfigurationKeys()も参照

bool QCanBusDevice::connectDevice()

デバイスをCANバスに接続する。成功した場合はtrue を返し、そうでない場合はfalse を返す。

この関数は、実装の一部としてopen() を呼び出します。

disconnectDevice()も参照

[protected] QCanBusFrame QCanBusDevice::dequeueOutgoingFrame()

発信フレームの内部リストから次のQCanBusFrame を返します。そうでない場合は無効なQCanBusFrame を返します。返されたフレームは内部リストから削除されます。

[virtual, since 6.2] QCanBusDeviceInfo QCanBusDevice::deviceInfo() const

現在のQCanBusDevice に対するQCanBusDeviceInfo を返す。この関数がQCanBusDevice のサブクラスによって実装されていない場合、デフォルトの構築済みオブジェクトが返されます。

この関数はQt 6.2で導入されました。

void QCanBusDevice::disconnectDevice()

デバイスをCANバスから切断します。

この関数は、実装の一部としてclose() を呼び出します。

注意: この関数は、connectDevice() がtrue を返した場合にのみ呼び出すこと。

connectDevice()も参照

[protected] void QCanBusDevice::enqueueOutgoingFrame(const QCanBusFrame &newFrame)

writeFrame() でアクセスできる送信フレームの内部リストにnewFrame を追加します。

サブクラスは、新しいフレームを記述するときにこの関数を呼び出す必要があります。

[protected] void QCanBusDevice::enqueueReceivedFrames(const QList<QCanBusFrame> &newFrames)

readFrame() でアクセスできるフレームの内部リストにnewFrames を追加し、framesReceived() シグナルを出力します。

サブクラスは、フレームを受信するときにこの関数を呼び出す必要があります。

QCanBusDevice::CanBusError QCanBusDevice::error() const

最後に発生したエラーを返します。エラー値は常に最後に発生したエラーに設定され、リセットされることはありません。

setError() およびerrorString()も参照してください

[signal] void QCanBusDevice::errorOccurred(QCanBusDevice::CanBusError)

このシグナルは、エラーが発生したときに発せられます。

QString QCanBusDevice::errorString() const

最後に発生したデバイス・エラーを、人間が読める形で返します。

error()も参照

qint64 QCanBusDevice::framesAvailable() const

利用可能なフレーム数を返します。利用可能なフレームがない場合、この関数は 0 を返します。

clear()、readFrame()、readAllFrames()も参照の こと。

[signal] void QCanBusDevice::framesReceived()

このシグナルは、1つ以上のフレームを受信したときに発せられる。フレームはreadFrame() およびframesAvailable() を使用して読み込む必要がある。

qint64 QCanBusDevice::framesToWrite() const

バッファ付きデバイスの場合、この関数は書き込み待ちのフレーム数を返します。バッファリングされていないデバイスの場合、この関数は常に0を返します。

注意: CANドライバとCANハードウェア層には、追加のバッファリングがあるかもしれない。したがって、この関数がゼロを返しても、すべてのCANフレームがすでにCANバスに書き込まれているわけではない。

clear() およびwriteFrame()も参照

[signal] void QCanBusDevice::framesWritten(qint64 framesCount)

このシグナルは、フレームのペイロードがCANバスに書き込まれるたびに発行される。引数framesCount には、このペイロードに書き込まれたフレーム数が設定される。

[virtual] bool QCanBusDevice::hasBusStatus() const

CANプラグインがCANバスステータスの要求をサポートしている場合は、trueを返す。

busStatus()も参照

[protected] bool QCanBusDevice::hasOutgoingFrames() const

送信フレームの内部リストが空でなければtrue を返し、そうでなければfalse を返す。

[pure virtual] QString QCanBusDevice::interpretErrorFrame(const QCanBusFrame &frame)

frame をエラーフレームとして解釈し、エラーに関する人間が読める説明を返す。

frame がエラーフレームでない場合、返される文字列は空です。

[pure virtual protected] bool QCanBusDevice::open()

この関数はconnectDevice() から呼び出されます。サブクラスは、CANバス接続が確立できた場合はtrue を返し、そうでない場合はfalse を返す実装を提供しなければならない。QCanBusDevice の実装は、この関数のエントリー時に、デバイスのstate() がすでにQCanBusDevice::ConnectingState に設定されていることを保証する。

QCanBusDevice::UnconnectedState実装は、成功時にインスタンスのstate() がQCanBusDevice::ConnectedState に設定されていることを保証しなければならない。setState()を使用して新しいデバイスの状態を設定しなければならない。

カスタム実装は、ソケットのオープン、潜在的に必要とされるQSocketNotifier のインスタンス化、カスタムおよびデフォルトのQCanBusDevice::configurationParameter() の適用を担当する。

connectDevice()も参照のこと

QList<QCanBusFrame> QCanBusDevice::readAllFrames()

キューから全てのQCanBusFrameを返す。そうでない場合は空のQList を返す。

キューは、FIFOの原則に従って動作します。

clear()、framesAvailable()、readFrame()も参照のこと

QCanBusFrame QCanBusDevice::readFrame()

キューから次のQCanBusFrame を返す。さもなければ空のQCanBusFrame を返す。返されたフレームはキューから削除される。

キューはFIFOの原則に従って動作します。

clear()、framesAvailable()、readAllFrames()も参照

[virtual] void QCanBusDevice::resetController()

可能であれば、CANコントローラーのリセットを実行し、CANコントローラーをバスオフ状態から解放する。

注意: CANコントローラーのリセットは、実行中の通信を妨害し、完了するまでに最大1秒かかることがあります。この関数は、バスエラーから回復する場合にのみ呼び出してください。

注意: この関数は、すべてのCANプラグインに実装されているわけではありません。詳細については、プラグインのヘルプページを参照してください。

busStatus()も参照

[virtual] void QCanBusDevice::setConfigurationParameter(QCanBusDevice::ConfigurationKey key, const QVariant &value)

CANバス接続のコンフィギュレーション・パラメータkeyvalue に設定する。ポテンシャル・キーはConfigurationKey で表される。

無効なQVariant を設定することで、パラメータを設定解除することができます。 パラメータを設定解除すると、コンフィギュレーションがデフォルト設定にリセットされます。

注: ほとんどの場合、設定の変更は再接続後にのみ有効になる。

configurationParameter()も参照のこと

[protected] void QCanBusDevice::setError(const QString &errorText, QCanBusDevice::CanBusError errorId)

最後のデバイス・エラーに関する人間が読める説明をerrorText に設定します。errorId はエラーのタイプを分類します。

CANバス実装では、この関数を使用してデバイスのエラー状態を更新する必要があります。

error ()、errorOccurred ()、clearError)も参照

[protected] void QCanBusDevice::setState(QCanBusDevice::CanBusDeviceState newState)

デバイスの状態をnewState に設定する。CAN バス実装では、この関数を使用してデバイスの状態を更新する必要があります。

state()も参照

QCanBusDevice::CanBusDeviceState QCanBusDevice::state() const

デバイスの現在の状態を返す。

setState() およびstateChanged() も参照

[signal] void QCanBusDevice::stateChanged(QCanBusDevice::CanBusDeviceState state)

このシグナルは、デバイスの状態が変化するたびに発せられる。新しい状態はstate で表される。

setState() およびstate() も参照

[virtual] bool QCanBusDevice::waitForFramesReceived(int msecs)

新しいフレームが読み取り可能になり、framesReceived() シグナルが発せられるか、msecs ミリ秒が経過するまでブロックする。msecs-1 の場合、この関数はタイムアウトしない。

新しいフレームが読み取り可能でframesReceived() シグナルが発せられた場合はtrue を返し、そうでない場合はfalse を返します(操作がタイムアウトした場合、またはエラーが発生した場合)。

注意: この関数は、ローカルイベントループを開始します。このため、この関数スコープの実行がブロックされている間に、他のアプリケーション・スロットが呼び出される可能性があります。問題を避けるため、このクラスのシグナルはスロットに接続しないでください。同様に、この関数はframesReceived() やerrorOccurred() シグナルに応答して呼んではならない。

waitForFramesWritten()も参照のこと

[virtual] bool QCanBusDevice::waitForFramesWritten(int msecs)

バッファリングされたデバイスの場合、この関数は、すべてのバッファリングされたフレームがデバイスに書き込まれ、framesWritten() シグナルが発せられるまで、またはmsecs ミリ秒が経過するまで待ちます。msecs が -1 の場合、この関数はタイムアウトしません。バッファのないデバイスの場合、writeFrame ()は書き込みバッファを必要としないため、false で即座に戻る。

framesWritten() シグナルが発せられた場合はtrue を返し、そうでない場合はfalse を返す(操作がタイムアウトした場合、またはエラーが発生した場合など)。

注意: この関数はローカル・イベント・ループを開始する。このため、この関数スコープの実行がブロックされている間に、他のアプリケーション・スロットが呼び出される可能性があります。問題を避けるために、このクラスのシグナルはスロットに接続しないでください。同様に、この関数はframesWritten() やerrorOccurred() シグナルに応答して呼んではならない。

waitForFramesReceived()も参照のこと

[pure virtual] bool QCanBusDevice::writeFrame(const QCanBusFrame &frame)

frame をCANバスに書き込み、成功した場合はtrue を返し、そうでない場合はfalse を返す。

プラットフォームによっては、フレームがキューに入れられ、戻り値がキューへの挿入成功のみを示す場合もある。実際のフレームは後で送信される。したがって、framesWritten() シグナルは、フレームがトランスポート層に引き渡されたことを最終的に確認するものである。エラーが発生した場合は、errorOccurred ()が発信される。

CANバスの仕様に従い、remote transfer request (RTR) タイプのフレームはペイロードを持たず、0~8(を含む)の長さを持つ。この長さは、リモート・パーティから予想されるレスポンスのペイロード長を示します。したがって、この機能を使用して RTR フレームを送信する場合でも、frame に任意のペイロードを設定する必要がある場合があります。任意のペイロードの長さは、RTR フレームの期待サイズとして設定されるものです。

QCanBusFrame::setPayload()も参照してください

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