def on_position_update(obj=nil, &block)
	
      @on_position_update_obj = obj
      @on_position_update = Proc.new { |device, obj_ptr, encoder, position|
	    yield self, @encoders[encoder], position, object_for(obj_ptr)

	}
      Klass.set_OnEncoderPositionUpdate_Handler(@handle, @on_position_update, pointer_for(obj))
    end
def on_position_update(obj=nil, &block)
	
      @on_position_update_obj = obj
      @on_position_update = Proc.new { |device, obj_ptr, encoder, position|
	    yield self, @encoders[encoder], position, object_for(obj_ptr)

	}
      Klass.set_OnEncoderPositionUpdate_Handler(@handle, @on_position_update, pointer_for(obj))
    end
Sets a position update handler callback function. This event provides data about how many ticks have occured since the last update event. It is called at a steady rate of 8ms.

 @param [String] obj Object to pass to the callback function. This is optional.
 @param [Proc] Block When the callback is executed, the device and object are yielded to this block.
 @example
     mc.on_position_update do |device, encoder, position|
       puts "Encoder #{encoder.index}'s position is #{position}"
     end
 As this runs in it's own thread, be sure that all errors are properly handled or the thread will halt and not fire any more.
 @return [Boolean] returns true or raises an error