MQTT_Receive-Baustein
Kurz-Information
Name |
MQTT_Receive |
→POE-Typ |
|
Kategorie |
|
Grafische Schnittstelle |
|
Verfügbar ab |
|
Funktionalität
Der Baustein holt eine Nachricht vom Empfangspuffer (einem Ringpuffer), der dem spezifizierten Verbindungshandler zugeordnet ist.
Die Übertragung der Daten erfolgt mit Hilfe eines bereits vorhandenen MQTT-Brokers
(siehe "Datenübertragung via MQTT vorbereiten/durchführen")
.
Eingänge, Ausgänge, Ergebniswert
|
Bezeichner |
Beschreibung |
|
Eingänge: |
ch |
DINT |
Verbindungshandler, wie vom MQTT_Connect-Baustein erhalten |
payload |
REF_TO BYTE |
Puffer, in dem die erhaltenen Nutzdaten gespeichert werden können |
|
payload_len |
DINT |
Größe der Nutzdaten-Puffers in Bytes |
|
Ausgänge: |
len |
DINT |
Länge der erhaltenen Nutzdaten in Bytes |
rc |
MQTT_RC |
Ergebniscode der beteiligten MQTT-Funktionen, wie im Datentyp MQTT_RC definiert |
|
Ergebniswert: |
– |
STRING |
liefert das Thema der erhaltenen Nachricht |
Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.
Beispiel für Verwendung im ST-Editor
PROGRAM Program2
VAR
ioImageRemote : ARRAY[0..1023] OF BYTE;
ioImageRemoteSize : DINT := 1024;
ioImageRemoteLen : DINT := -1;
topic : STRING[255];
ch : DINT := -1;
cnt : DINT := 0;
rc : MQTT_RC;
state : MQTT_SUBSCRIBER_STATE := MQTT_SUBSCRIBER_STATE#INVALID;
subscribed : BOOL := FALSE;
message_received : BOOL := FALSE;
END_VAR
state := MQTT_GetState(ch := ch, rc => rc, ENO => ENO);
IF state <> MQTT_SUBSCRIBER_STATE#CONNECTING AND state <> MQTT_SUBSCRIBER_STATE#CONNECTED THEN
ch := MQTT_Connect(address := '192.168.1.107', clientId := 'RTS2', rc => rc, ENO => ENO);
END_IF;
IF state = MQTT_SUBSCRIBER_STATE#CONNECTED THEN
/* connect to topic in case connection has been established */
IF NOT(subscribed) THEN
MQTT_Subscribe(ch := ch, topic := 'sample', rc => rc);
subscribed := rc = MQTT_RC#OK;
END_IF;
IF subscribed THEN
/* if subscribed, obtain only the latest message */
message_received := FALSE;
REPEAT
topic := MQTT_Receive(ch := ch,
payload := REF(ioImageRemote[0]),
payload_len := ioImageRemoteSize,
len => ioImageRemoteLen,
rc => rc);
IF rc <> MQTT_RC#OK THEN
EXIT;
END_IF;
message_received := TRUE;
UNTIL FALSE
END_REPEAT;
END_IF;
ELSE
/* if connection has been lost, subscription has been canceled as well*/
subscribed := FALSE;
END_IF;
END_PROGRAM
Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.