ArtNet programmieren?

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

ArtNet programmieren?

Beitrag von Then »

Hat schon mal jemand versucht ArtNet zu programmieren ? DMX ist ja kein Problem, aber ich habe nun 2 PSU-5A Pixelball Controller, die ich per ArtNet ansteuern muss. Das es über UDP geht ist bekannt , aber wie das Protokoll genau aussieht habe ich noch nicht verstanden. Kann mir jemand helfen ? Hast schonmal jemand versucht ?

1 Ball habe ich irgendwie in grün zum leuchten gebracht. Ich weiß aber nicht mehr wie....
Insgesamt habe ich 2 x 5 x 30 RGB Pixelbälle welche ich ansteuern möchte.
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: ArtNet programmieren?

Beitrag von NicTheQuick »

Reicht dir diese Antwort nicht?
Artnet Packet Structure
Bild
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: ArtNet programmieren?

Beitrag von Then »

Ganz erhlich.... :( Nööö ! Damit kann ich nichts anfangen. Wie drückt man das in PB aus ?

Sorry, das ist scheibar nicht so einfach, oder ich stelle mich zu blöd an.
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: ArtNet programmieren?

Beitrag von DarkDragon »

Then hat geschrieben:Ganz erhlich.... :( Nööö ! Damit kann ich nichts anfangen. Wie drückt man das in PB aus ?
Die Struktur dort sollte das hier in PB sein:

Code: Alles auswählen

Structure Artnet
  id.a[8]
  opCode.w
  protocolHi.b
  protocolLo.b
  sequence.b
  physical.b
  universe.w
  length.w
  data.b[512]
EndStructure
Der id String muss nullterminiert und im Platformnativen Format sein (vermutlich CP1252 unter Windows und iso-8859-1 unter Unix basierten Systemen, k.A. was sonst gemeint sein könnte).

[EDIT]
Da ist noch Artnet v2:

Code: Alles auswählen

Structure ArtnetDmx
  id.a[8]
  opCode.w
  version.w
  seq.b
  physical.b
  subUni.b
  net.b
  length.w
  data.b[512]
EndStructure
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: ArtNet programmieren?

Beitrag von Then »

Ok. Danke. Ich seh schon , ich bringe dir die Teile vorbei....

Ich steh total auf dem Schlauch. :freak:

V2 ist es schonmal. Das habe ich rausbekommen. Ich sende per SendNetworkData() aber wie setze ich nun die Struktur richtig ein ? Port und IP sind vorhanden.

Ich Schlaf ne Nacht drüber... evtl ists auch zu warm ... :o
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: ArtNet programmieren?

Beitrag von NicTheQuick »

Da gibt's wohl auch noch verschiedene Konstanten, die du nutzen kannst:

Code: Alles auswählen

Enumeration ArtNetOpCodes
	#None       = $00
	#Poll       = $20
	#PollReply  = $21
	#Dmx        = $50
	#TodRequest = $80
	#TodData    = $81
	#Rdm        = $83
	#RdmSub     = $84
EndEnumeration

Enumeration ArtNetStyles
	#StNode   = $00
	#StServer = $01
	#StMedia  = $02
	#StRoute  = $03
	#StBackup = $04
	#StConfig = $05
EndEnumeration
Die hab ich mir hier geklaut: https://github.com/MikeCodesDotNet/ArtNet.Net
Bild
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: ArtNet programmieren?

Beitrag von Then »

Hey , danke. Die Seite kannte ich noch nicht. Habe schon seit Sonntag gegoogelt und gelesen. Komme dennoch nicht wirklich weiter. Scheint also dochvsehr kompliziert zu sein, per ArtNet Kommandos zu senden.
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: ArtNet programmieren?

Beitrag von Then »

Habe gerade Jinx! ausprobiert, alles funktioniert einwandfrei damit. Keine zusätzluche dll notwendig. Einfach exe anklicken ohne Installation und es läuft. Mit Windows eigenen Mitteln , laut Author. Also muss es ja auch wirklich auch mit pb möglich sein. Nur wie?
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: ArtNet programmieren?

Beitrag von Then »

Habe mal mit nem Sniffer mitgeschrieben, was da an diese IP Adresse gesendet wird. Kannste damit was anfangen ? Anfangs war ne ganze Zeit lang nix und dann habe ich die Farbe für die ersten 150 Bälle verändert. Kann man damit was anfangen ??

Code: Alles auswählen

0001E050  41 72 74 2D 4E 65 74 00  00 50 00 0E 00 00 11 64   Art-Net. .P.....d 
0001E060  02 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E0A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E0B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E0C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E0D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E0E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E0F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E110  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E1A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E1B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E1C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E1D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E1E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E1F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E230  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E250  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E260  00 00 41 72 74 2D 4E 65  74 00 00 50 00 0E 00 00   ..Art-Ne t..P.... 
0001E270  11 64 02 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .d..÷..÷ ..÷..÷.. 
0001E280  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E290  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E2A0  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E2B0  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E2C0  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E2D0  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E2E0  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E2F0  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E300  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E310  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E320  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E330  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E340  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E350  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E360  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E370  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E380  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E390  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E3A0  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E3B0  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E3C0  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E3D0  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E3E0  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E3F0  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E400  F7 00 00 F7 00 00 F7 00  00 F7 00 00 F7 00 00 F7   ÷..÷..÷. .÷..÷..÷ 
0001E410  00 00 F7 00 00 F7 00 00  F7 00 00 F7 00 00 F7 00   ..÷..÷.. ÷..÷..÷. 
0001E420  00 F7 00 00 F7 00 00 F7  00 00 F7 00 00 F7 00 00   .÷..÷..÷ ..÷..÷.. 
0001E430  F7 00 00 F7 00 00 00 00  00 00 00 00 00 00 00 00   ÷..÷.... ........ 
0001E440  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E450  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E460  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ........ ........ 
0001E470  00 00 00 00 41 72 74 2D  4E 65 74 00 00 50 00 0E   ....Art- Net..P.. 
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: ArtNet programmieren?

Beitrag von NicTheQuick »

Das erste Paket sieht so aus als PB-Code:

Code: Alles auswählen

Structure ArtnetDmx
	ID.a[8]
	opCode.u
	version.u
	seq.a
	physical.a
	subUni.a
	net.a
	length.u
	data_.a[512]
EndStructure

Enumeration ArtNetOpCodes
	#None       = $00
	#Poll       = $20
	#PollReply  = $21
	#Dmx        = $50
	#TodRequest = $80
	#TodData    = $81
	#Rdm        = $83
	#RdmSub     = $84
EndEnumeration

Macro Swap16(a)
	(((a & $ff) << 8) | ((a >> 8) & $ff))
EndMacro

Define packet.ArtnetDmx

With packet
	PokeS(@\ID, "Art-Net", -1, #PB_Ascii)
	\opCode = Swap16(#Dmx)
	\version = Swap16($E)
	\seq = 0
	\physical = 0
	\subUni = $11
	\net = $64
	\length = Swap16($200) ; = 512
	FillMemory(@\data_, 512, 0)
EndWith
Das zweite sieht genau so aus, bloß, dass in data_ eben irgendwelche Werte stehen. Also immer "00 7F 00", was vermutlich bedeutet, dass der Grün-Kanal auf voller Power sein soll und die anderen aus sein sollen. Jetzt musst du das Paket nur noch per UDP rausschicken.
Bild
Antworten