Art-Netの規格の解説とRaspberryPiで扱った記録です。
執筆中です。
Art-NetはUDP/IPを用いて送受信されますので、EtherNet内ではパケットという単位でデータが扱われます。
パケットの中身を解説します。この記事ではマルチキャストしか扱いませんので、次の「ArtDmx」だけ使います。
パケットプロトコル:ArtDmx | ||||||
フィールド | 名前 | データ種類 | サイズ | ビット | 説明 | |
初代Art-Net Art-Net2 | Art-Net3,4 | |||||
1 | 1 | ID | ASCII テキスト | 8byte | - | 8バイトのASCIIテキストでArt-Netのパケットだと宣言する。 'Art-Net'+0x00 文字コード:0x41 0x72 0x74 0x2d 0x4e 0x65 0x74 0x00 |
2 | 2 | OpCode | Int16 2バイト整数 | 2byte | - | 別表に定義されたOpCodeを用いてパケットの種類を宣言する。 ArtDmxでは 0x5000 を用いる。 エンディアンはLSB-MSBなので、0x00 0x50 の順になる。 |
3 | 3 | ProVerHi | Int8 1バイト整数 | 1byte | - | Art-Netプロトコルリビジョン番号の上位バイト ※ データとしては次のフィールド4と合わせて2バイト整数である。 |
4 | 4 | ProVerLow | Int8 1バイト整数 | 1byte | - | Art-Netプロトコルリビジョン番号の下位バイト ※ ProVerの送信は、フィールド3とフィールド4を合わせ、エンディアンがMSB-LSBの2バイト長のデータだと考えていい。 ※ 現在値は014(0x0E)である。フィールド3は0x00、フィールド4は0x0Eとなる。 |
5 | 5 | Sequence | Int8 1バイト整数 | 1byte | - | パケットの順番を0x00から0xFFの範囲でローテーションで表す。 インクリメント・カウンタで0xFFの次は0x00となる。 用いない場合は固定値(0x00)とする。 |
6 | 6 | Physical | Int8 1バイト整数 | 1byte | - | DMX512のデータが入力された物理入力ポートを表す。 Art-Netのネット/サブネット/ユニバースを表す物ではない。 ※ 個人的には全く意味が無い「蛇足データ」だと考える。 ※ 今後の検証によるが、0x00を用いれば良いと思われる。 |
7 | 7 | SubUni | Int8 1バイト整数 | 1byte | 7-4 | 4bit(0-15の数)でSubNet(サブネット)を表す。 |
3-0 | 4bit(0-15の数)でUniverse(ユニバース)を表す。 | |||||
- | 8 | Net | Int8 1バイト整数 | 1byte | 7 | ※ 使用しない。常に0。 |
6-0 | 7bit(0-127)でNet(ネット)を表す。 ※ 初代Art-NetおよびArt-Net2では用いない。 | |||||
8 | 9 | LengthHi | Int8 1バイト整数 | 1byte | - | フィールド<Data>のデータ長を表す。フィールド10と合わせた2バイト整数の上位バイト。 データ長が512スロットなら0x02となる。0512=0x0200 |
9 | 10 | Length | Int8 1バイト整数 | 1byte | - | フィールド<Data>のデータ長を表す。フィールド9と合わせた2バイト整数の下位バイト。 データ長が512スロットなら0x00となる。エンディアンがMSB-LSBだと考えてもいい。 |
10 | 11 | Data | Int8 1バイト整数 | 1-512 byte | - | DMX512のスロットデータ。可変長。 スタートコードは含まれない(?)。 |