QModbusRequest Class
QModbusRequestはModbus ADUに格納されるファンクション・コードとペイロードを含むコンテナ・クラスです。詳細...
Header: | #include <QModbusRequest> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
Inherits: | 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が診断/カプセル化リクエスト自体で終わらないストリームに埋め込まれている場合に発生する可能性があります。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。