QCanBusDevice Class
QCanBusDeviceクラスは、CANバスのインターフェース・クラスです。詳細...
ヘッダー | #include <QCanBusDevice> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
継承: | 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) |
メンバー型ドキュメント
enum QCanBusDevice::CanBusDeviceState
この列挙型は、可能なすべてのデバイス状態を記述する。
定数 | 値 | 説明 |
---|---|---|
QCanBusDevice::UnconnectedState | 0 | デバイスは切断されている。 |
QCanBusDevice::ConnectingState | 1 | デバイスは接続されている。 |
QCanBusDevice::ConnectedState | 2 | デバイスがCANバスに接続されている。 |
QCanBusDevice::ClosingState | 3 | デバイスが閉じている。 |
enum QCanBusDevice::CanBusError
この列挙型は、起こりうるすべてのエラー状態を記述する。
定数 | 値 | 説明 |
---|---|---|
QCanBusDevice::NoError | 0 | エラーは発生していない。 |
QCanBusDevice::ReadError | 1 | 読み取り中にエラーが発生した。 |
QCanBusDevice::WriteError | 2 | 書き込み操作中にエラーが発生しました。 |
QCanBusDevice::ConnectionError | 3 | プラグインを開こうとしてエラーが発生しました。 |
QCanBusDevice::ConfigurationError | 4 | 設定パラメータを設定しようとしたときにエラーが発生しました。 |
QCanBusDevice::UnknownError | 5 | 不明なエラーが発生した。 |
QCanBusDevice::OperationError | 6 | デバイスが許可されていない状態で操作を試みました。この列挙は Qt 5.14 で導入されました。 |
QCanBusDevice::TimeoutError | 7 | フレームの書き込みまたは受信の待機中にタイムアウトが発生しました。この enum は Qt 5.14 で導入されました。 |
enum class QCanBusDevice::CanBusStatus
この列挙型は、CAN バスのステータス値について記述します。
定数 | 値 | 説明 |
---|---|---|
QCanBusDevice::CanBusStatus::Unknown | 0 | CANバスのステータスが不明(CANプラグインでサポートされていないなど)。 |
QCanBusDevice::CanBusStatus::Good | 1 | CANコントローラーは完全に動作可能です。 |
QCanBusDevice::CanBusStatus::Warning | 2 | CANコントローラーが警告ステータス |
QCanBusDevice::CanBusStatus::Error | 3 | CANコントローラーがエラー状態 (CANフレームが送信されていない) |
QCanBusDevice::CanBusStatus::BusOff | 4 | CANコントローラーがバスオフ状態(CANバスから切断されている) |
enum QCanBusDevice::ConfigurationKey
この列挙型は、CANバス接続に可能なコンフィギュレーション・オプションを記述します。
定数 | 値 | 説明 |
---|---|---|
QCanBusDevice::RawFilterKey | 0 | このコンフィギュレーションは、現在のデバイスが受け入れる CAN バスフレームのタイプを決定します。期待される値はQList<QCanBusDevice::Filter> です。空のリストを渡すと、デフォルト・フィルターを含め、以前に設定されたすべてのフィルターがクリアされます。詳細については、QCanBusDevice::Filter を参照してください。 |
QCanBusDevice::ErrorFilterKey | 1 | このキーは、現在の接続を介して転送されるべきエラーのタイプを定義します。関連する値はQCanBusFrame::FrameErrors 型でなければならない。 |
QCanBusDevice::LoopbackKey | 2 | このキーは、CANバスデバイスがループバックモードで動作するかどうかを定義します。ループバックとは、CANバス上でCANフレームが送信されるたびに、このCANデバイスに接続されているすべてのアプリケーションに、このフレームのローカルエコーが送信されることを意味します。このキーの値はbool です。 |
QCanBusDevice::ReceiveOwnKey | 3 | このキーは、このCANデバイスが自身の送信フレームを受信するかどうかを定義します。これは、送信に成功したかどうかを確認するために使用できます。このキーの値はbool です。 |
QCanBusDevice::BitRateKey | 4 | このキーは、CANビットレートをビット毎秒で定義する。CAN FDでは、QCanBusFrame::hasBitrateSwitch() が設定されている場合、ペイロードをより高いデータビットレートで送信することができる。この場合、QCanBusDevice::BitRateKey は CAN ID のアービトレーション・フェーズでのみ使用されます。以下も参照。QCanBusDevice::DataBitRateKey |
QCanBusDevice::CanFdKey | 5 | このキーは、CAN FD フレームの送受信を有効にするかどうかを定義します。このキーの期待値はbool である。 |
QCanBusDevice::DataBitRateKey | 6 | このキーは、CAN FDのペイロードビットレート(ビット/秒)を定義します。CAN FD では、公称ビットレートでの調停フェーズが終了した後、QCanBusFrame::hasBitrateSwitch() フラグを持つフレームのペイロードを、より高いデータビットレートで送信することができます。このenum値はQt 5.9で導入されました。参照QCanBusDevice::BitRateKey |
QCanBusDevice::ProtocolKey | 7 | このキーにより、別のプロトコルを指定することができます。今のところ、このパラメータは SocketCAN プラグインでのみ設定・使用できます。この enum 値は Qt 5.14 で導入されました。 |
QCanBusDevice::UserKey | 30 | このキーは、カスタムキーの開始範囲を定義します。最も一般的な目的は、プラットフォーム固有の設定オプションを許可することです。 |
configurationParameter()も参照してください 。
enum QCanBusDevice::Direction
flags QCanBusDevice::Directions
この列挙型は、可能なデータ転送方向を記述します。
定数 | 値 | 説明 |
---|---|---|
QCanBusDevice::Input | 1 | 入力方向。 |
QCanBusDevice::Output | 2 | 出力方向。 |
QCanBusDevice::AllDirections | Input | Output | 入力と出力の両方向。 |
Directions型は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
バッファ付きデバイスの場合、この関数は書き込み待ちフレーム数を返す。バッファリングされていないデバイスの場合、この関数は常にゼロを返す。
注意: 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()
全てのQCanBusFrames をキューから返す。そうでなければ、空の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バス接続のコンフィギュレーション・パラメータkey をvalue に設定する。ポテンシャル・キーは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 で表される。
[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)
CANバスにframe を書き込み、成功した場合はtrue
を返す。そうでない場合はfalse
。
プラットフォームによっては、フレームがキューに入れられ、戻り値がキューへの挿入の成功のみを示す場合もある。実際のフレームは後で送信される。したがって、framesWritten() シグナルは、フレームがトランスポート層に引き渡されたことを最終的に確認するものである。エラーが発生した場合は、errorOccurred ()が発信される。
CANバスの仕様に従い、remote transfer request (RTR) タイプのフレームはペイロードを持たず、0~8(を含む)の長さを持つ。この長さは、リモート・パーティから予想されるレスポンスのペイロード長を示します。したがって、この機能を使用して RTR フレームを送信する場合でも、frame に任意のペイロードを設定する必要がある場合があります。任意のペイロードの長さは、RTR フレームの期待サイズとして設定されるものです。
QCanBusFrame::setPayload()も参照のこと 。
© 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.