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) |
メンバー型ドキュメント
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 | フレームの書き込みまたは受信の待機中にタイムアウトが発生しました。この列挙はQt 5.14で導入されました。 |
enum class QCanBusDevice::CanBusStatus
このenumは、可能な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 | 入力と出力の両方向。 |
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バス接続のコンフィギュレーション・パラメータ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)
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。