Hallo,
ich habe mir mittlerweile einen eigenen Baustein für die Auswertung der Taster gebaut. Hintergrund ist die Ansteuerung von Squeezeboxen mittels Wago.
Meinen Funktionsblock in ST hänge ich hier einmal ran. Achtung: Einige Sachen gehen noch nicht (aus 3 Playlisten auswählen z.B.), aus dem bisher vorhandenen kann man sich aber den Rest einfach zusammenbauen. Play, Stop, Lauter, Leiser oder Mute klappen jedenfalls.
Die Telnet-Funktion ist nicht von mir, weshalb ich nicht weiß, ob ich sie hier öffentlich stellen darf. Eventuell finde ich es auch noch - dann ergänze ich hier den Link. [EDIT] Hier ist der Link zum Telnet-Baustein. http://www.oscat.de/community/index.php/topic,1071.0.html[/EDIT]
Bitte nicht über die Syntax lästern - bin SPS-Anfänger. Bei Fragen - einfach fragen.
Zunächst die Deklaration der Variablen:
Nun der eigentliche Code:
Viele Grüße,
Anhalter
ich habe mir mittlerweile einen eigenen Baustein für die Auswertung der Taster gebaut. Hintergrund ist die Ansteuerung von Squeezeboxen mittels Wago.
Meinen Funktionsblock in ST hänge ich hier einmal ran. Achtung: Einige Sachen gehen noch nicht (aus 3 Playlisten auswählen z.B.), aus dem bisher vorhandenen kann man sich aber den Rest einfach zusammenbauen. Play, Stop, Lauter, Leiser oder Mute klappen jedenfalls.
Die Telnet-Funktion ist nicht von mir, weshalb ich nicht weiß, ob ich sie hier öffentlich stellen darf. Eventuell finde ich es auch noch - dann ergänze ich hier den Link. [EDIT] Hier ist der Link zum Telnet-Baustein. http://www.oscat.de/community/index.php/topic,1071.0.html[/EDIT]
Bitte nicht über die Syntax lästern - bin SPS-Anfänger. Bei Fragen - einfach fragen.
Zunächst die Deklaration der Variablen:
Code Auswählen
FUNCTION_BLOCK FB_Squeezebox
VAR_INPUT
mac: STRING(STRING_LENGTH);
list1: STRING(STRING_LENGTH);
list2: STRING(STRING_LENGTH);
list3: STRING(STRING_LENGTH);
xPlay: BOOL;
xStop: BOOL;
xNextPlayList: BOOL;
xLeiser: BOOL;
xLauter: BOOL;
xSetLeise: BOOL;
xSetLaut: BOOL;
xMute: BOOL;
bPlayStatus: BOOL;
sLeise: STRING;
sLaut: STRING;
sLoudnessStep: STRING;
END_VAR
VAR_OUTPUT
sToTelnet:STRING;
END_VAR
VAR
TP_Out: TP;
fbTelnet: FB_TelnetSend;
Merker_Play: BOOL;
sMessage: STRING;
sendMessage: BOOL;
Merker_List: BYTE;
END_VAR
Nun der eigentliche Code:
Code Auswählen
sendMessage := FALSE;
IF xPlay AND NOT Merker_Play THEN
sMessage := CONCAT (mac,' play');
sendMessage := TRUE;
ELSIF xPlay AND Merker_Play AND Merker_List = 1 THEN
sMessage := CONCAT (mac, ' playlist play ');
sMessage := CONCAT (sMessage, ' list1');
Merker_List := 2;
sendMessage := TRUE;
ELSIF xPlay AND Merker_Play AND Merker_List = 2 THEN
sMessage := CONCAT (mac, ' playlist play ');
sMessage := CONCAT (sMessage, ' list2');
Merker_List := 3;
sendMessage := TRUE;
ELSIF xPlay AND Merker_Play AND Merker_List = 3 THEN
sMessage := CONCAT (mac, ' playlist play ');
sMessage := CONCAT (sMessage, ' list3');
Merker_List := 1;
sendMessage := TRUE;
END_IF;
IF xStop THEN
sMessage := CONCAT (mac, ' stop');
sendMessage := TRUE;
Merker_Play := FALSE;
END_IF;
IF xLeiser THEN
sMessage := CONCAT (mac, ' mixer volume -');
sMessage := CONCAT (sMessage, sLoudnessStep);
sendMessage := TRUE;
END_IF;
IF xLauter THEN
sMessage := CONCAT (mac, ' mixer volume +');
sMessage := CONCAT (sMessage, sLoudnessStep);
sendMessage := TRUE;
END_IF;
IF xSetLeise THEN
sMessage := CONCAT (mac, ' mixer volume ');
sMessage := CONCAT (sMessage, sLeise);
sendMessage := TRUE;
END_IF;
IF xSetLaut THEN
sMessage := CONCAT (mac, ' mixer volume ');
sMessage := CONCAT (sMessage, sLaut);
sendMessage := TRUE;
END_IF;
IF xMute THEN
sMessage := CONCAT (mac, ' mixer volume 0');
sendMessage := TRUE;
END_IF;
TP_Out(IN := sendMessage, PT := T#20ms);
IF sendMessage THEN
fbTelnet(SendText:=sMessage, SendSend:=TP_Out.Q);
sToTelnet := sMessage;
END_IF;
Viele Grüße,
Anhalter