- Qt 6.9
- Qt Serial Bus
- C++ Classes
- QModbusDeviceIdentification
- Qt 6.9.2 Reference Documentation

# QModbusDeviceIdentification Class

The QModbusDeviceIdentification is a container class representing the physical and functional description of a Modbus server. More...

Header: | `#include <QModbusDeviceIdentification>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS SerialBus)` `target_link_libraries(mytarget PRIVATE Qt6::SerialBus)`
qmake: | `QT += serialbus`

- List of all members, including inherited members

## Public Types

enum | ConformityLevel { BasicConformityLevel, RegularConformityLevel, ExtendedConformityLevel, BasicIndividualConformityLevel, RegularIndividualConformityLevel, ExtendedIndividualConformityLevel }
enum | ObjectId { VendorNameObjectId, ProductCodeObjectId, MajorMinorRevisionObjectId, VendorUrlObjectId, ProductNameObjectId, …, UndefinedObjectId }
enum | ReadDeviceIdCode { BasicReadDeviceIdCode, RegularReadDeviceIdCode, ExtendedReadDeviceIdCode, IndividualReadDeviceIdCode }

## Public Functions

| QModbusDeviceIdentification()
QModbusDeviceIdentification::ConformityLevel | conformityLevel() const
bool | contains(uint objectId) const
bool | insert(uint objectId, const QByteArray &value)
bool | isValid() const
QList<int> | objectIds() const
void | remove(uint objectId)
void | setConformityLevel(QModbusDeviceIdentification::ConformityLevel level)
QByteArray | value(uint objectId) const

## Static Public Members

QModbusDeviceIdentification | fromByteArray(const QByteArray &ba)

## Detailed Description

The Device Identification interface is modeled as an address space composed of a set of addressable data elements. The data elements are called objects and an ObjectId identifies them.

## Member Type Documentation

### enum QModbusDeviceIdentification::ConformityLevel

Defines the identification conformity level of the device and type of supported access.

Constant | Value | Description
--- | --- | ---
`QModbusDeviceIdentification::BasicConformityLevel` | `0x01` | Basic identification (stream access).
`QModbusDeviceIdentification::RegularConformityLevel` | `0x02` | Regular identification (stream access).
`QModbusDeviceIdentification::ExtendedConformityLevel` | `0x03` | Extended identification (stream access).
`QModbusDeviceIdentification::BasicIndividualConformityLevel` | `0x81` | Basic identification (stream access and individual access).
`QModbusDeviceIdentification::RegularIndividualConformityLevel` | `0x82` | Regular identification (stream access and individual access).
`QModbusDeviceIdentification::ExtendedIndividualConformityLevel` | `0x83` | Extended identification (stream access and individual access).

See also ReadDeviceIdCode.

### enum QModbusDeviceIdentification::ObjectId

This enum describes the possible server objects. The interface consists of three categories of objects:

Basic Device Identification. All objects of this category are mandatory.

Constant | Value | Description
--- | --- | ---
`QModbusDeviceIdentification::VendorNameObjectId` | `0x00` | The vendor name of the device.
`QModbusDeviceIdentification::ProductCodeObjectId` | `0x01` | The product code of the device.
`QModbusDeviceIdentification::MajorMinorRevisionObjectId` | `0x02` | The product version numbering.

Regular Device Identification. All objects of this category are standard defined and optional.

Constant | Value | Description
--- | --- | ---
`QModbusDeviceIdentification::VendorUrlObjectId` | `0x03` | The vendor URL of the device.
`QModbusDeviceIdentification::ProductNameObjectId` | `0x04` | The product name of the device.
`QModbusDeviceIdentification::ModelNameObjectId` | `0x05` | The model name of the device.
`QModbusDeviceIdentification::UserApplicationNameObjectId` | `0x06` | The user application name of the device.

Reserved range (i.e., ReservedObjectId >= ObjectId < ProductDependentObjectId). Do not use.

Constant | Value | Description
--- | --- | ---
`QModbusDeviceIdentification::ReservedObjectId` | `0x07` | First value of reserved object Ids.

Extended Device Identification. All of these data are device dependent and optional.

Constant | Value | Description
--- | --- | ---
`QModbusDeviceIdentification::ProductDependentObjectId` | `0x80` | First possible value of product dependent identifiers.
`QModbusDeviceIdentification::UndefinedObjectId` | `0x100` | Do not use.

### enum QModbusDeviceIdentification::ReadDeviceIdCode

Defines the access type of the read identification request.

Stream access:

Constant | Value | Description
--- | --- | ---
`QModbusDeviceIdentification::BasicReadDeviceIdCode` | `0x01` | Request to get the basic device identification.
`QModbusDeviceIdentification::RegularReadDeviceIdCode` | `0x02` | Request to get the regular device identification.
`QModbusDeviceIdentification::ExtendedReadDeviceIdCode` | `0x03` | Request to get the extended device identification.

Individual access:

Constant | Value | Description
--- | --- | ---
`QModbusDeviceIdentification::IndividualReadDeviceIdCode` | `0x04` | Request to get one specific identification object.

## Member Function Documentation

### `[constexpr noexcept]` QModbusDeviceIdentification::QModbusDeviceIdentification()

Constructs an invalid QModbusDeviceIdentification object.

### QModbusDeviceIdentification::ConformityLevel QModbusDeviceIdentification::conformityLevel() const

Returns the identification conformity level of the device and type of supported access.

See also setConformityLevel().

### bool QModbusDeviceIdentification::contains(uint objectId) const

Returns `true` if there is an item for the given objectId; otherwise `false`.

See also ObjectId.

### `[static]` QModbusDeviceIdentification QModbusDeviceIdentification::fromByteArray(const QByteArray &ba)

Converts the byte array ba to a QModbusDeviceIdentification object.

Note: : The returned object might be empty or even invalid if some error occurs while processing the byte array.

See also isValid().

### bool QModbusDeviceIdentification::insert(uint objectId, const QByteArray &value)

Inserts a new item with the objectId and a value of value. If there is already an item with the objectId, that item's value is replaced with value.

Returns `true` if the size of value is less than 245 bytes and the objectId is less then QModbusDeviceIdentification::UndefinedObjectId.

See also ObjectId.

### bool QModbusDeviceIdentification::isValid() const

Returns `true` if the device identification object is valid; otherwise `false`.

A device identification object is considered valid if ProductNameObjectId, ProductCodeObjectId and MajorMinorRevisionObjectId are set to a non-empty value. Still the object can contain valid object id's and associated data.

Note: A default constructed device identification object is invalid.

### QList<int> QModbusDeviceIdentification::objectIds() const

Returns a list containing all the object id's in the `QModbusDeviceIdentification` object in ascending order.

See also ObjectId.

### void QModbusDeviceIdentification::remove(uint objectId)

Removes the item for the given objectId.

See also ObjectId.

### void QModbusDeviceIdentification::setConformityLevel(QModbusDeviceIdentification::ConformityLevel level)

Sets the identification conformity level of the device and type of supported access to level.

See also conformityLevel().

### QByteArray QModbusDeviceIdentification::value(uint objectId) const

Returns the value associated with the objectId. If there is no item with the objectId, the function returns a default-constructed value.

See also ObjectId.