Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
8 février 2012 3 08 /02 /février /2012 13:39

Pour effectuer l'analyse suivante, nous avons utilisé un PC équipé de QLC reliéà l'Ethergate par un switch.

Dessinsanstitre-copie-1.png

QLC étant configuré pour envoyer le signal DMX par la carte réseau au format ArtNet, nous avons pu commencer les mesures.

Les valeurs envoyées par QLC sont les suivantes

Canal 1 : 255 (0xff), Canal 2 : 127 (0x7f), Canal 3: 63 (0x3f), etc... tout le reste de la trame est à 0.

 

qlc

 

A partir de là, voici ce que nous avons récupéré :

1DébutTrame

Notons tout de suite que contrairement au signal DMX qui envoie continuellement la trame même s'il n'y a pas de changement de valeur, la trame ArtNet n'est envoyée que lorsqu'il y a un changement. C'est au récepteur de mémoriser les valeurs.

 

Merci à Wireshark qui nous aide beaucoup dans l'analyse :

frameG

Dans la partie analyse de la trame de Wireshark, on voit que la trame complète fait 572 octets (bytes) (512 de DATA DMX  + 60 de "préparation".)

Les protocoles, imbriqués, sont eth, IP, UDP et Artnet.

 

eth

Dans la partie eth (ethernet), on envoie d'abord l'adresse MAC de la destination (ici de l'Ethergate)

Six octets : 00:50:c2:07:64:ed ou 000:080:194:007:100:237

 

2dest

 

On envoie ensuite l'adresse MAC de la machine source (émettrice de la trame)

Ici aa:00:04:00:0a:04 ou 170:000:004:000:010:004

3source

 

 

IP

Dans la partie IP on envoie les adresses IP en commencant par la source

 

4sourceIP

L'adresse de l'ordinateur est 0a.07.64.0a ou 10.7.100.10

5destIP

Puis l'adresse de l'Ethergate : 0a.07.64.ed ou 10.7.100.237

Notez que les trois derniers octets de l'adresse IP de l'ethergate sont ceux de la fin de son adresse MAC.

UDP

La partie UDP fournie les ports.

Le protocole ArtNet travaille sur le port 0x1936, soit 6454 en décimal.

Le même port est utilisé pour la machine source et la machine destination.

La Valeur 538 (0x021a) correspond au nombre d'octets qui vont suivre (encore 538-512= 26 octets avant les DATA DMX)

La valeur 0xdf30 est la somme de contrôle qui permet au récepteur (destinataire) de vérifier s'il n'y a pas d'erreur dans la trame (due à des parasites, etc...)

6portsdES

ArtNet

On arrive enfin au protocole ArtNet proprement dit.

7enteteArtnet

Il arrive et il se nomme !

les valeurs 41 72 74 2d 4e 65 74 décodées en ASCII donnent Art-Net.

L'Opcode (valeur 0x5000) signifie que les DATA qui vont suivre seront des données DMX.

La version du protocole est la version 14 (0x0e)

 

Je n'ajoute pas d'autres photos, mais la suite

0x3d correspond à la séquence : 61

Le sous réseau Artnet choisi est le sous réseau 00.

L'univers de travail est l'univers 00 00.

On finit par la taille des DATA : 512 octets = 0x0200.

 

DMX Data

12donnees

Les données DMX arrivent maintenant, comme prévu : 0xff (255), 0x7f (127), 0x3f (63), ..... toute la fin étant à 00.

 

L'Ethergate est équipée d'une interface Web ou l'on peut lire les valeurs qu'elle envoie sur ses ports de sortie (du vrai DMX avec des prises XLR 5 broches).

 

13resEnttec

On y voit là encore les valeurs prévues, notées cette fois en décimal.

Partager cet article
Repost0

commentaires

G
merci pour ce blog qui est formidable, mais je suis entrain de coder en dur pour le moment en c# mais l’analyseur de trame me dit malformed packet je met mon code :<br /> using System;<br /> using System.Collections.Generic;<br /> using System.Net.Sockets;<br /> using System.Text;<br /> using System.Net;<br /> using System.Threading;<br /> <br /> namespace test1<br /> {<br /> public class Program<br /> {<br /> <br /> static void Main(string[] args)<br /> {<br /> UdpClient client;<br /> byte[] artNet = new System.Text.ASCIIEncoding().GetBytes(&quot;Art-Net&quot;);<br /> int Port = 3128;<br /> IPAddress Address = new IPAddress(0xDB8C14Ac);<br /> IPEndPoint BroadcastEndPoint = new IPEndPoint(Address, Port);<br /> client = new UdpClient(Port);<br /> client.EnableBroadcast = true;<br /> <br /> client.Client.SendTimeout = 100;<br /> client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);<br /> <br /> byte[] data = new byte[512]; // 18 + number of channels<br /> <br /> // ID<br /> artNet.CopyTo(data, 0);<br /> data[7] = 0x00;<br /> <br /> // OpCode<br /> data[8] = 0x00;<br /> data[9] = 0x50;<br /> <br /> // ProtVerH<br /> data[10] = 0x00;<br /> //ProtVer<br /> data[11] = 0x0E;<br /> <br /> // Sequence<br /> data[12] = 0x3D;<br /> <br /> // Physical<br /> data[13] = 0x00;<br /> <br /> // Universe<br /> data[14] = 0x00; // &lt;- Universe Setting<br /> data[15] = 0x00;<br /> <br /> // LengthHi<br /> data[16] = 0x02; // Length High Byte<br /> // Length<br /> data[17] = 0x00; // Length Low Byte<br /> <br /> // Data[Length]<br /> data[18] = 0x00; // Sample data<br /> data[19] = 0x00; // Sample data #2<br /> data[20] = 0x00;<br /> data[21] = 0x00;<br /> data[22] = 0x00;<br /> data[23] = 0xFF;<br /> data[24] = 0xFF;<br /> data[25] = 0xFF;<br /> <br /> client.Send(data, data.Length, BroadcastEndPoint);<br /> <br /> }<br /> <br /> }<br /> }<br /> <br /> <br /> voila en espérant que quelqu'un puisse m'aider
Répondre

Présentation

  • : Bac SN ARED RISC AudioVisuel Professionnel, St Gab
  • : Éléments techniques Bac Pro SEN Audiovisuel Professionnel St Gab.
  • Contact

Rechercher