Hallo Zusammen,
ich habe die Libs BASIC, Network und Building erfolgreich in TwinCAT3 eingebunden und bin derzeit dabei den FB http_Get ans laufen zu bekommen.
Ich möchte gerne mit dem Baustein meine SONOs boxen steuern. Dazu habe ich erfolgreich einen PHP-Server erstellt. Wenn ich in meinem Browser zB.: "http://localhost/SonosLib/index.php?zone=Bad&action=Play" eingebe, wird die Box gestartet.
Jetzt möchte ich gerne diesen Link per TwinCAT mit Hilfe des http_Get-Bausteins ausführen.
Ich bekomme es leider aber nicht hin :-(
Könnte mir jemand vielleicht einen Beispiel code zur ansteuerung des Bausteins posten?
Ich hatte es so probiert: Aber leider ohne Erfolg
PROGRAM MAIN
VAR
FB_HTTP_GET : HTTP_GET;
UrlData : URL;
IP_CONTROL1 :IP_CONTROL;
IP_C1 :IP_C;
S_BUF1 : NETWORK_BUFFER;
R_BUF1 : NETWORK_BUFFER;
send : BOOL;
END_VAR
IF send THEN
S_BUF1.BUFFER[0] := BYTE#16#1B;
S_BUF1.SIZE :=1;
IP_C1.C_MODE := 3;
IP_C1.C_ENABLE := TRUE; (* Verbindungsaufbau freigeben *)
IP_C1.R_OBSERVE := TRUE; (* Datenempfang überwachen *)
send := FALSE;
END_IF;
UrlData := STRING_TO_URL('http://localhost/SonosLib/index.php?zone=Bad&action=Play','','');
FB_HTTP_GET(
GET:= send,
URL_DATA := UrlData,
IP_C :=IP_C1,
S_BUF := S_BUF1,
R_BUF :=R_BUF1);
hi
du musst den ip_control noch zyklisch aufrufen !
sonst passiert gar nichts
schau doch mal in der network.lib im ordner "demo" rein
lib als projekt öffnen und die ausgeblendeten bausteinen ansehen
Danke für deinen Tipp aber leider habe ich das Problem immer noch nicht gelöst. Ich habe das Program nach dem Beispiel aufgebaut, aber leider funktioniert es trotzdem nicht. Die IP-Adresse ist von meinem Computer. Kann dort der Fehler liegen?
Hoffe due kannst mir nochmal einen Tipp geben.
Gruß
PROGRAM Sonos
VAR
url_text : STRING := 'http://localhost/SonosLib/index.php?zone=Bad&action=Play';
URL_DATA : URL;
IP_C: IP_C;
S_BUF: NETWORK_BUFFER;
R_BUF: NETWORK_BUFFER;
IP_CONTROL_1: IP_CONTROL;
DNS_CLIENT: DNS_CLIENT;
HTTP_GET: HTTP_GET;
http_release: BOOL;
enable: BOOL := TRUE;
http_status: STRING;
header_start: UINT;
header_stop: UINT;
body_start: UINT;
body_stop: UINT;
http_get_done: BOOL;
http_get_error: DWORD;
COUNT_DR: COUNT_DR;
cycles: DWORD;
TON_1: TON;
F_TRIG: F_TRIG;
END_VAR
URL_DATA := STRING_TO_URL(url_text,'','');
TON_1(
IN:= http_get_done,
PT:= T#1S,
Q=> http_release
);
f_TRIG(
CLK:=http_get_done,
Q=> enable
);
COUNT_DR(
UP:=http_get_done,
CNT=> cycles
);
IP_CONTROL_1(
IP:= DWORD_OF_BYTE( 192,168,178,44),
TIME_OUT := T#4S,
S_BUF:=S_BUF,
R_BUF:= R_BUF,
IP_C:=IP_C
);
DNS_CLIENT(
ACTIVATE:= enable,
DOMAIN:= URL_DATA.DOMAIN,
IP_C := IP_C,
S_BUF := S_BUF,
R_BUF := R_BUF
);
HTTP_GET(
IP4 := DNS_CLIENT.IP4,
GET := DNS_CLIENT.DONE,
MODE:= 0,
UNLOCK_BUF:= http_release,
URL_DATA := URL_DATA,
IP_C := IP_C,
S_BUF := S_BUF,
R_BUF := R_BUF,
HTTP_STATUS => http_status,
HEADER_START => header_start,
HEADER_STOP => header_stop,
BODY_START => body_start,
BODY_STOP => body_stop,
DONE => http_get_done,
ERROR => http_get_error
);
ersetzte in deiner url den begriff localhost durch deine lokale ip-adresse oder 127.0.0.x je nach anzahl der lokalen schnittstellen
Hallo peewit,
ich bekomme es leider einfach nicht hin und mein Wissen reicht nicht aus um selbst den Fehler zu finden.
Ich habe Localhost durch die Locale IP geändert, aber leider tut sich trotzdem nichts.
Ich wäre dir mega Dankbar wenn du mal nachschauen könntest!
da ich an sich gut bin aber doch kein zauberer oder hellseher brauche ich mehr infos
kannst du zumindest online zustände online stellen
oder einen wireshark mitschnitt machen
hast du denn irgendeine andere ethernet kommunikation mit der lib schon mal am laufen gehabt
es ist ja leicht möglich das es prinzipiell nicht geht und nicht direkt mit deinem programm zu tun hat
Hallo,
ich versuche gerade auch meine Sonos Boxen mit Twincat3 anzusteuern. Könnte mir jemand vielleicht ein Beispiel-Programm zusenden?
Oder erklären wie ich die Http_Get Demo einbinde/benutze?
Muss ich nur die Ip des DNS Server einstellen und die Lib TCP/IP einbinden oder muss ich noch einen TCP/IP Server erstellen? Wenn ja wie?
Wäre echt Mega nett, wenn mir jemand ein lauffähiges Beispiel für TwinCat3 schicken könnte.
öffne mal die lib als projewkt und schaue in den ordner "demo"
dort sind einige beispiel zu finden
hast du denn schon nach gesehen wie das sonos protokoll aufgebaut ist
tcp / udp, port , datenformat etc...
@KL.Feigling
Wie hast du die .libs eingebunden in Twincat 3?
Versuche es auch schon seit einigen Tagen.
Die Basic funktioniert einwandfrei, die Building geht nicht... :'(