WagoLibHttp_02, http get dereferenzierung mit cfc

tomrey

Level-1
Beiträge
362
Reaktionspunkte
32
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi all,
ich versuche mich erstmalig an http-get auf Basis des Wago-Anwendungshinweises: "Using library ”WagoLibHttp_02.lib” to communicate with remote web server.
Ziel ist es, eine Netzsteckdose per cgi zu schalten und eine Statusrückmeldung auszuwerten.
Die Schalung funktioniert aber ich habe noch Probleme mit der Auswertungsseite/Rückmeldung vom Funktionsbaustein HTTP-GET.
Ich arbeite mit CFC und so sieht mein Programm aus:
ScreenShot009.jpg
online sieht das dann so aus:
ScreenShot008.jpg
Frage 1: Wie kann ich die Dereferenzierung korrekt in CFC machen? (psAntwort^-sAntwort)
Ich gehe mal davon aus, dass irgendein Operator nach ADR (26) hin muß mit dem sAntwort verbunden wäre.
Frage 2: Wo kann ich mich über diese Pointer-Geschichte schlau machen, es funktioniert zwar nach copy/paste aus dem Anwendungshinweis aber verstanden habe ich das nicht.
Soweit ich das erkenne, wird auf der Inputseite der http-Befehl per ADR "umgewandelt" und an einen pointer (pabUrlData) eines arrays (abUrlData??) des Funktionsblockes übergeben.
Auf der Outputseite kommt abContentData heraus und wird wiederum per ADR in einen pointer (psAntwort) "umgewandelt".
Wenn ich aber online bin und das array abContentData öffne, finde ich keine Strings mit den Antworttexten.
Am out-connector wird "???" angezeigt, im psAntwort ist ein Hex-Ausdruck und psAntwort^ bringt den korrekten String???
Dank für Erleuchtung
Gruß
 
Zu 1:
Adr -> deinString
Gleich pointer^ -> deinString
Also eigentlich ein schritt zu viel

Zu 2:
In der codesys Hilfe nach pointer suchen dort ist auch ein Beispiel.
 
Hallo tomrey,

der nachfolgende Screenshot zeigt Dir eine Variante wie Du in der Programmiersprache CFC einen Pointer und die Dereferenzierung des Pointers über den Inhaltsoperator "^" verweden kannst.

CFC_Pointer.jpg

Bezogen auf den Funktionsbaustein „HTTP_GET“ aus der ”WagoLibHttp_02.lib” wird hier intern im FB mehr oder weniger Komplex dies selbe Syntax verwendet.
Anstelle eines Strings, wie im Screenshot zu sehen, wird beim FB HTTP_GET“ als Input ein POINTER TO ARRAY OF BYTE („pabUrlData“) verwendet. Der Pointer übergibt dann die Startadresse und die Länge (wie viel Byte das Array besitzt) wird über die Variable „uiUrlLength“ ermittelt. Im Anschluss wird intern im FB über die Dereferenzierung des Pointers mit den eigentlichen Werten weiter gearbeitet in selbiger Vorgehensweise über die Variable „abContentData“ und „uiContentLength „ die Antwort ausgegeben.
Ich hoffe mit dieser Erklärung konnten alle Deine Fragen beantwortet werden.
 
Zurück
Oben