- Qt 6.4
- Qt Serial Bus
- C++ Classes
- QModbusRtuSerialServer
- Qt 6.4.3 Reference Documentation

# QModbusRtuSerialServer Class

The QModbusRtuSerialServer class represents a Modbus server that uses a serial port for its communication with the Modbus client. More...

Header: | #include <QModbusRtuSerialServer>
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: | QT += serialbus
Since: | Qt 6.2
Inherits: | QModbusServer

- List of all members, including inherited members

## Public Functions

| QModbusRtuSerialServer(QObject *parent = nullptr)
virtual | ~QModbusRtuSerialServer()
int | interFrameDelay() const
void | setInterFrameDelay(int microseconds)

## Reimplemented Public Functions

virtual bool | processesBroadcast() const override

## Reimplemented Protected Functions

virtual void | close() override
virtual bool | open() override
virtual QModbusResponse | processRequest(const QModbusPdu &request) override

## Detailed Description

Communication via Modbus requires the interaction between a single Modbus client instance and multiple Modbus server. This class provides the Modbus server implementation via a serial port.

Since multiple Modbus server instances can interact with a Modbus client at the same time (using a serial bus), servers are identified by their serverAddress().

## Member Function Documentation

### QModbusRtuSerialServer::QModbusRtuSerialServer(QObject *parent = nullptr)

Constructs a QModbusRtuSerialServer with the specified parent. The serverAddress preset is `1`.

### `[virtual]` QModbusRtuSerialServer::~QModbusRtuSerialServer()

Destroys the QModbusRtuSerialServer instance.

### `[override virtual protected]` void QModbusRtuSerialServer::close()

Reimplements: QModbusDevice::close().

### `[since 6.2]` int QModbusRtuSerialServer::interFrameDelay() const

Returns the amount of microseconds for the silent interval between two consecutive Modbus messages.

This function was introduced in Qt 6.2.

See also setInterFrameDelay().

### `[override virtual protected]` bool QModbusRtuSerialServer::open()

Reimplements: QModbusDevice::open().

Note: When calling this function, existing buffered data is removed from the serial port.

### `[override virtual protected]` QModbusResponse QModbusRtuSerialServer::processRequest(const QModbusPdu &request)

Reimplements: QModbusServer::processRequest(const QModbusPdu &request).

Processes the Modbus client request specified by request and returns a Modbus response.

The Modbus function QModbusRequest::EncapsulatedInterfaceTransport with MEI Type 13 (0x0D) CANopen General Reference is filtered out because it is usually Modbus TCP or Modbus serial ASCII only.

A request to the RTU serial server will be answered with a Modbus exception response with the exception code QModbusExceptionResponse::IllegalFunction.

### `[override virtual]` bool QModbusRtuSerialServer::processesBroadcast() const

Reimplements: QModbusServer::processesBroadcast() const.

### `[since 6.2]` void QModbusRtuSerialServer::setInterFrameDelay(int microseconds)

Sets the amount of microseconds for the silent interval between two consecutive Modbus messages. By default, the class implementation will use a pre-calculated value according to the Modbus specification. A active or running connection is not affected by such delay changes.

Note: If microseconds is set to -1 or microseconds is less than the pre-calculated delay then this pre-calculated value is used as frame delay.

This function was introduced in Qt 6.2.

See also interFrameDelay().