OnMqttMessage

Callback-Methode

OnMqttMessage 1:

Diese Methode darf nicht vom Anwender aufgerufen werden. Stattdessen kann vom Funktionsbaustein FB_IotMqttClient abgeleitet und diese Methode überschrieben werden. Während dem Aufruf der Methode Execute()hat der zuständige TwinCAT-Treiber die Möglichkeit, im Fall von neuen eingehenden Nachrichten, die Methode OnMqttMessage() aufzurufen. Bei mehreren eingehenden Nachrichten wird die Callback-Methode mehrfach, je Nachricht einmal, aufgerufen. Die Implementierung der Methode muss dies berücksichtigen.
Die Verwendung der Callback-Methode ist auch im Beispiel IotMqttSampleUsingCallback erläutert.

Syntax

METHOD OnMqttMessage : HRESULT
VAR_IN_OUT CONSTANT
    topic    : STRING;
END_VAR
VAR_INPUT
    payload  : PVOID;
    length   : UDINT;
    qos      : TcIotMqttQos;
    repeated : BOOL;
END_VAR

OnMqttMessage 2: Rückgabewert

Name

Typ

Beschreibung

OnMqttMessage

HRESULT

Der Rückgabewert der Methode ist mit S_OK zu belegen, sofern die Nachricht angenommen wurde. Soll die Nachricht im Kontext des nächsten Execute()-Aufrufs erneut ausgegeben werden, kann der Rückgabewert mit S_FALSE belegt werden.

OnMqttMessage 3: Eingänge

Name

Typ

Beschreibung

payload

PVOID

Adresse des Payload der eingegangenen MQTT-Nachricht

length

UDINT

Größe vom Payload in Bytes

qos

TcIotMqttQos

"Quality of Service"

repeated

BOOL

Wurde der letzte OnMqttMessage()-Methodenaufruf vom Anwender nicht mit S_OK erwidert, wird die Nachricht im Kontext des nächsten Execute()-Aufrufs erneut ausgegeben und hierbei der Parameter repeated gesetzt. Daran ist zu erkennen, dass die Nachricht wiederholt ausgegeben wird.

OnMqttMessage 4: Ein-/Ausgänge

Name

Typ

Beschreibung

topic

STRING

Topic der eingegangenen MQTT-Nachricht