QModbusDevice Class

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

头: #include <QModbusDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
继承: QObject
继承者: QModbusClient and QModbusServer

公共类型

enum ConnectionParameter { SerialPortNameParameter, SerialParityParameter, SerialBaudRateParameter, SerialDataBitsParameter, SerialStopBitsParameter, …, NetworkAddressParameter }
enum Error { NoError, ReadError, WriteError, ConnectionError, ConfigurationError, …, InvalidResponseError }
enum IntermediateError { ResponseCrcError, ResponseRequestMismatch }
enum State { UnconnectedState, ConnectingState, ConnectedState, ClosingState }

公共函数

QModbusDevice (QObject * parent = nullptr)
virtual ~QModbusDevice ()
bool connectDevice ()
QVariant connectionParameter (QModbusDevice::ConnectionParameter 参数 ) const
QIODevice * device () const
void disconnectDevice ()
QModbusDevice::Error error () const
QString errorString () const
void setConnectionParameter (QModbusDevice::ConnectionParameter 参数 , const QVariant & value )
QModbusDevice::State state () const

信号

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

保护函数

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

详细描述

成员类型文档编制

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:

常量 描述
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

enum QModbusDevice:: Error

此枚举描述所有可能的错误条件。

常量 描述
QModbusDevice::NoError 0 没有出现错误。
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 出现未知错误。
QModbusDevice::InvalidResponseError (since Qt 6.4) 9 An error occurred while parsing the response, or the FunctionCode is not supported by the current implementation. In the latter case custom Modbus client implementation can override the processResponse () 和 processPrivateResponse () methods to provide support for needed functions.

[since 6.0] enum QModbusDevice:: IntermediateError

This enum describes possible errors that can happen during a full send and receive cycle for a Modbus reply.

常量 描述
QModbusDevice::ResponseCrcError 0 A Modbus response with a wrong CRC was received.
QModbusDevice::ResponseRequestMismatch 1 A Modbus response was received but did not match the open request, probably due to the PDU's function code not matching.

If any of the above intermediate errors occurred, the frame is likely resent until the maximum number of retries has been reached.

The list of intermediate errors can be inspected from the QModbusReply intermediate errors function.

该枚举在 Qt 6.0 引入 (或被修改)。

另请参阅 QModbusClient::numberOfRetries () 和 QModbusReply::intermediateErrors ().

enum QModbusDevice:: State

此枚举描述所有可能的设备状态。

常量 描述
QModbusDevice::UnconnectedState 0 设备已断开连接。
QModbusDevice::ConnectingState 1 设备正在连接。
QModbusDevice::ConnectedState 2 The device is connected to the Modbus network.
QModbusDevice::ClosingState 3 设备正在关闭。

成员函数文档编制

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

Constructs a Modbus device with the specified parent .

[虚拟] QModbusDevice:: ~QModbusDevice ()

销毁 QModbusDevice 实例

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

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

另请参阅 disconnectDevice ().

bool QModbusDevice:: connectDevice ()

Connects the device to the Modbus network. Returns true if the connection process was successfully initiated; otherwise false . Final connection success confirmation requires the state () changing to QModbusDevice::ConnectedState .

此函数调用 open () 作为其实现的一部分。

另请参阅 open ().

QVariant QModbusDevice:: connectionParameter ( QModbusDevice::ConnectionParameter 参数 ) 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.

注意: 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 .

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

另请参阅 setConnectionParameter () 和 ConnectionParameter .

QIODevice *QModbusDevice:: device () const

Returns the underlying QIODevice used for ModBus communication or nullptr if the device was not yet fully initialized.

注意: Do not store a pointer to the underlying device, because it can be invalidated at any point in time.

void QModbusDevice:: disconnectDevice ()

Disconnects the device.

此函数调用 close () 作为其实现的一部分。

QModbusDevice::Error QModbusDevice:: error () const

Returns the error state of the device.

另请参阅 setError () 和 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.

另请参阅 QModbusDevice::Error .

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

此函数被调用通过 connectDevice (). Subclasses must provide an implementation that returns true on successful Modbus connection or connection initiation; otherwise returns false .

The implementation must ensure that the instance's state () 被设为 QModbusDevice::ConnectingState or QModbusDevice::ConnectedState upon success; otherwise QModbusDevice::UnconnectedState . Typically, QModbusDevice::ConnectingState is used when the connection process reports back asynchronously and QModbusDevice::ConnectedState in case of synchronous connect behavior.

另请参阅 connectDevice ().

void QModbusDevice:: setConnectionParameter ( QModbusDevice::ConnectionParameter 参数 , const QVariant & value )

设置值为 parameter to value 。若 parameter already exists, the previous value is overwritten. A active or running connection is not affected by such parameter changes.

另请参阅 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 .

另请参阅 error () 和 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.

另请参阅 state ().

QModbusDevice::State QModbusDevice:: state () const

返回设备的当前状态。

另请参阅 setState () 和 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 .

另请参阅 setState () 和 state ().