Udp Artnet包结构

Udp Artnet包结构,udp,byte,dmx512,Udp,Byte,Dmx512,尽管我已经找到了这么多允许程序员使用Artnet/ArtnetDMX协议的库,但我还没有找到正确的结构来以代码(到套接字)发送Artnet 结构是给定的,但我就是不知道字节应该以什么顺序发送。 我是一个接一个地向宇宙发送字节,还是需要发送包含所有值的字节数组 有没有人有通过UDP发送Artnet的经验 这是维基百科上给出的结构:我对Art Net v2使用以下结构 typedef struct { char ID[8]; //"Art-Net" UInt16 Op

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

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

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


这是维基百科上给出的结构:

我对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应用程序,你应该认真阅读网站上的文档


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

物理、子宇宙和网络都可以从IP地址推断出来。为此编写一个构造函数非常方便,它将您正在寻址的控制器的IP作为4个字节。@aj.toulan的规范是正确的。您可以使用IP来计算数据包参数,但是,大多数控制器不遵循规范的这一部分。例如,一台DHCP上的共享计算机恰好输出Art Net,即使它的IP不符合规范,我的客户端仍然可以接收到它。
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;