Author Topic: Помогите с упрощением вычисления временной задержки  (Read 2781 times)

0 Members and 3 Guests are viewing this topic.

Atom

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Здравствуйте, задача состоит в том, чтобы описать математический расчет с определенным шагом, который можно задавать перед вычислением. А то я это делал сначала в экселе, а потом уже переносил в скринт. Получается затяжной процесс и очень много строк. Помогите с упрощением

Code: (clickermann) [Select]
getscreen
COLORMODE(3)
SCANPICTURE ($var, 240,535, 1070,620, "2-3.bmp", -1, 30) // поиск изображения pict.bmp в заданной области
IF (($var) > 0) // вывод массива, содержащего результаты поиска
   
   IF (($var) > 0)
      WAIT(0.2)
     
      //$y = ($var)
      $x = ($var)
      print($x, " - х2") //,":", $y)
     
// идут вычисления с шагом $x = 10 от 250 до 1070 и задержкой нажатия 0.017сек.
// надо задать шаг $x = 10 от 250 до 1070 и задержкой нажатия 0.017сек.
     
      IF (( 250  < $X) & ($X < 260 ))
         LDOWN (1060, 325) // зажимает левую клавишу мышки
         WAIT( 0.080 )
         LUP (1060, 325) // отпускает левую клавишу мышки
         
      END_IF
     
      IF (( 259  < $X) & ($X < 270 ))
         LDOWN (1060, 325) // зажимает левую клавишу мышки
         WAIT( 0.097 )
         LUP (1060, 325) // отпускает левую клавишу мышки
         
      END_IF
     
      IF (( 269  < $X) & ($X < 280 ))
         LDOWN (1060, 325) // зажимает левую клавишу мышки
         WAIT( 0.114 )
         LUP (1060, 325) // отпускает левую клавишу мышки
         
     
// тут надо упростить математический расчет

else  // ЕСЛИ НЕ НАШОЛ
           print(00000, " - не нашел")
           LCLICK(640, 520) // вносим координаты центра кнопки "УТВЕРДИТЬ"
           END_IF

Кликермен

  • Активный участник
  • ***
  • Posts: 112
    • View Profile
опиши текстом, что ты хочешь реализовать в виде кода) насчет скринта не совсем понятно, - что это?

Atom

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
опиши текстом, что ты хочешь реализовать в виде кода) насчет скринта не совсем понятно, - что это?

для координаты $x задать шаг с увеличением на 10 пикселей (насиная с 250 и заканчивая 1060)
для временной задержки так же задать значение WAIT($t) с шагом увеличения на 0,017сек.

чтобы каждому значению $x соответствовала определенная задержка

Atom

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
опиши текстом, что ты хочешь реализовать в виде кода) насчет скринта не совсем понятно, - что это?

по скриншоту скрипт определяет в каких координатах по $x найдена картинка. чем больше значение $x тем дольше надо удерживать левую кнопку мыши

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Ничего не понял про X но хотя бы скрипт исправил

Code: (clickermann) [Select]
getscreen
COLORMODE(3)
GETSCREEN
IF_PICTURE_IN (240,535, 1070,620, "2-3.bmp", -1, 30)
   WAIT(0.2)
   $x = $_return1
   print($x, " - х2")
   
   // идут вычисления с шагом $x = 10 от 250 до 1070 и задержкой нажатия 0.017сек.
   // надо задать шаг $x = 10 от 250 до 1070 и задержкой нажатия 0.017сек.
   
   IF (( 250  < $X) & ($X < 260 ))
      LDOWN (1060, 325) // зажимает левую клавишу мышки
      WAIT( 0.080 )
      LUP (1060, 325) // отпускает левую клавишу мышки
     
   END_IF
   
   IF (( 259  < $X) & ($X < 270 ))
      LDOWN (1060, 325) // зажимает левую клавишу мышки
      WAIT( 0.097 )
      LUP (1060, 325) // отпускает левую клавишу мышки
     
   END_IF
   
   IF (( 269  < $X) & ($X < 280 ))
      LDOWN (1060, 325) // зажимает левую клавишу мышки
      WAIT( 0.114 )
      LUP (1060, 325) // отпускает левую клавишу мышки
     
     
      // тут надо упростить математический расчет
     
   else  // ЕСЛИ НЕ НАШОЛ
      print(00000, " - не нашел")
      LCLICK(640, 520) // вносим координаты центра кнопки "УТВЕРДИТЬ"
   END_IF
END_IF

WAITMS(50)

Atom

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Ничего не понял про X но хотя бы скрипт исправил

Code: (clickermann) [Select]
getscreen
COLORMODE(3)
GETSCREEN
IF_PICTURE_IN (240,535, 1070,620, "2-3.bmp", -1, 30)
   WAIT(0.2)
   $x = $_return1
   print($x, " - х2")
   
   // идут вычисления с шагом $x = 10 от 250 до 1070 и задержкой нажатия 0.017сек.
   // надо задать шаг $x = 10 от 250 до 1070 и задержкой нажатия 0.017сек.
   
   IF (( 250  < $X) & ($X < 260 ))
      LDOWN (1060, 325) // зажимает левую клавишу мышки
      WAIT( 0.080 )
      LUP (1060, 325) // отпускает левую клавишу мышки
     
   END_IF
   
   IF (( 259  < $X) & ($X < 270 ))
      LDOWN (1060, 325) // зажимает левую клавишу мышки
      WAIT( 0.097 )
      LUP (1060, 325) // отпускает левую клавишу мышки
     
   END_IF
   
   IF (( 269  < $X) & ($X < 280 ))
      LDOWN (1060, 325) // зажимает левую клавишу мышки
      WAIT( 0.114 )
      LUP (1060, 325) // отпускает левую клавишу мышки
     
     
      // тут надо упростить математический расчет
     
   else  // ЕСЛИ НЕ НАШОЛ
      print(00000, " - не нашел")
      LCLICK(640, 520) // вносим координаты центра кнопки "УТВЕРДИТЬ"
   END_IF
END_IF

WAITMS(50)
смысл в том, что есть горизонтальная шкала в которой в разных местах появляется изображение и есть кнопка на которую надо нажать и держать. Так вот чем больше значение по координате Х, тем дольше надо удерживать кнопку, чтобы попасть в это изображение.
IF (( 250  < $X) & ($X < 260 )) - это зона ко координате Х если картинка оказалась в пределах 250-260 пикселей, то зажим левой кнопки мыши составляет 0,080 сек, а дальше ума не прилажу как описать, что бы скрипт сам высчитывал последовательность увеличения (IF (( 259  < $X) & ($X < 270 ))) и т.д. с шагом 10 пикселей и одновременным увеличением удерживания кнопки
      LDOWN (1060, 325) // зажимает левую клавишу мышки
      WAIT( 0.080 ) // следующее значение +0.017 для (IF (( 259  < $X) & ($X < 270 )))
      LUP (1060, 325) // отпускает левую клавишу мышки

Atom

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
что бы не про писывать энное количество условий с у ручным вводом шага, хочу узнать можно это условие как то описать, что бы скрипт не был длинной в несколько тысяч строк.

Atom

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Сам разобрался, описал это как расчет в экселе
Code: (clickermann) [Select]
getscreen
COLORMODE(6)
IF_PICTURE_IN (240,535, 1070,620, "2-6.bmp", -1, 78)
   
   
   WAIT(0.3)
   
   $x2 = ($_return1)
   
   $mm2 = ((0-252)/(215-1070)*($x2-1070)+252) // расчет расстояния, мм
   
   $t2 = ((1-0.5)/(168-84)*($mm2-84)+0.5) // расчет задержки для х2
   
   print($x2, " - х2") //
   print($mm2, " мм - х2")
   print($t2, " сек. задержка")
   
   WAIT(0.1)
   
   LDOWN (1060, 325) // зажимает левую клавишу мышки
   WAIT($t2)
   LUP (1060, 325) // отпускает левую клавишу мышки
   WAIT(7)
   
   
END_IF