def deserialize_numpy(self, str, numpy): """ unpack serialized message in str into this message instance using numpy for array types :param str: byte array of serialized message, ``str`` :param numpy: numpy python module """ try: if self.layout is None: self.layout = std_msgs.MultiArrayLayout() end = 0 start = end end += 4 (length, ) = _struct_I.unpack(str[start:end]) self.layout.dim = [] for i in range(0, length): val1 = std_msgs.MultiArrayDimension() start = end end += 4 (length, ) = _struct_I.unpack(str[start:end]) start = end end += length if python3: val1.label = str[start:end].decode('utf-8') else: val1.label = str[start:end] _x = val1 start = end end += 8 ( _x.size, _x.stride, ) = _get_struct_2I().unpack(str[start:end]) self.layout.dim.append(val1) start = end end += 4 (self.layout.data_offset, ) = _get_struct_I().unpack( str[start:end]) start = end end += 4 (length, ) = _struct_I.unpack(str[start:end]) pattern = '<%si' % length start = end end += struct.calcsize(pattern) self.data = numpy.frombuffer(str[start:end], dtype=numpy.int32, count=length) return self except struct.error as e: raise genpy.DeserializationError(e) #most likely buffer underfill
def __init__(self, *args, **kwds): """ Constructor. Any message fields that are implicitly/explicitly set to None will be assigned a default value. The recommend use is keyword arguments as this is more robust to future message changes. You cannot mix in-order arguments and keyword arguments. The available fields are: layout,data :param args: complete set of field values, in .msg order :param kwds: use keyword arguments corresponding to message field names to set specific fields. """ if args or kwds: super(Int32MultiArray, self).__init__(*args, **kwds) #message fields cannot be None, assign default values for those that are if self.layout is None: self.layout = std_msgs.MultiArrayLayout() if self.data is None: self.data = [] else: self.layout = std_msgs.MultiArrayLayout() self.data = []
def deserialize(self, str): """ unpack serialized message in str into this message instance :param str: byte array of serialized message, ``str`` """ try: if self.layout is None: self.layout = std_msgs.MultiArrayLayout() end = 0 start = end end += 4 (length, ) = _struct_I.unpack(str[start:end]) self.layout.dim = [] for i in range(0, length): val1 = std_msgs.MultiArrayDimension() start = end end += 4 (length, ) = _struct_I.unpack(str[start:end]) start = end end += length if python3: val1.label = str[start:end].decode('utf-8') else: val1.label = str[start:end] _x = val1 start = end end += 8 ( _x.size, _x.stride, ) = _get_struct_2I().unpack(str[start:end]) self.layout.dim.append(val1) start = end end += 4 (self.layout.data_offset, ) = _get_struct_I().unpack( str[start:end]) start = end end += 4 (length, ) = _struct_I.unpack(str[start:end]) start = end end += length self.data = str[start:end] return self except struct.error as e: raise genpy.DeserializationError(e) #most likely buffer underfill