code: def bin_data(self, fmt=None):
          
  
          if self._bin_data_size == None:
              self._bin_data_size = {
                      "u8":     1,
                      "s8":     1,
                      "u16":    2,
                      "s16":    2,
                      "s16_be": 2,
                      "s32":    4,
                      "float":  4
                  }.get(self.bin_data_format, 1) * self.num_values
  
          if None == self._bin_data:
              self._bin_data = self._attribute_file_open( 'bin_data' )
  
          self._bin_data.seek(0)
          raw = bytearray(self._bin_data.read(self._bin_data_size))
  
          if fmt is None: return raw
  
          return unpack(fmt, raw)
docs: Returns the unscaled raw values in the `value<N>` attributes as raw byte
          array. Use `bin_data_format`, `num_values` and the individual sensor
          documentation to determine how to interpret the data.
  
          Use `fmt` to unpack the raw bytes into a struct.
  
          Example::
  
              >>> from ev3dev2.sensor.lego import InfraredSensor
              >>> ir = InfraredSensor()
              >>> ir.value()
              28
              >>> ir.bin_data('<b')
              (28,)