QModbusClient Class
QModbusClient クラスは、Modbus リクエストを送信するためのインターフェースです。詳細...
| ヘッダー: | #include <QModbusClient> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| 継承元: | QModbusDevice |
| 継承元: |
パブリック関数
| QModbusClient(QObject *parent = nullptr) | |
| int | numberOfRetries() const |
| QModbusReply * | sendRawRequest(const QModbusRequest &request, int serverAddress) |
| QModbusReply * | sendReadRequest(const QModbusDataUnit &read, int serverAddress) |
| QModbusReply * | sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress) |
| QModbusReply * | sendWriteRequest(const QModbusDataUnit &write, int serverAddress) |
| void | setNumberOfRetries(int number) |
| void | setTimeout(int newTimeout) |
| int | timeout() const |
シグナル
| void | timeoutChanged(int newTimeout) |
保護された関数
| virtual bool | processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data) |
| virtual bool | processResponse(const QModbusResponse &response, QModbusDataUnit *data) |
詳細な説明
QModbusClient API は、1 つの QModbusClient オブジェクトを中心に構成されており、このオブジェクトは、送信するリクエストの共通構成および設定を保持します。Qt アプリケーション全体では、1 つの QModbusClient で十分です。
QModbusClient オブジェクトが作成されると、アプリケーションはそれを使用してリクエストを送信できます。返されたオブジェクトは、対応するリクエストへの応答として返されたデータを取得するために使用されます。
QModbusClient は非同期 API を採用しています。finished スロットが呼び出されると、その引数として、PDU およびメタデータ(アドレス指定など)を含む `QModbusReply ` オブジェクトが渡されます。
注:QModbusClient は受信したリクエストをキューに入れます。並列に実行されるリクエストの数はプロトコルによって異なります。たとえば、デスクトッププラットフォーム上の HTTP プロトコルでは、1 つのホスト/ポートの組み合わせに対して 6 つのリクエストが並列に発行されます。
メンバ関数のドキュメント
[explicit] QModbusClient::QModbusClient(QObject *parent = nullptr)
指定されたparent を使用して、Modbusクライアントデバイスを構築します。
int QModbusClient::numberOfRetries() const
クライアントがリクエストを失敗とするまでに実行する再試行の回数を返します。デフォルト値は `3` に設定されています。
setNumberOfRetries()も参照してください 。
[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
カスタムModbusクライアントの実装によって実装される。デフォルトの実装では、response およびdata を無視する。エラーを示すため、常にfalseを返す。
[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Modbusサーバーのresponse を処理し、デコードされた情報をdata に格納します。成功した場合はtrue を返し、失敗した場合はfalse を返します。
注:デフォルトの実装では 、すべてのFunctionCodeをサポートしているわけではありません。必要な機能を処理するには、カスタム Modbus クライアントの実装でこのメソッドをオーバーライドしてください。
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
生のModbusリクエスト(request )を送信します。生のリクエストには、Modbus PDUのデータセクションに収まり、有効なファンクションコードを持つものであれば、どのような内容でも含めることができます。したがって、送信前に実行されるチェックは有効性チェックのみです(QModbusPdu::isValid を参照)。エラーが発生しなかった場合、この関数は新しい有効なQModbusReply を返します。エラーが発生した場合はnullptrを返します。Modbusネットワークには複数のサーバーが存在する場合があり、各サーバーは一意のserverAddress を持ちます。
QModbusReply::rawResult()も参照してください 。
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
read が指すデータのコンテンツを読み取るリクエストを送信します。エラーが発生しなかった場合は、新しい有効なQModbusReply オブジェクトを返し、エラーが発生した場合はnullptrを返します。Modbusネットワークには複数のサーバーが存在する場合があり、各サーバーには一意のserverAddress が割り当てられています。
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Modbus関数コードQModbusPdu::ReadWriteMultipleRegisters を使用して、read が指すデータの読み取りおよびwrite が指すデータの書き込みリクエストを送信します。エラーが発生しなかった場合は、新しい有効なQModbusReply オブジェクトを返し、エラーが発生した場合はnullptrを返します。Modbusネットワークには複数のサーバーが存在する場合があり、各サーバーには一意のserverAddress が割り当てられています。
注: この種のリクエストの送信は、 read とwrite の両方がQModbusDataUnit::HoldingRegisters 型である場合にのみ有効です。
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
write が指すデータのコンテンツを変更するリクエストを送信します。エラーが発生しなかった場合は、新しい有効なQModbusReply オブジェクトを返し、エラーが発生した場合はnullptrを返します。Modbusネットワークには複数のサーバーが存在する場合があり、各サーバーには一意のserverAddress が割り当てられています。
void QModbusClient::setNumberOfRetries(int number)
クライアントがリクエストを失敗とする前に試行する再試行のnumber を設定します。デフォルト値は3 に設定されています。
注: 新しい値は 、0 以上でなければなりません。このプロパティを変更しても、すでにスケジュールされているリクエストには影響せず、新しいリクエストにのみ影響します。
「numberOfRetries()」も参照してください 。
void QModbusClient::setTimeout(int newTimeout)
このQModbusClient インスタンスの「newTimeout 」を設定します。タイムアウトの最小値は 10 ミリ秒です。
このタイムアウトは、クライアントがサーバーからの応答を待機する時間を決定するために使用されます。指定されたタイムアウト内に応答が受信されない場合、TimeoutError が設定されます。
すでにアクティブまたは実行中のタイムアウトは、このようなタイムアウト期間の変更の影響を受けません。
「 timeout 」および「timeoutChanged()」も参照してください 。
int QModbusClient::timeout() const
このQModbusClient インスタンスで使用されるタイムアウト値をミリ秒単位で返します。タイムアウトはTimeoutError で指定されます。デフォルト値は1000ミリ秒です。
「 setTimeout 」および「timeoutChanged()」も参照してください 。
[signal] void QModbusClient::timeoutChanged(int newTimeout)
このシグナルは、このQModbusClient インスタンスで使用されるタイムアウトが変更されたときに発火します。デバイスの新しい応答タイムアウトは、newTimeout として渡されます。
setTimeout()も参照してください 。
© 2026 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.