UDP网络通信OSC 协议

使用方法

ofxOscMessage mesg;
mesg.setAddress("m");
mesg.addIntArg(10);
mesg.addIntArg(11);
mesg.addIntArg(12);

g_oscSend.sendMessage(mesg);

 

 

 

先做记录,再做程序

 

整个消息是放在一个数组中

前8个字符做头   为#bundle\0

下面8个字节记录时间  这里都是1, 内存中为 0 0 0 0 0 0 0 1

再下面4个字节 整数  ,这里的数字大小指的是,osc地址的地址距离数据末尾的字节数 ,(也就是接收到数据包的长度减去这个值,就是osc消息的Adrrs的位置)

再下面就是地址字符串   大小根据字符串大小 ,然后4个字节对齐,不足补到4的倍数

再下面是所有参数的类型   第一个是 逗号,不知为何这样,  下面才是类型, 这里如果数量不是4的倍数也要补

接下来是每个参数的内存

 

 

类型

enum TypeTagValues {
    TRUE_TYPE_TAG = 'T',
    FALSE_TYPE_TAG = 'F',
    NIL_TYPE_TAG = 'N',
    INFINITUM_TYPE_TAG = 'I',
    INT32_TYPE_TAG = 'i',
    FLOAT_TYPE_TAG = 'f',
    CHAR_TYPE_TAG = 'c',
    RGBA_COLOR_TYPE_TAG = 'r',
    MIDI_MESSAGE_TYPE_TAG = 'm',
    INT64_TYPE_TAG = 'h',
    TIME_TAG_TYPE_TAG = 't',
    DOUBLE_TYPE_TAG = 'd',
    STRING_TYPE_TAG = 's',
    SYMBOL_TYPE_TAG = 'S',
    BLOB_TYPE_TAG = 'b',
    ARRAY_BEGIN_TYPE_TAG = '[',
    ARRAY_END_TYPE_TAG = ']'
};

其中  bool  没有内存,只有一个tag

        int32   4个字节

        float  4个字节

        char   4个字节

         int64  8 个字节

         double  8个字节

       timetag   8个字节

       string     补到4的倍数

 

你可能感兴趣的:(UDP网络通信OSC 协议)