即使我找到了很多允许程序员使用Artnet / ArtnetDMX协议的库,但我还没有找到正确的结构来发送代码中的Artnet(到套接字)。
给出了结构但是,我只是无法弄清楚应该以什么顺序发送字节。 我是逐个向Universe发送一个字节,还是需要发送包含所有值的字节数组?
没有人有通过UDP发送Artnet的经验吗?
这是维基百科上给出的结构:http://i.stack.imgur.com/wUjzd.png
答案 0 :(得分:2)
我将以下结构用于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 Licence上的文档。
我会遵循版本2 (14)规范,因为版本3在野外非常罕见。
答案 1 :(得分: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;
}