이 페이지에서

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 을 설명하는 1바이트와 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 와 동일한 시그니처를 갖는 사용자 정의 계산기 함수 포인터에 대한 typedef입니다.

멤버 함수 문서

[constexpr noexcept default] 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 를 읽고 스트림에 대한 참조를 반환합니다.

참고: 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.