OnMqttMessage
Callback-Methode

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
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. |
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. |
Ein-/Ausgänge
Name | Typ | Beschreibung |
---|---|---|
topic | STRING | Topic der eingegangenen MQTT-Nachricht |