Hallo,
ich habe hier ein funktionierendes Modul zum Senden von DMX-Werten über Art-Net an ein beliebiges Art-Net-Node. Es prüft eine globale Variable mit den DMX-Werten und sendet diese bei Veränderung an eine bestimmte IP-Adresse. Ich habe es hier mal mit 100 Kanälen erstellt - sollte aber mit allen 512 Kanälen genauso laufen. Für Verbesserungsvorschläge bin ich gerne offen:
PROGRAM DMX_SEND
VAR
IP_CONTROL1:oscat_network.IP_CONTROL2;
IP_C1:oscat_network.IP_C;
S_BUF1: oscat_network.NETWORK_BUFFER_SHORT;
R_BUF1: oscat_network.NETWORK_BUFFER_SHORT;
send : BOOL;
i: INT;
END_VAR
FOR i := 18 TO 118 DO (*prüfen ob sich die DMX-Werte in der globalen Variable geändert haben*)
IF GVL.DMX[i-17]<>S_BUF1.BUFFER THEN
S_BUF1.BUFFER := GVL.DMX[i-17]; (*wenn sich etwas geändert hat, dann in den Puffer kopieren und senden*)
send := TRUE;
END_IF
END_FOR
IF send THEN
IP_C1.C_MODE := 3;
IP_C1.C_ENABLE := TRUE; (* Verbindungsaufbau freigeben *)
IP_C1.TIME_RESET := TRUE;
IP_C1.R_OBSERVE := FALSE; (* Datenempfang überwachen *)
IP_C1.C_IP:=oscat_network.IP4_DECODE('10.0.0.90');
IP_C1.C_PORT := WORD#6454;
S_BUF1.BUFFER[0] := BYTE#16#41; (*DMX-Kopfzeichen in den Puffer schreiben*)
S_BUF1.BUFFER[1] := BYTE#16#72;
S_BUF1.BUFFER[2] := BYTE#16#74;
S_BUF1.BUFFER[3] := BYTE#16#2D;
S_BUF1.BUFFER[4] := BYTE#16#4E;
S_BUF1.BUFFER[5] := BYTE#16#65;
S_BUF1.BUFFER[6] := BYTE#16#74;
S_BUF1.BUFFER[7] := BYTE#16#00;
S_BUF1.BUFFER[8] := BYTE#16#00;
S_BUF1.BUFFER[9] := BYTE#16#50;
S_BUF1.BUFFER[10] := BYTE#16#50;
S_BUF1.BUFFER[11] := BYTE#16#0E;
S_BUF1.BUFFER[12] := BYTE#16#00;
S_BUF1.BUFFER[13] := BYTE#16#00;
S_BUF1.BUFFER[14] := BYTE#16#00;
S_BUF1.BUFFER[15] := BYTE#16#00;
S_BUF1.BUFFER[16] := BYTE#16#02;
S_BUF1.BUFFER[17] := BYTE#16#00; (*die folgenden DMX-Kanäle wurden schon in den Puffer geschrieben*)
S_BUF1.SIZE :=118;
send := FALSE;
END_IF;
IP_CONTROL1(TIME_OUT:=T#1S,IP_C:= IP_C1,S_BUF:=S_BUF1, R_BUF:=R_BUF1);
Gerne würde ich noch die ersten 18 Werte im Sendepuffer fix vorbelegen und nicht bei jedem Senden neu schreiben. Das habe ich aber noch nicht hinbekommen.
Gruß annD
[gelöscht durch Administrator]