QModbusClient Class
QModbusClient 클래스는 Modbus 요청을 전송하기 위한 인터페이스입니다. 더 보기...
| 헤더: | #include <QModbusClient> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| 상속: | QModbusDevice |
| 상속받는 항목: |
공개 함수
| 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 객체를 중심으로 구성되어 있으며, 이 객체는 전송할 요청에 대한 공통 구성 및 설정을 보관합니다. 전체 Qt 애플리케이션에는 하나의 QModbusClient 객체면 충분합니다.
QModbusClient 객체가 생성되면, 애플리케이션은 이를 사용하여 요청을 보낼 수 있습니다. 반환된 객체는 해당 요청에 대한 응답으로 반환된 데이터를 가져오는 데 사용됩니다.
QModbusClient는 비동기 API를 제공합니다. finished 슬롯이 호출되면, 이 슬롯이 받는 매개변수는 PDU와 메타데이터(주소 지정 등)를 포함하는 ` QModbusReply ` 객체입니다.
참고: QModbusClient는 수신한 요청을 큐에 넣습니다. 병렬로 실행되는 요청의 수는 프로토콜에 따라 다릅니다. 예를 들어, 데스크톱 플랫폼의 HTTP 프로토콜은 하나의 호스트/포트 조합에 대해 6개의 요청을 병렬로 발행합니다.
멤버 함수 문서
[explicit] QModbusClient::QModbusClient(QObject *parent = nullptr)
지정된 parent 을 사용하여 Modbus 클라이언트 장치를 생성합니다.
int QModbusClient::numberOfRetries() const
클라이언트가 요청이 실패하기 전에 시도할 재시도 횟수를 반환합니다. 기본값은 3 로 설정되어 있습니다.
setNumberOfRetries()도 참조하십시오 .
[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
사용자 정의 Modbus 클라이언트 구현을 통해 구현됩니다. 기본 구현은 ` response ` 및 ` data`을 무시합니다. 오류를 나타내기 위해 항상 `false`를 반환합니다.
[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Modbus 서버 response 를 처리하고, 디코딩된 정보를 data 에 저장합니다. 성공 시 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
참고: 기본구현은 모든 FunctionCode를 지원하지 않습니다. 필요한 기능을 처리하려면 사용자 정의 Modbus 클라이언트 구현에서 이 메서드를 재정의하십시오.
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
원시 Modbus request 를 전송합니다. 원시 요청에는 Modbus PDU 데이터 섹션에 들어갈 수 있고 유효한 기능 코드를 가진 모든 내용이 포함될 수 있습니다. 따라서 전송 전에 수행되는 유일한 검사는 유효성 검사뿐이며, 이에 대해서는 QModbusPdu::isValid 를 참조하십시오. 오류가 발생하지 않으면 이 함수는 새로운 유효한 QModbusReply 를 반환하고, 그렇지 않으면 nullptr를 반환합니다. Modbus 네트워크에는 여러 서버가 있을 수 있으며, 각 서버는 고유한 serverAddress 를 가집니다.
QModbusReply::rawResult()도 참조하십시오 .
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
read 가 가리키는 데이터의 내용을 읽기 위한 요청을 보냅니다. 오류가 발생하지 않으면 유효한 새로운 QModbusReply 객체를 반환하고, 그렇지 않으면 nullptr을 반환합니다. Modbus 네트워크에는 여러 대의 서버가 있을 수 있으며, 각 서버는 고유한 serverAddress 를 가집니다.
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Modbus 함수 코드 QModbusPdu::ReadWriteMultipleRegisters 를 사용하여 read 가 가리키는 데이터의 내용을 읽고, write 가 가리키는 데이터의 내용을 수정하도록 요청을 전송합니다. 오류가 발생하지 않으면 유효한 새로운 QModbusReply 객체를 반환하고, 그렇지 않으면 nullptr을 반환합니다. Modbus 네트워크에는 여러 서버가 있을 수 있으며, 각 서버는 고유한 serverAddress 를 가집니다.
참고: 이러한 종류의 요청을 전송하는 것은 read 와 write 가 모두 QModbusDataUnit::HoldingRegisters 유형일 때만 유효합니다.
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
write 가 가리키는 데이터의 내용을 수정하라는 요청을 보냅니다. 오류가 발생하지 않으면 유효한 새로운 QModbusReply 객체를 반환하고, 그렇지 않으면 nullptr를 반환합니다. Modbus 네트워크에는 여러 대의 서버가 있을 수 있으며, 각 서버는 고유한 serverAddress 를 가집니다.
void QModbusClient::setNumberOfRetries(int number)
클라이언트가 요청이 실패하기 전에 시도할 재시도 횟수( number )를 설정합니다. 기본값은 3 로 설정되어 있습니다.
참고: 새값은 0 보다 크거나 같아야 합니다. 이 속성을 변경하면 이미 예약된 요청에는 영향을 미치지 않고, 새로운 요청에만 적용됩니다.
numberOfRetries()도 참조하십시오 .
void QModbusClient::setTimeout(int newTimeout)
이 QModbusClient 인스턴스에 대한 newTimeout 를 설정합니다. 최소 타임아웃은 10 ms입니다.
타임아웃은 클라이언트가 서버의 응답을 기다리는 시간을 결정하는 데 사용됩니다. 지정된 타임아웃 시간 내에 응답을 받지 못하면 TimeoutError 가 설정됩니다.
이미 활성화되었거나 실행 중인 타임아웃은 이러한 타임아웃 기간 변경의 영향을 받지 않습니다.
timeout 및 timeoutChanged()도 참조하십시오 .
int QModbusClient::timeout() const
이 QModbusClient 인스턴스에서 사용하는 타임아웃 값을 밀리초(ms) 단위로 반환합니다. 타임아웃은 TimeoutError 로 지정됩니다. 기본값은 1000 ms입니다.
setTimeout 및 timeoutChanged()도 참조하십시오 .
[signal] void QModbusClient::timeoutChanged(int newTimeout)
이 신호는 이 QModbusClient 인스턴스가 사용하는 타임아웃이 변경될 때 발생합니다. 해당 장치의 새로운 응답 타임아웃 값은 newTimeout 로 전달됩니다.
setTimeout()도 참조하십시오 .
© 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.