QKnxNetIpTunnelingRequestProxy Class

The QKnxNetIpTunnelingRequestProxy class provides the means to read a tunneling request from the generic QKnxNetIpFrame class and to create a KNXnet/IP frame based on the information. 更多...

头: #include <QKnxNetIpTunnelingRequestProxy>
qmake: QT += knx

公共类型

class Builder

公共函数

QKnxNetIpTunnelingRequestProxy (const QKnxNetIpFrame & frame )
QKnxLinkLayerFrame cemi () const
quint8 channelId () const
bool isValid () const
quint8 sequenceNumber () const

静态公共成员

QKnxNetIpTunnelingRequestProxy::Builder builder ()

详细描述

Tunneling means that Engineering Tool Software (ETS) sends a single KNX frame in an KNXnet/IP frame and waits until the response arrives or a time-out is reached.

A tunneling request is sent by a KNXnet/IP client to establish a data connection to the endpoint of a KNXnet/IP server for sending a KNX frame. A tunneling request frame contains the ID of the communication channel between a KNXnet/IP client and server, the sequence number of the frame, and the KNX frame in the common external message interface (cEMI) format.

The KNXnet/IP server discards frames with sequence numbers that are not the expected sequence numbers or one less the expected sequence numbers and does not send a tunneling acknowledgment upon receiving them.

In most programs, this class will not be used directly. Instead, the QKnxNetIpTunnel or QKnxNetIpDeviceManagement class is used to establish a functional connection to a KNXnet/IP server.

Before sending a tunneling request, the KNXnet/IP client should use QKnxNetIpServerDescriptionAgent and QKnxNetIpServerInfo to check that the server supports the requested connection type and options.

注意: When using QKnxNetIpTunnelingRequestProxy, care must be taken to ensure that the referenced KNXnet/IP frame outlives the proxy on all code paths, lest the proxy ends up referencing deleted data.

The following code sample illustrates how to read the tunneling request information sent by a KNXnet/IP client:

auto netIpFrame = QKnxNetIpFrame::fromBytes(...);
const QKnxNetIpTunnelingRequestProxy proxy(netIpFrame);
if (!proxy.isValid())
    return;
auto chanId = proxy.channelId();
auto seqNum = proxy.sequenceNumber();
auto knxLinkFrame = proxy.cemi();
					

另请参阅 builder (), QKnxNetIpTunnelingAcknowledgeProxy , Qt KNX Tunneling Classes ,和 Qt KNXnet/IP Connection Classes .

成员函数文档编制

QKnxNetIpTunnelingRequestProxy:: QKnxNetIpTunnelingRequestProxy (const QKnxNetIpFrame & frame )

Constructs a proxy object to read the tunneling request information carried by the specified KNXnet/IP frame frame .

[static] QKnxNetIpTunnelingRequestProxy::Builder QKnxNetIpTunnelingRequestProxy:: builder ()

Returns a builder object to create a KNXnet/IP tunneling request frame.

QKnxLinkLayerFrame QKnxNetIpTunnelingRequestProxy:: cemi () const

Returns the KNX frame in the cEMI format.

quint8 QKnxNetIpTunnelingRequestProxy:: channelId () const

Returns the ID of the communication channel between a KNXnet/IP client and server.

bool QKnxNetIpTunnelingRequestProxy:: isValid () const

返回 true if the frame contains initialized values and is in itself valid, otherwise returns false . A valid KNXnet/IP frame consists of at least a valid header and a size in bytes corresponding to the total size of the KNXnet/IP frame header.

另请参阅 QKnxNetIpFrameHeader::totalSize ().

quint8 QKnxNetIpTunnelingRequestProxy:: sequenceNumber () const

Returns the sequence number of a tunneling request frame.