QModbusRequest Class

QModbusRequestはModbus ADUに格納されるファンクション・コードとペイロードを含むコンテナ・クラスです。詳細...

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

パブリックな型

パブリック関数

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

静的パブリックメンバ

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

詳細説明

Modbusリクエストは通常、FunctionCode とNバイトのペイロードから構成されます。

典型的な Modbus リクエストは以下のようになります:

QModbusRequest request(QModbusRequest::WriteMultipleCoils,
    QByteArray::fromHex("0013000a02cd01"));

注: QByteArray を取るコンストラクタを使用するときは、リクエストを作成する前に、含まれるデータをビッグエンディアンバイトオーダーに変換してください。

コンパイル時に値がわかっていれば、同じリクエストをこのように作成することもできます:

quint16 startAddress = 19, numberOfCoils = 10;
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils,
    payloadInBytes, outputHigh, outputLow);

メンバー型ドキュメント

[alias] QModbusRequest::CalcFuncPtr

QModbusRequest::calculateDataSize と同じシグネチャを持つカスタム電卓関数へのポインタのための型定義。

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

[constexpr noexcept] QModbusRequest::QModbusRequest()

無効な QModbusRequest を構築します。

QModbusRequest::QModbusRequest(const QModbusPdu &pdu)

pdu のコピーを作成する。

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

ファンクションコードがcode に設定され、ペイロードがdata に設定された QModbusRequest を構築します。 データはビッグエンディアンのバイトオーダーに変換され保存されます。

注意: 使用はquint8quint16 に限られます。これは、QDataStream ストリーム・オペレータが生データを追加するだけでなく、複雑なタイプの場合はサイズやカウントなども追加するためです。

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

関数コードをcode に設定し、ペイロードをdata に設定したQModbusResponse を構築する。 データはすでにビッグエンディアンのバイトオーダーで格納されていることが期待される。

[static] int QModbusRequest::calculateDataSize(const QModbusRequest &request)

リクエストのファンクションコードとデータに基づいて、request に期待されるデータサイズを計算する。サイズが正しく計算できなかった場合は-1 を返します。

minimumDataSize およびregisterDataSizeCalculatorも参照のこと

[static] int QModbusRequest::minimumDataSize(const QModbusRequest &request)

リクエストのファンクションコードに基づき、request 、予想される最小データサイズを返す。ファンクションコードがわからない場合は、-1

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

この関数は、関数コードfc のリクエストデータサイズを計算するユーザー定義実装を登録する。この関数は、QModbusRequest::calculateDataSize()内の実装を拡張またはオーバーライド するために使用できる。

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

int myCalculateDataSize(const QModbusRequest &pdu);

関連する非会員

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

stream からpdu を読み取り、ストリームへの参照を返す。

注意: この関数は、関数コードQModbusPdu::Diagnostics またはQModbusPdu::EncapsulatedInterfaceTransport を持つ PDU を正しくストリーミングできないことがある。特に、PDUが診断/カプセル化リクエスト自体で終わらないストリームに埋め込まれている場合に発生する可能性があります。

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