Последние сообщения

Страницы: 1 ... 8 9 [10]
91
Общие вопросы / Re: автоматизация в Давинчи
« Последний ответ от Vint Сентябрь 22, 2021, 09:02:12 am »
Запись в одну строку экономит память за счет того, что не объявляются переменные? Работает ли это быстрее чем длинная запись?
Не имеет значения. На малых данных, как у тебя нет разницы, даже не стоит задумываться об экономии. А вот читаемость снижается. Код пишут 1 раз, а читают много.
Быстрее тоже не будет.

Возможно, стоит попробовать сделать отдельный скрипт для записи координат в файл, чтоб не вручную табличку делать, а потыкать мышью в интерфейс и по клавишам, и клавиши назначались, координаты сами собрались бы,  и записались в файл CSV, а его потом всегда можно открыть в Open office Calc и проверить и отредактировать.
Зачем пробовать, бери и делай, это не такой большой код как кажется, к нему не нужно готовится.
Так готовят данные не редко, глупо иметь инструмент автоматизации и готовить нуЖ/Дные данные вручную.

Мне кажется ты не с того начал. Рано подготавливать координаты для всех элементов. Сначала нужно проверить возможность  и сделать весь основной функционал на одном элементе. Может ты столкнёшся с трудностями которые изменят концепцию.
92
Общие вопросы / Re: автоматизация в Давинчи
« Последний ответ от Ivankak Сентябрь 22, 2021, 04:52:28 am »
Внезапно "нашел" оператор TFREAD. Это позволяет сделать файл с координатами более читаемым и подготавливать его в Экселе или Open office Calc.

тестовый файл с координатами имя файла koorda.csv, такой, как его сохраняет Open office Calc:
x,90,34,75,109,146,85
y,854,925,927,926,927,960
в начале нулевой элемент удобно обозначает координатную ось а первый элемент соответствует первому элементу управления.
Позже я сделаю в таблице строку с названиями элементов и строку с их номерами, но читать в массив их не буду. Использую только для ясности в таблице.

Код: Clickermann
  1. Print("test3----------------")
  2. $filename = "koorda.csv"          //задаем имя файла с координатиами
  3. $string = TFREAD($filename, 1)   //читаем первую строку
  4. Print($string)                    //печатаем прочитаную строку для контроля
  5. strseparate($string, ",", $arr)   //превращаем строку в массив
  6. print ($arr[2]  )                  //печатаем второй элемент
  7.  
  8. Print("test4----------------")
  9. strseparate(TFREAD("koorda.csv", 1), ",", $x)   //то же самое, но в одну строку
  10. print ("X1=",$x[1] )                             //печатаем первый элемент
  11. halt

9:00:06 test3----------------
9:00:06 x,90,34,75,109,146,85
9:00:06 34
9:00:06 test4----------------
9:00:06 X1=90

Запись в одну строку экономит память за счет того, что не объявляются переменные? Работает ли это быстрее чем длинная запись?

Возможно, стоит попробовать сделать отдельный скрипт для записи координат в файл, чтоб не вручную табличку делать, а потыкать мышью в интерфейс и по клавишам, и клавиши назначались, координаты сами собрались бы,  и записались в файл CSV, а его потом всегда можно открыть в Open office Calc и проверить и отредактировать.
93
После действия должна быть пауза и после нужно перезарядить таймер
Код: Clickermann
  1. $time = $_ms + 6000
это я забыл сделать.

Остальное непонятно, описание расходится с первоначальным. Т.е. если цвет есть, то не важно сколько он есть?
94
На основе Вашего скрипта вот что у меня получилось.

DEFINE($color, 1060930)  // нужный цвет
    DEFINE($time, $_ms + 6000)   // время статики взял 6 сек
 
    GETSCREEN(-154,687, -154,687)
    DEFINE($old, PXL(-154,687))
    $current = PXL(-154,687)
    IF(($current != $old) & (($current == $color) | ($old == $color)))
        $time = $_ms + 6000
    ELSE
        IF($time < $_ms)
   KEYPRESS(69) //совершает определённое действие
        END_IF       
    END_IF
    WAITMS(200)

У меня получается следующее: спустя 6 сек скрипт постоянно начинает совершать действие, т.е. KEYPRESS(69).
Если я где-то ошибся, то подскажите.
А так постараюсь максимально упростить, что мне надо на следующим примере.
"На экране мигает (включается и выключается) лампочка с периодичностью 1-5 сек, у лампы только 2 состояния: включена, цвет 1, выключена, цвет 2.
 Если лампа перестаёт мигать, т.е. становится цветом 2, на протяжении, например, 10 сек, нужно чтобы скрипт произвёл действие и запустил мигание лампочки по-новой и так по кругу".
95
Спасибо большое, буду пробовать. На счёт первого скрипта вроде бы всё работает, но я изменю параметры снимка экрана, чтобы они совпадали.
96
Код: Clickermann
  1. THREAD(trap_changes, 1)
  2.    DEFINE($color, 255)  // нужный цвет
  3.    DEFINE($time, $_ms + 60000)   // время статики
  4.  
  5.    GETSCREEN(100,100, 100,100)
  6.    DEFINE($old, PXL(100, 100))
  7.    $current = PXL(100, 100)
  8.    IF(($current != $old) & (($current == $color) | ($old == $color)))
  9.        $time = $_ms + 60000
  10.    ELSE
  11.        IF($time < $_ms)
  12.            //совершает определённое действие
  13.        END_IF        
  14.    END_IF
  15.    WAITMS(20)
  16. END_THREAD
97
А точно работает? Потому как -1545 больше чем -1546. И значит GETSCREEN не работает. Но кнопка жмётся, да, т.к. пиксел всегда чёрный.
И чтоб не путаться, почему не задано так
Код: Clickermann
  1. GETSCREEN(-1545,73, -1545,73)


отображается/отсутствует нужно именно оба состояния ловить? Там два цвета или нужный и все остальные?
98
Здравствуйте, уважаемые формумчане.
Разработал для себя довольно простой скрипт

GETSCREEN(-1545,73, -1546,74)
   IF(PXL(-1545,73) ! 5309) 
      KEYPRESS(69)
      WAIT(5)
   END_IF
   WAITMS(10)

Т.е. когда отсутствует указанный пиксель в отмеченных координатах, то скрипт нажимает соответствующую кнопку и так по кругу. Тут всё работает, проблем нет, но мне нужен ещё второй параллельный скрипт, знаю что запускается командой THREAD.

Скрипт обнаруживает нужный пискель (либо его отсутствие), если данный пискель НЕПРЕРЫВНО отображается (либо непрерывно отсутствует) определённое количество времени, например, 1 минуту, то совершает определённое действие.

Заранее спасибо. 

99
Общие вопросы / Re: автоматизация в Давинчи
« Последний ответ от Ivankak Сентябрь 18, 2021, 12:05:26 am »
Да, вы правы, сегодня как раз думал о назначении клавиш.
У меня была такая же мысль.
Возможно, я назначу их на дополнительную клавиатуру, где кнопки будут расположены соответствующим образом.

Моя картинка про количество элементов в массиве для хранения координат. Чтобы было понятно, о каком количестве проверок на нажатие разных клавиш. Их примерно 35, но скорее всего немного больше.


100
Общие вопросы / Re: автоматизация в Давинчи
« Последний ответ от Vint Сентябрь 17, 2021, 12:29:10 pm »
Спасибо за код.
Массив это координаты органов управления Давинчи, на которые надо позиционировать курсор.
N - это переменная, условный номер органа управления для удобства она номер элемента в массиве, где хранятся координаты.
Вот картинка - номера не обязательно в таком порядке, просто для ясности.

Это удобно столько горячих клавиш?

Я бы всю центральную часть разделил на 4 группы, а в каждой однотипные органы управления.
Выбрал 2 группу. Выбрал зелёный G и меняешь.  2--G
Выбрал 4 группу. Выбрал зелёный G и меняешь.  4--G

Страницы: 1 ... 8 9 [10]