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 を構築します。 データはビッグエンディアンのバイトオーダーに変換され保存されます。
注意: 使用はquint8
とquint16
に限られます。これは、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.