генерировать скорость мыши, когда разрешены только целочисленные шаги

#python

#python

Вопрос:

Я пишу простую программу на python, которая включает в себя перемещение моей мыши (я делаю его с помощью PyUserInput). Однако: разрешено перемещать мышь только целочисленными шагами (скажем, пикселями). Так mouse.move(250.3,300.2) не будет работать.

Я вызываю функцию перемещения примерно 30 раз в секунду и перемещаю мышь на несколько пикселей. Скорость, с которой я перемещаю мышь, варьируется от 0,5 до 2,5 пикселей / вызов. Округление дает мне 1-3 (перемещать нужно только целые числа), что на самом деле не отражает скорость.

Я ищу решение (может быть, генератор?) который принимает мою текущую скорость (например, 0,7 пикселей) и возвращает мне шаблон (например, сигнал PWM) из 0 и 1 (например 1,1,0,1,1,0... ), что дает в среднем 0,7 пикселей. Однако этот генератор должен быть адаптивным, поскольку скорость постоянно меняется.

Я новичок в python и придерживаюсь последнего пункта: изменчивости функции генератора.

Вот что у меня есть до сих пор:

 # for 0.75px/call
def getPWM(n):
    nums = [1,0,1,1]
    yield nums[n%4]
  

Ответ №1:

Что вам нужно сделать, это отслеживать предыдущую позицию и желаемую текущую позицию и выдавать округленные координаты. Вы могли бы отслеживать предыдущую позицию в функции, но это гораздо проще сделать в классе.

 class pwm:
    def __init__(self):
        self.desired_position = 0.0
        self.actual_position = 0

    def nextPWM(self, speed):
        self.desired_position  = speed
        movement = round(self.desired_position - self.actual_position)
        self.actual_position  = movement
        return movement
  

Комментарии:

1. после некоторых настроек он работает как шарм. Спасибо!