QModbusDevice Class | Qt Serial Bus 5.6

Qt Documentation (Technology Preview) | Qt Serial Bus | C++ Classes | QModbusDevice

Qt 5.6.2 Reference Documentation

# QModbusDevice Class

The QModbusDevice class is the base class for Modbus classes, QModbusServer and QModbusClient. More...

Header: | #include <QModbusDevice>
qmake: | QT += serialbus
Since: | Qt 5.6
Inherits: | QObject
Inherited By: | QModbusClient and QModbusServer

- List of all members, including inherited members

## Public Types

enum | ConnectionParameter { SerialPortNameParameter, SerialParityParameter, SerialBaudRateParameter, SerialDataBitsParameter, ..., UserParameter }
enum | Error { NoError, ReadError, WriteError, ConnectionError, ..., UnknownError }
enum | State { UnconnectedState, ConnectingState, ConnectedState, ClosingState }

## Public Functions

| QModbusDevice(QObject *parent = nullptr)
| ~QModbusDevice()
bool | connectDevice()
QVariant | connectionParameter(int parameter) const
void | disconnectDevice()
Error | error() const
QString | errorString() const
void | setConnectionParameter(int parameter, const QVariant &value)
State | state() const

- 31 public functions inherited from QObject

## Signals

void | errorOccurred(QModbusDevice::Error error)
void | stateChanged(QModbusDevice::State state)

- 2 signals inherited from QObject

## Protected Functions

virtual void | close() = 0
virtual bool | open() = 0
void | setError(const QString &errorText, QModbusDevice::Error error)
void | setState(QModbusDevice::State newState)

- 9 protected functions inherited from QObject

### Additional Inherited Members

- 1 property inherited from QObject
- 1 public slot inherited from QObject
- 1 public variable inherited from QObject
- 10 static public members inherited from QObject
- 2 protected variables inherited from QObject

## Detailed Description

The QModbusDevice class is the base class for Modbus classes, QModbusServer and QModbusClient.

## Member Type Documentation

### enum QModbusDevice::ConnectionParameter

This enum describes the possible values that can be set for a Modbus device connection.

The general purpose value (and the associated types) are:

Constant | Value | Description
--- | --- | ---
`QModbusDevice::SerialPortNameParameter` | `0` | This parameter holds the serial port used for device communication, e.g. COM1. `QString`
`QModbusDevice::SerialParityParameter` | `1` | This parameter holds the parity checking mode. `QSerialPort::Parity`
`QModbusDevice::SerialBaudRateParameter` | `2` | This parameter holds the data baud rate for the communication. `QSerialPort::BaudRate`
`QModbusDevice::SerialDataBitsParameter` | `3` | This parameter holds the data bits in a frame. `QSerialPort::DataBits`
`QModbusDevice::SerialStopBitsParameter` | `4` | This parameter holds the number of stop bits in a frame. `QSerialPort::StopBits`
`QModbusDevice::NetworkPortParameter` | `5` | This parameter holds the network port. `int`
`QModbusDevice::NetworkAddressParameter` | `6` | This parameter holds the host address for network communication. `QString`

User options:

Constant | Value | Description
--- | --- | ---
`QModbusDevice::UserParameter` | `0x100` | The first parameter that can be used for user-specific purposes. `QVariant`

### enum QModbusDevice::Error

This enum describes all the possible error conditions.

Constant | Value | Description
--- | --- | ---
`QModbusDevice::NoError` | `0` | No errors have occurred.
`QModbusDevice::ReadError` | `1` | An error occurred during a read operation.
`QModbusDevice::WriteError` | `2` | An error occurred during a write operation.
`QModbusDevice::ConnectionError` | `3` | An error occurred when attempting to open the backend.
`QModbusDevice::ConfigurationError` | `4` | An error occurred when attempting to set a configuration parameter.
`QModbusDevice::TimeoutError` | `5` | A timeout occurred during I/O. An I/O operation did not finish within a given time frame.
`QModbusDevice::ProtocolError` | `6` | A Modbus specific protocol error occurred.
`QModbusDevice::ReplyAbortedError` | `7` | The reply was aborted due to a disconnection of the device.
`QModbusDevice::UnknownError` | `8` | An unknown error occurred.

### enum QModbusDevice::State

This enum describes all possible device states.

Constant | Value | Description
--- | --- | ---
`QModbusDevice::UnconnectedState` | `0` | The device is disconnected.
`QModbusDevice::ConnectingState` | `1` | The device is being connected.
`QModbusDevice::ConnectedState` | `2` | The device is connected to the Modbus network.
`QModbusDevice::ClosingState` | `3` | The device is being closed.

## Member Function Documentation

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

Constructs a Modbus device with the specified parent.

### QModbusDevice::~QModbusDevice()

Destroys the QModbusDevice instance

### `[pure virtual protected]` void QModbusDevice::close()

This function is responsible for closing the Modbus connection. The implementation must ensure that the instance's state() is set to QModbusDevice::UnconnectedState.

See also disconnectDevice().

### bool QModbusDevice::connectDevice()

Connects the device to the Modbus network. Returns `true` on success; otherwise `false`.

This function calls open() as part of its implementation.

### QVariant QModbusDevice::connectionParameter(int parameter) const

Returns the value associated with the given connection parameter. The returned value can be empty.

By default the `QModbusDevice` is initialized with some common values. The serial port settings are even parity, a baud rate of 19200 bits per second, eight data bits and one stop bit. The network settings for the host address is set to local host and port to 502.

Note: For a serial connection to succeed, the SerialPortNameParameter needs to be set to a valid communication port. The information about valid serial ports can be obtained from QSerialPortInfo.

Note: If the device is already connected, the settings are taken into account after reconnecting the device.

See also setConnectionParameter() and ConnectionParameter.

### void QModbusDevice::disconnectDevice()

Disconnects the device.

This function calls close() as part of its implementation.

### Error QModbusDevice::error() const

Returns the error state of the device.

See also setError() and QModbusDevice::Error.

### `[signal]` void QModbusDevice::errorOccurred(QModbusDevice::Error error)

This signal is emitted when an error of the type, error, occurs.

### QString QModbusDevice::errorString() const

Returns descriptive error text for the device error.

See also QModbusDevice::Error.

### `[pure virtual protected]` bool QModbusDevice::open()

This function is called by connectDevice(). Subclasses must provide an implementation that returns `true` on successful Modbus connection or `false` otherwise.

The implementation must ensure that the instance's state() is set to QModbusDevice::ConnectedState upon success; otherwise QModbusDevice::UnconnectedState.

See also connectDevice().

### void QModbusDevice::setConnectionParameter(int parameter, const QVariant &value)

Sets the value of parameter to value. If the parameter already exists, the previous value is overwritten. A active or running connection is not affected by such parameter changes.

See also ConnectionParameter and connectionParameter().

### `[protected]` void QModbusDevice::setError(const QString &errorText, QModbusDevice::Error error)

Sets the error state of the device. ModBus device implementations must use this function in case of an error to set the error type and a descriptive errorText.

See also error() and QModbusDevice::Error.

### `[protected]` void QModbusDevice::setState(QModbusDevice::State newState)

Sets the state of the device to newState. Modbus device implementations must use this function to update the device state.

See also state().

### State QModbusDevice::state() const

Returns the current state of the device.

See also setState() and stateChanged().

### `[signal]` void QModbusDevice::stateChanged(QModbusDevice::State state)

This signal is emitted every time the state of the device changes. The new state is represented by state.

See also setState() and state().