假如要在系统内的交互一个二进制数据,忽略大小端;可以将数据定义如下
sequence<octet, 255> payload
通过from_array赋值,通过get_contiguous_buffer获取buffer。
目前已知存在如果二进制定义中间存在0,会导致后续数据为0.
1 idl 2 struct message_com { 3 ... 4 sequence<octet, 255> payload; 5 }; 6 7 struct com_info { 8 float x; 9 float y; 10 float z; 11 }; 12 /* Send message */ 13 com_info info = {0}; 14 message_com msg = {0}; 15 16 DDS_Long len = sizeof(info); 17 msg.payload.maximum(len); 18 msg.payload.length(len); 19 20 msg.payload.from_array((CDR_Octet *)&info, len); 21 22
23 24 /* Recv message */ 25 com_info info = {0}; 26 memcpy(&info, massage.payload.get_contiguous_buffer(), sizeof(tInfo)); 27