QModbusClient Class

QModbusClient 클래스는 모드버스 요청을 전송하는 인터페이스입니다. 더 보기...

헤더: #include <QModbusClient>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
상속합니다: QModbusDevice
상속 대상

QModbusRtuSerialClientQModbusTcpClient

공용 함수

QModbusClient(QObject *parent = nullptr)
int numberOfRetries() const
QModbusReply *sendRawRequest(const QModbusRequest &request, int serverAddress)
QModbusReply *sendReadRequest(const QModbusDataUnit &read, int serverAddress)
QModbusReply *sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
QModbusReply *sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
void setNumberOfRetries(int number)
void setTimeout(int newTimeout)
int timeout() const

시그널

void timeoutChanged(int newTimeout)

보호된 함수

virtual bool processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
virtual bool processResponse(const QModbusResponse &response, QModbusDataUnit *data)

상세 설명

QModbusClient API는 전송하는 요청에 대한 공통 구성 및 설정을 보유하는 하나의 QModbusClient 객체를 중심으로 구성됩니다. 하나의 QModbusClient는 전체 Qt 어플리케이션에 충분합니다.

QModbusClient 객체가 생성되면, 어플리케이션은 이를 사용하여 요청을 전송할 수 있습니다. 반환된 객체는 해당 요청에 대한 응답으로 반환된 모든 데이터를 얻는 데 사용됩니다.

QModbusClient에는 비동기 API가 있습니다. 완성된 슬롯이 호출될 때 받는 파라미터는 PDU와 메타 데이터(주소 지정 등)를 포함하는 QModbusReply 객체입니다.

참고: QModbusClient는 수신한 요청을 큐에 대기시킵니다. 병렬로 실행되는 요청의 수는 프로토콜에 따라 다릅니다. 예를 들어, 데스크톱 플랫폼의 HTTP 프로토콜은 하나의 호스트/포트 조합에 대해 6개의 요청을 병렬로 실행합니다.

멤버 함수 문서

[explicit] QModbusClient::QModbusClient(QObject *parent = nullptr)

지정된 parent 으로 모드버스 클라이언트 장치를 구축합니다.

int QModbusClient::numberOfRetries() const

요청이 실패하기 전에 클라이언트가 수행할 재시도 횟수를 반환합니다. 기본값은 3 로 설정되어 있습니다.

setNumberOfRetries()도 참조하세요 .

[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)

사용자 지정 모드버스 클라이언트 구현으로 구현합니다. 기본 구현은 responsedata 을 무시합니다. 항상 오류를 나타내는 false를 반환합니다.

[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)

모드버스 서버 response 를 처리하고 디코딩된 정보를 data 에 저장합니다. 성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

참고: 기본 구현은 모든 FunctionCode를 지원하지 않습니다. 필요한 기능을 처리하려면 사용자 정의 모드버스 클라이언트 구현에서 이 메서드를 재정의하세요.

QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)

원시 모드버스 request 를 전송합니다. 원시 요청에는 모드버스 PDU 데이터 섹션에 맞고 유효한 기능 코드가 있는 모든 것이 포함될 수 있습니다. 따라서 전송 전에 수행되는 유일한 검사는 유효성 검사( QModbusPdu::isValid 참조)입니다. 오류가 발생하지 않으면 이 함수는 유효한 새 QModbusReply; 그렇지 않으면 nullptr을 반환합니다. 모드버스 네트워크에는 여러 서버가 있을 수 있으며, 각 서버에는 고유한 serverAddress.

QModbusReply::rawResult()도 참조하세요 .

QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)

read 이 가리키는 데이터의 내용을 읽으라는 요청을 보냅니다. 오류가 발생하지 않으면 유효한 새 QModbusReply 객체를 반환하고, 그렇지 않으면 nullptr을 반환합니다. 모드버스 네트워크에는 여러 서버가 있을 수 있으며, 각 서버에는 고유한 serverAddress.

QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)

read 에서 가리키는 데이터의 내용을 읽고 write 에서 가리키는 데이터의 내용을 수정하기 위한 요청을 모드버스 함수 코드 QModbusPdu::ReadWriteMultipleRegisters 를 사용하여 전송합니다. 오류가 발생하지 않으면 유효한 새 QModbusReply 객체를 반환하고, 그렇지 않으면 nullptr을 반환합니다. 모드버스 네트워크에는 여러 서버가 있을 수 있으며, 각 서버에는 고유한 serverAddress.

참고: : 이러한 종류의 요청을 보내는 것은 readwrite 모두 QModbusDataUnit::HoldingRegisters 유형일 때만 유효합니다.

QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)

write 이 가리키는 데이터의 내용을 수정하라는 요청을 보냅니다. 오류가 발생하지 않으면 유효한 새 QModbusReply 객체를 반환하고, 그렇지 않으면 nullptr을 반환합니다. 모드버스 네트워크에는 여러 서버가 있을 수 있으며, 각 서버에는 고유한 serverAddress.

void QModbusClient::setNumberOfRetries(int number)

요청이 실패하기 전에 클라이언트가 수행할 재시도 횟수( number )를 설정합니다. 기본값은 3 으로 설정됩니다.

참고: 새 값은 0 보다 크거나 같아야 합니다. 이 속성을 변경하면 이미 예약된 요청이 아닌 새 요청에만 영향을 미칩니다.

numberOfRetries()도 참조하세요 .

void QModbusClient::setTimeout(int newTimeout)

QModbusClient 인스턴스에 대해 newTimeout 을 설정합니다. 최소 시간 제한은 10밀리초입니다.

이 시간 제한은 클라이언트가 서버의 응답을 기다리는 시간을 결정하는 데 사용됩니다. 필요한 시간 제한 내에 응답을 받지 못하면 TimeoutError 이 설정됩니다.

이미 활성/실행 중인 타임아웃은 이러한 타임아웃 기간 변경의 영향을 받지 않습니다.

timeouttimeoutChanged()도 참조하세요 .

int QModbusClient::timeout() const

QModbusClient 인스턴스에서 사용한 시간 초과 값을 ms 단위로 반환합니다. 타임아웃은 TimeoutError 으로 표시됩니다. 기본값은 1000ms입니다.

setTimeouttimeoutChanged()도 참조하세요 .

[signal] void QModbusClient::timeoutChanged(int newTimeout)

이 신호는 이 QModbusClient 인스턴스에서 사용하는 시간 제한이 변경될 때 발생합니다. 장치의 새 응답 시간 제한은 newTimeout 로 전달됩니다.

setTimeout()도 참조하세요 .

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