このページでは

QModbusResponse Class

QModbusResponse は、Modbus ADU 内に格納される機能コードとペイロードを含むコンテナクラスです。詳細...

ヘッダー: #include <QModbusResponse>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
継承元: QModbusPdu
継承元:

QModbusExceptionResponse

パブリック型

パブリック関数

QModbusResponse()
QModbusResponse(const QModbusPdu &pdu)
QModbusResponse(QModbusPdu::FunctionCode code, Args... data)
QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())

静的パブリックメンバー

int calculateDataSize(const QModbusResponse &response)
int minimumDataSize(const QModbusResponse &response)
void registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)

詳細な説明

典型的な Modbus 応答は、次のような形式になります:

QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));

注: QByteArray を受け取るコンストラクタを使用する場合は 、リクエストを作成する前に、その中に含まれるデータをビッグエンディアンバイト順に変換するようにしてください。

コンパイル時に値が分かっている場合は、同じ応答を次のように作成できます:

quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);

メンバ型のドキュメント

[alias] QModbusResponse::CalcFuncPtr

QModbusResponse::calculateDataSize と同じシグネチャを持つ、カスタム計算関数へのポインタの typedef。

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

[constexpr noexcept default] QModbusResponse::QModbusResponse()

無効な QModbusResponse を作成します。

QModbusResponse::QModbusResponse(const QModbusPdu &pdu)

pdu のコピーを作成します。

template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)

関数コードをcode 、ペイロードをdata に設定したQModbusResponseを生成します。データは変換され、ビッグエンディアンバイト順で格納されます。

注:使用は quint8 およびquint16 に限定されます。これは、QDataStream のストリーム演算子が、生データだけでなく、複合型の場合にはサイズやカウントなども付加してしまうためです。

[explicit] QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())

関数コードをcode 、ペイロードをdata に設定したQModbusResponseを生成します。データはすでにビッグエンディアンバイト順で格納されているものと想定されます。

[static] int QModbusResponse::calculateDataSize(const QModbusResponse &response)

response の予想データサイズを、レスポンスの関数コードとデータに基づいて計算します。レスポンスのデータ部分の全サイズを返します。サイズを正しく計算できなかった場合は、-1 を返します。

「 minimumDataSize 」および「registerDataSizeCalculator 」も参照してください 。

[static] int QModbusResponse::minimumDataSize(const QModbusResponse &response)

レスポンスのファンクションコードに基づいて、response の予想される最小データサイズを返します。ファンクションコードが不明な場合は、-1 を返します。

[static] void QModbusResponse::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)

この関数は、関数コード `fc` の応答データサイズを計算するためのユーザー定義の実装を登録します。これは、QModbusResponse::calculateDataSize() 内の実装を拡張または上書きするために使用できます。

CalcFuncPtr は、以下のシグネチャを持つカスタムcalculator 関数へのポインタのtypedefです。

int myCalculateDataSize(const QModbusResponse &pdu);

関連する非メンバー

QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)

stream からpdu を読み込み、そのストリームへの参照を返します。

注: PDU内にサイズインジケータが欠落している場合、この関数は 、関数コードQModbusPdu::Diagnostics またはQModbusPdu::EncapsulatedInterfaceTransport を持つPDUを正しくストリーム処理できない可能性があります。特に、PDUが、診断/カプセル化リクエスト自体で終わらないストリームに埋め込まれている場合に、この現象が発生する可能性があります。

© 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.