假如要在系统内交互一个二进制数据,忽略大小端;可以将数据定义如下
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