2

尽管我找到了这么多允许程序员使用 Artnet/ArtnetDMX 协议的库,但我还没有找到正确的结构来在代码中发送 Artnet(到套接字)。

给出了结构,但是我只是不知道应该以什么顺序发送字节。我是一个接一个地向宇宙发送一个字节,还是需要发送一个包含所有值的字节数组?

有没有人有通过 UDP 发送 Artnet 的经验?

这是维基百科上给出的结构:http: //i.stack.imgur.com/wUjzd.png

4

2 回答 2

3

我将以下结构用于 Art-Net v2

typedef struct {
    char ID[8];         //"Art-Net"
    UInt16 OpCode;      // See Doc. Table 1 - OpCodes eg. 0x5000 OpOutput / OpDmx
    UInt16 version;     // 0x0e00 (aka 14)
    UInt8  seq;         // monotonic counter
    UInt8  physical;    // 0x00
    UInt8  subUni;      // low universe (0-255)
    UInt8  net;         // high universe (not used)
    UInt16 length;      // data length (2 - 512)
    uint8_t data[512];  // universe data
} ArtnetDmx;

如果你想编写一个 Art-Net 应用程序,你真的应该阅读位于Artistic License上的文档。

我会遵循版本 2 (14)规范,因为版本 3 在野外非常罕见。

于 2015-05-20T16:18:07.257 回答
0
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct Artnet
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
    public string id;
    public short opCode;
    public byte protocolHi;
    public byte protocolLo;
    public byte sequence;
    public byte physical;
    public short universe;
    public short length;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
    public byte[] data;
}
于 2013-12-14T16:54:38.083 回答