Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Ivankak

Страницы: [1] 2 3
1
Спасибо. Будем разбираться

2
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 29, 2021, 02:16:03 pm »
Могу сделать на AutoIt и кидать сообщения кликеру при событиях. Так же, наверно нужно сделать включение/отключение слежения. А может и не надо.
Если можно иметь такую возможность, то лучше ее иметь.
почитал вот эту тему.
http://crapware.aidf.org/forum/index.php?topic=305.msg2580#msg2580
А будет нормально работать, шустро?

3
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 29, 2021, 02:08:32 pm »
Проф пульты взаимодействуют с API программы и посылают в неё команды напрямую.

API у Давинчи есть, но там очень мало команд описано. Самое вкусное они скрывают. Я полазил на форумах. Никто не знает, как получить доступ к этим функциям. Поэтому блекмэджик может продавать свои панели по $30 000.
https://alliedbroadcastgroup.com/product/blackmagic-design-davinci-resolve-advanced-panel/
Есть еще другие производители, например Tangetn и Avid, которые имеют доступ этим функциям. Но их пульты тоже не дешевы.
самая дешевая б\у панель стоит $350 и очень мало, чего может.
https://www.amazon.com/tangent-LYSB01G3UTBHS-CMPTRACCS-Tangent-Ripple-Panel/dp/B01G3UTBHS
Хотя, с другой стороны, она стоит, как три трекбола от kesington :)


Цитировать
В системе курсор всего один, неоткуда взяться второму, это просто не предусмотрено в ОС.
Есть всякие такие http://adminxp.ru/dva-kursora/ методы сделать 2 курсора, но они не стабильны.
В 10й винде есть мультитач, значит есть возможность реагировать на несколько координат касания.
https://youtu.be/NnSJRRn8rQA

4
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 29, 2021, 01:26:46 pm »
Цитировать
Так скажи, нужно ли прокинуть события колеса и/или события перемещения?
это сделало бы работу удобнее.
Сейчас все изменения делаются вращением трекбола, а все указания координат кнопками.  Однако, если удастся получать событие поворота колеса мыши, то переключение по крайней мере между этими двумя органами можно будет делать автоматически.

А, что есть возможность добавить в кликерман функцию?


5
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 28, 2021, 11:59:29 pm »
У профессиональных пультов для цветокора есть возможность крутить сразу 2 колеса, и они одновременно работают.
можно ли как-то кликерману прикрутить возможность управлять с 2-мя мышами с независимыми курсорами?
Хотя, зачем 2 мыши... Надо по очереди скакать туда - сюда. Если это делать достаточно часто, то есть шанс, что будет не заметно.

6
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 28, 2021, 10:53:18 pm »
О! спасибо! А я прозевал.

7
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 28, 2021, 02:54:24 pm »
правильно 1 раз 10мс на 2 цикла сначала4, а потом 6 кнопок.
И если туда добавить еще кнопок, то все равно будет только одна задержка.
что я не верно понимаю?

8
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 28, 2021, 02:30:54 pm »
Да, сдвиг же, 10 кнопок сканирует. Но 10 мс там прописано всегда 6*10 ++но задержка только если кнопка нажата, а иначе на оба цикла только одна задержка 10 мс

9
Цитировать
Хоть я на заре и просил такую функцию, сейчас я считаю это лютой дичью. Всегда можно сделать по другому и в большинстве случаев это будет более правильно.
Знаю, что так можно в PHP может ещё где. Хорошо, конечно, когда функционал шире. Но в том виде какая она сейчас (с ограничениями), эта штука не пригодилась ни разу.
Код: Clickermann
  1. print(GETVAR(STRCONCAT("$",$str,$arr[0], [2])))
это прекрасно, что есть! Мне поможет.
Возможно, мало кто  будет использовать такую фишку, но если будут n-мерные массивы, то можно и без этого. Это же костыль для перебора имен массивов.

10
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 28, 2021, 01:27:41 pm »
Почему перешёл на ISKEYDOWN?
ISKEYDOWN хорошо, когда клавиш мало. Их уже 24 шт. Сейчас цикл сканирования 24 * 10 + ещё чуть ≈ 250 ms
цикл сканирования 6 позиций. там есть сдвиг.
Но задержка возникает только если кнопка зажата. Если не зажата, то даже на 24 кнопки будет один раз 10мс.

У меня не получилось сделать на GetskeyDown стабильное переключение. я экспериментировал с задержками, но четкого переключения не получилось.

Цитировать
Работает ли мой код у вас?
Без понятия. У меня же нет Давинчи. Если только по скрину поелозить, так нужно координаты переделывать, там же всё захордкоржено.
Блекмэджик не Адоб. В Давинчи всё всегда на местах. Очень мало какие окна можно отцепить. Это окно с колесам всегда на месте. Именно по этой причине вся эта возня с программированием имеет смысл.
Если экран 1920х1080 то всё совпадёт.
Вопрос не в том, попадет или нет на координаты, тут сомнений нет, а стабильно ли переключается по кнопкам?

по поводу "захордкоржено" - планирую добавить распознавание имени страницы, чтоб скрипт не путался в них. А то дофига кнопок жать - не удобно получается.

я написал отдельный скрипт для задания координат. Задать возможно надо один раз, но таких страниц по 24 координаты у Двинчи как минимум 5 штук, а может еще чего захочется добавить потом. И такое количество пар 2х и 3х значных чисел записывать вручную тяжелее, чем написать скрипт.

Пользоваться скриптом так:
в логе пишется название элемента например "Lift Whill"
подводишь мышь к нему
нажимаешь Q
координаты записываются в массив
по окончании прохода по всем элементам координаты собираются в массивах X и Y
массивы записываются в строчные переменные через запятую (тут мне не хватило оператора, пришлось склеивать строку)
Строчные переменные  записываются в строки файла.

Код: Clickermann
  1. LOGCLEAR
  2.  
  3. $csv = "koorda.csv"
  4.  
  5. strseparate(TFREAD($csv, 2), ",", $Names)
  6. strseparate(TFREAD($csv, 3), ",", $X)
  7. strseparate(TFREAD($csv, 4), ",", $y)
  8.  
  9.  
  10. for ($n=7, $n<ARRSIZE($names))
  11.   print ($names[$n])
  12.   WHILE(iskeydown(#q) = 0)
  13.      waitms(20)
  14.   END_CYC
  15.   WHILE(iskeydown(#q)=1)
  16.      print ("нажата"," ",$n)
  17.      waitms(20)
  18.      WHILE(iskeydown(#q) = 1)  //тут пока не отпустит
  19.         waitms(50)
  20.      END_CYC
  21.  
  22.      $x[$n]= $_xmouse
  23.      $y[$n]= $_ymouse
  24.      print("x=",$x[$n],"y=",$y[$n],"$n=",$n)
  25.  
  26.  
  27.   END_CYC
  28. END_CYC
  29.  
  30. for ($n=0, $n<ARRSIZE($names))
  31.   print($x[$n],", ")
  32.   print($y[$n],", ")
  33. END_CYC
  34. $Xstr=$x[0]
  35. $ystr=$y[0]
  36. for ($n=1, $n<ARRSIZE($names))
  37.  
  38.   $Xstr= STRCONCAT($Xstr,",", $x[$n])
  39.   $Ystr= STRCONCAT($Ystr,",", $Y[$n])
  40.  
  41. END_CYC
  42. print($Xstr)
  43. print($Ystr)
  44.  
  45. $scva= "ko.csv"
  46.  
  47. TFDELETE($scva, 3 )
  48. TFWRITE ($scva, $xstr, 3 )
  49. TFDELETE($scva, 4 )
  50. TFWRITE ($scva, $ystr, 4 )
  51.  
  52. halt
  53.  

Цитировать
В справке есть все эти коды
Язык сценариев -- >> Приложение 1. Коды клавиш
я дал ссылку на пост паре человек, которые далеки от программирования и они не будут открывать хэлп :)

Цитировать
Лучше самому преобразовать для нужного диапазона символов. Вот цифры и буквы:

Код: Clickermann
  1. $liters = "0123456789:::::::ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2. $code = STRPOS($liters, "Z") + 47
  3. print($code)
  4.  
Да, стоит сделать такую подпрограмму. Она отработает 1 раз при загрузке и  не будет тормозить работу, а удобства добавит сильно.
блин, я не знал про оператор STRPOS. И мне не пришло бы в голову забить промежуток двоеточиями. Я бы сделал через условия :)
Так, конечно, изящно выглядит.

Про массивы. Для этой задачи вероятно я перепишу циклы еще раз. По идее надо эмулировать 4х мерный массив. 3х6х4х5.
размер 3 это кнопка клавиатуры +2 координаты
размер 6 элементов для одного колеса
размер 4 колеса
размер 5 экранов.

Если б можно было имя массива задавать, переменной, то было бы удобно организовывать цикл по одномерным массивам, чтобы собрать из них 3х или 4х мерный.
Но и так придумаю что-нибудь. Наверное сделаю больше строк в csv.

Цитировать
С именами я не понял. В чём проблема задать нужные имена. Хранил бы в ini и проблем бы не было ни с секциями ни с именами. В csv тоже не проблема вроде.
В ini файле не наглядно хранить координаты, они же парами, и к ним еще клавиша, которая их вызывает. И создавать этот ini хлопотно в моем случае. Сложно проконтролировать правильность.
В CSV , когда открываешь  в табличном редакторе - все видно наглядно- строки, столбцы.

11
Хотелось бы получать события мыши, когда пользователь что-то делает.
Сейчас есть только текущие координаты, но есть же еще нажатия на кнопки и кручение колеса.
Можно ли сделать трансляцию этих событий в кликерман?

Можно ли сделать, чтобы имя переменной само могло бы быть строковой переменной?
Чтоб код в строке 20 делал то же, что в строке 21.
Код: Clickermann
  1. $arr[0]= "Маши"
  2. $arr[2]= "Пети"
  3. $arr[2]= "Васи"
  4.  
  5. $str= "Сумка"
  6.  
  7. //Массивы, что в сумке?
  8. $СумкаМаши[0]= "печенье"
  9. $СумкаМаши[1]= "помада
  10. $СумкаМаши[2]= "расчёска"
  11.  
  12. $СумкаПети[0]= "машинка"
  13. $СумкаПети[1]= "гайка"
  14. $СумкаПети[2]= "петарда"
  15.  
  16. $СумкаВаси[0]= "расческа"
  17. $СумкаВаси[1]= "шарик"
  18. $СумкаВаси[2]= "ручка"
  19.  
  20. print(STRCONCAT("$",$str,$arr[0],[2]))
  21. print($СумкаМаши[2])
  22. waitms(50)
  23.  
  24. halt

Не хватает n-мерных массивов. Костыль со сдвигом для создания псевдо двухмерности не очень удобный, потому, что размер массива вычислять сразу становится не удобно.

Не удобно задавать массивы.
Запись
Код: Clickermann
  1. $arr[0]=
  2. $arr[1]=
  3. $arr[2]=
  4. $arr[3]=
  5. $arr[4]=
не очень компактная
запись через строковую переменную, конечно, компактнее.
Код: Clickermann
  1. $Str="11,22,33,44,55,66"
  2. strseparate($str, ",", $Arr)
  3.  
а можно сделать в одну строку задание массива?

Есть оператор strseparate для создания массива из строки.
Обратного действия нету, чтобы массив записать в строку файла. (или я не нашел?)



12
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 28, 2021, 05:02:29 am »
Сделал тестовую версию. Если кто-то попробует - пожалуйста, отпишитесь.
Работает пока 4-мя колесами во вкладке Primaries. Это просто тест. Потом будет остальное.
1-4 выбор колеса
помещает курсор на элемент управления и зажимает лкм. Чтобы использовать мышь свободно надо кликнуть.
пока программа работает она будет захватывать при нажатии кнопок курсор. остановить программу можно кнопкой стоп в Кликермане.
Alt+s не сработает, потому, что Давинчи перехватывает свой шоткат "добавить ноду после"

w - Y
e - R
r - G
t - B
y - крутилка под колесом


Код: Clickermann
  1. SUB(Will)
  2.   //подпрограмма установки мыши с зажатой лкм на нужную координату
  3.   LOGCLEAR
  4.   LUP($_xmouse, $_ymouse)
  5.   WAITMS(10)
  6.   LDOWN($X[$N], $Y[$N])
  7.   print("$Names=", $Names[$n])
  8.   print("координаты ", $X[$N],",", $Y[$N])
  9.  
  10. END_SUB
  11.  
  12. LOGCLEAR
  13.  
  14. $csv = "koorda.csv"          //задаем имя файла с координатиами
  15. //читаем строки  файла в массивы
  16. strseparate(TFREAD($csv, 2), ",", $Names)
  17. strseparate(TFREAD($csv, 3), ",", $X)
  18. strseparate(TFREAD($csv, 4), ",", $y)
  19. strseparate(TFREAD($csv, 5), ",", $Keya)
  20. //strseparate(TFREAD($csv, 6), ",", $Keyb)
  21. //trseparate(TFREAD($csv, 7), ",", $Keyc)
  22. print("массив создан")
  23. print("$keya[18]=",$keya[18])
  24.  
  25.  
  26. $SHIFT=1
  27. WHILE(1)                                   // начало бесконечного цикла
  28.   FOR($S=49,$s<53) //значения кнопок 1-4
  29.      IF(ISKEYDOWN($s)=1)
  30.         WHILE(iskeydown($s)=1)  //если клавиша все еще нажата, то подвисам тут пока не отпустит
  31.            waitms(10)
  32.         END_CYC
  33.  
  34.         $n=($s-49)*6+1
  35.        Will()
  36.        $SHIFT=$n
  37.  
  38.      end_if
  39.   END_CYC
  40.  
  41.  
  42.  
  43.   FOR ($n=$SHIFT, $n<$SHIFT+6)
  44. //  PRINT($SHIFT, " " ,$N)
  45.      if(ISKEYDOWN($keya[$n])=1)//если нажата одна из кнопок массива Keya то
  46.         Will()                //исполнить подпрограмму
  47.         WHILE(iskeydown($keya[$n]) = 1)  //если клавиша все еще нажата, то подвисам тут пока не отпустит
  48.            waitms(10)
  49.         END_CYC
  50.      end_if
  51.      WAITMS(10)
  52.   END_CYC
  53. END_CYC
  54.  


содержимое файла koorda.csv
файл можно редактировать в табличном редакторе. Например Apache OpenOffice Calc https://www.openoffice.org/
кнопки можно переназначать в 5-й строке, которая начинается с "Keya" в соответствии с этой таблицей
https://github.com/sepehrsohrabi/Decimal-Virtual-Key-Codes

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
0,Lift Whill,Lift Y,Lift R,Lift G,Lift B,Shad Roll,Gamma Whill,Gamma Y,Gamma R,Gamma G,Gamma B,Gamma Roll,Gain Whill,Gain Y,Gain Y,Gain G,Gain B,Gain Roll,Offset Whill,Offset Y,Offset R,Offset G,Offset B,Offset Roll
x1,90,34,75,109,146,85,268,210,252,288,325,271,447,389,431,467,504,442,624,573,573,627,676,624
y1,854,944,944,944,944,960,856,944,944,944,944,960,855,944,944,944,944,960,854,944,944,944,944,961
Keya,81,87,69,82,84,89,81,87,69,82,84,89,81,87,69,82,84,89,81,87,69,82,84,89
Keyb,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Keyc,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,Q или 1,w,e,r,t,y,Q или 2,w,e,r,t,y,Q или 3,w,e,r,t,y,Q или 4,w,e,r,t,y

13
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 28, 2021, 12:02:04 am »
Как сделать чтоб имя переменой само было бы переменной?
как исправить строку 20, чтоб она печатала то же, что и 21?

Код: Clickermann
  1. $arr[0]= "Маши"
  2. $arr[2]= "Пети"
  3. $arr[2]= "Васи"
  4.  
  5. $str= "Сумка"
  6.  
  7. //Массивы, что в сумке?
  8. $СумкаМаши[0]= "печенье"
  9. $СумкаМаши[1]= "помада
  10. $СумкаМаши[2]= "расчёска"
  11.  
  12. $СумкаПети[0]= "машинка"
  13. $СумкаПети[1]= "гайка"
  14. $СумкаПети[2]= "петарда"
  15.  
  16. $СумкаВаси[0]= "расческа"
  17. $СумкаВаси[1]= "шарик"
  18. $СумкаВаси[2]= "ручка"
  19.  
  20. print(STRCONCAT("$",$str,$arr[0],[2]))
  21. print($СумкаМаши[2])
  22. waitms(50)
  23.  
  24. halt

14
Если jpg не подходит по качеству, то можно попробовать tiff с компрессией. У него встроенная zip и lzw без потерь.  можешь получить уменьшение до 2 раз.
Размер компрессии без потерь всегда сильно зависит от содержимого картинки. Судя по тому, что у тебя такая мелкая картинка имеет размер 3 мега, у тебя либо много мелких деталей (очень мелкий шрифт) либо шумы.
Попробуй ffmpeg для конвертации, можно прямо из кликермана запускать его и в командной строке ему все параметры передать.
 логика такая:
сохраняешь png
вызываешь внешнюю программу ffmpeg и конвертируешь ей файл в tiff
удаляешь png

тут про конвертацию
https://superuser.com/questions/827606/use-ffmpeg-for-jpeg-to-tiff-conversion

Если у тебя чб текст, что можно палитру в grayscale конвертировать и\или сохранять в png-8 (оптимизированная палитра 256 (или 128 или 64 цветов), это может дать уменьшение в 2 раза, а распознавание не ухудшиться.

Если из кликермана запускать ffmpeg не удобно, то сначала сохраняешь свои скриншоты, а потом все групповым образом конвертируешь.
можно фотошопом в пакетном режиме, можно Faststoun или ffmpeg испоьзовать, что сподручнее.


15
Общие вопросы / Re: автоматизация в Давинчи
« : Сентябрь 24, 2021, 11:58:15 pm »
Цитировать
А разве у ардуино есть столько входов? Или там есть приблуды для расширения?
вот она приблуда для расширения. Их можно несколько подключить.
https://www.aliexpress.com/item/32957655097.html


Страницы: [1] 2 3