DMX über Ethernet (Art-Net-Node)

Begonnen von McBain2k, 07. März 2010, 17:52:05

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

peewit

ZitatGerne 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.

Die Bytes im Sendebuffer bleiben erhalten  da sie vom ip_control nicht verändert werden

annD

Wenn ich diesen Teil vom Buffer nur einmal beschreiben möchte, wo müsste ich das machen? Derzeit geschieht es bei jedem Senden - wenn ich es außerhalb der IF-Abfrage mache, dann geschieht es bei jedem Zyklus. Muss ich mir dafür eine zusätzliche Abfrage machen, ob die Daten schon im Puffer stehen und nur bei Unterschied beschreiben? Es soll ja nur beim ersten Aufruf geschehen. Am Schönsten wäre, wenn ich es bereits bei der Variablendeklaration befüllen könnte.

peewit

am bausteinanfang das einfügen

IF init = false THEN
   init := TRUE;
   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*)
END_IF;

annD

Super, danke. Ich habe die Änderung erfolgreich übernommen.

Ich hätte noch eine kleine Frage zum IP_CONTROL2: Ich erhalte nach einem neuen Download bzw. nach einem Reset den Error 33554432 (decimal) bzw. 16#02000000 (hexadecimal). In der Doku habe einen systemspezifischen Fehler (Codesys) "SysSockBind nicht erfolgreich ausgeführt" herausgelesen. Lässt sich das irgendwie vermeiden? Nach einem Neustart der Steuerung läuft alles wieder normal.

Gruß annD